Browse Source

update mdc lib

Nikolay Suslov 5 years ago
parent
commit
b86e26dca1

File diff suppressed because it is too large
+ 470 - 464
public/lib/mdc/dist/material-components-web.css


File diff suppressed because it is too large
+ 0 - 0
public/lib/mdc/dist/material-components-web.css.map


+ 89 - 0
public/lib/mdc/dist/material-components-web.d.ts

@@ -0,0 +1,89 @@
+// Generated by dts-bundle v0.7.3
+// Dependencies for this module:
+//   ../../../@material/auto-init/index
+//   ../../../@material/base/index
+//   ../../../@material/checkbox/index
+//   ../../../@material/chips/index
+//   ../../../@material/dialog/index
+//   ../../../@material/dom/index
+//   ../../../@material/drawer/index
+//   ../../../@material/floating-label/index
+//   ../../../@material/form-field/index
+//   ../../../@material/grid-list/index
+//   ../../../@material/icon-button/index
+//   ../../../@material/line-ripple/index
+//   ../../../@material/linear-progress/index
+//   ../../../@material/list/index
+//   ../../../@material/menu-surface/index
+//   ../../../@material/menu/index
+//   ../../../@material/notched-outline/index
+//   ../../../@material/radio/index
+//   ../../../@material/ripple/index
+//   ../../../@material/select/index
+//   ../../../@material/slider/index
+//   ../../../@material/snackbar/index
+//   ../../../@material/switch/index
+//   ../../../@material/tab-bar/index
+//   ../../../@material/tab-indicator/index
+//   ../../../@material/tab-scroller/index
+//   ../../../@material/tab/index
+//   ../../../@material/textfield/index
+//   ../../../@material/toolbar/index
+//   ../../../@material/top-app-bar/index
+
+declare module 'material-components-web' {
+    /**
+      * @license
+      * Copyright 2016 Google Inc.
+      *
+      * Permission is hereby granted, free of charge, to any person obtaining a copy
+      * of this software and associated documentation files (the "Software"), to deal
+      * in the Software without restriction, including without limitation the rights
+      * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+      * copies of the Software, and to permit persons to whom the Software is
+      * furnished to do so, subject to the following conditions:
+      *
+      * The above copyright notice and this permission notice shall be included in
+      * all copies or substantial portions of the Software.
+      *
+      * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+      * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+      * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+      * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+      * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+      * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+      * THE SOFTWARE.
+      */
+    import autoInit from '@material/auto-init/index';
+    import * as base from '@material/base/index';
+    import * as checkbox from '@material/checkbox/index';
+    import * as chips from '@material/chips/index';
+    import * as dialog from '@material/dialog/index';
+    import * as dom from '@material/dom/index';
+    import * as drawer from '@material/drawer/index';
+    import * as floatingLabel from '@material/floating-label/index';
+    import * as formField from '@material/form-field/index';
+    import * as gridList from '@material/grid-list/index';
+    import * as iconButton from '@material/icon-button/index';
+    import * as lineRipple from '@material/line-ripple/index';
+    import * as linearProgress from '@material/linear-progress/index';
+    import * as list from '@material/list/index';
+    import * as menuSurface from '@material/menu-surface/index';
+    import * as menu from '@material/menu/index';
+    import * as notchedOutline from '@material/notched-outline/index';
+    import * as radio from '@material/radio/index';
+    import * as ripple from '@material/ripple/index';
+    import * as select from '@material/select/index';
+    import * as slider from '@material/slider/index';
+    import * as snackbar from '@material/snackbar/index';
+    import * as switchControl from '@material/switch/index';
+    import * as tabBar from '@material/tab-bar/index';
+    import * as tabIndicator from '@material/tab-indicator/index';
+    import * as tabScroller from '@material/tab-scroller/index';
+    import * as tab from '@material/tab/index';
+    import * as textField from '@material/textfield/index';
+    import * as toolbar from '@material/toolbar/index';
+    import * as topAppBar from '@material/top-app-bar/index';
+    export { autoInit, base, checkbox, chips, dialog, dom, drawer, floatingLabel, formField, gridList, iconButton, lineRipple, linearProgress, list, menu, menuSurface, notchedOutline, radio, ripple, select, slider, snackbar, switchControl, tab, tabBar, tabIndicator, tabScroller, textField, toolbar, topAppBar, };
+}
+

+ 15468 - 29362
public/lib/mdc/dist/material-components-web.js

@@ -1,29425 +1,15531 @@
-/*!
- Material Components for the Web
- Copyright (c) 2019 Google Inc.
- License: MIT
-*/
-(function webpackUniversalModuleDefinition(root, factory) {
-	if(typeof exports === 'object' && typeof module === 'object')
-		module.exports = factory();
-	else if(typeof define === 'function' && define.amd)
-		define([], factory);
-	else if(typeof exports === 'object')
-		exports["mdc"] = factory();
-	else
-		root["mdc"] = factory();
-})(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-/******/
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-/******/
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId]) {
-/******/ 			return installedModules[moduleId].exports;
-/******/ 		}
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			i: moduleId,
-/******/ 			l: false,
-/******/ 			exports: {}
-/******/ 		};
-/******/
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ 		// Flag the module as loaded
-/******/ 		module.l = true;
-/******/
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-/******/
-/******/
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-/******/
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-/******/
-/******/ 	// define getter function for harmony exports
-/******/ 	__webpack_require__.d = function(exports, name, getter) {
-/******/ 		if(!__webpack_require__.o(exports, name)) {
-/******/ 			Object.defineProperty(exports, name, {
-/******/ 				configurable: false,
-/******/ 				enumerable: true,
-/******/ 				get: getter
-/******/ 			});
-/******/ 		}
-/******/ 	};
-/******/
-/******/ 	// getDefaultExport function for compatibility with non-harmony modules
-/******/ 	__webpack_require__.n = function(module) {
-/******/ 		var getter = module && module.__esModule ?
-/******/ 			function getDefault() { return module['default']; } :
-/******/ 			function getModuleExports() { return module; };
-/******/ 		__webpack_require__.d(getter, 'a', getter);
-/******/ 		return getter;
-/******/ 	};
-/******/
-/******/ 	// Object.prototype.hasOwnProperty.call
-/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-/******/
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 65);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * @template A
- */
-var MDCFoundation = function () {
-  _createClass(MDCFoundation, null, [{
-    key: "cssClasses",
-
-    /** @return enum{cssClasses} */
-    get: function get() {
-      // Classes extending MDCFoundation should implement this method to return an object which exports every
-      // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}
-      return {};
-    }
-
-    /** @return enum{strings} */
-
-  }, {
-    key: "strings",
-    get: function get() {
-      // Classes extending MDCFoundation should implement this method to return an object which exports all
-      // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}
-      return {};
-    }
-
-    /** @return enum{numbers} */
-
-  }, {
-    key: "numbers",
-    get: function get() {
-      // Classes extending MDCFoundation should implement this method to return an object which exports all
-      // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}
-      return {};
-    }
-
-    /** @return {!Object} */
-
-  }, {
-    key: "defaultAdapter",
-    get: function get() {
-      // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient
-      // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter
-      // validation.
-      return {};
-    }
-
-    /**
-     * @param {A=} adapter
-     */
-
-  }]);
-
-  function MDCFoundation() {
-    var adapter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
-    _classCallCheck(this, MDCFoundation);
-
-    /** @protected {!A} */
-    this.adapter_ = adapter;
-  }
-
-  _createClass(MDCFoundation, [{
-    key: "init",
-    value: function init() {
-      // Subclasses should override this method to perform initialization routines (registering events, etc.)
-    }
-  }, {
-    key: "destroy",
-    value: function destroy() {
-      // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)
-    }
-  }]);
-
-  return MDCFoundation;
-}();
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCFoundation);
-
-/***/ }),
-/* 1 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
 /**
 /**
  * @license
  * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
+ * Copyright Google LLC All Rights Reserved.
  *
  *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @template F
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://github.com/material-components/material-components-web/blob/master/LICENSE
  */
  */
-
-var MDCComponent = function () {
-  _createClass(MDCComponent, null, [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCComponent}
-     */
-    value: function attachTo(root) {
-      // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and
-      // returns an instantiated component with its root set to that element. Also note that in the cases of
-      // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized
-      // from getDefaultFoundation().
-      return new MDCComponent(root, new __WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]());
-    }
-
-    /**
-     * @param {!Element} root
-     * @param {F=} foundation
-     * @param {...?} args
-     */
-
-  }]);
-
-  function MDCComponent(root) {
-    var foundation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
-
-    _classCallCheck(this, MDCComponent);
-
-    /** @protected {!Element} */
-    this.root_ = root;
-
-    for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
-      args[_key - 2] = arguments[_key];
-    }
-
-    this.initialize.apply(this, args);
-    // Note that we initialize foundation here and not within the constructor's default param so that
-    // this.root_ is defined and can be used within the foundation class.
-    /** @protected {!F} */
-    this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;
-    this.foundation_.init();
-    this.initialSyncWithDOM();
-  }
-
-  _createClass(MDCComponent, [{
-    key: 'initialize',
-    value: function initialize() /* ...args */{}
-    // Subclasses can override this to do any additional setup work that would be considered part of a
-    // "constructor". Essentially, it is a hook into the parent constructor before the foundation is
-    // initialized. Any additional arguments besides root and foundation will be passed in here.
-
-
-    /**
-     * @return {!F} foundation
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      // Subclasses must override this method to return a properly configured foundation class for the
-      // component.
-      throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class');
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      // Subclasses should override this method if they need to perform work to synchronize with a host DOM
-      // object. An example of this would be a form control wrapper that needs to synchronize its internal state
-      // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM
-      // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      // Subclasses may implement this method to release any resources / deregister any listeners they have
-      // attached. An example of this might be deregistering a resize event from the window object.
-      this.foundation_.destroy();
-    }
-
-    /**
-     * Wrapper method to add an event listener to the component's root element. This is most useful when
-     * listening for custom events.
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: 'listen',
-    value: function listen(evtType, handler) {
-      this.root_.addEventListener(evtType, handler);
-    }
-
-    /**
-     * Wrapper method to remove an event listener to the component's root element. This is most useful when
-     * unlistening for custom events.
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: 'unlisten',
-    value: function unlisten(evtType, handler) {
-      this.root_.removeEventListener(evtType, handler);
-    }
-
-    /**
-     * Fires a cross-browser-compatible custom event from the component root of the given type,
-     * with the given data.
-     * @param {string} evtType
-     * @param {!Object} evtData
-     * @param {boolean=} shouldBubble
-     */
-
-  }, {
-    key: 'emit',
-    value: function emit(evtType, evtData) {
-      var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
-      var evt = void 0;
-      if (typeof CustomEvent === 'function') {
-        evt = new CustomEvent(evtType, {
-          detail: evtData,
-          bubbles: shouldBubble
+(function webpackUniversalModuleDefinition(root, factory) {
+    if (typeof exports === "object" && typeof module === "object") module.exports = factory(); else if (typeof define === "function" && define.amd) define([], factory); else if (typeof exports === "object") exports["mdc"] = factory(); else root["mdc"] = factory();
+})(this, function() {
+    return function(modules) {
+        var installedModules = {};
+        function __webpack_require__(moduleId) {
+            if (installedModules[moduleId]) {
+                return installedModules[moduleId].exports;
+            }
+            var module = installedModules[moduleId] = {
+                i: moduleId,
+                l: false,
+                exports: {}
+            };
+            modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+            module.l = true;
+            return module.exports;
+        }
+        __webpack_require__.m = modules;
+        __webpack_require__.c = installedModules;
+        __webpack_require__.d = function(exports, name, getter) {
+            if (!__webpack_require__.o(exports, name)) {
+                Object.defineProperty(exports, name, {
+                    configurable: false,
+                    enumerable: true,
+                    get: getter
+                });
+            }
+        };
+        __webpack_require__.n = function(module) {
+            var getter = module && module.__esModule ? function getDefault() {
+                return module["default"];
+            } : function getModuleExports() {
+                return module;
+            };
+            __webpack_require__.d(getter, "a", getter);
+            return getter;
+        };
+        __webpack_require__.o = function(object, property) {
+            return Object.prototype.hasOwnProperty.call(object, property);
+        };
+        __webpack_require__.p = "";
+        return __webpack_require__(__webpack_require__.s = 78);
+    }([ function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
         });
         });
-      } else {
-        evt = document.createEvent('CustomEvent');
-        evt.initCustomEvent(evtType, shouldBubble, false, evtData);
-      }
-
-      this.root_.dispatchEvent(evt);
-    }
-  }]);
-
-  return MDCComponent;
-}();
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCComponent);
-
-/***/ }),
-/* 2 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRipple", function() { return MDCRipple; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RippleCapableSurface", function() { return RippleCapableSurface; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(28);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(69);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(5);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRippleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends MDCComponent<!MDCRippleFoundation>
- */
-
-var MDCRipple = function (_MDCComponent) {
-  _inherits(MDCRipple, _MDCComponent);
-
-  /** @param {...?} args */
-  function MDCRipple() {
-    var _ref;
-
-    _classCallCheck(this, MDCRipple);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {boolean} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCRipple.__proto__ || Object.getPrototypeOf(MDCRipple)).call.apply(_ref, [this].concat(args)));
-
-    _this.disabled = false;
-
-    /** @private {boolean} */
-    _this.unbounded_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @param {{isUnbounded: (boolean|undefined)}=} options
-   * @return {!MDCRipple}
-   */
-
-
-  _createClass(MDCRipple, [{
-    key: 'setUnbounded_',
-
-
-    /**
-     * Closure Compiler throws an access control error when directly accessing a
-     * protected or private property inside a getter/setter, like unbounded above.
-     * By accessing the protected property inside a method, we solve that problem.
-     * That's why this function exists.
-     * @private
-     */
-    value: function setUnbounded_() {
-      this.foundation_.setUnbounded(this.unbounded_);
-    }
-  }, {
-    key: 'activate',
-    value: function activate() {
-      this.foundation_.activate();
-    }
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.foundation_.deactivate();
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      this.foundation_.layout();
-    }
-
-    /**
-     * @return {!MDCRippleFoundation}
-     * @override
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](MDCRipple.createAdapter(this));
-    }
-
-    /** @override */
-
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.unbounded = 'mdcRippleIsUnbounded' in this.root_.dataset;
-    }
-  }, {
-    key: 'unbounded',
-
-
-    /** @return {boolean} */
-    get: function get() {
-      return this.unbounded_;
-    }
-
-    /** @param {boolean} unbounded */
-    ,
-    set: function set(unbounded) {
-      this.unbounded_ = Boolean(unbounded);
-      this.setUnbounded_();
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
-          _ref2$isUnbounded = _ref2.isUnbounded,
-          isUnbounded = _ref2$isUnbounded === undefined ? undefined : _ref2$isUnbounded;
-
-      var ripple = new MDCRipple(root);
-      // Only override unbounded behavior if option is explicitly specified
-      if (isUnbounded !== undefined) {
-        ripple.unbounded = /** @type {boolean} */isUnbounded;
-      }
-      return ripple;
-    }
-
-    /**
-     * @param {!RippleCapableSurface} instance
-     * @return {!MDCRippleAdapter}
-     */
-
-  }, {
-    key: 'createAdapter',
-    value: function createAdapter(instance) {
-      var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__["getMatchesProperty"](HTMLElement.prototype);
-
-      return {
-        browserSupportsCssVars: function browserSupportsCssVars() {
-          return __WEBPACK_IMPORTED_MODULE_3__util__["supportsCssVariables"](window);
-        },
-        isUnbounded: function isUnbounded() {
-          return instance.unbounded;
-        },
-        isSurfaceActive: function isSurfaceActive() {
-          return instance.root_[MATCHES](':active');
-        },
-        isSurfaceDisabled: function isSurfaceDisabled() {
-          return instance.disabled;
-        },
-        addClass: function addClass(className) {
-          return instance.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return instance.root_.classList.remove(className);
-        },
-        containsEventTarget: function containsEventTarget(target) {
-          return instance.root_.contains(target);
-        },
-        registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
-          return instance.root_.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
-          return instance.root_.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
-        },
-        registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {
-          return document.documentElement.addEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
-        },
-        deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {
-          return document.documentElement.removeEventListener(evtType, handler, __WEBPACK_IMPORTED_MODULE_3__util__["applyPassive"]());
-        },
-        registerResizeHandler: function registerResizeHandler(handler) {
-          return window.addEventListener('resize', handler);
-        },
-        deregisterResizeHandler: function deregisterResizeHandler(handler) {
-          return window.removeEventListener('resize', handler);
-        },
-        updateCssVariable: function updateCssVariable(varName, value) {
-          return instance.root_.style.setProperty(varName, value);
-        },
-        computeBoundingRect: function computeBoundingRect() {
-          return instance.root_.getBoundingClientRect();
-        },
-        getWindowPageOffset: function getWindowPageOffset() {
-          return { x: window.pageXOffset, y: window.pageYOffset };
+        var MDCFoundation = function() {
+            function MDCFoundation(adapter) {
+                if (adapter === void 0) {
+                    adapter = {};
+                }
+                this.adapter_ = adapter;
+            }
+            Object.defineProperty(MDCFoundation, "cssClasses", {
+                get: function get() {
+                    return {};
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFoundation, "strings", {
+                get: function get() {
+                    return {};
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFoundation, "numbers", {
+                get: function get() {
+                    return {};
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {};
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCFoundation.prototype.init = function() {};
+            MDCFoundation.prototype.destroy = function() {};
+            return MDCFoundation;
+        }();
+        exports.MDCFoundation = MDCFoundation;
+        exports.default = MDCFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __read = this && this.__read || function(o, n) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator];
+            if (!m) return o;
+            var i = m.call(o), r, ar = [], e;
+            try {
+                while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+                    ar.push(r.value);
+                }
+            } catch (error) {
+                e = {
+                    error: error
+                };
+            } finally {
+                try {
+                    if (r && !r.done && (m = i["return"])) m.call(i);
+                } finally {
+                    if (e) throw e.error;
+                }
+            }
+            return ar;
+        };
+        var __spread = this && this.__spread || function() {
+            for (var ar = [], i = 0; i < arguments.length; i++) {
+                ar = ar.concat(__read(arguments[i]));
+            }
+            return ar;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var MDCComponent = function() {
+            function MDCComponent(root, foundation) {
+                var args = [];
+                for (var _i = 2; _i < arguments.length; _i++) {
+                    args[_i - 2] = arguments[_i];
+                }
+                this.root_ = root;
+                this.initialize.apply(this, __spread(args));
+                this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;
+                this.foundation_.init();
+                this.initialSyncWithDOM();
+            }
+            MDCComponent.attachTo = function(root) {
+                return new MDCComponent(root, new foundation_1.MDCFoundation({}));
+            };
+            MDCComponent.prototype.initialize = function() {
+                var _args = [];
+                for (var _i = 0; _i < arguments.length; _i++) {
+                    _args[_i] = arguments[_i];
+                }
+            };
+            MDCComponent.prototype.getDefaultFoundation = function() {
+                throw new Error("Subclasses must override getDefaultFoundation to return a properly configured " + "foundation class");
+            };
+            MDCComponent.prototype.initialSyncWithDOM = function() {};
+            MDCComponent.prototype.destroy = function() {
+                this.foundation_.destroy();
+            };
+            MDCComponent.prototype.listen = function(evtType, handler) {
+                this.root_.addEventListener(evtType, handler);
+            };
+            MDCComponent.prototype.unlisten = function(evtType, handler) {
+                this.root_.removeEventListener(evtType, handler);
+            };
+            MDCComponent.prototype.emit = function(evtType, evtData, shouldBubble) {
+                if (shouldBubble === void 0) {
+                    shouldBubble = false;
+                }
+                var evt;
+                if (typeof CustomEvent === "function") {
+                    evt = new CustomEvent(evtType, {
+                        bubbles: shouldBubble,
+                        detail: evtData
+                    });
+                } else {
+                    evt = document.createEvent("CustomEvent");
+                    evt.initCustomEvent(evtType, shouldBubble, false, evtData);
+                }
+                this.root_.dispatchEvent(evt);
+            };
+            return MDCComponent;
+        }();
+        exports.MDCComponent = MDCComponent;
+        exports.default = MDCComponent;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var foundation_1 = __webpack_require__(4);
+        var util = __importStar(__webpack_require__(11));
+        var MDCRipple = function(_super) {
+            __extends(MDCRipple, _super);
+            function MDCRipple() {
+                var _this = _super !== null && _super.apply(this, arguments) || this;
+                _this.disabled = false;
+                return _this;
+            }
+            MDCRipple.attachTo = function(root, opts) {
+                if (opts === void 0) {
+                    opts = {
+                        isUnbounded: undefined
+                    };
+                }
+                var ripple = new MDCRipple(root);
+                if (opts.isUnbounded !== undefined) {
+                    ripple.unbounded = opts.isUnbounded;
+                }
+                return ripple;
+            };
+            MDCRipple.createAdapter = function(instance) {
+                return {
+                    addClass: function addClass(className) {
+                        return instance.root_.classList.add(className);
+                    },
+                    browserSupportsCssVars: function browserSupportsCssVars() {
+                        return util.supportsCssVariables(window);
+                    },
+                    computeBoundingRect: function computeBoundingRect() {
+                        return instance.root_.getBoundingClientRect();
+                    },
+                    containsEventTarget: function containsEventTarget(target) {
+                        return instance.root_.contains(target);
+                    },
+                    deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {
+                        return document.documentElement.removeEventListener(evtType, handler, util.applyPassive());
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return instance.root_.removeEventListener(evtType, handler, util.applyPassive());
+                    },
+                    deregisterResizeHandler: function deregisterResizeHandler(handler) {
+                        return window.removeEventListener("resize", handler);
+                    },
+                    getWindowPageOffset: function getWindowPageOffset() {
+                        return {
+                            x: window.pageXOffset,
+                            y: window.pageYOffset
+                        };
+                    },
+                    isSurfaceActive: function isSurfaceActive() {
+                        return ponyfill_1.matches(instance.root_, ":active");
+                    },
+                    isSurfaceDisabled: function isSurfaceDisabled() {
+                        return Boolean(instance.disabled);
+                    },
+                    isUnbounded: function isUnbounded() {
+                        return Boolean(instance.unbounded);
+                    },
+                    registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {
+                        return document.documentElement.addEventListener(evtType, handler, util.applyPassive());
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return instance.root_.addEventListener(evtType, handler, util.applyPassive());
+                    },
+                    registerResizeHandler: function registerResizeHandler(handler) {
+                        return window.addEventListener("resize", handler);
+                    },
+                    removeClass: function removeClass(className) {
+                        return instance.root_.classList.remove(className);
+                    },
+                    updateCssVariable: function updateCssVariable(varName, value) {
+                        return instance.root_.style.setProperty(varName, value);
+                    }
+                };
+            };
+            Object.defineProperty(MDCRipple.prototype, "unbounded", {
+                get: function get() {
+                    return Boolean(this.unbounded_);
+                },
+                set: function set(unbounded) {
+                    this.unbounded_ = Boolean(unbounded);
+                    this.setUnbounded_();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCRipple.prototype.activate = function() {
+                this.foundation_.activate();
+            };
+            MDCRipple.prototype.deactivate = function() {
+                this.foundation_.deactivate();
+            };
+            MDCRipple.prototype.layout = function() {
+                this.foundation_.layout();
+            };
+            MDCRipple.prototype.getDefaultFoundation = function() {
+                return new foundation_1.MDCRippleFoundation(MDCRipple.createAdapter(this));
+            };
+            MDCRipple.prototype.initialSyncWithDOM = function() {
+                var root = this.root_;
+                this.unbounded = "mdcRippleIsUnbounded" in root.dataset;
+            };
+            MDCRipple.prototype.setUnbounded_ = function() {
+                this.foundation_.setUnbounded(Boolean(this.unbounded_));
+            };
+            return MDCRipple;
+        }(component_1.MDCComponent);
+        exports.MDCRipple = MDCRipple;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        function closest(element, selector) {
+            if (element.closest) {
+                return element.closest(selector);
+            }
+            var el = element;
+            while (el) {
+                if (matches(el, selector)) {
+                    return el;
+                }
+                el = el.parentElement;
+            }
+            return null;
+        }
+        exports.closest = closest;
+        function matches(element, selector) {
+            var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;
+            return nativeMatches.call(element, selector);
+        }
+        exports.matches = matches;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(83);
+        var util_1 = __webpack_require__(11);
+        var ACTIVATION_EVENT_TYPES = [ "touchstart", "pointerdown", "mousedown", "keydown" ];
+        var POINTER_DEACTIVATION_EVENT_TYPES = [ "touchend", "pointerup", "mouseup", "contextmenu" ];
+        var activatedTargets = [];
+        var MDCRippleFoundation = function(_super) {
+            __extends(MDCRippleFoundation, _super);
+            function MDCRippleFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCRippleFoundation.defaultAdapter, adapter)) || this;
+                _this.activationAnimationHasEnded_ = false;
+                _this.activationTimer_ = 0;
+                _this.fgDeactivationRemovalTimer_ = 0;
+                _this.fgScale_ = "0";
+                _this.frame_ = {
+                    width: 0,
+                    height: 0
+                };
+                _this.initialSize_ = 0;
+                _this.layoutFrame_ = 0;
+                _this.maxRadius_ = 0;
+                _this.unboundedCoords_ = {
+                    left: 0,
+                    top: 0
+                };
+                _this.activationState_ = _this.defaultActivationState_();
+                _this.activationTimerCallback_ = function() {
+                    _this.activationAnimationHasEnded_ = true;
+                    _this.runDeactivationUXLogicIfReady_();
+                };
+                _this.activateHandler_ = function(e) {
+                    return _this.activate_(e);
+                };
+                _this.deactivateHandler_ = function() {
+                    return _this.deactivate_();
+                };
+                _this.focusHandler_ = function() {
+                    return _this.handleFocus();
+                };
+                _this.blurHandler_ = function() {
+                    return _this.handleBlur();
+                };
+                _this.resizeHandler_ = function() {
+                    return _this.layout();
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCRippleFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRippleFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRippleFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRippleFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        browserSupportsCssVars: function browserSupportsCssVars() {
+                            return true;
+                        },
+                        computeBoundingRect: function computeBoundingRect() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        containsEventTarget: function containsEventTarget() {
+                            return true;
+                        },
+                        deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterResizeHandler: function deregisterResizeHandler() {
+                            return undefined;
+                        },
+                        getWindowPageOffset: function getWindowPageOffset() {
+                            return {
+                                x: 0,
+                                y: 0
+                            };
+                        },
+                        isSurfaceActive: function isSurfaceActive() {
+                            return true;
+                        },
+                        isSurfaceDisabled: function isSurfaceDisabled() {
+                            return true;
+                        },
+                        isUnbounded: function isUnbounded() {
+                            return true;
+                        },
+                        registerDocumentInteractionHandler: function registerDocumentInteractionHandler() {
+                            return undefined;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        },
+                        registerResizeHandler: function registerResizeHandler() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        updateCssVariable: function updateCssVariable() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCRippleFoundation.prototype.init = function() {
+                var _this = this;
+                var supportsPressRipple = this.supportsPressRipple_();
+                this.registerRootHandlers_(supportsPressRipple);
+                if (supportsPressRipple) {
+                    var _a = MDCRippleFoundation.cssClasses, ROOT_1 = _a.ROOT, UNBOUNDED_1 = _a.UNBOUNDED;
+                    requestAnimationFrame(function() {
+                        _this.adapter_.addClass(ROOT_1);
+                        if (_this.adapter_.isUnbounded()) {
+                            _this.adapter_.addClass(UNBOUNDED_1);
+                            _this.layoutInternal_();
+                        }
+                    });
+                }
+            };
+            MDCRippleFoundation.prototype.destroy = function() {
+                var _this = this;
+                if (this.supportsPressRipple_()) {
+                    if (this.activationTimer_) {
+                        clearTimeout(this.activationTimer_);
+                        this.activationTimer_ = 0;
+                        this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);
+                    }
+                    if (this.fgDeactivationRemovalTimer_) {
+                        clearTimeout(this.fgDeactivationRemovalTimer_);
+                        this.fgDeactivationRemovalTimer_ = 0;
+                        this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);
+                    }
+                    var _a = MDCRippleFoundation.cssClasses, ROOT_2 = _a.ROOT, UNBOUNDED_2 = _a.UNBOUNDED;
+                    requestAnimationFrame(function() {
+                        _this.adapter_.removeClass(ROOT_2);
+                        _this.adapter_.removeClass(UNBOUNDED_2);
+                        _this.removeCssVars_();
+                    });
+                }
+                this.deregisterRootHandlers_();
+                this.deregisterDeactivationHandlers_();
+            };
+            MDCRippleFoundation.prototype.activate = function(evt) {
+                this.activate_(evt);
+            };
+            MDCRippleFoundation.prototype.deactivate = function() {
+                this.deactivate_();
+            };
+            MDCRippleFoundation.prototype.layout = function() {
+                var _this = this;
+                if (this.layoutFrame_) {
+                    cancelAnimationFrame(this.layoutFrame_);
+                }
+                this.layoutFrame_ = requestAnimationFrame(function() {
+                    _this.layoutInternal_();
+                    _this.layoutFrame_ = 0;
+                });
+            };
+            MDCRippleFoundation.prototype.setUnbounded = function(unbounded) {
+                var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;
+                if (unbounded) {
+                    this.adapter_.addClass(UNBOUNDED);
+                } else {
+                    this.adapter_.removeClass(UNBOUNDED);
+                }
+            };
+            MDCRippleFoundation.prototype.handleFocus = function() {
+                var _this = this;
+                requestAnimationFrame(function() {
+                    return _this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
+                });
+            };
+            MDCRippleFoundation.prototype.handleBlur = function() {
+                var _this = this;
+                requestAnimationFrame(function() {
+                    return _this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
+                });
+            };
+            MDCRippleFoundation.prototype.supportsPressRipple_ = function() {
+                return this.adapter_.browserSupportsCssVars();
+            };
+            MDCRippleFoundation.prototype.defaultActivationState_ = function() {
+                return {
+                    activationEvent: undefined,
+                    hasDeactivationUXRun: false,
+                    isActivated: false,
+                    isProgrammatic: false,
+                    wasActivatedByPointer: false,
+                    wasElementMadeActive: false
+                };
+            };
+            MDCRippleFoundation.prototype.registerRootHandlers_ = function(supportsPressRipple) {
+                var _this = this;
+                if (supportsPressRipple) {
+                    ACTIVATION_EVENT_TYPES.forEach(function(evtType) {
+                        _this.adapter_.registerInteractionHandler(evtType, _this.activateHandler_);
+                    });
+                    if (this.adapter_.isUnbounded()) {
+                        this.adapter_.registerResizeHandler(this.resizeHandler_);
+                    }
+                }
+                this.adapter_.registerInteractionHandler("focus", this.focusHandler_);
+                this.adapter_.registerInteractionHandler("blur", this.blurHandler_);
+            };
+            MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function(evt) {
+                var _this = this;
+                if (evt.type === "keydown") {
+                    this.adapter_.registerInteractionHandler("keyup", this.deactivateHandler_);
+                } else {
+                    POINTER_DEACTIVATION_EVENT_TYPES.forEach(function(evtType) {
+                        _this.adapter_.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_);
+                    });
+                }
+            };
+            MDCRippleFoundation.prototype.deregisterRootHandlers_ = function() {
+                var _this = this;
+                ACTIVATION_EVENT_TYPES.forEach(function(evtType) {
+                    _this.adapter_.deregisterInteractionHandler(evtType, _this.activateHandler_);
+                });
+                this.adapter_.deregisterInteractionHandler("focus", this.focusHandler_);
+                this.adapter_.deregisterInteractionHandler("blur", this.blurHandler_);
+                if (this.adapter_.isUnbounded()) {
+                    this.adapter_.deregisterResizeHandler(this.resizeHandler_);
+                }
+            };
+            MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function() {
+                var _this = this;
+                this.adapter_.deregisterInteractionHandler("keyup", this.deactivateHandler_);
+                POINTER_DEACTIVATION_EVENT_TYPES.forEach(function(evtType) {
+                    _this.adapter_.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_);
+                });
+            };
+            MDCRippleFoundation.prototype.removeCssVars_ = function() {
+                var _this = this;
+                var rippleStrings = MDCRippleFoundation.strings;
+                var keys = Object.keys(rippleStrings);
+                keys.forEach(function(key) {
+                    if (key.indexOf("VAR_") === 0) {
+                        _this.adapter_.updateCssVariable(rippleStrings[key], null);
+                    }
+                });
+            };
+            MDCRippleFoundation.prototype.activate_ = function(evt) {
+                var _this = this;
+                if (this.adapter_.isSurfaceDisabled()) {
+                    return;
+                }
+                var activationState = this.activationState_;
+                if (activationState.isActivated) {
+                    return;
+                }
+                var previousActivationEvent = this.previousActivationEvent_;
+                var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;
+                if (isSameInteraction) {
+                    return;
+                }
+                activationState.isActivated = true;
+                activationState.isProgrammatic = evt === undefined;
+                activationState.activationEvent = evt;
+                activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === "mousedown" || evt.type === "touchstart" || evt.type === "pointerdown");
+                var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function(target) {
+                    return _this.adapter_.containsEventTarget(target);
+                });
+                if (hasActivatedChild) {
+                    this.resetActivationState_();
+                    return;
+                }
+                if (evt !== undefined) {
+                    activatedTargets.push(evt.target);
+                    this.registerDeactivationHandlers_(evt);
+                }
+                activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);
+                if (activationState.wasElementMadeActive) {
+                    this.animateActivation_();
+                }
+                requestAnimationFrame(function() {
+                    activatedTargets = [];
+                    if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === " " || evt.keyCode === 32)) {
+                        activationState.wasElementMadeActive = _this.checkElementMadeActive_(evt);
+                        if (activationState.wasElementMadeActive) {
+                            _this.animateActivation_();
+                        }
+                    }
+                    if (!activationState.wasElementMadeActive) {
+                        _this.activationState_ = _this.defaultActivationState_();
+                    }
+                });
+            };
+            MDCRippleFoundation.prototype.checkElementMadeActive_ = function(evt) {
+                return evt !== undefined && evt.type === "keydown" ? this.adapter_.isSurfaceActive() : true;
+            };
+            MDCRippleFoundation.prototype.animateActivation_ = function() {
+                var _this = this;
+                var _a = MDCRippleFoundation.strings, VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START, VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END;
+                var _b = MDCRippleFoundation.cssClasses, FG_DEACTIVATION = _b.FG_DEACTIVATION, FG_ACTIVATION = _b.FG_ACTIVATION;
+                var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;
+                this.layoutInternal_();
+                var translateStart = "";
+                var translateEnd = "";
+                if (!this.adapter_.isUnbounded()) {
+                    var _c = this.getFgTranslationCoordinates_(), startPoint = _c.startPoint, endPoint = _c.endPoint;
+                    translateStart = startPoint.x + "px, " + startPoint.y + "px";
+                    translateEnd = endPoint.x + "px, " + endPoint.y + "px";
+                }
+                this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);
+                this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);
+                clearTimeout(this.activationTimer_);
+                clearTimeout(this.fgDeactivationRemovalTimer_);
+                this.rmBoundedActivationClasses_();
+                this.adapter_.removeClass(FG_DEACTIVATION);
+                this.adapter_.computeBoundingRect();
+                this.adapter_.addClass(FG_ACTIVATION);
+                this.activationTimer_ = setTimeout(function() {
+                    return _this.activationTimerCallback_();
+                }, DEACTIVATION_TIMEOUT_MS);
+            };
+            MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function() {
+                var _a = this.activationState_, activationEvent = _a.activationEvent, wasActivatedByPointer = _a.wasActivatedByPointer;
+                var startPoint;
+                if (wasActivatedByPointer) {
+                    startPoint = util_1.getNormalizedEventCoords(activationEvent, this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect());
+                } else {
+                    startPoint = {
+                        x: this.frame_.width / 2,
+                        y: this.frame_.height / 2
+                    };
+                }
+                startPoint = {
+                    x: startPoint.x - this.initialSize_ / 2,
+                    y: startPoint.y - this.initialSize_ / 2
+                };
+                var endPoint = {
+                    x: this.frame_.width / 2 - this.initialSize_ / 2,
+                    y: this.frame_.height / 2 - this.initialSize_ / 2
+                };
+                return {
+                    startPoint: startPoint,
+                    endPoint: endPoint
+                };
+            };
+            MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function() {
+                var _this = this;
+                var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;
+                var _a = this.activationState_, hasDeactivationUXRun = _a.hasDeactivationUXRun, isActivated = _a.isActivated;
+                var activationHasEnded = hasDeactivationUXRun || !isActivated;
+                if (activationHasEnded && this.activationAnimationHasEnded_) {
+                    this.rmBoundedActivationClasses_();
+                    this.adapter_.addClass(FG_DEACTIVATION);
+                    this.fgDeactivationRemovalTimer_ = setTimeout(function() {
+                        _this.adapter_.removeClass(FG_DEACTIVATION);
+                    }, constants_1.numbers.FG_DEACTIVATION_MS);
+                }
+            };
+            MDCRippleFoundation.prototype.rmBoundedActivationClasses_ = function() {
+                var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;
+                this.adapter_.removeClass(FG_ACTIVATION);
+                this.activationAnimationHasEnded_ = false;
+                this.adapter_.computeBoundingRect();
+            };
+            MDCRippleFoundation.prototype.resetActivationState_ = function() {
+                var _this = this;
+                this.previousActivationEvent_ = this.activationState_.activationEvent;
+                this.activationState_ = this.defaultActivationState_();
+                setTimeout(function() {
+                    return _this.previousActivationEvent_ = undefined;
+                }, MDCRippleFoundation.numbers.TAP_DELAY_MS);
+            };
+            MDCRippleFoundation.prototype.deactivate_ = function() {
+                var _this = this;
+                var activationState = this.activationState_;
+                if (!activationState.isActivated) {
+                    return;
+                }
+                var state = __assign({}, activationState);
+                if (activationState.isProgrammatic) {
+                    requestAnimationFrame(function() {
+                        return _this.animateDeactivation_(state);
+                    });
+                    this.resetActivationState_();
+                } else {
+                    this.deregisterDeactivationHandlers_();
+                    requestAnimationFrame(function() {
+                        _this.activationState_.hasDeactivationUXRun = true;
+                        _this.animateDeactivation_(state);
+                        _this.resetActivationState_();
+                    });
+                }
+            };
+            MDCRippleFoundation.prototype.animateDeactivation_ = function(_a) {
+                var wasActivatedByPointer = _a.wasActivatedByPointer, wasElementMadeActive = _a.wasElementMadeActive;
+                if (wasActivatedByPointer || wasElementMadeActive) {
+                    this.runDeactivationUXLogicIfReady_();
+                }
+            };
+            MDCRippleFoundation.prototype.layoutInternal_ = function() {
+                var _this = this;
+                this.frame_ = this.adapter_.computeBoundingRect();
+                var maxDim = Math.max(this.frame_.height, this.frame_.width);
+                var getBoundedRadius = function getBoundedRadius() {
+                    var hypotenuse = Math.sqrt(Math.pow(_this.frame_.width, 2) + Math.pow(_this.frame_.height, 2));
+                    return hypotenuse + MDCRippleFoundation.numbers.PADDING;
+                };
+                this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();
+                this.initialSize_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);
+                this.fgScale_ = "" + this.maxRadius_ / this.initialSize_;
+                this.updateLayoutCssVars_();
+            };
+            MDCRippleFoundation.prototype.updateLayoutCssVars_ = function() {
+                var _a = MDCRippleFoundation.strings, VAR_FG_SIZE = _a.VAR_FG_SIZE, VAR_LEFT = _a.VAR_LEFT, VAR_TOP = _a.VAR_TOP, VAR_FG_SCALE = _a.VAR_FG_SCALE;
+                this.adapter_.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + "px");
+                this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);
+                if (this.adapter_.isUnbounded()) {
+                    this.unboundedCoords_ = {
+                        left: Math.round(this.frame_.width / 2 - this.initialSize_ / 2),
+                        top: Math.round(this.frame_.height / 2 - this.initialSize_ / 2)
+                    };
+                    this.adapter_.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + "px");
+                    this.adapter_.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + "px");
+                }
+            };
+            return MDCRippleFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCRippleFoundation = MDCRippleFoundation;
+        exports.default = MDCRippleFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(35);
+        var ELEMENTS_KEY_ALLOWED_IN = [ "input", "button", "textarea", "select" ];
+        function isNumberArray(selectedIndex) {
+            return selectedIndex instanceof Array;
+        }
+        var MDCListFoundation = function(_super) {
+            __extends(MDCListFoundation, _super);
+            function MDCListFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCListFoundation.defaultAdapter, adapter)) || this;
+                _this.wrapFocus_ = false;
+                _this.isVertical_ = true;
+                _this.isSingleSelectionList_ = false;
+                _this.selectedIndex_ = constants_1.numbers.UNSET_INDEX;
+                _this.focusedItemIndex_ = constants_1.numbers.UNSET_INDEX;
+                _this.useActivatedClass_ = false;
+                _this.ariaCurrentAttrValue_ = null;
+                _this.isCheckboxList_ = false;
+                _this.isRadioList_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCListFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCListFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCListFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCListFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClassForElementIndex: function addClassForElementIndex() {
+                            return undefined;
+                        },
+                        focusItemAtIndex: function focusItemAtIndex() {
+                            return undefined;
+                        },
+                        getAttributeForElementIndex: function getAttributeForElementIndex() {
+                            return null;
+                        },
+                        getFocusedElementIndex: function getFocusedElementIndex() {
+                            return 0;
+                        },
+                        getListItemCount: function getListItemCount() {
+                            return 0;
+                        },
+                        hasCheckboxAtIndex: function hasCheckboxAtIndex() {
+                            return false;
+                        },
+                        hasRadioAtIndex: function hasRadioAtIndex() {
+                            return false;
+                        },
+                        isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex() {
+                            return false;
+                        },
+                        isFocusInsideList: function isFocusInsideList() {
+                            return false;
+                        },
+                        isRootFocused: function isRootFocused() {
+                            return false;
+                        },
+                        notifyAction: function notifyAction() {
+                            return undefined;
+                        },
+                        removeClassForElementIndex: function removeClassForElementIndex() {
+                            return undefined;
+                        },
+                        setAttributeForElementIndex: function setAttributeForElementIndex() {
+                            return undefined;
+                        },
+                        setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex() {
+                            return undefined;
+                        },
+                        setTabIndexForListItemChildren: function setTabIndexForListItemChildren() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCListFoundation.prototype.layout = function() {
+                if (this.adapter_.getListItemCount() === 0) {
+                    return;
+                }
+                if (this.adapter_.hasCheckboxAtIndex(0)) {
+                    this.isCheckboxList_ = true;
+                } else if (this.adapter_.hasRadioAtIndex(0)) {
+                    this.isRadioList_ = true;
+                }
+            };
+            MDCListFoundation.prototype.setWrapFocus = function(value) {
+                this.wrapFocus_ = value;
+            };
+            MDCListFoundation.prototype.setVerticalOrientation = function(value) {
+                this.isVertical_ = value;
+            };
+            MDCListFoundation.prototype.setSingleSelection = function(value) {
+                this.isSingleSelectionList_ = value;
+            };
+            MDCListFoundation.prototype.setUseActivatedClass = function(useActivated) {
+                this.useActivatedClass_ = useActivated;
+            };
+            MDCListFoundation.prototype.getSelectedIndex = function() {
+                return this.selectedIndex_;
+            };
+            MDCListFoundation.prototype.setSelectedIndex = function(index) {
+                if (!this.isIndexValid_(index)) {
+                    return;
+                }
+                if (this.isCheckboxList_) {
+                    this.setCheckboxAtIndex_(index);
+                } else if (this.isRadioList_) {
+                    this.setRadioAtIndex_(index);
+                } else {
+                    this.setSingleSelectionAtIndex_(index);
+                }
+            };
+            MDCListFoundation.prototype.handleFocusIn = function(_, listItemIndex) {
+                if (listItemIndex >= 0) {
+                    this.adapter_.setTabIndexForListItemChildren(listItemIndex, "0");
+                }
+            };
+            MDCListFoundation.prototype.handleFocusOut = function(_, listItemIndex) {
+                var _this = this;
+                if (listItemIndex >= 0) {
+                    this.adapter_.setTabIndexForListItemChildren(listItemIndex, "-1");
+                }
+                setTimeout(function() {
+                    if (!_this.adapter_.isFocusInsideList()) {
+                        _this.setTabindexToFirstSelectedItem_();
+                    }
+                }, 0);
+            };
+            MDCListFoundation.prototype.handleKeydown = function(evt, isRootListItem, listItemIndex) {
+                var isArrowLeft = evt.key === "ArrowLeft" || evt.keyCode === 37;
+                var isArrowUp = evt.key === "ArrowUp" || evt.keyCode === 38;
+                var isArrowRight = evt.key === "ArrowRight" || evt.keyCode === 39;
+                var isArrowDown = evt.key === "ArrowDown" || evt.keyCode === 40;
+                var isHome = evt.key === "Home" || evt.keyCode === 36;
+                var isEnd = evt.key === "End" || evt.keyCode === 35;
+                var isEnter = evt.key === "Enter" || evt.keyCode === 13;
+                var isSpace = evt.key === "Space" || evt.keyCode === 32;
+                if (this.adapter_.isRootFocused()) {
+                    if (isArrowUp || isEnd) {
+                        evt.preventDefault();
+                        this.focusLastElement();
+                    } else if (isArrowDown || isHome) {
+                        evt.preventDefault();
+                        this.focusFirstElement();
+                    }
+                    return;
+                }
+                var currentIndex = this.adapter_.getFocusedElementIndex();
+                if (currentIndex === -1) {
+                    currentIndex = listItemIndex;
+                    if (currentIndex < 0) {
+                        return;
+                    }
+                }
+                var nextIndex;
+                if (this.isVertical_ && isArrowDown || !this.isVertical_ && isArrowRight) {
+                    this.preventDefaultEvent_(evt);
+                    nextIndex = this.focusNextElement(currentIndex);
+                } else if (this.isVertical_ && isArrowUp || !this.isVertical_ && isArrowLeft) {
+                    this.preventDefaultEvent_(evt);
+                    nextIndex = this.focusPrevElement(currentIndex);
+                } else if (isHome) {
+                    this.preventDefaultEvent_(evt);
+                    nextIndex = this.focusFirstElement();
+                } else if (isEnd) {
+                    this.preventDefaultEvent_(evt);
+                    nextIndex = this.focusLastElement();
+                } else if (isEnter || isSpace) {
+                    if (isRootListItem) {
+                        var target = evt.target;
+                        if (target && target.tagName === "A" && isEnter) {
+                            return;
+                        }
+                        this.preventDefaultEvent_(evt);
+                        if (this.isSelectableList_()) {
+                            this.setSelectedIndexOnAction_(currentIndex);
+                        }
+                        this.adapter_.notifyAction(currentIndex);
+                    }
+                }
+                this.focusedItemIndex_ = currentIndex;
+                if (nextIndex !== undefined) {
+                    this.setTabindexAtIndex_(nextIndex);
+                    this.focusedItemIndex_ = nextIndex;
+                }
+            };
+            MDCListFoundation.prototype.handleClick = function(index, toggleCheckbox) {
+                if (index === constants_1.numbers.UNSET_INDEX) {
+                    return;
+                }
+                if (this.isSelectableList_()) {
+                    this.setSelectedIndexOnAction_(index, toggleCheckbox);
+                }
+                this.adapter_.notifyAction(index);
+                this.setTabindexAtIndex_(index);
+                this.focusedItemIndex_ = index;
+            };
+            MDCListFoundation.prototype.focusNextElement = function(index) {
+                var count = this.adapter_.getListItemCount();
+                var nextIndex = index + 1;
+                if (nextIndex >= count) {
+                    if (this.wrapFocus_) {
+                        nextIndex = 0;
+                    } else {
+                        return index;
+                    }
+                }
+                this.adapter_.focusItemAtIndex(nextIndex);
+                return nextIndex;
+            };
+            MDCListFoundation.prototype.focusPrevElement = function(index) {
+                var prevIndex = index - 1;
+                if (prevIndex < 0) {
+                    if (this.wrapFocus_) {
+                        prevIndex = this.adapter_.getListItemCount() - 1;
+                    } else {
+                        return index;
+                    }
+                }
+                this.adapter_.focusItemAtIndex(prevIndex);
+                return prevIndex;
+            };
+            MDCListFoundation.prototype.focusFirstElement = function() {
+                this.adapter_.focusItemAtIndex(0);
+                return 0;
+            };
+            MDCListFoundation.prototype.focusLastElement = function() {
+                var lastIndex = this.adapter_.getListItemCount() - 1;
+                this.adapter_.focusItemAtIndex(lastIndex);
+                return lastIndex;
+            };
+            MDCListFoundation.prototype.preventDefaultEvent_ = function(evt) {
+                var target = evt.target;
+                var tagName = ("" + target.tagName).toLowerCase();
+                if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {
+                    evt.preventDefault();
+                }
+            };
+            MDCListFoundation.prototype.setSingleSelectionAtIndex_ = function(index) {
+                if (this.selectedIndex_ === index) {
+                    return;
+                }
+                var selectedClassName = constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS;
+                if (this.useActivatedClass_) {
+                    selectedClassName = constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS;
+                }
+                if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) {
+                    this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);
+                }
+                this.adapter_.addClassForElementIndex(index, selectedClassName);
+                this.setAriaForSingleSelectionAtIndex_(index);
+                this.selectedIndex_ = index;
+            };
+            MDCListFoundation.prototype.setAriaForSingleSelectionAtIndex_ = function(index) {
+                if (this.selectedIndex_ === constants_1.numbers.UNSET_INDEX) {
+                    this.ariaCurrentAttrValue_ = this.adapter_.getAttributeForElementIndex(index, constants_1.strings.ARIA_CURRENT);
+                }
+                var isAriaCurrent = this.ariaCurrentAttrValue_ !== null;
+                var ariaAttribute = isAriaCurrent ? constants_1.strings.ARIA_CURRENT : constants_1.strings.ARIA_SELECTED;
+                if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) {
+                    this.adapter_.setAttributeForElementIndex(this.selectedIndex_, ariaAttribute, "false");
+                }
+                var ariaAttributeValue = isAriaCurrent ? this.ariaCurrentAttrValue_ : "true";
+                this.adapter_.setAttributeForElementIndex(index, ariaAttribute, ariaAttributeValue);
+            };
+            MDCListFoundation.prototype.setRadioAtIndex_ = function(index) {
+                this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);
+                if (this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) {
+                    this.adapter_.setAttributeForElementIndex(this.selectedIndex_, constants_1.strings.ARIA_CHECKED, "false");
+                }
+                this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, "true");
+                this.selectedIndex_ = index;
+            };
+            MDCListFoundation.prototype.setCheckboxAtIndex_ = function(index) {
+                for (var i = 0; i < this.adapter_.getListItemCount(); i++) {
+                    var isChecked = false;
+                    if (index.indexOf(i) >= 0) {
+                        isChecked = true;
+                    }
+                    this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked);
+                    this.adapter_.setAttributeForElementIndex(i, constants_1.strings.ARIA_CHECKED, isChecked ? "true" : "false");
+                }
+                this.selectedIndex_ = index;
+            };
+            MDCListFoundation.prototype.setTabindexAtIndex_ = function(index) {
+                if (this.focusedItemIndex_ === constants_1.numbers.UNSET_INDEX && index !== 0) {
+                    this.adapter_.setAttributeForElementIndex(0, "tabindex", "-1");
+                } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {
+                    this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, "tabindex", "-1");
+                }
+                this.adapter_.setAttributeForElementIndex(index, "tabindex", "0");
+            };
+            MDCListFoundation.prototype.isSelectableList_ = function() {
+                return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;
+            };
+            MDCListFoundation.prototype.setTabindexToFirstSelectedItem_ = function() {
+                var targetIndex = 0;
+                if (this.isSelectableList_()) {
+                    if (typeof this.selectedIndex_ === "number" && this.selectedIndex_ !== constants_1.numbers.UNSET_INDEX) {
+                        targetIndex = this.selectedIndex_;
+                    } else if (isNumberArray(this.selectedIndex_) && this.selectedIndex_.length > 0) {
+                        targetIndex = this.selectedIndex_.reduce(function(currentIndex, minIndex) {
+                            return Math.min(currentIndex, minIndex);
+                        });
+                    }
+                }
+                this.setTabindexAtIndex_(targetIndex);
+            };
+            MDCListFoundation.prototype.isIndexValid_ = function(index) {
+                var _this = this;
+                if (index instanceof Array) {
+                    if (!this.isCheckboxList_) {
+                        throw new Error("MDCListFoundation: Array of index is only supported for checkbox based list");
+                    }
+                    if (index.length === 0) {
+                        return true;
+                    } else {
+                        return index.some(function(i) {
+                            return _this.isIndexInRange_(i);
+                        });
+                    }
+                } else if (typeof index === "number") {
+                    if (this.isCheckboxList_) {
+                        throw new Error("MDCListFoundation: Expected array of index for checkbox based list but got number: " + index);
+                    }
+                    return this.isIndexInRange_(index);
+                } else {
+                    return false;
+                }
+            };
+            MDCListFoundation.prototype.isIndexInRange_ = function(index) {
+                var listSize = this.adapter_.getListItemCount();
+                return index >= 0 && index < listSize;
+            };
+            MDCListFoundation.prototype.setSelectedIndexOnAction_ = function(index, toggleCheckbox) {
+                if (toggleCheckbox === void 0) {
+                    toggleCheckbox = true;
+                }
+                if (this.isCheckboxList_) {
+                    this.toggleCheckboxAtIndex_(index, toggleCheckbox);
+                } else {
+                    this.setSelectedIndex(index);
+                }
+            };
+            MDCListFoundation.prototype.toggleCheckboxAtIndex_ = function(index, toggleCheckbox) {
+                var isChecked = this.adapter_.isCheckboxCheckedAtIndex(index);
+                if (toggleCheckbox) {
+                    isChecked = !isChecked;
+                    this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, isChecked);
+                }
+                this.adapter_.setAttributeForElementIndex(index, constants_1.strings.ARIA_CHECKED, isChecked ? "true" : "false");
+                var selectedIndexes = this.selectedIndex_ === constants_1.numbers.UNSET_INDEX ? [] : this.selectedIndex_.slice();
+                if (isChecked) {
+                    selectedIndexes.push(index);
+                } else {
+                    selectedIndexes = selectedIndexes.filter(function(i) {
+                        return i !== index;
+                    });
+                }
+                this.selectedIndex_ = selectedIndexes;
+            };
+            return MDCListFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCListFoundation = MDCListFoundation;
+        exports.default = MDCListFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ANCHOR: "mdc-menu-surface--anchor",
+            ANIMATING_CLOSED: "mdc-menu-surface--animating-closed",
+            ANIMATING_OPEN: "mdc-menu-surface--animating-open",
+            FIXED: "mdc-menu-surface--fixed",
+            OPEN: "mdc-menu-surface--open",
+            ROOT: "mdc-menu-surface"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            CLOSED_EVENT: "MDCMenuSurface:closed",
+            OPENED_EVENT: "MDCMenuSurface:opened",
+            FOCUSABLE_ELEMENTS: [ "button:not(:disabled)", '[href]:not([aria-disabled="true"])', "input:not(:disabled)", "select:not(:disabled)", "textarea:not(:disabled)", '[tabindex]:not([tabindex="-1"]):not([aria-disabled="true"])' ].join(", ")
+        };
+        exports.strings = strings;
+        var numbers = {
+            TRANSITION_OPEN_DURATION: 120,
+            TRANSITION_CLOSE_DURATION: 75,
+            MARGIN_TO_EDGE: 32,
+            ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: .67
+        };
+        exports.numbers = numbers;
+        var CornerBit;
+        (function(CornerBit) {
+            CornerBit[CornerBit["BOTTOM"] = 1] = "BOTTOM";
+            CornerBit[CornerBit["CENTER"] = 2] = "CENTER";
+            CornerBit[CornerBit["RIGHT"] = 4] = "RIGHT";
+            CornerBit[CornerBit["FLIP_RTL"] = 8] = "FLIP_RTL";
+        })(CornerBit || (CornerBit = {}));
+        exports.CornerBit = CornerBit;
+        var Corner;
+        (function(Corner) {
+            Corner[Corner["TOP_LEFT"] = 0] = "TOP_LEFT";
+            Corner[Corner["TOP_RIGHT"] = 4] = "TOP_RIGHT";
+            Corner[Corner["BOTTOM_LEFT"] = 1] = "BOTTOM_LEFT";
+            Corner[Corner["BOTTOM_RIGHT"] = 5] = "BOTTOM_RIGHT";
+            Corner[Corner["TOP_START"] = 8] = "TOP_START";
+            Corner[Corner["TOP_END"] = 12] = "TOP_END";
+            Corner[Corner["BOTTOM_START"] = 9] = "BOTTOM_START";
+            Corner[Corner["BOTTOM_END"] = 13] = "BOTTOM_END";
+        })(Corner || (Corner = {}));
+        exports.Corner = Corner;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            FIXED_CLASS: "mdc-top-app-bar--fixed",
+            FIXED_SCROLLED_CLASS: "mdc-top-app-bar--fixed-scrolled",
+            SHORT_CLASS: "mdc-top-app-bar--short",
+            SHORT_COLLAPSED_CLASS: "mdc-top-app-bar--short-collapsed",
+            SHORT_HAS_ACTION_ITEM_CLASS: "mdc-top-app-bar--short-has-action-item"
+        };
+        exports.cssClasses = cssClasses;
+        var numbers = {
+            DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,
+            MAX_TOP_APP_BAR_HEIGHT: 128
+        };
+        exports.numbers = numbers;
+        var strings = {
+            ACTION_ITEM_SELECTOR: ".mdc-top-app-bar__action-item",
+            NAVIGATION_EVENT: "MDCTopAppBar:nav",
+            NAVIGATION_ICON_SELECTOR: ".mdc-top-app-bar__navigation-icon",
+            ROOT_SELECTOR: ".mdc-top-app-bar",
+            TITLE_SELECTOR: ".mdc-top-app-bar__title"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        var __values = this && this.__values || function(o) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
+            if (m) return m.call(o);
+            return {
+                next: function next() {
+                    if (o && i >= o.length) o = void 0;
+                    return {
+                        value: o && o[i++],
+                        done: !o
+                    };
+                }
+            };
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(6);
+        var MDCMenuSurfaceFoundation = function(_super) {
+            __extends(MDCMenuSurfaceFoundation, _super);
+            function MDCMenuSurfaceFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCMenuSurfaceFoundation.defaultAdapter, adapter)) || this;
+                _this.isOpen_ = false;
+                _this.isQuickOpen_ = false;
+                _this.isHoistedElement_ = false;
+                _this.isFixedPosition_ = false;
+                _this.openAnimationEndTimerId_ = 0;
+                _this.closeAnimationEndTimerId_ = 0;
+                _this.animationRequestId_ = 0;
+                _this.anchorCorner_ = constants_1.Corner.TOP_START;
+                _this.anchorMargin_ = {
+                    top: 0,
+                    right: 0,
+                    bottom: 0,
+                    left: 0
+                };
+                _this.position_ = {
+                    x: 0,
+                    y: 0
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCMenuSurfaceFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuSurfaceFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuSurfaceFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuSurfaceFoundation, "Corner", {
+                get: function get() {
+                    return constants_1.Corner;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuSurfaceFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        hasAnchor: function hasAnchor() {
+                            return false;
+                        },
+                        isElementInContainer: function isElementInContainer() {
+                            return false;
+                        },
+                        isFocused: function isFocused() {
+                            return false;
+                        },
+                        isFirstElementFocused: function isFirstElementFocused() {
+                            return false;
+                        },
+                        isLastElementFocused: function isLastElementFocused() {
+                            return false;
+                        },
+                        isRtl: function isRtl() {
+                            return false;
+                        },
+                        getInnerDimensions: function getInnerDimensions() {
+                            return {
+                                height: 0,
+                                width: 0
+                            };
+                        },
+                        getAnchorDimensions: function getAnchorDimensions() {
+                            return null;
+                        },
+                        getWindowDimensions: function getWindowDimensions() {
+                            return {
+                                height: 0,
+                                width: 0
+                            };
+                        },
+                        getBodyDimensions: function getBodyDimensions() {
+                            return {
+                                height: 0,
+                                width: 0
+                            };
+                        },
+                        getWindowScroll: function getWindowScroll() {
+                            return {
+                                x: 0,
+                                y: 0
+                            };
+                        },
+                        setPosition: function setPosition() {
+                            return undefined;
+                        },
+                        setMaxHeight: function setMaxHeight() {
+                            return undefined;
+                        },
+                        setTransformOrigin: function setTransformOrigin() {
+                            return undefined;
+                        },
+                        saveFocus: function saveFocus() {
+                            return undefined;
+                        },
+                        restoreFocus: function restoreFocus() {
+                            return undefined;
+                        },
+                        focusFirstElement: function focusFirstElement() {
+                            return undefined;
+                        },
+                        focusLastElement: function focusLastElement() {
+                            return undefined;
+                        },
+                        notifyClose: function notifyClose() {
+                            return undefined;
+                        },
+                        notifyOpen: function notifyOpen() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCMenuSurfaceFoundation.prototype.init = function() {
+                var _a = MDCMenuSurfaceFoundation.cssClasses, ROOT = _a.ROOT, OPEN = _a.OPEN;
+                if (!this.adapter_.hasClass(ROOT)) {
+                    throw new Error(ROOT + " class required in root element.");
+                }
+                if (this.adapter_.hasClass(OPEN)) {
+                    this.isOpen_ = true;
+                }
+            };
+            MDCMenuSurfaceFoundation.prototype.destroy = function() {
+                clearTimeout(this.openAnimationEndTimerId_);
+                clearTimeout(this.closeAnimationEndTimerId_);
+                cancelAnimationFrame(this.animationRequestId_);
+            };
+            MDCMenuSurfaceFoundation.prototype.setAnchorCorner = function(corner) {
+                this.anchorCorner_ = corner;
+            };
+            MDCMenuSurfaceFoundation.prototype.setAnchorMargin = function(margin) {
+                this.anchorMargin_.top = margin.top || 0;
+                this.anchorMargin_.right = margin.right || 0;
+                this.anchorMargin_.bottom = margin.bottom || 0;
+                this.anchorMargin_.left = margin.left || 0;
+            };
+            MDCMenuSurfaceFoundation.prototype.setIsHoisted = function(isHoisted) {
+                this.isHoistedElement_ = isHoisted;
+            };
+            MDCMenuSurfaceFoundation.prototype.setFixedPosition = function(isFixedPosition) {
+                this.isFixedPosition_ = isFixedPosition;
+            };
+            MDCMenuSurfaceFoundation.prototype.setAbsolutePosition = function(x, y) {
+                this.position_.x = this.isFinite_(x) ? x : 0;
+                this.position_.y = this.isFinite_(y) ? y : 0;
+            };
+            MDCMenuSurfaceFoundation.prototype.setQuickOpen = function(quickOpen) {
+                this.isQuickOpen_ = quickOpen;
+            };
+            MDCMenuSurfaceFoundation.prototype.isOpen = function() {
+                return this.isOpen_;
+            };
+            MDCMenuSurfaceFoundation.prototype.open = function() {
+                var _this = this;
+                this.adapter_.saveFocus();
+                if (!this.isQuickOpen_) {
+                    this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
+                }
+                this.animationRequestId_ = requestAnimationFrame(function() {
+                    _this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
+                    _this.dimensions_ = _this.adapter_.getInnerDimensions();
+                    _this.autoPosition_();
+                    if (_this.isQuickOpen_) {
+                        _this.adapter_.notifyOpen();
+                    } else {
+                        _this.openAnimationEndTimerId_ = setTimeout(function() {
+                            _this.openAnimationEndTimerId_ = 0;
+                            _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
+                            _this.adapter_.notifyOpen();
+                        }, constants_1.numbers.TRANSITION_OPEN_DURATION);
+                    }
+                });
+                this.isOpen_ = true;
+            };
+            MDCMenuSurfaceFoundation.prototype.close = function() {
+                var _this = this;
+                if (!this.isQuickOpen_) {
+                    this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
+                }
+                requestAnimationFrame(function() {
+                    _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
+                    if (_this.isQuickOpen_) {
+                        _this.adapter_.notifyClose();
+                    } else {
+                        _this.closeAnimationEndTimerId_ = setTimeout(function() {
+                            _this.closeAnimationEndTimerId_ = 0;
+                            _this.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
+                            _this.adapter_.notifyClose();
+                        }, constants_1.numbers.TRANSITION_CLOSE_DURATION);
+                    }
+                });
+                this.isOpen_ = false;
+                this.maybeRestoreFocus_();
+            };
+            MDCMenuSurfaceFoundation.prototype.handleBodyClick = function(evt) {
+                var el = evt.target;
+                if (this.adapter_.isElementInContainer(el)) {
+                    return;
+                }
+                this.close();
+            };
+            MDCMenuSurfaceFoundation.prototype.handleKeydown = function(evt) {
+                var keyCode = evt.keyCode, key = evt.key, shiftKey = evt.shiftKey;
+                var isEscape = key === "Escape" || keyCode === 27;
+                var isTab = key === "Tab" || keyCode === 9;
+                if (isEscape) {
+                    this.close();
+                } else if (isTab) {
+                    if (this.adapter_.isLastElementFocused() && !shiftKey) {
+                        this.adapter_.focusFirstElement();
+                        evt.preventDefault();
+                    } else if (this.adapter_.isFirstElementFocused() && shiftKey) {
+                        this.adapter_.focusLastElement();
+                        evt.preventDefault();
+                    }
+                }
+            };
+            MDCMenuSurfaceFoundation.prototype.autoPosition_ = function() {
+                var _a;
+                this.measurements_ = this.getAutoLayoutMeasurements_();
+                var corner = this.getOriginCorner_();
+                var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);
+                var verticalAlignment = this.hasBit_(corner, constants_1.CornerBit.BOTTOM) ? "bottom" : "top";
+                var horizontalAlignment = this.hasBit_(corner, constants_1.CornerBit.RIGHT) ? "right" : "left";
+                var horizontalOffset = this.getHorizontalOriginOffset_(corner);
+                var verticalOffset = this.getVerticalOriginOffset_(corner);
+                var _b = this.measurements_, anchorSize = _b.anchorSize, surfaceSize = _b.surfaceSize;
+                var position = (_a = {}, _a[horizontalAlignment] = horizontalOffset, _a[verticalAlignment] = verticalOffset, 
+                _a);
+                if (anchorSize.width / surfaceSize.width > constants_1.numbers.ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {
+                    horizontalAlignment = "center";
+                }
+                if (this.isHoistedElement_ || this.isFixedPosition_) {
+                    this.adjustPositionForHoistedElement_(position);
+                }
+                this.adapter_.setTransformOrigin(horizontalAlignment + " " + verticalAlignment);
+                this.adapter_.setPosition(position);
+                this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + "px" : "");
+            };
+            MDCMenuSurfaceFoundation.prototype.getAutoLayoutMeasurements_ = function() {
+                var anchorRect = this.adapter_.getAnchorDimensions();
+                var bodySize = this.adapter_.getBodyDimensions();
+                var viewportSize = this.adapter_.getWindowDimensions();
+                var windowScroll = this.adapter_.getWindowScroll();
+                if (!anchorRect) {
+                    anchorRect = {
+                        top: this.position_.y,
+                        right: this.position_.x,
+                        bottom: this.position_.y,
+                        left: this.position_.x,
+                        width: 0,
+                        height: 0
+                    };
+                }
+                return {
+                    anchorSize: anchorRect,
+                    bodySize: bodySize,
+                    surfaceSize: this.dimensions_,
+                    viewportDistance: {
+                        top: anchorRect.top,
+                        right: viewportSize.width - anchorRect.right,
+                        bottom: viewportSize.height - anchorRect.bottom,
+                        left: anchorRect.left
+                    },
+                    viewportSize: viewportSize,
+                    windowScroll: windowScroll
+                };
+            };
+            MDCMenuSurfaceFoundation.prototype.getOriginCorner_ = function() {
+                var corner = constants_1.Corner.TOP_LEFT;
+                var _a = this.measurements_, viewportDistance = _a.viewportDistance, anchorSize = _a.anchorSize, surfaceSize = _a.surfaceSize;
+                var isBottomAligned = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);
+                var availableTop = isBottomAligned ? viewportDistance.top + anchorSize.height + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top;
+                var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorSize.height - this.anchorMargin_.top;
+                var topOverflow = surfaceSize.height - availableTop;
+                var bottomOverflow = surfaceSize.height - availableBottom;
+                if (bottomOverflow > 0 && topOverflow < bottomOverflow) {
+                    corner = this.setBit_(corner, constants_1.CornerBit.BOTTOM);
+                }
+                var isRtl = this.adapter_.isRtl();
+                var isFlipRtl = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.FLIP_RTL);
+                var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT);
+                var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl;
+                var availableLeft = isAlignedRight ? viewportDistance.left + anchorSize.width + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left;
+                var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorSize.width - this.anchorMargin_.left;
+                var leftOverflow = surfaceSize.width - availableLeft;
+                var rightOverflow = surfaceSize.width - availableRight;
+                if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) {
+                    corner = this.setBit_(corner, constants_1.CornerBit.RIGHT);
+                }
+                return corner;
+            };
+            MDCMenuSurfaceFoundation.prototype.getMenuSurfaceMaxHeight_ = function(corner) {
+                var viewportDistance = this.measurements_.viewportDistance;
+                var maxHeight = 0;
+                var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM);
+                var isBottomAnchored = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);
+                var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;
+                if (isBottomAligned) {
+                    maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE;
+                    if (!isBottomAnchored) {
+                        maxHeight += this.measurements_.anchorSize.height;
+                    }
+                } else {
+                    maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measurements_.anchorSize.height - MARGIN_TO_EDGE;
+                    if (isBottomAnchored) {
+                        maxHeight -= this.measurements_.anchorSize.height;
+                    }
+                }
+                return maxHeight;
+            };
+            MDCMenuSurfaceFoundation.prototype.getHorizontalOriginOffset_ = function(corner) {
+                var anchorSize = this.measurements_.anchorSize;
+                var isRightAligned = this.hasBit_(corner, constants_1.CornerBit.RIGHT);
+                var avoidHorizontalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.RIGHT);
+                if (isRightAligned) {
+                    var rightOffset = avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.left : this.anchorMargin_.right;
+                    if (this.isHoistedElement_ || this.isFixedPosition_) {
+                        return rightOffset - (this.measurements_.viewportSize.width - this.measurements_.bodySize.width);
+                    }
+                    return rightOffset;
+                }
+                return avoidHorizontalOverlap ? anchorSize.width - this.anchorMargin_.right : this.anchorMargin_.left;
+            };
+            MDCMenuSurfaceFoundation.prototype.getVerticalOriginOffset_ = function(corner) {
+                var anchorSize = this.measurements_.anchorSize;
+                var isBottomAligned = this.hasBit_(corner, constants_1.CornerBit.BOTTOM);
+                var avoidVerticalOverlap = this.hasBit_(this.anchorCorner_, constants_1.CornerBit.BOTTOM);
+                var y = 0;
+                if (isBottomAligned) {
+                    y = avoidVerticalOverlap ? anchorSize.height - this.anchorMargin_.top : -this.anchorMargin_.bottom;
+                } else {
+                    y = avoidVerticalOverlap ? anchorSize.height + this.anchorMargin_.bottom : this.anchorMargin_.top;
+                }
+                return y;
+            };
+            MDCMenuSurfaceFoundation.prototype.adjustPositionForHoistedElement_ = function(position) {
+                var e_1, _a;
+                var _b = this.measurements_, windowScroll = _b.windowScroll, viewportDistance = _b.viewportDistance;
+                var props = Object.keys(position);
+                try {
+                    for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {
+                        var prop = props_1_1.value;
+                        var value = position[prop] || 0;
+                        value += viewportDistance[prop];
+                        if (!this.isFixedPosition_) {
+                            if (prop === "top") {
+                                value += windowScroll.y;
+                            } else if (prop === "bottom") {
+                                value -= windowScroll.y;
+                            } else if (prop === "left") {
+                                value += windowScroll.x;
+                            } else {
+                                value -= windowScroll.x;
+                            }
+                        }
+                        position[prop] = value;
+                    }
+                } catch (e_1_1) {
+                    e_1 = {
+                        error: e_1_1
+                    };
+                } finally {
+                    try {
+                        if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);
+                    } finally {
+                        if (e_1) throw e_1.error;
+                    }
+                }
+            };
+            MDCMenuSurfaceFoundation.prototype.maybeRestoreFocus_ = function() {
+                var isRootFocused = this.adapter_.isFocused();
+                var childHasFocus = document.activeElement && this.adapter_.isElementInContainer(document.activeElement);
+                if (isRootFocused || childHasFocus) {
+                    this.adapter_.restoreFocus();
+                }
+            };
+            MDCMenuSurfaceFoundation.prototype.hasBit_ = function(corner, bit) {
+                return Boolean(corner & bit);
+            };
+            MDCMenuSurfaceFoundation.prototype.setBit_ = function(corner, bit) {
+                return corner | bit;
+            };
+            MDCMenuSurfaceFoundation.prototype.isFinite_ = function(num) {
+                return typeof num === "number" && isFinite(num);
+            };
+            return MDCMenuSurfaceFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCMenuSurfaceFoundation = MDCMenuSurfaceFoundation;
+        exports.default = MDCMenuSurfaceFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(144);
+        var MDCTabIndicatorFoundation = function(_super) {
+            __extends(MDCTabIndicatorFoundation, _super);
+            function MDCTabIndicatorFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCTabIndicatorFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCTabIndicatorFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabIndicatorFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabIndicatorFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        computeContentClientRect: function computeContentClientRect() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        setContentStyleProperty: function setContentStyleProperty() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTabIndicatorFoundation.prototype.computeContentClientRect = function() {
+                return this.adapter_.computeContentClientRect();
+            };
+            return MDCTabIndicatorFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTabIndicatorFoundation = MDCTabIndicatorFoundation;
+        exports.default = MDCTabIndicatorFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssPropertyNameMap = {
+            animation: {
+                prefixed: "-webkit-animation",
+                standard: "animation"
+            },
+            transform: {
+                prefixed: "-webkit-transform",
+                standard: "transform"
+            },
+            transition: {
+                prefixed: "-webkit-transition",
+                standard: "transition"
+            }
+        };
+        var jsEventTypeMap = {
+            animationend: {
+                cssProperty: "animation",
+                prefixed: "webkitAnimationEnd",
+                standard: "animationend"
+            },
+            animationiteration: {
+                cssProperty: "animation",
+                prefixed: "webkitAnimationIteration",
+                standard: "animationiteration"
+            },
+            animationstart: {
+                cssProperty: "animation",
+                prefixed: "webkitAnimationStart",
+                standard: "animationstart"
+            },
+            transitionend: {
+                cssProperty: "transition",
+                prefixed: "webkitTransitionEnd",
+                standard: "transitionend"
+            }
+        };
+        function isWindow(windowObj) {
+            return Boolean(windowObj.document) && typeof windowObj.document.createElement === "function";
+        }
+        function getCorrectPropertyName(windowObj, cssProperty) {
+            if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {
+                var el = windowObj.document.createElement("div");
+                var _a = cssPropertyNameMap[cssProperty], standard = _a.standard, prefixed = _a.prefixed;
+                var isStandard = standard in el.style;
+                return isStandard ? standard : prefixed;
+            }
+            return cssProperty;
+        }
+        exports.getCorrectPropertyName = getCorrectPropertyName;
+        function getCorrectEventName(windowObj, eventType) {
+            if (isWindow(windowObj) && eventType in jsEventTypeMap) {
+                var el = windowObj.document.createElement("div");
+                var _a = jsEventTypeMap[eventType], standard = _a.standard, prefixed = _a.prefixed, cssProperty = _a.cssProperty;
+                var isStandard = cssProperty in el.style;
+                return isStandard ? standard : prefixed;
+            }
+            return eventType;
         }
         }
-      };
-    }
-  }]);
-
-  return MDCRipple;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-/**
- * See Material Design spec for more details on when to use ripples.
- * https://material.io/guidelines/motion/choreography.html#choreography-creation
- * @record
- */
-
-
-var RippleCapableSurface = function RippleCapableSurface() {
-  _classCallCheck(this, RippleCapableSurface);
-};
-
-/** @protected {!Element} */
-
-
-RippleCapableSurface.prototype.root_;
-
-/**
- * Whether or not the ripple bleeds out of the bounds of the element.
- * @type {boolean|undefined}
- */
-RippleCapableSurface.prototype.unbounded;
-
-/**
- * Whether or not the ripple is attached to a disabled component.
- * @type {boolean|undefined}
- */
-RippleCapableSurface.prototype.disabled;
-
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectionControlState", function() { return MDCSelectionControlState; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectionControl", function() { return MDCSelectionControl; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_ripple_index__ = __webpack_require__(2);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @typedef {{
- *   checked: boolean,
- *   indeterminate: boolean,
- *   disabled: boolean,
- *   value: ?string
- * }}
- */
-var MDCSelectionControlState = void 0;
-
-/**
- * @record
- */
-
-var MDCSelectionControl = function () {
-  function MDCSelectionControl() {
-    _classCallCheck(this, MDCSelectionControl);
-  }
-
-  _createClass(MDCSelectionControl, [{
-    key: 'ripple',
-
-    /** @return {?MDCRipple} */
-    get: function get() {}
-  }]);
-
-  return MDCSelectionControl;
-}();
-
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCTabScrollerAnimation */
-/* unused harmony export MDCTabScrollerHorizontalEdges */
-/* unused harmony export MDCTabScrollerAdapter */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * MDCTabScrollerAnimation contains the values required for animating from the
- * current scroll position to the new scroll position. The "finalScrollPosition"
- * value represents the new scroll position while the "scrollDelta" value is the
- * corresponding transformation that is applied to the scroll content. Together,
- * they create the animation by first updating the scroll value then applying
- * the transformation and animating the transition. Both pieces are necessary
- * for the scroll animation to work. The values are used as-is by the tab
- * scroller animation method, ensuring that all logic for determining scroll
- * position or transformation is abstracted away from the animation method.
- * @typedef {{finalScrollPosition: number, scrollDelta: number}}
- */
-var MDCTabScrollerAnimation = void 0;
-
-/**
- * MDCTabScrollerHorizontalEdges represents the left and right edges of the
- * scroll content. These values vary depending on how scrolling in RTL is
- * implemented by the browser. One value is always 0 and one value is always
- * the max scrollable value as either a positive or negative integer.
- * @typedef {{left: number, right: number}}
- */
-var MDCTabScrollerHorizontalEdges = void 0;
-
-/**
- * Adapter for MDC Tab Scroller.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Tab  into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-
-var MDCTabScrollerAdapter = function () {
-  function MDCTabScrollerAdapter() {
-    _classCallCheck(this, MDCTabScrollerAdapter);
-  }
-
-  _createClass(MDCTabScrollerAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds the given className to the root element.
-     * @param {string} className The className to add
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes the given className from the root element.
-     * @param {string} className The className to remove
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Adds the given className to the scroll area element.
-     * @param {string} className The className to add
-     */
-
-  }, {
-    key: "addScrollAreaClass",
-    value: function addScrollAreaClass(className) {}
-
-    /**
-     * Returns whether the event target matches given className.
-     * @param {EventTarget} evtTarget The event target
-     * @param {string} selector The selector to check
-     * @return {boolean}
-     */
-
-  }, {
-    key: "eventTargetMatchesSelector",
-    value: function eventTargetMatchesSelector(evtTarget, selector) {}
-
-    /**
-     * Sets a style property of the area element to the passed value.
-     * @param {string} propName The style property name to set
-     * @param {string} value The style property value
-     */
-
-  }, {
-    key: "setScrollAreaStyleProperty",
-    value: function setScrollAreaStyleProperty(propName, value) {}
-
-    /**
-     * Sets a style property of the content element to the passed value.
-     * @param {string} propName The style property name to set
-     * @param {string} value The style property value
-     */
-
-  }, {
-    key: "setScrollContentStyleProperty",
-    value: function setScrollContentStyleProperty(propName, value) {}
-
-    /**
-     * Returns the scroll content element's computed style value of the given css property `propertyName`.
-     * We achieve this via `getComputedStyle(...).getPropertyValue(propertyName)`.
-     * @param {string} propertyName
-     * @return {string}
-     */
-
-  }, {
-    key: "getScrollContentStyleValue",
-    value: function getScrollContentStyleValue(propertyName) {}
-
-    /**
-     * Sets the scrollLeft value of the scroll area element to the passed value.
-     * @param {number} scrollLeft The new scrollLeft value
-     */
-
-  }, {
-    key: "setScrollAreaScrollLeft",
-    value: function setScrollAreaScrollLeft(scrollLeft) {}
-
-    /**
-     * Returns the scrollLeft value of the scroll area element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getScrollAreaScrollLeft",
-    value: function getScrollAreaScrollLeft() {}
-
-    /**
-     * Returns the offsetWidth of the scroll content element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getScrollContentOffsetWidth",
-    value: function getScrollContentOffsetWidth() {}
-
-    /**
-     * Returns the offsetWitdth of the scroll area element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getScrollAreaOffsetWidth",
-    value: function getScrollAreaOffsetWidth() {}
-
-    /**
-     * Returns the bounding client rect of the scroll area element.
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: "computeScrollAreaClientRect",
-    value: function computeScrollAreaClientRect() {}
-
-    /**
-     * Returns the bounding client rect of the scroll content element.
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: "computeScrollContentClientRect",
-    value: function computeScrollContentClientRect() {}
-
-    /**
-     * Returns the height of the browser's horizontal scrollbars (in px).
-     * @return {number}
-     */
-
-  }, {
-    key: "computeHorizontalScrollbarHeight",
-    value: function computeHorizontalScrollbarHeight() {}
-  }]);
-
-  return MDCTabScrollerAdapter;
-}();
-
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "supportsCssVariables", function() { return supportsCssVariables; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyPassive", function() { return applyPassive; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMatchesProperty", function() { return getMatchesProperty; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNormalizedEventCoords", function() { return getNormalizedEventCoords; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * Stores result from supportsCssVariables to avoid redundant processing to detect CSS custom variable support.
- * @private {boolean|undefined}
- */
-var supportsCssVariables_ = void 0;
-
-/**
- * Stores result from applyPassive to avoid redundant processing to detect passive event listener support.
- * @private {boolean|undefined}
- */
-var supportsPassive_ = void 0;
-
-/**
- * @param {!Window} windowObj
- * @return {boolean}
- */
-function detectEdgePseudoVarBug(windowObj) {
-  // Detect versions of Edge with buggy var() support
-  // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/
-  var document = windowObj.document;
-  var node = document.createElement('div');
-  node.className = 'mdc-ripple-surface--test-edge-var-bug';
-  document.body.appendChild(node);
-
-  // The bug exists if ::before style ends up propagating to the parent element.
-  // Additionally, getComputedStyle returns null in iframes with display: "none" in Firefox,
-  // but Firefox is known to support CSS custom properties correctly.
-  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397
-  var computedStyle = windowObj.getComputedStyle(node);
-  var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';
-  node.remove();
-  return hasPseudoVarBug;
-}
-
-/**
- * @param {!Window} windowObj
- * @param {boolean=} forceRefresh
- * @return {boolean|undefined}
- */
-
-function supportsCssVariables(windowObj) {
-  var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
-  var supportsCssVariables = supportsCssVariables_;
-  if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {
-    return supportsCssVariables;
-  }
-
-  var supportsFunctionPresent = windowObj.CSS && typeof windowObj.CSS.supports === 'function';
-  if (!supportsFunctionPresent) {
-    return;
-  }
-
-  var explicitlySupportsCssVars = windowObj.CSS.supports('--css-vars', 'yes');
-  // See: https://bugs.webkit.org/show_bug.cgi?id=154669
-  // See: README section on Safari
-  var weAreFeatureDetectingSafari10plus = windowObj.CSS.supports('(--css-vars: yes)') && windowObj.CSS.supports('color', '#00000000');
-
-  if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {
-    supportsCssVariables = !detectEdgePseudoVarBug(windowObj);
-  } else {
-    supportsCssVariables = false;
-  }
-
-  if (!forceRefresh) {
-    supportsCssVariables_ = supportsCssVariables;
-  }
-  return supportsCssVariables;
-}
-
-//
-/**
- * Determine whether the current browser supports passive event listeners, and if so, use them.
- * @param {!Window=} globalObj
- * @param {boolean=} forceRefresh
- * @return {boolean|!EventListenerOptions}
- */
-function applyPassive() {
-  var globalObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
-  var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
-  if (supportsPassive_ === undefined || forceRefresh) {
-    var isSupported = false;
-    try {
-      globalObj.document.addEventListener('test', null, { get passive() {
-          isSupported = true;
-          return isSupported;
-        } });
-    } catch (e) {}
-
-    supportsPassive_ = isSupported;
-  }
-
-  return supportsPassive_ ? /** @type {!EventListenerOptions} */{ passive: true } : false;
-}
-
-/**
- * @param {!Object} HTMLElementPrototype
- * @return {string}
- */
-function getMatchesProperty(HTMLElementPrototype) {
-  /**
-   * Order is important because we return the first existing method we find.
-   * Do not change the order of the items in the below array.
-   */
-  var matchesMethods = ['matches', 'webkitMatchesSelector', 'msMatchesSelector'];
-  var method = 'matches';
-  for (var i = 0; i < matchesMethods.length; i++) {
-    var matchesMethod = matchesMethods[i];
-    if (matchesMethod in HTMLElementPrototype) {
-      method = matchesMethod;
-      break;
-    }
-  }
-
-  return method;
-}
-
-/**
- * @param {!Event} ev
- * @param {{x: number, y: number}} pageOffset
- * @param {!ClientRect} clientRect
- * @return {{x: number, y: number}}
- */
-function getNormalizedEventCoords(ev, pageOffset, clientRect) {
-  var x = pageOffset.x,
-      y = pageOffset.y;
-
-  var documentX = x + clientRect.left;
-  var documentY = y + clientRect.top;
-
-  var normalizedX = void 0;
-  var normalizedY = void 0;
-  // Determine touch point relative to the ripple container.
-  if (ev.type === 'touchstart') {
-    ev = /** @type {!TouchEvent} */ev;
-    normalizedX = ev.changedTouches[0].pageX - documentX;
-    normalizedY = ev.changedTouches[0].pageY - documentY;
-  } else {
-    ev = /** @type {!MouseEvent} */ev;
-    normalizedX = ev.pageX - documentX;
-    normalizedY = ev.pageY - documentY;
-  }
-
-  return { x: normalizedX, y: normalizedY };
-}
-
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Top App Bar
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Top App Bar into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCTopAppBarAdapter = function () {
-  function MDCTopAppBarAdapter() {
-    _classCallCheck(this, MDCTopAppBarAdapter);
-  }
-
-  _createClass(MDCTopAppBarAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the root Element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root Element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns true if the root Element contains the given class.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Sets the specified inline style property on the root Element to the given value.
-     * @param {string} property
-     * @param {string} value
-     */
-
-  }, {
-    key: "setStyle",
-    value: function setStyle(property, value) {}
-
-    /**
-     * Gets the height of the top app bar.
-     * @return {number}
-     */
-
-  }, {
-    key: "getTopAppBarHeight",
-    value: function getTopAppBarHeight() {}
-
-    /**
-     * Registers an event handler on the navigation icon element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerNavigationIconInteractionHandler",
-    value: function registerNavigationIconInteractionHandler(type, handler) {}
-
-    /**
-     * Deregisters an event handler on the navigation icon element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterNavigationIconInteractionHandler",
-    value: function deregisterNavigationIconInteractionHandler(type, handler) {}
-
-    /**
-     * Emits an event when the navigation icon is clicked.
-     */
-
-  }, {
-    key: "notifyNavigationIconClicked",
-    value: function notifyNavigationIconClicked() {}
-
-    /** @param {function(!Event)} handler */
-
-  }, {
-    key: "registerScrollHandler",
-    value: function registerScrollHandler(handler) {}
-
-    /** @param {function(!Event)} handler */
-
-  }, {
-    key: "deregisterScrollHandler",
-    value: function deregisterScrollHandler(handler) {}
-
-    /** @param {function(!Event)} handler */
-
-  }, {
-    key: "registerResizeHandler",
-    value: function registerResizeHandler(handler) {}
-
-    /** @param {function(!Event)} handler */
-
-  }, {
-    key: "deregisterResizeHandler",
-    value: function deregisterResizeHandler(handler) {}
-
-    /** @return {number} */
-
-  }, {
-    key: "getViewportScrollY",
-    value: function getViewportScrollY() {}
-
-    /** @return {number} */
-
-  }, {
-    key: "getTotalActionItems",
-    value: function getTotalActionItems() {}
-  }]);
-
-  return MDCTopAppBarAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTopAppBarAdapter);
-
-/***/ }),
-/* 7 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  FIXED_CLASS: 'mdc-top-app-bar--fixed',
-  FIXED_SCROLLED_CLASS: 'mdc-top-app-bar--fixed-scrolled',
-  SHORT_CLASS: 'mdc-top-app-bar--short',
-  SHORT_HAS_ACTION_ITEM_CLASS: 'mdc-top-app-bar--short-has-action-item',
-  SHORT_COLLAPSED_CLASS: 'mdc-top-app-bar--short-collapsed'
-};
-
-/** @enum {number} */
-var numbers = {
-  DEBOUNCE_THROTTLE_RESIZE_TIME_MS: 100,
-  MAX_TOP_APP_BAR_HEIGHT: 128
-};
-
-/** @enum {string} */
-var strings = {
-  ACTION_ITEM_SELECTOR: '.mdc-top-app-bar__action-item',
-  NAVIGATION_EVENT: 'MDCTopAppBar:nav',
-  NAVIGATION_ICON_SELECTOR: '.mdc-top-app-bar__navigation-icon',
-  ROOT_SELECTOR: '.mdc-top-app-bar',
-  TITLE_SELECTOR: '.mdc-top-app-bar__title'
-};
-
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return matches; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * @fileoverview A "ponyfill" is a polyfill that doesn't modify the global prototype chain.
- * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.
- */
-
-/**
- * @param {!Element} element
- * @param {string} selector
- * @return {?Element}
- */
-function closest(element, selector) {
-  if (element.closest) {
-    return element.closest(selector);
-  }
-
-  var el = element;
-  while (el) {
-    if (matches(el, selector)) {
-      return el;
-    }
-    el = el.parentElement;
-  }
-  return null;
-}
-
-/**
- * @param {!Element} element
- * @param {string} selector
- * @return {boolean}
- */
-function matches(element, selector) {
-  var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;
-  return nativeMatches.call(element, selector);
-}
-
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFloatingLabel", function() { return MDCFloatingLabel; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(91);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFloatingLabelFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCFloatingLabelFoundation>}
- * @final
- */
-
-var MDCFloatingLabel = function (_MDCComponent) {
-  _inherits(MDCFloatingLabel, _MDCComponent);
-
-  function MDCFloatingLabel() {
-    _classCallCheck(this, MDCFloatingLabel);
-
-    return _possibleConstructorReturn(this, (MDCFloatingLabel.__proto__ || Object.getPrototypeOf(MDCFloatingLabel)).apply(this, arguments));
-  }
-
-  _createClass(MDCFloatingLabel, [{
-    key: 'shake',
-
-
-    /**
-     * Styles the label to produce the label shake for errors.
-     * @param {boolean} shouldShake styles the label to shake by adding shake class
-     * if true, otherwise will stop shaking by removing shake class.
-     */
-    value: function shake(shouldShake) {
-      this.foundation_.shake(shouldShake);
-    }
-
-    /**
-     * Styles label to float/dock.
-     * @param {boolean} shouldFloat styles the label to float by adding float class
-     * if true, otherwise docks the label by removing the float class.
-     */
-
-  }, {
-    key: 'float',
-    value: function float(shouldFloat) {
-      this.foundation_.float(shouldFloat);
-    }
-
-    /**
-     * @return {number}
-     */
-
-  }, {
-    key: 'getWidth',
-    value: function getWidth() {
-      return this.foundation_.getWidth();
-    }
-
-    /**
-     * @return {!MDCFloatingLabelFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        getWidth: function getWidth() {
-          return _this2.root_.scrollWidth;
-        },
-        registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
-          return _this2.root_.addEventListener(evtType, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
-          return _this2.root_.removeEventListener(evtType, handler);
-        }
-      });
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCFloatingLabel}
-     */
-    value: function attachTo(root) {
-      return new MDCFloatingLabel(root);
-    }
-  }]);
-
-  return MDCFloatingLabel;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCTabDimensions */
-/* unused harmony export MDCTabInteractionEventType */
-/* unused harmony export MDCTabAdapter */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * MDCTabDimensions provides details about the left and right edges of the Tab
- * root element and the Tab content element. These values are used to determine
- * the visual position of the Tab with respect it's parent container.
- * @typedef {{rootLeft: number, rootRight: number, contentLeft: number, contentRight: number}}
- */
-var MDCTabDimensions = void 0;
-
-/**
- * @typedef {{
- *   detail: {
- *     tabId: string,
- *   },
- *   bubbles: boolean,
- * }}
- */
-var MDCTabInteractionEventType = void 0;
-
-/**
- * Adapter for MDC Tab.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Tab  into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-
-var MDCTabAdapter = function () {
-  function MDCTabAdapter() {
-    _classCallCheck(this, MDCTabAdapter);
-  }
-
-  _createClass(MDCTabAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds the given className to the root element.
-     * @param {string} className The className to add
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes the given className from the root element.
-     * @param {string} className The className to remove
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns whether the root element has the given className.
-     * @param {string} className The className to remove
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Sets the given attrName of the root element to the given value.
-     * @param {string} attr The attribute name to set
-     * @param {string} value The value so give the attribute
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attr, value) {}
-
-    /**
-     * Activates the indicator element.
-     * @param {!ClientRect=} previousIndicatorClientRect The client rect of the previously activated indicator
-     */
-
-  }, {
-    key: "activateIndicator",
-    value: function activateIndicator(previousIndicatorClientRect) {}
-
-    /** Deactivates the indicator. */
-
-  }, {
-    key: "deactivateIndicator",
-    value: function deactivateIndicator() {}
-
-    /**
-     * Emits the MDCTab:interacted event for use by parent components
-     */
-
-  }, {
-    key: "notifyInteracted",
-    value: function notifyInteracted() {}
-
-    /**
-     * Returns the offsetLeft value of the root element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getOffsetLeft",
-    value: function getOffsetLeft() {}
-
-    /**
-     * Returns the offsetWidth value of the root element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getOffsetWidth",
-    value: function getOffsetWidth() {}
-
-    /**
-     * Returns the offsetLeft of the content element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getContentOffsetLeft",
-    value: function getContentOffsetLeft() {}
-
-    /**
-     * Returns the offsetWidth of the content element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getContentOffsetWidth",
-    value: function getContentOffsetWidth() {}
-
-    /**
-     * Applies focus to the root element
-     */
-
-  }, {
-    key: "focus",
-    value: function focus() {}
-  }]);
-
-  return MDCTabAdapter;
-}();
-
-
-
-/***/ }),
-/* 11 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(4);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @abstract
- */
-
-var MDCTabScrollerRTL = function () {
-  /** @param {!MDCTabScrollerAdapter} adapter */
-  function MDCTabScrollerRTL(adapter) {
-    _classCallCheck(this, MDCTabScrollerRTL);
-
-    /** @private */
-    this.adapter_ = adapter;
-  }
-
-  /**
-   * @param {number} translateX The current translateX position
-   * @return {number}
-   * @abstract
-   */
-
-
-  _createClass(MDCTabScrollerRTL, [{
-    key: 'getScrollPositionRTL',
-    value: function getScrollPositionRTL(translateX) {}
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     * @abstract
-     */
-
-  }, {
-    key: 'scrollToRTL',
-    value: function scrollToRTL(scrollX) {}
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     * @abstract
-     */
-
-  }, {
-    key: 'incrementScrollRTL',
-    value: function incrementScrollRTL(scrollX) {}
-
-    /**
-     * @param {number} scrollX The current scrollX position
-     * @param {number} translateX The current translateX position
-     * @return {number}
-     * @abstract
-     */
-
-  }, {
-    key: 'getAnimatingScrollPosition',
-    value: function getAnimatingScrollPosition(scrollX, translateX) {}
-  }]);
-
-  return MDCTabScrollerRTL;
-}();
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTL);
-
-/***/ }),
-/* 12 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(7);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(6);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_base_foundation__ = __webpack_require__(0);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTopAppBarAdapter>}
- */
-
-var MDCTopAppBarBaseFoundation = function (_MDCFoundation) {
-  _inherits(MDCTopAppBarBaseFoundation, _MDCFoundation);
-
-  _createClass(MDCTopAppBarBaseFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {number} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */];
-    }
-
-    /**
-     * {@see MDCTopAppBarAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCTopAppBarAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTopAppBarAdapter} */{
-          hasClass: function hasClass() /* className: string */{},
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          setStyle: function setStyle() /* property: string, value: string */{},
-          getTopAppBarHeight: function getTopAppBarHeight() {},
-          registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},
-          deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler() /* type: string, handler: EventListener */{},
-          notifyNavigationIconClicked: function notifyNavigationIconClicked() {},
-          registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},
-          deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},
-          registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
-          deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
-          getViewportScrollY: function getViewportScrollY() {
-            return (/* number */0
-            );
-          },
-          getTotalActionItems: function getTotalActionItems() {
-            return (/* number */0
-            );
-          }
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCTopAppBarAdapter} adapter
-     */
-
-  }]);
-
-  function MDCTopAppBarBaseFoundation( /** @type {!MDCTopAppBarAdapter} */adapter) {
-    _classCallCheck(this, MDCTopAppBarBaseFoundation);
-
-    var _this = _possibleConstructorReturn(this, (MDCTopAppBarBaseFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarBaseFoundation)).call(this, _extends(MDCTopAppBarBaseFoundation.defaultAdapter, adapter)));
-
-    _this.navClickHandler_ = function () {
-      return _this.adapter_.notifyNavigationIconClicked();
-    };
-
-    _this.scrollHandler_ = function () {};
-    return _this;
-  }
-
-  _createClass(MDCTopAppBarBaseFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.adapter_.registerNavigationIconInteractionHandler('click', this.navClickHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterNavigationIconInteractionHandler('click', this.navClickHandler_);
-    }
-  }, {
-    key: 'initScrollHandler',
-    value: function initScrollHandler() {
-      this.adapter_.registerScrollHandler(this.scrollHandler_);
-    }
-  }, {
-    key: 'destroyScrollHandler',
-    value: function destroyScrollHandler() {
-      this.adapter_.deregisterScrollHandler(this.scrollHandler_);
-    }
-  }]);
-
-  return MDCTopAppBarBaseFoundation;
-}(__WEBPACK_IMPORTED_MODULE_2__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTopAppBarBaseFoundation);
-
-/***/ }),
-/* 13 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return transformStyleProperties; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getCorrectEventName; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCorrectPropertyName; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * @typedef {{
- *   noPrefix: string,
- *   webkitPrefix: string,
- *   styleProperty: string
- * }}
- */
-var VendorPropertyMapType = void 0;
-
-/** @const {Object<string, !VendorPropertyMapType>} */
-var eventTypeMap = {
-  'animationstart': {
-    noPrefix: 'animationstart',
-    webkitPrefix: 'webkitAnimationStart',
-    styleProperty: 'animation'
-  },
-  'animationend': {
-    noPrefix: 'animationend',
-    webkitPrefix: 'webkitAnimationEnd',
-    styleProperty: 'animation'
-  },
-  'animationiteration': {
-    noPrefix: 'animationiteration',
-    webkitPrefix: 'webkitAnimationIteration',
-    styleProperty: 'animation'
-  },
-  'transitionend': {
-    noPrefix: 'transitionend',
-    webkitPrefix: 'webkitTransitionEnd',
-    styleProperty: 'transition'
-  }
-};
-
-/** @const {Object<string, !VendorPropertyMapType>} */
-var cssPropertyMap = {
-  'animation': {
-    noPrefix: 'animation',
-    webkitPrefix: '-webkit-animation'
-  },
-  'transform': {
-    noPrefix: 'transform',
-    webkitPrefix: '-webkit-transform'
-  },
-  'transition': {
-    noPrefix: 'transition',
-    webkitPrefix: '-webkit-transition'
-  }
-};
-
-/**
- * @param {!Object} windowObj
- * @return {boolean}
- */
-function hasProperShape(windowObj) {
-  return windowObj['document'] !== undefined && typeof windowObj['document']['createElement'] === 'function';
-}
-
-/**
- * @param {string} eventType
- * @return {boolean}
- */
-function eventFoundInMaps(eventType) {
-  return eventType in eventTypeMap || eventType in cssPropertyMap;
-}
-
-/**
- * @param {string} eventType
- * @param {!Object<string, !VendorPropertyMapType>} map
- * @param {!Element} el
- * @return {string}
- */
-function getJavaScriptEventName(eventType, map, el) {
-  return map[eventType].styleProperty in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;
-}
-
-/**
- * Helper function to determine browser prefix for CSS3 animation events
- * and property names.
- * @param {!Object} windowObj
- * @param {string} eventType
- * @return {string}
- */
-function getAnimationName(windowObj, eventType) {
-  if (!hasProperShape(windowObj) || !eventFoundInMaps(eventType)) {
-    return eventType;
-  }
-
-  var map = /** @type {!Object<string, !VendorPropertyMapType>} */eventType in eventTypeMap ? eventTypeMap : cssPropertyMap;
-  var el = windowObj['document']['createElement']('div');
-  var eventName = '';
-
-  if (map === eventTypeMap) {
-    eventName = getJavaScriptEventName(eventType, map, el);
-  } else {
-    eventName = map[eventType].noPrefix in el.style ? map[eventType].noPrefix : map[eventType].webkitPrefix;
-  }
-
-  return eventName;
-}
-
-// Public functions to access getAnimationName() for JavaScript events or CSS
-// property names.
-
-var transformStyleProperties = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'MSTransform'];
-
-/**
- * @param {!Object} windowObj
- * @param {string} eventType
- * @return {string}
- */
-function getCorrectEventName(windowObj, eventType) {
-  return getAnimationName(windowObj, eventType);
-}
-
-/**
- * @param {!Object} windowObj
- * @param {string} eventType
- * @return {string}
- */
-function getCorrectPropertyName(windowObj, eventType) {
-  return getAnimationName(windowObj, eventType);
-}
-
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCList", function() { return MDCList; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(15);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(38);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__ = __webpack_require__(8);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(39);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCListFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
- // eslint-disable-line no-unused-vars
-
-/**
- * @extends MDCComponent<!MDCListFoundation>
- */
-
-var MDCList = function (_MDCComponent) {
-  _inherits(MDCList, _MDCComponent);
-
-  /** @param {...?} args */
-  function MDCList() {
-    var _ref;
-
-    _classCallCheck(this, MDCList);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!Function} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCList.__proto__ || Object.getPrototypeOf(MDCList)).call.apply(_ref, [this].concat(args)));
-
-    _this.handleKeydown_;
-    /** @private {!Function} */
-    _this.handleClick_;
-    /** @private {!Function} */
-    _this.focusInEventListener_;
-    /** @private {!Function} */
-    _this.focusOutEventListener_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCList}
-   */
-
-
-  _createClass(MDCList, [{
-    key: 'destroy',
-    value: function destroy() {
-      this.root_.removeEventListener('keydown', this.handleKeydown_);
-      this.root_.removeEventListener('click', this.handleClick_);
-      this.root_.removeEventListener('focusin', this.focusInEventListener_);
-      this.root_.removeEventListener('focusout', this.focusOutEventListener_);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.handleClick_ = this.handleClickEvent_.bind(this);
-      this.handleKeydown_ = this.handleKeydownEvent_.bind(this);
-      this.focusInEventListener_ = this.handleFocusInEvent_.bind(this);
-      this.focusOutEventListener_ = this.handleFocusOutEvent_.bind(this);
-      this.root_.addEventListener('keydown', this.handleKeydown_);
-      this.root_.addEventListener('focusin', this.focusInEventListener_);
-      this.root_.addEventListener('focusout', this.focusOutEventListener_);
-      this.root_.addEventListener('click', this.handleClick_);
-      this.layout();
-      this.initializeListType();
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      var direction = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_ORIENTATION);
-      this.vertical = direction !== __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_ORIENTATION_HORIZONTAL;
-
-      // List items need to have at least tabindex=-1 to be focusable.
-      [].slice.call(this.root_.querySelectorAll('.mdc-list-item:not([tabindex])')).forEach(function (ele) {
-        ele.setAttribute('tabindex', -1);
-      });
-
-      // Child button/a elements are not tabbable until the list item is focused.
-      [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].FOCUSABLE_CHILD_ELEMENTS)).forEach(function (ele) {
-        return ele.setAttribute('tabindex', -1);
-      });
-
-      this.foundation_.layout();
-    }
-
-    /**
-     * Used to figure out which list item this event is targetting. Or returns -1 if
-     * there is no list item
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'getListItemIndex_',
-    value: function getListItemIndex_(evt) {
-      var eventTarget = /** @type {HTMLElement} */evt.target;
-      var index = -1;
-
-      // Find the first ancestor that is a list item or the list.
-      while (!eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS) && !eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].ROOT)) {
-        eventTarget = eventTarget.parentElement;
-      }
-
-      // Get the index of the element if it is a list item.
-      if (eventTarget.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS)) {
-        index = this.listElements.indexOf(eventTarget);
-      }
-
-      return index;
-    }
-
-    /**
-     * Used to figure out which element was clicked before sending the event to the foundation.
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleFocusInEvent_',
-    value: function handleFocusInEvent_(evt) {
-      var index = this.getListItemIndex_(evt);
-      this.foundation_.handleFocusIn(evt, index);
-    }
-
-    /**
-     * Used to figure out which element was clicked before sending the event to the foundation.
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleFocusOutEvent_',
-    value: function handleFocusOutEvent_(evt) {
-      var index = this.getListItemIndex_(evt);
-      this.foundation_.handleFocusOut(evt, index);
-    }
-
-    /**
-     * Used to figure out which element was focused when keydown event occurred before sending the event to the
-     * foundation.
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleKeydownEvent_',
-    value: function handleKeydownEvent_(evt) {
-      var index = this.getListItemIndex_(evt);
-
-      if (index >= 0) {
-        this.foundation_.handleKeydown(evt, evt.target.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_CLASS), index);
-      }
-    }
-
-    /**
-     * Used to figure out which element was clicked before sending the event to the foundation.
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleClickEvent_',
-    value: function handleClickEvent_(evt) {
-      var index = this.getListItemIndex_(evt);
-
-      // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.
-      var toggleCheckbox = !Object(__WEBPACK_IMPORTED_MODULE_3__material_dom_ponyfill__["matches"])( /** @type {!Element} */evt.target, __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_RADIO_SELECTOR);
-      this.foundation_.handleClick(index, toggleCheckbox);
-    }
-
-    /**
-     * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.
-     */
-
-  }, {
-    key: 'initializeListType',
-    value: function initializeListType() {
-      var _this2 = this;
-
-      var checkboxListItems = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_ROLE_CHECKBOX_SELECTOR);
-      var singleSelectedListItem = this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS + ',\n        .' + __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_SELECTED_CLASS);
-      var radioSelectedListItem = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_CHECKED_RADIO_SELECTOR);
-
-      if (checkboxListItems.length) {
-        var preselectedItems = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ARIA_CHECKED_CHECKBOX_SELECTOR);
-        this.selectedIndex = [].map.call(preselectedItems, function (listItem) {
-          return _this2.listElements.indexOf(listItem);
-        });
-      } else if (singleSelectedListItem) {
-        if (singleSelectedListItem.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS)) {
-          this.foundation_.setUseActivatedClass(true);
-        }
-
-        this.singleSelection = true;
-        this.selectedIndex = this.listElements.indexOf(singleSelectedListItem);
-      } else if (radioSelectedListItem) {
-        this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);
-      }
-    }
-
-    /** @param {boolean} value */
-
-  }, {
-    key: 'getDefaultFoundation',
-
-
-    /** @return {!MDCListFoundation} */
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]( /** @type {!MDCListAdapter} */_extends({
-        getListItemCount: function getListItemCount() {
-          return _this3.listElements.length;
-        },
-        getFocusedElementIndex: function getFocusedElementIndex() {
-          return _this3.listElements.indexOf(document.activeElement);
-        },
-        setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) {
-          var element = _this3.listElements[index];
-          if (element) {
-            element.setAttribute(attr, value);
-          }
-        },
-        removeAttributeForElementIndex: function removeAttributeForElementIndex(index, attr) {
-          var element = _this3.listElements[index];
-          if (element) {
-            element.removeAttribute(attr);
-          }
-        },
-        addClassForElementIndex: function addClassForElementIndex(index, className) {
-          var element = _this3.listElements[index];
-          if (element) {
-            element.classList.add(className);
-          }
-        },
-        removeClassForElementIndex: function removeClassForElementIndex(index, className) {
-          var element = _this3.listElements[index];
-          if (element) {
-            element.classList.remove(className);
-          }
-        },
-        focusItemAtIndex: function focusItemAtIndex(index) {
-          var element = _this3.listElements[index];
-          if (element) {
-            element.focus();
-          }
-        },
-        setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {
-          var element = _this3.listElements[listItemIndex];
-          var listItemChildren = [].slice.call(element.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));
-          listItemChildren.forEach(function (ele) {
-            return ele.setAttribute('tabindex', tabIndexValue);
-          });
-        },
-        hasCheckboxAtIndex: function hasCheckboxAtIndex(index) {
-          var listItem = _this3.listElements[index];
-          return !!listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_SELECTOR);
-        },
-        hasRadioAtIndex: function hasRadioAtIndex(index) {
-          var listItem = _this3.listElements[index];
-          return !!listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].RADIO_SELECTOR);
-        },
-        isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex(index) {
-          var listItem = _this3.listElements[index];
-          var toggleEl = listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_SELECTOR);
-          return toggleEl.checked;
-        },
-        setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {
-          var listItem = _this3.listElements[index];
-          var toggleEl = listItem.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKBOX_RADIO_SELECTOR);
-          toggleEl.checked = isChecked;
-
-          var event = document.createEvent('Event');
-          event.initEvent('change', true, true);
-          toggleEl.dispatchEvent(event);
-        },
-        notifyAction: function notifyAction(index) {
-          _this3.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ACTION_EVENT, index, /** shouldBubble */true);
-        },
-        isFocusInsideList: function isFocusInsideList() {
-          return _this3.root_.contains(document.activeElement);
-        }
-      }));
-    }
-  }, {
-    key: 'vertical',
-    set: function set(value) {
-      this.foundation_.setVerticalOrientation(value);
-    }
-
-    /** @return Array<!Element>*/
-
-  }, {
-    key: 'listElements',
-    get: function get() {
-      return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].ENABLED_ITEMS_SELECTOR));
-    }
-
-    /** @param {boolean} value */
-
-  }, {
-    key: 'wrapFocus',
-    set: function set(value) {
-      this.foundation_.setWrapFocus(value);
-    }
-
-    /** @param {boolean} isSingleSelectionList */
-
-  }, {
-    key: 'singleSelection',
-    set: function set(isSingleSelectionList) {
-      this.foundation_.setSingleSelection(isSingleSelectionList);
-    }
-
-    /** @return {!Index} */
-
-  }, {
-    key: 'selectedIndex',
-    get: function get() {
-      return this.foundation_.getSelectedIndex();
-    }
-
-    /** @param {!Index} index */
-    ,
-    set: function set(index) {
-      this.foundation_.setSelectedIndex(index);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCList(root);
-    }
-  }]);
-
-  return MDCList;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(38);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(39);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
- // eslint-disable-line no-unused-vars
-
-var ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];
-
-var MDCListFoundation = function (_MDCFoundation) {
-  _inherits(MDCListFoundation, _MDCFoundation);
-
-  _createClass(MDCListFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /**
-     * {@see MDCListAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCListAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCListAdapter} */{
-          getListItemCount: function getListItemCount() {},
-          getFocusedElementIndex: function getFocusedElementIndex() {},
-          setAttributeForElementIndex: function setAttributeForElementIndex() {},
-          removeAttributeForElementIndex: function removeAttributeForElementIndex() {},
-          addClassForElementIndex: function addClassForElementIndex() {},
-          removeClassForElementIndex: function removeClassForElementIndex() {},
-          focusItemAtIndex: function focusItemAtIndex() {},
-          setTabIndexForListItemChildren: function setTabIndexForListItemChildren() {},
-          hasRadioAtIndex: function hasRadioAtIndex() {},
-          hasCheckboxAtIndex: function hasCheckboxAtIndex() {},
-          isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex() {},
-          setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex() {},
-          notifyAction: function notifyAction() {},
-          isFocusInsideList: function isFocusInsideList() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCListAdapter=} adapter
-     */
-
-  }]);
-
-  function MDCListFoundation(adapter) {
-    _classCallCheck(this, MDCListFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCListFoundation.__proto__ || Object.getPrototypeOf(MDCListFoundation)).call(this, _extends(MDCListFoundation.defaultAdapter, adapter)));
-
-    _this.wrapFocus_ = false;
-
-    /** @private {boolean} */
-    _this.isVertical_ = true;
-
-    /** @private {boolean} */
-    _this.isSingleSelectionList_ = false;
-
-    /** @private {!Index} */
-    _this.selectedIndex_ = -1;
-
-    /** @private {number} */
-    _this.focusedItemIndex_ = -1;
-
-    /** @private {boolean} */
-    _this.useActivatedClass_ = false;
-
-    /** @private {boolean} */
-    _this.isCheckboxList_ = false;
-
-    /** @private {boolean} */
-    _this.isRadioList_ = false;
-    return _this;
-  }
-
-  _createClass(MDCListFoundation, [{
-    key: 'layout',
-    value: function layout() {
-      if (this.adapter_.getListItemCount() === 0) return;
-
-      if (this.adapter_.hasCheckboxAtIndex(0)) {
-        this.isCheckboxList_ = true;
-      } else if (this.adapter_.hasRadioAtIndex(0)) {
-        this.isRadioList_ = true;
-      }
-    }
-
-    /**
-     * Sets the private wrapFocus_ variable.
-     * @param {boolean} value
-     */
-
-  }, {
-    key: 'setWrapFocus',
-    value: function setWrapFocus(value) {
-      this.wrapFocus_ = value;
-    }
-
-    /**
-     * Sets the isVertical_ private variable.
-     * @param {boolean} value
-     */
-
-  }, {
-    key: 'setVerticalOrientation',
-    value: function setVerticalOrientation(value) {
-      this.isVertical_ = value;
-    }
-
-    /**
-     * Sets the isSingleSelectionList_ private variable.
-     * @param {boolean} value
-     */
-
-  }, {
-    key: 'setSingleSelection',
-    value: function setSingleSelection(value) {
-      this.isSingleSelectionList_ = value;
-    }
-
-    /**
-     * Sets the useActivatedClass_ private variable.
-     * @param {boolean} useActivated
-     */
-
-  }, {
-    key: 'setUseActivatedClass',
-    value: function setUseActivatedClass(useActivated) {
-      this.useActivatedClass_ = useActivated;
-    }
-
-    /** @return {!Index} */
-
-  }, {
-    key: 'getSelectedIndex',
-    value: function getSelectedIndex() {
-      return this.selectedIndex_;
-    }
-
-    /** @param {!Index} index */
-
-  }, {
-    key: 'setSelectedIndex',
-    value: function setSelectedIndex(index) {
-      if (!this.isIndexValid_(index)) return;
-
-      if (this.isCheckboxList_) {
-        this.setCheckboxAtIndex_( /** @type {!Array<number>} */index);
-      } else if (this.isRadioList_) {
-        this.setRadioAtIndex_( /** @type {number} */index);
-      } else {
-        this.setSingleSelectionAtIndex_( /** @type {number} */index);
-      }
-    }
-
-    /**
-     * Focus in handler for the list items.
-     * @param evt
-     * @param {number} listItemIndex
-     */
-
-  }, {
-    key: 'handleFocusIn',
-    value: function handleFocusIn(evt, listItemIndex) {
-      if (listItemIndex >= 0) {
-        this.adapter_.setTabIndexForListItemChildren(listItemIndex, 0);
-      }
-    }
-
-    /**
-     * Focus out handler for the list items.
-     * @param {Event} evt
-     * @param {number} listItemIndex
-     */
-
-  }, {
-    key: 'handleFocusOut',
-    value: function handleFocusOut(evt, listItemIndex) {
-      var _this2 = this;
-
-      if (listItemIndex >= 0) {
-        this.adapter_.setTabIndexForListItemChildren(listItemIndex, -1);
-      }
-
-      /**
-       * Between Focusout & Focusin some browsers do not have focus on any element. Setting a delay to wait till the focus
-       * is moved to next element.
-       */
-      setTimeout(function () {
-        if (!_this2.adapter_.isFocusInsideList()) {
-          _this2.setTabindexToFirstSelectedItem_();
-        }
-      }, 0);
-    }
-
-    /**
-     * Key handler for the list.
-     * @param {Event} evt
-     * @param {boolean} isRootListItem
-     * @param {number} listItemIndex
-     */
-
-  }, {
-    key: 'handleKeydown',
-    value: function handleKeydown(evt, isRootListItem, listItemIndex) {
-      var arrowLeft = evt.key === 'ArrowLeft' || evt.keyCode === 37;
-      var arrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;
-      var arrowRight = evt.key === 'ArrowRight' || evt.keyCode === 39;
-      var arrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;
-      var isHome = evt.key === 'Home' || evt.keyCode === 36;
-      var isEnd = evt.key === 'End' || evt.keyCode === 35;
-      var isEnter = evt.key === 'Enter' || evt.keyCode === 13;
-      var isSpace = evt.key === 'Space' || evt.keyCode === 32;
-
-      var currentIndex = this.adapter_.getFocusedElementIndex();
-      var nextIndex = -1;
-      if (currentIndex === -1) {
-        currentIndex = listItemIndex;
-        if (currentIndex < 0) {
-          // If this event doesn't have a mdc-list-item ancestor from the
-          // current list (not from a sublist), return early.
-          return;
-        }
-      }
-
-      if (this.isVertical_ && arrowDown || !this.isVertical_ && arrowRight) {
-        this.preventDefaultEvent_(evt);
-        nextIndex = this.focusNextElement(currentIndex);
-      } else if (this.isVertical_ && arrowUp || !this.isVertical_ && arrowLeft) {
-        this.preventDefaultEvent_(evt);
-        nextIndex = this.focusPrevElement(currentIndex);
-      } else if (isHome) {
-        this.preventDefaultEvent_(evt);
-        nextIndex = this.focusFirstElement();
-      } else if (isEnd) {
-        this.preventDefaultEvent_(evt);
-        nextIndex = this.focusLastElement();
-      } else if (isEnter || isSpace) {
-        if (isRootListItem) {
-          // Return early if enter key is pressed on anchor element which triggers synthetic MouseEvent event.
-          if (evt.target.tagName === 'A' && isEnter) return;
-          this.preventDefaultEvent_(evt);
-
-          if (this.isSelectableList_()) {
-            this.setSelectedIndexOnAction_(currentIndex);
-          }
-
-          this.adapter_.notifyAction(currentIndex);
-        }
-      }
-
-      this.focusedItemIndex_ = currentIndex;
-
-      if (nextIndex >= 0) {
-        this.setTabindexAtIndex_(nextIndex);
-        this.focusedItemIndex_ = nextIndex;
-      }
-    }
-
-    /**
-     * Click handler for the list.
-     * @param {number} index
-     * @param {boolean} toggleCheckbox
-     */
-
-  }, {
-    key: 'handleClick',
-    value: function handleClick(index, toggleCheckbox) {
-      if (index === -1) return;
-
-      if (this.isSelectableList_()) {
-        this.setSelectedIndexOnAction_(index, toggleCheckbox);
-      }
-
-      this.adapter_.notifyAction(index);
-
-      this.setTabindexAtIndex_(index);
-      this.focusedItemIndex_ = index;
-    }
-
-    /**
-     * Ensures that preventDefault is only called if the containing element doesn't
-     * consume the event, and it will cause an unintended scroll.
-     * @param {Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'preventDefaultEvent_',
-    value: function preventDefaultEvent_(evt) {
-      var tagName = ('' + evt.target.tagName).toLowerCase();
-      if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {
-        evt.preventDefault();
-      }
-    }
-
-    /**
-     * Focuses the next element on the list.
-     * @param {number} index
-     * @return {number}
-     */
-
-  }, {
-    key: 'focusNextElement',
-    value: function focusNextElement(index) {
-      var count = this.adapter_.getListItemCount();
-      var nextIndex = index + 1;
-      if (nextIndex >= count) {
-        if (this.wrapFocus_) {
-          nextIndex = 0;
-        } else {
-          // Return early because last item is already focused.
-          return index;
-        }
-      }
-      this.adapter_.focusItemAtIndex(nextIndex);
-
-      return nextIndex;
-    }
-
-    /**
-     * Focuses the previous element on the list.
-     * @param {number} index
-     * @return {number}
-     */
-
-  }, {
-    key: 'focusPrevElement',
-    value: function focusPrevElement(index) {
-      var prevIndex = index - 1;
-      if (prevIndex < 0) {
-        if (this.wrapFocus_) {
-          prevIndex = this.adapter_.getListItemCount() - 1;
-        } else {
-          // Return early because first item is already focused.
-          return index;
-        }
-      }
-      this.adapter_.focusItemAtIndex(prevIndex);
-
-      return prevIndex;
-    }
-
-    /**
-     * @return {number}
-     */
-
-  }, {
-    key: 'focusFirstElement',
-    value: function focusFirstElement() {
-      this.adapter_.focusItemAtIndex(0);
-      return 0;
-    }
-
-    /**
-     * @return {number}
-     */
-
-  }, {
-    key: 'focusLastElement',
-    value: function focusLastElement() {
-      var lastIndex = this.adapter_.getListItemCount() - 1;
-      this.adapter_.focusItemAtIndex(lastIndex);
-      return lastIndex;
-    }
-
-    /**
-     * @param {number} index
-     * @private
-     */
-
-  }, {
-    key: 'setSingleSelectionAtIndex_',
-    value: function setSingleSelectionAtIndex_(index) {
-      var selectedClassName = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LIST_ITEM_SELECTED_CLASS;
-      if (this.useActivatedClass_) {
-        selectedClassName = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LIST_ITEM_ACTIVATED_CLASS;
-      }
-
-      if (this.selectedIndex_ >= 0 && this.selectedIndex_ !== index) {
-        this.adapter_.removeClassForElementIndex(this.selectedIndex_, selectedClassName);
-        this.adapter_.setAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'false');
-      }
-
-      this.adapter_.addClassForElementIndex(index, selectedClassName);
-      this.adapter_.setAttributeForElementIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'true');
-
-      this.selectedIndex_ = index;
-    }
-
-    /**
-     * Toggles radio at give index. Radio doesn't change the checked state if it is already checked.
-     * @param {number} index
-     * @private
-     */
-
-  }, {
-    key: 'setRadioAtIndex_',
-    value: function setRadioAtIndex_(index) {
-      this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, true);
-
-      if (this.selectedIndex_ >= 0) {
-        this.adapter_.setAttributeForElementIndex(this.selectedIndex_, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_CHECKED, 'false');
-      }
-
-      this.adapter_.setAttributeForElementIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_CHECKED, 'true');
-
-      this.selectedIndex_ = index;
-    }
-
-    /**
-     * @param {!Array<number>} index
-     * @private
-     */
-
-  }, {
-    key: 'setCheckboxAtIndex_',
-    value: function setCheckboxAtIndex_(index) {
-      for (var i = 0; i < this.adapter_.getListItemCount(); i++) {
-        var isChecked = false;
-        if (index.indexOf(i) >= 0) {
-          isChecked = true;
-        }
-
-        this.adapter_.setCheckedCheckboxOrRadioAtIndex(i, isChecked);
-        this.adapter_.setAttributeForElementIndex(i, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_CHECKED, isChecked ? 'true' : 'false');
-      }
-
-      this.selectedIndex_ = index;
-    }
-
-    /**
-     * @param {number} index
-     * @private
-     */
-
-  }, {
-    key: 'setTabindexAtIndex_',
-    value: function setTabindexAtIndex_(index) {
-      if (this.focusedItemIndex_ === -1 && index !== 0) {
-        // If no list item was selected set first list item's tabindex to -1.
-        // Generally, tabindex is set to 0 on first list item of list that has no preselected items.
-        this.adapter_.setAttributeForElementIndex(0, 'tabindex', -1);
-      } else if (this.focusedItemIndex_ >= 0 && this.focusedItemIndex_ !== index) {
-        this.adapter_.setAttributeForElementIndex(this.focusedItemIndex_, 'tabindex', -1);
-      }
-
-      this.adapter_.setAttributeForElementIndex(index, 'tabindex', 0);
-    }
-
-    /**
-     * @return {boolean} Return true if it is single selectin list, checkbox list or radio list.
-     * @private
-     */
-
-  }, {
-    key: 'isSelectableList_',
-    value: function isSelectableList_() {
-      return this.isSingleSelectionList_ || this.isCheckboxList_ || this.isRadioList_;
-    }
-
-    /** @private */
-
-  }, {
-    key: 'setTabindexToFirstSelectedItem_',
-    value: function setTabindexToFirstSelectedItem_() {
-      var targetIndex = 0;
-
-      if (this.isSelectableList_()) {
-        if (typeof this.selectedIndex_ === 'number' && this.selectedIndex_ !== -1) {
-          targetIndex = this.selectedIndex_;
-        } else if (this.selectedIndex_ instanceof Array && this.selectedIndex_.length > 0) {
-          targetIndex = this.selectedIndex_.reduce(function (currentIndex, minIndex) {
-            return Math.min(currentIndex, minIndex);
-          });
-        }
-      }
-
-      this.setTabindexAtIndex_(targetIndex);
-    }
-
-    /**
-     * @param {!Index} index
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isIndexValid_',
-    value: function isIndexValid_(index) {
-      var _this3 = this;
-
-      if (index instanceof Array) {
-        if (!this.isCheckboxList_) {
-          throw new Error('MDCListFoundation: Array of index is only supported for checkbox based list');
-        }
-
-        if (index.length === 0) {
-          return true;
-        } else {
-          return index.some(function (i) {
-            return _this3.isIndexInRange_(i);
-          });
-        }
-      } else if (typeof index === 'number') {
-        if (this.isCheckboxList_) {
-          throw new Error('MDCListFoundation: Expected array of index for checkbox based list but got number: ' + index);
-        }
-        return this.isIndexInRange_(index);
-      } else {
-        return false;
-      }
-    }
-
-    /**
-     * @param {number} index
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isIndexInRange_',
-    value: function isIndexInRange_(index) {
-      var listSize = this.adapter_.getListItemCount();
-      return index >= 0 && index < listSize;
-    }
-
-    /**
-     * @param {number} index
-     * @param {boolean=} toggleCheckbox
-     * @private
-     */
-
-  }, {
-    key: 'setSelectedIndexOnAction_',
-    value: function setSelectedIndexOnAction_(index) {
-      var toggleCheckbox = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
-
-      if (this.isCheckboxList_) {
-        this.toggleCheckboxAtIndex_(index, toggleCheckbox);
-      } else {
-        this.setSelectedIndex(index);
-      }
-    }
-
-    /**
-     * @param {number} index
-     * @param {boolean} toggleCheckbox
-     * @private
-     */
-
-  }, {
-    key: 'toggleCheckboxAtIndex_',
-    value: function toggleCheckboxAtIndex_(index, toggleCheckbox) {
-      var isChecked = this.adapter_.isCheckboxCheckedAtIndex(index);
-
-      if (toggleCheckbox) {
-        isChecked = !isChecked;
-        this.adapter_.setCheckedCheckboxOrRadioAtIndex(index, isChecked);
-      }
-
-      this.adapter_.setAttributeForElementIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_CHECKED, isChecked ? 'true' : 'false');
-
-      // If none of the checkbox items are selected and selectedIndex is not initialized then provide a default value.
-      if (this.selectedIndex_ === -1) {
-        this.selectedIndex_ = [];
-      }
-
-      if (isChecked) {
-        this.selectedIndex_.push(index);
-      } else {
-        this.selectedIndex_ = this.selectedIndex_.filter(function (i) {
-          return i !== index;
-        });
-      }
-    }
-  }]);
-
-  return MDCListFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCListFoundation);
-
-/***/ }),
-/* 16 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLineRipple", function() { return MDCLineRipple; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(111);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLineRippleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCLineRippleFoundation>}
- * @final
- */
-
-var MDCLineRipple = function (_MDCComponent) {
-  _inherits(MDCLineRipple, _MDCComponent);
-
-  function MDCLineRipple() {
-    _classCallCheck(this, MDCLineRipple);
-
-    return _possibleConstructorReturn(this, (MDCLineRipple.__proto__ || Object.getPrototypeOf(MDCLineRipple)).apply(this, arguments));
-  }
-
-  _createClass(MDCLineRipple, [{
-    key: 'activate',
-
-
-    /**
-     * Activates the line ripple
-     */
-    value: function activate() {
-      this.foundation_.activate();
-    }
-
-    /**
-     * Deactivates the line ripple
-     */
-
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.foundation_.deactivate();
-    }
-
-    /**
-     * Sets the transform origin given a user's click location. The `rippleCenter` is the
-     * x-coordinate of the middle of the ripple.
-     * @param {number} xCoordinate
-     */
-
-  }, {
-    key: 'setRippleCenter',
-    value: function setRippleCenter(xCoordinate) {
-      this.foundation_.setRippleCenter(xCoordinate);
-    }
-
-    /**
-     * @return {!MDCLineRippleFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCLineRippleAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        setStyle: function setStyle(propertyName, value) {
-          return _this2.root_.style[propertyName] = value;
-        },
-        registerEventHandler: function registerEventHandler(evtType, handler) {
-          return _this2.root_.addEventListener(evtType, handler);
-        },
-        deregisterEventHandler: function deregisterEventHandler(evtType, handler) {
-          return _this2.root_.removeEventListener(evtType, handler);
-        }
-      }));
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCLineRipple}
-     */
-    value: function attachTo(root) {
-      return new MDCLineRipple(root);
-    }
-  }]);
-
-  return MDCLineRipple;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-menu',
-  MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',
-  MENU_SELECTION_GROUP: 'mdc-menu__selection-group'
-};
-
-/** @enum {string} */
-var strings = {
-  SELECTED_EVENT: 'MDCMenu:selected',
-  ARIA_SELECTED_ATTR: 'aria-selected',
-  LIST_SELECTOR: '.mdc-list',
-  CHECKBOX_SELECTOR: 'input[type="checkbox"]'
-};
-
-
-
-/***/ }),
-/* 18 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return MDCMenuSurfaceFoundation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnchorMargin; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(44);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(19);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * @typedef {{
- *   top: number,
- *   right: number,
- *   bottom: number,
- *   left: number
- * }}
- */
-var AnchorMargin = void 0;
-
-/* eslint-disable no-unused-vars */
-/**
- * @typedef {{
- *   viewport: { width: number, height: number },
- *   viewportDistance: {top: number, right: number, bottom: number, left: number},
- *   anchorHeight: number,
- *   anchorWidth: number,
- *   surfaceHeight: number,
- *   surfaceWidth: number,
- *   bodyDimensions,
- *   windowScroll,
- * }}
- */
-var AutoLayoutMeasurements = void 0;
-/* eslint-enable no-unused-vars */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCMenuSurfaceAdapter>}
- */
-
-var MDCMenuSurfaceFoundation = function (_MDCFoundation) {
-  _inherits(MDCMenuSurfaceFoundation, _MDCFoundation);
-
-  _createClass(MDCMenuSurfaceFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum{cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* cssClasses */];
-    }
-
-    /** @return enum{string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["e" /* strings */];
-    }
-
-    /** @return enum {number} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */];
-    }
-
-    /** @return enum{number} */
-
-  }, {
-    key: 'Corner',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */];
-    }
-
-    /**
-     * {@see MDCMenuSurfaceAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCMenuSurfaceAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCMenuSurfaceAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {
-            return false;
-          },
-          hasAnchor: function hasAnchor() {
-            return false;
-          },
-          notifyClose: function notifyClose() {},
-          notifyOpen: function notifyOpen() {},
-          isElementInContainer: function isElementInContainer() {
-            return false;
-          },
-          isRtl: function isRtl() {
-            return false;
-          },
-          setTransformOrigin: function setTransformOrigin() {},
-          isFocused: function isFocused() {
-            return false;
-          },
-          saveFocus: function saveFocus() {},
-          restoreFocus: function restoreFocus() {},
-          isFirstElementFocused: function isFirstElementFocused() {},
-          isLastElementFocused: function isLastElementFocused() {},
-          focusFirstElement: function focusFirstElement() {},
-          focusLastElement: function focusLastElement() {},
-          getInnerDimensions: function getInnerDimensions() {
-            return {};
-          },
-          getAnchorDimensions: function getAnchorDimensions() {
-            return {};
-          },
-          getWindowDimensions: function getWindowDimensions() {
-            return {};
-          },
-          getBodyDimensions: function getBodyDimensions() {
-            return {};
-          },
-          getWindowScroll: function getWindowScroll() {
-            return {};
-          },
-          setPosition: function setPosition() {},
-          setMaxHeight: function setMaxHeight() {}
-        }
-      );
-    }
-
-    /** @param {!MDCMenuSurfaceAdapter} adapter */
-
-  }]);
-
-  function MDCMenuSurfaceFoundation(adapter) {
-    _classCallCheck(this, MDCMenuSurfaceFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCMenuSurfaceFoundation.__proto__ || Object.getPrototypeOf(MDCMenuSurfaceFoundation)).call(this, _extends(MDCMenuSurfaceFoundation.defaultAdapter, adapter)));
-
-    _this.isOpen_ = false;
-    /** @private {number} */
-    _this.openAnimationEndTimerId_ = 0;
-    /** @private {number} */
-    _this.closeAnimationEndTimerId_ = 0;
-    /** @private {number} */
-    _this.animationRequestId_ = 0;
-    /** @private {!{ width: number, height: number }} */
-    _this.dimensions_;
-    /** @private {!Corner} */
-    _this.anchorCorner_ = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */].TOP_START;
-    /** @private {!AnchorMargin} */
-    _this.anchorMargin_ = { top: 0, right: 0, bottom: 0, left: 0 };
-    /** @private {?AutoLayoutMeasurements} */
-    _this.measures_ = null;
-    /** @private {boolean} */
-    _this.quickOpen_ = false;
-    /** @private {boolean} */
-    _this.hoistedElement_ = false;
-    /** @private {boolean} */
-    _this.isFixedPosition_ = false;
-    /** @private {!{x: number, y: number}} */
-    _this.position_ = { x: 0, y: 0 };
-    return _this;
-  }
-
-  _createClass(MDCMenuSurfaceFoundation, [{
-    key: 'init',
-    value: function init() {
-      var _MDCMenuSurfaceFounda = MDCMenuSurfaceFoundation.cssClasses,
-          ROOT = _MDCMenuSurfaceFounda.ROOT,
-          OPEN = _MDCMenuSurfaceFounda.OPEN;
-
-
-      if (!this.adapter_.hasClass(ROOT)) {
-        throw new Error(ROOT + ' class required in root element.');
-      }
-
-      if (this.adapter_.hasClass(OPEN)) {
-        this.isOpen_ = true;
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      clearTimeout(this.openAnimationEndTimerId_);
-      clearTimeout(this.closeAnimationEndTimerId_);
-      // Cancel any currently running animations.
-      cancelAnimationFrame(this.animationRequestId_);
-    }
-
-    /**
-     * @param {!Corner} corner Default anchor corner alignment of top-left menu surface corner.
-     */
-
-  }, {
-    key: 'setAnchorCorner',
-    value: function setAnchorCorner(corner) {
-      this.anchorCorner_ = corner;
-    }
-
-    /**
-     * @param {!AnchorMargin} margin set of margin values from anchor.
-     */
-
-  }, {
-    key: 'setAnchorMargin',
-    value: function setAnchorMargin(margin) {
-      this.anchorMargin_.top = typeof margin.top === 'number' ? margin.top : 0;
-      this.anchorMargin_.right = typeof margin.right === 'number' ? margin.right : 0;
-      this.anchorMargin_.bottom = typeof margin.bottom === 'number' ? margin.bottom : 0;
-      this.anchorMargin_.left = typeof margin.left === 'number' ? margin.left : 0;
-    }
-
-    /**
-     * Used to indicate if the menu-surface is hoisted to the body.
-     * @param {boolean} isHoisted
-     */
-
-  }, {
-    key: 'setIsHoisted',
-    value: function setIsHoisted(isHoisted) {
-      this.hoistedElement_ = isHoisted;
-    }
-
-    /**
-     * Used to set the menu-surface calculations based on a fixed position menu.
-     * @param {boolean} isFixedPosition
-     */
-
-  }, {
-    key: 'setFixedPosition',
-    value: function setFixedPosition(isFixedPosition) {
-      this.isFixedPosition_ = isFixedPosition;
-    }
-
-    /**
-     * Sets the menu-surface position on the page.
-     * @param {number} x
-     * @param {number} y
-     */
-
-  }, {
-    key: 'setAbsolutePosition',
-    value: function setAbsolutePosition(x, y) {
-      this.position_.x = this.typeCheckisFinite_(x) ? x : 0;
-      this.position_.y = this.typeCheckisFinite_(y) ? y : 0;
-    }
-
-    /** @param {boolean} quickOpen */
-
-  }, {
-    key: 'setQuickOpen',
-    value: function setQuickOpen(quickOpen) {
-      this.quickOpen_ = quickOpen;
-    }
-
-    /**
-     * Handle clicks and close if not within menu-surface element.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleBodyClick',
-    value: function handleBodyClick(evt) {
-      var el = evt.target;
-
-      if (this.adapter_.isElementInContainer(el)) {
-        return;
-      }
-
-      this.close();
-    }
-  }, {
-    key: 'handleKeydown',
-
-
-    /**
-     * Handle keys that close the surface.
-     * @param {!Event} evt
-     */
-    value: function handleKeydown(evt) {
-      var keyCode = evt.keyCode,
-          key = evt.key,
-          shiftKey = evt.shiftKey;
-
-
-      var isEscape = key === 'Escape' || keyCode === 27;
-      var isTab = key === 'Tab' || keyCode === 9;
-
-      if (isEscape) {
-        this.close();
-      } else if (isTab) {
-        if (this.adapter_.isLastElementFocused() && !shiftKey) {
-          this.adapter_.focusFirstElement();
-          evt.preventDefault();
-        } else if (this.adapter_.isFirstElementFocused() && shiftKey) {
-          this.adapter_.focusLastElement();
-          evt.preventDefault();
-        }
-      }
-    }
-
-    /**
-     * @return {!AutoLayoutMeasurements} Measurements used to position menu surface popup.
-     */
-
-  }, {
-    key: 'getAutoLayoutMeasurements_',
-    value: function getAutoLayoutMeasurements_() {
-      var anchorRect = this.adapter_.getAnchorDimensions();
-      var viewport = this.adapter_.getWindowDimensions();
-      var bodyDimensions = this.adapter_.getBodyDimensions();
-      var windowScroll = this.adapter_.getWindowScroll();
-
-      if (!anchorRect) {
-        anchorRect = /** @type {ClientRect} */{
-          x: this.position_.x,
-          y: this.position_.y,
-          top: this.position_.y,
-          bottom: this.position_.y,
-          left: this.position_.x,
-          right: this.position_.x,
-          height: 0,
-          width: 0
-        };
-      }
-
-      return {
-        viewport: viewport,
-        bodyDimensions: bodyDimensions,
-        windowScroll: windowScroll,
-        viewportDistance: {
-          top: anchorRect.top,
-          right: viewport.width - anchorRect.right,
-          left: anchorRect.left,
-          bottom: viewport.height - anchorRect.bottom
-        },
-        anchorHeight: anchorRect.height,
-        anchorWidth: anchorRect.width,
-        surfaceHeight: this.dimensions_.height,
-        surfaceWidth: this.dimensions_.width
-      };
-    }
-
-    /**
-     * Computes the corner of the anchor from which to animate and position the menu surface.
-     * @return {!Corner}
-     * @private
-     */
-
-  }, {
-    key: 'getOriginCorner_',
-    value: function getOriginCorner_() {
-      // Defaults: open from the top left.
-      var corner = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* Corner */].TOP_LEFT;
-
-      var _measures_ = this.measures_,
-          viewportDistance = _measures_.viewportDistance,
-          anchorHeight = _measures_.anchorHeight,
-          anchorWidth = _measures_.anchorWidth,
-          surfaceHeight = _measures_.surfaceHeight,
-          surfaceWidth = _measures_.surfaceWidth;
-
-      var isBottomAligned = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
-      var availableTop = isBottomAligned ? viewportDistance.top + anchorHeight + this.anchorMargin_.bottom : viewportDistance.top + this.anchorMargin_.top;
-      var availableBottom = isBottomAligned ? viewportDistance.bottom - this.anchorMargin_.bottom : viewportDistance.bottom + anchorHeight - this.anchorMargin_.top;
-
-      var topOverflow = surfaceHeight - availableTop;
-      var bottomOverflow = surfaceHeight - availableBottom;
-      if (bottomOverflow > 0 && topOverflow < bottomOverflow) {
-        corner |= __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM;
-      }
-
-      var isRtl = this.adapter_.isRtl();
-      var isFlipRtl = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].FLIP_RTL);
-      var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
-      var isAlignedRight = avoidHorizontalOverlap && !isRtl || !avoidHorizontalOverlap && isFlipRtl && isRtl;
-      var availableLeft = isAlignedRight ? viewportDistance.left + anchorWidth + this.anchorMargin_.right : viewportDistance.left + this.anchorMargin_.left;
-      var availableRight = isAlignedRight ? viewportDistance.right - this.anchorMargin_.right : viewportDistance.right + anchorWidth - this.anchorMargin_.left;
-
-      var leftOverflow = surfaceWidth - availableLeft;
-      var rightOverflow = surfaceWidth - availableRight;
-
-      if (leftOverflow < 0 && isAlignedRight && isRtl || avoidHorizontalOverlap && !isAlignedRight && leftOverflow < 0 || rightOverflow > 0 && leftOverflow < rightOverflow) {
-        corner |= __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT;
-      }
-
-      return (/** @type {Corner} */corner
-      );
-    }
-
-    /**
-     * @param {!Corner} corner Origin corner of the menu surface.
-     * @return {number} Horizontal offset of menu surface origin corner from corresponding anchor corner.
-     * @private
-     */
-
-  }, {
-    key: 'getHorizontalOriginOffset_',
-    value: function getHorizontalOriginOffset_(corner) {
-      var anchorWidth = this.measures_.anchorWidth;
-      // isRightAligned corresponds to using the 'right' property on the surface.
-
-      var isRightAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
-      var avoidHorizontalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT);
-
-      if (isRightAligned) {
-        var rightOffset = avoidHorizontalOverlap ? anchorWidth - this.anchorMargin_.left : this.anchorMargin_.right;
-
-        // For hoisted or fixed elements, adjust the offset by the difference between viewport width and body width so
-        // when we calculate the right value (`adjustPositionForHoistedElement_`) based on the element position,
-        // the right property is correct.
-        if (this.hoistedElement_ || this.isFixedPosition_) {
-          return rightOffset - (this.measures_.viewport.width - this.measures_.bodyDimensions.width);
-        }
-
-        return rightOffset;
-      }
-
-      return avoidHorizontalOverlap ? anchorWidth - this.anchorMargin_.right : this.anchorMargin_.left;
-    }
-
-    /**
-     * @param {!Corner} corner Origin corner of the menu surface.
-     * @return {number} Vertical offset of menu surface origin corner from corresponding anchor corner.
-     * @private
-     */
-
-  }, {
-    key: 'getVerticalOriginOffset_',
-    value: function getVerticalOriginOffset_(corner) {
-      var anchorHeight = this.measures_.anchorHeight;
-
-      var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
-      var avoidVerticalOverlap = Boolean(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
-      var y = 0;
-
-      if (isBottomAligned) {
-        y = avoidVerticalOverlap ? anchorHeight - this.anchorMargin_.top : -this.anchorMargin_.bottom;
-      } else {
-        y = avoidVerticalOverlap ? anchorHeight + this.anchorMargin_.bottom : this.anchorMargin_.top;
-      }
-      return y;
-    }
-
-    /**
-     * @param {!Corner} corner Origin corner of the menu surface.
-     * @return {number} Maximum height of the menu surface, based on available space. 0 indicates should not be set.
-     * @private
-     */
-
-  }, {
-    key: 'getMenuSurfaceMaxHeight_',
-    value: function getMenuSurfaceMaxHeight_(corner) {
-      var maxHeight = 0;
-      var viewportDistance = this.measures_.viewportDistance;
-
-      var isBottomAligned = Boolean(corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM);
-      var MARGIN_TO_EDGE = MDCMenuSurfaceFoundation.numbers.MARGIN_TO_EDGE;
-
-      // When maximum height is not specified, it is handled from css.
-
-      if (isBottomAligned) {
-        maxHeight = viewportDistance.top + this.anchorMargin_.top - MARGIN_TO_EDGE;
-        if (!(this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM)) {
-          maxHeight += this.measures_.anchorHeight;
-        }
-      } else {
-        maxHeight = viewportDistance.bottom - this.anchorMargin_.bottom + this.measures_.anchorHeight - MARGIN_TO_EDGE;
-        if (this.anchorCorner_ & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM) {
-          maxHeight -= this.measures_.anchorHeight;
-        }
-      }
-
-      return maxHeight;
-    }
-
-    /** @private */
-
-  }, {
-    key: 'autoPosition_',
-    value: function autoPosition_() {
-      var _position;
-
-      // Compute measurements for autoposition methods reuse.
-      this.measures_ = this.getAutoLayoutMeasurements_();
-
-      var corner = this.getOriginCorner_();
-      var maxMenuSurfaceHeight = this.getMenuSurfaceMaxHeight_(corner);
-      var verticalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].BOTTOM ? 'bottom' : 'top';
-      var horizontalAlignment = corner & __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* CornerBit */].RIGHT ? 'right' : 'left';
-      var horizontalOffset = this.getHorizontalOriginOffset_(corner);
-      var verticalOffset = this.getVerticalOriginOffset_(corner);
-      var position = (_position = {}, _defineProperty(_position, horizontalAlignment, horizontalOffset ? horizontalOffset : '0'), _defineProperty(_position, verticalAlignment, verticalOffset ? verticalOffset : '0'), _position);
-      var _measures_2 = this.measures_,
-          anchorWidth = _measures_2.anchorWidth,
-          surfaceWidth = _measures_2.surfaceWidth;
-      // Center align when anchor width is comparable or greater than menu surface, otherwise keep corner.
-
-      if (anchorWidth / surfaceWidth > __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */].ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO) {
-        horizontalAlignment = 'center';
-      }
-
-      // If the menu-surface has been hoisted to the body, it's no longer relative to the anchor element
-      if (this.hoistedElement_ || this.isFixedPosition_) {
-        position = this.adjustPositionForHoistedElement_(position);
-      }
-
-      for (var prop in position) {
-        if (position.hasOwnProperty(prop) && position[prop] !== '0') {
-          position[prop] = parseInt(position[prop], 10) + 'px';
-        }
-      }
-
-      this.adapter_.setTransformOrigin(horizontalAlignment + ' ' + verticalAlignment);
-      this.adapter_.setPosition(position);
-      this.adapter_.setMaxHeight(maxMenuSurfaceHeight ? maxMenuSurfaceHeight + 'px' : '');
-
-      // Clear measures after positioning is complete.
-      this.measures_ = null;
-    }
-
-    /**
-     * Calculates the offsets for positioning the menu-surface when the menu-surface has been
-     * hoisted to the body.
-     * @param {!{
-     *   top: (string|undefined),
-     *   right: (string|undefined),
-     *   bottom: (string|undefined),
-     *   left: (string|undefined)
-     * }} position
-     * @return {!{
-     *   top: (string|undefined),
-     *   right: (string|undefined),
-     *   bottom: (string|undefined),
-     *   left: (string|undefined)
-     * }} position
-     * @private
-     */
-
-  }, {
-    key: 'adjustPositionForHoistedElement_',
-    value: function adjustPositionForHoistedElement_(position) {
-      var _measures_3 = this.measures_,
-          windowScroll = _measures_3.windowScroll,
-          viewportDistance = _measures_3.viewportDistance;
-
-
-      for (var prop in position) {
-        if (position.hasOwnProperty(prop)) {
-          // Hoisted surfaces need to have the anchor elements location on the page added to the
-          // position properties for proper alignment on the body.
-          if (viewportDistance.hasOwnProperty(prop)) {
-            position[prop] = parseInt(position[prop], 10) + viewportDistance[prop];
-          }
-
-          // Surfaces that are absolutely positioned need to have additional calculations for scroll
-          // and bottom positioning.
-          if (!this.isFixedPosition_) {
-            if (prop === 'top') {
-              position[prop] = parseInt(position[prop], 10) + windowScroll.y;
-            } else if (prop === 'bottom') {
-              position[prop] = parseInt(position[prop], 10) - windowScroll.y;
-            } else if (prop === 'left') {
-              position[prop] = parseInt(position[prop], 10) + windowScroll.x;
-            } else if (prop === 'right') {
-              position[prop] = parseInt(position[prop], 10) - windowScroll.x;
-            }
-          }
-        }
-      }
-
-      return position;
-    }
-
-    /**
-     * Open the menu surface.
-     */
-
-  }, {
-    key: 'open',
-    value: function open() {
-      var _this2 = this;
-
-      this.adapter_.saveFocus();
-
-      if (!this.quickOpen_) {
-        this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
-      }
-
-      this.animationRequestId_ = requestAnimationFrame(function () {
-        _this2.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
-        _this2.dimensions_ = _this2.adapter_.getInnerDimensions();
-        _this2.autoPosition_();
-        if (_this2.quickOpen_) {
-          _this2.adapter_.notifyOpen();
-        } else {
-          _this2.openAnimationEndTimerId_ = setTimeout(function () {
-            _this2.openAnimationEndTimerId_ = 0;
-            _this2.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_OPEN);
-            _this2.adapter_.notifyOpen();
-          }, __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */].TRANSITION_OPEN_DURATION);
-        }
-      });
-      this.isOpen_ = true;
-    }
-
-    /**
-     * Closes the menu surface.
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      var _this3 = this;
-
-      if (!this.quickOpen_) {
-        this.adapter_.addClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
-      }
-
-      requestAnimationFrame(function () {
-        _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.OPEN);
-        if (_this3.quickOpen_) {
-          _this3.adapter_.notifyClose();
-        } else {
-          _this3.closeAnimationEndTimerId_ = setTimeout(function () {
-            _this3.closeAnimationEndTimerId_ = 0;
-            _this3.adapter_.removeClass(MDCMenuSurfaceFoundation.cssClasses.ANIMATING_CLOSED);
-            _this3.adapter_.notifyClose();
-          }, __WEBPACK_IMPORTED_MODULE_2__constants__["d" /* numbers */].TRANSITION_CLOSE_DURATION);
-        }
-      });
-
-      this.isOpen_ = false;
-      this.maybeRestoreFocus_();
-    }
-
-    /**
-     * The last focused element when the menu surface was opened should regain focus, if the user is
-     * focused on or within the menu surface when it is closed.
-     * @private
-     */
-
-  }, {
-    key: 'maybeRestoreFocus_',
-    value: function maybeRestoreFocus_() {
-      if (this.adapter_.isFocused() || this.adapter_.isElementInContainer(document.activeElement)) {
-        this.adapter_.restoreFocus();
-      }
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isOpen',
-    value: function isOpen() {
-      return this.isOpen_;
-    }
-
-    /**
-     * isFinite that doesn't force conversion to number type.
-     * Equivalent to Number.isFinite in ES2015, but is not included in IE11.
-     * @param {number} num
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'typeCheckisFinite_',
-    value: function typeCheckisFinite_(num) {
-      return typeof num === 'number' && isFinite(num);
-    }
-  }]);
-
-  return MDCMenuSurfaceFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-
-
-/***/ }),
-/* 19 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return numbers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return CornerBit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Corner; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ANCHOR: 'mdc-menu-surface--anchor',
-  ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',
-  ANIMATING_OPEN: 'mdc-menu-surface--animating-open',
-  FIXED: 'mdc-menu-surface--fixed',
-  OPEN: 'mdc-menu-surface--open',
-  ROOT: 'mdc-menu-surface'
-};
-
-/** @enum {string} */
-var strings = {
-  CLOSED_EVENT: 'MDCMenuSurface:closed',
-  OPENED_EVENT: 'MDCMenuSurface:opened',
-  FOCUSABLE_ELEMENTS: 'button:not(:disabled), [href]:not([aria-disabled="true"]), input:not(:disabled), ' + 'select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"]):not([aria-disabled="true"])'
-};
-
-/** @enum {number} */
-var numbers = {
-  // Total duration of menu-surface open animation.
-  TRANSITION_OPEN_DURATION: 120,
-  // Total duration of menu-surface close animation.
-  TRANSITION_CLOSE_DURATION: 75,
-  // Margin left to the edge of the viewport when menu-surface is at maximum possible height.
-  MARGIN_TO_EDGE: 32,
-  // Ratio of anchor width to menu-surface width for switching from corner positioning to center positioning.
-  ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67
-};
-
-/**
- * Enum for bits in the {@see Corner) bitmap.
- * @enum {number}
- */
-var CornerBit = {
-  BOTTOM: 1,
-  CENTER: 2,
-  RIGHT: 4,
-  FLIP_RTL: 8
-};
-
-/**
- * Enum for representing an element corner for positioning the menu-surface.
- *
- * The START constants map to LEFT if element directionality is left
- * to right and RIGHT if the directionality is right to left.
- * Likewise END maps to RIGHT or LEFT depending on the directionality.
- *
- * @enum {number}
- */
-var Corner = {
-  TOP_LEFT: 0,
-  TOP_RIGHT: CornerBit.RIGHT,
-  BOTTOM_LEFT: CornerBit.BOTTOM,
-  BOTTOM_RIGHT: CornerBit.BOTTOM | CornerBit.RIGHT,
-  TOP_START: CornerBit.FLIP_RTL,
-  TOP_END: CornerBit.FLIP_RTL | CornerBit.RIGHT,
-  BOTTOM_START: CornerBit.BOTTOM | CornerBit.FLIP_RTL,
-  BOTTOM_END: CornerBit.BOTTOM | CornerBit.RIGHT | CornerBit.FLIP_RTL
-};
-
-
-
-/***/ }),
-/* 20 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCNotchedOutline", function() { return MDCNotchedOutline; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(116);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_floating_label_index__ = __webpack_require__(9);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(47);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCNotchedOutlineFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCNotchedOutlineFoundation>}
- * @final
- */
-
-var MDCNotchedOutline = function (_MDCComponent) {
-  _inherits(MDCNotchedOutline, _MDCComponent);
-
-  _createClass(MDCNotchedOutline, null, [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCNotchedOutline}
-     */
-    value: function attachTo(root) {
-      return new MDCNotchedOutline(root);
-    }
-    /** @param {...?} args */
-
-  }]);
-
-  function MDCNotchedOutline() {
-    var _ref;
-
-    _classCallCheck(this, MDCNotchedOutline);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCNotchedOutline.__proto__ || Object.getPrototypeOf(MDCNotchedOutline)).call.apply(_ref, [this].concat(args)));
-
-    _this.notchElement_;
-    return _this;
-  }
-
-  _createClass(MDCNotchedOutline, [{
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var label = this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_3__material_floating_label_index__["MDCFloatingLabelFoundation"].cssClasses.ROOT);
-      this.notchElement_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* strings */].NOTCH_ELEMENT_SELECTOR);
-
-      if (label) {
-        label.style.transitionDuration = '0s';
-        this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].OUTLINE_UPGRADED);
-        requestAnimationFrame(function () {
-          label.style.transitionDuration = '';
-        });
-      } else {
-        this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].NO_LABEL);
-      }
-    }
-
-    /**
-      * Updates classes and styles to open the notch to the specified width.
-      * @param {number} notchWidth The notch width in the outline.
-      */
-
-  }, {
-    key: 'notch',
-    value: function notch(notchWidth) {
-      this.foundation_.notch(notchWidth);
-    }
-
-    /**
-     * Updates classes and styles to close the notch.
-     */
-
-  }, {
-    key: 'closeNotch',
-    value: function closeNotch() {
-      this.foundation_.closeNotch();
-    }
-
-    /**
-     * @return {!MDCNotchedOutlineFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](
-      /** @type {!MDCNotchedOutlineAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        setNotchWidthProperty: function setNotchWidthProperty(width) {
-          return _this2.notchElement_.style.setProperty('width', width + 'px');
-        },
-        removeNotchWidthProperty: function removeNotchWidthProperty() {
-          return _this2.notchElement_.style.removeProperty('width');
-        }
-      }));
-    }
-  }]);
-
-  return MDCNotchedOutline;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 21 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSelectIcon; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(123);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCSelectIconFoundation>}
- * @final
- */
-
-var MDCSelectIcon = function (_MDCComponent) {
-  _inherits(MDCSelectIcon, _MDCComponent);
-
-  function MDCSelectIcon() {
-    _classCallCheck(this, MDCSelectIcon);
-
-    return _possibleConstructorReturn(this, (MDCSelectIcon.__proto__ || Object.getPrototypeOf(MDCSelectIcon)).apply(this, arguments));
-  }
-
-  _createClass(MDCSelectIcon, [{
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCSelectIconFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCSelectIconAdapter} */_extends({
-        getAttr: function getAttr(attr) {
-          return _this2.root_.getAttribute(attr);
-        },
-        setAttr: function setAttr(attr, value) {
-          return _this2.root_.setAttribute(attr, value);
-        },
-        removeAttr: function removeAttr(attr) {
-          return _this2.root_.removeAttribute(attr);
-        },
-        setContent: function setContent(content) {
-          _this2.root_.textContent = content;
-        },
-        registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
-          return _this2.root_.addEventListener(evtType, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
-          return _this2.root_.removeEventListener(evtType, handler);
-        },
-        notifyIconAction: function notifyIconAction() {
-          return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);
-        }
-      }));
-    }
-  }, {
-    key: 'foundation',
-
-
-    /**
-     * @return {!MDCSelectIconFoundation}
-     */
-    get: function get() {
-      return this.foundation_;
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCSelectIcon}
-     */
-    value: function attachTo(root) {
-      return new MDCSelectIcon(root);
-    }
-  }]);
-
-  return MDCSelectIcon;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 22 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCSelectHelperText; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(125);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCSelectHelperTextFoundation>}
- * @final
- */
-
-var MDCSelectHelperText = function (_MDCComponent) {
-  _inherits(MDCSelectHelperText, _MDCComponent);
-
-  function MDCSelectHelperText() {
-    _classCallCheck(this, MDCSelectHelperText);
-
-    return _possibleConstructorReturn(this, (MDCSelectHelperText.__proto__ || Object.getPrototypeOf(MDCSelectHelperText)).apply(this, arguments));
-  }
-
-  _createClass(MDCSelectHelperText, [{
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCSelectHelperTextFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCSelectHelperTextAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        setAttr: function setAttr(attr, value) {
-          return _this2.root_.setAttribute(attr, value);
-        },
-        removeAttr: function removeAttr(attr) {
-          return _this2.root_.removeAttribute(attr);
-        },
-        setContent: function setContent(content) {
-          _this2.root_.textContent = content;
-        }
-      }));
-    }
-  }, {
-    key: 'foundation',
-
-
-    /**
-     * @return {!MDCSelectHelperTextFoundation}
-     */
-    get: function get() {
-      return this.foundation_;
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCSelectHelperText}
-     */
-    value: function attachTo(root) {
-      return new MDCSelectHelperText(root);
-    }
-  }]);
-
-  return MDCSelectHelperText;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 23 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var cssClasses = {
-  OPENING: 'mdc-snackbar--opening',
-  OPEN: 'mdc-snackbar--open',
-  CLOSING: 'mdc-snackbar--closing'
-};
-
-var strings = {
-  SURFACE_SELECTOR: '.mdc-snackbar__surface',
-  LABEL_SELECTOR: '.mdc-snackbar__label',
-  ACTION_SELECTOR: '.mdc-snackbar__action',
-  DISMISS_SELECTOR: '.mdc-snackbar__dismiss',
-
-  OPENING_EVENT: 'MDCSnackbar:opening',
-  OPENED_EVENT: 'MDCSnackbar:opened',
-  CLOSING_EVENT: 'MDCSnackbar:closing',
-  CLOSED_EVENT: 'MDCSnackbar:closed',
-
-  REASON_ACTION: 'action',
-  REASON_DISMISS: 'dismiss',
-
-  ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text'
-};
-
-var numbers = {
-  MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,
-  MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,
-  DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,
-
-  // These variables need to be kept in sync with the values in _variables.scss.
-  SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,
-  SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,
-
-  /**
-   * Number of milliseconds to wait between temporarily clearing the label text
-   * in the DOM and subsequently restoring it. This is necessary to force IE 11
-   * to pick up the `aria-live` content change and announce it to the user.
-   */
-  ARIA_LIVE_DELAY_MS: 1000
-};
-
-
-
-/***/ }),
-/* 24 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(56);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(137);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTabIndicatorAdapter>}
- * @abstract
- */
-
-var MDCTabIndicatorFoundation = function (_MDCFoundation) {
-  _inherits(MDCTabIndicatorFoundation, _MDCFoundation);
-
-  _createClass(MDCTabIndicatorFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * @see MDCTabIndicatorAdapter for typing information
-     * @return {!MDCTabIndicatorAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTabIndicatorAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          computeContentClientRect: function computeContentClientRect() {},
-          setContentStyleProperty: function setContentStyleProperty() {}
-        }
-      );
-    }
-
-    /** @param {!MDCTabIndicatorAdapter} adapter */
-
-  }]);
-
-  function MDCTabIndicatorFoundation(adapter) {
-    _classCallCheck(this, MDCTabIndicatorFoundation);
-
-    return _possibleConstructorReturn(this, (MDCTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCTabIndicatorFoundation)).call(this, _extends(MDCTabIndicatorFoundation.defaultAdapter, adapter)));
-  }
-
-  /** @return {!ClientRect} */
-
-
-  _createClass(MDCTabIndicatorFoundation, [{
-    key: 'computeContentClientRect',
-    value: function computeContentClientRect() {
-      return this.adapter_.computeContentClientRect();
-    }
-
-    /**
-     * Activates the indicator
-     * @param {!ClientRect=} previousIndicatorClientRect
-     * @abstract
-     */
-
-  }, {
-    key: 'activate',
-    value: function activate(previousIndicatorClientRect) {} // eslint-disable-line no-unused-vars
-
-    /** @abstract */
-
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {}
-  }]);
-
-  return MDCTabIndicatorFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabIndicatorFoundation);
-
-/***/ }),
-/* 25 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(151);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTextFieldHelperTextAdapter>}
- * @final
- */
-
-var MDCTextFieldHelperTextFoundation = function (_MDCFoundation) {
-  _inherits(MDCTextFieldHelperTextFoundation, _MDCFoundation);
-
-  _createClass(MDCTextFieldHelperTextFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * {@see MDCTextFieldHelperTextAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCTextFieldHelperTextAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTextFieldHelperTextAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          setAttr: function setAttr() {},
-          removeAttr: function removeAttr() {},
-          setContent: function setContent() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCTextFieldHelperTextAdapter} adapter
-     */
-
-  }]);
-
-  function MDCTextFieldHelperTextFoundation(adapter) {
-    _classCallCheck(this, MDCTextFieldHelperTextFoundation);
-
-    return _possibleConstructorReturn(this, (MDCTextFieldHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperTextFoundation)).call(this, _extends(MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)));
-  }
-
-  /**
-   * Sets the content of the helper text field.
-   * @param {string} content
-   */
-
-
-  _createClass(MDCTextFieldHelperTextFoundation, [{
-    key: 'setContent',
-    value: function setContent(content) {
-      this.adapter_.setContent(content);
-    }
-
-    /** @param {boolean} isPersistent Sets the persistency of the helper text. */
-
-  }, {
-    key: 'setPersistent',
-    value: function setPersistent(isPersistent) {
-      if (isPersistent) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      }
-    }
-
-    /**
-     * @param {boolean} isValidation True to make the helper text act as an
-     *   error validation message.
-     */
-
-  }, {
-    key: 'setValidation',
-    value: function setValidation(isValidation) {
-      if (isValidation) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      }
-    }
-
-    /** Makes the helper text visible to the screen reader. */
-
-  }, {
-    key: 'showToScreenReader',
-    value: function showToScreenReader() {
-      this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN);
-    }
-
-    /**
-     * Sets the validity of the helper text based on the input validity.
-     * @param {boolean} inputIsValid
-     */
-
-  }, {
-    key: 'setValidity',
-    value: function setValidity(inputIsValid) {
-      var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;
-
-      if (validationMsgNeedsDisplay) {
-        this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE, 'alert');
-      } else {
-        this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE);
-      }
-
-      if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
-        this.hide_();
-      }
-    }
-
-    /**
-     * Hides the help text from screen readers.
-     * @private
-     */
-
-  }, {
-    key: 'hide_',
-    value: function hide_() {
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN, 'true');
-    }
-  }]);
-
-  return MDCTextFieldHelperTextFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldHelperTextFoundation);
-
-/***/ }),
-/* 26 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(63);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(152);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2019 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTextFieldCharacterCounterAdapter>}
- * @final
- */
-
-var MDCTextFieldCharacterCounterFoundation = function (_MDCFoundation) {
-  _inherits(MDCTextFieldCharacterCounterFoundation, _MDCFoundation);
-
-  _createClass(MDCTextFieldCharacterCounterFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * {@see MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCTextFieldCharacterCounterAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTextFieldCharacterCounterAdapter} */{
-          setContent: function setContent() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCTextFieldCharacterCounterAdapter} adapter
-     */
-
-  }]);
-
-  function MDCTextFieldCharacterCounterFoundation(adapter) {
-    _classCallCheck(this, MDCTextFieldCharacterCounterFoundation);
-
-    return _possibleConstructorReturn(this, (MDCTextFieldCharacterCounterFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldCharacterCounterFoundation)).call(this, _extends(MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter)));
-  }
-
-  /**
-   * @param {number} currentLength
-   * @param {number} maxLength
-   */
-
-
-  _createClass(MDCTextFieldCharacterCounterFoundation, [{
-    key: 'setCounterValue',
-    value: function setCounterValue(currentLength, maxLength) {
-      currentLength = Math.min(currentLength, maxLength);
-      this.adapter_.setContent(currentLength + ' / ' + maxLength);
-    }
-  }]);
-
-  return MDCTextFieldCharacterCounterFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldCharacterCounterFoundation);
-
-/***/ }),
-/* 27 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(64);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(153);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTextFieldIconAdapter>}
- * @final
- */
-
-var MDCTextFieldIconFoundation = function (_MDCFoundation) {
-  _inherits(MDCTextFieldIconFoundation, _MDCFoundation);
-
-  _createClass(MDCTextFieldIconFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */];
-    }
-
-    /**
-     * {@see MDCTextFieldIconAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCTextFieldIconAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTextFieldIconAdapter} */{
-          getAttr: function getAttr() {},
-          setAttr: function setAttr() {},
-          removeAttr: function removeAttr() {},
-          setContent: function setContent() {},
-          registerInteractionHandler: function registerInteractionHandler() {},
-          deregisterInteractionHandler: function deregisterInteractionHandler() {},
-          notifyIconAction: function notifyIconAction() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCTextFieldIconAdapter} adapter
-     */
-
-  }]);
-
-  function MDCTextFieldIconFoundation(adapter) {
-    _classCallCheck(this, MDCTextFieldIconFoundation);
-
-    /** @private {string?} */
-    var _this = _possibleConstructorReturn(this, (MDCTextFieldIconFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldIconFoundation)).call(this, _extends(MDCTextFieldIconFoundation.defaultAdapter, adapter)));
-
-    _this.savedTabIndex_ = null;
-
-    /** @private {function(!Event): undefined} */
-    _this.interactionHandler_ = function (evt) {
-      return _this.handleInteraction(evt);
-    };
-    return _this;
-  }
-
-  _createClass(MDCTextFieldIconFoundation, [{
-    key: 'init',
-    value: function init() {
-      var _this2 = this;
-
-      this.savedTabIndex_ = this.adapter_.getAttr('tabindex');
-
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);
-      });
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);
-      });
-    }
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      if (!this.savedTabIndex_) {
-        return;
-      }
-
-      if (disabled) {
-        this.adapter_.setAttr('tabindex', '-1');
-        this.adapter_.removeAttr('role');
-      } else {
-        this.adapter_.setAttr('tabindex', this.savedTabIndex_);
-        this.adapter_.setAttr('role', __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */].ICON_ROLE);
-      }
-    }
-
-    /** @param {string} label */
-
-  }, {
-    key: 'setAriaLabel',
-    value: function setAriaLabel(label) {
-      this.adapter_.setAttr('aria-label', label);
-    }
-
-    /** @param {string} content */
-
-  }, {
-    key: 'setContent',
-    value: function setContent(content) {
-      this.adapter_.setContent(content);
-    }
-
-    /**
-     * Handles an interaction event
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleInteraction',
-    value: function handleInteraction(evt) {
-      if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
-        this.adapter_.notifyIconAction();
-      }
-    }
-  }]);
-
-  return MDCTextFieldIconFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldIconFoundation);
-
-/***/ }),
-/* 28 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Ripple. Provides an interface for managing
- * - classes
- * - dom
- * - CSS variables
- * - position
- * - dimensions
- * - scroll position
- * - event handlers
- * - unbounded, active and disabled states
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCRippleAdapter = function () {
-  function MDCRippleAdapter() {
-    _classCallCheck(this, MDCRippleAdapter);
-  }
-
-  _createClass(MDCRippleAdapter, [{
-    key: "browserSupportsCssVars",
-
-    /** @return {boolean} */
-    value: function browserSupportsCssVars() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isUnbounded",
-    value: function isUnbounded() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isSurfaceActive",
-    value: function isSurfaceActive() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isSurfaceDisabled",
-    value: function isSurfaceDisabled() {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "addClass",
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /** @param {!EventTarget} target */
-
-  }, {
-    key: "containsEventTarget",
-    value: function containsEventTarget(target) {}
-
-    /**
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(evtType, handler) {}
-
-    /**
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(evtType, handler) {}
-
-    /**
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "registerDocumentInteractionHandler",
-    value: function registerDocumentInteractionHandler(evtType, handler) {}
-
-    /**
-     * @param {string} evtType
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "deregisterDocumentInteractionHandler",
-    value: function deregisterDocumentInteractionHandler(evtType, handler) {}
-
-    /**
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "registerResizeHandler",
-    value: function registerResizeHandler(handler) {}
-
-    /**
-     * @param {!Function} handler
-     */
-
-  }, {
-    key: "deregisterResizeHandler",
-    value: function deregisterResizeHandler(handler) {}
-
-    /**
-     * @param {string} varName
-     * @param {?number|string} value
-     */
-
-  }, {
-    key: "updateCssVariable",
-    value: function updateCssVariable(varName, value) {}
-
-    /** @return {!ClientRect} */
-
-  }, {
-    key: "computeBoundingRect",
-    value: function computeBoundingRect() {}
-
-    /** @return {{x: number, y: number}} */
-
-  }, {
-    key: "getWindowPageOffset",
-    value: function getWindowPageOffset() {}
-  }]);
-
-  return MDCRippleAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCRippleAdapter);
-
-/***/ }),
-/* 29 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChip; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(30);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(31);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(32);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-var INTERACTION_EVENTS = ['click', 'keydown'];
-
-/**
- * @extends {MDCComponent<!MDCChipFoundation>}
- * @final
- */
-
-var MDCChip = function (_MDCComponent) {
-  _inherits(MDCChip, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCChip() {
-    var _ref;
-
-    _classCallCheck(this, MDCChip);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {string} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCChip.__proto__ || Object.getPrototypeOf(MDCChip)).call.apply(_ref, [this].concat(args)));
-
-    _this.id;
-    /** @private {?Element} */
-    _this.leadingIcon_;
-    /** @private {?Element} */
-    _this.trailingIcon_;
-    /** @private {?Element} */
-    _this.checkmark_;
-    /** @private {!MDCRipple} */
-    _this.ripple_;
-
-    /** @private {?function(?Event): undefined} */
-    _this.handleInteraction_;
-    /** @private {?function(!Event): undefined} */
-    _this.handleTransitionEnd_;
-    /** @private {function(!Event): undefined} */
-    _this.handleTrailingIconInteraction_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCChip}
-   */
-
-
-  _createClass(MDCChip, [{
-    key: 'initialize',
-    value: function initialize() {
-      var _this2 = this;
-
-      var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
-        return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
-      };
-
-      this.id = this.root_.id;
-      this.leadingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].LEADING_ICON_SELECTOR);
-      this.trailingIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].TRAILING_ICON_SELECTOR);
-      this.checkmark_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].CHECKMARK_SELECTOR);
-
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        computeBoundingRect: function computeBoundingRect() {
-          return _this2.foundation_.getDimensions();
-        }
-      });
-      this.ripple_ = rippleFactory(this.root_, new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](adapter));
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this3 = this;
-
-      this.handleInteraction_ = function (evt) {
-        return _this3.foundation_.handleInteraction(evt);
-      };
-      this.handleTransitionEnd_ = function (evt) {
-        return _this3.foundation_.handleTransitionEnd(evt);
-      };
-      this.handleTrailingIconInteraction_ = function (evt) {
-        return _this3.foundation_.handleTrailingIconInteraction(evt);
-      };
-
-      INTERACTION_EVENTS.forEach(function (evtType) {
-        _this3.root_.addEventListener(evtType, _this3.handleInteraction_);
-      });
-      this.root_.addEventListener('transitionend', this.handleTransitionEnd_);
-
-      if (this.trailingIcon_) {
-        INTERACTION_EVENTS.forEach(function (evtType) {
-          _this3.trailingIcon_.addEventListener(evtType, _this3.handleTrailingIconInteraction_);
-        });
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this4 = this;
-
-      this.ripple_.destroy();
-
-      INTERACTION_EVENTS.forEach(function (evtType) {
-        _this4.root_.removeEventListener(evtType, _this4.handleInteraction_);
-      });
-      this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);
-
-      if (this.trailingIcon_) {
-        INTERACTION_EVENTS.forEach(function (evtType) {
-          _this4.trailingIcon_.removeEventListener(evtType, _this4.handleTrailingIconInteraction_);
-        });
-      }
-
-      _get(MDCChip.prototype.__proto__ || Object.getPrototypeOf(MDCChip.prototype), 'destroy', this).call(this);
-    }
-
-    /**
-     * Returns whether the chip is selected.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'beginExit',
-
-
-    /**
-     * Begins the exit animation which leads to removal of the chip.
-     */
-    value: function beginExit() {
-      this.foundation_.beginExit();
-    }
-
-    /**
-     * @return {!MDCChipFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this5 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* MDCChipFoundation */]( /** @type {!MDCChipAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this5.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this5.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this5.root_.classList.contains(className);
-        },
-        addClassToLeadingIcon: function addClassToLeadingIcon(className) {
-          if (_this5.leadingIcon_) {
-            _this5.leadingIcon_.classList.add(className);
-          }
-        },
-        removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) {
-          if (_this5.leadingIcon_) {
-            _this5.leadingIcon_.classList.remove(className);
-          }
-        },
-        eventTargetHasClass: function eventTargetHasClass(target, className) {
-          return target.classList.contains(className);
-        },
-        notifyInteraction: function notifyInteraction() {
-          return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);
-        },
-        notifySelection: function notifySelection(selected) {
-          return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].SELECTION_EVENT, { chipId: _this5.id, selected: selected }, true /* shouldBubble */);
-        },
-        notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {
-          return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].TRAILING_ICON_INTERACTION_EVENT, { chipId: _this5.id }, true /* shouldBubble */);
-        },
-        notifyRemoval: function notifyRemoval() {
-          return _this5.emit(__WEBPACK_IMPORTED_MODULE_4__constants__["b" /* strings */].REMOVAL_EVENT, { chipId: _this5.id, root: _this5.root_ }, true /* shouldBubble */);
-        },
-        getComputedStyleValue: function getComputedStyleValue(propertyName) {
-          return window.getComputedStyle(_this5.root_).getPropertyValue(propertyName);
-        },
-        setStyleProperty: function setStyleProperty(propertyName, value) {
-          return _this5.root_.style.setProperty(propertyName, value);
-        },
-        hasLeadingIcon: function hasLeadingIcon() {
-          return !!_this5.leadingIcon_;
-        },
-        getRootBoundingClientRect: function getRootBoundingClientRect() {
-          return _this5.root_.getBoundingClientRect();
-        },
-        getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {
-          return _this5.checkmark_ ? _this5.checkmark_.getBoundingClientRect() : null;
-        }
-      }));
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'selected',
-    get: function get() {
-      return this.foundation_.isSelected();
-    }
-
-    /**
-     * Sets selected state on the chip.
-     * @param {boolean} selected
-     */
-    ,
-    set: function set(selected) {
-      this.foundation_.setSelected(selected);
-    }
-
-    /**
-     * Returns whether a trailing icon click should trigger exit/removal of the chip.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'shouldRemoveOnTrailingIconClick',
-    get: function get() {
-      return this.foundation_.getShouldRemoveOnTrailingIconClick();
-    }
-
-    /**
-     * Sets whether a trailing icon click should trigger exit/removal of the chip.
-     * @param {boolean} shouldRemove
-     */
-    ,
-    set: function set(shouldRemove) {
-      this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);
-    }
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCChip(root);
-    }
-  }]);
-
-  return MDCChip;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 30 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Chip.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Chip into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCChipAdapter = function () {
-  function MDCChipAdapter() {
-    _classCallCheck(this, MDCChipAdapter);
-  }
-
-  _createClass(MDCChipAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the root element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns true if the root element contains the given class.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Adds a class to the leading icon element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "addClassToLeadingIcon",
-    value: function addClassToLeadingIcon(className) {}
-
-    /**
-     * Removes a class from the leading icon element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClassFromLeadingIcon",
-    value: function removeClassFromLeadingIcon(className) {}
-
-    /**
-     * Returns true if target has className, false otherwise.
-     * @param {!EventTarget} target
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "eventTargetHasClass",
-    value: function eventTargetHasClass(target, className) {}
-
-    /**
-     * Emits a custom "MDCChip:interaction" event denoting the chip has been
-     * interacted with (typically on click or keydown).
-     */
-
-  }, {
-    key: "notifyInteraction",
-    value: function notifyInteraction() {}
-
-    /**
-     * Emits a custom "MDCChip:selection" event denoting the chip has been selected or deselected.
-     * @param {boolean} selected
-     */
-
-  }, {
-    key: "notifySelection",
-    value: function notifySelection(selected) {}
-
-    /**
-     * Emits a custom "MDCChip:trailingIconInteraction" event denoting the trailing icon has been
-     * interacted with (typically on click or keydown).
-     */
-
-  }, {
-    key: "notifyTrailingIconInteraction",
-    value: function notifyTrailingIconInteraction() {}
-
-    /**
-     * Emits a custom event "MDCChip:removal" denoting the chip will be removed.
-     */
-
-  }, {
-    key: "notifyRemoval",
-    value: function notifyRemoval() {}
-
-    /**
-     * Returns the computed property value of the given style property on the root element.
-     * @param {string} propertyName
-     * @return {string}
-     */
-
-  }, {
-    key: "getComputedStyleValue",
-    value: function getComputedStyleValue(propertyName) {}
-
-    /**
-     * Sets the property value of the given style property on the root element.
-     * @param {string} propertyName
-     * @param {string} value
-     */
-
-  }, {
-    key: "setStyleProperty",
-    value: function setStyleProperty(propertyName, value) {}
-
-    /**
-     * Returns whether the chip has a leading icon.
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasLeadingIcon",
-    value: function hasLeadingIcon() {}
-
-    /**
-     * Returns the bounding client rect of the root element.
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: "getRootBoundingClientRect",
-    value: function getRootBoundingClientRect() {}
-
-    /**
-     * Returns the bounding client rect of the checkmark element or null if it doesn't exist.
-     * @return {?ClientRect}
-     */
-
-  }, {
-    key: "getCheckmarkBoundingClientRect",
-    value: function getCheckmarkBoundingClientRect() {}
-  }]);
-
-  return MDCChipAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipAdapter);
-
-/***/ }),
-/* 31 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChipFoundation; });
-/* unused harmony export MDCChipInteractionEventType */
-/* unused harmony export MDCChipSelectionEventType */
-/* unused harmony export MDCChipRemovalEventType */
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(30);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(32);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCChipAdapter>}
- * @final
- */
-
-var MDCChipFoundation = function (_MDCFoundation) {
-  _inherits(MDCChipFoundation, _MDCFoundation);
-
-  _createClass(MDCChipFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /**
-     * {@see MDCChipAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCChipAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCChipAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          addClassToLeadingIcon: function addClassToLeadingIcon() {},
-          removeClassFromLeadingIcon: function removeClassFromLeadingIcon() {},
-          eventTargetHasClass: function eventTargetHasClass() {},
-          notifyInteraction: function notifyInteraction() {},
-          notifySelection: function notifySelection() {},
-          notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {},
-          notifyRemoval: function notifyRemoval() {},
-          getComputedStyleValue: function getComputedStyleValue() {},
-          setStyleProperty: function setStyleProperty() {},
-          hasLeadingIcon: function hasLeadingIcon() {},
-          getRootBoundingClientRect: function getRootBoundingClientRect() {},
-          getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCChipAdapter} adapter
-     */
-
-  }]);
-
-  function MDCChipFoundation(adapter) {
-    _classCallCheck(this, MDCChipFoundation);
-
-    /**
-     * Whether a trailing icon click should immediately trigger exit/removal of the chip.
-     * @private {boolean}
-     * */
-    var _this = _possibleConstructorReturn(this, (MDCChipFoundation.__proto__ || Object.getPrototypeOf(MDCChipFoundation)).call(this, _extends(MDCChipFoundation.defaultAdapter, adapter)));
-
-    _this.shouldRemoveOnTrailingIconClick_ = true;
-    return _this;
-  }
-
-  /**
-   * @return {boolean}
-   */
-
-
-  _createClass(MDCChipFoundation, [{
-    key: 'isSelected',
-    value: function isSelected() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
-    }
-
-    /**
-     * @param {boolean} selected
-     */
-
-  }, {
-    key: 'setSelected',
-    value: function setSelected(selected) {
-      if (selected) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED);
-      }
-      this.adapter_.notifySelection(selected);
-    }
-
-    /**
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'getShouldRemoveOnTrailingIconClick',
-    value: function getShouldRemoveOnTrailingIconClick() {
-      return this.shouldRemoveOnTrailingIconClick_;
-    }
-
-    /**
-     * @param {boolean} shouldRemove
-     */
-
-  }, {
-    key: 'setShouldRemoveOnTrailingIconClick',
-    value: function setShouldRemoveOnTrailingIconClick(shouldRemove) {
-      this.shouldRemoveOnTrailingIconClick_ = shouldRemove;
-    }
-
-    /** @return {!ClientRect} */
-
-  }, {
-    key: 'getDimensions',
-    value: function getDimensions() {
-      // When a chip has a checkmark and not a leading icon, the bounding rect changes in size depending on the current
-      // size of the checkmark.
-      if (!this.adapter_.hasLeadingIcon() && this.adapter_.getCheckmarkBoundingClientRect() !== null) {
-        var height = this.adapter_.getRootBoundingClientRect().height;
-        // The checkmark's width is initially set to 0, so use the checkmark's height as a proxy since the checkmark
-        // should always be square.
-        var width = this.adapter_.getRootBoundingClientRect().width + this.adapter_.getCheckmarkBoundingClientRect().height;
-        return (/** @type {!ClientRect} */{ height: height, width: width }
-        );
-      } else {
-        return this.adapter_.getRootBoundingClientRect();
-      }
-    }
-
-    /**
-     * Begins the exit animation which leads to removal of the chip.
-     */
-
-  }, {
-    key: 'beginExit',
-    value: function beginExit() {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHIP_EXIT);
-    }
-
-    /**
-     * Handles an interaction event on the root element.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleInteraction',
-    value: function handleInteraction(evt) {
-      if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
-        this.adapter_.notifyInteraction();
-      }
-    }
-
-    /**
-     * Handles a transition end event on the root element.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleTransitionEnd',
-    value: function handleTransitionEnd(evt) {
-      var _this2 = this;
-
-      // Handle transition end event on the chip when it is about to be removed.
-      if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHIP_EXIT)) {
-        if (evt.propertyName === 'width') {
-          this.adapter_.notifyRemoval();
-        } else if (evt.propertyName === 'opacity') {
-          // See: https://css-tricks.com/using-css-transitions-auto-dimensions/#article-header-id-5
-          var chipWidth = this.adapter_.getComputedStyleValue('width');
-
-          // On the next frame (once we get the computed width), explicitly set the chip's width
-          // to its current pixel width, so we aren't transitioning out of 'auto'.
-          requestAnimationFrame(function () {
-            _this2.adapter_.setStyleProperty('width', chipWidth);
-
-            // To mitigate jitter, start transitioning padding and margin before width.
-            _this2.adapter_.setStyleProperty('padding', '0');
-            _this2.adapter_.setStyleProperty('margin', '0');
-
-            // On the next frame (once width is explicitly set), transition width to 0.
-            requestAnimationFrame(function () {
-              _this2.adapter_.setStyleProperty('width', '0');
-            });
-          });
-        }
-        return;
-      }
-
-      // Handle a transition end event on the leading icon or checkmark, since the transition end event bubbles.
-      if (evt.propertyName !== 'opacity') {
-        return;
-      }
-      if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LEADING_ICON) && this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED)) {
-        this.adapter_.addClassToLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HIDDEN_LEADING_ICON);
-      } else if (this.adapter_.eventTargetHasClass( /** @type {!EventTarget} */evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKMARK) && !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SELECTED)) {
-        this.adapter_.removeClassFromLeadingIcon(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HIDDEN_LEADING_ICON);
-      }
-    }
-
-    /**
-     * Handles an interaction event on the trailing icon element. This is used to
-     * prevent the ripple from activating on interaction with the trailing icon.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleTrailingIconInteraction',
-    value: function handleTrailingIconInteraction(evt) {
-      evt.stopPropagation();
-      if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
-        this.adapter_.notifyTrailingIconInteraction();
-        if (this.shouldRemoveOnTrailingIconClick_) {
-          this.beginExit();
-        }
-      }
-    }
-  }]);
-
-  return MDCChipFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/**
- * @typedef {{
- *   detail: {
- *     chipId: string,
- *   },
- *   bubbles: boolean,
- * }}
- */
-
-
-var MDCChipInteractionEventType = void 0;
-
-/**
- * @typedef {{
- *   detail: {
- *     chipId: string,
- *     selected: boolean,
- *   },
- *   bubbles: boolean,
- * }}
- */
-var MDCChipSelectionEventType = void 0;
-
-/**
- * @typedef {{
- *   detail: {
- *     chipId: string,
- *     root: Element,
- *   },
- *   bubbles: boolean,
- * }}
- */
-var MDCChipRemovalEventType = void 0;
-
-
-
-/***/ }),
-/* 32 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  ENTRY_ANIMATION_NAME: 'mdc-chip-entry',
-  INTERACTION_EVENT: 'MDCChip:interaction',
-  SELECTION_EVENT: 'MDCChip:selection',
-  TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',
-  REMOVAL_EVENT: 'MDCChip:removal',
-  CHECKMARK_SELECTOR: '.mdc-chip__checkmark',
-  LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',
-  TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing'
-};
-
-/** @enum {string} */
-var cssClasses = {
-  CHECKMARK: 'mdc-chip__checkmark',
-  CHIP_EXIT: 'mdc-chip--exit',
-  HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden',
-  LEADING_ICON: 'mdc-chip__icon--leading',
-  TRAILING_ICON: 'mdc-chip__icon--trailing',
-  SELECTED: 'mdc-chip--selected'
-};
-
-
-
-/***/ }),
-/* 33 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Chip Set.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Chip Set into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCChipSetAdapter = function () {
-  function MDCChipSetAdapter() {
-    _classCallCheck(this, MDCChipSetAdapter);
-  }
-
-  _createClass(MDCChipSetAdapter, [{
-    key: "hasClass",
-
-    /**
-     * Returns true if the root element contains the given class name.
-     * @param {string} className
-     * @return {boolean}
-     */
-    value: function hasClass(className) {}
-
-    /**
-     * Removes the chip with the given id from the chip set.
-     * @param {string} chipId
-     */
-
-  }, {
-    key: "removeChip",
-    value: function removeChip(chipId) {}
-
-    /**
-     * Sets the selected state of the chip with the given id.
-     * @param {string} chipId
-     * @param {boolean} selected
-     */
-
-  }, {
-    key: "setSelected",
-    value: function setSelected(chipId, selected) {}
-  }]);
-
-  return MDCChipSetAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCChipSetAdapter);
-
-/***/ }),
-/* 34 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var tabbable = __webpack_require__(83);
-var xtend = __webpack_require__(84);
-
-var activeFocusTraps = (function() {
-  var trapQueue = [];
-  return {
-    activateTrap: function(trap) {
-      if (trapQueue.length > 0) {
-        var activeTrap = trapQueue[trapQueue.length - 1];
-        if (activeTrap !== trap) {
-          activeTrap.pause();
-        }
-      }
-
-      var trapIndex = trapQueue.indexOf(trap);
-      if (trapIndex === -1) {
-        trapQueue.push(trap);
-      } else {
-        // move this existing trap to the front of the queue
-        trapQueue.splice(trapIndex, 1);
-        trapQueue.push(trap);
-      }
-    },
-
-    deactivateTrap: function(trap) {
-      var trapIndex = trapQueue.indexOf(trap);
-      if (trapIndex !== -1) {
-        trapQueue.splice(trapIndex, 1);
-      }
-
-      if (trapQueue.length > 0) {
-        trapQueue[trapQueue.length - 1].unpause();
-      }
-    }
-  };
-})();
-
-function focusTrap(element, userOptions) {
-  var doc = document;
-  var container =
-    typeof element === 'string' ? doc.querySelector(element) : element;
-
-  var config = xtend(
-    {
-      returnFocusOnDeactivate: true,
-      escapeDeactivates: true
-    },
-    userOptions
-  );
-
-  var state = {
-    firstTabbableNode: null,
-    lastTabbableNode: null,
-    nodeFocusedBeforeActivation: null,
-    mostRecentlyFocusedNode: null,
-    active: false,
-    paused: false
-  };
-
-  var trap = {
-    activate: activate,
-    deactivate: deactivate,
-    pause: pause,
-    unpause: unpause
-  };
-
-  return trap;
-
-  function activate(activateOptions) {
-    if (state.active) return;
-
-    updateTabbableNodes();
-
-    state.active = true;
-    state.paused = false;
-    state.nodeFocusedBeforeActivation = doc.activeElement;
-
-    var onActivate =
-      activateOptions && activateOptions.onActivate
-        ? activateOptions.onActivate
-        : config.onActivate;
-    if (onActivate) {
-      onActivate();
-    }
-
-    addListeners();
-    return trap;
-  }
-
-  function deactivate(deactivateOptions) {
-    if (!state.active) return;
-
-    removeListeners();
-    state.active = false;
-    state.paused = false;
-
-    activeFocusTraps.deactivateTrap(trap);
-
-    var onDeactivate =
-      deactivateOptions && deactivateOptions.onDeactivate !== undefined
-        ? deactivateOptions.onDeactivate
-        : config.onDeactivate;
-    if (onDeactivate) {
-      onDeactivate();
-    }
-
-    var returnFocus =
-      deactivateOptions && deactivateOptions.returnFocus !== undefined
-        ? deactivateOptions.returnFocus
-        : config.returnFocusOnDeactivate;
-    if (returnFocus) {
-      delay(function() {
-        tryFocus(state.nodeFocusedBeforeActivation);
-      });
-    }
-
-    return trap;
-  }
-
-  function pause() {
-    if (state.paused || !state.active) return;
-    state.paused = true;
-    removeListeners();
-  }
-
-  function unpause() {
-    if (!state.paused || !state.active) return;
-    state.paused = false;
-    addListeners();
-  }
-
-  function addListeners() {
-    if (!state.active) return;
-
-    // There can be only one listening focus trap at a time
-    activeFocusTraps.activateTrap(trap);
-
-    updateTabbableNodes();
-
-    // Delay ensures that the focused element doesn't capture the event
-    // that caused the focus trap activation.
-    delay(function() {
-      tryFocus(getInitialFocusNode());
-    });
-    doc.addEventListener('focusin', checkFocusIn, true);
-    doc.addEventListener('mousedown', checkPointerDown, true);
-    doc.addEventListener('touchstart', checkPointerDown, true);
-    doc.addEventListener('click', checkClick, true);
-    doc.addEventListener('keydown', checkKey, true);
-
-    return trap;
-  }
-
-  function removeListeners() {
-    if (!state.active) return;
-
-    doc.removeEventListener('focusin', checkFocusIn, true);
-    doc.removeEventListener('mousedown', checkPointerDown, true);
-    doc.removeEventListener('touchstart', checkPointerDown, true);
-    doc.removeEventListener('click', checkClick, true);
-    doc.removeEventListener('keydown', checkKey, true);
-
-    return trap;
-  }
-
-  function getNodeForOption(optionName) {
-    var optionValue = config[optionName];
-    var node = optionValue;
-    if (!optionValue) {
-      return null;
-    }
-    if (typeof optionValue === 'string') {
-      node = doc.querySelector(optionValue);
-      if (!node) {
-        throw new Error('`' + optionName + '` refers to no known node');
-      }
-    }
-    if (typeof optionValue === 'function') {
-      node = optionValue();
-      if (!node) {
-        throw new Error('`' + optionName + '` did not return a node');
-      }
-    }
-    return node;
-  }
-
-  function getInitialFocusNode() {
-    var node;
-    if (getNodeForOption('initialFocus') !== null) {
-      node = getNodeForOption('initialFocus');
-    } else if (container.contains(doc.activeElement)) {
-      node = doc.activeElement;
-    } else {
-      node = state.firstTabbableNode || getNodeForOption('fallbackFocus');
-    }
-
-    if (!node) {
-      throw new Error(
-        "You can't have a focus-trap without at least one focusable element"
-      );
-    }
-
-    return node;
-  }
-
-  // This needs to be done on mousedown and touchstart instead of click
-  // so that it precedes the focus event.
-  function checkPointerDown(e) {
-    if (container.contains(e.target)) return;
-    if (config.clickOutsideDeactivates) {
-      deactivate({
-        returnFocus: !tabbable.isFocusable(e.target)
-      });
-    } else {
-      e.preventDefault();
-    }
-  }
-
-  // In case focus escapes the trap for some strange reason, pull it back in.
-  function checkFocusIn(e) {
-    // In Firefox when you Tab out of an iframe the Document is briefly focused.
-    if (container.contains(e.target) || e.target instanceof Document) {
-      return;
-    }
-    e.stopImmediatePropagation();
-    tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
-  }
-
-  function checkKey(e) {
-    if (config.escapeDeactivates !== false && isEscapeEvent(e)) {
-      e.preventDefault();
-      deactivate();
-      return;
-    }
-    if (isTabEvent(e)) {
-      checkTab(e);
-      return;
-    }
-  }
-
-  // Hijack Tab events on the first and last focusable nodes of the trap,
-  // in order to prevent focus from escaping. If it escapes for even a
-  // moment it can end up scrolling the page and causing confusion so we
-  // kind of need to capture the action at the keydown phase.
-  function checkTab(e) {
-    updateTabbableNodes();
-    if (e.shiftKey && e.target === state.firstTabbableNode) {
-      e.preventDefault();
-      tryFocus(state.lastTabbableNode);
-      return;
-    }
-    if (!e.shiftKey && e.target === state.lastTabbableNode) {
-      e.preventDefault();
-      tryFocus(state.firstTabbableNode);
-      return;
-    }
-  }
-
-  function checkClick(e) {
-    if (config.clickOutsideDeactivates) return;
-    if (container.contains(e.target)) return;
-    e.preventDefault();
-    e.stopImmediatePropagation();
-  }
-
-  function updateTabbableNodes() {
-    var tabbableNodes = tabbable(container);
-    state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();
-    state.lastTabbableNode =
-      tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();
-  }
-
-  function tryFocus(node) {
-    if (node === doc.activeElement) return;
-    if (!node || !node.focus) {
-      tryFocus(getInitialFocusNode());
-      return;
-    }
-
-    node.focus();
-    state.mostRecentlyFocusedNode = node;
-    if (isSelectableInput(node)) {
-      node.select();
-    }
-  }
-}
-
-function isSelectableInput(node) {
-  return (
-    node.tagName &&
-    node.tagName.toLowerCase() === 'input' &&
-    typeof node.select === 'function'
-  );
-}
-
-function isEscapeEvent(e) {
-  return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;
-}
-
-function isTabEvent(e) {
-  return e.key === 'Tab' || e.keyCode === 9;
-}
-
-function delay(fn) {
-  return setTimeout(fn, 0);
-}
-
-module.exports = focusTrap;
-
-
-/***/ }),
-/* 35 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(36);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(37);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCDrawerAdapter>}
- */
-
-var MDCDismissibleDrawerFoundation = function (_MDCFoundation) {
-  _inherits(MDCDismissibleDrawerFoundation, _MDCFoundation);
-
-  _createClass(MDCDismissibleDrawerFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCDrawerAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          hasClass: function hasClass() /* className: string */{},
-          elementHasClass: function elementHasClass() /* element: !Element, className: string */{},
-          notifyClose: function notifyClose() {},
-          notifyOpen: function notifyOpen() {},
-          saveFocus: function saveFocus() {},
-          restoreFocus: function restoreFocus() {},
-          focusActiveNavigationItem: function focusActiveNavigationItem() {},
-          trapFocus: function trapFocus() {},
-          releaseFocus: function releaseFocus() {}
-        }
-      );
-    }
-  }]);
-
-  function MDCDismissibleDrawerFoundation(adapter) {
-    _classCallCheck(this, MDCDismissibleDrawerFoundation);
-
-    /** @private {number} */
-    var _this = _possibleConstructorReturn(this, (MDCDismissibleDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCDismissibleDrawerFoundation)).call(this, _extends(MDCDismissibleDrawerFoundation.defaultAdapter, adapter)));
-
-    _this.animationFrame_ = 0;
-
-    /** @private {number} */
-    _this.animationTimer_ = 0;
-    return _this;
-  }
-
-  _createClass(MDCDismissibleDrawerFoundation, [{
-    key: 'destroy',
-    value: function destroy() {
-      if (this.animationFrame_) {
-        cancelAnimationFrame(this.animationFrame_);
-      }
-      if (this.animationTimer_) {
-        clearTimeout(this.animationTimer_);
-      }
-    }
-
-    /**
-     * Function to open the drawer.
-     */
-
-  }, {
-    key: 'open',
-    value: function open() {
-      var _this2 = this;
-
-      if (this.isOpen() || this.isOpening() || this.isClosing()) {
-        return;
-      }
-
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ANIMATE);
-
-      // Wait a frame once display is no longer "none", to establish basis for animation
-      this.runNextAnimationFrame_(function () {
-        _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
-      });
-
-      this.adapter_.saveFocus();
-    }
-
-    /**
-     * Function to close the drawer.
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      if (!this.isOpen() || this.isOpening() || this.isClosing()) {
-        return;
-      }
-
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-    }
-
-    /**
-     * Extension point for when drawer finishes open animation.
-     * @protected
-     */
-
-  }, {
-    key: 'opened',
-    value: function opened() {}
-
-    /**
-     * Extension point for when drawer finishes close animation.
-     * @protected
-     */
-
-  }, {
-    key: 'closed',
-    value: function closed() {}
-
-    /**
-     * Returns true if drawer is in open state.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isOpen',
-    value: function isOpen() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
-    }
-
-    /**
-     * Returns true if drawer is animating open.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isOpening',
-    value: function isOpening() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING) || this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ANIMATE);
-    }
-
-    /**
-     * Returns true if drawer is animating closed.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isClosing',
-    value: function isClosing() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-    }
-
-    /**
-     * Keydown handler to close drawer when key is escape.
-     * @param evt
-     */
-
-  }, {
-    key: 'handleKeydown',
-    value: function handleKeydown(evt) {
-      var keyCode = evt.keyCode,
-          key = evt.key;
-
-
-      var isEscape = key === 'Escape' || keyCode === 27;
-      if (isEscape) {
-        this.close();
-      }
-    }
-
-    /**
-     * Handles a transition end event on the root element.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleTransitionEnd',
-    value: function handleTransitionEnd(evt) {
-      var OPENING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING,
-          CLOSING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING,
-          OPEN = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN,
-          ANIMATE = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ANIMATE,
-          ROOT = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ROOT;
-
-      // In Edge, transitionend on ripple pseudo-elements yields a target without classList, so check for Element first.
-
-      var isElement = evt.target instanceof Element;
-      if (!isElement || !this.adapter_.elementHasClass( /** @type {!Element} */evt.target, ROOT)) {
-        return;
-      }
-
-      if (this.isClosing()) {
-        this.adapter_.removeClass(OPEN);
-        this.closed();
-        this.adapter_.restoreFocus();
-        this.adapter_.notifyClose();
-      } else {
-        this.adapter_.focusActiveNavigationItem();
-        this.opened();
-        this.adapter_.notifyOpen();
-      }
-
-      this.adapter_.removeClass(ANIMATE);
-      this.adapter_.removeClass(OPENING);
-      this.adapter_.removeClass(CLOSING);
-    }
-
-    /**
-     * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.
-     * @param {Function} callback
-     * @private
-     */
-
-  }, {
-    key: 'runNextAnimationFrame_',
-    value: function runNextAnimationFrame_(callback) {
-      var _this3 = this;
-
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = requestAnimationFrame(function () {
-        _this3.animationFrame_ = 0;
-        clearTimeout(_this3.animationTimer_);
-        _this3.animationTimer_ = setTimeout(callback, 0);
-      });
-    }
-  }]);
-
-  return MDCDismissibleDrawerFoundation;
-}(__WEBPACK_IMPORTED_MODULE_1__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCDismissibleDrawerFoundation);
-
-/***/ }),
-/* 36 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Drawer
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Drawer into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCDrawerAdapter = function () {
-  function MDCDrawerAdapter() {
-    _classCallCheck(this, MDCDrawerAdapter);
-  }
-
-  _createClass(MDCDrawerAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the root Element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root Element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns true if the root Element contains the given class.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * @param {!Element} element target element to verify class name
-     * @param {string} className class name
-     */
-
-  }, {
-    key: "elementHasClass",
-    value: function elementHasClass(element, className) {}
-
-    /**
-     * Saves the focus of currently active element.
-     */
-
-  }, {
-    key: "saveFocus",
-    value: function saveFocus() {}
-
-    /**
-     * Restores focus to element previously saved with 'saveFocus'.
-     */
-
-  }, {
-    key: "restoreFocus",
-    value: function restoreFocus() {}
-
-    /**
-     * Focuses the active / selected navigation item.
-     */
-
-  }, {
-    key: "focusActiveNavigationItem",
-    value: function focusActiveNavigationItem() {}
-
-    /**
-     * Emits a custom event "MDCDrawer:closed" denoting the drawer has closed.
-     */
-
-  }, {
-    key: "notifyClose",
-    value: function notifyClose() {}
-
-    /**
-     * Emits a custom event "MDCDrawer:opened" denoting the drawer has opened.
-     */
-
-  }, {
-    key: "notifyOpen",
-    value: function notifyOpen() {}
-
-    /**
-     * Traps focus on root element and focuses the active navigation element.
-     */
-
-  }, {
-    key: "trapFocus",
-    value: function trapFocus() {}
-
-    /**
-     * Releases focus trap from root element which was set by `trapFocus`
-     * and restores focus to where it was prior to calling `trapFocus`.
-     */
-
-  }, {
-    key: "releaseFocus",
-    value: function releaseFocus() {}
-  }]);
-
-  return MDCDrawerAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCDrawerAdapter);
-
-/***/ }),
-/* 37 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-drawer',
-  DISMISSIBLE: 'mdc-drawer--dismissible',
-  MODAL: 'mdc-drawer--modal',
-  OPEN: 'mdc-drawer--open',
-  ANIMATE: 'mdc-drawer--animate',
-  OPENING: 'mdc-drawer--opening',
-  CLOSING: 'mdc-drawer--closing'
-};
-
-/** @enum {string} */
-var strings = {
-  APP_CONTENT_SELECTOR: '.mdc-drawer-app-content',
-  SCRIM_SELECTOR: '.mdc-drawer-scrim',
-  CLOSE_EVENT: 'MDCDrawer:closed',
-  OPEN_EVENT: 'MDCDrawer:opened'
-};
-
-
-
-/***/ }),
-/* 38 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC List. Provides an interface for managing focus.
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCListAdapter = function () {
-  function MDCListAdapter() {
-    _classCallCheck(this, MDCListAdapter);
-  }
-
-  _createClass(MDCListAdapter, [{
-    key: "getListItemCount",
-
-    /** @return {number} */
-    value: function getListItemCount() {}
-
-    /**
-     * @return {number} */
-
-  }, {
-    key: "getFocusedElementIndex",
-    value: function getFocusedElementIndex() {}
-
-    /**
-     * @param {number} index
-     * @param {string} attribute
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttributeForElementIndex",
-    value: function setAttributeForElementIndex(index, attribute, value) {}
-
-    /**
-     * @param {number} index
-     * @param {string} attribute
-     */
-
-  }, {
-    key: "removeAttributeForElementIndex",
-    value: function removeAttributeForElementIndex(index, attribute) {}
-
-    /**
-     * @param {number} index
-     * @param {string} className
-     */
-
-  }, {
-    key: "addClassForElementIndex",
-    value: function addClassForElementIndex(index, className) {}
-
-    /**
-     * @param {number} index
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClassForElementIndex",
-    value: function removeClassForElementIndex(index, className) {}
-
-    /**
-     * Focuses list item at the index specified.
-     * @param {number} index
-     */
-
-  }, {
-    key: "focusItemAtIndex",
-    value: function focusItemAtIndex(index) {}
-
-    /**
-     * Sets the tabindex to the value specified for all button/a element children of
-     * the list item at the index specified.
-     * @param {number} listItemIndex
-     * @param {number} tabIndexValue
-     */
-
-  }, {
-    key: "setTabIndexForListItemChildren",
-    value: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {}
-
-    /**
-     * @param {number} index
-     * @return {boolean} Returns true if radio button is present at given list item index.
-     */
-
-  }, {
-    key: "hasRadioAtIndex",
-    value: function hasRadioAtIndex(index) {}
-
-    /**
-     * @param {number} index
-     * @return {boolean} Returns true if checkbox is present at given list item index.
-     */
-
-  }, {
-    key: "hasCheckboxAtIndex",
-    value: function hasCheckboxAtIndex(index) {}
-
-    /**
-     * @param {number} index
-     * @return {boolean} Returns true if checkbox inside a list item is checked.
-     */
-
-  }, {
-    key: "isCheckboxCheckedAtIndex",
-    value: function isCheckboxCheckedAtIndex(index) {}
-
-    /**
-     * Sets the checked status of checkbox or radio at given list item index.
-     * @param {number} index
-     * @param {boolean} isChecked
-     */
-
-  }, {
-    key: "setCheckedCheckboxOrRadioAtIndex",
-    value: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {}
-
-    /**
-     * Notifies user action on list item.
-     */
-
-  }, {
-    key: "notifyAction",
-    value: function notifyAction(index) {}
-
-    /**
-     * @return {boolean} Returns true when the current focused element is inside list root.
-     */
-
-  }, {
-    key: "isFocusInsideList",
-    value: function isFocusInsideList() {}
-  }]);
-
-  return MDCListAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCListAdapter);
-
-/***/ }),
-/* 39 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* unused harmony export Index */
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-list',
-  LIST_ITEM_CLASS: 'mdc-list-item',
-  LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',
-  LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated'
-};
-
-/** @enum {string} */
-var strings = {
-  ARIA_ORIENTATION: 'aria-orientation',
-  ARIA_ORIENTATION_HORIZONTAL: 'horizontal',
-  ARIA_SELECTED: 'aria-selected',
-  ARIA_CHECKED: 'aria-checked',
-  ARIA_CHECKED_RADIO_SELECTOR: '[role="radio"][aria-checked="true"]',
-  ARIA_ROLE_CHECKBOX_SELECTOR: '[role="checkbox"]',
-  ARIA_CHECKED_CHECKBOX_SELECTOR: '[role="checkbox"][aria-checked="true"]',
-  RADIO_SELECTOR: 'input[type="radio"]:not(:disabled)',
-  CHECKBOX_SELECTOR: 'input[type="checkbox"]:not(:disabled)',
-  CHECKBOX_RADIO_SELECTOR: 'input[type="checkbox"]:not(:disabled), input[type="radio"]:not(:disabled)',
-  CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled),\n  .' + cssClasses.LIST_ITEM_CLASS + ' a',
-  FOCUSABLE_CHILD_ELEMENTS: '.' + cssClasses.LIST_ITEM_CLASS + ' button:not(:disabled), .' + cssClasses.LIST_ITEM_CLASS + ' a,\n  .' + cssClasses.LIST_ITEM_CLASS + ' input[type="radio"]:not(:disabled),\n  .' + cssClasses.LIST_ITEM_CLASS + ' input[type="checkbox"]:not(:disabled)',
-  ENABLED_ITEMS_SELECTOR: '.mdc-list-item:not(.mdc-list-item--disabled)',
-  ACTION_EVENT: 'MDCList:action'
-};
-
-/** @typedef {number|!Array<number>} */
-var Index = void 0;
-
-
-
-/***/ }),
-/* 40 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var tabbable = __webpack_require__(89);
-var xtend = __webpack_require__(90);
-
-var activeFocusTraps = (function() {
-  var trapQueue = [];
-  return {
-    activateTrap: function(trap) {
-      if (trapQueue.length > 0) {
-        var activeTrap = trapQueue[trapQueue.length - 1];
-        if (activeTrap !== trap) {
-          activeTrap.pause();
-        }
-      }
-
-      var trapIndex = trapQueue.indexOf(trap);
-      if (trapIndex === -1) {
-        trapQueue.push(trap);
-      } else {
-        // move this existing trap to the front of the queue
-        trapQueue.splice(trapIndex, 1);
-        trapQueue.push(trap);
-      }
-    },
-
-    deactivateTrap: function(trap) {
-      var trapIndex = trapQueue.indexOf(trap);
-      if (trapIndex !== -1) {
-        trapQueue.splice(trapIndex, 1);
-      }
-
-      if (trapQueue.length > 0) {
-        trapQueue[trapQueue.length - 1].unpause();
-      }
-    }
-  };
-})();
-
-function focusTrap(element, userOptions) {
-  var doc = document;
-  var container =
-    typeof element === 'string' ? doc.querySelector(element) : element;
-
-  var config = xtend(
-    {
-      returnFocusOnDeactivate: true,
-      escapeDeactivates: true
-    },
-    userOptions
-  );
-
-  var state = {
-    firstTabbableNode: null,
-    lastTabbableNode: null,
-    nodeFocusedBeforeActivation: null,
-    mostRecentlyFocusedNode: null,
-    active: false,
-    paused: false
-  };
-
-  var trap = {
-    activate: activate,
-    deactivate: deactivate,
-    pause: pause,
-    unpause: unpause
-  };
-
-  return trap;
-
-  function activate(activateOptions) {
-    if (state.active) return;
-
-    updateTabbableNodes();
-
-    state.active = true;
-    state.paused = false;
-    state.nodeFocusedBeforeActivation = doc.activeElement;
-
-    var onActivate =
-      activateOptions && activateOptions.onActivate
-        ? activateOptions.onActivate
-        : config.onActivate;
-    if (onActivate) {
-      onActivate();
-    }
-
-    addListeners();
-    return trap;
-  }
-
-  function deactivate(deactivateOptions) {
-    if (!state.active) return;
-
-    removeListeners();
-    state.active = false;
-    state.paused = false;
-
-    activeFocusTraps.deactivateTrap(trap);
-
-    var onDeactivate =
-      deactivateOptions && deactivateOptions.onDeactivate !== undefined
-        ? deactivateOptions.onDeactivate
-        : config.onDeactivate;
-    if (onDeactivate) {
-      onDeactivate();
-    }
-
-    var returnFocus =
-      deactivateOptions && deactivateOptions.returnFocus !== undefined
-        ? deactivateOptions.returnFocus
-        : config.returnFocusOnDeactivate;
-    if (returnFocus) {
-      delay(function() {
-        tryFocus(state.nodeFocusedBeforeActivation);
-      });
-    }
-
-    return trap;
-  }
-
-  function pause() {
-    if (state.paused || !state.active) return;
-    state.paused = true;
-    removeListeners();
-  }
-
-  function unpause() {
-    if (!state.paused || !state.active) return;
-    state.paused = false;
-    addListeners();
-  }
-
-  function addListeners() {
-    if (!state.active) return;
-
-    // There can be only one listening focus trap at a time
-    activeFocusTraps.activateTrap(trap);
-
-    updateTabbableNodes();
-
-    // Delay ensures that the focused element doesn't capture the event
-    // that caused the focus trap activation.
-    delay(function() {
-      tryFocus(getInitialFocusNode());
-    });
-    doc.addEventListener('focusin', checkFocusIn, true);
-    doc.addEventListener('mousedown', checkPointerDown, true);
-    doc.addEventListener('touchstart', checkPointerDown, true);
-    doc.addEventListener('click', checkClick, true);
-    doc.addEventListener('keydown', checkKey, true);
-
-    return trap;
-  }
-
-  function removeListeners() {
-    if (!state.active) return;
-
-    doc.removeEventListener('focusin', checkFocusIn, true);
-    doc.removeEventListener('mousedown', checkPointerDown, true);
-    doc.removeEventListener('touchstart', checkPointerDown, true);
-    doc.removeEventListener('click', checkClick, true);
-    doc.removeEventListener('keydown', checkKey, true);
-
-    return trap;
-  }
-
-  function getNodeForOption(optionName) {
-    var optionValue = config[optionName];
-    var node = optionValue;
-    if (!optionValue) {
-      return null;
-    }
-    if (typeof optionValue === 'string') {
-      node = doc.querySelector(optionValue);
-      if (!node) {
-        throw new Error('`' + optionName + '` refers to no known node');
-      }
-    }
-    if (typeof optionValue === 'function') {
-      node = optionValue();
-      if (!node) {
-        throw new Error('`' + optionName + '` did not return a node');
-      }
-    }
-    return node;
-  }
-
-  function getInitialFocusNode() {
-    var node;
-    if (getNodeForOption('initialFocus') !== null) {
-      node = getNodeForOption('initialFocus');
-    } else if (container.contains(doc.activeElement)) {
-      node = doc.activeElement;
-    } else {
-      node = state.firstTabbableNode || getNodeForOption('fallbackFocus');
-    }
-
-    if (!node) {
-      throw new Error(
-        "You can't have a focus-trap without at least one focusable element"
-      );
-    }
-
-    return node;
-  }
-
-  // This needs to be done on mousedown and touchstart instead of click
-  // so that it precedes the focus event.
-  function checkPointerDown(e) {
-    if (container.contains(e.target)) return;
-    if (config.clickOutsideDeactivates) {
-      deactivate({
-        returnFocus: !tabbable.isFocusable(e.target)
-      });
-    } else {
-      e.preventDefault();
-    }
-  }
-
-  // In case focus escapes the trap for some strange reason, pull it back in.
-  function checkFocusIn(e) {
-    // In Firefox when you Tab out of an iframe the Document is briefly focused.
-    if (container.contains(e.target) || e.target instanceof Document) {
-      return;
-    }
-    e.stopImmediatePropagation();
-    tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
-  }
-
-  function checkKey(e) {
-    if (config.escapeDeactivates !== false && isEscapeEvent(e)) {
-      e.preventDefault();
-      deactivate();
-      return;
-    }
-    if (isTabEvent(e)) {
-      checkTab(e);
-      return;
-    }
-  }
-
-  // Hijack Tab events on the first and last focusable nodes of the trap,
-  // in order to prevent focus from escaping. If it escapes for even a
-  // moment it can end up scrolling the page and causing confusion so we
-  // kind of need to capture the action at the keydown phase.
-  function checkTab(e) {
-    updateTabbableNodes();
-    if (e.shiftKey && e.target === state.firstTabbableNode) {
-      e.preventDefault();
-      tryFocus(state.lastTabbableNode);
-      return;
-    }
-    if (!e.shiftKey && e.target === state.lastTabbableNode) {
-      e.preventDefault();
-      tryFocus(state.firstTabbableNode);
-      return;
-    }
-  }
-
-  function checkClick(e) {
-    if (config.clickOutsideDeactivates) return;
-    if (container.contains(e.target)) return;
-    e.preventDefault();
-    e.stopImmediatePropagation();
-  }
-
-  function updateTabbableNodes() {
-    var tabbableNodes = tabbable(container);
-    state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();
-    state.lastTabbableNode =
-      tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();
-  }
-
-  function tryFocus(node) {
-    if (node === doc.activeElement) return;
-    if (!node || !node.focus) {
-      tryFocus(getInitialFocusNode());
-      return;
-    }
-
-    node.focus();
-    state.mostRecentlyFocusedNode = node;
-    if (isSelectableInput(node)) {
-      node.select();
-    }
-  }
-}
-
-function isSelectableInput(node) {
-  return (
-    node.tagName &&
-    node.tagName.toLowerCase() === 'input' &&
-    typeof node.select === 'function'
-  );
-}
-
-function isEscapeEvent(e) {
-  return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;
-}
-
-function isTabEvent(e) {
-  return e.key === 'Tab' || e.keyCode === 9;
-}
-
-function delay(fn) {
-  return setTimeout(fn, 0);
-}
-
-module.exports = focusTrap;
-
-
-/***/ }),
-/* 41 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Floating Label.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the floating label into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCFloatingLabelAdapter = function () {
-  function MDCFloatingLabelAdapter() {
-    _classCallCheck(this, MDCFloatingLabelAdapter);
-  }
-
-  _createClass(MDCFloatingLabelAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the label element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the label element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns the width of the label element.
-     * @return {number}
-     */
-
-  }, {
-    key: "getWidth",
-    value: function getWidth() {}
-
-    /**
-     * Registers an event listener on the root element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(evtType, handler) {}
-
-    /**
-     * Deregisters an event listener on the root element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(evtType, handler) {}
-  }]);
-
-  return MDCFloatingLabelAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCFloatingLabelAdapter);
-
-/***/ }),
-/* 42 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC TextField Line Ripple.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the line ripple into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCLineRippleAdapter = function () {
-  function MDCLineRippleAdapter() {
-    _classCallCheck(this, MDCLineRippleAdapter);
-  }
-
-  _createClass(MDCLineRippleAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the line ripple element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the line ripple element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Sets the style property with propertyName to value on the root element.
-     * @param {string} propertyName
-     * @param {string} value
-     */
-
-  }, {
-    key: "setStyle",
-    value: function setStyle(propertyName, value) {}
-
-    /**
-     * Registers an event listener on the line ripple element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerEventHandler",
-    value: function registerEventHandler(evtType, handler) {}
-
-    /**
-     * Deregisters an event listener on the line ripple element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterEventHandler",
-    value: function deregisterEventHandler(evtType, handler) {}
-  }]);
-
-  return MDCLineRippleAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCLineRippleAdapter);
-
-/***/ }),
-/* 43 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenu", function() { return MDCMenu; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(113);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(17);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__ = __webpack_require__(45);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__ = __webpack_require__(18);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_index__ = __webpack_require__(14);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AnchorMargin", function() { return __WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Corner", function() { return __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__["Corner"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-/**
- * @extends MDCComponent<!MDCMenuFoundation>
- */
-
-var MDCMenu = function (_MDCComponent) {
-  _inherits(MDCMenu, _MDCComponent);
-
-  /** @param {...?} args */
-  function MDCMenu() {
-    var _ref;
-
-    _classCallCheck(this, MDCMenu);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCMenuSurface} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCMenu.__proto__ || Object.getPrototypeOf(MDCMenu)).call.apply(_ref, [this].concat(args)));
-
-    _this.menuSurface_;
-    /** @private {!MDCList} */
-    _this.list_;
-    /** @private {!Function} */
-    _this.handleKeydown_;
-
-    /** @private {!Function} */
-    _this.handleItemAction_;
-
-    /** @private {!Function} */
-    _this.afterOpenedCallback_;
-    return _this;
-  }
-
-  /**
-   * @param {!HTMLElement} root
-   * @return {!MDCMenu}
-   */
-
-
-  _createClass(MDCMenu, [{
-    key: 'initialize',
-    value: function initialize() {
-      var menuSurfaceFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_index__["MDCMenuSurface"](el);
-      };
-      var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_5__material_list_index__["MDCList"](el);
-      };
-
-      this.menuSurface_ = menuSurfaceFactory(this.root_);
-
-      var list = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].LIST_SELECTOR);
-      if (list) {
-        this.list_ = listFactory(list);
-        this.list_.wrapFocus = true;
-      }
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.afterOpenedCallback_ = function () {
-        return _this2.handleAfterOpened_();
-      };
-      this.handleKeydown_ = function (evt) {
-        return _this2.foundation_.handleKeydown(evt);
-      };
-      this.handleItemAction_ = function (evt) {
-        return _this2.foundation_.handleItemAction(_this2.items[evt.detail]);
-      };
-
-      this.menuSurface_.listen(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);
-      this.listen('keydown', this.handleKeydown_);
-      this.listen(__WEBPACK_IMPORTED_MODULE_5__material_list_index__["MDCListFoundation"].strings.ACTION_EVENT, this.handleItemAction_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      if (this.list_) {
-        this.list_.destroy();
-      }
-
-      this.menuSurface_.destroy();
-      this.menuSurface_.unlisten(__WEBPACK_IMPORTED_MODULE_4__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, this.afterOpenedCallback_);
-      this.unlisten('keydown', this.handleKeydown_);
-      this.unlisten(__WEBPACK_IMPORTED_MODULE_5__material_list_index__["MDCListFoundation"].strings.ACTION_EVENT, this.handleItemAction_);
-      _get(MDCMenu.prototype.__proto__ || Object.getPrototypeOf(MDCMenu.prototype), 'destroy', this).call(this);
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'setAnchorCorner',
-
-
-    /**
-     * @param {!Corner} corner Default anchor corner alignment of top-left
-     *     menu corner.
-     */
-    value: function setAnchorCorner(corner) {
-      this.menuSurface_.setAnchorCorner(corner);
-    }
-
-    /**
-     * @param {!AnchorMargin} margin
-     */
-
-  }, {
-    key: 'setAnchorMargin',
-    value: function setAnchorMargin(margin) {
-      this.menuSurface_.setAnchorMargin(margin);
-    }
-
-    /**
-     * Return the items within the menu. Note that this only contains the set of elements within
-     * the items container that are proper list items, and not supplemental / presentational DOM
-     * elements.
-     * @return {!Array<!HTMLElement>}
-     */
-
-  }, {
-    key: 'getOptionByIndex',
-
-
-    /**
-     * Return the item within the menu at the index specified.
-     * @param {number} index
-     * @return {?HTMLElement}
-     */
-    value: function getOptionByIndex(index) {
-      var items = this.items;
-
-      if (index < items.length) {
-        return this.items[index];
-      } else {
-        return null;
-      }
-    }
-
-    /** @param {boolean} quickOpen */
-
-  }, {
-    key: 'setFixedPosition',
-
-
-    /** @param {boolean} isFixed */
-    value: function setFixedPosition(isFixed) {
-      this.menuSurface_.setFixedPosition(isFixed);
-    }
-  }, {
-    key: 'hoistMenuToBody',
-    value: function hoistMenuToBody() {
-      this.menuSurface_.hoistMenuToBody();
-    }
-
-    /** @param {boolean} isHoisted */
-
-  }, {
-    key: 'setIsHoisted',
-    value: function setIsHoisted(isHoisted) {
-      this.menuSurface_.setIsHoisted(isHoisted);
-    }
-
-    /**
-     * @param {number} x
-     * @param {number} y
-     */
-
-  }, {
-    key: 'setAbsolutePosition',
-    value: function setAbsolutePosition(x, y) {
-      this.menuSurface_.setAbsolutePosition(x, y);
-    }
-
-    /**
-     * Sets the element that the menu-surface is anchored to.
-     * @param {!HTMLElement} element
-     */
-
-  }, {
-    key: 'setAnchorElement',
-    value: function setAnchorElement(element) {
-      this.menuSurface_.anchorElement = element;
-    }
-  }, {
-    key: 'handleAfterOpened_',
-    value: function handleAfterOpened_() {
-      var list = this.items;
-      if (list.length > 0) {
-        list[0].focus();
-      }
-    }
-
-    /** @return {!MDCMenuFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* MDCMenuFoundation */]({
-        addClassToElementAtIndex: function addClassToElementAtIndex(index, className) {
-          var list = _this3.items;
-          list[index].classList.add(className);
-        },
-        removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) {
-          var list = _this3.items;
-          list[index].classList.remove(className);
-        },
-        addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) {
-          var list = _this3.items;
-          list[index].setAttribute(attr, value);
-        },
-        removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) {
-          var list = _this3.items;
-          list[index].removeAttribute(attr);
-        },
-        elementContainsClass: function elementContainsClass(element, className) {
-          return element.classList.contains(className);
-        },
-        closeSurface: function closeSurface() {
-          return _this3.open = false;
-        },
-        getElementIndex: function getElementIndex(element) {
-          return _this3.items.indexOf(element);
-        },
-        getParentElement: function getParentElement(element) {
-          return element.parentElement;
-        },
-        getSelectedElementIndex: function getSelectedElementIndex(selectionGroup) {
-          return _this3.items.indexOf(selectionGroup.querySelector('.' + __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM));
-        },
-        notifySelected: function notifySelected(evtData) {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].SELECTED_EVENT, {
-            index: evtData.index,
-            item: _this3.items[evtData.index]
-          });
-        }
-      });
-    }
-  }, {
-    key: 'open',
-    get: function get() {
-      return this.menuSurface_.open;
-    }
-
-    /** @param {boolean} value */
-    ,
-    set: function set(value) {
-      this.menuSurface_.open = value;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'wrapFocus',
-    get: function get() {
-      return this.list_.wrapFocus;
-    }
-
-    /** @param {boolean} value */
-    ,
-    set: function set(value) {
-      this.list_.wrapFocus = value;
-    }
-  }, {
-    key: 'items',
-    get: function get() {
-      return this.list_.listElements;
-    }
-  }, {
-    key: 'quickOpen',
-    set: function set(quickOpen) {
-      this.menuSurface_.quickOpen = quickOpen;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCMenu(root);
-    }
-  }]);
-
-  return MDCMenu;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 44 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCMenuSurfaceAdapter */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDCMenuSurface. Provides an interface for managing
- * - classes
- * - dom
- * - focus
- * - position
- * - dimensions
- * - event handlers
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCMenuSurfaceAdapter = function () {
-  function MDCMenuSurfaceAdapter() {
-    _classCallCheck(this, MDCMenuSurfaceAdapter);
-  }
-
-  _createClass(MDCMenuSurfaceAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "hasAnchor",
-    value: function hasAnchor() {}
-
-    /** Emits an event when the menu surface is closed. */
-
-  }, {
-    key: "notifyClose",
-    value: function notifyClose() {}
-
-    /** Emits an event when the menu surface is opened. */
-
-  }, {
-    key: "notifyOpen",
-    value: function notifyOpen() {}
-
-    /**
-     * @return {boolean}
-     * @param {EventTarget} el
-     */
-
-  }, {
-    key: "isElementInContainer",
-    value: function isElementInContainer(el) {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isRtl",
-    value: function isRtl() {}
-
-    /** @param {string} origin */
-
-  }, {
-    key: "setTransformOrigin",
-    value: function setTransformOrigin(origin) {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isFocused",
-    value: function isFocused() {}
-
-    /** Saves the element that was focused before the menu surface was opened. */
-
-  }, {
-    key: "saveFocus",
-    value: function saveFocus() {}
-
-    /** Restores focus to the element that was focused before the menu surface was opened. */
-
-  }, {
-    key: "restoreFocus",
-    value: function restoreFocus() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isFirstElementFocused",
-    value: function isFirstElementFocused() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isLastElementFocused",
-    value: function isLastElementFocused() {}
-
-    /** Focuses the first focusable element in the menu-surface. */
-
-  }, {
-    key: "focusFirstElement",
-    value: function focusFirstElement() {}
-
-    /** Focuses the first focusable element in the menu-surface. */
-
-  }, {
-    key: "focusLastElement",
-    value: function focusLastElement() {}
-
-    /** @return {!{width: number, height: number}} */
-
-  }, {
-    key: "getInnerDimensions",
-    value: function getInnerDimensions() {}
-
-    /** @return {!{width: number, height: number, top: number, right: number, bottom: number, left: number}} */
-
-  }, {
-    key: "getAnchorDimensions",
-    value: function getAnchorDimensions() {}
-
-    /** @return {!{ width: number, height: number }} */
-
-  }, {
-    key: "getWindowDimensions",
-    value: function getWindowDimensions() {}
-
-    /** @return {!{ width: number, height: number }} */
-
-  }, {
-    key: "getBodyDimensions",
-    value: function getBodyDimensions() {}
-
-    /** @return {!{ width: number, height: number }} */
-
-  }, {
-    key: "getWindowScroll",
-    value: function getWindowScroll() {}
-
-    /** @param {!{
-    *   top: (string|undefined),
-    *   right: (string|undefined),
-    *   bottom: (string|undefined),
-    *   left: (string|undefined)
-    * }} position */
-
-  }, {
-    key: "setPosition",
-    value: function setPosition(position) {}
-
-    /** @param {string} height */
-
-  }, {
-    key: "setMaxHeight",
-    value: function setMaxHeight(height) {}
-  }]);
-
-  return MDCMenuSurfaceAdapter;
-}();
-
-
-
-/***/ }),
-/* 45 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuSurface", function() { return MDCMenuSurface; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(115);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(18);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(44);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(19);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCMenuSurfaceFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AnchorMargin", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Corner", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "CornerBit", function() { return __WEBPACK_IMPORTED_MODULE_4__constants__["b"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_1__util__; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-/**
- * @extends MDCComponent<!MDCMenuSurfaceFoundation>
- */
-
-var MDCMenuSurface = function (_MDCComponent) {
-  _inherits(MDCMenuSurface, _MDCComponent);
-
-  /** @param {...?} args */
-  function MDCMenuSurface() {
-    var _ref;
-
-    _classCallCheck(this, MDCMenuSurface);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCMenuSurface.__proto__ || Object.getPrototypeOf(MDCMenuSurface)).call.apply(_ref, [this].concat(args)));
-
-    _this.previousFocus_;
-    /** @private {!Element} */
-    _this.anchorElement;
-    /** @private {Element} */
-    _this.firstFocusableElement_;
-    /** @private {Element} */
-    _this.lastFocusableElement_;
-    /** @private {!Function} */
-    _this.handleKeydown_;
-    /** @private {!Function} */
-    _this.handleBodyClick_;
-    /** @private {!Function} */
-    _this.registerBodyClickListener_;
-    /** @private {!Function} */
-    _this.deregisterBodyClickListener_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCMenuSurface}
-   */
-
-
-  _createClass(MDCMenuSurface, [{
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      if (this.root_.parentElement && this.root_.parentElement.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].ANCHOR)) {
-        this.anchorElement = this.root_.parentElement;
-      }
-
-      if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED)) {
-        this.setFixedPosition(true);
-      }
-
-      this.handleKeydown_ = function (evt) {
-        return _this2.foundation_.handleKeydown(evt);
-      };
-      this.handleBodyClick_ = function (evt) {
-        return _this2.foundation_.handleBodyClick(evt);
-      };
-
-      this.registerBodyClickListener_ = function () {
-        return document.body.addEventListener('click', _this2.handleBodyClick_);
-      };
-      this.deregisterBodyClickListener_ = function () {
-        return document.body.removeEventListener('click', _this2.handleBodyClick_);
-      };
-
-      this.root_.addEventListener('keydown', this.handleKeydown_);
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.root_.removeEventListener('keydown', this.handleKeydown_);
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].OPENED_EVENT, this.registerBodyClickListener_);
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].CLOSED_EVENT, this.deregisterBodyClickListener_);
-      _get(MDCMenuSurface.prototype.__proto__ || Object.getPrototypeOf(MDCMenuSurface.prototype), 'destroy', this).call(this);
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'hoistMenuToBody',
-
-
-    /**
-     * Removes the menu-surface from it's current location and appends it to the
-     * body to overcome any overflow:hidden issues.
-     */
-    value: function hoistMenuToBody() {
-      document.body.appendChild(this.root_.parentElement.removeChild(this.root_));
-      this.setIsHoisted(true);
-    }
-
-    /**
-     * Sets the foundation to use page offsets for an positioning when the menu
-     * is hoisted to the body.
-     * @param {boolean} isHoisted
-     */
-
-  }, {
-    key: 'setIsHoisted',
-    value: function setIsHoisted(isHoisted) {
-      this.foundation_.setIsHoisted(isHoisted);
-    }
-
-    /**
-     * Sets the element that the menu-surface is anchored to.
-     * @param {!Element} element
-     */
-
-  }, {
-    key: 'setMenuSurfaceAnchorElement',
-    value: function setMenuSurfaceAnchorElement(element) {
-      this.anchorElement = element;
-    }
-
-    /**
-     * Sets the menu-surface to position: fixed.
-     * @param {boolean} isFixed
-     */
-
-  }, {
-    key: 'setFixedPosition',
-    value: function setFixedPosition(isFixed) {
-      if (isFixed) {
-        this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED);
-      } else {
-        this.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_4__constants__["c" /* cssClasses */].FIXED);
-      }
-
-      this.foundation_.setFixedPosition(isFixed);
-    }
-
-    /**
-     * Sets the absolute x/y position to position based on. Requires the menu to be hoisted.
-     * @param {number} x
-     * @param {number} y
-     */
-
-  }, {
-    key: 'setAbsolutePosition',
-    value: function setAbsolutePosition(x, y) {
-      this.foundation_.setAbsolutePosition(x, y);
-      this.setIsHoisted(true);
-    }
-
-    /**
-     * @param {!Corner} corner Default anchor corner alignment of top-left
-     *     surface corner.
-     */
-
-  }, {
-    key: 'setAnchorCorner',
-    value: function setAnchorCorner(corner) {
-      this.foundation_.setAnchorCorner(corner);
-    }
-
-    /**
-     * @param {!AnchorMargin} margin
-     */
-
-  }, {
-    key: 'setAnchorMargin',
-    value: function setAnchorMargin(margin) {
-      this.foundation_.setAnchorMargin(margin);
-    }
-
-    /** @param {boolean} quickOpen */
-
-  }, {
-    key: 'getDefaultFoundation',
-
-
-    /** @return {!MDCMenuSurfaceFoundation} */
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */](
-      /** @type {!MDCMenuSurfaceAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this3.root_.classList.contains(className);
-        },
-        hasAnchor: function hasAnchor() {
-          return !!_this3.anchorElement;
-        },
-        notifyClose: function notifyClose() {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */].strings.CLOSED_EVENT, {});
-        },
-        notifyOpen: function notifyOpen() {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["b" /* MDCMenuSurfaceFoundation */].strings.OPENED_EVENT, {});
-        },
-        isElementInContainer: function isElementInContainer(el) {
-          return _this3.root_ === el || _this3.root_.contains(el);
-        },
-        isRtl: function isRtl() {
-          return getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';
-        },
-        setTransformOrigin: function setTransformOrigin(origin) {
-          _this3.root_.style[__WEBPACK_IMPORTED_MODULE_1__util__["getTransformPropertyName"](window) + '-origin'] = origin;
-        }
-      }, this.getFocusAdapterMethods_(), this.getDimensionAdapterMethods_()));
-    }
-
-    /**
-     * @return {!{
-     * isFocused: function(): boolean,
-     * saveFocus: function(),
-     * restoreFocus: function(),
-     * isFirstElementFocused: function(): boolean,
-     * isLastElementFocused: function(): boolean,
-     * focusFirstElement: function(),
-     * focusLastElement: function(),
-     * }}
-     * @private
-     */
-
-  }, {
-    key: 'getFocusAdapterMethods_',
-    value: function getFocusAdapterMethods_() {
-      var _this4 = this;
-
-      return {
-        isFocused: function isFocused() {
-          return document.activeElement === _this4.root_;
-        },
-        saveFocus: function saveFocus() {
-          _this4.previousFocus_ = document.activeElement;
-        },
-        restoreFocus: function restoreFocus() {
-          if (_this4.root_.contains(document.activeElement)) {
-            if (_this4.previousFocus_ && _this4.previousFocus_.focus) {
-              _this4.previousFocus_.focus();
-            }
-          }
-        },
-        isFirstElementFocused: function isFirstElementFocused() {
-          return _this4.firstFocusableElement_ && _this4.firstFocusableElement_ === document.activeElement;
-        },
-        isLastElementFocused: function isLastElementFocused() {
-          return _this4.lastFocusableElement_ && _this4.lastFocusableElement_ === document.activeElement;
-        },
-        focusFirstElement: function focusFirstElement() {
-          return _this4.firstFocusableElement_ && _this4.firstFocusableElement_.focus && _this4.firstFocusableElement_.focus();
-        },
-        focusLastElement: function focusLastElement() {
-          return _this4.lastFocusableElement_ && _this4.lastFocusableElement_.focus && _this4.lastFocusableElement_.focus();
-        }
-      };
-    }
-
-    /**
-     * @return {!{
-     * getInnerDimensions: function(),
-     * getAnchorDimensions: function(): (HTMLElement | null | * | ClientRect),
-     * getWindowDimensions: function(),
-     * setPosition: function(*),
-     * setMaxHeight: function(string)}}
-     * @private
-     */
-
-  }, {
-    key: 'getDimensionAdapterMethods_',
-    value: function getDimensionAdapterMethods_() {
-      var _this5 = this;
-
-      return {
-        getInnerDimensions: function getInnerDimensions() {
-          return { width: _this5.root_.offsetWidth, height: _this5.root_.offsetHeight };
-        },
-        getAnchorDimensions: function getAnchorDimensions() {
-          return _this5.anchorElement && _this5.anchorElement.getBoundingClientRect();
-        },
-        getWindowDimensions: function getWindowDimensions() {
-          return { width: window.innerWidth, height: window.innerHeight };
-        },
-        getBodyDimensions: function getBodyDimensions() {
-          return { width: document.body.clientWidth, height: document.body.clientHeight };
-        },
-        getWindowScroll: function getWindowScroll() {
-          return { x: window.pageXOffset, y: window.pageYOffset };
-        },
-        setPosition: function setPosition(position) {
-          _this5.root_.style.left = 'left' in position ? position.left : null;
-          _this5.root_.style.right = 'right' in position ? position.right : null;
-          _this5.root_.style.top = 'top' in position ? position.top : null;
-          _this5.root_.style.bottom = 'bottom' in position ? position.bottom : null;
-        },
-        setMaxHeight: function setMaxHeight(height) {
-          _this5.root_.style.maxHeight = height;
-        }
-      };
-    }
-  }, {
-    key: 'open',
-    get: function get() {
-      return this.foundation_.isOpen();
-    }
-
-    /** @param {boolean} value */
-    ,
-    set: function set(value) {
-      if (value) {
-        var focusableElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__constants__["e" /* strings */].FOCUSABLE_ELEMENTS);
-        this.firstFocusableElement_ = focusableElements.length > 0 ? focusableElements[0] : null;
-        this.lastFocusableElement_ = focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;
-        this.foundation_.open();
-      } else {
-        this.foundation_.close();
-      }
-    }
-  }, {
-    key: 'quickOpen',
-    set: function set(quickOpen) {
-      this.foundation_.setQuickOpen(quickOpen);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCMenuSurface(root);
-    }
-  }]);
-
-  return MDCMenuSurface;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 46 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Notched Outline.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Notched Outline into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCNotchedOutlineAdapter = function () {
-  function MDCNotchedOutlineAdapter() {
-    _classCallCheck(this, MDCNotchedOutlineAdapter);
-  }
-
-  _createClass(MDCNotchedOutlineAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the root element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Sets the width style property of the notch element.
-     * @param {number} width
-     */
-
-  }, {
-    key: "setNotchWidthProperty",
-    value: function setNotchWidthProperty(width) {}
-
-    /**
-     * Removes the width style property from the notch element.
-     */
-
-  }, {
-    key: "removeNotchWidthProperty",
-    value: function removeNotchWidthProperty() {}
-  }]);
-
-  return MDCNotchedOutlineAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCNotchedOutlineAdapter);
-
-/***/ }),
-/* 47 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch'
-};
-
-/** @enum {number} */
-var numbers = {
-  // This should stay in sync with $mdc-notched-outline-padding * 2.
-  NOTCH_ELEMENT_PADDING: 8
-};
-
-/** @enum {string} */
-var cssClasses = {
-  OUTLINE_NOTCHED: 'mdc-notched-outline--notched',
-  OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded',
-  NO_LABEL: 'mdc-notched-outline--no-label'
-};
-
-
-
-/***/ }),
-/* 48 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCSelectAdapter */
-/* unused harmony export FoundationMapType */
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__icon_index__ = __webpack_require__(21);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_index__ = __webpack_require__(22);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-/* eslint-disable no-unused-vars */
-
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @typedef {{
- *   leadingIcon: (!MDCSelectIconFoundation|undefined),
- *   helperText: (!MDCSelectHelperTextFoundation|undefined),
- * }}
- */
-var FoundationMapType = void 0;
-
-/**
- * Adapter for MDC Select. Provides an interface for managing
- * - classes
- * - dom
- * - event handlers
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-
-var MDCSelectAdapter = function () {
-  function MDCSelectAdapter() {
-    _classCallCheck(this, MDCSelectAdapter);
-  }
-
-  _createClass(MDCSelectAdapter, [{
-    key: 'addClass',
-
-    /**
-     * Adds class to root element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root element.
-     * @param {string} className
-     */
-
-  }, {
-    key: 'removeClass',
-    value: function removeClass(className) {}
-
-    /**
-     * Returns true if the root element contains the given class name.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'hasClass',
-    value: function hasClass(className) {}
-
-    /**
-     * Activates the bottom line, showing a focused state.
-     */
-
-  }, {
-    key: 'activateBottomLine',
-    value: function activateBottomLine() {}
-
-    /**
-     * Deactivates the bottom line.
-     */
-
-  }, {
-    key: 'deactivateBottomLine',
-    value: function deactivateBottomLine() {}
-
-    /**
-     * Sets the value of the select.
-     * @param {string} value
-     */
-
-  }, {
-    key: 'setValue',
-    value: function setValue(value) {}
-
-    /**
-     * Returns the selected value of the select element.
-     * @return {string}
-     */
-
-  }, {
-    key: 'getValue',
-    value: function getValue() {}
-
-    /**
-     * Floats label determined based off of the shouldFloat argument.
-     * @param {boolean} shouldFloat
-     */
-
-  }, {
-    key: 'floatLabel',
-    value: function floatLabel(shouldFloat) {}
-
-    /**
-     * Returns width of label in pixels, if the label exists.
-     * @return {number}
-     */
-
-  }, {
-    key: 'getLabelWidth',
-    value: function getLabelWidth() {}
-
-    /**
-     * Returns true if outline element exists, false if it doesn't.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'hasOutline',
-    value: function hasOutline() {}
-
-    /**
-     * Only implement if outline element exists.
-     * @param {number} labelWidth
-     */
-
-  }, {
-    key: 'notchOutline',
-    value: function notchOutline(labelWidth) {}
-
-    /**
-     * Closes notch in outline element, if the outline exists.
-     */
-
-  }, {
-    key: 'closeOutline',
-    value: function closeOutline() {}
-
-    /**
-     * Opens the menu.
-     */
-
-  }, {
-    key: 'openMenu',
-    value: function openMenu() {}
-
-    /**
-     * Closes the menu.
-     */
-
-  }, {
-    key: 'closeMenu',
-    value: function closeMenu() {}
-
-    /**
-     * Returns true if the menu is currently open.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isMenuOpen',
-    value: function isMenuOpen() {}
-
-    /**
-     * Sets the selected index of the select to the index provided.
-     * @param {number} index
-     */
-
-  }, {
-    key: 'setSelectedIndex',
-    value: function setSelectedIndex(index) {}
-
-    /**
-     * Sets the select to disabled.
-     * @param {boolean} isDisabled
-     */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(isDisabled) {}
-
-    /**
-     * Sets the line ripple transform origin center.
-     * @param {number} normalizedX
-     */
-
-  }, {
-    key: 'setRippleCenter',
-    value: function setRippleCenter(normalizedX) {}
-
-    /**
-     * Emits a change event when an element is selected.
-     * @param {string} value
-     */
-
-  }, {
-    key: 'notifyChange',
-    value: function notifyChange(value) {}
-
-    /**
-     * Checks if the select is currently valid.
-     * @return {boolean} isValid
-     */
-
-  }, {
-    key: 'checkValidity',
-    value: function checkValidity() {}
-
-    /**
-     * Adds/Removes the invalid class.
-     * @param {boolean} isValid
-     */
-
-  }, {
-    key: 'setValid',
-    value: function setValid(isValid) {}
-  }]);
-
-  return MDCSelectAdapter;
-}();
-
-
-
-/***/ }),
-/* 49 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Select Icon.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the select icon into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCSelectIconAdapter = function () {
-  function MDCSelectIconAdapter() {
-    _classCallCheck(this, MDCSelectIconAdapter);
-  }
-
-  _createClass(MDCSelectIconAdapter, [{
-    key: "getAttr",
-
-    /**
-     * Gets the value of an attribute on the icon element.
-     * @param {string} attr
-     * @return {string}
-     */
-    value: function getAttr(attr) {}
-
-    /**
-     * Sets an attribute on the icon element.
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attr, value) {}
-
-    /**
-     * Removes an attribute from the icon element.
-     * @param {string} attr
-     */
-
-  }, {
-    key: "removeAttr",
-    value: function removeAttr(attr) {}
-
-    /**
-     * Sets the text content of the icon element.
-     * @param {string} content
-     */
-
-  }, {
-    key: "setContent",
-    value: function setContent(content) {}
-
-    /**
-     * Registers an event listener on the icon element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(evtType, handler) {}
-
-    /**
-     * Deregisters an event listener on the icon element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(evtType, handler) {}
-
-    /**
-     * Emits a custom event "MDCSelect:icon" denoting a user has clicked the icon.
-     */
-
-  }, {
-    key: "notifyIconAction",
-    value: function notifyIconAction() {}
-  }]);
-
-  return MDCSelectIconAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectIconAdapter);
-
-/***/ }),
-/* 50 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Select Helper Text.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Select helper text into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCSelectHelperTextAdapter = function () {
-  function MDCSelectHelperTextAdapter() {
-    _classCallCheck(this, MDCSelectHelperTextAdapter);
-  }
-
-  _createClass(MDCSelectHelperTextAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the helper text element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the helper text element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns whether or not the helper text element contains the given class.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Sets an attribute with a given value on the helper text element.
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attr, value) {}
-
-    /**
-     * Removes an attribute from the helper text element.
-     * @param {string} attr
-     */
-
-  }, {
-    key: "removeAttr",
-    value: function removeAttr(attr) {}
-
-    /**
-     * Sets the text content for the helper text element.
-     * @param {string} content
-     */
-
-  }, {
-    key: "setContent",
-    value: function setContent(content) {}
-  }]);
-
-  return MDCSelectHelperTextAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCSelectHelperTextAdapter);
-
-/***/ }),
-/* 51 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  DISABLED: 'mdc-select--disabled',
-  ROOT: 'mdc-select',
-  OUTLINED: 'mdc-select--outlined',
-  FOCUSED: 'mdc-select--focused',
-  SELECTED_ITEM_CLASS: 'mdc-list-item--selected',
-  WITH_LEADING_ICON: 'mdc-select--with-leading-icon',
-  INVALID: 'mdc-select--invalid',
-  REQUIRED: 'mdc-select--required'
-};
-
-/** @enum {string} */
-var strings = {
-  ARIA_CONTROLS: 'aria-controls',
-  CHANGE_EVENT: 'MDCSelect:change',
-  SELECTED_ITEM_SELECTOR: '.' + cssClasses.SELECTED_ITEM_CLASS,
-  LEADING_ICON_SELECTOR: '.mdc-select__icon',
-  SELECTED_TEXT_SELECTOR: '.mdc-select__selected-text',
-  HIDDEN_INPUT_SELECTOR: 'input[type="hidden"]',
-  MENU_SELECTOR: '.mdc-select__menu',
-  LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',
-  LABEL_SELECTOR: '.mdc-floating-label',
-  NATIVE_CONTROL_SELECTOR: '.mdc-select__native-control',
-  OUTLINE_SELECTOR: '.mdc-notched-outline',
-  ENHANCED_VALUE_ATTR: 'data-value',
-  ARIA_SELECTED_ATTR: 'aria-selected'
-};
-
-/** @enum {number} */
-var numbers = {
-  LABEL_SCALE: 0.75
-};
-
-
-
-/***/ }),
-/* 52 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ACTIVE: 'mdc-slider--active',
-  DISABLED: 'mdc-slider--disabled',
-  DISCRETE: 'mdc-slider--discrete',
-  FOCUS: 'mdc-slider--focus',
-  IN_TRANSIT: 'mdc-slider--in-transit',
-  IS_DISCRETE: 'mdc-slider--discrete',
-  HAS_TRACK_MARKER: 'mdc-slider--display-markers'
-};
-
-/** @enum {string} */
-var strings = {
-  TRACK_SELECTOR: '.mdc-slider__track',
-  TRACK_MARKER_CONTAINER_SELECTOR: '.mdc-slider__track-marker-container',
-  LAST_TRACK_MARKER_SELECTOR: '.mdc-slider__track-marker:last-child',
-  THUMB_CONTAINER_SELECTOR: '.mdc-slider__thumb-container',
-  PIN_VALUE_MARKER_SELECTOR: '.mdc-slider__pin-value-marker',
-  ARIA_VALUEMIN: 'aria-valuemin',
-  ARIA_VALUEMAX: 'aria-valuemax',
-  ARIA_VALUENOW: 'aria-valuenow',
-  ARIA_DISABLED: 'aria-disabled',
-  STEP_DATA_ATTR: 'data-step',
-  CHANGE_EVENT: 'MDCSlider:change',
-  INPUT_EVENT: 'MDCSlider:input'
-};
-
-/** @enum {number} */
-var numbers = {
-  PAGE_FACTOR: 4
-};
-
-
-
-/***/ }),
-/* 53 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint-disable no-unused-vars */
-
-/**
- * Adapter for MDC Slider.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Slider into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCSliderAdapter = function () {
-  function MDCSliderAdapter() {
-    _classCallCheck(this, MDCSliderAdapter);
-  }
-
-  _createClass(MDCSliderAdapter, [{
-    key: "hasClass",
-
-    /**
-     * Returns true if className exists for the slider Element
-     * @param {string} className
-     * @return {boolean}
-     */
-    value: function hasClass(className) {}
-
-    /**
-     * Adds a class to the slider Element
-     * @param {string} className
-     */
-
-  }, {
-    key: "addClass",
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the slider Element
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns a string if attribute name exists on the slider Element,
-     * otherwise returns null
-     * @param {string} name
-     * @return {?string}
-     */
-
-  }, {
-    key: "getAttribute",
-    value: function getAttribute(name) {}
-
-    /**
-     * Sets attribute name on slider Element to value
-     * @param {string} name
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttribute",
-    value: function setAttribute(name, value) {}
-
-    /**
-     * Removes attribute name from slider Element
-     * @param {string} name
-     */
-
-  }, {
-    key: "removeAttribute",
-    value: function removeAttribute(name) {}
-
-    /**
-     * Returns the bounding client rect for the slider Element
-     * @return {?ClientRect}
-     */
-
-  }, {
-    key: "computeBoundingRect",
-    value: function computeBoundingRect() {}
-
-    /**
-     * Returns the tab index of the slider Element
-     * @return {number}
-     */
-
-  }, {
-    key: "getTabIndex",
-    value: function getTabIndex() {}
-
-    /**
-     * Registers an event handler on the root element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(type, handler) {}
-
-    /**
-     * Deregisters an event handler on the root element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(type, handler) {}
-
-    /**
-     * Registers an event handler on the thumb container element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerThumbContainerInteractionHandler",
-    value: function registerThumbContainerInteractionHandler(type, handler) {}
-
-    /**
-     * Deregisters an event handler on the thumb container element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterThumbContainerInteractionHandler",
-    value: function deregisterThumbContainerInteractionHandler(type, handler) {}
-
-    /**
-     * Registers an event handler on the body for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerBodyInteractionHandler",
-    value: function registerBodyInteractionHandler(type, handler) {}
-
-    /**
-     * Deregisters an event handler on the body for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterBodyInteractionHandler",
-    value: function deregisterBodyInteractionHandler(type, handler) {}
-
-    /**
-     * Registers an event handler for the window resize event
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerResizeHandler",
-    value: function registerResizeHandler(handler) {}
-
-    /**
-     * Deregisters an event handler for the window resize event
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterResizeHandler",
-    value: function deregisterResizeHandler(handler) {}
-
-    /**
-     * Emits a custom event MDCSlider:input from the root
-     */
-
-  }, {
-    key: "notifyInput",
-    value: function notifyInput() {}
-
-    /**
-     * Emits a custom event MDCSlider:change from the root
-     */
-
-  }, {
-    key: "notifyChange",
-    value: function notifyChange() {}
-
-    /**
-     * Sets a style property of the thumb container element to the passed value
-     * @param {string} propertyName
-     * @param {string} value
-     */
-
-  }, {
-    key: "setThumbContainerStyleProperty",
-    value: function setThumbContainerStyleProperty(propertyName, value) {}
-
-    /**
-     * Sets a style property of the track element to the passed value
-     * @param {string} propertyName
-     * @param {string} value
-     */
-
-  }, {
-    key: "setTrackStyleProperty",
-    value: function setTrackStyleProperty(propertyName, value) {}
-
-    /**
-     * Sets the inner text of the pin marker to the passed value
-     * @param {number} value
-     */
-
-  }, {
-    key: "setMarkerValue",
-    value: function setMarkerValue(value) {}
-
-    /**
-     * Appends the passed number of track markers to the track mark container element
-     * @param {number} numMarkers
-     */
-
-  }, {
-    key: "appendTrackMarkers",
-    value: function appendTrackMarkers(numMarkers) {}
-
-    /**
-     * Removes all track markers fromt he track mark container element
-     */
-
-  }, {
-    key: "removeTrackMarkers",
-    value: function removeTrackMarkers() {}
-
-    /**
-     * Sets a style property of the last track marker to the passed value
-     * @param {string} propertyName
-     * @param {string} value
-     */
-
-  }, {
-    key: "setLastTrackMarkersStyleProperty",
-    value: function setLastTrackMarkersStyleProperty(propertyName, value) {}
-
-    /**
-     * Returns true if the root element is RTL, otherwise false
-     * @return {boolean}
-     */
-
-  }, {
-    key: "isRTL",
-    value: function isRTL() {}
-  }]);
-
-  return MDCSliderAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCSliderAdapter);
-
-/***/ }),
-/* 54 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTab", function() { return MDCTab; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__ = __webpack_require__(55);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(10);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(140);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/* eslint-enable no-unused-vars */
-
-
-
-/**
- * @extends {MDCComponent<!MDCTabFoundation>}
- * @final
- */
-
-var MDCTab = function (_MDCComponent) {
-  _inherits(MDCTab, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCTab() {
-    var _ref;
-
-    _classCallCheck(this, MDCTab);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {string} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTab.__proto__ || Object.getPrototypeOf(MDCTab)).call.apply(_ref, [this].concat(args)));
-
-    _this.id;
-    /** @private {?MDCRipple} */
-    _this.ripple_;
-    /** @private {?MDCTabIndicator} */
-    _this.tabIndicator_;
-    /** @private {?Element} */
-    _this.content_;
-
-    /** @private {?Function} */
-    _this.handleClick_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCTab}
-   */
-
-
-  _createClass(MDCTab, [{
-    key: 'initialize',
-    value: function initialize() {
-      var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
-        return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
-      };
-      var tabIndicatorFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_2__material_tab_indicator_index__["MDCTabIndicator"](el);
-      };
-
-      this.id = this.root_.id;
-      var rippleSurface = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.RIPPLE_SELECTOR);
-      var rippleAdapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter( /** @type {!RippleCapableSurface} */this), {
-        addClass: function addClass(className) {
-          return rippleSurface.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return rippleSurface.classList.remove(className);
-        },
-        updateCssVariable: function updateCssVariable(varName, value) {
-          return rippleSurface.style.setProperty(varName, value);
-        }
-      });
-      var rippleFoundation = new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](rippleAdapter);
-      this.ripple_ = rippleFactory(this.root_, rippleFoundation);
-
-      var tabIndicatorElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_INDICATOR_SELECTOR);
-      this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);
-
-      this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);
-      this.listen('click', this.handleClick_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.unlisten('click', /** @type {!Function} */this.handleClick_);
-      this.ripple_.destroy();
-      _get(MDCTab.prototype.__proto__ || Object.getPrototypeOf(MDCTab.prototype), 'destroy', this).call(this);
-    }
-
-    /**
-     * @return {!MDCTabFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */](
-      /** @type {!MDCTabAdapter} */{
-        setAttr: function setAttr(attr, value) {
-          return _this2.root_.setAttribute(attr, value);
-        },
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        activateIndicator: function activateIndicator(previousIndicatorClientRect) {
-          return _this2.tabIndicator_.activate(previousIndicatorClientRect);
-        },
-        deactivateIndicator: function deactivateIndicator() {
-          return _this2.tabIndicator_.deactivate();
-        },
-        notifyInteracted: function notifyInteracted() {
-          return _this2.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.INTERACTED_EVENT, { tabId: _this2.id }, true /* bubble */);
-        },
-        getOffsetLeft: function getOffsetLeft() {
-          return _this2.root_.offsetLeft;
-        },
-        getOffsetWidth: function getOffsetWidth() {
-          return _this2.root_.offsetWidth;
-        },
-        getContentOffsetLeft: function getContentOffsetLeft() {
-          return _this2.content_.offsetLeft;
-        },
-        getContentOffsetWidth: function getContentOffsetWidth() {
-          return _this2.content_.offsetWidth;
-        },
-        focus: function focus() {
-          return _this2.root_.focus();
-        }
-      });
-    }
-
-    /**
-     * Getter for the active state of the tab
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'activate',
-
-
-    /**
-     * Activates the tab
-     * @param {!ClientRect=} computeIndicatorClientRect
-     */
-    value: function activate(computeIndicatorClientRect) {
-      this.foundation_.activate(computeIndicatorClientRect);
-    }
-
-    /**
-     * Deactivates the tab
-     */
-
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.foundation_.deactivate();
-    }
-
-    /**
-     * Returns the indicator's client rect
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: 'computeIndicatorClientRect',
-    value: function computeIndicatorClientRect() {
-      return this.tabIndicator_.computeContentClientRect();
-    }
-
-    /**
-     * @return {!MDCTabDimensions}
-     */
-
-  }, {
-    key: 'computeDimensions',
-    value: function computeDimensions() {
-      return this.foundation_.computeDimensions();
-    }
-
-    /**
-     * Focuses the tab
-     */
-
-  }, {
-    key: 'focus',
-    value: function focus() {
-      this.root_.focus();
-    }
-  }, {
-    key: 'active',
-    get: function get() {
-      return this.foundation_.isActive();
-    }
-  }, {
-    key: 'focusOnActivate',
-    set: function set(focusOnActivate) {
-      this.foundation_.setFocusOnActivate(focusOnActivate);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCTab(root);
-    }
-  }]);
-
-  return MDCTab;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 55 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabIndicator", function() { return MDCTabIndicator; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(56);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(24);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__ = __webpack_require__(138);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__fading_foundation__ = __webpack_require__(139);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSlidingTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFadingTabIndicatorFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__fading_foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTabIndicatorFoundation>}
- * @final
- */
-
-var MDCTabIndicator = function (_MDCComponent) {
-  _inherits(MDCTabIndicator, _MDCComponent);
-
-  _createClass(MDCTabIndicator, null, [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTabIndicator}
-     */
-    value: function attachTo(root) {
-      return new MDCTabIndicator(root);
-    }
-
-    /**
-     * @param {...?} args
-     */
-
-  }]);
-
-  function MDCTabIndicator() {
-    var _ref;
-
-    _classCallCheck(this, MDCTabIndicator);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTabIndicator.__proto__ || Object.getPrototypeOf(MDCTabIndicator)).call.apply(_ref, [this].concat(args)));
-
-    _this.content_;
-    return _this;
-  }
-
-  _createClass(MDCTabIndicator, [{
-    key: 'initialize',
-    value: function initialize() {
-      this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
-    }
-
-    /**
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: 'computeContentClientRect',
-    value: function computeContentClientRect() {
-      return this.foundation_.computeContentClientRect();
-    }
-
-    /**
-     * @return {!MDCTabIndicatorFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      var adapter = /** @type {!MDCTabIndicatorAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        computeContentClientRect: function computeContentClientRect() {
-          return _this2.content_.getBoundingClientRect();
-        },
-        setContentStyleProperty: function setContentStyleProperty(prop, value) {
-          return _this2.content_.style.setProperty(prop, value);
-        }
-      });
-
-      if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].cssClasses.FADE)) {
-        return new __WEBPACK_IMPORTED_MODULE_4__fading_foundation__["a" /* default */](adapter);
-      }
-
-      // Default to the sliding indicator
-      return new __WEBPACK_IMPORTED_MODULE_3__sliding_foundation__["a" /* default */](adapter);
-    }
-
-    /**
-     * @param {!ClientRect=} previousIndicatorClientRect
-     */
-
-  }, {
-    key: 'activate',
-    value: function activate(previousIndicatorClientRect) {
-      this.foundation_.activate(previousIndicatorClientRect);
-    }
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.foundation_.deactivate();
-    }
-  }]);
-
-  return MDCTabIndicator;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 56 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Tab Indicator.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Tab Indicator into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCTabIndicatorAdapter = function () {
-  function MDCTabIndicatorAdapter() {
-    _classCallCheck(this, MDCTabIndicatorAdapter);
-  }
-
-  _createClass(MDCTabIndicatorAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds the given className to the root element.
-     * @param {string} className The className to add
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes the given className from the root element.
-     * @param {string} className The className to remove
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns the client rect of the content element.
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: "computeContentClientRect",
-    value: function computeContentClientRect() {}
-
-    /**
-     * Sets a style property of the content element to the passed value
-     * @param {string} propName The style property name to set
-     * @param {string} value The style property value
-     */
-
-  }, {
-    key: "setContentStyleProperty",
-    value: function setContentStyleProperty(propName, value) {}
-  }]);
-
-  return MDCTabIndicatorAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabIndicatorAdapter);
-
-/***/ }),
-/* 57 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabScroller", function() { return MDCTabScroller; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(143);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(147);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabScrollerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTabScrollerFoundation>}
- * @final
- */
-
-var MDCTabScroller = function (_MDCComponent) {
-  _inherits(MDCTabScroller, _MDCComponent);
-
-  _createClass(MDCTabScroller, null, [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTabScroller}
-     */
-    value: function attachTo(root) {
-      return new MDCTabScroller(root);
-    }
-  }]);
-
-  function MDCTabScroller() {
-    var _ref;
-
-    _classCallCheck(this, MDCTabScroller);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTabScroller.__proto__ || Object.getPrototypeOf(MDCTabScroller)).call.apply(_ref, [this].concat(args)));
-
-    _this.content_;
-
-    /** @private {?Element} */
-    _this.area_;
-
-    /** @private {?function(?Event): undefined} */
-    _this.handleInteraction_;
-
-    /** @private {?function(!Event): undefined} */
-    _this.handleTransitionEnd_;
-    return _this;
-  }
-
-  _createClass(MDCTabScroller, [{
-    key: 'initialize',
-    value: function initialize() {
-      this.area_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.AREA_SELECTOR);
-      this.content_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CONTENT_SELECTOR);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.handleInteraction_ = function () {
-        return _this2.foundation_.handleInteraction();
-      };
-      this.handleTransitionEnd_ = function (evt) {
-        return _this2.foundation_.handleTransitionEnd(evt);
-      };
-
-      this.area_.addEventListener('wheel', this.handleInteraction_);
-      this.area_.addEventListener('touchstart', this.handleInteraction_);
-      this.area_.addEventListener('pointerdown', this.handleInteraction_);
-      this.area_.addEventListener('mousedown', this.handleInteraction_);
-      this.area_.addEventListener('keydown', this.handleInteraction_);
-      this.content_.addEventListener('transitionend', this.handleTransitionEnd_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCTabScroller.prototype.__proto__ || Object.getPrototypeOf(MDCTabScroller.prototype), 'destroy', this).call(this);
-
-      this.area_.removeEventListener('wheel', this.handleInteraction_);
-      this.area_.removeEventListener('touchstart', this.handleInteraction_);
-      this.area_.removeEventListener('pointerdown', this.handleInteraction_);
-      this.area_.removeEventListener('mousedown', this.handleInteraction_);
-      this.area_.removeEventListener('keydown', this.handleInteraction_);
-      this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);
-    }
-
-    /**
-     * @return {!MDCTabScrollerFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      var adapter = /** @type {!MDCTabScrollerAdapter} */{
-        eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) {
-          var MATCHES = __WEBPACK_IMPORTED_MODULE_3__util__["getMatchesProperty"](HTMLElement.prototype);
-          return evtTarget[MATCHES](selector);
-        },
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        addScrollAreaClass: function addScrollAreaClass(className) {
-          return _this3.area_.classList.add(className);
-        },
-        setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) {
-          return _this3.area_.style.setProperty(prop, value);
-        },
-        setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) {
-          return _this3.content_.style.setProperty(prop, value);
-        },
-        getScrollContentStyleValue: function getScrollContentStyleValue(propName) {
-          return window.getComputedStyle(_this3.content_).getPropertyValue(propName);
-        },
-        setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) {
-          return _this3.area_.scrollLeft = scrollX;
-        },
-        getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {
-          return _this3.area_.scrollLeft;
-        },
-        getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {
-          return _this3.content_.offsetWidth;
-        },
-        getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {
-          return _this3.area_.offsetWidth;
-        },
-        computeScrollAreaClientRect: function computeScrollAreaClientRect() {
-          return _this3.area_.getBoundingClientRect();
-        },
-        computeScrollContentClientRect: function computeScrollContentClientRect() {
-          return _this3.content_.getBoundingClientRect();
-        },
-        computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {
-          return __WEBPACK_IMPORTED_MODULE_3__util__["computeHorizontalScrollbarHeight"](document);
-        }
-      };
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](adapter);
-    }
-
-    /**
-     * Returns the current visual scroll position
-     * @return {number}
-     */
-
-  }, {
-    key: 'getScrollPosition',
-    value: function getScrollPosition() {
-      return this.foundation_.getScrollPosition();
-    }
-
-    /**
-     * Returns the width of the scroll content
-     * @return {number}
-     */
-
-  }, {
-    key: 'getScrollContentWidth',
-    value: function getScrollContentWidth() {
-      return this.content_.offsetWidth;
-    }
-
-    /**
-     * Increments the scroll value by the given amount
-     * @param {number} scrollXIncrement The pixel value by which to increment the scroll value
-     */
-
-  }, {
-    key: 'incrementScroll',
-    value: function incrementScroll(scrollXIncrement) {
-      this.foundation_.incrementScroll(scrollXIncrement);
-    }
-
-    /**
-     * Scrolls to the given pixel position
-     * @param {number} scrollX The pixel value to scroll to
-     */
-
-  }, {
-    key: 'scrollTo',
-    value: function scrollTo(scrollX) {
-      this.foundation_.scrollTo(scrollX);
-    }
-  }]);
-
-  return MDCTabScroller;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 58 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ANIMATING: 'mdc-tab-scroller--animating',
-  SCROLL_TEST: 'mdc-tab-scroller__test',
-  SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll'
-};
-
-/** @enum {string} */
-var strings = {
-  AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',
-  CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content'
-};
-
-
-
-/***/ }),
-/* 59 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_tab_adapter__ = __webpack_require__(10);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * Adapter for MDC Tab Bar.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Tab Bar into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-
-var MDCTabBarAdapter = function () {
-  function MDCTabBarAdapter() {
-    _classCallCheck(this, MDCTabBarAdapter);
-  }
-
-  _createClass(MDCTabBarAdapter, [{
-    key: 'scrollTo',
-
-    /**
-     * Scrolls to the given position
-     * @param {number} scrollX The position to scroll to
-     */
-    value: function scrollTo(scrollX) {}
-
-    /**
-     * Increments the current scroll position by the given amount
-     * @param {number} scrollXIncrement The amount to increment scroll
-     */
-
-  }, {
-    key: 'incrementScroll',
-    value: function incrementScroll(scrollXIncrement) {}
-
-    /**
-     * Returns the current scroll position
-     * @return {number}
-     */
-
-  }, {
-    key: 'getScrollPosition',
-    value: function getScrollPosition() {}
-
-    /**
-     * Returns the width of the scroll content
-     * @return {number}
-     */
-
-  }, {
-    key: 'getScrollContentWidth',
-    value: function getScrollContentWidth() {}
-
-    /**
-     * Returns the root element's offsetWidth
-     * @return {number}
-     */
-
-  }, {
-    key: 'getOffsetWidth',
-    value: function getOffsetWidth() {}
-
-    /**
-     * Returns if the Tab Bar language direction is RTL
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isRTL',
-    value: function isRTL() {}
-
-    /**
-     * Sets the tab at the given index to be activated
-     * @param {number} index The index of the tab to activate
-     */
-
-  }, {
-    key: 'setActiveTab',
-    value: function setActiveTab(index) {}
-
-    /**
-     * Activates the tab at the given index with the given client rect
-     * @param {number} index The index of the tab to activate
-     * @param {!ClientRect} clientRect The client rect of the previously active Tab Indicator
-     */
-
-  }, {
-    key: 'activateTabAtIndex',
-    value: function activateTabAtIndex(index, clientRect) {}
-
-    /**
-     * Deactivates the tab at the given index
-     * @param {number} index The index of the tab to deactivate
-     */
-
-  }, {
-    key: 'deactivateTabAtIndex',
-    value: function deactivateTabAtIndex(index) {}
-
-    /**
-     * Focuses the tab at the given index
-     * @param {number} index The index of the tab to focus
-     */
-
-  }, {
-    key: 'focusTabAtIndex',
-    value: function focusTabAtIndex(index) {}
-
-    /**
-     * Returns the client rect of the tab's indicator
-     * @param {number} index The index of the tab
-     * @return {!ClientRect}
-     */
-
-  }, {
-    key: 'getTabIndicatorClientRectAtIndex',
-    value: function getTabIndicatorClientRectAtIndex(index) {}
-
-    /**
-     * Returns the tab dimensions of the tab at the given index
-     * @param {number} index The index of the tab
-     * @return {!MDCTabDimensions}
-     */
-
-  }, {
-    key: 'getTabDimensionsAtIndex',
-    value: function getTabDimensionsAtIndex(index) {}
-
-    /**
-     * Returns the length of the tab list
-     * @return {number}
-     */
-
-  }, {
-    key: 'getTabListLength',
-    value: function getTabListLength() {}
-
-    /**
-     * Returns the index of the previously active tab
-     * @return {number}
-     */
-
-  }, {
-    key: 'getPreviousActiveTabIndex',
-    value: function getPreviousActiveTabIndex() {}
-
-    /**
-     * Returns the index of the focused tab
-     * @return {number}
-     */
-
-  }, {
-    key: 'getFocusedTabIndex',
-    value: function getFocusedTabIndex() {}
-
-    /**
-     * Returns the index of the given tab
-     * @param {string} id The ID of the tab whose index to determine
-     * @return {number}
-     */
-
-  }, {
-    key: 'getIndexOfTabById',
-    value: function getIndexOfTabById(id) {}
-
-    /**
-     * Emits the MDCTabBar:activated event
-     * @param {number} index The index of the activated tab
-     */
-
-  }, {
-    key: 'notifyTabActivated',
-    value: function notifyTabActivated(index) {}
-  }]);
-
-  return MDCTabBarAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTabBarAdapter);
-
-/***/ }),
-/* 60 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return numbers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return VALIDATION_ATTR_WHITELIST; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ALWAYS_FLOAT_TYPES; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  ARIA_CONTROLS: 'aria-controls',
-  INPUT_SELECTOR: '.mdc-text-field__input',
-  LABEL_SELECTOR: '.mdc-floating-label',
-  ICON_SELECTOR: '.mdc-text-field__icon',
-  OUTLINE_SELECTOR: '.mdc-notched-outline',
-  LINE_RIPPLE_SELECTOR: '.mdc-line-ripple'
-};
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-text-field',
-  DISABLED: 'mdc-text-field--disabled',
-  DENSE: 'mdc-text-field--dense',
-  FOCUSED: 'mdc-text-field--focused',
-  INVALID: 'mdc-text-field--invalid',
-  TEXTAREA: 'mdc-text-field--textarea',
-  OUTLINED: 'mdc-text-field--outlined',
-  WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon',
-  HELPER_LINE: 'mdc-text-field-helper-line'
-};
-
-/** @enum {number} */
-var numbers = {
-  LABEL_SCALE: 0.75,
-  DENSE_LABEL_SCALE: 0.923
-};
-
-// whitelist based off of https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation
-// under section: `Validation-related attributes`
-var VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength'];
-
-// Label should always float for these types as they show some UI even if value is empty.
-var ALWAYS_FLOAT_TYPES = ['color', 'date', 'datetime-local', 'month', 'range', 'time', 'week'];
-
-
-
-/***/ }),
-/* 61 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCTextFieldAdapter */
-/* unused harmony export NativeInputType */
-/* unused harmony export FoundationMapType */
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helper_text_foundation__ = __webpack_require__(25);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__character_counter_foundation__ = __webpack_require__(26);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_foundation__ = __webpack_require__(27);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-disable no-unused-vars */
-
-
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * @typedef {{
- *   value: string,
- *   disabled: boolean,
- *   badInput: boolean,
- *   validity: {
- *     badInput: boolean,
- *     valid: boolean,
- *   },
- * }}
- */
-var NativeInputType = void 0;
-
-/**
- * @typedef {{
- *   helperText: (!MDCTextFieldHelperTextFoundation|undefined),
- *   characterCounter: (!MDCTextFieldCharacterCounterFoundation|undefined),
- *   leadingIcon: (!MDCTextFieldIconFoundation|undefined),
- *   trailingIcon: (!MDCTextFieldIconFoundation|undefined),
- * }}
- */
-var FoundationMapType = void 0;
-
-/**
- * Adapter for MDC Text Field.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the Text Field into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-
-var MDCTextFieldAdapter = function () {
-  function MDCTextFieldAdapter() {
-    _classCallCheck(this, MDCTextFieldAdapter);
-  }
-
-  _createClass(MDCTextFieldAdapter, [{
-    key: 'addClass',
-
-    /**
-     * Adds a class to the root Element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the root Element.
-     * @param {string} className
-     */
-
-  }, {
-    key: 'removeClass',
-    value: function removeClass(className) {}
-
-    /**
-     * Returns true if the root element contains the given class name.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'hasClass',
-    value: function hasClass(className) {}
-
-    /**
-     * Registers an event handler on the root element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: 'registerTextFieldInteractionHandler',
-    value: function registerTextFieldInteractionHandler(type, handler) {}
-
-    /**
-     * Deregisters an event handler on the root element for a given event.
-     * @param {string} type
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: 'deregisterTextFieldInteractionHandler',
-    value: function deregisterTextFieldInteractionHandler(type, handler) {}
-
-    /**
-     * Registers an event listener on the native input element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: 'registerInputInteractionHandler',
-    value: function registerInputInteractionHandler(evtType, handler) {}
-
-    /**
-     * Deregisters an event listener on the native input element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: 'deregisterInputInteractionHandler',
-    value: function deregisterInputInteractionHandler(evtType, handler) {}
-
-    /**
-     * Registers a validation attribute change listener on the input element.
-     * Handler accepts list of attribute names.
-     * @param {function(!Array<string>): undefined} handler
-     * @return {!MutationObserver}
-     */
-
-  }, {
-    key: 'registerValidationAttributeChangeHandler',
-    value: function registerValidationAttributeChangeHandler(handler) {}
-
-    /**
-     * Disconnects a validation attribute observer on the input element.
-     * @param {!MutationObserver} observer
-     */
-
-  }, {
-    key: 'deregisterValidationAttributeChangeHandler',
-    value: function deregisterValidationAttributeChangeHandler(observer) {}
-
-    /**
-     * Returns an object representing the native text input element, with a
-     * similar API shape. The object returned should include the value, disabled
-     * and badInput properties, as well as the checkValidity() function. We never
-     * alter the value within our code, however we do update the disabled
-     * property, so if you choose to duck-type the return value for this method
-     * in your implementation it's important to keep this in mind. Also note that
-     * this method can return null, which the foundation will handle gracefully.
-     * @return {?Element|?NativeInputType}
-     */
-
-  }, {
-    key: 'getNativeInput',
-    value: function getNativeInput() {}
-
-    /**
-     * Returns true if the textfield is focused.
-     * We achieve this via `document.activeElement === this.root_`.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isFocused',
-    value: function isFocused() {}
-
-    /**
-     * Activates the line ripple.
-     */
-
-  }, {
-    key: 'activateLineRipple',
-    value: function activateLineRipple() {}
-
-    /**
-     * Deactivates the line ripple.
-     */
-
-  }, {
-    key: 'deactivateLineRipple',
-    value: function deactivateLineRipple() {}
-
-    /**
-     * Sets the transform origin of the line ripple.
-     * @param {number} normalizedX
-     */
-
-  }, {
-    key: 'setLineRippleTransformOrigin',
-    value: function setLineRippleTransformOrigin(normalizedX) {}
-
-    /**
-     * Only implement if label exists.
-     * Shakes label if shouldShake is true.
-     * @param {boolean} shouldShake
-     */
-
-  }, {
-    key: 'shakeLabel',
-    value: function shakeLabel(shouldShake) {}
-
-    /**
-     * Only implement if label exists.
-     * Floats the label above the input element if shouldFloat is true.
-     * @param {boolean} shouldFloat
-     */
-
-  }, {
-    key: 'floatLabel',
-    value: function floatLabel(shouldFloat) {}
-
-    /**
-     * Returns true if label element exists, false if it doesn't.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'hasLabel',
-    value: function hasLabel() {}
-
-    /**
-     * Only implement if label exists.
-     * Returns width of label in pixels.
-     * @return {number}
-     */
-
-  }, {
-    key: 'getLabelWidth',
-    value: function getLabelWidth() {}
-
-    /**
-     * Returns true if outline element exists, false if it doesn't.
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'hasOutline',
-    value: function hasOutline() {}
-
-    /**
-     * Only implement if outline element exists.
-     * @param {number} labelWidth
-     */
-
-  }, {
-    key: 'notchOutline',
-    value: function notchOutline(labelWidth) {}
-
-    /**
-     * Only implement if outline element exists.
-     * Closes notch in outline element.
-     */
-
-  }, {
-    key: 'closeOutline',
-    value: function closeOutline() {}
-  }]);
-
-  return MDCTextFieldAdapter;
-}();
-
-
-
-/***/ }),
-/* 62 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Text Field Helper Text.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the TextField helper text into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCTextFieldHelperTextAdapter = function () {
-  function MDCTextFieldHelperTextAdapter() {
-    _classCallCheck(this, MDCTextFieldHelperTextAdapter);
-  }
-
-  _createClass(MDCTextFieldHelperTextAdapter, [{
-    key: "addClass",
-
-    /**
-     * Adds a class to the helper text element.
-     * @param {string} className
-     */
-    value: function addClass(className) {}
-
-    /**
-     * Removes a class from the helper text element.
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * Returns whether or not the helper text element contains the given class.
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * Sets an attribute with a given value on the helper text element.
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attr, value) {}
-
-    /**
-     * Removes an attribute from the helper text element.
-     * @param {string} attr
-     */
-
-  }, {
-    key: "removeAttr",
-    value: function removeAttr(attr) {}
-
-    /**
-     * Sets the text content for the helper text element.
-     * @param {string} content
-     */
-
-  }, {
-    key: "setContent",
-    value: function setContent(content) {}
-  }]);
-
-  return MDCTextFieldHelperTextAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldHelperTextAdapter);
-
-/***/ }),
-/* 63 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2019 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Text Field Character Counter.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the TextField character counter into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCTextFieldCharacterCounterAdapter = function () {
-  function MDCTextFieldCharacterCounterAdapter() {
-    _classCallCheck(this, MDCTextFieldCharacterCounterAdapter);
-  }
-
-  _createClass(MDCTextFieldCharacterCounterAdapter, [{
-    key: "setContent",
-
-    /**
-     * Sets the text content of character counter element.
-     * @param {string} content
-     */
-    value: function setContent(content) {}
-  }]);
-
-  return MDCTextFieldCharacterCounterAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldCharacterCounterAdapter);
-
-/***/ }),
-/* 64 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Text Field Icon.
- *
- * Defines the shape of the adapter expected by the foundation. Implement this
- * adapter to integrate the text field icon into your framework. See
- * https://github.com/material-components/material-components-web/blob/master/docs/authoring-components.md
- * for more information.
- *
- * @record
- */
-var MDCTextFieldIconAdapter = function () {
-  function MDCTextFieldIconAdapter() {
-    _classCallCheck(this, MDCTextFieldIconAdapter);
-  }
-
-  _createClass(MDCTextFieldIconAdapter, [{
-    key: "getAttr",
-
-    /**
-     * Gets the value of an attribute on the icon element.
-     * @param {string} attr
-     * @return {string}
-     */
-    value: function getAttr(attr) {}
-
-    /**
-     * Sets an attribute on the icon element.
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attr, value) {}
-
-    /**
-     * Removes an attribute from the icon element.
-     * @param {string} attr
-     */
-
-  }, {
-    key: "removeAttr",
-    value: function removeAttr(attr) {}
-
-    /**
-     * Sets the text content of the icon element.
-     * @param {string} content
-     */
-
-  }, {
-    key: "setContent",
-    value: function setContent(content) {}
-
-    /**
-     * Registers an event listener on the icon element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(evtType, handler) {}
-
-    /**
-     * Deregisters an event listener on the icon element for a given event.
-     * @param {string} evtType
-     * @param {function(!Event): undefined} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(evtType, handler) {}
-
-    /**
-     * Emits a custom event "MDCTextField:icon" denoting a user has clicked the icon.
-     */
-
-  }, {
-    key: "notifyIconAction",
-    value: function notifyIconAction() {}
-  }]);
-
-  return MDCTextFieldIconAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCTextFieldIconAdapter);
-
-/***/ }),
-/* 65 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__ = __webpack_require__(66);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_index__ = __webpack_require__(67);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__ = __webpack_require__(68);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_chips_index__ = __webpack_require__(74);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__ = __webpack_require__(78);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_dom_index__ = __webpack_require__(85);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__ = __webpack_require__(86);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__ = __webpack_require__(9);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__ = __webpack_require__(93);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__ = __webpack_require__(97);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__ = __webpack_require__(100);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__ = __webpack_require__(104);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__ = __webpack_require__(108);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__ = __webpack_require__(16);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__material_list_index__ = __webpack_require__(14);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__material_menu_index__ = __webpack_require__(43);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__ = __webpack_require__(45);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__ = __webpack_require__(20);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__material_radio_index__ = __webpack_require__(117);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__material_select_index__ = __webpack_require__(121);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__material_slider_index__ = __webpack_require__(127);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__ = __webpack_require__(129);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__material_switch_index__ = __webpack_require__(133);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__material_tab_index__ = __webpack_require__(54);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__ = __webpack_require__(142);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__ = __webpack_require__(55);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__ = __webpack_require__(57);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__ = __webpack_require__(150);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__ = __webpack_require__(158);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__ = __webpack_require__(161);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "autoInit", function() { return __WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "base", function() { return __WEBPACK_IMPORTED_MODULE_1__material_base_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "checkbox", function() { return __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "chips", function() { return __WEBPACK_IMPORTED_MODULE_3__material_chips_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "dialog", function() { return __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "dom", function() { return __WEBPACK_IMPORTED_MODULE_5__material_dom_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "drawer", function() { return __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "floatingLabel", function() { return __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "formField", function() { return __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "gridList", function() { return __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "iconButton", function() { return __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "iconToggle", function() { return __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "lineRipple", function() { return __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "linearProgress", function() { return __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "list", function() { return __WEBPACK_IMPORTED_MODULE_14__material_list_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "menu", function() { return __WEBPACK_IMPORTED_MODULE_15__material_menu_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "menuSurface", function() { return __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "notchedOutline", function() { return __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "radio", function() { return __WEBPACK_IMPORTED_MODULE_18__material_radio_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "ripple", function() { return __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_20__material_select_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "selectionControl", function() { return __WEBPACK_IMPORTED_MODULE_21__material_selection_control_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "slider", function() { return __WEBPACK_IMPORTED_MODULE_22__material_slider_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "switchControl", function() { return __WEBPACK_IMPORTED_MODULE_24__material_switch_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "snackbar", function() { return __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tab", function() { return __WEBPACK_IMPORTED_MODULE_25__material_tab_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabBar", function() { return __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabIndicator", function() { return __WEBPACK_IMPORTED_MODULE_27__material_tab_indicator_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "tabScroller", function() { return __WEBPACK_IMPORTED_MODULE_28__material_tab_scroller_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "textField", function() { return __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "toolbar", function() { return __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "topAppBar", function() { return __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Register all components
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCCheckbox', __WEBPACK_IMPORTED_MODULE_2__material_checkbox_index__["MDCCheckbox"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCChip', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__["MDCChip"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCChipSet', __WEBPACK_IMPORTED_MODULE_3__material_chips_index__["MDCChipSet"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCDialog', __WEBPACK_IMPORTED_MODULE_4__material_dialog_index__["MDCDialog"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCDrawer', __WEBPACK_IMPORTED_MODULE_6__material_drawer_index__["MDCDrawer"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCFloatingLabel', __WEBPACK_IMPORTED_MODULE_7__material_floating_label_index__["MDCFloatingLabel"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCFormField', __WEBPACK_IMPORTED_MODULE_8__material_form_field_index__["MDCFormField"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCRipple', __WEBPACK_IMPORTED_MODULE_19__material_ripple_index__["MDCRipple"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCGridList', __WEBPACK_IMPORTED_MODULE_9__material_grid_list_index__["MDCGridList"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCIconButtonToggle', __WEBPACK_IMPORTED_MODULE_10__material_icon_button_index__["MDCIconButtonToggle"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCIconToggle', __WEBPACK_IMPORTED_MODULE_11__material_icon_toggle_index__["MDCIconToggle"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCLineRipple', __WEBPACK_IMPORTED_MODULE_13__material_line_ripple_index__["MDCLineRipple"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCLinearProgress', __WEBPACK_IMPORTED_MODULE_12__material_linear_progress_index__["MDCLinearProgress"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCList', __WEBPACK_IMPORTED_MODULE_14__material_list_index__["MDCList"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCNotchedOutline', __WEBPACK_IMPORTED_MODULE_17__material_notched_outline_index__["MDCNotchedOutline"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCRadio', __WEBPACK_IMPORTED_MODULE_18__material_radio_index__["MDCRadio"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSnackbar', __WEBPACK_IMPORTED_MODULE_23__material_snackbar_index__["MDCSnackbar"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTabBar', __WEBPACK_IMPORTED_MODULE_26__material_tab_bar_index__["MDCTabBar"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTextField', __WEBPACK_IMPORTED_MODULE_29__material_textfield_index__["MDCTextField"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCMenu', __WEBPACK_IMPORTED_MODULE_15__material_menu_index__["MDCMenu"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCMenuSurface', __WEBPACK_IMPORTED_MODULE_16__material_menu_surface_index__["MDCMenuSurface"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSelect', __WEBPACK_IMPORTED_MODULE_20__material_select_index__["MDCSelect"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSlider', __WEBPACK_IMPORTED_MODULE_22__material_slider_index__["MDCSlider"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCSwitch', __WEBPACK_IMPORTED_MODULE_24__material_switch_index__["MDCSwitch"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCToolbar', __WEBPACK_IMPORTED_MODULE_30__material_toolbar_index__["MDCToolbar"]);
-__WEBPACK_IMPORTED_MODULE_0__material_auto_init_index__["a" /* default */].register('MDCTopAppBar', __WEBPACK_IMPORTED_MODULE_31__material_top_app_bar_index__["MDCTopAppBar"]);
-
-// Export all components.
-
-
-/***/ }),
-/* 66 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (immutable) */ __webpack_exports__["a"] = mdcAutoInit;
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var registry = Object.create(null);
-
-var CONSOLE_WARN = console.warn.bind(console);
-
-function _emit(evtType, evtData) {
-  var shouldBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
-  var evt = void 0;
-  if (typeof CustomEvent === 'function') {
-    evt = new CustomEvent(evtType, {
-      detail: evtData,
-      bubbles: shouldBubble
-    });
-  } else {
-    evt = document.createEvent('CustomEvent');
-    evt.initCustomEvent(evtType, shouldBubble, false, evtData);
-  }
-
-  document.dispatchEvent(evt);
-}
-
-/**
- * Auto-initializes all mdc components on a page.
- */
-function mdcAutoInit() {
-  var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
-  var warn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CONSOLE_WARN;
-
-  var components = [];
-  var nodes = root.querySelectorAll('[data-mdc-auto-init]');
-  for (var i = 0, node; node = nodes[i]; i++) {
-    var ctorName = node.dataset.mdcAutoInit;
-    if (!ctorName) {
-      throw new Error('(mdc-auto-init) Constructor name must be given.');
-    }
-
-    var Ctor = registry[ctorName];
-    if (typeof Ctor !== 'function') {
-      throw new Error('(mdc-auto-init) Could not find constructor in registry for ' + ctorName);
-    }
-
-    if (node[ctorName]) {
-      warn('(mdc-auto-init) Component already initialized for ' + node + '. Skipping...');
-      continue;
-    }
-
-    // TODO: Should we make an eslint rule for an attachTo() static method?
-    var component = Ctor.attachTo(node);
-    Object.defineProperty(node, ctorName, {
-      value: component,
-      writable: false,
-      enumerable: false,
-      configurable: true
-    });
-    components.push(component);
-  }
-
-  _emit('MDCAutoInit:End', {});
-  return components;
-}
-
-mdcAutoInit.register = function (componentName, Ctor) {
-  var warn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : CONSOLE_WARN;
-
-  if (typeof Ctor !== 'function') {
-    throw new Error('(mdc-auto-init) Invalid Ctor value ' + Ctor + '. Expected function');
-  }
-  if (registry[componentName]) {
-    warn('(mdc-auto-init) Overriding registration for ' + componentName + ' with ' + Ctor + '. ' + ('Was: ' + registry[componentName]));
-  }
-  registry[componentName] = Ctor;
-};
-
-mdcAutoInit.deregister = function (componentName) {
-  delete registry[componentName];
-};
-
-mdcAutoInit.deregisterAll = function () {
-  Object.keys(registry).forEach(this.deregister, this);
-};
-
-/***/ }),
-/* 67 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__component__ = __webpack_require__(1);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFoundation", function() { return __WEBPACK_IMPORTED_MODULE_0__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCComponent", function() { return __WEBPACK_IMPORTED_MODULE_1__component__["a"]; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/***/ }),
-/* 68 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCCheckbox", function() { return MDCCheckbox; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_animation_index__ = __webpack_require__(13);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(71);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_ripple_util__ = __webpack_require__(5);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCCheckboxFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-
-
-
-/** @const {!Array<string>} */
-var CB_PROTO_PROPS = ['checked', 'indeterminate'];
-
-/**
- * @extends MDCComponent<!MDCCheckboxFoundation>
- * @implements {MDCSelectionControl}
- */
-
-var MDCCheckbox = function (_MDCComponent) {
-  _inherits(MDCCheckbox, _MDCComponent);
-
-  _createClass(MDCCheckbox, [{
-    key: 'nativeCb_',
-
-
-    /**
-     * Returns the state of the native control element, or null if the native control element is not present.
-     * @return {!MDCSelectionControlState}
-     * @private
-     */
-    get: function get() {
-      var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
-
-      var cbEl = /** @type {!MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
-      return cbEl;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCCheckbox(root);
-    }
-  }]);
-
-  function MDCCheckbox() {
-    var _ref;
-
-    _classCallCheck(this, MDCCheckbox);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCRipple} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCCheckbox.__proto__ || Object.getPrototypeOf(MDCCheckbox)).call.apply(_ref, [this].concat(args)));
-
-    _this.ripple_ = _this.initRipple_();
-    /** @private {!Function} */
-    _this.handleChange_;
-    /** @private {!Function} */
-    _this.handleAnimationEnd_;
-    return _this;
-  }
-
-  _createClass(MDCCheckbox, [{
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.handleChange_ = function () {
-        return _this2.foundation_.handleChange();
-      };
-      this.handleAnimationEnd_ = function () {
-        return _this2.foundation_.handleAnimationEnd();
-      };
-      this.nativeCb_.addEventListener('change', this.handleChange_);
-      this.listen(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__["a" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);
-      this.installPropertyChangeHooks_();
-    }
-
-    /**
-     * @return {!MDCRipple}
-     * @private
-     */
-
-  }, {
-    key: 'initRipple_',
-    value: function initRipple_() {
-      var _this3 = this;
-
-      var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_5__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        isUnbounded: function isUnbounded() {
-          return true;
-        },
-        isSurfaceActive: function isSurfaceActive() {
-          return _this3.nativeCb_[MATCHES](':active');
-        },
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return _this3.nativeCb_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return _this3.nativeCb_.removeEventListener(type, handler);
-        }
-      });
-      var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRippleFoundation"](adapter);
-      return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"](this.root_, foundation);
-    }
-
-    /** @private */
-
-  }, {
-    key: 'installPropertyChangeHooks_',
-    value: function installPropertyChangeHooks_() {
-      var _this4 = this;
-
-      var nativeCb = this.nativeCb_;
-      var cbProto = Object.getPrototypeOf(nativeCb);
-
-      CB_PROTO_PROPS.forEach(function (controlState) {
-        var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);
-        // We have to check for this descriptor, since some browsers (Safari) don't support its return.
-        // See: https://bugs.webkit.org/show_bug.cgi?id=49739
-        if (validDescriptor(desc)) {
-          var nativeCbDesc = /** @type {!ObjectPropertyDescriptor} */{
-            get: desc.get,
-            set: function set(state) {
-              desc.set.call(nativeCb, state);
-              _this4.foundation_.handleChange();
-            },
-            configurable: desc.configurable,
-            enumerable: desc.enumerable
-          };
-          Object.defineProperty(nativeCb, controlState, nativeCbDesc);
-        }
-      });
-    }
-
-    /** @private */
-
-  }, {
-    key: 'uninstallPropertyChangeHooks_',
-    value: function uninstallPropertyChangeHooks_() {
-      var nativeCb = this.nativeCb_;
-      var cbProto = Object.getPrototypeOf(nativeCb);
-
-      CB_PROTO_PROPS.forEach(function (controlState) {
-        var desc = /** @type {!ObjectPropertyDescriptor} */Object.getOwnPropertyDescriptor(cbProto, controlState);
-        if (validDescriptor(desc)) {
-          Object.defineProperty(nativeCb, controlState, desc);
-        }
-      });
-    }
-
-    /** @return {!MDCCheckboxFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this5 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this5.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this5.root_.classList.remove(className);
-        },
-        setNativeControlAttr: function setNativeControlAttr(attr, value) {
-          return _this5.nativeCb_.setAttribute(attr, value);
-        },
-        removeNativeControlAttr: function removeNativeControlAttr(attr) {
-          return _this5.nativeCb_.removeAttribute(attr);
-        },
-        isIndeterminate: function isIndeterminate() {
-          return _this5.indeterminate;
-        },
-        isChecked: function isChecked() {
-          return _this5.checked;
-        },
-        hasNativeControl: function hasNativeControl() {
-          return !!_this5.nativeCb_;
-        },
-        setNativeControlDisabled: function setNativeControlDisabled(disabled) {
-          return _this5.nativeCb_.disabled = disabled;
-        },
-        forceLayout: function forceLayout() {
-          return _this5.root_.offsetWidth;
-        },
-        isAttachedToDOM: function isAttachedToDOM() {
-          return Boolean(_this5.root_.parentNode);
-        }
-      });
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.ripple_.destroy();
-      this.nativeCb_.removeEventListener('change', this.handleChange_);
-      this.unlisten(Object(__WEBPACK_IMPORTED_MODULE_0__material_animation_index__["a" /* getCorrectEventName */])(window, 'animationend'), this.handleAnimationEnd_);
-      this.uninstallPropertyChangeHooks_();
-      _get(MDCCheckbox.prototype.__proto__ || Object.getPrototypeOf(MDCCheckbox.prototype), 'destroy', this).call(this);
-    }
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'checked',
-    get: function get() {
-      return this.nativeCb_.checked;
-    }
-
-    /** @param {boolean} checked */
-    ,
-    set: function set(checked) {
-      this.nativeCb_.checked = checked;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'indeterminate',
-    get: function get() {
-      return this.nativeCb_.indeterminate;
-    }
-
-    /** @param {boolean} indeterminate */
-    ,
-    set: function set(indeterminate) {
-      this.nativeCb_.indeterminate = indeterminate;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.nativeCb_.disabled;
-    }
-
-    /** @param {boolean} disabled */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-
-    /** @return {?string} */
-
-  }, {
-    key: 'value',
-    get: function get() {
-      return this.nativeCb_.value;
-    }
-
-    /** @param {?string} value */
-    ,
-    set: function set(value) {
-      this.nativeCb_.value = value;
-    }
-  }]);
-
-  return MDCCheckbox;
-}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__["a" /* default */]);
-
-/**
- * @param {ObjectPropertyDescriptor|undefined} inputPropDesc
- * @return {boolean}
- */
-
-
-function validDescriptor(inputPropDesc) {
-  return !!inputPropDesc && typeof inputPropDesc.set === 'function';
-}
-
-
-
-/***/ }),
-/* 69 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(28);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(70);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(5);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @typedef {{
- *   isActivated: (boolean|undefined),
- *   hasDeactivationUXRun: (boolean|undefined),
- *   wasActivatedByPointer: (boolean|undefined),
- *   wasElementMadeActive: (boolean|undefined),
- *   activationEvent: (!Event|undefined),
- *   isProgrammatic: (boolean|undefined)
- * }}
- */
-var ActivationStateType = void 0;
-
-/**
- * @typedef {{
- *   activate: (string|undefined),
- *   deactivate: (string|undefined),
- *   focus: (string|undefined),
- *   blur: (string|undefined)
- * }}
- */
-var ListenerInfoType = void 0;
-
-/**
- * @typedef {{
- *   activate: function(!Event),
- *   deactivate: function(!Event=),
- *   focus: function(),
- *   blur: function()
- * }}
- */
-var ListenersType = void 0;
-
-/**
- * @typedef {{
- *   x: number,
- *   y: number
- * }}
- */
-var PointType = void 0;
-
-// Activation events registered on the root element of each instance for activation
-var ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];
-
-// Deactivation events registered on documentElement when a pointer-related down event occurs
-var POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];
-
-// Tracks activations that have occurred on the current frame, to avoid simultaneous nested activations
-/** @type {!Array<!EventTarget>} */
-var activatedTargets = [];
-
-/**
- * @extends {MDCFoundation<!MDCRippleAdapter>}
- */
-
-var MDCRippleFoundation = function (_MDCFoundation) {
-  _inherits(MDCRippleFoundation, _MDCFoundation);
-
-  _createClass(MDCRippleFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
-    }
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        browserSupportsCssVars: function browserSupportsCssVars() /* boolean - cached */{},
-        isUnbounded: function isUnbounded() /* boolean */{},
-        isSurfaceActive: function isSurfaceActive() /* boolean */{},
-        isSurfaceDisabled: function isSurfaceDisabled() /* boolean */{},
-        addClass: function addClass() /* className: string */{},
-        removeClass: function removeClass() /* className: string */{},
-        containsEventTarget: function containsEventTarget() /* target: !EventTarget */{},
-        registerInteractionHandler: function registerInteractionHandler() /* evtType: string, handler: EventListener */{},
-        deregisterInteractionHandler: function deregisterInteractionHandler() /* evtType: string, handler: EventListener */{},
-        registerDocumentInteractionHandler: function registerDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},
-        deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() /* evtType: string, handler: EventListener */{},
-        registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
-        deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
-        updateCssVariable: function updateCssVariable() /* varName: string, value: string */{},
-        computeBoundingRect: function computeBoundingRect() /* ClientRect */{},
-        getWindowPageOffset: function getWindowPageOffset() /* {x: number, y: number} */{}
-      };
-    }
-  }]);
-
-  function MDCRippleFoundation(adapter) {
-    _classCallCheck(this, MDCRippleFoundation);
-
-    /** @private {number} */
-    var _this = _possibleConstructorReturn(this, (MDCRippleFoundation.__proto__ || Object.getPrototypeOf(MDCRippleFoundation)).call(this, _extends(MDCRippleFoundation.defaultAdapter, adapter)));
-
-    _this.layoutFrame_ = 0;
-
-    /** @private {!ClientRect} */
-    _this.frame_ = /** @type {!ClientRect} */{ width: 0, height: 0 };
-
-    /** @private {!ActivationStateType} */
-    _this.activationState_ = _this.defaultActivationState_();
-
-    /** @private {number} */
-    _this.initialSize_ = 0;
-
-    /** @private {number} */
-    _this.maxRadius_ = 0;
-
-    /** @private {function(!Event)} */
-    _this.activateHandler_ = function (e) {
-      return _this.activate_(e);
-    };
-
-    /** @private {function(!Event=)} */
-    _this.deactivateHandler_ = function () {
-      return _this.deactivate_();
-    };
-
-    /** @private {function(!Event=)} */
-    _this.focusHandler_ = function () {
-      return _this.handleFocus();
-    };
-
-    /** @private {function(!Event=)} */
-    _this.blurHandler_ = function () {
-      return _this.handleBlur();
-    };
-
-    /** @private {!Function} */
-    _this.resizeHandler_ = function () {
-      return _this.layout();
-    };
-
-    /** @private {{left: number, top:number}} */
-    _this.unboundedCoords_ = {
-      left: 0,
-      top: 0
-    };
-
-    /** @private {number} */
-    _this.fgScale_ = 0;
-
-    /** @private {number} */
-    _this.activationTimer_ = 0;
-
-    /** @private {number} */
-    _this.fgDeactivationRemovalTimer_ = 0;
-
-    /** @private {boolean} */
-    _this.activationAnimationHasEnded_ = false;
-
-    /** @private {!Function} */
-    _this.activationTimerCallback_ = function () {
-      _this.activationAnimationHasEnded_ = true;
-      _this.runDeactivationUXLogicIfReady_();
-    };
-
-    /** @private {!Event|undefined} */
-    _this.previousActivationEvent_;
-    return _this;
-  }
-
-  /**
-   * We compute this property so that we are not querying information about the client
-   * until the point in time where the foundation requests it. This prevents scenarios where
-   * client-side feature-detection may happen too early, such as when components are rendered on the server
-   * and then initialized at mount time on the client.
-   * @return {boolean}
-   * @private
-   */
-
-
-  _createClass(MDCRippleFoundation, [{
-    key: 'supportsPressRipple_',
-    value: function supportsPressRipple_() {
-      return this.adapter_.browserSupportsCssVars();
-    }
-
-    /**
-     * @return {!ActivationStateType}
-     */
-
-  }, {
-    key: 'defaultActivationState_',
-    value: function defaultActivationState_() {
-      return {
-        isActivated: false,
-        hasDeactivationUXRun: false,
-        wasActivatedByPointer: false,
-        wasElementMadeActive: false,
-        activationEvent: undefined,
-        isProgrammatic: false
-      };
-    }
-
-    /** @override */
-
-  }, {
-    key: 'init',
-    value: function init() {
-      var _this2 = this;
-
-      var supportsPressRipple = this.supportsPressRipple_();
-
-      this.registerRootHandlers_(supportsPressRipple);
-
-      if (supportsPressRipple) {
-        var _MDCRippleFoundation$ = MDCRippleFoundation.cssClasses,
-            ROOT = _MDCRippleFoundation$.ROOT,
-            UNBOUNDED = _MDCRippleFoundation$.UNBOUNDED;
-
-        requestAnimationFrame(function () {
-          _this2.adapter_.addClass(ROOT);
-          if (_this2.adapter_.isUnbounded()) {
-            _this2.adapter_.addClass(UNBOUNDED);
-            // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple
-            _this2.layoutInternal_();
-          }
-        });
-      }
-    }
-
-    /** @override */
-
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      if (this.supportsPressRipple_()) {
-        if (this.activationTimer_) {
-          clearTimeout(this.activationTimer_);
-          this.activationTimer_ = 0;
-          this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);
-        }
-
-        if (this.fgDeactivationRemovalTimer_) {
-          clearTimeout(this.fgDeactivationRemovalTimer_);
-          this.fgDeactivationRemovalTimer_ = 0;
-          this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);
-        }
-
-        var _MDCRippleFoundation$2 = MDCRippleFoundation.cssClasses,
-            ROOT = _MDCRippleFoundation$2.ROOT,
-            UNBOUNDED = _MDCRippleFoundation$2.UNBOUNDED;
-
-        requestAnimationFrame(function () {
-          _this3.adapter_.removeClass(ROOT);
-          _this3.adapter_.removeClass(UNBOUNDED);
-          _this3.removeCssVars_();
-        });
-      }
-
-      this.deregisterRootHandlers_();
-      this.deregisterDeactivationHandlers_();
-    }
-
-    /**
-     * @param {boolean} supportsPressRipple Passed from init to save a redundant function call
-     * @private
-     */
-
-  }, {
-    key: 'registerRootHandlers_',
-    value: function registerRootHandlers_(supportsPressRipple) {
-      var _this4 = this;
-
-      if (supportsPressRipple) {
-        ACTIVATION_EVENT_TYPES.forEach(function (type) {
-          _this4.adapter_.registerInteractionHandler(type, _this4.activateHandler_);
-        });
-        if (this.adapter_.isUnbounded()) {
-          this.adapter_.registerResizeHandler(this.resizeHandler_);
-        }
-      }
-
-      this.adapter_.registerInteractionHandler('focus', this.focusHandler_);
-      this.adapter_.registerInteractionHandler('blur', this.blurHandler_);
-    }
-
-    /**
-     * @param {!Event} e
-     * @private
-     */
-
-  }, {
-    key: 'registerDeactivationHandlers_',
-    value: function registerDeactivationHandlers_(e) {
-      var _this5 = this;
-
-      if (e.type === 'keydown') {
-        this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);
-      } else {
-        POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {
-          _this5.adapter_.registerDocumentInteractionHandler(type, _this5.deactivateHandler_);
-        });
-      }
-    }
-
-    /** @private */
-
-  }, {
-    key: 'deregisterRootHandlers_',
-    value: function deregisterRootHandlers_() {
-      var _this6 = this;
-
-      ACTIVATION_EVENT_TYPES.forEach(function (type) {
-        _this6.adapter_.deregisterInteractionHandler(type, _this6.activateHandler_);
-      });
-      this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);
-      this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);
-
-      if (this.adapter_.isUnbounded()) {
-        this.adapter_.deregisterResizeHandler(this.resizeHandler_);
-      }
-    }
-
-    /** @private */
-
-  }, {
-    key: 'deregisterDeactivationHandlers_',
-    value: function deregisterDeactivationHandlers_() {
-      var _this7 = this;
-
-      this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);
-      POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (type) {
-        _this7.adapter_.deregisterDocumentInteractionHandler(type, _this7.deactivateHandler_);
-      });
-    }
-
-    /** @private */
-
-  }, {
-    key: 'removeCssVars_',
-    value: function removeCssVars_() {
-      var _this8 = this;
-
-      var strings = MDCRippleFoundation.strings;
-
-      Object.keys(strings).forEach(function (k) {
-        if (k.indexOf('VAR_') === 0) {
-          _this8.adapter_.updateCssVariable(strings[k], null);
-        }
-      });
-    }
-
-    /**
-     * @param {!Event=} e
-     * @private
-     */
-
-  }, {
-    key: 'activate_',
-    value: function activate_(e) {
-      var _this9 = this;
-
-      if (this.adapter_.isSurfaceDisabled()) {
-        return;
-      }
-
-      var activationState = this.activationState_;
-      if (activationState.isActivated) {
-        return;
-      }
-
-      // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction
-      var previousActivationEvent = this.previousActivationEvent_;
-      var isSameInteraction = previousActivationEvent && e !== undefined && previousActivationEvent.type !== e.type;
-      if (isSameInteraction) {
-        return;
-      }
-
-      activationState.isActivated = true;
-      activationState.isProgrammatic = e === undefined;
-      activationState.activationEvent = e;
-      activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : e !== undefined && (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown');
-
-      var hasActivatedChild = e !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {
-        return _this9.adapter_.containsEventTarget(target);
-      });
-      if (hasActivatedChild) {
-        // Immediately reset activation state, while preserving logic that prevents touch follow-on events
-        this.resetActivationState_();
-        return;
-      }
-
-      if (e !== undefined) {
-        activatedTargets.push( /** @type {!EventTarget} */e.target);
-        this.registerDeactivationHandlers_(e);
-      }
-
-      activationState.wasElementMadeActive = this.checkElementMadeActive_(e);
-      if (activationState.wasElementMadeActive) {
-        this.animateActivation_();
-      }
-
-      requestAnimationFrame(function () {
-        // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples
-        activatedTargets = [];
-
-        if (!activationState.wasElementMadeActive && e !== undefined && (e.key === ' ' || e.keyCode === 32)) {
-          // If space was pressed, try again within an rAF call to detect :active, because different UAs report
-          // active states inconsistently when they're called within event handling code:
-          // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971
-          // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741
-          // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS
-          // variable is set within a rAF callback for a submit button interaction (#2241).
-          activationState.wasElementMadeActive = _this9.checkElementMadeActive_(e);
-          if (activationState.wasElementMadeActive) {
-            _this9.animateActivation_();
-          }
-        }
-
-        if (!activationState.wasElementMadeActive) {
-          // Reset activation state immediately if element was not made active.
-          _this9.activationState_ = _this9.defaultActivationState_();
-        }
-      });
-    }
-
-    /**
-     * @param {!Event=} e
-     * @private
-     */
-
-  }, {
-    key: 'checkElementMadeActive_',
-    value: function checkElementMadeActive_(e) {
-      return e !== undefined && e.type === 'keydown' ? this.adapter_.isSurfaceActive() : true;
-    }
-
-    /**
-     * @param {!Event=} event Optional event containing position information.
-     */
-
-  }, {
-    key: 'activate',
-    value: function activate(event) {
-      this.activate_(event);
-    }
-
-    /** @private */
-
-  }, {
-    key: 'animateActivation_',
-    value: function animateActivation_() {
-      var _this10 = this;
-
-      var _MDCRippleFoundation$3 = MDCRippleFoundation.strings,
-          VAR_FG_TRANSLATE_START = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_START,
-          VAR_FG_TRANSLATE_END = _MDCRippleFoundation$3.VAR_FG_TRANSLATE_END;
-      var _MDCRippleFoundation$4 = MDCRippleFoundation.cssClasses,
-          FG_DEACTIVATION = _MDCRippleFoundation$4.FG_DEACTIVATION,
-          FG_ACTIVATION = _MDCRippleFoundation$4.FG_ACTIVATION;
-      var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;
-
-
-      this.layoutInternal_();
-
-      var translateStart = '';
-      var translateEnd = '';
-
-      if (!this.adapter_.isUnbounded()) {
-        var _getFgTranslationCoor = this.getFgTranslationCoordinates_(),
-            startPoint = _getFgTranslationCoor.startPoint,
-            endPoint = _getFgTranslationCoor.endPoint;
-
-        translateStart = startPoint.x + 'px, ' + startPoint.y + 'px';
-        translateEnd = endPoint.x + 'px, ' + endPoint.y + 'px';
-      }
-
-      this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);
-      this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);
-      // Cancel any ongoing activation/deactivation animations
-      clearTimeout(this.activationTimer_);
-      clearTimeout(this.fgDeactivationRemovalTimer_);
-      this.rmBoundedActivationClasses_();
-      this.adapter_.removeClass(FG_DEACTIVATION);
-
-      // Force layout in order to re-trigger the animation.
-      this.adapter_.computeBoundingRect();
-      this.adapter_.addClass(FG_ACTIVATION);
-      this.activationTimer_ = setTimeout(function () {
-        return _this10.activationTimerCallback_();
-      }, DEACTIVATION_TIMEOUT_MS);
-    }
-
-    /**
-     * @private
-     * @return {{startPoint: PointType, endPoint: PointType}}
-     */
-
-  }, {
-    key: 'getFgTranslationCoordinates_',
-    value: function getFgTranslationCoordinates_() {
-      var _activationState_ = this.activationState_,
-          activationEvent = _activationState_.activationEvent,
-          wasActivatedByPointer = _activationState_.wasActivatedByPointer;
-
-
-      var startPoint = void 0;
-      if (wasActivatedByPointer) {
-        startPoint = Object(__WEBPACK_IMPORTED_MODULE_3__util__["getNormalizedEventCoords"])(
-        /** @type {!Event} */activationEvent, this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect());
-      } else {
-        startPoint = {
-          x: this.frame_.width / 2,
-          y: this.frame_.height / 2
-        };
-      }
-      // Center the element around the start point.
-      startPoint = {
-        x: startPoint.x - this.initialSize_ / 2,
-        y: startPoint.y - this.initialSize_ / 2
-      };
-
-      var endPoint = {
-        x: this.frame_.width / 2 - this.initialSize_ / 2,
-        y: this.frame_.height / 2 - this.initialSize_ / 2
-      };
-
-      return { startPoint: startPoint, endPoint: endPoint };
-    }
-
-    /** @private */
-
-  }, {
-    key: 'runDeactivationUXLogicIfReady_',
-    value: function runDeactivationUXLogicIfReady_() {
-      var _this11 = this;
-
-      // This method is called both when a pointing device is released, and when the activation animation ends.
-      // The deactivation animation should only run after both of those occur.
-      var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;
-      var _activationState_2 = this.activationState_,
-          hasDeactivationUXRun = _activationState_2.hasDeactivationUXRun,
-          isActivated = _activationState_2.isActivated;
-
-      var activationHasEnded = hasDeactivationUXRun || !isActivated;
-
-      if (activationHasEnded && this.activationAnimationHasEnded_) {
-        this.rmBoundedActivationClasses_();
-        this.adapter_.addClass(FG_DEACTIVATION);
-        this.fgDeactivationRemovalTimer_ = setTimeout(function () {
-          _this11.adapter_.removeClass(FG_DEACTIVATION);
-        }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].FG_DEACTIVATION_MS);
-      }
-    }
-
-    /** @private */
-
-  }, {
-    key: 'rmBoundedActivationClasses_',
-    value: function rmBoundedActivationClasses_() {
-      var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;
-
-      this.adapter_.removeClass(FG_ACTIVATION);
-      this.activationAnimationHasEnded_ = false;
-      this.adapter_.computeBoundingRect();
-    }
-  }, {
-    key: 'resetActivationState_',
-    value: function resetActivationState_() {
-      var _this12 = this;
-
-      this.previousActivationEvent_ = this.activationState_.activationEvent;
-      this.activationState_ = this.defaultActivationState_();
-      // Touch devices may fire additional events for the same interaction within a short time.
-      // Store the previous event until it's safe to assume that subsequent events are for new interactions.
-      setTimeout(function () {
-        return _this12.previousActivationEvent_ = undefined;
-      }, MDCRippleFoundation.numbers.TAP_DELAY_MS);
-    }
-
-    /**
-     * @private
-     */
-
-  }, {
-    key: 'deactivate_',
-    value: function deactivate_() {
-      var _this13 = this;
-
-      var activationState = this.activationState_;
-      // This can happen in scenarios such as when you have a keyup event that blurs the element.
-      if (!activationState.isActivated) {
-        return;
-      }
-
-      var state = /** @type {!ActivationStateType} */_extends({}, activationState);
-
-      if (activationState.isProgrammatic) {
-        requestAnimationFrame(function () {
-          return _this13.animateDeactivation_(state);
-        });
-        this.resetActivationState_();
-      } else {
-        this.deregisterDeactivationHandlers_();
-        requestAnimationFrame(function () {
-          _this13.activationState_.hasDeactivationUXRun = true;
-          _this13.animateDeactivation_(state);
-          _this13.resetActivationState_();
-        });
-      }
-    }
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.deactivate_();
-    }
-
-    /**
-     * @param {!ActivationStateType} options
-     * @private
-     */
-
-  }, {
-    key: 'animateDeactivation_',
-    value: function animateDeactivation_(_ref) {
-      var wasActivatedByPointer = _ref.wasActivatedByPointer,
-          wasElementMadeActive = _ref.wasElementMadeActive;
-
-      if (wasActivatedByPointer || wasElementMadeActive) {
-        this.runDeactivationUXLogicIfReady_();
-      }
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      var _this14 = this;
-
-      if (this.layoutFrame_) {
-        cancelAnimationFrame(this.layoutFrame_);
-      }
-      this.layoutFrame_ = requestAnimationFrame(function () {
-        _this14.layoutInternal_();
-        _this14.layoutFrame_ = 0;
-      });
-    }
-
-    /** @private */
-
-  }, {
-    key: 'layoutInternal_',
-    value: function layoutInternal_() {
-      var _this15 = this;
-
-      this.frame_ = this.adapter_.computeBoundingRect();
-      var maxDim = Math.max(this.frame_.height, this.frame_.width);
-
-      // Surface diameter is treated differently for unbounded vs. bounded ripples.
-      // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately
-      // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically
-      // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter
-      // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via
-      // `overflow: hidden`.
-      var getBoundedRadius = function getBoundedRadius() {
-        var hypotenuse = Math.sqrt(Math.pow(_this15.frame_.width, 2) + Math.pow(_this15.frame_.height, 2));
-        return hypotenuse + MDCRippleFoundation.numbers.PADDING;
-      };
-
-      this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();
-
-      // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform
-      this.initialSize_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);
-      this.fgScale_ = this.maxRadius_ / this.initialSize_;
-
-      this.updateLayoutCssVars_();
-    }
-
-    /** @private */
-
-  }, {
-    key: 'updateLayoutCssVars_',
-    value: function updateLayoutCssVars_() {
-      var _MDCRippleFoundation$5 = MDCRippleFoundation.strings,
-          VAR_FG_SIZE = _MDCRippleFoundation$5.VAR_FG_SIZE,
-          VAR_LEFT = _MDCRippleFoundation$5.VAR_LEFT,
-          VAR_TOP = _MDCRippleFoundation$5.VAR_TOP,
-          VAR_FG_SCALE = _MDCRippleFoundation$5.VAR_FG_SCALE;
-
-
-      this.adapter_.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + 'px');
-      this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);
-
-      if (this.adapter_.isUnbounded()) {
-        this.unboundedCoords_ = {
-          left: Math.round(this.frame_.width / 2 - this.initialSize_ / 2),
-          top: Math.round(this.frame_.height / 2 - this.initialSize_ / 2)
-        };
-
-        this.adapter_.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + 'px');
-        this.adapter_.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + 'px');
-      }
-    }
-
-    /** @param {boolean} unbounded */
-
-  }, {
-    key: 'setUnbounded',
-    value: function setUnbounded(unbounded) {
-      var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;
-
-      if (unbounded) {
-        this.adapter_.addClass(UNBOUNDED);
-      } else {
-        this.adapter_.removeClass(UNBOUNDED);
-      }
-    }
-  }, {
-    key: 'handleFocus',
-    value: function handleFocus() {
-      var _this16 = this;
-
-      requestAnimationFrame(function () {
-        return _this16.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
-      });
-    }
-  }, {
-    key: 'handleBlur',
-    value: function handleBlur() {
-      var _this17 = this;
-
-      requestAnimationFrame(function () {
-        return _this17.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);
-      });
-    }
-  }]);
-
-  return MDCRippleFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCRippleFoundation);
-
-/***/ }),
-/* 70 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var cssClasses = {
-  // Ripple is a special case where the "root" component is really a "mixin" of sorts,
-  // given that it's an 'upgrade' to an existing component. That being said it is the root
-  // CSS class that all other CSS classes derive from.
-  ROOT: 'mdc-ripple-upgraded',
-  UNBOUNDED: 'mdc-ripple-upgraded--unbounded',
-  BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',
-  FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',
-  FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation'
-};
-
-var strings = {
-  VAR_LEFT: '--mdc-ripple-left',
-  VAR_TOP: '--mdc-ripple-top',
-  VAR_FG_SIZE: '--mdc-ripple-fg-size',
-  VAR_FG_SCALE: '--mdc-ripple-fg-scale',
-  VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',
-  VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end'
-};
-
-var numbers = {
-  PADDING: 10,
-  INITIAL_ORIGIN_SCALE: 0.6,
-  DEACTIVATION_TIMEOUT_MS: 225, // Corresponds to $mdc-ripple-translate-duration (i.e. activation animation duration)
-  FG_DEACTIVATION_MS: 150, // Corresponds to $mdc-ripple-fade-out-duration (i.e. deactivation animation duration)
-  TAP_DELAY_MS: 300 };
-
-
-
-/***/ }),
-/* 71 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(72);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(73);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-/* eslint-enable no-unused-vars */
-
-
-/**
- * @extends {MDCFoundation<!MDCCheckboxAdapter>}
- */
-
-var MDCCheckboxFoundation = function (_MDCFoundation) {
-  _inherits(MDCCheckboxFoundation, _MDCFoundation);
-
-  _createClass(MDCCheckboxFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {strings} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */];
-    }
-
-    /** @return enum {numbers} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* numbers */];
-    }
-
-    /** @return {!MDCCheckboxAdapter} */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCCheckboxAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          setNativeControlAttr: function setNativeControlAttr() /* attr: string, value: string */{},
-          removeNativeControlAttr: function removeNativeControlAttr() /* attr: string */{},
-          forceLayout: function forceLayout() {},
-          isAttachedToDOM: function isAttachedToDOM() /* boolean */{},
-          isIndeterminate: function isIndeterminate() /* boolean */{},
-          isChecked: function isChecked() /* boolean */{},
-          hasNativeControl: function hasNativeControl() /* boolean */{},
-          setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
-        }
-      );
-    }
-  }]);
-
-  function MDCCheckboxFoundation(adapter) {
-    _classCallCheck(this, MDCCheckboxFoundation);
-
-    /** @private {string} */
-    var _this = _possibleConstructorReturn(this, (MDCCheckboxFoundation.__proto__ || Object.getPrototypeOf(MDCCheckboxFoundation)).call(this, _extends(MDCCheckboxFoundation.defaultAdapter, adapter)));
-
-    _this.currentCheckState_ = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INIT;
-
-    /** @private {string} */
-    _this.currentAnimationClass_ = '';
-
-    /** @private {number} */
-    _this.animEndLatchTimer_ = 0;
-
-    /** @private {boolean} */
-    _this.enableAnimationEndHandler_ = false;
-    return _this;
-  }
-
-  /** @override */
-
-
-  _createClass(MDCCheckboxFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.currentCheckState_ = this.determineCheckState_();
-      this.updateAriaChecked_();
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].UPGRADED);
-    }
-
-    /** @override */
-
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      clearTimeout(this.animEndLatchTimer_);
-    }
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      this.adapter_.setNativeControlDisabled(disabled);
-      if (disabled) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].DISABLED);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].DISABLED);
-      }
-    }
-
-    /**
-     * Handles the animationend event for the checkbox
-     */
-
-  }, {
-    key: 'handleAnimationEnd',
-    value: function handleAnimationEnd() {
-      var _this2 = this;
-
-      if (!this.enableAnimationEndHandler_) return;
-
-      clearTimeout(this.animEndLatchTimer_);
-
-      this.animEndLatchTimer_ = setTimeout(function () {
-        _this2.adapter_.removeClass(_this2.currentAnimationClass_);
-        _this2.enableAnimationEndHandler_ = false;
-      }, __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* numbers */].ANIM_END_LATCH_MS);
-    }
-
-    /**
-     * Handles the change event for the checkbox
-     */
-
-  }, {
-    key: 'handleChange',
-    value: function handleChange() {
-      this.transitionCheckState_();
-    }
-
-    /** @private */
-
-  }, {
-    key: 'transitionCheckState_',
-    value: function transitionCheckState_() {
-      if (!this.adapter_.hasNativeControl()) {
-        return;
-      }
-      var oldState = this.currentCheckState_;
-      var newState = this.determineCheckState_();
-
-      if (oldState === newState) {
-        return;
-      }
-
-      this.updateAriaChecked_();
-
-      // Check to ensure that there isn't a previously existing animation class, in case for example
-      // the user interacted with the checkbox before the animation was finished.
-      if (this.currentAnimationClass_.length > 0) {
-        clearTimeout(this.animEndLatchTimer_);
-        this.adapter_.forceLayout();
-        this.adapter_.removeClass(this.currentAnimationClass_);
-      }
-
-      this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);
-      this.currentCheckState_ = newState;
-
-      // Check for parentNode so that animations are only run when the element is attached
-      // to the DOM.
-      if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {
-        this.adapter_.addClass(this.currentAnimationClass_);
-        this.enableAnimationEndHandler_ = true;
-      }
-    }
-
-    /**
-     * @return {string}
-     * @private
-     */
-
-  }, {
-    key: 'determineCheckState_',
-    value: function determineCheckState_() {
-      var TRANSITION_STATE_INDETERMINATE = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INDETERMINATE,
-          TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_CHECKED,
-          TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_UNCHECKED;
-
-
-      if (this.adapter_.isIndeterminate()) {
-        return TRANSITION_STATE_INDETERMINATE;
-      }
-      return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;
-    }
-
-    /**
-     * @param {string} oldState
-     * @param {string} newState
-     * @return {string}
-     */
-
-  }, {
-    key: 'getTransitionAnimationClass_',
-    value: function getTransitionAnimationClass_(oldState, newState) {
-      var TRANSITION_STATE_INIT = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_INIT,
-          TRANSITION_STATE_CHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_CHECKED,
-          TRANSITION_STATE_UNCHECKED = __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].TRANSITION_STATE_UNCHECKED;
-      var _MDCCheckboxFoundatio = MDCCheckboxFoundation.cssClasses,
-          ANIM_UNCHECKED_CHECKED = _MDCCheckboxFoundatio.ANIM_UNCHECKED_CHECKED,
-          ANIM_UNCHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_UNCHECKED_INDETERMINATE,
-          ANIM_CHECKED_UNCHECKED = _MDCCheckboxFoundatio.ANIM_CHECKED_UNCHECKED,
-          ANIM_CHECKED_INDETERMINATE = _MDCCheckboxFoundatio.ANIM_CHECKED_INDETERMINATE,
-          ANIM_INDETERMINATE_CHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_CHECKED,
-          ANIM_INDETERMINATE_UNCHECKED = _MDCCheckboxFoundatio.ANIM_INDETERMINATE_UNCHECKED;
-
-
-      switch (oldState) {
-        case TRANSITION_STATE_INIT:
-          if (newState === TRANSITION_STATE_UNCHECKED) {
-            return '';
-          }
-        // fallthrough
-        case TRANSITION_STATE_UNCHECKED:
-          return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;
-        case TRANSITION_STATE_CHECKED:
-          return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;
-        // TRANSITION_STATE_INDETERMINATE
-        default:
-          return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
-      }
-    }
-  }, {
-    key: 'updateAriaChecked_',
-    value: function updateAriaChecked_() {
-      // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.
-      if (this.adapter_.isIndeterminate()) {
-        this.adapter_.setNativeControlAttr(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ARIA_CHECKED_ATTR, __WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ARIA_CHECKED_INDETERMINATE_VALUE);
-      } else {
-        // The on/off state does not need to keep track of aria-checked, since
-        // the screenreader uses the checked property on the checkbox element.
-        this.adapter_.removeNativeControlAttr(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ARIA_CHECKED_ATTR);
-      }
-    }
-  }]);
-
-  return MDCCheckboxFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCCheckboxFoundation);
-
-/***/ }),
-/* 72 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(3);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint-disable no-unused-vars */
-
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Checkbox. Provides an interface for managing
- * - classes
- * - dom
- * - event handlers
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-
-var MDCCheckboxAdapter = function () {
-  function MDCCheckboxAdapter() {
-    _classCallCheck(this, MDCCheckboxAdapter);
-  }
-
-  _createClass(MDCCheckboxAdapter, [{
-    key: 'addClass',
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: 'removeClass',
-    value: function removeClass(className) {}
-
-    /**
-     * Sets an attribute with a given value on the input element.
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: 'setNativeControlAttr',
-    value: function setNativeControlAttr(attr, value) {}
-
-    /**
-     * Removes an attribute from the input element.
-     * @param {string} attr
-     */
-
-  }, {
-    key: 'removeNativeControlAttr',
-    value: function removeNativeControlAttr(attr) {}
-  }, {
-    key: 'forceLayout',
-    value: function forceLayout() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isAttachedToDOM',
-    value: function isAttachedToDOM() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isIndeterminate',
-    value: function isIndeterminate() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isChecked',
-    value: function isChecked() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'hasNativeControl',
-    value: function hasNativeControl() {}
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setNativeControlDisabled',
-    value: function setNativeControlDisabled(disabled) {}
-  }]);
-
-  return MDCCheckboxAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCCheckboxAdapter);
-
-/***/ }),
-/* 73 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @const {string} */
-var ROOT = 'mdc-checkbox';
-
-/** @enum {string} */
-var cssClasses = {
-  UPGRADED: 'mdc-checkbox--upgraded',
-  CHECKED: 'mdc-checkbox--checked',
-  INDETERMINATE: 'mdc-checkbox--indeterminate',
-  DISABLED: 'mdc-checkbox--disabled',
-  ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',
-  ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',
-  ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',
-  ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',
-  ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',
-  ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked'
-};
-
-/** @enum {string} */
-var strings = {
-  NATIVE_CONTROL_SELECTOR: '.' + ROOT + '__native-control',
-  TRANSITION_STATE_INIT: 'init',
-  TRANSITION_STATE_CHECKED: 'checked',
-  TRANSITION_STATE_UNCHECKED: 'unchecked',
-  TRANSITION_STATE_INDETERMINATE: 'indeterminate',
-  ARIA_CHECKED_ATTR: 'aria-checked',
-  ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed'
-};
-
-/** @enum {number} */
-var numbers = {
-  ANIM_END_LATCH_MS: 250
-};
-
-
-
-/***/ }),
-/* 74 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__chip_index__ = __webpack_require__(29);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__chip_set_index__ = __webpack_require__(75);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipFoundation", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChip", function() { return __WEBPACK_IMPORTED_MODULE_0__chip_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipSetFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCChipSet", function() { return __WEBPACK_IMPORTED_MODULE_1__chip_set_index__["a"]; });
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/***/ }),
-/* 75 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCChipSet; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(33);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(76);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chip_index__ = __webpack_require__(29);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-var idCounter = 0;
-
-/**
- * @extends {MDCComponent<!MDCChipSetFoundation>}
- * @final
- */
-
-var MDCChipSet = function (_MDCComponent) {
-  _inherits(MDCChipSet, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCChipSet() {
-    var _ref;
-
-    _classCallCheck(this, MDCChipSet);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {!Array<!MDCChip>} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCChipSet.__proto__ || Object.getPrototypeOf(MDCChipSet)).call.apply(_ref, [this].concat(args)));
-
-    _this.chips;
-    /** @private {(function(!Element): !MDCChip)} */
-    _this.chipFactory_;
-
-    /** @private {?function(?Event): undefined} */
-    _this.handleChipInteraction_;
-    /** @private {?function(?Event): undefined} */
-    _this.handleChipSelection_;
-    /** @private {?function(?Event): undefined} */
-    _this.handleChipRemoval_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCChipSet}
-   */
-
-
-  _createClass(MDCChipSet, [{
-    key: 'initialize',
-
-
-    /**
-     * @param {(function(!Element): !MDCChip)=} chipFactory A function which
-     * creates a new MDCChip.
-     */
-    value: function initialize() {
-      var chipFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_3__chip_index__["a" /* MDCChip */](el);
-      };
-
-      this.chipFactory_ = chipFactory;
-      this.chips = this.instantiateChips_(this.chipFactory_);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.chips.forEach(function (chip) {
-        if (chip.selected) {
-          _this2.foundation_.select(chip.id);
-        }
-      });
-
-      this.handleChipInteraction_ = function (evt) {
-        return _this2.foundation_.handleChipInteraction(evt.detail.chipId);
-      };
-      this.handleChipSelection_ = function (evt) {
-        return _this2.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);
-      };
-      this.handleChipRemoval_ = function (evt) {
-        return _this2.foundation_.handleChipRemoval(evt.detail.chipId);
-      };
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.chips.forEach(function (chip) {
-        chip.destroy();
-      });
-
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.INTERACTION_EVENT, this.handleChipInteraction_);
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.SELECTION_EVENT, this.handleChipSelection_);
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_3__chip_index__["b" /* MDCChipFoundation */].strings.REMOVAL_EVENT, this.handleChipRemoval_);
-
-      _get(MDCChipSet.prototype.__proto__ || Object.getPrototypeOf(MDCChipSet.prototype), 'destroy', this).call(this);
-    }
-
-    /**
-     * Adds a new chip object to the chip set from the given chip element.
-     * @param {!Element} chipEl
-     */
-
-  }, {
-    key: 'addChip',
-    value: function addChip(chipEl) {
-      chipEl.id = chipEl.id || 'mdc-chip-' + ++idCounter;
-      this.chips.push(this.chipFactory_(chipEl));
-    }
-
-    /**
-     * Returns an array of the IDs of all selected chips.
-     * @return {!Array<string>}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCChipSetFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCChipSetAdapter} */_extends({
-        hasClass: function hasClass(className) {
-          return _this3.root_.classList.contains(className);
-        },
-        removeChip: function removeChip(chipId) {
-          var index = _this3.findChipIndex_(chipId);
-          if (index >= 0) {
-            _this3.chips[index].destroy();
-            _this3.chips.splice(index, 1);
-          }
-        },
-        setSelected: function setSelected(chipId, selected) {
-          var index = _this3.findChipIndex_(chipId);
-          if (index >= 0) {
-            _this3.chips[index].selected = selected;
-          }
-        }
-      }));
-    }
-
-    /**
-     * Instantiates chip components on all of the chip set's child chip elements.
-     * @param {(function(!Element): !MDCChip)} chipFactory
-     * @return {!Array<!MDCChip>}
-     */
-
-  }, {
-    key: 'instantiateChips_',
-    value: function instantiateChips_(chipFactory) {
-      var chipElements = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CHIP_SELECTOR));
-      return chipElements.map(function (el) {
-        el.id = el.id || 'mdc-chip-' + ++idCounter;
-        return chipFactory(el);
-      });
-    }
-
-    /**
-     * Returns the index of the chip with the given id, or -1 if the chip does not exist.
-     * @param {string} chipId
-     * @return {number}
-     */
-
-  }, {
-    key: 'findChipIndex_',
-    value: function findChipIndex_(chipId) {
-      for (var i = 0; i < this.chips.length; i++) {
-        if (this.chips[i].id === chipId) {
-          return i;
-        }
-      }
-      return -1;
-    }
-  }, {
-    key: 'selectedChipIds',
-    get: function get() {
-      return this.foundation_.getSelectedChipIds();
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCChipSet(root);
-    }
-  }]);
-
-  return MDCChipSet;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 76 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(33);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__chip_foundation__ = __webpack_require__(31);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(77);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-// eslint-disable-next-line no-unused-vars
-
-
-
-/**
- * @extends {MDCFoundation<!MDCChipSetAdapter>}
- * @final
- */
-
-var MDCChipSetFoundation = function (_MDCFoundation) {
-  _inherits(MDCChipSetFoundation, _MDCFoundation);
-
-  _createClass(MDCChipSetFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
-    }
-
-    /**
-     * {@see MDCChipSetAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCChipSetAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCChipSetAdapter} */{
-          hasClass: function hasClass() {},
-          removeChip: function removeChip() {},
-          setSelected: function setSelected() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCChipSetAdapter} adapter
-     */
-
-  }]);
-
-  function MDCChipSetFoundation(adapter) {
-    _classCallCheck(this, MDCChipSetFoundation);
-
-    /**
-     * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.
-     * @private {!Array<string>}
-     */
-    var _this = _possibleConstructorReturn(this, (MDCChipSetFoundation.__proto__ || Object.getPrototypeOf(MDCChipSetFoundation)).call(this, _extends(MDCChipSetFoundation.defaultAdapter, adapter)));
-
-    _this.selectedChipIds_ = [];
-    return _this;
-  }
-
-  /**
-   * Returns an array of the IDs of all selected chips.
-   * @return {!Array<string>}
-   */
-
-
-  _createClass(MDCChipSetFoundation, [{
-    key: 'getSelectedChipIds',
-    value: function getSelectedChipIds() {
-      return this.selectedChipIds_;
-    }
-
-    /**
-     * Toggles selection of the chip with the given id.
-     * @private
-     * @param {string} chipId
-     */
-
-  }, {
-    key: 'toggleSelect_',
-    value: function toggleSelect_(chipId) {
-      if (this.selectedChipIds_.indexOf(chipId) >= 0) {
-        this.deselect_(chipId);
-      } else {
-        this.select(chipId);
-      }
-    }
-
-    /**
-     * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant.
-     * @param {string} chipId
-     */
-
-  }, {
-    key: 'select',
-    value: function select(chipId) {
-      if (this.selectedChipIds_.indexOf(chipId) >= 0) {
-        return;
-      }
-
-      if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].CHOICE) && this.selectedChipIds_.length > 0) {
-        var previouslySelectedChip = this.selectedChipIds_[0];
-        this.selectedChipIds_.length = 0;
-        this.adapter_.setSelected(previouslySelectedChip, false);
-      }
-      this.selectedChipIds_.push(chipId);
-      this.adapter_.setSelected(chipId, true);
-    }
-
-    /**
-     * Deselects the chip with the given id.
-     * @private
-     * @param {string} chipId
-     */
-
-  }, {
-    key: 'deselect_',
-    value: function deselect_(chipId) {
-      var index = this.selectedChipIds_.indexOf(chipId);
-      if (index >= 0) {
-        this.selectedChipIds_.splice(index, 1);
-        this.adapter_.setSelected(chipId, false);
-      }
-    }
-
-    /**
-     * Handles a chip interaction event
-     * @param {string} chipId
-     */
-
-  }, {
-    key: 'handleChipInteraction',
-    value: function handleChipInteraction(chipId) {
-      if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].CHOICE) || this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].FILTER)) {
-        this.toggleSelect_(chipId);
-      }
-    }
-
-    /**
-     * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip.
-     * @param {string} chipId
-     * @param {boolean} selected
-     */
-
-  }, {
-    key: 'handleChipSelection',
-    value: function handleChipSelection(chipId, selected) {
-      var chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0;
-      if (selected && !chipIsSelected) {
-        this.select(chipId);
-      } else if (!selected && chipIsSelected) {
-        this.deselect_(chipId);
-      }
-    }
-
-    /**
-     * Handles the event when a chip is removed.
-     * @param {string} chipId
-     */
-
-  }, {
-    key: 'handleChipRemoval',
-    value: function handleChipRemoval(chipId) {
-      this.deselect_(chipId);
-      this.adapter_.removeChip(chipId);
-    }
-  }]);
-
-  return MDCChipSetFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCChipSetFoundation);
-
-/***/ }),
-/* 77 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  CHIP_SELECTOR: '.mdc-chip'
-};
-
-/** @enum {string} */
-var cssClasses = {
-  CHOICE: 'mdc-chip-set--choice',
-  FILTER: 'mdc-chip-set--filter'
-};
-
-
-
-/***/ }),
-/* 78 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDialog", function() { return MDCDialog; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(79);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(82);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__ = __webpack_require__(8);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap__ = __webpack_require__(34);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_focus_trap__);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDialogFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-
-var strings = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings;
-
-var MDCDialog = function (_MDCComponent) {
-  _inherits(MDCDialog, _MDCComponent);
-
-  function MDCDialog() {
-    var _ref;
-
-    _classCallCheck(this, MDCDialog);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /**
-     * @type {!Array<!MDCRipple>}
-     * @private
-     */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCDialog.__proto__ || Object.getPrototypeOf(MDCDialog)).call.apply(_ref, [this].concat(args)));
-
-    _this.buttonRipples_;
-
-    /** @private {!Array<!Element>} */
-    _this.buttons_;
-
-    /** @private {?Element} */
-    _this.defaultButton_;
-
-    /** @private {!Element} */
-    _this.container_;
-
-    /** @private {?Element} */
-    _this.content_;
-
-    /** @private {?Element} */
-    _this.initialFocusEl_;
-
-    /** @private {!Function} */
-    _this.focusTrapFactory_;
-
-    /** @private {!FocusTrapInstance} */
-    _this.focusTrap_;
-
-    /** @private {!Function} */
-    _this.handleInteraction_;
-
-    /** @private {!Function} */
-    _this.handleDocumentKeydown_;
-
-    /** @private {!Function} */
-    _this.handleOpening_;
-
-    /** @private {!Function} */
-    _this.handleClosing_;
-
-    /** @private {Function} */
-    _this.layout_;
-    return _this;
-  }
-
-  _createClass(MDCDialog, [{
-    key: 'initialize',
-    value: function initialize() {
-      var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_5_focus_trap___default.a;
-      var initialFocusEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-
-      this.container_ = /** @type {!Element} */this.root_.querySelector(strings.CONTAINER_SELECTOR);
-      this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR);
-      this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR));
-      this.defaultButton_ = this.root_.querySelector(strings.DEFAULT_BUTTON_SELECTOR);
-      this.buttonRipples_ = [];
-      this.focusTrapFactory_ = focusTrapFactory;
-      this.initialFocusEl_ = initialFocusEl;
-
-      for (var i = 0, buttonEl; buttonEl = this.buttons_[i]; i++) {
-        this.buttonRipples_.push(new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](buttonEl));
-      }
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_3__util__["createFocusTrapInstance"](this.container_, this.focusTrapFactory_, this.initialFocusEl_);
-
-      this.handleInteraction_ = this.foundation_.handleInteraction.bind(this.foundation_);
-      this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_);
-      this.layout_ = this.layout.bind(this);
-
-      var LAYOUT_EVENTS = ['resize', 'orientationchange'];
-      this.handleOpening_ = function () {
-        LAYOUT_EVENTS.forEach(function (type) {
-          return window.addEventListener(type, _this2.layout_);
-        });
-        document.addEventListener('keydown', _this2.handleDocumentKeydown_);
-      };
-      this.handleClosing_ = function () {
-        LAYOUT_EVENTS.forEach(function (type) {
-          return window.removeEventListener(type, _this2.layout_);
-        });
-        document.removeEventListener('keydown', _this2.handleDocumentKeydown_);
-      };
-
-      this.listen('click', this.handleInteraction_);
-      this.listen('keydown', this.handleInteraction_);
-      this.listen(strings.OPENING_EVENT, this.handleOpening_);
-      this.listen(strings.CLOSING_EVENT, this.handleClosing_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.unlisten('click', this.handleInteraction_);
-      this.unlisten('keydown', this.handleInteraction_);
-      this.unlisten(strings.OPENING_EVENT, this.handleOpening_);
-      this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);
-      this.handleClosing_();
-
-      this.buttonRipples_.forEach(function (ripple) {
-        return ripple.destroy();
-      });
-      _get(MDCDialog.prototype.__proto__ || Object.getPrototypeOf(MDCDialog.prototype), 'destroy', this).call(this);
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      this.foundation_.layout();
-    }
-  }, {
-    key: 'open',
-    value: function open() {
-      this.foundation_.open();
-    }
-
-    /**
-     * @param {string=} action
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
-
-      this.foundation_.close(action);
-    }
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this3.root_.classList.contains(className);
-        },
-        addBodyClass: function addBodyClass(className) {
-          return document.body.classList.add(className);
-        },
-        removeBodyClass: function removeBodyClass(className) {
-          return document.body.classList.remove(className);
-        },
-        eventTargetMatches: function eventTargetMatches(target, selector) {
-          return Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["matches"])(target, selector);
-        },
-        trapFocus: function trapFocus() {
-          return _this3.focusTrap_.activate();
-        },
-        releaseFocus: function releaseFocus() {
-          return _this3.focusTrap_.deactivate();
-        },
-        isContentScrollable: function isContentScrollable() {
-          return !!_this3.content_ && __WEBPACK_IMPORTED_MODULE_3__util__["isScrollable"]( /** @type {!Element} */_this3.content_);
-        },
-        areButtonsStacked: function areButtonsStacked() {
-          return __WEBPACK_IMPORTED_MODULE_3__util__["areTopsMisaligned"](_this3.buttons_);
-        },
-        getActionFromEvent: function getActionFromEvent(event) {
-          var element = Object(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["closest"])(event.target, '[' + strings.ACTION_ATTRIBUTE + ']');
-          return element && element.getAttribute(strings.ACTION_ATTRIBUTE);
-        },
-        clickDefaultButton: function clickDefaultButton() {
-          if (_this3.defaultButton_) {
-            _this3.defaultButton_.click();
-          }
-        },
-        reverseButtons: function reverseButtons() {
-          _this3.buttons_.reverse();
-          _this3.buttons_.forEach(function (button) {
-            return button.parentElement.appendChild(button);
-          });
-        },
-        notifyOpening: function notifyOpening() {
-          return _this3.emit(strings.OPENING_EVENT, {});
-        },
-        notifyOpened: function notifyOpened() {
-          return _this3.emit(strings.OPENED_EVENT, {});
-        },
-        notifyClosing: function notifyClosing(action) {
-          return _this3.emit(strings.CLOSING_EVENT, action ? { action: action } : {});
-        },
-        notifyClosed: function notifyClosed(action) {
-          return _this3.emit(strings.CLOSED_EVENT, action ? { action: action } : {});
-        }
-      });
-    }
-  }, {
-    key: 'isOpen',
-    get: function get() {
-      return this.foundation_.isOpen();
-    }
-  }, {
-    key: 'escapeKeyAction',
-    get: function get() {
-      return this.foundation_.getEscapeKeyAction();
-    },
-    set: function set(action) {
-      this.foundation_.setEscapeKeyAction(action);
-    }
-  }, {
-    key: 'scrimClickAction',
-    get: function get() {
-      return this.foundation_.getScrimClickAction();
-    },
-    set: function set(action) {
-      this.foundation_.setScrimClickAction(action);
-    }
-  }, {
-    key: 'autoStackButtons',
-    get: function get() {
-      return this.foundation_.getAutoStackButtons();
-    },
-    set: function set(autoStack) {
-      this.foundation_.setAutoStackButtons(autoStack);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCDialog(root);
-    }
-  }]);
-
-  return MDCDialog;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 79 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(80);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(81);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-var MDCDialogFoundation = function (_MDCFoundation) {
-  _inherits(MDCDialogFoundation, _MDCFoundation);
-
-  _createClass(MDCDialogFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
-    }
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCDialogAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          hasClass: function hasClass() /* className: string */{},
-          addBodyClass: function addBodyClass() /* className: string */{},
-          removeBodyClass: function removeBodyClass() /* className: string */{},
-          eventTargetMatches: function eventTargetMatches() /* target: !EventTarget, selector: string */{},
-          trapFocus: function trapFocus() {},
-          releaseFocus: function releaseFocus() {},
-          isContentScrollable: function isContentScrollable() {},
-          areButtonsStacked: function areButtonsStacked() {},
-          getActionFromEvent: function getActionFromEvent() /* event: !Event */{},
-          clickDefaultButton: function clickDefaultButton() {},
-          reverseButtons: function reverseButtons() {},
-          notifyOpening: function notifyOpening() {},
-          notifyOpened: function notifyOpened() {},
-          notifyClosing: function notifyClosing() /* action: ?string */{},
-          notifyClosed: function notifyClosed() /* action: ?string */{}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCDialogAdapter=} adapter
-     */
-
-  }]);
-
-  function MDCDialogFoundation(adapter) {
-    _classCallCheck(this, MDCDialogFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCDialogFoundation.__proto__ || Object.getPrototypeOf(MDCDialogFoundation)).call(this, _extends(MDCDialogFoundation.defaultAdapter, adapter)));
-
-    _this.isOpen_ = false;
-
-    /** @private {number} */
-    _this.animationFrame_ = 0;
-
-    /** @private {number} */
-    _this.animationTimer_ = 0;
-
-    /** @private {number} */
-    _this.layoutFrame_ = 0;
-
-    /** @private {string} */
-    _this.escapeKeyAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSE_ACTION;
-
-    /** @private {string} */
-    _this.scrimClickAction_ = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSE_ACTION;
-
-    /** @private {boolean} */
-    _this.autoStackButtons_ = true;
-
-    /** @private {boolean} */
-    _this.areButtonsStacked_ = false;
-    return _this;
-  }
-
-  _createClass(MDCDialogFoundation, [{
-    key: 'init',
-    value: function init() {
-      if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED)) {
-        this.setAutoStackButtons(false);
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      if (this.isOpen_) {
-        this.close(__WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].DESTROY_ACTION);
-      }
-
-      if (this.animationTimer_) {
-        clearTimeout(this.animationTimer_);
-        this.handleAnimationTimerEnd_();
-      }
-
-      if (this.layoutFrame_) {
-        cancelAnimationFrame(this.layoutFrame_);
-        this.layoutFrame_ = 0;
-      }
-    }
-  }, {
-    key: 'open',
-    value: function open() {
-      var _this2 = this;
-
-      this.isOpen_ = true;
-      this.adapter_.notifyOpening();
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
-
-      // Wait a frame once display is no longer "none", to establish basis for animation
-      this.runNextAnimationFrame_(function () {
-        _this2.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
-        _this2.adapter_.addBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLL_LOCK);
-
-        _this2.layout();
-
-        _this2.animationTimer_ = setTimeout(function () {
-          _this2.handleAnimationTimerEnd_();
-          _this2.adapter_.trapFocus();
-          _this2.adapter_.notifyOpened();
-        }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DIALOG_ANIMATION_OPEN_TIME_MS);
-      });
-    }
-
-    /**
-     * @param {string=} action
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      var _this3 = this;
-
-      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
-
-      if (!this.isOpen_) {
-        // Avoid redundant close calls (and events), e.g. from keydown on elements that inherently emit click
-        return;
-      }
-
-      this.isOpen_ = false;
-      this.adapter_.notifyClosing(action);
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
-      this.adapter_.removeBodyClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLL_LOCK);
-
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = 0;
-
-      clearTimeout(this.animationTimer_);
-      this.animationTimer_ = setTimeout(function () {
-        _this3.adapter_.releaseFocus();
-        _this3.handleAnimationTimerEnd_();
-        _this3.adapter_.notifyClosed(action);
-      }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DIALOG_ANIMATION_CLOSE_TIME_MS);
-    }
-  }, {
-    key: 'isOpen',
-    value: function isOpen() {
-      return this.isOpen_;
-    }
-
-    /** @return {string} */
-
-  }, {
-    key: 'getEscapeKeyAction',
-    value: function getEscapeKeyAction() {
-      return this.escapeKeyAction_;
-    }
-
-    /** @param {string} action */
-
-  }, {
-    key: 'setEscapeKeyAction',
-    value: function setEscapeKeyAction(action) {
-      this.escapeKeyAction_ = action;
-    }
-
-    /** @return {string} */
-
-  }, {
-    key: 'getScrimClickAction',
-    value: function getScrimClickAction() {
-      return this.scrimClickAction_;
-    }
-
-    /** @param {string} action */
-
-  }, {
-    key: 'setScrimClickAction',
-    value: function setScrimClickAction(action) {
-      this.scrimClickAction_ = action;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'getAutoStackButtons',
-    value: function getAutoStackButtons() {
-      return this.autoStackButtons_;
-    }
-
-    /** @param {boolean} autoStack */
-
-  }, {
-    key: 'setAutoStackButtons',
-    value: function setAutoStackButtons(autoStack) {
-      this.autoStackButtons_ = autoStack;
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      var _this4 = this;
-
-      if (this.layoutFrame_) {
-        cancelAnimationFrame(this.layoutFrame_);
-      }
-      this.layoutFrame_ = requestAnimationFrame(function () {
-        _this4.layoutInternal_();
-        _this4.layoutFrame_ = 0;
-      });
-    }
-  }, {
-    key: 'layoutInternal_',
-    value: function layoutInternal_() {
-      if (this.autoStackButtons_) {
-        this.detectStackedButtons_();
-      }
-      this.detectScrollableContent_();
-    }
-
-    /** @private */
-
-  }, {
-    key: 'detectStackedButtons_',
-    value: function detectStackedButtons_() {
-      // Remove the class first to let us measure the buttons' natural positions.
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED);
-
-      var areButtonsStacked = this.adapter_.areButtonsStacked();
-
-      if (areButtonsStacked) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].STACKED);
-      }
-
-      if (areButtonsStacked !== this.areButtonsStacked_) {
-        this.adapter_.reverseButtons();
-        this.areButtonsStacked_ = areButtonsStacked;
-      }
-    }
-
-    /** @private */
-
-  }, {
-    key: 'detectScrollableContent_',
-    value: function detectScrollableContent_() {
-      // Remove the class first to let us measure the natural height of the content.
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLLABLE);
-      if (this.adapter_.isContentScrollable()) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SCROLLABLE);
-      }
-    }
-
-    /**
-     * @param {!Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleInteraction',
-    value: function handleInteraction(evt) {
-      var isClick = evt.type === 'click';
-      var isEnter = evt.key === 'Enter' || evt.keyCode === 13;
-
-      // Check for scrim click first since it doesn't require querying ancestors
-      if (isClick && this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].SCRIM_SELECTOR) && this.scrimClickAction_ !== '') {
-        this.close(this.scrimClickAction_);
-      } else if (isClick || evt.key === 'Space' || evt.keyCode === 32 || isEnter) {
-        var action = this.adapter_.getActionFromEvent(evt);
-        if (action) {
-          this.close(action);
-        } else if (isEnter && !this.adapter_.eventTargetMatches(evt.target, __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].SUPPRESS_DEFAULT_PRESS_SELECTOR)) {
-          this.adapter_.clickDefaultButton();
-        }
-      }
-    }
-
-    /**
-     * @param {!KeyboardEvent} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleDocumentKeydown',
-    value: function handleDocumentKeydown(evt) {
-      if ((evt.key === 'Escape' || evt.keyCode === 27) && this.escapeKeyAction_ !== '') {
-        this.close(this.escapeKeyAction_);
-      }
-    }
-
-    /** @private */
-
-  }, {
-    key: 'handleAnimationTimerEnd_',
-    value: function handleAnimationTimerEnd_() {
-      this.animationTimer_ = 0;
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-    }
-
-    /**
-     * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.
-     * @param {Function} callback
-     * @private
-     */
-
-  }, {
-    key: 'runNextAnimationFrame_',
-    value: function runNextAnimationFrame_(callback) {
-      var _this5 = this;
-
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = requestAnimationFrame(function () {
-        _this5.animationFrame_ = 0;
-        clearTimeout(_this5.animationTimer_);
-        _this5.animationTimer_ = setTimeout(callback, 0);
-      });
-    }
-  }]);
-
-  return MDCDialogFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCDialogFoundation);
-
-/***/ }),
-/* 80 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Dialog. Provides an interface for managing:
- * - CSS classes
- * - DOM
- * - Event handlers
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCDialogAdapter = function () {
-  function MDCDialogAdapter() {
-    _classCallCheck(this, MDCDialogAdapter);
-  }
-
-  _createClass(MDCDialogAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * @param {string} className
-     * @return {boolean}
-     */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "addBodyClass",
-    value: function addBodyClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeBodyClass",
-    value: function removeBodyClass(className) {}
-
-    /**
-     * @param {!EventTarget} target
-     * @param {string} selector
-     * @return {boolean}
-     */
-
-  }, {
-    key: "eventTargetMatches",
-    value: function eventTargetMatches(target, selector) {}
-  }, {
-    key: "trapFocus",
-    value: function trapFocus() {}
-  }, {
-    key: "releaseFocus",
-    value: function releaseFocus() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "isContentScrollable",
-    value: function isContentScrollable() {}
-
-    /** @return {boolean} */
-
-  }, {
-    key: "areButtonsStacked",
-    value: function areButtonsStacked() {}
-
-    /**
-     * @param {!Event} event
-     * @return {?string}
-     */
-
-  }, {
-    key: "getActionFromEvent",
-    value: function getActionFromEvent(event) {}
-  }, {
-    key: "clickDefaultButton",
-    value: function clickDefaultButton() {}
-  }, {
-    key: "reverseButtons",
-    value: function reverseButtons() {}
-  }, {
-    key: "notifyOpening",
-    value: function notifyOpening() {}
-  }, {
-    key: "notifyOpened",
-    value: function notifyOpened() {}
-
-    /**
-     * @param {string} action
-     */
-
-  }, {
-    key: "notifyClosing",
-    value: function notifyClosing(action) {}
-
-    /**
-     * @param {string} action
-     */
-
-  }, {
-    key: "notifyClosed",
-    value: function notifyClosed(action) {}
-  }]);
-
-  return MDCDialogAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCDialogAdapter);
-
-/***/ }),
-/* 81 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var cssClasses = {
-  OPEN: 'mdc-dialog--open',
-  OPENING: 'mdc-dialog--opening',
-  CLOSING: 'mdc-dialog--closing',
-  SCROLLABLE: 'mdc-dialog--scrollable',
-  STACKED: 'mdc-dialog--stacked',
-  SCROLL_LOCK: 'mdc-dialog-scroll-lock'
-};
-
-var strings = {
-  SCRIM_SELECTOR: '.mdc-dialog__scrim',
-  CONTAINER_SELECTOR: '.mdc-dialog__container',
-  SURFACE_SELECTOR: '.mdc-dialog__surface',
-  CONTENT_SELECTOR: '.mdc-dialog__content',
-  BUTTON_SELECTOR: '.mdc-dialog__button',
-  DEFAULT_BUTTON_SELECTOR: '.mdc-dialog__button--default',
-  SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '),
-
-  OPENING_EVENT: 'MDCDialog:opening',
-  OPENED_EVENT: 'MDCDialog:opened',
-  CLOSING_EVENT: 'MDCDialog:closing',
-  CLOSED_EVENT: 'MDCDialog:closed',
-
-  ACTION_ATTRIBUTE: 'data-mdc-dialog-action',
-
-  CLOSE_ACTION: 'close',
-  DESTROY_ACTION: 'destroy'
-};
-
-var numbers = {
-  DIALOG_ANIMATION_OPEN_TIME_MS: 150,
-  DIALOG_ANIMATION_CLOSE_TIME_MS: 75
-};
-
-
-
-/***/ }),
-/* 82 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFocusTrapInstance", function() { return createFocusTrapInstance; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScrollable", function() { return isScrollable; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areTopsMisaligned", function() { return areTopsMisaligned; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(34);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @param {!Element} surfaceEl
- * @param {?Element=} initialFocusEl
- * @param {function(!Element, !FocusTrapCreateOptions): !FocusTrapInstance} focusTrapFactory
- * @return {!FocusTrapInstance}
- */
-function createFocusTrapInstance(surfaceEl) {
-  var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;
-  var initialFocusEl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
-
-  return focusTrapFactory(surfaceEl, {
-    initialFocus: initialFocusEl,
-    escapeDeactivates: false, // Dialog foundation handles escape key
-    clickOutsideDeactivates: true });
-}
-
-/**
- * @param {!Element} el
- * @return {boolean}
- */
-function isScrollable(el) {
-  return el.scrollHeight > el.offsetHeight;
-}
-
-/**
- * @param {!Array<!Element>|!NodeList} els
- * @return {boolean}
- */
-function areTopsMisaligned(els) {
-  var tops = new Set();
-  [].forEach.call(els, function (el) {
-    return tops.add(el.offsetTop);
-  });
-  return tops.size > 1;
-}
-
-
-
-/***/ }),
-/* 83 */
-/***/ (function(module, exports) {
-
-var candidateSelectors = [
-  'input',
-  'select',
-  'textarea',
-  'a[href]',
-  'button',
-  '[tabindex]',
-  'audio[controls]',
-  'video[controls]',
-  '[contenteditable]:not([contenteditable="false"])',
-];
-var candidateSelector = candidateSelectors.join(',');
-
-var matches = typeof Element === 'undefined'
-  ? function () {}
-  : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
-
-function tabbable(el, options) {
-  options = options || {};
-
-  var elementDocument = el.ownerDocument || el;
-  var regularTabbables = [];
-  var orderedTabbables = [];
-
-  var untouchabilityChecker = new UntouchabilityChecker(elementDocument);
-  var candidates = el.querySelectorAll(candidateSelector);
-
-  if (options.includeContainer) {
-    if (matches.call(el, candidateSelector)) {
-      candidates = Array.prototype.slice.apply(candidates);
-      candidates.unshift(el);
-    }
-  }
-
-  var i, candidate, candidateTabindex;
-  for (i = 0; i < candidates.length; i++) {
-    candidate = candidates[i];
-
-    if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;
-
-    candidateTabindex = getTabindex(candidate);
-    if (candidateTabindex === 0) {
-      regularTabbables.push(candidate);
-    } else {
-      orderedTabbables.push({
-        documentOrder: i,
-        tabIndex: candidateTabindex,
-        node: candidate,
-      });
-    }
-  }
-
-  var tabbableNodes = orderedTabbables
-    .sort(sortOrderedTabbables)
-    .map(function(a) { return a.node })
-    .concat(regularTabbables);
-
-  return tabbableNodes;
-}
-
-tabbable.isTabbable = isTabbable;
-tabbable.isFocusable = isFocusable;
-
-function isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {
-  if (
-    !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)
-    || isNonTabbableRadio(node)
-    || getTabindex(node) < 0
-  ) {
-    return false;
-  }
-  return true;
-}
-
-function isTabbable(node, untouchabilityChecker) {
-  if (!node) throw new Error('No node provided');
-  if (matches.call(node, candidateSelector) === false) return false;
-  return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);
-}
-
-function isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {
-  untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);
-  if (
-    node.disabled
-    || isHiddenInput(node)
-    || untouchabilityChecker.isUntouchable(node)
-  ) {
-    return false;
-  }
-  return true;
-}
-
-var focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');
-function isFocusable(node, untouchabilityChecker) {
-  if (!node) throw new Error('No node provided');
-  if (matches.call(node, focusableCandidateSelector) === false) return false;
-  return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);
-}
-
-function getTabindex(node) {
-  var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
-  if (!isNaN(tabindexAttr)) return tabindexAttr;
-  // Browsers do not return `tabIndex` correctly for contentEditable nodes;
-  // so if they don't have a tabindex attribute specifically set, assume it's 0.
-  if (isContentEditable(node)) return 0;
-  return node.tabIndex;
-}
-
-function sortOrderedTabbables(a, b) {
-  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
-}
-
-// Array.prototype.find not available in IE.
-function find(list, predicate) {
-  for (var i = 0, length = list.length; i < length; i++) {
-    if (predicate(list[i])) return list[i];
-  }
-}
-
-function isContentEditable(node) {
-  return node.contentEditable === 'true';
-}
-
-function isInput(node) {
-  return node.tagName === 'INPUT';
-}
-
-function isHiddenInput(node) {
-  return isInput(node) && node.type === 'hidden';
-}
-
-function isRadio(node) {
-  return isInput(node) && node.type === 'radio';
-}
-
-function isNonTabbableRadio(node) {
-  return isRadio(node) && !isTabbableRadio(node);
-}
-
-function getCheckedRadio(nodes) {
-  for (var i = 0; i < nodes.length; i++) {
-    if (nodes[i].checked) {
-      return nodes[i];
-    }
-  }
-}
-
-function isTabbableRadio(node) {
-  if (!node.name) return true;
-  // This won't account for the edge case where you have radio groups with the same
-  // in separate forms on the same page.
-  var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]');
-  var checked = getCheckedRadio(radioSet);
-  return !checked || checked === node;
-}
-
-// An element is "untouchable" if *it or one of its ancestors* has
-// `visibility: hidden` or `display: none`.
-function UntouchabilityChecker(elementDocument) {
-  this.doc = elementDocument;
-  // Node cache must be refreshed on every check, in case
-  // the content of the element has changed. The cache contains tuples
-  // mapping nodes to their boolean result.
-  this.cache = [];
-}
-
-// getComputedStyle accurately reflects `visibility: hidden` of ancestors
-// but not `display: none`, so we need to recursively check parents.
-UntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {
-  if (node.nodeType !== Node.ELEMENT_NODE) return false;
-
-    // Search for a cached result.
-    var cached = find(this.cache, function(item) {
-      return item === node;
-    });
-    if (cached) return cached[1];
-
-    nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);
-
-    var result = false;
-
-    if (nodeComputedStyle.display === 'none') {
-      result = true;
-    } else if (node.parentNode) {
-      result = this.hasDisplayNone(node.parentNode);
-    }
-
-    this.cache.push([node, result]);
-
-    return result;
-}
-
-UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {
-  if (node === this.doc.documentElement) return false;
-  var computedStyle = this.doc.defaultView.getComputedStyle(node);
-  if (this.hasDisplayNone(node, computedStyle)) return true;
-  return computedStyle.visibility === 'hidden';
-}
-
-module.exports = tabbable;
-
-
-/***/ }),
-/* 84 */
-/***/ (function(module, exports) {
-
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend() {
-    var target = {}
-
-    for (var i = 0; i < arguments.length; i++) {
-        var source = arguments[i]
-
-        for (var key in source) {
-            if (hasOwnProperty.call(source, key)) {
-                target[key] = source[key]
-            }
-        }
-    }
-
-    return target
-}
-
-
-/***/ }),
-/* 85 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ponyfill__ = __webpack_require__(8);
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "ponyfill", function() { return __WEBPACK_IMPORTED_MODULE_0__ponyfill__; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/***/ }),
-/* 86 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDrawer", function() { return MDCDrawer; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__ = __webpack_require__(35);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__modal_foundation__ = __webpack_require__(87);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(36);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_index__ = __webpack_require__(14);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__ = __webpack_require__(15);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__constants__ = __webpack_require__(37);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__util__ = __webpack_require__(88);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap__ = __webpack_require__(40);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_focus_trap__);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCDismissibleDrawerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCModalDrawerFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__modal_foundation__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_7__util__; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCDismissibleDrawerFoundation>}
- * @final
- */
-
-var MDCDrawer = function (_MDCComponent) {
-  _inherits(MDCDrawer, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCDrawer() {
-    var _ref;
-
-    _classCallCheck(this, MDCDrawer);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCDrawer.__proto__ || Object.getPrototypeOf(MDCDrawer)).call.apply(_ref, [this].concat(args)));
-
-    _this.previousFocus_;
-
-    /** @private {!Function} */
-    _this.handleKeydown_;
-
-    /** @private {!Function} */
-    _this.handleTransitionEnd_;
-
-    /** @private {!Function} */
-    _this.focusTrapFactory_;
-
-    /** @private {!FocusTrapInstance} */
-    _this.focusTrap_;
-
-    /** @private {?Element} */
-    _this.scrim_;
-
-    /** @private {?Function} */
-    _this.handleScrimClick_;
-
-    /** @private {?MDCList} */
-    _this.list_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCDrawer}
-   */
-
-
-  _createClass(MDCDrawer, [{
-    key: 'initialize',
-    value: function initialize() {
-      var focusTrapFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_8_focus_trap___default.a;
-      var listFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_4__material_list_index__["MDCList"](el);
-      };
-
-      var listEl = /** @type {!Element} */this.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__["a" /* default */].cssClasses.ROOT);
-      if (listEl) {
-        this.list_ = listFactory(listEl);
-        this.list_.wrapFocus = true;
-      }
-      this.focusTrapFactory_ = focusTrapFactory;
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses.MODAL;
-
-
-      if (this.root_.classList.contains(MODAL)) {
-        var SCRIM_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].strings.SCRIM_SELECTOR;
-
-        this.scrim_ = /** @type {!Element} */this.root_.parentNode.querySelector(SCRIM_SELECTOR);
-        this.handleScrimClick_ = function () {
-          return (/** @type {!MDCModalDrawerFoundation} */_this2.foundation_.handleScrimClick()
-          );
-        };
-        this.scrim_.addEventListener('click', this.handleScrimClick_);
-        this.focusTrap_ = __WEBPACK_IMPORTED_MODULE_7__util__["createFocusTrapInstance"](this.root_, this.focusTrapFactory_);
-      }
-
-      this.handleKeydown_ = function (evt) {
-        return _this2.foundation_.handleKeydown(evt);
-      };
-      this.handleTransitionEnd_ = function (evt) {
-        return _this2.foundation_.handleTransitionEnd(evt);
-      };
-
-      this.root_.addEventListener('keydown', this.handleKeydown_);
-      this.root_.addEventListener('transitionend', this.handleTransitionEnd_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.root_.removeEventListener('keydown', this.handleKeydown_);
-      this.root_.removeEventListener('transitionend', this.handleTransitionEnd_);
-
-      if (this.list_) {
-        this.list_.destroy();
-      }
-
-      var MODAL = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses.MODAL;
-
-      if (this.root_.classList.contains(MODAL)) {
-        this.scrim_.removeEventListener('click', /** @type {!Function} */this.handleScrimClick_);
-        // Ensure drawer is closed to hide scrim and release focus
-        this.open = false;
-      }
-    }
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      /** @type {!MDCDrawerAdapter} */
-      var adapter = /** @type {!MDCDrawerAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this3.root_.classList.contains(className);
-        },
-        elementHasClass: function elementHasClass(element, className) {
-          return element.classList.contains(className);
-        },
-        saveFocus: function saveFocus() {
-          _this3.previousFocus_ = document.activeElement;
-        },
-        restoreFocus: function restoreFocus() {
-          var previousFocus = _this3.previousFocus_ && _this3.previousFocus_.focus;
-          if (_this3.root_.contains(document.activeElement) && previousFocus) {
-            _this3.previousFocus_.focus();
-          }
-        },
-        focusActiveNavigationItem: function focusActiveNavigationItem() {
-          var activeNavItemEl = _this3.root_.querySelector('.' + __WEBPACK_IMPORTED_MODULE_5__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_ACTIVATED_CLASS);
-          if (activeNavItemEl) {
-            activeNavItemEl.focus();
-          }
-        },
-        notifyClose: function notifyClose() {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__["b" /* strings */].CLOSE_EVENT, {}, true /* shouldBubble */);
-        },
-        notifyOpen: function notifyOpen() {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_6__constants__["b" /* strings */].OPEN_EVENT, {}, true /* shouldBubble */);
-        },
-        trapFocus: function trapFocus() {
-          return _this3.focusTrap_.activate();
-        },
-        releaseFocus: function releaseFocus() {
-          return _this3.focusTrap_.deactivate();
-        }
-      });
-
-      var _MDCDismissibleDrawer = __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */].cssClasses,
-          DISMISSIBLE = _MDCDismissibleDrawer.DISMISSIBLE,
-          MODAL = _MDCDismissibleDrawer.MODAL;
-
-      if (this.root_.classList.contains(DISMISSIBLE)) {
-        return new __WEBPACK_IMPORTED_MODULE_1__dismissible_foundation__["a" /* default */](adapter);
-      } else if (this.root_.classList.contains(MODAL)) {
-        return new __WEBPACK_IMPORTED_MODULE_2__modal_foundation__["a" /* default */](adapter);
-      } else {
-        throw new Error('MDCDrawer: Failed to instantiate component. Supported variants are ' + DISMISSIBLE + ' and ' + MODAL + '.');
-      }
-    }
-  }, {
-    key: 'open',
-
-
-    /**
-     * Returns true if drawer is in the open position.
-     * @return {boolean}
-     */
-    get: function get() {
-      return this.foundation_.isOpen();
-    }
-
-    /**
-     * Toggles the drawer open and closed.
-     * @param {boolean} isOpen
-     */
-    ,
-    set: function set(isOpen) {
-      if (isOpen) {
-        this.foundation_.open();
-      } else {
-        this.foundation_.close();
-      }
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCDrawer(root);
-    }
-  }]);
-
-  return MDCDrawer;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 87 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dismissible_foundation__ = __webpack_require__(35);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @extends {MDCDismissibleDrawerFoundation}
- */
-
-var MDCModalDrawerFoundation = function (_MDCDismissibleDrawer) {
-  _inherits(MDCModalDrawerFoundation, _MDCDismissibleDrawer);
-
-  function MDCModalDrawerFoundation() {
-    _classCallCheck(this, MDCModalDrawerFoundation);
-
-    return _possibleConstructorReturn(this, (MDCModalDrawerFoundation.__proto__ || Object.getPrototypeOf(MDCModalDrawerFoundation)).apply(this, arguments));
-  }
-
-  _createClass(MDCModalDrawerFoundation, [{
-    key: 'opened',
-
-    /**
-     * Called when drawer finishes open animation.
-     * @override
-     */
-    value: function opened() {
-      this.adapter_.trapFocus();
-    }
-
-    /**
-     * Called when drawer finishes close animation.
-     * @override
-     */
-
-  }, {
-    key: 'closed',
-    value: function closed() {
-      this.adapter_.releaseFocus();
-    }
-
-    /**
-     * Handles click event on scrim.
-     */
-
-  }, {
-    key: 'handleScrimClick',
-    value: function handleScrimClick() {
-      this.close();
-    }
-  }]);
-
-  return MDCModalDrawerFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__dismissible_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCModalDrawerFoundation);
-
-/***/ }),
-/* 88 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFocusTrapInstance", function() { return createFocusTrapInstance; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap__ = __webpack_require__(40);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_focus_trap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_focus_trap__);
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @param {!Element} surfaceEl
- * @param {!Function} focusTrapFactory
- * @return {!FocusTrapInstance}
- */
-function createFocusTrapInstance(surfaceEl) {
-  var focusTrapFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0_focus_trap___default.a;
-
-  return focusTrapFactory(surfaceEl, {
-    clickOutsideDeactivates: true,
-    initialFocus: false, // Navigation drawer handles focusing on active nav item.
-    escapeDeactivates: false, // Navigation drawer handles ESC.
-    returnFocusOnDeactivate: false });
-}
-
-
-
-/***/ }),
-/* 89 */
-/***/ (function(module, exports) {
-
-var candidateSelectors = [
-  'input',
-  'select',
-  'textarea',
-  'a[href]',
-  'button',
-  '[tabindex]',
-  'audio[controls]',
-  'video[controls]',
-  '[contenteditable]:not([contenteditable="false"])',
-];
-var candidateSelector = candidateSelectors.join(',');
-
-var matches = typeof Element === 'undefined'
-  ? function () {}
-  : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
-
-function tabbable(el, options) {
-  options = options || {};
-
-  var elementDocument = el.ownerDocument || el;
-  var regularTabbables = [];
-  var orderedTabbables = [];
-
-  var untouchabilityChecker = new UntouchabilityChecker(elementDocument);
-  var candidates = el.querySelectorAll(candidateSelector);
-
-  if (options.includeContainer) {
-    if (matches.call(el, candidateSelector)) {
-      candidates = Array.prototype.slice.apply(candidates);
-      candidates.unshift(el);
-    }
-  }
-
-  var i, candidate, candidateTabindex;
-  for (i = 0; i < candidates.length; i++) {
-    candidate = candidates[i];
-
-    if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;
-
-    candidateTabindex = getTabindex(candidate);
-    if (candidateTabindex === 0) {
-      regularTabbables.push(candidate);
-    } else {
-      orderedTabbables.push({
-        documentOrder: i,
-        tabIndex: candidateTabindex,
-        node: candidate,
-      });
-    }
-  }
-
-  var tabbableNodes = orderedTabbables
-    .sort(sortOrderedTabbables)
-    .map(function(a) { return a.node })
-    .concat(regularTabbables);
-
-  return tabbableNodes;
-}
-
-tabbable.isTabbable = isTabbable;
-tabbable.isFocusable = isFocusable;
-
-function isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {
-  if (
-    !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)
-    || isNonTabbableRadio(node)
-    || getTabindex(node) < 0
-  ) {
-    return false;
-  }
-  return true;
-}
-
-function isTabbable(node, untouchabilityChecker) {
-  if (!node) throw new Error('No node provided');
-  if (matches.call(node, candidateSelector) === false) return false;
-  return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);
-}
-
-function isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {
-  untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);
-  if (
-    node.disabled
-    || isHiddenInput(node)
-    || untouchabilityChecker.isUntouchable(node)
-  ) {
-    return false;
-  }
-  return true;
-}
-
-var focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');
-function isFocusable(node, untouchabilityChecker) {
-  if (!node) throw new Error('No node provided');
-  if (matches.call(node, focusableCandidateSelector) === false) return false;
-  return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);
-}
-
-function getTabindex(node) {
-  var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
-  if (!isNaN(tabindexAttr)) return tabindexAttr;
-  // Browsers do not return `tabIndex` correctly for contentEditable nodes;
-  // so if they don't have a tabindex attribute specifically set, assume it's 0.
-  if (isContentEditable(node)) return 0;
-  return node.tabIndex;
-}
-
-function sortOrderedTabbables(a, b) {
-  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
-}
-
-// Array.prototype.find not available in IE.
-function find(list, predicate) {
-  for (var i = 0, length = list.length; i < length; i++) {
-    if (predicate(list[i])) return list[i];
-  }
-}
-
-function isContentEditable(node) {
-  return node.contentEditable === 'true';
-}
-
-function isInput(node) {
-  return node.tagName === 'INPUT';
-}
-
-function isHiddenInput(node) {
-  return isInput(node) && node.type === 'hidden';
-}
-
-function isRadio(node) {
-  return isInput(node) && node.type === 'radio';
-}
-
-function isNonTabbableRadio(node) {
-  return isRadio(node) && !isTabbableRadio(node);
-}
-
-function getCheckedRadio(nodes) {
-  for (var i = 0; i < nodes.length; i++) {
-    if (nodes[i].checked) {
-      return nodes[i];
-    }
-  }
-}
-
-function isTabbableRadio(node) {
-  if (!node.name) return true;
-  // This won't account for the edge case where you have radio groups with the same
-  // in separate forms on the same page.
-  var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]');
-  var checked = getCheckedRadio(radioSet);
-  return !checked || checked === node;
-}
-
-// An element is "untouchable" if *it or one of its ancestors* has
-// `visibility: hidden` or `display: none`.
-function UntouchabilityChecker(elementDocument) {
-  this.doc = elementDocument;
-  // Node cache must be refreshed on every check, in case
-  // the content of the element has changed. The cache contains tuples
-  // mapping nodes to their boolean result.
-  this.cache = [];
-}
-
-// getComputedStyle accurately reflects `visibility: hidden` of ancestors
-// but not `display: none`, so we need to recursively check parents.
-UntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {
-  if (node.nodeType !== Node.ELEMENT_NODE) return false;
-
-    // Search for a cached result.
-    var cached = find(this.cache, function(item) {
-      return item === node;
-    });
-    if (cached) return cached[1];
-
-    nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);
-
-    var result = false;
-
-    if (nodeComputedStyle.display === 'none') {
-      result = true;
-    } else if (node.parentNode) {
-      result = this.hasDisplayNone(node.parentNode);
-    }
-
-    this.cache.push([node, result]);
-
-    return result;
-}
-
-UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {
-  if (node === this.doc.documentElement) return false;
-  var computedStyle = this.doc.defaultView.getComputedStyle(node);
-  if (this.hasDisplayNone(node, computedStyle)) return true;
-  return computedStyle.visibility === 'hidden';
-}
-
-module.exports = tabbable;
-
-
-/***/ }),
-/* 90 */
-/***/ (function(module, exports) {
-
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend() {
-    var target = {}
-
-    for (var i = 0; i < arguments.length; i++) {
-        var source = arguments[i]
-
-        for (var key in source) {
-            if (hasOwnProperty.call(source, key)) {
-                target[key] = source[key]
-            }
-        }
-    }
-
-    return target
-}
-
-
-/***/ }),
-/* 91 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(41);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(92);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCFloatingLabelAdapter>}
- * @final
- */
-
-var MDCFloatingLabelFoundation = function (_MDCFoundation) {
-  _inherits(MDCFloatingLabelFoundation, _MDCFoundation);
-
-  _createClass(MDCFloatingLabelFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /**
-     * {@see MDCFloatingLabelAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCFloatingLabelAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCFloatingLabelAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          getWidth: function getWidth() {},
-          registerInteractionHandler: function registerInteractionHandler() {},
-          deregisterInteractionHandler: function deregisterInteractionHandler() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCFloatingLabelAdapter} adapter
-     */
-
-  }]);
-
-  function MDCFloatingLabelFoundation(adapter) {
-    _classCallCheck(this, MDCFloatingLabelFoundation);
-
-    /** @private {function(!Event): undefined} */
-    var _this = _possibleConstructorReturn(this, (MDCFloatingLabelFoundation.__proto__ || Object.getPrototypeOf(MDCFloatingLabelFoundation)).call(this, _extends(MDCFloatingLabelFoundation.defaultAdapter, adapter)));
-
-    _this.shakeAnimationEndHandler_ = function () {
-      return _this.handleShakeAnimationEnd_();
-    };
-    return _this;
-  }
-
-  _createClass(MDCFloatingLabelFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.adapter_.registerInteractionHandler('animationend', this.shakeAnimationEndHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler_);
-    }
-
-    /**
-     * Returns the width of the label element.
-     * @return {number}
-     */
-
-  }, {
-    key: 'getWidth',
-    value: function getWidth() {
-      return this.adapter_.getWidth();
-    }
-
-    /**
-     * Styles the label to produce the label shake for errors.
-     * @param {boolean} shouldShake adds shake class if true,
-     * otherwise removes shake class.
-     */
-
-  }, {
-    key: 'shake',
-    value: function shake(shouldShake) {
-      var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;
-
-      if (shouldShake) {
-        this.adapter_.addClass(LABEL_SHAKE);
-      } else {
-        this.adapter_.removeClass(LABEL_SHAKE);
-      }
-    }
-
-    /**
-     * Styles the label to float or dock.
-     * @param {boolean} shouldFloat adds float class if true, otherwise remove
-     * float and shake class to dock label.
-     */
-
-  }, {
-    key: 'float',
-    value: function float(shouldFloat) {
-      var _MDCFloatingLabelFoun = MDCFloatingLabelFoundation.cssClasses,
-          LABEL_FLOAT_ABOVE = _MDCFloatingLabelFoun.LABEL_FLOAT_ABOVE,
-          LABEL_SHAKE = _MDCFloatingLabelFoun.LABEL_SHAKE;
-
-      if (shouldFloat) {
-        this.adapter_.addClass(LABEL_FLOAT_ABOVE);
-      } else {
-        this.adapter_.removeClass(LABEL_FLOAT_ABOVE);
-        this.adapter_.removeClass(LABEL_SHAKE);
-      }
-    }
-
-    /**
-     * Handles an interaction event on the root element.
-     */
-
-  }, {
-    key: 'handleShakeAnimationEnd_',
-    value: function handleShakeAnimationEnd_() {
-      var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;
-
-      this.adapter_.removeClass(LABEL_SHAKE);
-    }
-  }]);
-
-  return MDCFloatingLabelFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCFloatingLabelFoundation);
-
-/***/ }),
-/* 92 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',
-  LABEL_SHAKE: 'mdc-floating-label--shake',
-  ROOT: 'mdc-floating-label'
-};
-
-
-
-/***/ }),
-/* 93 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFormField", function() { return MDCFormField; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(94);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_selection_control_index__ = __webpack_require__(3);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFormFieldFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @extends MDCComponent<!MDCFormFieldFoundation>
- */
-
-var MDCFormField = function (_MDCComponent) {
-  _inherits(MDCFormField, _MDCComponent);
-
-  _createClass(MDCFormField, [{
-    key: 'input',
-
-
-    /** @param {?MDCSelectionControl} input */
-    set: function set(input) {
-      this.input_ = input;
-    }
-
-    /** @return {?MDCSelectionControl} */
-    ,
-    get: function get() {
-      return this.input_;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCFormField(root);
-    }
-  }]);
-
-  function MDCFormField() {
-    var _ref;
-
-    _classCallCheck(this, MDCFormField);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {?MDCSelectionControl} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCFormField.__proto__ || Object.getPrototypeOf(MDCFormField)).call.apply(_ref, [this].concat(args)));
-
-    _this.input_;
-    return _this;
-  }
-
-  /**
-   * @return {!Element}
-   * @private
-   */
-
-
-  _createClass(MDCFormField, [{
-    key: 'getDefaultFoundation',
-
-
-    /** @return {!MDCFormFieldFoundation} */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return _this2.label_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return _this2.label_.removeEventListener(type, handler);
-        },
-        activateInputRipple: function activateInputRipple() {
-          if (_this2.input_ && _this2.input_.ripple) {
-            _this2.input_.ripple.activate();
-          }
-        },
-        deactivateInputRipple: function deactivateInputRipple() {
-          if (_this2.input_ && _this2.input_.ripple) {
-            _this2.input_.ripple.deactivate();
-          }
-        }
-      });
-    }
-  }, {
-    key: 'label_',
-    get: function get() {
-      var LABEL_SELECTOR = __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.LABEL_SELECTOR;
-
-      return (/** @type {!Element} */this.root_.querySelector(LABEL_SELECTOR)
-      );
-    }
-  }]);
-
-  return MDCFormField;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 94 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(95);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(96);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCFormFieldAdapter>}
- */
-
-var MDCFormFieldFoundation = function (_MDCFoundation) {
-  _inherits(MDCFormFieldFoundation, _MDCFoundation);
-
-  _createClass(MDCFormFieldFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {strings} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /** @return {!MDCFormFieldAdapter} */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
-        deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
-        activateInputRipple: function activateInputRipple() {},
-        deactivateInputRipple: function deactivateInputRipple() {}
-      };
-    }
-  }]);
-
-  function MDCFormFieldFoundation(adapter) {
-    _classCallCheck(this, MDCFormFieldFoundation);
-
-    /** @private {!EventListener} */
-    var _this = _possibleConstructorReturn(this, (MDCFormFieldFoundation.__proto__ || Object.getPrototypeOf(MDCFormFieldFoundation)).call(this, _extends(MDCFormFieldFoundation.defaultAdapter, adapter)));
-
-    _this.clickHandler_ = /** @type {!EventListener} */function () {
-      return _this.handleClick_();
-    };
-    return _this;
-  }
-
-  _createClass(MDCFormFieldFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.adapter_.registerInteractionHandler('click', this.clickHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);
-    }
-
-    /** @private */
-
-  }, {
-    key: 'handleClick_',
-    value: function handleClick_() {
-      var _this2 = this;
-
-      this.adapter_.activateInputRipple();
-      requestAnimationFrame(function () {
-        return _this2.adapter_.deactivateInputRipple();
-      });
-    }
-  }]);
-
-  return MDCFormFieldFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCFormFieldFoundation);
-
-/***/ }),
-/* 95 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Form Field. Provides an interface for managing
- * - event handlers
- * - ripple activation
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCFormFieldAdapter = function () {
-  function MDCFormFieldAdapter() {
-    _classCallCheck(this, MDCFormFieldAdapter);
-  }
-
-  _createClass(MDCFormFieldAdapter, [{
-    key: "registerInteractionHandler",
-
-    /**
-     * @param {string} type
-     * @param {!EventListener} handler
-     */
-    value: function registerInteractionHandler(type, handler) {}
-
-    /**
-     * @param {string} type
-     * @param {!EventListener} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(type, handler) {}
-  }, {
-    key: "activateInputRipple",
-    value: function activateInputRipple() {}
-  }, {
-    key: "deactivateInputRipple",
-    value: function deactivateInputRipple() {}
-  }]);
-
-  return MDCFormFieldAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCFormFieldAdapter);
-
-/***/ }),
-/* 96 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-form-field'
-};
-
-/** @enum {string} */
-var strings = {
-  LABEL_SELECTOR: '.mdc-form-field > label'
-};
-
-
-
-/***/ }),
-/* 97 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCGridList", function() { return MDCGridList; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(98);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCGridListFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-var MDCGridList = function (_MDCComponent) {
-  _inherits(MDCGridList, _MDCComponent);
-
-  function MDCGridList() {
-    _classCallCheck(this, MDCGridList);
-
-    return _possibleConstructorReturn(this, (MDCGridList.__proto__ || Object.getPrototypeOf(MDCGridList)).apply(this, arguments));
-  }
-
-  _createClass(MDCGridList, [{
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        getOffsetWidth: function getOffsetWidth() {
-          return _this2.root_.offsetWidth;
-        },
-        getNumberOfTiles: function getNumberOfTiles() {
-          return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILE_SELECTOR).length;
-        },
-        getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) {
-          return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILE_SELECTOR)[index].offsetWidth;
-        },
-        setStyleForTilesElement: function setStyleForTilesElement(property, value) {
-          _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.TILES_SELECTOR).style[property] = value;
-        },
-        registerResizeHandler: function registerResizeHandler(handler) {
-          return window.addEventListener('resize', handler);
-        },
-        deregisterResizeHandler: function deregisterResizeHandler(handler) {
-          return window.removeEventListener('resize', handler);
-        }
-      });
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCGridList(root);
-    }
-  }]);
-
-  return MDCGridList;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-/***/ }),
-/* 98 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(99);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-var MDCGridListFoundation = function (_MDCFoundation) {
-  _inherits(MDCGridListFoundation, _MDCFoundation);
-
-  _createClass(MDCGridListFoundation, null, [{
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* strings */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        getOffsetWidth: function getOffsetWidth() {
-          return (/* number */0
-          );
-        },
-        getNumberOfTiles: function getNumberOfTiles() {
-          return (/* number */0
-          );
-        },
-        getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() {
-          return (/* index: number */ /* number */0
-          );
-        },
-        setStyleForTilesElement: function setStyleForTilesElement() /* property: string, value: string */{},
-        registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
-        deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{}
-      };
-    }
-  }]);
-
-  function MDCGridListFoundation(adapter) {
-    _classCallCheck(this, MDCGridListFoundation);
-
-    var _this = _possibleConstructorReturn(this, (MDCGridListFoundation.__proto__ || Object.getPrototypeOf(MDCGridListFoundation)).call(this, _extends(MDCGridListFoundation.defaultAdapter, adapter)));
-
-    _this.resizeHandler_ = function () {
-      return _this.alignCenter();
-    };
-    _this.resizeFrame_ = 0;
-    return _this;
-  }
-
-  _createClass(MDCGridListFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.alignCenter();
-      this.adapter_.registerResizeHandler(this.resizeHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterResizeHandler(this.resizeHandler_);
-    }
-  }, {
-    key: 'alignCenter',
-    value: function alignCenter() {
-      var _this2 = this;
-
-      if (this.resizeFrame_ !== 0) {
-        cancelAnimationFrame(this.resizeFrame_);
-      }
-      this.resizeFrame_ = requestAnimationFrame(function () {
-        _this2.alignCenter_();
-        _this2.resizeFrame_ = 0;
-      });
-    }
-  }, {
-    key: 'alignCenter_',
-    value: function alignCenter_() {
-      if (this.adapter_.getNumberOfTiles() == 0) {
-        return;
-      }
-      var gridWidth = this.adapter_.getOffsetWidth();
-      var itemWidth = this.adapter_.getOffsetWidthForTileAtIndex(0);
-      var tilesWidth = itemWidth * Math.floor(gridWidth / itemWidth);
-      this.adapter_.setStyleForTilesElement('width', tilesWidth + 'px');
-    }
-  }]);
-
-  return MDCGridListFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCGridListFoundation);
-
-/***/ }),
-/* 99 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-var strings = {
-  TILES_SELECTOR: '.mdc-grid-list__tiles',
-  TILE_SELECTOR: '.mdc-grid-tile'
-};
-
-/***/ }),
-/* 100 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconButtonToggle", function() { return MDCIconButtonToggle; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(101);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconButtonToggleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCIconButtonToggleFoundation>}
- */
-
-var MDCIconButtonToggle = function (_MDCComponent) {
-  _inherits(MDCIconButtonToggle, _MDCComponent);
-
-  _createClass(MDCIconButtonToggle, null, [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCIconButtonToggle(root);
-    }
-  }]);
-
-  function MDCIconButtonToggle() {
-    var _ref;
-
-    _classCallCheck(this, MDCIconButtonToggle);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCRipple} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCIconButtonToggle.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle)).call.apply(_ref, [this].concat(args)));
-
-    _this.ripple_ = _this.initRipple_();
-    /** @private {!Function} */
-    _this.handleClick_;
-    return _this;
-  }
-
-  /**
-   * @return {!MDCRipple}
-   * @private
-   */
-
-
-  _createClass(MDCIconButtonToggle, [{
-    key: 'initRipple_',
-    value: function initRipple_() {
-      var ripple = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"](this.root_);
-      ripple.unbounded = true;
-      return ripple;
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.root_.removeEventListener('click', this.handleClick_);
-      this.ripple_.destroy();
-      _get(MDCIconButtonToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconButtonToggle.prototype), 'destroy', this).call(this);
-    }
-
-    /** @return {!MDCIconButtonToggleFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        setAttr: function setAttr(attrName, attrValue) {
-          return _this2.root_.setAttribute(attrName, attrValue);
-        },
-        notifyChange: function notifyChange(evtData) {
-          return _this2.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
-        }
-      });
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.handleClick_ = this.foundation_.handleClick.bind(this.foundation_);
-      this.root_.addEventListener('click', this.handleClick_);
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'on',
-    get: function get() {
-      return this.foundation_.isOn();
-    }
-
-    /** @param {boolean} isOn */
-    ,
-    set: function set(isOn) {
-      this.foundation_.toggle(isOn);
-    }
-  }]);
-
-  return MDCIconButtonToggle;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 101 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(102);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(103);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/**
- * @extends {MDCFoundation<!MDCIconButtonToggleAdapter>}
- */
-
-var MDCIconButtonToggleFoundation = function (_MDCFoundation) {
-  _inherits(MDCIconButtonToggleFoundation, _MDCFoundation);
-
-  _createClass(MDCIconButtonToggleFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        addClass: function addClass() {},
-        removeClass: function removeClass() {},
-        hasClass: function hasClass() {},
-        setAttr: function setAttr() {},
-        notifyChange: function notifyChange() {}
-      };
-    }
-  }]);
-
-  function MDCIconButtonToggleFoundation(adapter) {
-    _classCallCheck(this, MDCIconButtonToggleFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCIconButtonToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconButtonToggleFoundation)).call(this, _extends(MDCIconButtonToggleFoundation.defaultAdapter, adapter)));
-
-    _this.disabled_ = false;
-    return _this;
-  }
-
-  _createClass(MDCIconButtonToggleFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_PRESSED, '' + this.isOn());
-    }
-  }, {
-    key: 'handleClick',
-    value: function handleClick() {
-      this.toggle();
-      this.adapter_.notifyChange( /** @type {!IconButtonToggleEvent} */{ isOn: this.isOn() });
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isOn',
-    value: function isOn() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
-    }
-
-    /** @param {boolean=} isOn */
-
-  }, {
-    key: 'toggle',
-    value: function toggle() {
-      var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.isOn();
-
-      if (isOn) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ICON_BUTTON_ON);
-      }
-
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_PRESSED, '' + isOn);
-    }
-  }]);
-
-  return MDCIconButtonToggleFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/** @record */
-
-
-var IconButtonToggleState = function IconButtonToggleState() {
-  _classCallCheck(this, IconButtonToggleState);
-};
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCIconButtonToggleFoundation);
-
-/***/ }),
-/* 102 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCIconButtonToggleAdapter */
-/* unused harmony export IconButtonToggleEvent */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Icon Button Toggle. Provides an interface for managing
- * - classes
- * - dom
- * - inner text
- * - event handlers
- * - event dispatch
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-
-var MDCIconButtonToggleAdapter = function () {
-  function MDCIconButtonToggleAdapter() {
-    _classCallCheck(this, MDCIconButtonToggleAdapter);
-  }
-
-  _createClass(MDCIconButtonToggleAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * @param {string} className
-     * @return {boolean}
-     * */
-
-  }, {
-    key: "hasClass",
-    value: function hasClass(className) {}
-
-    /**
-     * @param {string} attrName
-     * @param {string} attrValue
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(attrName, attrValue) {}
-
-    /** @param {!IconButtonToggleEvent} evtData */
-
-  }, {
-    key: "notifyChange",
-    value: function notifyChange(evtData) {}
-  }]);
-
-  return MDCIconButtonToggleAdapter;
-}();
-
-/**
- * @typedef {{
- *   isOn: boolean,
- * }}
- */
-
-
-var IconButtonToggleEvent = void 0;
-
-
-
-/***/ }),
-/* 103 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-icon-button',
-  ICON_BUTTON_ON: 'mdc-icon-button--on'
-};
-
-/** @enum {string} */
-var strings = {
-  ARIA_PRESSED: 'aria-pressed',
-  CHANGE_EVENT: 'MDCIconButtonToggle:change'
-};
-
-
-
-/***/ }),
-/* 104 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconToggle", function() { return MDCIconToggle; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(105);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCIconToggleFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCIconToggleFoundation>}
- */
-
-var MDCIconToggle = function (_MDCComponent) {
-  _inherits(MDCIconToggle, _MDCComponent);
-
-  _createClass(MDCIconToggle, null, [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCIconToggle(root);
-    }
-  }]);
-
-  function MDCIconToggle() {
-    var _ref;
-
-    _classCallCheck(this, MDCIconToggle);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCRipple} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCIconToggle.__proto__ || Object.getPrototypeOf(MDCIconToggle)).call.apply(_ref, [this].concat(args)));
-
-    _this.ripple_ = _this.initRipple_();
-    return _this;
-  }
-
-  /** @return {!Element} */
-
-
-  _createClass(MDCIconToggle, [{
-    key: 'initRipple_',
-
-
-    /**
-     * @return {!MDCRipple}
-     * @private
-     */
-    value: function initRipple_() {
-      var _this2 = this;
-
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        isUnbounded: function isUnbounded() {
-          return true;
-        },
-        isSurfaceActive: function isSurfaceActive() {
-          return _this2.foundation_.isKeyboardActivated();
-        }
-      });
-      var foundation = new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRippleFoundation"](adapter);
-      return new __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"](this.root_, foundation);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.ripple_.destroy();
-      _get(MDCIconToggle.prototype.__proto__ || Object.getPrototypeOf(MDCIconToggle.prototype), 'destroy', this).call(this);
-    }
-
-    /** @return {!MDCIconToggleFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this3.iconEl_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.iconEl_.classList.remove(className);
-        },
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return _this3.root_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return _this3.root_.removeEventListener(type, handler);
-        },
-        setText: function setText(text) {
-          return _this3.iconEl_.textContent = text;
-        },
-        getTabIndex: function getTabIndex() {
-          return (/* number */_this3.root_.tabIndex
-          );
-        },
-        setTabIndex: function setTabIndex(tabIndex) {
-          return _this3.root_.tabIndex = tabIndex;
-        },
-        getAttr: function getAttr(name, value) {
-          return _this3.root_.getAttribute(name, value);
-        },
-        setAttr: function setAttr(name, value) {
-          return _this3.root_.setAttribute(name, value);
-        },
-        rmAttr: function rmAttr(name) {
-          return _this3.root_.removeAttribute(name);
-        },
-        notifyChange: function notifyChange(evtData) {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
-        }
-      });
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.on = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ARIA_PRESSED) === 'true';
-      this.disabled = this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.ARIA_DISABLED) === 'true';
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'refreshToggleData',
-    value: function refreshToggleData() {
-      this.foundation_.refreshToggleData();
-    }
-  }, {
-    key: 'iconEl_',
-    get: function get() {
-      var sel = this.root_.dataset['iconInnerSelector'];
-
-      return sel ?
-      /** @type {!Element} */this.root_.querySelector(sel) : this.root_;
-    }
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'on',
-    get: function get() {
-      return this.foundation_.isOn();
-    }
-
-    /** @param {boolean} isOn */
-    ,
-    set: function set(isOn) {
-      this.foundation_.toggle(isOn);
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.foundation_.isDisabled();
-    }
-
-    /** @param {boolean} isDisabled */
-    ,
-    set: function set(isDisabled) {
-      this.foundation_.setDisabled(isDisabled);
-    }
-  }]);
-
-  return MDCIconToggle;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 105 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(106);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(107);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/**
- * @extends {MDCFoundation<!MDCIconToggleAdapter>}
- */
-
-var MDCIconToggleFoundation = function (_MDCFoundation) {
-  _inherits(MDCIconToggleFoundation, _MDCFoundation);
-
-  _createClass(MDCIconToggleFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        addClass: function addClass() /* className: string */{},
-        removeClass: function removeClass() /* className: string */{},
-        registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
-        deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
-        setText: function setText() /* text: string */{},
-        getTabIndex: function getTabIndex() {
-          return (/* number */0
-          );
-        },
-        setTabIndex: function setTabIndex() /* tabIndex: number */{},
-        getAttr: function getAttr() {
-          return (/* name: string */ /* string */''
-          );
-        },
-        setAttr: function setAttr() /* name: string, value: string */{},
-        rmAttr: function rmAttr() /* name: string */{},
-        notifyChange: function notifyChange() /* evtData: IconToggleEvent */{}
-      };
-    }
-  }]);
-
-  function MDCIconToggleFoundation(adapter) {
-    _classCallCheck(this, MDCIconToggleFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCIconToggleFoundation.__proto__ || Object.getPrototypeOf(MDCIconToggleFoundation)).call(this, _extends(MDCIconToggleFoundation.defaultAdapter, adapter)));
-
-    _this.on_ = false;
-
-    /** @private {boolean} */
-    _this.disabled_ = false;
-
-    /** @private {number} */
-    _this.savedTabIndex_ = -1;
-
-    /** @private {?IconToggleState} */
-    _this.toggleOnData_ = null;
-
-    /** @private {?IconToggleState} */
-    _this.toggleOffData_ = null;
-
-    _this.clickHandler_ = /** @private {!EventListener} */function () {
-      return _this.toggleFromEvt_();
-    };
-
-    /** @private {boolean} */
-    _this.isHandlingKeydown_ = false;
-
-    _this.keydownHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {
-      if (isSpace(evt)) {
-        _this.isHandlingKeydown_ = true;
-        return evt.preventDefault();
-      }
-    };
-
-    _this.keyupHandler_ = /** @private {!EventListener} */function ( /** @type {!KeyboardKey} */evt) {
-      if (isSpace(evt)) {
-        _this.isHandlingKeydown_ = false;
-        _this.toggleFromEvt_();
-      }
-    };
-    return _this;
-  }
-
-  _createClass(MDCIconToggleFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.refreshToggleData();
-      this.savedTabIndex_ = this.adapter_.getTabIndex();
-      this.adapter_.registerInteractionHandler('click', this.clickHandler_);
-      this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);
-      this.adapter_.registerInteractionHandler('keyup', this.keyupHandler_);
-    }
-  }, {
-    key: 'refreshToggleData',
-    value: function refreshToggleData() {
-      var _MDCIconToggleFoundat = MDCIconToggleFoundation.strings,
-          DATA_TOGGLE_ON = _MDCIconToggleFoundat.DATA_TOGGLE_ON,
-          DATA_TOGGLE_OFF = _MDCIconToggleFoundat.DATA_TOGGLE_OFF;
-
-      this.toggleOnData_ = this.parseJsonDataAttr_(DATA_TOGGLE_ON);
-      this.toggleOffData_ = this.parseJsonDataAttr_(DATA_TOGGLE_OFF);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);
-      this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);
-      this.adapter_.deregisterInteractionHandler('keyup', this.keyupHandler_);
-    }
-
-    /** @private */
-
-  }, {
-    key: 'toggleFromEvt_',
-    value: function toggleFromEvt_() {
-      this.toggle();
-      var isOn = this.on_;
-
-      this.adapter_.notifyChange( /** @type {!IconToggleEvent} */{ isOn: isOn });
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isOn',
-    value: function isOn() {
-      return this.on_;
-    }
-
-    /** @param {boolean=} isOn */
-
-  }, {
-    key: 'toggle',
-    value: function toggle() {
-      var isOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.on_;
-
-      this.on_ = isOn;
-
-      var _MDCIconToggleFoundat2 = MDCIconToggleFoundation.strings,
-          ARIA_LABEL = _MDCIconToggleFoundat2.ARIA_LABEL,
-          ARIA_PRESSED = _MDCIconToggleFoundat2.ARIA_PRESSED;
-
-
-      if (this.on_) {
-        this.adapter_.setAttr(ARIA_PRESSED, 'true');
-      } else {
-        this.adapter_.setAttr(ARIA_PRESSED, 'false');
-      }
-
-      var _ref = this.on_ ? this.toggleOffData_ : this.toggleOnData_,
-          classToRemove = _ref.cssClass;
-
-      if (classToRemove) {
-        this.adapter_.removeClass(classToRemove);
-      }
-
-      var _ref2 = this.on_ ? this.toggleOnData_ : this.toggleOffData_,
-          content = _ref2.content,
-          label = _ref2.label,
-          cssClass = _ref2.cssClass;
-
-      if (cssClass) {
-        this.adapter_.addClass(cssClass);
-      }
-      if (content) {
-        this.adapter_.setText(content);
-      }
-      if (label) {
-        this.adapter_.setAttr(ARIA_LABEL, label);
-      }
-    }
-
-    /**
-     * @param {string} dataAttr
-     * @return {!IconToggleState}
-     */
-
-  }, {
-    key: 'parseJsonDataAttr_',
-    value: function parseJsonDataAttr_(dataAttr) {
-      var val = this.adapter_.getAttr(dataAttr);
-      if (!val) {
-        return {};
-      }
-      return (/** @type {!IconToggleState} */JSON.parse(val)
-      );
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isDisabled',
-    value: function isDisabled() {
-      return this.disabled_;
-    }
-
-    /** @param {boolean} isDisabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(isDisabled) {
-      this.disabled_ = isDisabled;
-
-      var DISABLED = MDCIconToggleFoundation.cssClasses.DISABLED;
-      var ARIA_DISABLED = MDCIconToggleFoundation.strings.ARIA_DISABLED;
-
-
-      if (this.disabled_) {
-        this.savedTabIndex_ = this.adapter_.getTabIndex();
-        this.adapter_.setTabIndex(-1);
-        this.adapter_.setAttr(ARIA_DISABLED, 'true');
-        this.adapter_.addClass(DISABLED);
-      } else {
-        this.adapter_.setTabIndex(this.savedTabIndex_);
-        this.adapter_.rmAttr(ARIA_DISABLED);
-        this.adapter_.removeClass(DISABLED);
-      }
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isKeyboardActivated',
-    value: function isKeyboardActivated() {
-      return this.isHandlingKeydown_;
-    }
-  }]);
-
-  return MDCIconToggleFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/**
- * @typedef {{
- *   key: string,
- *   keyCode: number
- * }}
- */
-
-
-var KeyboardKey = void 0;
-
-/**
- * @param {!KeyboardKey} keyboardKey
- * @return {boolean}
- */
-function isSpace(keyboardKey) {
-  return keyboardKey.key === 'Space' || keyboardKey.keyCode === 32;
-}
-
-/** @record */
-
-var IconToggleState = function IconToggleState() {
-  _classCallCheck(this, IconToggleState);
-};
-
-/**
- * The aria-label value of the icon toggle, or undefined if there is no aria-label.
- * @export {string|undefined}
- */
-
-
-IconToggleState.prototype.label;
-
-/**
- * The text for the icon toggle, or undefined if there is no text.
- * @export {string|undefined}
- */
-IconToggleState.prototype.content;
-
-/**
- * The CSS class to add to the icon toggle, or undefined if there is no CSS class.
- * @export {string|undefined}
- */
-IconToggleState.prototype.cssClass;
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCIconToggleFoundation);
-
-/***/ }),
-/* 106 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCIconToggleAdapter */
-/* unused harmony export IconToggleEvent */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Icon Toggle. Provides an interface for managing
- * - classes
- * - dom
- * - inner text
- * - event handlers
- * - event dispatch
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-
-var MDCIconToggleAdapter = function () {
-  function MDCIconToggleAdapter() {
-    _classCallCheck(this, MDCIconToggleAdapter);
-  }
-
-  _createClass(MDCIconToggleAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /**
-     * @param {string} type
-     * @param {!EventListener} handler
-     */
-
-  }, {
-    key: "registerInteractionHandler",
-    value: function registerInteractionHandler(type, handler) {}
-
-    /**
-     * @param {string} type
-     * @param {!EventListener} handler
-     */
-
-  }, {
-    key: "deregisterInteractionHandler",
-    value: function deregisterInteractionHandler(type, handler) {}
-
-    /** @param {string} text */
-
-  }, {
-    key: "setText",
-    value: function setText(text) {}
-
-    /** @return {number} */
-
-  }, {
-    key: "getTabIndex",
-    value: function getTabIndex() {}
-
-    /** @param {number} tabIndex */
-
-  }, {
-    key: "setTabIndex",
-    value: function setTabIndex(tabIndex) {}
-
-    /**
-     * @param {string} name
-     * @return {string}
-     */
-
-  }, {
-    key: "getAttr",
-    value: function getAttr(name) {}
-
-    /**
-     * @param {string} name
-     * @param {string} value
-     */
-
-  }, {
-    key: "setAttr",
-    value: function setAttr(name, value) {}
-
-    /** @param {string} name */
-
-  }, {
-    key: "rmAttr",
-    value: function rmAttr(name) {}
-
-    /** @param {!IconToggleEvent} evtData */
-
-  }, {
-    key: "notifyChange",
-    value: function notifyChange(evtData) {}
-  }]);
-
-  return MDCIconToggleAdapter;
-}();
-
-/**
- * @typedef {{
- *   isOn: boolean,
- * }}
- */
-
-
-var IconToggleEvent = void 0;
-
-
-
-/***/ }),
-/* 107 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-icon-toggle',
-  DISABLED: 'mdc-icon-toggle--disabled'
-};
-
-/** @enum {string} */
-var strings = {
-  DATA_TOGGLE_ON: 'data-toggle-on',
-  DATA_TOGGLE_OFF: 'data-toggle-off',
-  ARIA_PRESSED: 'aria-pressed',
-  ARIA_DISABLED: 'aria-disabled',
-  ARIA_LABEL: 'aria-label',
-  CHANGE_EVENT: 'MDCIconToggle:change'
-};
-
-
-
-/***/ }),
-/* 108 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLinearProgress", function() { return MDCLinearProgress; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(109);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCLinearProgressFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-var MDCLinearProgress = function (_MDCComponent) {
-  _inherits(MDCLinearProgress, _MDCComponent);
-
-  function MDCLinearProgress() {
-    _classCallCheck(this, MDCLinearProgress);
-
-    return _possibleConstructorReturn(this, (MDCLinearProgress.__proto__ || Object.getPrototypeOf(MDCLinearProgress)).apply(this, arguments));
-  }
-
-  _createClass(MDCLinearProgress, [{
-    key: 'open',
-    value: function open() {
-      this.foundation_.open();
-    }
-  }, {
-    key: 'close',
-    value: function close() {
-      this.foundation_.close();
-    }
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        getPrimaryBar: function getPrimaryBar() {
-          return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.PRIMARY_BAR_SELECTOR);
-        },
-        getBuffer: function getBuffer() {
-          return _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */].strings.BUFFER_SELECTOR);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        setStyle: function setStyle(el, styleProperty, value) {
-          return el.style[styleProperty] = value;
-        }
-      });
-    }
-  }, {
-    key: 'determinate',
-    set: function set(value) {
-      this.foundation_.setDeterminate(value);
-    }
-  }, {
-    key: 'progress',
-    set: function set(value) {
-      this.foundation_.setProgress(value);
-    }
-  }, {
-    key: 'buffer',
-    set: function set(value) {
-      this.foundation_.setBuffer(value);
-    }
-  }, {
-    key: 'reverse',
-    set: function set(value) {
-      this.foundation_.setReverse(value);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCLinearProgress(root);
-    }
-  }]);
-
-  return MDCLinearProgress;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-/***/ }),
-/* 109 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_animation_index__ = __webpack_require__(13);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(110);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-var MDCLinearProgressFoundation = function (_MDCFoundation) {
-  _inherits(MDCLinearProgressFoundation, _MDCFoundation);
-
-  _createClass(MDCLinearProgressFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        addClass: function addClass() /* className: string */{},
-        getPrimaryBar: function getPrimaryBar() /* el: Element */{},
-        getBuffer: function getBuffer() /* el: Element */{},
-        hasClass: function hasClass() {
-          return (/* className: string */false
-          );
-        },
-        removeClass: function removeClass() /* className: string */{},
-        setStyle: function setStyle() /* el: Element, styleProperty: string, value: string */{}
-      };
-    }
-  }]);
-
-  function MDCLinearProgressFoundation(adapter) {
-    _classCallCheck(this, MDCLinearProgressFoundation);
-
-    return _possibleConstructorReturn(this, (MDCLinearProgressFoundation.__proto__ || Object.getPrototypeOf(MDCLinearProgressFoundation)).call(this, _extends(MDCLinearProgressFoundation.defaultAdapter, adapter)));
-  }
-
-  _createClass(MDCLinearProgressFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.determinate_ = !this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
-      this.reverse_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
-      this.progress_ = 0;
-    }
-  }, {
-    key: 'setDeterminate',
-    value: function setDeterminate(isDeterminate) {
-      this.determinate_ = isDeterminate;
-      if (this.determinate_) {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
-        this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);
-      } else {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].INDETERMINATE_CLASS);
-        this.setScale_(this.adapter_.getPrimaryBar(), 1);
-        this.setScale_(this.adapter_.getBuffer(), 1);
-      }
-    }
-  }, {
-    key: 'setProgress',
-    value: function setProgress(value) {
-      this.progress_ = value;
-      if (this.determinate_) {
-        this.setScale_(this.adapter_.getPrimaryBar(), value);
-      }
-    }
-  }, {
-    key: 'setBuffer',
-    value: function setBuffer(value) {
-      if (this.determinate_) {
-        this.setScale_(this.adapter_.getBuffer(), value);
-      }
-    }
-  }, {
-    key: 'setReverse',
-    value: function setReverse(isReversed) {
-      this.reverse_ = isReversed;
-      if (this.reverse_) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].REVERSED_CLASS);
-      }
-    }
-  }, {
-    key: 'open',
-    value: function open() {
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSED_CLASS);
-    }
-  }, {
-    key: 'close',
-    value: function close() {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSED_CLASS);
-    }
-  }, {
-    key: 'setScale_',
-    value: function setScale_(el, scaleValue) {
-      var _this2 = this;
-
-      var value = 'scaleX(' + scaleValue + ')';
-      __WEBPACK_IMPORTED_MODULE_1__material_animation_index__["c" /* transformStyleProperties */].forEach(function (transformStyleProperty) {
-        _this2.adapter_.setStyle(el, transformStyleProperty, value);
-      });
-    }
-  }]);
-
-  return MDCLinearProgressFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCLinearProgressFoundation);
-
-/***/ }),
-/* 110 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var cssClasses = {
-  CLOSED_CLASS: 'mdc-linear-progress--closed',
-  INDETERMINATE_CLASS: 'mdc-linear-progress--indeterminate',
-  REVERSED_CLASS: 'mdc-linear-progress--reversed'
-};
-
-var strings = {
-  PRIMARY_BAR_SELECTOR: '.mdc-linear-progress__primary-bar',
-  BUFFER_SELECTOR: '.mdc-linear-progress__buffer'
-};
-
-/***/ }),
-/* 111 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(42);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(112);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCLineRippleAdapter>}
- * @final
- */
-
-var MDCLineRippleFoundation = function (_MDCFoundation) {
-  _inherits(MDCLineRippleFoundation, _MDCFoundation);
-
-  _createClass(MDCLineRippleFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /**
-     * {@see MDCLineRippleAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCLineRippleAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCLineRippleAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          setStyle: function setStyle() {},
-          registerEventHandler: function registerEventHandler() {},
-          deregisterEventHandler: function deregisterEventHandler() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCLineRippleAdapter=} adapter
-     */
-
-  }]);
-
-  function MDCLineRippleFoundation(adapter) {
-    _classCallCheck(this, MDCLineRippleFoundation);
-
-    /** @private {function(!Event): undefined} */
-    var _this = _possibleConstructorReturn(this, (MDCLineRippleFoundation.__proto__ || Object.getPrototypeOf(MDCLineRippleFoundation)).call(this, _extends(MDCLineRippleFoundation.defaultAdapter, adapter)));
-
-    _this.transitionEndHandler_ = function (evt) {
-      return _this.handleTransitionEnd(evt);
-    };
-    return _this;
-  }
-
-  _createClass(MDCLineRippleFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.adapter_.registerEventHandler('transitionend', this.transitionEndHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterEventHandler('transitionend', this.transitionEndHandler_);
-    }
-
-    /**
-     * Activates the line ripple
-     */
-
-  }, {
-    key: 'activate',
-    value: function activate() {
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_ACTIVE);
-    }
-
-    /**
-     * Sets the center of the ripple animation to the given X coordinate.
-     * @param {number} xCoordinate
-     */
-
-  }, {
-    key: 'setRippleCenter',
-    value: function setRippleCenter(xCoordinate) {
-      this.adapter_.setStyle('transform-origin', xCoordinate + 'px center');
-    }
-
-    /**
-     * Deactivates the line ripple
-     */
-
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
-    }
-
-    /**
-     * Handles a transition end event
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleTransitionEnd',
-    value: function handleTransitionEnd(evt) {
-      // Wait for the line ripple to be either transparent or opaque
-      // before emitting the animation end event
-      var isDeactivating = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
-
-      if (evt.propertyName === 'opacity') {
-        if (isDeactivating) {
-          this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_ACTIVE);
-          this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].LINE_RIPPLE_DEACTIVATING);
-        }
-      }
-    }
-  }]);
-
-  return MDCLineRippleFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCLineRippleFoundation);
-
-/***/ }),
-/* 112 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',
-  LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating'
-};
-
-
-
-/***/ }),
-/* 113 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCMenuFoundation; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(114);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(17);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__ = __webpack_require__(18);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__ = __webpack_require__(15);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCMenuAdapter>}
- */
-
-var MDCMenuFoundation = function (_MDCFoundation) {
-  _inherits(MDCMenuFoundation, _MDCFoundation);
-
-  _createClass(MDCMenuFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum{cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum{strings} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * {@see MDCMenuAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCMenuAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCMenuAdapter} */{
-          addClassToElementAtIndex: function addClassToElementAtIndex() {},
-          removeClassFromElementAtIndex: function removeClassFromElementAtIndex() {},
-          addAttributeToElementAtIndex: function addAttributeToElementAtIndex() {},
-          removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() {},
-          elementContainsClass: function elementContainsClass() {},
-          closeSurface: function closeSurface() {},
-          getElementIndex: function getElementIndex() {},
-          getParentElement: function getParentElement() {},
-          getSelectedElementIndex: function getSelectedElementIndex() {},
-          notifySelected: function notifySelected() {}
-        }
-      );
-    }
-
-    /** @param {!MDCMenuAdapter} adapter */
-
-  }]);
-
-  function MDCMenuFoundation(adapter) {
-    _classCallCheck(this, MDCMenuFoundation);
-
-    /** @type {number} */
-    var _this = _possibleConstructorReturn(this, (MDCMenuFoundation.__proto__ || Object.getPrototypeOf(MDCMenuFoundation)).call(this, _extends(MDCMenuFoundation.defaultAdapter, adapter)));
-
-    _this.closeAnimationEndTimerId_ = 0;
-    return _this;
-  }
-
-  _createClass(MDCMenuFoundation, [{
-    key: 'destroy',
-    value: function destroy() {
-      if (this.closeAnimationEndTimerId_) {
-        clearTimeout(this.closeAnimationEndTimerId_);
-      }
-
-      this.adapter_.closeSurface();
-    }
-
-    /**
-     * Handler function for the keydown events.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleKeydown',
-    value: function handleKeydown(evt) {
-      var key = evt.key,
-          keyCode = evt.keyCode;
-
-      var isTab = key === 'Tab' || keyCode === 9;
-
-      if (isTab) {
-        this.adapter_.closeSurface();
-      }
-    }
-
-    /**
-     * @param {!HTMLElement} listItem
-     */
-
-  }, {
-    key: 'handleItemAction',
-    value: function handleItemAction(listItem) {
-      var _this2 = this;
-
-      var index = this.adapter_.getElementIndex(listItem);
-      if (index < 0) {
-        return;
-      }
-
-      this.adapter_.notifySelected({ index: index });
-      this.adapter_.closeSurface();
-
-      // Wait for the menu to close before adding/removing classes that affect styles.
-      this.closeAnimationEndTimerId_ = setTimeout(function () {
-        var selectionGroup = _this2.getSelectionGroup_(listItem);
-
-        if (selectionGroup !== null) {
-          _this2.handleSelectionGroup_( /** @type {!HTMLElement} */selectionGroup, index);
-        }
-      }, __WEBPACK_IMPORTED_MODULE_3__material_menu_surface_foundation__["b" /* MDCMenuSurfaceFoundation */].numbers.TRANSITION_CLOSE_DURATION);
-    }
-
-    /**
-     * Handles toggling the selected classes in a selection group when a
-     * selection is made.
-     * @param {!HTMLElement} selectionGroup
-     * @param {number} index The selected index value
-     * @private
-     */
-
-  }, {
-    key: 'handleSelectionGroup_',
-    value: function handleSelectionGroup_(selectionGroup, index) {
-      // De-select the previous selection in this group.
-      var selectedIndex = this.adapter_.getSelectedElementIndex(selectionGroup);
-      if (selectedIndex >= 0) {
-        this.adapter_.removeAttributeFromElementAtIndex(selectedIndex, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED_ATTR);
-        this.adapter_.removeClassFromElementAtIndex(selectedIndex, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM);
-      }
-      // Select the new list item in this group.
-      this.adapter_.addClassToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTED_LIST_ITEM);
-      this.adapter_.addAttributeToElementAtIndex(index, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED_ATTR, 'true');
-    }
-
-    /**
-     * Returns the parent selection group of an element if one exists.
-     * @param listItem
-     * @return {?HTMLElement} parent selection group element or null.
-     * @private
-     */
-
-  }, {
-    key: 'getSelectionGroup_',
-    value: function getSelectionGroup_(listItem) {
-      var parent = this.adapter_.getParentElement(listItem);
-      var isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTION_GROUP);
-
-      // Iterate through ancestors until we find the group or get to the list.
-      while (!isGroup && !this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.ROOT)) {
-        parent = this.adapter_.getParentElement(parent);
-        isGroup = this.adapter_.elementContainsClass(parent, __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].MENU_SELECTION_GROUP);
-      }
-
-      if (isGroup) {
-        return parent;
-      } else {
-        return null;
-      }
-    }
-
-    /**
-     * Find the first ancestor with the mdc-list-item class.
-     * @param {?HTMLElement} target
-     * @return {?HTMLElement}
-     * @private
-     */
-
-  }, {
-    key: 'getListItem_',
-    value: function getListItem_(target) {
-      var isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_CLASS);
-
-      while (!isListItem) {
-        target = this.adapter_.getParentElement(target);
-        if (target) {
-          isListItem = this.adapter_.elementContainsClass(target, __WEBPACK_IMPORTED_MODULE_4__material_list_foundation__["a" /* default */].cssClasses.LIST_ITEM_CLASS);
-        } else {
-          // target has no parent element.
-          return null;
-        }
-      }
-
-      return target;
-    }
-  }]);
-
-  return MDCMenuFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-
-
-/***/ }),
-/* 114 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* unused harmony export MDCMenuAdapter */
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Menu. Provides an interface for managing
- * - selected element classes
- * - get focused elements
- * - toggling a checkbox inside a list item
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCMenuAdapter = function () {
-  function MDCMenuAdapter() {
-    _classCallCheck(this, MDCMenuAdapter);
-  }
-
-  _createClass(MDCMenuAdapter, [{
-    key: "addClassToElementAtIndex",
-
-    /**
-     * Adds a class to the element at the index provided.
-     * @param {number} index
-     * @param {string} className
-     */
-    value: function addClassToElementAtIndex(index, className) {}
-
-    /**
-     * Removes a class from the element at the index provided
-     * @param {number} index
-     * @param {string} className
-     */
-
-  }, {
-    key: "removeClassFromElementAtIndex",
-    value: function removeClassFromElementAtIndex(index, className) {}
-
-    /**
-     * Adds an attribute, with value, to the element at the index provided.
-     * @param {number} index
-     * @param {string} attr
-     * @param {string} value
-     */
-
-  }, {
-    key: "addAttributeToElementAtIndex",
-    value: function addAttributeToElementAtIndex(index, attr, value) {}
-
-    /**
-     * Removes an attribute from an element at the index provided.
-     * @param {number} index
-     * @param {string} attr
-     */
-
-  }, {
-    key: "removeAttributeFromElementAtIndex",
-    value: function removeAttributeFromElementAtIndex(index, attr) {}
-
-    /**
-     * Returns true if the element contains the className.
-     * @param {?HTMLElement} element
-     * @param {string} className
-     * @return {boolean} true if the element contains the className
-     */
-
-  }, {
-    key: "elementContainsClass",
-    value: function elementContainsClass(element, className) {}
-
-    /**
-     * Closes the menu-surface.
-     */
-
-  }, {
-    key: "closeSurface",
-    value: function closeSurface() {}
-
-    /**
-     * Returns the index for the element provided.
-     * @param {?HTMLElement} element
-     * @return {number} index of the element in the list or -1 if it is not in the list.
-     */
-
-  }, {
-    key: "getElementIndex",
-    value: function getElementIndex(element) {}
-
-    /**
-     * Returns the parentElement of the provided element.
-     * @param {?HTMLElement} element
-     * @return {?HTMLElement} parentElement of the element provided.
-     */
-
-  }, {
-    key: "getParentElement",
-    value: function getParentElement(element) {}
-
-    /**
-     * Returns the element within the selectionGroup containing the selected element class.
-     * @param {!HTMLElement} selectionGroup
-     * @return {number} element within the selectionGroup that contains the selected element class.
-     */
-
-  }, {
-    key: "getSelectedElementIndex",
-    value: function getSelectedElementIndex(selectionGroup) {}
-
-    /**
-     * Emits an event using the evtData.
-     * @param {{
-    *    index: number
-    *   }} evtData
-     */
-
-  }, {
-    key: "notifySelected",
-    value: function notifySelected(evtData) {}
-  }]);
-
-  return MDCMenuAdapter;
-}();
-
-
-
-/***/ }),
-/* 115 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransformPropertyName", function() { return getTransformPropertyName; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @type {string|undefined} */
-var storedTransformPropertyName_ = void 0;
-
-/**
- * Returns the name of the correct transform property to use on the current browser.
- * @param {!Window} globalObj
- * @param {boolean=} forceRefresh
- * @return {string}
- */
-function getTransformPropertyName(globalObj) {
-  var forceRefresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
-  if (storedTransformPropertyName_ === undefined || forceRefresh) {
-    var el = globalObj.document.createElement('div');
-    var transformPropertyName = 'transform' in el.style ? 'transform' : 'webkitTransform';
-    storedTransformPropertyName_ = transformPropertyName;
-  }
-
-  return storedTransformPropertyName_;
-}
-
-
-
-/***/ }),
-/* 116 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(46);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(47);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCNotchedOutlineAdapter>}
- * @final
- */
-
-var MDCNotchedOutlineFoundation = function (_MDCFoundation) {
-  _inherits(MDCNotchedOutlineFoundation, _MDCFoundation);
-
-  _createClass(MDCNotchedOutlineFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {number} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
-    }
-
-    /**
-     * {@see MDCNotchedOutlineAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCNotchedOutlineAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCNotchedOutlineAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          setNotchWidthProperty: function setNotchWidthProperty() {},
-          removeNotchWidthProperty: function removeNotchWidthProperty() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCNotchedOutlineAdapter} adapter
-     */
-
-  }]);
-
-  function MDCNotchedOutlineFoundation(adapter) {
-    _classCallCheck(this, MDCNotchedOutlineFoundation);
-
-    return _possibleConstructorReturn(this, (MDCNotchedOutlineFoundation.__proto__ || Object.getPrototypeOf(MDCNotchedOutlineFoundation)).call(this, _extends(MDCNotchedOutlineFoundation.defaultAdapter, adapter)));
-  }
-
-  /**
-   * Adds the outline notched selector and updates the notch width
-   * calculated based off of notchWidth.
-   * @param {number} notchWidth
-   */
-
-
-  _createClass(MDCNotchedOutlineFoundation, [{
-    key: 'notch',
-    value: function notch(notchWidth) {
-      var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
-
-
-      if (notchWidth > 0) {
-        notchWidth += __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].NOTCH_ELEMENT_PADDING; // Add padding from left/right.
-      }
-
-      this.adapter_.setNotchWidthProperty(notchWidth);
-      this.adapter_.addClass(OUTLINE_NOTCHED);
-    }
-
-    /**
-     * Removes notched outline selector to close the notch in the outline.
-     */
-
-  }, {
-    key: 'closeNotch',
-    value: function closeNotch() {
-      var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
-
-      this.adapter_.removeClass(OUTLINE_NOTCHED);
-      this.adapter_.removeNotchWidthProperty();
-    }
-  }]);
-
-  return MDCNotchedOutlineFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCNotchedOutlineFoundation);
-
-/***/ }),
-/* 117 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRadio", function() { return MDCRadio; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(118);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCRadioFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-
-
-/**
- * @extends MDCComponent<!MDCRadioFoundation>
- * @implements {MDCSelectionControl}
- */
-
-var MDCRadio = function (_MDCComponent) {
-  _inherits(MDCRadio, _MDCComponent);
-
-  _createClass(MDCRadio, [{
-    key: 'checked',
-
-
-    /** @return {boolean} */
-    get: function get() {
-      return this.nativeControl_.checked;
-    }
-
-    /** @param {boolean} checked */
-    ,
-    set: function set(checked) {
-      this.nativeControl_.checked = checked;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.nativeControl_.disabled;
-    }
-
-    /** @param {boolean} disabled */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-
-    /** @return {?string} */
-
-  }, {
-    key: 'value',
-    get: function get() {
-      return this.nativeControl_.value;
-    }
-
-    /** @param {?string} value */
-    ,
-    set: function set(value) {
-      this.nativeControl_.value = value;
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCRadio(root);
-    }
-  }]);
-
-  function MDCRadio() {
-    var _ref;
-
-    _classCallCheck(this, MDCRadio);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCRipple} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCRadio.__proto__ || Object.getPrototypeOf(MDCRadio)).call.apply(_ref, [this].concat(args)));
-
-    _this.ripple_ = _this.initRipple_();
-    return _this;
-  }
-
-  /**
-   * @return {!MDCRipple}
-   * @private
-   */
-
-
-  _createClass(MDCRadio, [{
-    key: 'initRipple_',
-    value: function initRipple_() {
-      var _this2 = this;
-
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        isUnbounded: function isUnbounded() {
-          return true;
-        },
-        // Radio buttons technically go "active" whenever there is *any* keyboard interaction. This is not the
-        // UI we desire.
-        isSurfaceActive: function isSurfaceActive() {
-          return false;
-        },
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return _this2.nativeControl_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return _this2.nativeControl_.removeEventListener(type, handler);
-        }
-      });
-      var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRippleFoundation"](adapter);
-      return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"](this.root_, foundation);
-    }
-
-    /**
-     * Returns the state of the native control element, or null if the native control element is not present.
-     * @return {?MDCSelectionControlState}
-     * @private
-     */
-
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.ripple_.destroy();
-      _get(MDCRadio.prototype.__proto__ || Object.getPrototypeOf(MDCRadio.prototype), 'destroy', this).call(this);
-    }
-
-    /** @return {!MDCRadioFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        setNativeControlDisabled: function setNativeControlDisabled(disabled) {
-          return _this3.nativeControl_.disabled = disabled;
-        }
-      });
-    }
-  }, {
-    key: 'nativeControl_',
-    get: function get() {
-      var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
-
-      var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
-      return el;
-    }
-  }]);
-
-  return MDCRadio;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 118 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(119);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(120);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-/* eslint-enable no-unused-vars */
-
-
-/**
- * @extends {MDCFoundation<!MDCRadioAdapter>}
- */
-
-var MDCRadioFoundation = function (_MDCFoundation) {
-  _inherits(MDCRadioFoundation, _MDCFoundation);
-
-  function MDCRadioFoundation() {
-    _classCallCheck(this, MDCRadioFoundation);
-
-    return _possibleConstructorReturn(this, (MDCRadioFoundation.__proto__ || Object.getPrototypeOf(MDCRadioFoundation)).apply(this, arguments));
-  }
-
-  _createClass(MDCRadioFoundation, [{
-    key: 'setDisabled',
-
-
-    /** @param {boolean} disabled */
-    value: function setDisabled(disabled) {
-      var DISABLED = MDCRadioFoundation.cssClasses.DISABLED;
-
-      this.adapter_.setNativeControlDisabled(disabled);
-      if (disabled) {
-        this.adapter_.addClass(DISABLED);
-      } else {
-        this.adapter_.removeClass(DISABLED);
-      }
-    }
-  }], [{
-    key: 'cssClasses',
-
-    /** @return enum {cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {strings} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_3__constants__["b" /* strings */];
-    }
-
-    /** @return {!MDCRadioAdapter} */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCRadioAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
-        }
-      );
-    }
-  }]);
-
-  return MDCRadioFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCRadioFoundation);
-
-/***/ }),
-/* 119 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_selection_control_index__ = __webpack_require__(3);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint-disable no-unused-vars */
-
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Radio. Provides an interface for managing
- * - classes
- * - dom
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-
-var MDCRadioAdapter = function () {
-  function MDCRadioAdapter() {
-    _classCallCheck(this, MDCRadioAdapter);
-  }
-
-  _createClass(MDCRadioAdapter, [{
-    key: 'addClass',
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: 'removeClass',
-    value: function removeClass(className) {}
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setNativeControlDisabled',
-    value: function setNativeControlDisabled(disabled) {}
-  }]);
-
-  return MDCRadioAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCRadioAdapter);
-
-/***/ }),
-/* 120 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  NATIVE_CONTROL_SELECTOR: '.mdc-radio__native-control'
-};
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-radio',
-  DISABLED: 'mdc-radio--disabled'
-};
-
-
-
-/***/ }),
-/* 121 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelect", function() { return MDCSelect; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__ = __webpack_require__(9);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__ = __webpack_require__(16);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_menu_index__ = __webpack_require__(43);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__ = __webpack_require__(20);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__foundation__ = __webpack_require__(122);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__constants__ = __webpack_require__(51);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__adapter__ = __webpack_require__(48);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__icon_index__ = __webpack_require__(21);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helper_text_index__ = __webpack_require__(22);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__ = __webpack_require__(19);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__material_menu_constants__ = __webpack_require__(17);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectFoundation", function() { return __WEBPACK_IMPORTED_MODULE_6__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectHelperText", function() { return __WEBPACK_IMPORTED_MODULE_10__helper_text_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectHelperTextFoundation", function() { return __WEBPACK_IMPORTED_MODULE_10__helper_text_index__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectIcon", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSelectIconFoundation", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__["b"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/* eslint-enable no-unused-vars */
-
-// Closure has issues with {this as that} syntax.
-
-
-
-var VALIDATION_ATTR_WHITELIST = ['required', 'aria-required'];
-
-/**
- * @extends MDCComponent<!MDCSelectFoundation>
- */
-
-var MDCSelect = function (_MDCComponent) {
-  _inherits(MDCSelect, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCSelect() {
-    var _ref;
-
-    _classCallCheck(this, MDCSelect);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCSelect.__proto__ || Object.getPrototypeOf(MDCSelect)).call.apply(_ref, [this].concat(args)));
-
-    _this.nativeControl_;
-    /** @private {?Element} */
-    _this.selectedText_;
-    /** @private {?Element} */
-    _this.hiddenInput_;
-    /** @private {?MDCSelectIcon} */
-    _this.leadingIcon_;
-    /** @private {?MDCSelectHelperText} */
-    _this.helperText_;
-    /** @private {?Element} */
-    _this.menuElement_;
-    /** @type {?MDCMenu} */
-    _this.menu_;
-    /** @type {?MDCRipple} */
-    _this.ripple;
-    /** @private {?MDCLineRipple} */
-    _this.lineRipple_;
-    /** @private {?MDCFloatingLabel} */
-    _this.label_;
-    /** @private {?MDCNotchedOutline} */
-    _this.outline_;
-    /** @private {!Function} */
-    _this.handleChange_;
-    /** @private {!Function} */
-    _this.handleFocus_;
-    /** @private {!Function} */
-    _this.handleBlur_;
-    /** @private {!Function} */
-    _this.handleClick_;
-    /** @private {!Function} */
-    _this.handleKeydown_;
-    /** @private {!Function} */
-    _this.handleMenuOpened_;
-    /** @private {!Function} */
-    _this.handleMenuClosed_;
-    /** @private {!Function} */
-    _this.handleMenuSelected_;
-    /** @private {boolean} */
-    _this.menuOpened_ = false;
-    /** @private {!MutationObserver} */
-    _this.validationObserver_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCSelect}
-   */
-
-
-  _createClass(MDCSelect, [{
-    key: 'layout',
-
-
-    /**
-     * Recomputes the outline SVG path for the outline element.
-     */
-    value: function layout() {
-      this.foundation_.layout();
-    }
-
-    /**
-     * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which creates a new MDCLineRipple.
-     * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which creates a new MDCFloatingLabel.
-     * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which creates a new MDCNotchedOutline.
-     * @param {(function(!Element): !MDCMenu)=} menuFactory A function which creates a new MDCMenu.
-     * @param {(function(!Element): !MDCSelectIcon)=} iconFactory A function which creates a new MDCSelectIcon.
-     * @param {(function(!Element): !MDCSelectHelperText)=} helperTextFactory A function which creates a new
-     * MDCSelectHelperText.
-     */
-
-  }, {
-    key: 'initialize',
-    value: function initialize() {
-      var labelFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_1__material_floating_label_index__["MDCFloatingLabel"](el);
-      };
-      var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_2__material_line_ripple_index__["MDCLineRipple"](el);
-      };
-      var outlineFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_5__material_notched_outline_index__["MDCNotchedOutline"](el);
-      };
-      var menuFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_3__material_menu_index__["MDCMenu"](el);
-      };
-      var iconFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_9__icon_index__["a" /* MDCSelectIcon */](el);
-      };
-      var helperTextFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_10__helper_text_index__["a" /* MDCSelectHelperText */](el);
-      };
-
-      this.nativeControl_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].NATIVE_CONTROL_SELECTOR);
-      this.selectedText_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_TEXT_SELECTOR);
-
-      if (this.selectedText_) {
-        this.enhancedSelectSetup_(menuFactory);
-      }
-
-      var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LABEL_SELECTOR);
-      if (labelElement) {
-        this.label_ = labelFactory(labelElement);
-      }
-      var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LINE_RIPPLE_SELECTOR);
-      if (lineRippleElement) {
-        this.lineRipple_ = lineRippleFactory(lineRippleElement);
-      }
-      var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].OUTLINE_SELECTOR);
-      if (outlineElement) {
-        this.outline_ = outlineFactory(outlineElement);
-      }
-
-      var leadingIcon = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].LEADING_ICON_SELECTOR);
-      if (leadingIcon) {
-        this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].WITH_LEADING_ICON);
-        this.leadingIcon_ = iconFactory(leadingIcon);
-
-        if (this.menuElement_) {
-          this.menuElement_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].WITH_LEADING_ICON);
-        }
-      }
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-      if (element.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_CONTROLS)) {
-        var helperTextElement = document.getElementById(element.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_CONTROLS));
-        if (helperTextElement) {
-          this.helperText_ = helperTextFactory(helperTextElement);
-        }
-      }
-
-      if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].OUTLINED)) {
-        this.ripple = this.initRipple_();
-      }
-
-      // The required state needs to be sync'd before the mutation observer is added.
-      this.initialSyncRequiredState_();
-      this.addMutationObserverForRequired_();
-    }
-
-    /**
-     * Handles setup for the enhanced menu.
-     * @private
-     */
-
-  }, {
-    key: 'enhancedSelectSetup_',
-    value: function enhancedSelectSetup_(menuFactory) {
-      var isDisabled = this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED);
-      this.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');
-      this.hiddenInput_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].HIDDEN_INPUT_SELECTOR);
-      this.menuElement_ = /** @type {HTMLElement} */this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].MENU_SELECTOR);
-      this.menu_ = menuFactory(this.menuElement_);
-      this.menu_.hoistMenuToBody();
-      this.menu_.setAnchorElement( /** @type {!HTMLElement} */this.root_);
-      this.menu_.setAnchorCorner(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["a" /* Corner */].BOTTOM_START);
-      this.menu_.wrapFocus = false;
-    }
-
-    /**
-     * @private
-     * @return {!MDCRipple}
-     */
-
-  }, {
-    key: 'initRipple_',
-    value: function initRipple_() {
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return element.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return element.removeEventListener(type, handler);
-        }
-      });
-      var foundation = new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRippleFoundation"](adapter);
-      return new __WEBPACK_IMPORTED_MODULE_4__material_ripple_index__["MDCRipple"](this.root_, foundation);
-    }
-
-    /**
-     * Initializes the select's event listeners and internal state based
-     * on the environment's state.
-     */
-
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.handleChange_ = function () {
-        return _this2.foundation_.handleChange( /* didChange */true);
-      };
-      this.handleFocus_ = function () {
-        return _this2.foundation_.handleFocus();
-      };
-      this.handleBlur_ = function () {
-        return _this2.foundation_.handleBlur();
-      };
-      this.handleClick_ = function (evt) {
-        if (_this2.selectedText_) _this2.selectedText_.focus();
-        _this2.foundation_.handleClick(_this2.getNormalizedXCoordinate_(evt));
-      };
-      this.handleKeydown_ = function (evt) {
-        return _this2.foundation_.handleKeydown(evt);
-      };
-      this.handleMenuSelected_ = function (evtData) {
-        return _this2.selectedIndex = evtData.detail.index;
-      };
-      this.handleMenuOpened_ = function () {
-        // Menu should open to the last selected element.
-        if (_this2.selectedIndex >= 0) {
-          _this2.menu_.items[_this2.selectedIndex].focus();
-        }
-      };
-      this.handleMenuClosed_ = function () {
-        // menuOpened_ is used to track the state of the menu opening or closing since the menu.open function
-        // will return false if the menu is still closing and this method listens to the closed event which
-        // occurs after the menu is already closed.
-        _this2.menuOpened_ = false;
-        _this2.selectedText_.removeAttribute('aria-expanded');
-        if (document.activeElement !== _this2.selectedText_) {
-          _this2.foundation_.handleBlur();
-        }
-      };
-
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-
-      element.addEventListener('change', this.handleChange_);
-      element.addEventListener('focus', this.handleFocus_);
-      element.addEventListener('blur', this.handleBlur_);
-
-      ['mousedown', 'touchstart'].forEach(function (evtType) {
-        element.addEventListener(evtType, _this2.handleClick_);
-      });
-
-      if (this.menuElement_) {
-        this.selectedText_.addEventListener('keydown', this.handleKeydown_);
-        this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);
-        this.menu_.listen(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].OPENED_EVENT, this.handleMenuOpened_);
-        this.menu_.listen(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__["b" /* strings */].SELECTED_EVENT, this.handleMenuSelected_);
-
-        if (this.hiddenInput_ && this.hiddenInput_.value) {
-          // If the hidden input already has a value, use it to restore the select's value.
-          // This can happen e.g. if the user goes back or (in some browsers) refreshes the page.
-          var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
-          enhancedAdapterMethods.setValue(this.hiddenInput_.value);
-        } else if (this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR)) {
-          // If an element is selected, the select should set the initial selected text.
-          var _enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
-          _enhancedAdapterMethods.setValue(_enhancedAdapterMethods.getValue());
-        }
-      }
-
-      // Initially sync floating label
-      this.foundation_.handleChange( /* didChange */false);
-
-      if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) {
-        this.disabled = true;
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-
-      element.removeEventListener('change', this.handleChange_);
-      element.removeEventListener('focus', this.handleFocus_);
-      element.removeEventListener('blur', this.handleBlur_);
-      element.removeEventListener('keydown', this.handleKeydown_);
-      ['mousedown', 'touchstart'].forEach(function (evtType) {
-        element.removeEventListener(evtType, _this3.handleClick_);
-      });
-
-      if (this.menu_) {
-        this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].CLOSED_EVENT, this.handleMenuClosed_);
-        this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_11__material_menu_surface_constants__["e" /* strings */].OPENED_EVENT, this.handleMenuOpened_);
-        this.menu_.unlisten(__WEBPACK_IMPORTED_MODULE_12__material_menu_constants__["b" /* strings */].SELECTED_EVENT, this.handleMenuSelected_);
-        this.menu_.destroy();
-      }
-
-      if (this.ripple) {
-        this.ripple.destroy();
-      }
-      if (this.outline_) {
-        this.outline_.destroy();
-      }
-      if (this.leadingIcon_) {
-        this.leadingIcon_.destroy();
-      }
-      if (this.helperText_) {
-        this.helperText_.destroy();
-      }
-      if (this.validationObserver_) {
-        this.validationObserver_.disconnect();
-      }
-
-      _get(MDCSelect.prototype.__proto__ || Object.getPrototypeOf(MDCSelect.prototype), 'destroy', this).call(this);
-    }
-
-    /**
-     * @return {!MDCSelectFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      return new __WEBPACK_IMPORTED_MODULE_6__foundation__["a" /* default */](
-      /** @type {!MDCSelectAdapter} */_extends(this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_()), this.getFoundationMap_());
-    }
-
-    /**
-     * @return {!{
-     *   getValue: function(): string,
-     *   setValue: function(string): string,
-     *   openMenu: function(): void,
-     *   closeMenu: function(): void,
-     *   isMenuOpen: function(): boolean,
-     *   setSelectedIndex: function(number): void,
-     *   setDisabled: function(boolean): void
-     * }}
-     * @private
-     */
-
-  }, {
-    key: 'getNativeSelectAdapterMethods_',
-    value: function getNativeSelectAdapterMethods_() {
-      var _this4 = this;
-
-      return {
-        getValue: function getValue() {
-          return _this4.nativeControl_.value;
-        },
-        setValue: function setValue(value) {
-          return _this4.nativeControl_.value = value;
-        },
-        openMenu: function openMenu() {},
-        closeMenu: function closeMenu() {},
-        isMenuOpen: function isMenuOpen() {
-          return false;
-        },
-        setSelectedIndex: function setSelectedIndex(index) {
-          _this4.nativeControl_.selectedIndex = index;
-        },
-        setDisabled: function setDisabled(isDisabled) {
-          return _this4.nativeControl_.disabled = isDisabled;
-        },
-        setValid: function setValid(isValid) {
-          isValid ? _this4.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID) : _this4.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID);
-        },
-        checkValidity: function checkValidity() {
-          return _this4.nativeControl_.checkValidity();
-        }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   getValue: function(): string,
-     *   setValue: function(string): string,
-     *   openMenu: function(): void,
-     *   closeMenu: function(): void,
-     *   isMenuOpen: function(): boolean,
-     *   setSelectedIndex: function(number): void,
-     *   setDisabled: function(boolean): void
-     * }}
-     * @private
-     */
-
-  }, {
-    key: 'getEnhancedSelectAdapterMethods_',
-    value: function getEnhancedSelectAdapterMethods_() {
-      var _this5 = this;
-
-      return {
-        getValue: function getValue() {
-          var listItem = _this5.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
-          if (listItem && listItem.hasAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR)) {
-            return listItem.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR);
-          }
-          return '';
-        },
-        setValue: function setValue(value) {
-          var element =
-          /** @type {HTMLElement} */_this5.menuElement_.querySelector('[' + __WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR + '="' + value + '"]');
-          _this5.setEnhancedSelectedIndex_(element ? _this5.menu_.items.indexOf(element) : -1);
-        },
-        openMenu: function openMenu() {
-          if (_this5.menu_ && !_this5.menu_.open) {
-            _this5.menu_.open = true;
-            _this5.menuOpened_ = true;
-            _this5.selectedText_.setAttribute('aria-expanded', 'true');
-          }
-        },
-        closeMenu: function closeMenu() {
-          if (_this5.menu_ && _this5.menu_.open) {
-            _this5.menu_.open = false;
-          }
-        },
-        isMenuOpen: function isMenuOpen() {
-          return _this5.menu_ && _this5.menuOpened_;
-        },
-        setSelectedIndex: function setSelectedIndex(index) {
-          _this5.setEnhancedSelectedIndex_(index);
-        },
-        setDisabled: function setDisabled(isDisabled) {
-          _this5.selectedText_.setAttribute('tabindex', isDisabled ? '-1' : '0');
-          _this5.selectedText_.setAttribute('aria-disabled', isDisabled.toString());
-          if (_this5.hiddenInput_) {
-            _this5.hiddenInput_.disabled = isDisabled;
-          }
-        },
-        checkValidity: function checkValidity() {
-          var classList = _this5.root_.classList;
-          if (classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED) && !classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED)) {
-            // See notes for required attribute under https://www.w3.org/TR/html52/sec-forms.html#the-select-element
-            // TL;DR: Invalid if no index is selected, or if the first index is selected and has an empty value.
-            return _this5.selectedIndex !== -1 && (_this5.selectedIndex !== 0 || _this5.value);
-          } else {
-            return true;
-          }
-        },
-        setValid: function setValid(isValid) {
-          _this5.selectedText_.setAttribute('aria-invalid', (!isValid).toString());
-          isValid ? _this5.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID) : _this5.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].INVALID);
-        }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   addClass: function(string): void,
-     *   removeClass: function(string): void,
-     *   hasClass: function(string): void,
-     *   setRippleCenter: function(number): void,
-     *   activateBottomLine: function(): void,
-     *   deactivateBottomLine: function(): void,
-     *   notifyChange: function(string): void
-     * }}
-     * @private
-     */
-
-  }, {
-    key: 'getCommonAdapterMethods_',
-    value: function getCommonAdapterMethods_() {
-      var _this6 = this;
-
-      return {
-        addClass: function addClass(className) {
-          return _this6.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this6.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this6.root_.classList.contains(className);
-        },
-        setRippleCenter: function setRippleCenter(normalizedX) {
-          return _this6.lineRipple_ && _this6.lineRipple_.setRippleCenter(normalizedX);
-        },
-        activateBottomLine: function activateBottomLine() {
-          return _this6.lineRipple_ && _this6.lineRipple_.activate();
-        },
-        deactivateBottomLine: function deactivateBottomLine() {
-          return _this6.lineRipple_ && _this6.lineRipple_.deactivate();
-        },
-        notifyChange: function notifyChange(value) {
-          var index = _this6.selectedIndex;
-          _this6.emit(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].CHANGE_EVENT, { value: value, index: index }, true /* shouldBubble  */);
-        }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   hasOutline: function(): boolean,
-     *   notchOutline: function(number, boolean): undefined,
-     *   closeOutline: function(): undefined,
-     * }}
-     */
-
-  }, {
-    key: 'getOutlineAdapterMethods_',
-    value: function getOutlineAdapterMethods_() {
-      var _this7 = this;
-
-      return {
-        hasOutline: function hasOutline() {
-          return !!_this7.outline_;
-        },
-        notchOutline: function notchOutline(labelWidth) {
-          if (_this7.outline_) {
-            _this7.outline_.notch(labelWidth);
-          }
-        },
-        closeOutline: function closeOutline() {
-          if (_this7.outline_) {
-            _this7.outline_.closeNotch();
-          }
-        }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   floatLabel: function(boolean): undefined,
-     *   getLabelWidth: function(): number,
-     * }}
-     */
-
-  }, {
-    key: 'getLabelAdapterMethods_',
-    value: function getLabelAdapterMethods_() {
-      var _this8 = this;
-
-      return {
-        floatLabel: function floatLabel(shouldFloat) {
-          if (_this8.label_) {
-            _this8.label_.float(shouldFloat);
-          }
-        },
-        getLabelWidth: function getLabelWidth() {
-          return _this8.label_ ? _this8.label_.getWidth() : 0;
-        }
-      };
-    }
-
-    /**
-     * Calculates where the line ripple should start based on the x coordinate within the component.
-     * @param {!(MouseEvent|TouchEvent)} evt
-     * @return {number} normalizedX
-     */
-
-  }, {
-    key: 'getNormalizedXCoordinate_',
-    value: function getNormalizedXCoordinate_(evt) {
-      var targetClientRect = evt.target.getBoundingClientRect();
-      var xCoordinate = evt.clientX;
-      return xCoordinate - targetClientRect.left;
-    }
-
-    /**
-     * Returns a map of all subcomponents to subfoundations.
-     * @return {!FoundationMapType}
-     */
-
-  }, {
-    key: 'getFoundationMap_',
-    value: function getFoundationMap_() {
-      return {
-        leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,
-        helperText: this.helperText_ ? this.helperText_.foundation : undefined
-      };
-    }
-
-    /**
-     * Sets the selected index of the enhanced menu.
-     * @param {number} index
-     * @private
-     */
-
-  }, {
-    key: 'setEnhancedSelectedIndex_',
-    value: function setEnhancedSelectedIndex_(index) {
-      var selectedItem = this.menu_.items[index];
-      this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : '';
-      var previouslySelected = this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
-
-      if (previouslySelected) {
-        previouslySelected.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].SELECTED_ITEM_CLASS);
-        previouslySelected.removeAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_SELECTED_ATTR);
-      }
-
-      if (selectedItem) {
-        selectedItem.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].SELECTED_ITEM_CLASS);
-        selectedItem.setAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ARIA_SELECTED_ATTR, 'true');
-      }
-
-      // Synchronize hidden input's value with data-value attribute of selected item.
-      // This code path is also followed when setting value directly, so this covers all cases.
-      if (this.hiddenInput_) {
-        this.hiddenInput_.value = selectedItem ? selectedItem.getAttribute(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].ENHANCED_VALUE_ATTR) || '' : '';
-      }
-
-      this.layout();
-    }
-  }, {
-    key: 'initialSyncRequiredState_',
-    value: function initialSyncRequiredState_() {
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-      var isRequired = element.required || element.getAttribute('aria-required') === 'true' || this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-      if (isRequired) {
-        if (this.nativeControl_) {
-          this.nativeControl_.required = true;
-        } else {
-          this.selectedText_.setAttribute('aria-required', 'true');
-        }
-        this.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-      }
-    }
-  }, {
-    key: 'addMutationObserverForRequired_',
-    value: function addMutationObserverForRequired_() {
-      var _this9 = this;
-
-      var observerHandler = function observerHandler(attributesList) {
-        attributesList.some(function (attributeName) {
-          if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {
-            if (_this9.selectedText_) {
-              if (_this9.selectedText_.getAttribute('aria-required') === 'true') {
-                _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-              } else {
-                _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-              }
-            } else {
-              if (_this9.nativeControl_.required) {
-                _this9.root_.classList.add(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-              } else {
-                _this9.root_.classList.remove(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].REQUIRED);
-              }
-            }
-            return true;
-          }
-        });
-      };
-
-      var getAttributesList = function getAttributesList(mutationsList) {
-        return mutationsList.map(function (mutation) {
-          return mutation.attributeName;
-        });
-      };
-      var observer = new MutationObserver(function (mutationsList) {
-        return observerHandler(getAttributesList(mutationsList));
-      });
-      var element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
-      observer.observe(element, { attributes: true });
-      this.validationObserver_ = observer;
-    }
-  }, {
-    key: 'value',
-
-
-    /**
-     * @return {string} The value of the select.
-     */
-    get: function get() {
-      return this.foundation_.getValue();
-    }
-
-    /**
-     * @param {string} value The value to set on the select.
-     */
-    ,
-    set: function set(value) {
-      this.foundation_.setValue(value);
-    }
-
-    /**
-     * @return {number} The selected index of the select.
-     */
-
-  }, {
-    key: 'selectedIndex',
-    get: function get() {
-      var selectedIndex = void 0;
-      if (this.menuElement_) {
-        var selectedEl = /** @type {!HTMLElement} */this.menuElement_.querySelector(__WEBPACK_IMPORTED_MODULE_7__constants__["c" /* strings */].SELECTED_ITEM_SELECTOR);
-        selectedIndex = this.menu_.items.indexOf(selectedEl);
-      } else {
-        selectedIndex = this.nativeControl_.selectedIndex;
-      }
-      return selectedIndex;
-    }
-
-    /**
-     * @param {number} selectedIndex The index of the option to be set on the select.
-     */
-    ,
-    set: function set(selectedIndex) {
-      this.foundation_.setSelectedIndex(selectedIndex);
-    }
-
-    /**
-     * @return {boolean} True if the select is disabled.
-     */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_7__constants__["a" /* cssClasses */].DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false);
-    }
-
-    /**
-     * @param {boolean} disabled Sets the select disabled or enabled.
-     */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-
-    /**
-     * Sets the aria label of the leading icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'leadingIconAriaLabel',
-    set: function set(label) {
-      this.foundation_.setLeadingIconAriaLabel(label);
-    }
-
-    /**
-     * Sets the text content of the leading icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'leadingIconContent',
-    set: function set(content) {
-      this.foundation_.setLeadingIconContent(content);
-    }
-
-    /**
-     * Sets the text content of the helper text.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'helperTextContent',
-    set: function set(content) {
-      this.foundation_.setHelperTextContent(content);
-    }
-
-    /**
-     * Sets the current invalid state of the select.
-     * @param {boolean} isValid
-     */
-
-  }, {
-    key: 'valid',
-    set: function set(isValid) {
-      this.foundation_.setValid(isValid);
-    }
-
-    /**
-     * Checks if the select is in a valid state.
-     * @return {boolean}
-     */
-    ,
-    get: function get() {
-      return this.foundation_.isValid();
-    }
-
-    /**
-     * Sets the control to the required state.
-     * @param {boolean} isRequired
-     */
-
-  }, {
-    key: 'required',
-    set: function set(isRequired) {
-      if (this.nativeControl_) {
-        this.nativeControl_.required = isRequired;
-      } else {
-        if (isRequired) {
-          this.selectedText_.setAttribute('aria-required', isRequired.toString());
-        } else {
-          this.selectedText_.removeAttribute('aria-required');
-        }
-      }
-    }
-
-    /**
-     * Returns whether the select is required.
-     * @return {boolean}
-     */
-    ,
-    get: function get() {
-      if (this.nativeControl_) {
-        return this.nativeControl_.required;
-      } else {
-        return this.selectedText_.getAttribute('aria-required') === 'true';
-      }
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCSelect(root);
-    }
-  }]);
-
-  return MDCSelect;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 122 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(48);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icon_index__ = __webpack_require__(21);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helper_text_index__ = __webpack_require__(22);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constants__ = __webpack_require__(51);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/* eslint-enable no-unused-vars */
-
-
-/**
- * @extends {MDCFoundation<!MDCSelectAdapter>}
- * @final
- */
-
-var MDCSelectFoundation = function (_MDCFoundation) {
-  _inherits(MDCSelectFoundation, _MDCFoundation);
-
-  _createClass(MDCSelectFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {number} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* numbers */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_4__constants__["c" /* strings */];
-    }
-
-    /**
-     * {@see MDCSelectAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCSelectAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSelectAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          hasClass: function hasClass() {
-            return (/* className: string */false
-            );
-          },
-          activateBottomLine: function activateBottomLine() {},
-          deactivateBottomLine: function deactivateBottomLine() {},
-          setValue: function setValue() {},
-          getValue: function getValue() {},
-          floatLabel: function floatLabel() /* value: boolean */{},
-          getLabelWidth: function getLabelWidth() {},
-          hasOutline: function hasOutline() {
-            return false;
-          },
-          notchOutline: function notchOutline() /* labelWidth: number, */{},
-          closeOutline: function closeOutline() {},
-          openMenu: function openMenu() {},
-          closeMenu: function closeMenu() {},
-          isMenuOpen: function isMenuOpen() {},
-          setSelectedIndex: function setSelectedIndex() {},
-          setDisabled: function setDisabled() {},
-          setRippleCenter: function setRippleCenter() {},
-          notifyChange: function notifyChange() {},
-          checkValidity: function checkValidity() {},
-          setValid: function setValid() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCSelectAdapter} adapter
-     * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.
-     */
-
-  }]);
-
-  function MDCSelectFoundation(adapter) {
-    var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};
-
-    _classCallCheck(this, MDCSelectFoundation);
-
-    /** @type {!MDCSelectIconFoundation|undefined} */
-    var _this = _possibleConstructorReturn(this, (MDCSelectFoundation.__proto__ || Object.getPrototypeOf(MDCSelectFoundation)).call(this, _extends(MDCSelectFoundation.defaultAdapter, adapter)));
-
-    _this.leadingIcon_ = foundationMap.leadingIcon;
-    /** @type {!MDCSelectHelperTextFoundation|undefined} */
-    _this.helperText_ = foundationMap.helperText;
-    return _this;
-  }
-
-  _createClass(MDCSelectFoundation, [{
-    key: 'setSelectedIndex',
-    value: function setSelectedIndex(index) {
-      this.adapter_.setSelectedIndex(index);
-      this.adapter_.closeMenu();
-      var didChange = true;
-      this.handleChange(didChange);
-    }
-  }, {
-    key: 'setValue',
-    value: function setValue(value) {
-      this.adapter_.setValue(value);
-      var didChange = true;
-      this.handleChange(didChange);
-    }
-  }, {
-    key: 'getValue',
-    value: function getValue() {
-      return this.adapter_.getValue();
-    }
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(isDisabled) {
-      isDisabled ? this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].DISABLED) : this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].DISABLED);
-      this.adapter_.setDisabled(isDisabled);
-      this.adapter_.closeMenu();
-
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setDisabled(isDisabled);
-      }
-    }
-
-    /**
-     * @param {string} content Sets the content of the helper text.
-     */
-
-  }, {
-    key: 'setHelperTextContent',
-    value: function setHelperTextContent(content) {
-      if (this.helperText_) {
-        this.helperText_.setContent(content);
-      }
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      var openNotch = this.getValue().length > 0;
-      this.notchOutline(openNotch);
-    }
-
-    /**
-     * Handles value changes, via change event or programmatic updates.
-     */
-
-  }, {
-    key: 'handleChange',
-    value: function handleChange() {
-      var didChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
-
-      var value = this.getValue();
-      var optionHasValue = value.length > 0;
-      var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].REQUIRED);
-
-      this.notchOutline(optionHasValue);
-
-      if (!this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED)) {
-        this.adapter_.floatLabel(optionHasValue);
-      }
-
-      if (didChange) {
-        this.adapter_.notifyChange(value);
-
-        if (isRequired) {
-          this.setValid(this.isValid());
-          if (this.helperText_) {
-            this.helperText_.setValidity(this.isValid());
-          }
-        }
-      }
-    }
-
-    /**
-     * Handles focus events from select element.
-     */
-
-  }, {
-    key: 'handleFocus',
-    value: function handleFocus() {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
-      this.adapter_.floatLabel(true);
-      this.notchOutline(true);
-      this.adapter_.activateBottomLine();
-      if (this.helperText_) {
-        this.helperText_.showToScreenReader();
-      }
-    }
-
-    /**
-     * Handles blur events from select element.
-     */
-
-  }, {
-    key: 'handleBlur',
-    value: function handleBlur() {
-      if (this.adapter_.isMenuOpen()) return;
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
-      this.handleChange(false);
-      this.adapter_.deactivateBottomLine();
-
-      var isRequired = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].REQUIRED);
-
-      if (isRequired) {
-        this.setValid(this.isValid());
-        if (this.helperText_) {
-          this.helperText_.setValidity(this.isValid());
-        }
-      }
-    }
-  }, {
-    key: 'handleClick',
-    value: function handleClick(normalizedX) {
-      if (this.adapter_.isMenuOpen()) return;
-      this.adapter_.setRippleCenter(normalizedX);
-
-      this.adapter_.openMenu();
-    }
-  }, {
-    key: 'handleKeydown',
-    value: function handleKeydown(event) {
-      if (this.adapter_.isMenuOpen()) return;
-
-      var isEnter = event.key === 'Enter' || event.keyCode === 13;
-      var isSpace = event.key === 'Space' || event.keyCode === 32;
-      var arrowUp = event.key === 'ArrowUp' || event.keyCode === 38;
-      var arrowDown = event.key === 'ArrowDown' || event.keyCode === 40;
-
-      if (this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {
-        this.adapter_.openMenu();
-        event.preventDefault();
-      }
-    }
-
-    /**
-     * Opens/closes the notched outline.
-     * @param {boolean} openNotch
-     */
-
-  }, {
-    key: 'notchOutline',
-    value: function notchOutline(openNotch) {
-      if (!this.adapter_.hasOutline()) {
-        return;
-      }
-      var isFocused = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_4__constants__["a" /* cssClasses */].FOCUSED);
-
-      if (openNotch) {
-        var labelScale = __WEBPACK_IMPORTED_MODULE_4__constants__["b" /* numbers */].LABEL_SCALE;
-        var labelWidth = this.adapter_.getLabelWidth() * labelScale;
-        this.adapter_.notchOutline(labelWidth);
-      } else if (!isFocused) {
-        this.adapter_.closeOutline();
-      }
-    }
-
-    /**
-     * Sets the aria label of the leading icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'setLeadingIconAriaLabel',
-    value: function setLeadingIconAriaLabel(label) {
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setAriaLabel(label);
-      }
-    }
-
-    /**
-     * Sets the text content of the leading icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'setLeadingIconContent',
-    value: function setLeadingIconContent(content) {
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setContent(content);
-      }
-    }
-  }, {
-    key: 'setValid',
-    value: function setValid(isValid) {
-      this.adapter_.setValid(isValid);
-    }
-  }, {
-    key: 'isValid',
-    value: function isValid() {
-      return this.adapter_.checkValidity();
-    }
-  }]);
-
-  return MDCSelectFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSelectFoundation);
-
-/***/ }),
-/* 123 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(49);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(124);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCSelectIconAdapter>}
- * @final
- */
-
-var MDCSelectIconFoundation = function (_MDCFoundation) {
-  _inherits(MDCSelectIconFoundation, _MDCFoundation);
-
-  _createClass(MDCSelectIconFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */];
-    }
-
-    /**
-     * {@see MDCSelectIconAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCSelectIconAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSelectIconAdapter} */{
-          getAttr: function getAttr() {},
-          setAttr: function setAttr() {},
-          removeAttr: function removeAttr() {},
-          setContent: function setContent() {},
-          registerInteractionHandler: function registerInteractionHandler() {},
-          deregisterInteractionHandler: function deregisterInteractionHandler() {},
-          notifyIconAction: function notifyIconAction() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCSelectIconAdapter} adapter
-     */
-
-  }]);
-
-  function MDCSelectIconFoundation(adapter) {
-    _classCallCheck(this, MDCSelectIconFoundation);
-
-    /** @private {string?} */
-    var _this = _possibleConstructorReturn(this, (MDCSelectIconFoundation.__proto__ || Object.getPrototypeOf(MDCSelectIconFoundation)).call(this, _extends(MDCSelectIconFoundation.defaultAdapter, adapter)));
-
-    _this.savedTabIndex_ = null;
-
-    /** @private {function(!Event): undefined} */
-    _this.interactionHandler_ = function (evt) {
-      return _this.handleInteraction(evt);
-    };
-    return _this;
-  }
-
-  _createClass(MDCSelectIconFoundation, [{
-    key: 'init',
-    value: function init() {
-      var _this2 = this;
-
-      this.savedTabIndex_ = this.adapter_.getAttr('tabindex');
-
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this2.adapter_.registerInteractionHandler(evtType, _this2.interactionHandler_);
-      });
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this3.adapter_.deregisterInteractionHandler(evtType, _this3.interactionHandler_);
-      });
-    }
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      if (!this.savedTabIndex_) {
-        return;
-      }
-
-      if (disabled) {
-        this.adapter_.setAttr('tabindex', '-1');
-        this.adapter_.removeAttr('role');
-      } else {
-        this.adapter_.setAttr('tabindex', this.savedTabIndex_);
-        this.adapter_.setAttr('role', __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* strings */].ICON_ROLE);
-      }
-    }
-
-    /** @param {string} label */
-
-  }, {
-    key: 'setAriaLabel',
-    value: function setAriaLabel(label) {
-      this.adapter_.setAttr('aria-label', label);
-    }
-
-    /** @param {string} content */
-
-  }, {
-    key: 'setContent',
-    value: function setContent(content) {
-      this.adapter_.setContent(content);
-    }
-
-    /**
-     * Handles an interaction event
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleInteraction',
-    value: function handleInteraction(evt) {
-      if (evt.type === 'click' || evt.key === 'Enter' || evt.keyCode === 13) {
-        this.adapter_.notifyIconAction();
-      }
-    }
-  }]);
-
-  return MDCSelectIconFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSelectIconFoundation);
-
-/***/ }),
-/* 124 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  ICON_EVENT: 'MDCSelect:icon',
-  ICON_ROLE: 'button'
-};
-
-
-
-/***/ }),
-/* 125 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(50);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(126);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCSelectHelperTextAdapter>}
- * @final
- */
-
-var MDCSelectHelperTextFoundation = function (_MDCFoundation) {
-  _inherits(MDCSelectHelperTextFoundation, _MDCFoundation);
-
-  _createClass(MDCSelectHelperTextFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * {@see MDCSelectHelperTextAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCSelectHelperTextAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSelectHelperTextAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          setAttr: function setAttr() {},
-          removeAttr: function removeAttr() {},
-          setContent: function setContent() {}
-        }
-      );
-    }
-
-    /**
-     * @param {!MDCSelectHelperTextAdapter} adapter
-     */
-
-  }]);
-
-  function MDCSelectHelperTextFoundation(adapter) {
-    _classCallCheck(this, MDCSelectHelperTextFoundation);
-
-    return _possibleConstructorReturn(this, (MDCSelectHelperTextFoundation.__proto__ || Object.getPrototypeOf(MDCSelectHelperTextFoundation)).call(this, _extends(MDCSelectHelperTextFoundation.defaultAdapter, adapter)));
-  }
-
-  /**
-   * Sets the content of the helper text field.
-   * @param {string} content
-   */
-
-
-  _createClass(MDCSelectHelperTextFoundation, [{
-    key: 'setContent',
-    value: function setContent(content) {
-      this.adapter_.setContent(content);
-    }
-
-    /** @param {boolean} isPersistent Sets the persistency of the helper text. */
-
-  }, {
-    key: 'setPersistent',
-    value: function setPersistent(isPersistent) {
-      if (isPersistent) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      }
-    }
-
-    /**
-     * @param {boolean} isValidation True to make the helper text act as an
-     *   error validation message.
-     */
-
-  }, {
-    key: 'setValidation',
-    value: function setValidation(isValidation) {
-      if (isValidation) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      }
-    }
-
-    /** Makes the helper text visible to the screen reader. */
-
-  }, {
-    key: 'showToScreenReader',
-    value: function showToScreenReader() {
-      this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN);
-    }
-
-    /**
-     * Sets the validity of the helper text based on the select validity.
-     * @param {boolean} selectIsValid
-     */
-
-  }, {
-    key: 'setValidity',
-    value: function setValidity(selectIsValid) {
-      var helperTextIsPersistent = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_PERSISTENT);
-      var helperTextIsValidationMsg = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].HELPER_TEXT_VALIDATION_MSG);
-      var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;
-
-      if (validationMsgNeedsDisplay) {
-        this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE, 'alert');
-      } else {
-        this.adapter_.removeAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ROLE);
-      }
-
-      if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
-        this.hide_();
-      }
-    }
-
-    /**
-     * Hides the help text from screen readers.
-     * @private
-     */
-
-  }, {
-    key: 'hide_',
-    value: function hide_() {
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_HIDDEN, 'true');
-    }
-  }]);
-
-  return MDCSelectHelperTextFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSelectHelperTextFoundation);
-
-/***/ }),
-/* 126 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  ARIA_HIDDEN: 'aria-hidden',
-  ROLE: 'role'
-};
-
-/** @enum {string} */
-var cssClasses = {
-  HELPER_TEXT_PERSISTENT: 'mdc-select-helper-text--persistent',
-  HELPER_TEXT_VALIDATION_MSG: 'mdc-select-helper-text--validation-msg'
-};
-
-
-
-/***/ }),
-/* 127 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSlider", function() { return MDCSlider; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(52);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(53);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation__ = __webpack_require__(128);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSliderFoundation", function() { return __WEBPACK_IMPORTED_MODULE_3__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-/**
- * @extends MDCComponent<!MDCSliderFoundation>
- */
-
-var MDCSlider = function (_MDCComponent) {
-  _inherits(MDCSlider, _MDCComponent);
-
-  _createClass(MDCSlider, null, [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCSlider(root);
-    }
-  }]);
-
-  function MDCSlider() {
-    var _ref;
-
-    _classCallCheck(this, MDCSlider);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCSlider.__proto__ || Object.getPrototypeOf(MDCSlider)).call.apply(_ref, [this].concat(args)));
-
-    _this.thumbContainer_;
-    /** @type {?Element} */
-    _this.track_;
-    /** @type {?Element} */
-    _this.pinValueMarker_;
-    /** @type {?Element} */
-    _this.trackMarkerContainer_;
-    return _this;
-  }
-
-  /** @return {number} */
-
-
-  _createClass(MDCSlider, [{
-    key: 'initialize',
-    value: function initialize() {
-      this.thumbContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].THUMB_CONTAINER_SELECTOR);
-      this.track_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].TRACK_SELECTOR);
-      this.pinValueMarker_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].PIN_VALUE_MARKER_SELECTOR);
-      this.trackMarkerContainer_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].TRACK_MARKER_CONTAINER_SELECTOR);
-    }
-
-    /**
-     * @return {!MDCSliderFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_3__foundation__["a" /* default */](
-      /** @type {!MDCSliderAdapter} */{
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        getAttribute: function getAttribute(name) {
-          return _this2.root_.getAttribute(name);
-        },
-        setAttribute: function setAttribute(name, value) {
-          return _this2.root_.setAttribute(name, value);
-        },
-        removeAttribute: function removeAttribute(name) {
-          return _this2.root_.removeAttribute(name);
-        },
-        computeBoundingRect: function computeBoundingRect() {
-          return _this2.root_.getBoundingClientRect();
-        },
-        getTabIndex: function getTabIndex() {
-          return _this2.root_.tabIndex;
-        },
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          _this2.root_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          _this2.root_.removeEventListener(type, handler);
-        },
-        registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(type, handler) {
-          _this2.thumbContainer_.addEventListener(type, handler);
-        },
-        deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(type, handler) {
-          _this2.thumbContainer_.removeEventListener(type, handler);
-        },
-        registerBodyInteractionHandler: function registerBodyInteractionHandler(type, handler) {
-          document.body.addEventListener(type, handler);
-        },
-        deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(type, handler) {
-          document.body.removeEventListener(type, handler);
-        },
-        registerResizeHandler: function registerResizeHandler(handler) {
-          window.addEventListener('resize', handler);
-        },
-        deregisterResizeHandler: function deregisterResizeHandler(handler) {
-          window.removeEventListener('resize', handler);
-        },
-        notifyInput: function notifyInput() {
-          _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].INPUT_EVENT, _this2);
-        },
-        notifyChange: function notifyChange() {
-          _this2.emit(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].CHANGE_EVENT, _this2);
-        },
-        setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) {
-          _this2.thumbContainer_.style.setProperty(propertyName, value);
-        },
-        setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) {
-          _this2.track_.style.setProperty(propertyName, value);
-        },
-        setMarkerValue: function setMarkerValue(value) {
-          _this2.pinValueMarker_.innerText = value;
-        },
-        appendTrackMarkers: function appendTrackMarkers(numMarkers) {
-          var frag = document.createDocumentFragment();
-          for (var i = 0; i < numMarkers; i++) {
-            var marker = document.createElement('div');
-            marker.classList.add('mdc-slider__track-marker');
-            frag.appendChild(marker);
-          }
-          _this2.trackMarkerContainer_.appendChild(frag);
-        },
-        removeTrackMarkers: function removeTrackMarkers() {
-          while (_this2.trackMarkerContainer_.firstChild) {
-            _this2.trackMarkerContainer_.removeChild(_this2.trackMarkerContainer_.firstChild);
-          }
-        },
-        setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty(propertyName, value) {
-          // We remove and append new nodes, thus, the last track marker must be dynamically found.
-          var lastTrackMarker = _this2.root_.querySelector(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].LAST_TRACK_MARKER_SELECTOR);
-          lastTrackMarker.style.setProperty(propertyName, value);
-        },
-        isRTL: function isRTL() {
-          return getComputedStyle(_this2.root_).direction === 'rtl';
-        }
-      });
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var origValueNow = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUENOW));
-      var min = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUEMIN)) || this.min;
-      var max = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_VALUEMAX)) || this.max;
-
-      // min and max need to be set in the right order to avoid throwing an error
-      // when the new min is greater than the default max.
-      if (min >= this.max) {
-        this.max = max;
-        this.min = min;
-      } else {
-        this.min = min;
-        this.max = max;
-      }
-
-      this.step = parseFloat(this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].STEP_DATA_ATTR)) || this.step;
-      this.value = origValueNow || this.value;
-      this.disabled = this.root_.hasAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_DISABLED) && this.root_.getAttribute(__WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */].ARIA_DISABLED) !== 'false';
-      this.foundation_.setupTrackMarker();
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      this.foundation_.layout();
-    }
-
-    /** @param {number=} amount */
-
-  }, {
-    key: 'stepUp',
-    value: function stepUp() {
-      var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;
-
-      this.value += amount;
-    }
-
-    /** @param {number=} amount */
-
-  }, {
-    key: 'stepDown',
-    value: function stepDown() {
-      var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.step || 1;
-
-      this.value -= amount;
-    }
-  }, {
-    key: 'value',
-    get: function get() {
-      return this.foundation_.getValue();
-    }
-
-    /** @param {number} value */
-    ,
-    set: function set(value) {
-      this.foundation_.setValue(value);
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'min',
-    get: function get() {
-      return this.foundation_.getMin();
-    }
-
-    /** @param {number} min */
-    ,
-    set: function set(min) {
-      this.foundation_.setMin(min);
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'max',
-    get: function get() {
-      return this.foundation_.getMax();
-    }
-
-    /** @param {number} max */
-    ,
-    set: function set(max) {
-      this.foundation_.setMax(max);
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'step',
-    get: function get() {
-      return this.foundation_.getStep();
-    }
-
-    /** @param {number} step */
-    ,
-    set: function set(step) {
-      this.foundation_.setStep(step);
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.foundation_.isDisabled();
-    }
-
-    /** @param {boolean} disabled */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-  }]);
-
-  return MDCSlider;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 128 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(52);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(53);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_animation_index__ = __webpack_require__(13);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_base_foundation__ = __webpack_require__(0);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-/** @enum {string} */
-var KEY_IDS = {
-  ARROW_LEFT: 'ArrowLeft',
-  ARROW_RIGHT: 'ArrowRight',
-  ARROW_UP: 'ArrowUp',
-  ARROW_DOWN: 'ArrowDown',
-  HOME: 'Home',
-  END: 'End',
-  PAGE_UP: 'PageUp',
-  PAGE_DOWN: 'PageDown'
-};
-
-/** @enum {string} */
-var MOVE_EVENT_MAP = {
-  'mousedown': 'mousemove',
-  'touchstart': 'touchmove',
-  'pointerdown': 'pointermove'
-};
-
-var DOWN_EVENTS = ['mousedown', 'pointerdown', 'touchstart'];
-var UP_EVENTS = ['mouseup', 'pointerup', 'touchend'];
-
-/**
- * @extends {MDCFoundation<!MDCSliderAdapter>}
- */
-
-var MDCSliderFoundation = function (_MDCFoundation) {
-  _inherits(MDCSliderFoundation, _MDCFoundation);
-
-  _createClass(MDCSliderFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {cssClasses} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {strings} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */];
-    }
-
-    /** @return enum {numbers} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */];
-    }
-
-    /** @return {!MDCSliderAdapter} */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSliderAdapter} */{
-          hasClass: function hasClass() {
-            return (/* className: string */ /* boolean */false
-            );
-          },
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          getAttribute: function getAttribute() {
-            return (/* name: string */ /* string|null */null
-            );
-          },
-          setAttribute: function setAttribute() /* name: string, value: string */{},
-          removeAttribute: function removeAttribute() /* name: string */{},
-          computeBoundingRect: function computeBoundingRect() {
-            return (/* ClientRect */{
-                top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0
-              }
-            );
-          },
-          getTabIndex: function getTabIndex() {
-            return (/* number */0
-            );
-          },
-          registerInteractionHandler: function registerInteractionHandler() /* type: string, handler: EventListener */{},
-          deregisterInteractionHandler: function deregisterInteractionHandler() /* type: string, handler: EventListener */{},
-          registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},
-          deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() /* type: string, handler: EventListener */{},
-          registerBodyInteractionHandler: function registerBodyInteractionHandler() /* type: string, handler: EventListener */{},
-          deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() /* type: string, handler: EventListener */{},
-          registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
-          deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
-          notifyInput: function notifyInput() {},
-          notifyChange: function notifyChange() {},
-          setThumbContainerStyleProperty: function setThumbContainerStyleProperty() /* propertyName: string, value: string */{},
-          setTrackStyleProperty: function setTrackStyleProperty() /* propertyName: string, value: string */{},
-          setMarkerValue: function setMarkerValue() /* value: number */{},
-          appendTrackMarkers: function appendTrackMarkers() /* numMarkers: number */{},
-          removeTrackMarkers: function removeTrackMarkers() {},
-          setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() /* propertyName: string, value: string */{},
-          isRTL: function isRTL() {
-            return (/* boolean */false
-            );
-          }
-        }
-      );
-    }
-
-    /**
-     * Creates a new instance of MDCSliderFoundation
-     * @param {?MDCSliderAdapter} adapter
-     */
-
-  }]);
-
-  function MDCSliderFoundation(adapter) {
-    _classCallCheck(this, MDCSliderFoundation);
-
-    /** @private {?ClientRect} */
-    var _this = _possibleConstructorReturn(this, (MDCSliderFoundation.__proto__ || Object.getPrototypeOf(MDCSliderFoundation)).call(this, _extends(MDCSliderFoundation.defaultAdapter, adapter)));
-
-    _this.rect_ = null;
-    // We set this to NaN since we want it to be a number, but we can't use '0' or '-1'
-    // because those could be valid tabindices set by the client code.
-    _this.savedTabIndex_ = NaN;
-    _this.active_ = false;
-    _this.inTransit_ = false;
-    _this.isDiscrete_ = false;
-    _this.hasTrackMarker_ = false;
-    _this.handlingThumbTargetEvt_ = false;
-    _this.min_ = 0;
-    _this.max_ = 100;
-    _this.step_ = 0;
-    _this.value_ = 0;
-    _this.disabled_ = false;
-    _this.preventFocusState_ = false;
-    _this.updateUIFrame_ = 0;
-    _this.thumbContainerPointerHandler_ = function () {
-      _this.handlingThumbTargetEvt_ = true;
-    };
-    _this.interactionStartHandler_ = function (evt) {
-      return _this.handleDown_(evt);
-    };
-    _this.keydownHandler_ = function (evt) {
-      return _this.handleKeydown_(evt);
-    };
-    _this.focusHandler_ = function () {
-      return _this.handleFocus_();
-    };
-    _this.blurHandler_ = function () {
-      return _this.handleBlur_();
-    };
-    _this.resizeHandler_ = function () {
-      return _this.layout();
-    };
-    return _this;
-  }
-
-  _createClass(MDCSliderFoundation, [{
-    key: 'init',
-    value: function init() {
-      var _this2 = this;
-
-      this.isDiscrete_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].IS_DISCRETE);
-      this.hasTrackMarker_ = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].HAS_TRACK_MARKER);
-      DOWN_EVENTS.forEach(function (evtName) {
-        return _this2.adapter_.registerInteractionHandler(evtName, _this2.interactionStartHandler_);
-      });
-      this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);
-      this.adapter_.registerInteractionHandler('focus', this.focusHandler_);
-      this.adapter_.registerInteractionHandler('blur', this.blurHandler_);
-      DOWN_EVENTS.forEach(function (evtName) {
-        _this2.adapter_.registerThumbContainerInteractionHandler(evtName, _this2.thumbContainerPointerHandler_);
-      });
-      this.adapter_.registerResizeHandler(this.resizeHandler_);
-      this.layout();
-      // At last step, provide a reasonable default value to discrete slider
-      if (this.isDiscrete_ && this.getStep() == 0) {
-        this.step_ = 1;
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      DOWN_EVENTS.forEach(function (evtName) {
-        _this3.adapter_.deregisterInteractionHandler(evtName, _this3.interactionStartHandler_);
-      });
-      this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);
-      this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);
-      this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);
-      DOWN_EVENTS.forEach(function (evtName) {
-        _this3.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this3.thumbContainerPointerHandler_);
-      });
-      this.adapter_.deregisterResizeHandler(this.resizeHandler_);
-    }
-  }, {
-    key: 'setupTrackMarker',
-    value: function setupTrackMarker() {
-      if (this.isDiscrete_ && this.hasTrackMarker_ && this.getStep() != 0) {
-        var min = this.getMin();
-        var max = this.getMax();
-        var step = this.getStep();
-        var numMarkers = (max - min) / step;
-
-        // In case distance between max & min is indivisible to step,
-        // we place the secondary to last marker proportionally at where thumb
-        // could reach and place the last marker at max value
-        var indivisible = Math.ceil(numMarkers) !== numMarkers;
-        if (indivisible) {
-          numMarkers = Math.ceil(numMarkers);
-        }
-
-        this.adapter_.removeTrackMarkers();
-        this.adapter_.appendTrackMarkers(numMarkers);
-
-        if (indivisible) {
-          var lastStepRatio = (max - numMarkers * step) / step + 1;
-          var flex = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["b" /* getCorrectPropertyName */])(window, 'flex');
-          this.adapter_.setLastTrackMarkersStyleProperty(flex, String(lastStepRatio));
+        exports.getCorrectEventName = getCorrectEventName;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var supportsCssVariables_;
+        var supportsPassive_;
+        function detectEdgePseudoVarBug(windowObj) {
+            var document = windowObj.document;
+            var node = document.createElement("div");
+            node.className = "mdc-ripple-surface--test-edge-var-bug";
+            document.body.appendChild(node);
+            var computedStyle = windowObj.getComputedStyle(node);
+            var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === "solid";
+            if (node.parentNode) {
+                node.parentNode.removeChild(node);
+            }
+            return hasPseudoVarBug;
         }
         }
-      }
-    }
-  }, {
-    key: 'layout',
-    value: function layout() {
-      this.rect_ = this.adapter_.computeBoundingRect();
-      this.updateUIForCurrentValue_();
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'getValue',
-    value: function getValue() {
-      return this.value_;
-    }
-
-    /** @param {number} value */
-
-  }, {
-    key: 'setValue',
-    value: function setValue(value) {
-      this.setValue_(value, false);
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'getMax',
-    value: function getMax() {
-      return this.max_;
-    }
-
-    /** @param {number} max */
-
-  }, {
-    key: 'setMax',
-    value: function setMax(max) {
-      if (max < this.min_) {
-        throw new Error('Cannot set max to be less than the slider\'s minimum value');
-      }
-      this.max_ = max;
-      this.setValue_(this.value_, false, true);
-      this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUEMAX, String(this.max_));
-      this.setupTrackMarker();
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'getMin',
-    value: function getMin() {
-      return this.min_;
-    }
-
-    /** @param {number} min */
-
-  }, {
-    key: 'setMin',
-    value: function setMin(min) {
-      if (min > this.max_) {
-        throw new Error('Cannot set min to be greater than the slider\'s maximum value');
-      }
-      this.min_ = min;
-      this.setValue_(this.value_, false, true);
-      this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUEMIN, String(this.min_));
-      this.setupTrackMarker();
-    }
-
-    /** @return {number} */
-
-  }, {
-    key: 'getStep',
-    value: function getStep() {
-      return this.step_;
-    }
-
-    /** @param {number} step */
-
-  }, {
-    key: 'setStep',
-    value: function setStep(step) {
-      if (step < 0) {
-        throw new Error('Step cannot be set to a negative number');
-      }
-      if (this.isDiscrete_ && (typeof step !== 'number' || step < 1)) {
-        step = 1;
-      }
-      this.step_ = step;
-      this.setValue_(this.value_, false, true);
-      this.setupTrackMarker();
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'isDisabled',
-    value: function isDisabled() {
-      return this.disabled_;
-    }
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      this.disabled_ = disabled;
-      this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].DISABLED, this.disabled_);
-      if (this.disabled_) {
-        this.savedTabIndex_ = this.adapter_.getTabIndex();
-        this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_DISABLED, 'true');
-        this.adapter_.removeAttribute('tabindex');
-      } else {
-        this.adapter_.removeAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_DISABLED);
-        if (!isNaN(this.savedTabIndex_)) {
-          this.adapter_.setAttribute('tabindex', String(this.savedTabIndex_));
+        function supportsCssVariables(windowObj, forceRefresh) {
+            if (forceRefresh === void 0) {
+                forceRefresh = false;
+            }
+            var CSS = windowObj.CSS;
+            var supportsCssVars = supportsCssVariables_;
+            if (typeof supportsCssVariables_ === "boolean" && !forceRefresh) {
+                return supportsCssVariables_;
+            }
+            var supportsFunctionPresent = CSS && typeof CSS.supports === "function";
+            if (!supportsFunctionPresent) {
+                return false;
+            }
+            var explicitlySupportsCssVars = CSS.supports("--css-vars", "yes");
+            var weAreFeatureDetectingSafari10plus = CSS.supports("(--css-vars: yes)") && CSS.supports("color", "#00000000");
+            if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {
+                supportsCssVars = !detectEdgePseudoVarBug(windowObj);
+            } else {
+                supportsCssVars = false;
+            }
+            if (!forceRefresh) {
+                supportsCssVariables_ = supportsCssVars;
+            }
+            return supportsCssVars;
         }
         }
-      }
-    }
-
-    /**
-     * Called when the user starts interacting with the slider
-     * @param {!Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleDown_',
-    value: function handleDown_(evt) {
-      var _this4 = this;
-
-      if (this.disabled_) {
-        return;
-      }
-
-      this.preventFocusState_ = true;
-      this.setInTransit_(!this.handlingThumbTargetEvt_);
-      this.handlingThumbTargetEvt_ = false;
-      this.setActive_(true);
-
-      var moveHandler = function moveHandler(evt) {
-        _this4.handleMove_(evt);
-      };
-
-      // Note: upHandler is [de]registered on ALL potential pointer-related release event types, since some browsers
-      // do not always fire these consistently in pairs.
-      // (See https://github.com/material-components/material-components-web/issues/1192)
-      var upHandler = function upHandler() {
-        _this4.handleUp_();
-        _this4.adapter_.deregisterBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);
-        UP_EVENTS.forEach(function (evtName) {
-          return _this4.adapter_.deregisterBodyInteractionHandler(evtName, upHandler);
+        exports.supportsCssVariables = supportsCssVariables;
+        function applyPassive(globalObj, forceRefresh) {
+            if (globalObj === void 0) {
+                globalObj = window;
+            }
+            if (forceRefresh === void 0) {
+                forceRefresh = false;
+            }
+            if (supportsPassive_ === undefined || forceRefresh) {
+                var isSupported_1 = false;
+                try {
+                    globalObj.document.addEventListener("test", function() {
+                        return undefined;
+                    }, {
+                        get passive() {
+                            isSupported_1 = true;
+                            return isSupported_1;
+                        }
+                    });
+                } catch (e) {}
+                supportsPassive_ = isSupported_1;
+            }
+            return supportsPassive_ ? {
+                passive: true
+            } : false;
+        }
+        exports.applyPassive = applyPassive;
+        function getNormalizedEventCoords(evt, pageOffset, clientRect) {
+            if (!evt) {
+                return {
+                    x: 0,
+                    y: 0
+                };
+            }
+            var x = pageOffset.x, y = pageOffset.y;
+            var documentX = x + clientRect.left;
+            var documentY = y + clientRect.top;
+            var normalizedX;
+            var normalizedY;
+            if (evt.type === "touchstart") {
+                var touchEvent = evt;
+                normalizedX = touchEvent.changedTouches[0].pageX - documentX;
+                normalizedY = touchEvent.changedTouches[0].pageY - documentY;
+            } else {
+                var mouseEvent = evt;
+                normalizedX = mouseEvent.pageX - documentX;
+                normalizedY = mouseEvent.pageY - documentY;
+            }
+            return {
+                x: normalizedX,
+                y: normalizedY
+            };
+        }
+        exports.getNormalizedEventCoords = getNormalizedEventCoords;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
         });
         });
-      };
-
-      this.adapter_.registerBodyInteractionHandler(MOVE_EVENT_MAP[evt.type], moveHandler);
-      UP_EVENTS.forEach(function (evtName) {
-        return _this4.adapter_.registerBodyInteractionHandler(evtName, upHandler);
-      });
-      this.setValueFromEvt_(evt);
-    }
-
-    /**
-     * Called when the user moves the slider
-     * @param {!Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'handleMove_',
-    value: function handleMove_(evt) {
-      evt.preventDefault();
-      this.setValueFromEvt_(evt);
-    }
-
-    /**
-     * Called when the user's interaction with the slider ends
-     * @private
-     */
-
-  }, {
-    key: 'handleUp_',
-    value: function handleUp_() {
-      this.setActive_(false);
-      this.adapter_.notifyChange();
-    }
-
-    /**
-     * Returns the pageX of the event
-     * @param {!Event} evt
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'getPageX_',
-    value: function getPageX_(evt) {
-      if (evt.targetTouches && evt.targetTouches.length > 0) {
-        return evt.targetTouches[0].pageX;
-      }
-      return evt.pageX;
-    }
-
-    /**
-     * Sets the slider value from an event
-     * @param {!Event} evt
-     * @private
-     */
-
-  }, {
-    key: 'setValueFromEvt_',
-    value: function setValueFromEvt_(evt) {
-      var pageX = this.getPageX_(evt);
-      var value = this.computeValueFromPageX_(pageX);
-      this.setValue_(value, true);
-    }
-
-    /**
-     * Computes the new value from the pageX position
-     * @param {number} pageX
-     * @return {number}
-     */
-
-  }, {
-    key: 'computeValueFromPageX_',
-    value: function computeValueFromPageX_(pageX) {
-      var max = this.max_,
-          min = this.min_;
-
-      var xPos = pageX - this.rect_.left;
-      var pctComplete = xPos / this.rect_.width;
-      if (this.adapter_.isRTL()) {
-        pctComplete = 1 - pctComplete;
-      }
-      // Fit the percentage complete between the range [min,max]
-      // by remapping from [0, 1] to [min, min+(max-min)].
-      return min + pctComplete * (max - min);
-    }
-
-    /**
-     * Handles keydown events
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleKeydown_',
-    value: function handleKeydown_(evt) {
-      var keyId = this.getKeyId_(evt);
-      var value = this.getValueForKeyId_(keyId);
-      if (isNaN(value)) {
-        return;
-      }
-
-      // Prevent page from scrolling due to key presses that would normally scroll the page
-      evt.preventDefault();
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
-      this.setValue_(value, true);
-      this.adapter_.notifyChange();
-    }
-
-    /**
-     * Returns the computed name of the event
-     * @param {!Event} kbdEvt
-     * @return {string}
-     */
-
-  }, {
-    key: 'getKeyId_',
-    value: function getKeyId_(kbdEvt) {
-      if (kbdEvt.key === KEY_IDS.ARROW_LEFT || kbdEvt.keyCode === 37) {
-        return KEY_IDS.ARROW_LEFT;
-      }
-      if (kbdEvt.key === KEY_IDS.ARROW_RIGHT || kbdEvt.keyCode === 39) {
-        return KEY_IDS.ARROW_RIGHT;
-      }
-      if (kbdEvt.key === KEY_IDS.ARROW_UP || kbdEvt.keyCode === 38) {
-        return KEY_IDS.ARROW_UP;
-      }
-      if (kbdEvt.key === KEY_IDS.ARROW_DOWN || kbdEvt.keyCode === 40) {
-        return KEY_IDS.ARROW_DOWN;
-      }
-      if (kbdEvt.key === KEY_IDS.HOME || kbdEvt.keyCode === 36) {
-        return KEY_IDS.HOME;
-      }
-      if (kbdEvt.key === KEY_IDS.END || kbdEvt.keyCode === 35) {
-        return KEY_IDS.END;
-      }
-      if (kbdEvt.key === KEY_IDS.PAGE_UP || kbdEvt.keyCode === 33) {
-        return KEY_IDS.PAGE_UP;
-      }
-      if (kbdEvt.key === KEY_IDS.PAGE_DOWN || kbdEvt.keyCode === 34) {
-        return KEY_IDS.PAGE_DOWN;
-      }
-
-      return '';
-    }
-
-    /**
-     * Computes the value given a keyboard key ID
-     * @param {string} keyId
-     * @return {number}
-     */
-
-  }, {
-    key: 'getValueForKeyId_',
-    value: function getValueForKeyId_(keyId) {
-      var max = this.max_,
-          min = this.min_,
-          step = this.step_;
-
-      var delta = step || (max - min) / 100;
-      var valueNeedsToBeFlipped = this.adapter_.isRTL() && (keyId === KEY_IDS.ARROW_LEFT || keyId === KEY_IDS.ARROW_RIGHT);
-      if (valueNeedsToBeFlipped) {
-        delta = -delta;
-      }
-
-      switch (keyId) {
-        case KEY_IDS.ARROW_LEFT:
-        case KEY_IDS.ARROW_DOWN:
-          return this.value_ - delta;
-        case KEY_IDS.ARROW_RIGHT:
-        case KEY_IDS.ARROW_UP:
-          return this.value_ + delta;
-        case KEY_IDS.HOME:
-          return this.min_;
-        case KEY_IDS.END:
-          return this.max_;
-        case KEY_IDS.PAGE_UP:
-          return this.value_ + delta * __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */].PAGE_FACTOR;
-        case KEY_IDS.PAGE_DOWN:
-          return this.value_ - delta * __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */].PAGE_FACTOR;
-        default:
-          return NaN;
-      }
-    }
-  }, {
-    key: 'handleFocus_',
-    value: function handleFocus_() {
-      if (this.preventFocusState_) {
-        return;
-      }
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
-    }
-  }, {
-    key: 'handleBlur_',
-    value: function handleBlur_() {
-      this.preventFocusState_ = false;
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FOCUS);
-    }
-
-    /**
-     * Sets the value of the slider
-     * @param {number} value
-     * @param {boolean} shouldFireInput
-     * @param {boolean=} force
-     */
-
-  }, {
-    key: 'setValue_',
-    value: function setValue_(value, shouldFireInput) {
-      var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
-      if (value === this.value_ && !force) {
-        return;
-      }
-
-      var min = this.min_,
-          max = this.max_;
-
-      var valueSetToBoundary = value === min || value === max;
-      if (this.step_ && !valueSetToBoundary) {
-        value = this.quantize_(value);
-      }
-      if (value < min) {
-        value = min;
-      } else if (value > max) {
-        value = max;
-      }
-      this.value_ = value;
-      this.adapter_.setAttribute(__WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_VALUENOW, String(this.value_));
-      this.updateUIForCurrentValue_();
-
-      if (shouldFireInput) {
-        this.adapter_.notifyInput();
-        if (this.isDiscrete_) {
-          this.adapter_.setMarkerValue(value);
-        }
-      }
-    }
-
-    /**
-     * Calculates the quantized value
-     * @param {number} value
-     * @return {number}
-     */
-
-  }, {
-    key: 'quantize_',
-    value: function quantize_(value) {
-      var numSteps = Math.round(value / this.step_);
-      var quantizedVal = numSteps * this.step_;
-      return quantizedVal;
-    }
-  }, {
-    key: 'updateUIForCurrentValue_',
-    value: function updateUIForCurrentValue_() {
-      var _this5 = this;
-
-      var max = this.max_,
-          min = this.min_,
-          value = this.value_;
-
-      var pctComplete = (value - min) / (max - min);
-      var translatePx = pctComplete * this.rect_.width;
-      if (this.adapter_.isRTL()) {
-        translatePx = this.rect_.width - translatePx;
-      }
-
-      var transformProp = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["b" /* getCorrectPropertyName */])(window, 'transform');
-      var transitionendEvtName = Object(__WEBPACK_IMPORTED_MODULE_2__material_animation_index__["a" /* getCorrectEventName */])(window, 'transitionend');
-
-      if (this.inTransit_) {
-        var onTransitionEnd = function onTransitionEnd() {
-          _this5.setInTransit_(false);
-          _this5.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(29);
+        var emptyClientRect = {
+            bottom: 0,
+            height: 0,
+            left: 0,
+            right: 0,
+            top: 0,
+            width: 0
         };
         };
-        this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd);
-      }
-
-      this.updateUIFrame_ = requestAnimationFrame(function () {
-        // NOTE(traviskaufman): It would be nice to use calc() here,
-        // but IE cannot handle calcs in transforms correctly.
-        // See: https://goo.gl/NC2itk
-        // Also note that the -50% offset is used to center the slider thumb.
-        _this5.adapter_.setThumbContainerStyleProperty(transformProp, 'translateX(' + translatePx + 'px) translateX(-50%)');
-        _this5.adapter_.setTrackStyleProperty(transformProp, 'scaleX(' + pctComplete + ')');
-      });
-    }
-
-    /**
-     * Toggles the active state of the slider
-     * @param {boolean} active
-     */
-
-  }, {
-    key: 'setActive_',
-    value: function setActive_(active) {
-      this.active_ = active;
-      this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].ACTIVE, this.active_);
-    }
-
-    /**
-     * Toggles the inTransit state of the slider
-     * @param {boolean} inTransit
-     */
-
-  }, {
-    key: 'setInTransit_',
-    value: function setInTransit_(inTransit) {
-      this.inTransit_ = inTransit;
-      this.toggleClass_(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].IN_TRANSIT, this.inTransit_);
-    }
-
-    /**
-     * Conditionally adds or removes a class based on shouldBePresent
-     * @param {string} className
-     * @param {boolean} shouldBePresent
-     */
-
-  }, {
-    key: 'toggleClass_',
-    value: function toggleClass_(className, shouldBePresent) {
-      if (shouldBePresent) {
-        this.adapter_.addClass(className);
-      } else {
-        this.adapter_.removeClass(className);
-      }
-    }
-  }]);
-
-  return MDCSliderFoundation;
-}(__WEBPACK_IMPORTED_MODULE_3__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSliderFoundation);
-
-/***/ }),
-/* 129 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSnackbar", function() { return MDCSnackbar; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(130);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(23);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(132);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__ = __webpack_require__(8);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSnackbarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_1__foundation__["a"]; });
-/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "util", function() { return __WEBPACK_IMPORTED_MODULE_3__util__; });
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-var SURFACE_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].SURFACE_SELECTOR,
-    LABEL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].LABEL_SELECTOR,
-    ACTION_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].ACTION_SELECTOR,
-    DISMISS_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].DISMISS_SELECTOR,
-    OPENING_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].OPENING_EVENT,
-    OPENED_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].OPENED_EVENT,
-    CLOSING_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSING_EVENT,
-    CLOSED_EVENT = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].CLOSED_EVENT;
-
-var MDCSnackbar = function (_MDCComponent) {
-  _inherits(MDCSnackbar, _MDCComponent);
-
-  _createClass(MDCSnackbar, null, [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCSnackbar(root);
-    }
-  }]);
-
-  function MDCSnackbar() {
-    var _ref;
-
-    _classCallCheck(this, MDCSnackbar);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @type {!HTMLElement} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCSnackbar.__proto__ || Object.getPrototypeOf(MDCSnackbar)).call.apply(_ref, [this].concat(args)));
-
-    _this.surfaceEl_;
-
-    /** @type {!HTMLElement} */
-    _this.labelEl_;
-
-    /** @type {!HTMLElement} */
-    _this.actionEl_;
-
-    /** @type {function(!HTMLElement, !HTMLElement=): void} */
-    _this.announce_;
-
-    /** @private {!Function} */
-    _this.handleKeyDown_;
-
-    /** @private {!Function} */
-    _this.handleSurfaceClick_;
-    return _this;
-  }
-
-  /**
-   * @param {function(): function(!HTMLElement, !HTMLElement=):void} announceFactory
-   */
-
-
-  _createClass(MDCSnackbar, [{
-    key: 'initialize',
-    value: function initialize() {
-      var announceFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {
-        return __WEBPACK_IMPORTED_MODULE_3__util__["announce"];
-      };
-
-      this.announce_ = announceFactory();
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.surfaceEl_ = /** @type {!HTMLElement} */this.root_.querySelector(SURFACE_SELECTOR);
-      this.labelEl_ = /** @type {!HTMLElement} */this.root_.querySelector(LABEL_SELECTOR);
-      this.actionEl_ = /** @type {!HTMLElement} */this.root_.querySelector(ACTION_SELECTOR);
-
-      this.handleKeyDown_ = function (evt) {
-        return _this2.foundation_.handleKeyDown(evt);
-      };
-      this.handleSurfaceClick_ = function (evt) {
-        if (_this2.isActionButton_(evt.target)) {
-          _this2.foundation_.handleActionButtonClick(evt);
-        } else if (_this2.isActionIcon_(evt.target)) {
-          _this2.foundation_.handleActionIconClick(evt);
+        var MDCChipFoundation = function(_super) {
+            __extends(MDCChipFoundation, _super);
+            function MDCChipFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCChipFoundation.defaultAdapter, adapter)) || this;
+                _this.shouldRemoveOnTrailingIconClick_ = true;
+                return _this;
+            }
+            Object.defineProperty(MDCChipFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChipFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChipFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        addClassToLeadingIcon: function addClassToLeadingIcon() {
+                            return undefined;
+                        },
+                        eventTargetHasClass: function eventTargetHasClass() {
+                            return false;
+                        },
+                        getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {
+                            return emptyClientRect;
+                        },
+                        getComputedStyleValue: function getComputedStyleValue() {
+                            return "";
+                        },
+                        getRootBoundingClientRect: function getRootBoundingClientRect() {
+                            return emptyClientRect;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        hasLeadingIcon: function hasLeadingIcon() {
+                            return false;
+                        },
+                        notifyInteraction: function notifyInteraction() {
+                            return undefined;
+                        },
+                        notifyRemoval: function notifyRemoval() {
+                            return undefined;
+                        },
+                        notifySelection: function notifySelection() {
+                            return undefined;
+                        },
+                        notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        removeClassFromLeadingIcon: function removeClassFromLeadingIcon() {
+                            return undefined;
+                        },
+                        setStyleProperty: function setStyleProperty() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCChipFoundation.prototype.isSelected = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.SELECTED);
+            };
+            MDCChipFoundation.prototype.setSelected = function(selected) {
+                if (selected) {
+                    this.adapter_.addClass(constants_1.cssClasses.SELECTED);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.SELECTED);
+                }
+                this.adapter_.notifySelection(selected);
+            };
+            MDCChipFoundation.prototype.getShouldRemoveOnTrailingIconClick = function() {
+                return this.shouldRemoveOnTrailingIconClick_;
+            };
+            MDCChipFoundation.prototype.setShouldRemoveOnTrailingIconClick = function(shouldRemove) {
+                this.shouldRemoveOnTrailingIconClick_ = shouldRemove;
+            };
+            MDCChipFoundation.prototype.getDimensions = function() {
+                var _this = this;
+                var getRootRect = function getRootRect() {
+                    return _this.adapter_.getRootBoundingClientRect();
+                };
+                var getCheckmarkRect = function getCheckmarkRect() {
+                    return _this.adapter_.getCheckmarkBoundingClientRect();
+                };
+                if (!this.adapter_.hasLeadingIcon()) {
+                    var checkmarkRect = getCheckmarkRect();
+                    if (checkmarkRect) {
+                        var rootRect = getRootRect();
+                        return {
+                            bottom: rootRect.bottom,
+                            height: rootRect.height,
+                            left: rootRect.left,
+                            right: rootRect.right,
+                            top: rootRect.top,
+                            width: rootRect.width + checkmarkRect.height
+                        };
+                    }
+                }
+                return getRootRect();
+            };
+            MDCChipFoundation.prototype.beginExit = function() {
+                this.adapter_.addClass(constants_1.cssClasses.CHIP_EXIT);
+            };
+            MDCChipFoundation.prototype.handleInteraction = function(evt) {
+                var isEnter = evt.key === "Enter" || evt.keyCode === 13;
+                if (evt.type === "click" || isEnter) {
+                    this.adapter_.notifyInteraction();
+                }
+            };
+            MDCChipFoundation.prototype.handleTransitionEnd = function(evt) {
+                var _this = this;
+                if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHIP_EXIT)) {
+                    if (evt.propertyName === "width") {
+                        this.adapter_.notifyRemoval();
+                    } else if (evt.propertyName === "opacity") {
+                        var chipWidth_1 = this.adapter_.getComputedStyleValue("width");
+                        requestAnimationFrame(function() {
+                            _this.adapter_.setStyleProperty("width", chipWidth_1);
+                            _this.adapter_.setStyleProperty("padding", "0");
+                            _this.adapter_.setStyleProperty("margin", "0");
+                            requestAnimationFrame(function() {
+                                _this.adapter_.setStyleProperty("width", "0");
+                            });
+                        });
+                    }
+                    return;
+                }
+                if (evt.propertyName !== "opacity") {
+                    return;
+                }
+                if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.LEADING_ICON) && this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) {
+                    this.adapter_.addClassToLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON);
+                } else if (this.adapter_.eventTargetHasClass(evt.target, constants_1.cssClasses.CHECKMARK) && !this.adapter_.hasClass(constants_1.cssClasses.SELECTED)) {
+                    this.adapter_.removeClassFromLeadingIcon(constants_1.cssClasses.HIDDEN_LEADING_ICON);
+                }
+            };
+            MDCChipFoundation.prototype.handleTrailingIconInteraction = function(evt) {
+                var isEnter = evt.key === "Enter" || evt.keyCode === 13;
+                evt.stopPropagation();
+                if (evt.type === "click" || isEnter) {
+                    this.adapter_.notifyTrailingIconInteraction();
+                    if (this.shouldRemoveOnTrailingIconClick_) {
+                        this.beginExit();
+                    }
+                }
+            };
+            return MDCChipFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCChipFoundation = MDCChipFoundation;
+        exports.default = MDCChipFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var constants_1 = __webpack_require__(35);
+        var foundation_1 = __webpack_require__(5);
+        var MDCList = function(_super) {
+            __extends(MDCList, _super);
+            function MDCList() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            Object.defineProperty(MDCList.prototype, "vertical", {
+                set: function set(value) {
+                    this.foundation_.setVerticalOrientation(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCList.prototype, "listElements", {
+                get: function get() {
+                    return [].slice.call(this.root_.querySelectorAll("." + constants_1.cssClasses.LIST_ITEM_CLASS));
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCList.prototype, "wrapFocus", {
+                set: function set(value) {
+                    this.foundation_.setWrapFocus(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCList.prototype, "singleSelection", {
+                set: function set(isSingleSelectionList) {
+                    this.foundation_.setSingleSelection(isSingleSelectionList);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCList.prototype, "selectedIndex", {
+                get: function get() {
+                    return this.foundation_.getSelectedIndex();
+                },
+                set: function set(index) {
+                    this.foundation_.setSelectedIndex(index);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCList.attachTo = function(root) {
+                return new MDCList(root);
+            };
+            MDCList.prototype.initialSyncWithDOM = function() {
+                this.handleClick_ = this.handleClickEvent_.bind(this);
+                this.handleKeydown_ = this.handleKeydownEvent_.bind(this);
+                this.focusInEventListener_ = this.handleFocusInEvent_.bind(this);
+                this.focusOutEventListener_ = this.handleFocusOutEvent_.bind(this);
+                this.listen("keydown", this.handleKeydown_);
+                this.listen("click", this.handleClick_);
+                this.listen("focusin", this.focusInEventListener_);
+                this.listen("focusout", this.focusOutEventListener_);
+                this.layout();
+                this.initializeListType();
+            };
+            MDCList.prototype.destroy = function() {
+                this.unlisten("keydown", this.handleKeydown_);
+                this.unlisten("click", this.handleClick_);
+                this.unlisten("focusin", this.focusInEventListener_);
+                this.unlisten("focusout", this.focusOutEventListener_);
+            };
+            MDCList.prototype.layout = function() {
+                var direction = this.root_.getAttribute(constants_1.strings.ARIA_ORIENTATION);
+                this.vertical = direction !== constants_1.strings.ARIA_ORIENTATION_HORIZONTAL;
+                [].slice.call(this.root_.querySelectorAll(".mdc-list-item:not([tabindex])")).forEach(function(el) {
+                    el.setAttribute("tabindex", "-1");
+                });
+                [].slice.call(this.root_.querySelectorAll(constants_1.strings.FOCUSABLE_CHILD_ELEMENTS)).forEach(function(el) {
+                    return el.setAttribute("tabindex", "-1");
+                });
+                this.foundation_.layout();
+            };
+            MDCList.prototype.initializeListType = function() {
+                var _this = this;
+                var checkboxListItems = this.root_.querySelectorAll(constants_1.strings.ARIA_ROLE_CHECKBOX_SELECTOR);
+                var singleSelectedListItem = this.root_.querySelector("\n      ." + constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS + ",\n      ." + constants_1.cssClasses.LIST_ITEM_SELECTED_CLASS + "\n    ");
+                var radioSelectedListItem = this.root_.querySelector(constants_1.strings.ARIA_CHECKED_RADIO_SELECTOR);
+                if (checkboxListItems.length) {
+                    var preselectedItems = this.root_.querySelectorAll(constants_1.strings.ARIA_CHECKED_CHECKBOX_SELECTOR);
+                    this.selectedIndex = [].map.call(preselectedItems, function(listItem) {
+                        return _this.listElements.indexOf(listItem);
+                    });
+                } else if (singleSelectedListItem) {
+                    if (singleSelectedListItem.classList.contains(constants_1.cssClasses.LIST_ITEM_ACTIVATED_CLASS)) {
+                        this.foundation_.setUseActivatedClass(true);
+                    }
+                    this.singleSelection = true;
+                    this.selectedIndex = this.listElements.indexOf(singleSelectedListItem);
+                } else if (radioSelectedListItem) {
+                    this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);
+                }
+            };
+            MDCList.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClassForElementIndex: function addClassForElementIndex(index, className) {
+                        var element = _this.listElements[index];
+                        if (element) {
+                            element.classList.add(className);
+                        }
+                    },
+                    focusItemAtIndex: function focusItemAtIndex(index) {
+                        var element = _this.listElements[index];
+                        if (element) {
+                            element.focus();
+                        }
+                    },
+                    getAttributeForElementIndex: function getAttributeForElementIndex(index, attr) {
+                        return _this.listElements[index].getAttribute(attr);
+                    },
+                    getFocusedElementIndex: function getFocusedElementIndex() {
+                        return _this.listElements.indexOf(document.activeElement);
+                    },
+                    getListItemCount: function getListItemCount() {
+                        return _this.listElements.length;
+                    },
+                    hasCheckboxAtIndex: function hasCheckboxAtIndex(index) {
+                        var listItem = _this.listElements[index];
+                        return !!listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR);
+                    },
+                    hasRadioAtIndex: function hasRadioAtIndex(index) {
+                        var listItem = _this.listElements[index];
+                        return !!listItem.querySelector(constants_1.strings.RADIO_SELECTOR);
+                    },
+                    isCheckboxCheckedAtIndex: function isCheckboxCheckedAtIndex(index) {
+                        var listItem = _this.listElements[index];
+                        var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_SELECTOR);
+                        return toggleEl.checked;
+                    },
+                    isFocusInsideList: function isFocusInsideList() {
+                        return _this.root_.contains(document.activeElement);
+                    },
+                    isRootFocused: function isRootFocused() {
+                        return document.activeElement === _this.root_;
+                    },
+                    notifyAction: function notifyAction(index) {
+                        _this.emit(constants_1.strings.ACTION_EVENT, {
+                            index: index
+                        }, true);
+                    },
+                    removeClassForElementIndex: function removeClassForElementIndex(index, className) {
+                        var element = _this.listElements[index];
+                        if (element) {
+                            element.classList.remove(className);
+                        }
+                    },
+                    setAttributeForElementIndex: function setAttributeForElementIndex(index, attr, value) {
+                        var element = _this.listElements[index];
+                        if (element) {
+                            element.setAttribute(attr, value);
+                        }
+                    },
+                    setCheckedCheckboxOrRadioAtIndex: function setCheckedCheckboxOrRadioAtIndex(index, isChecked) {
+                        var listItem = _this.listElements[index];
+                        var toggleEl = listItem.querySelector(constants_1.strings.CHECKBOX_RADIO_SELECTOR);
+                        toggleEl.checked = isChecked;
+                        var event = document.createEvent("Event");
+                        event.initEvent("change", true, true);
+                        toggleEl.dispatchEvent(event);
+                    },
+                    setTabIndexForListItemChildren: function setTabIndexForListItemChildren(listItemIndex, tabIndexValue) {
+                        var element = _this.listElements[listItemIndex];
+                        var listItemChildren = [].slice.call(element.querySelectorAll(constants_1.strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));
+                        listItemChildren.forEach(function(el) {
+                            return el.setAttribute("tabindex", tabIndexValue);
+                        });
+                    }
+                };
+                return new foundation_1.MDCListFoundation(adapter);
+            };
+            MDCList.prototype.getListItemIndex_ = function(evt) {
+                var eventTarget = evt.target;
+                var nearestParent = ponyfill_1.closest(eventTarget, "." + constants_1.cssClasses.LIST_ITEM_CLASS + ", ." + constants_1.cssClasses.ROOT);
+                if (nearestParent && ponyfill_1.matches(nearestParent, "." + constants_1.cssClasses.LIST_ITEM_CLASS)) {
+                    return this.listElements.indexOf(nearestParent);
+                }
+                return -1;
+            };
+            MDCList.prototype.handleFocusInEvent_ = function(evt) {
+                var index = this.getListItemIndex_(evt);
+                this.foundation_.handleFocusIn(evt, index);
+            };
+            MDCList.prototype.handleFocusOutEvent_ = function(evt) {
+                var index = this.getListItemIndex_(evt);
+                this.foundation_.handleFocusOut(evt, index);
+            };
+            MDCList.prototype.handleKeydownEvent_ = function(evt) {
+                var index = this.getListItemIndex_(evt);
+                var target = evt.target;
+                this.foundation_.handleKeydown(evt, target.classList.contains(constants_1.cssClasses.LIST_ITEM_CLASS), index);
+            };
+            MDCList.prototype.handleClickEvent_ = function(evt) {
+                var index = this.getListItemIndex_(evt);
+                var target = evt.target;
+                var toggleCheckbox = !ponyfill_1.matches(target, constants_1.strings.CHECKBOX_RADIO_SELECTOR);
+                this.foundation_.handleClick(index, toggleCheckbox);
+            };
+            return MDCList;
+        }(component_1.MDCComponent);
+        exports.MDCList = MDCList;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(101);
+        var MDCDismissibleDrawerFoundation = function(_super) {
+            __extends(MDCDismissibleDrawerFoundation, _super);
+            function MDCDismissibleDrawerFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCDismissibleDrawerFoundation.defaultAdapter, adapter)) || this;
+                _this.animationFrame_ = 0;
+                _this.animationTimer_ = 0;
+                return _this;
+            }
+            Object.defineProperty(MDCDismissibleDrawerFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDismissibleDrawerFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDismissibleDrawerFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        elementHasClass: function elementHasClass() {
+                            return false;
+                        },
+                        notifyClose: function notifyClose() {
+                            return undefined;
+                        },
+                        notifyOpen: function notifyOpen() {
+                            return undefined;
+                        },
+                        saveFocus: function saveFocus() {
+                            return undefined;
+                        },
+                        restoreFocus: function restoreFocus() {
+                            return undefined;
+                        },
+                        focusActiveNavigationItem: function focusActiveNavigationItem() {
+                            return undefined;
+                        },
+                        trapFocus: function trapFocus() {
+                            return undefined;
+                        },
+                        releaseFocus: function releaseFocus() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCDismissibleDrawerFoundation.prototype.destroy = function() {
+                if (this.animationFrame_) {
+                    cancelAnimationFrame(this.animationFrame_);
+                }
+                if (this.animationTimer_) {
+                    clearTimeout(this.animationTimer_);
+                }
+            };
+            MDCDismissibleDrawerFoundation.prototype.open = function() {
+                var _this = this;
+                if (this.isOpen() || this.isOpening() || this.isClosing()) {
+                    return;
+                }
+                this.adapter_.addClass(constants_1.cssClasses.OPEN);
+                this.adapter_.addClass(constants_1.cssClasses.ANIMATE);
+                this.runNextAnimationFrame_(function() {
+                    _this.adapter_.addClass(constants_1.cssClasses.OPENING);
+                });
+                this.adapter_.saveFocus();
+            };
+            MDCDismissibleDrawerFoundation.prototype.close = function() {
+                if (!this.isOpen() || this.isOpening() || this.isClosing()) {
+                    return;
+                }
+                this.adapter_.addClass(constants_1.cssClasses.CLOSING);
+            };
+            MDCDismissibleDrawerFoundation.prototype.isOpen = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.OPEN);
+            };
+            MDCDismissibleDrawerFoundation.prototype.isOpening = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.OPENING) || this.adapter_.hasClass(constants_1.cssClasses.ANIMATE);
+            };
+            MDCDismissibleDrawerFoundation.prototype.isClosing = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.CLOSING);
+            };
+            MDCDismissibleDrawerFoundation.prototype.handleKeydown = function(evt) {
+                var keyCode = evt.keyCode, key = evt.key;
+                var isEscape = key === "Escape" || keyCode === 27;
+                if (isEscape) {
+                    this.close();
+                }
+            };
+            MDCDismissibleDrawerFoundation.prototype.handleTransitionEnd = function(evt) {
+                var OPENING = constants_1.cssClasses.OPENING, CLOSING = constants_1.cssClasses.CLOSING, OPEN = constants_1.cssClasses.OPEN, ANIMATE = constants_1.cssClasses.ANIMATE, ROOT = constants_1.cssClasses.ROOT;
+                var isRootElement = this.isElement_(evt.target) && this.adapter_.elementHasClass(evt.target, ROOT);
+                if (!isRootElement) {
+                    return;
+                }
+                if (this.isClosing()) {
+                    this.adapter_.removeClass(OPEN);
+                    this.closed_();
+                    this.adapter_.restoreFocus();
+                    this.adapter_.notifyClose();
+                } else {
+                    this.adapter_.focusActiveNavigationItem();
+                    this.opened_();
+                    this.adapter_.notifyOpen();
+                }
+                this.adapter_.removeClass(ANIMATE);
+                this.adapter_.removeClass(OPENING);
+                this.adapter_.removeClass(CLOSING);
+            };
+            MDCDismissibleDrawerFoundation.prototype.opened_ = function() {};
+            MDCDismissibleDrawerFoundation.prototype.closed_ = function() {};
+            MDCDismissibleDrawerFoundation.prototype.runNextAnimationFrame_ = function(callback) {
+                var _this = this;
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = requestAnimationFrame(function() {
+                    _this.animationFrame_ = 0;
+                    clearTimeout(_this.animationTimer_);
+                    _this.animationTimer_ = setTimeout(callback, 0);
+                });
+            };
+            MDCDismissibleDrawerFoundation.prototype.isElement_ = function(element) {
+                return Boolean(element.classList);
+            };
+            return MDCDismissibleDrawerFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCDismissibleDrawerFoundation = MDCDismissibleDrawerFoundation;
+        exports.default = MDCDismissibleDrawerFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(16);
+        var MDCFloatingLabel = function(_super) {
+            __extends(MDCFloatingLabel, _super);
+            function MDCFloatingLabel() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCFloatingLabel.attachTo = function(root) {
+                return new MDCFloatingLabel(root);
+            };
+            MDCFloatingLabel.prototype.shake = function(shouldShake) {
+                this.foundation_.shake(shouldShake);
+            };
+            MDCFloatingLabel.prototype.float = function(shouldFloat) {
+                this.foundation_.float(shouldFloat);
+            };
+            MDCFloatingLabel.prototype.getWidth = function() {
+                return this.foundation_.getWidth();
+            };
+            MDCFloatingLabel.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    getWidth: function getWidth() {
+                        return _this.root_.scrollWidth;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    }
+                };
+                return new foundation_1.MDCFloatingLabelFoundation(adapter);
+            };
+            return MDCFloatingLabel;
+        }(component_1.MDCComponent);
+        exports.MDCFloatingLabel = MDCFloatingLabel;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(103);
+        var MDCFloatingLabelFoundation = function(_super) {
+            __extends(MDCFloatingLabelFoundation, _super);
+            function MDCFloatingLabelFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCFloatingLabelFoundation.defaultAdapter, adapter)) || this;
+                _this.shakeAnimationEndHandler_ = function() {
+                    return _this.handleShakeAnimationEnd_();
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCFloatingLabelFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFloatingLabelFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        getWidth: function getWidth() {
+                            return 0;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCFloatingLabelFoundation.prototype.init = function() {
+                this.adapter_.registerInteractionHandler("animationend", this.shakeAnimationEndHandler_);
+            };
+            MDCFloatingLabelFoundation.prototype.destroy = function() {
+                this.adapter_.deregisterInteractionHandler("animationend", this.shakeAnimationEndHandler_);
+            };
+            MDCFloatingLabelFoundation.prototype.getWidth = function() {
+                return this.adapter_.getWidth();
+            };
+            MDCFloatingLabelFoundation.prototype.shake = function(shouldShake) {
+                var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;
+                if (shouldShake) {
+                    this.adapter_.addClass(LABEL_SHAKE);
+                } else {
+                    this.adapter_.removeClass(LABEL_SHAKE);
+                }
+            };
+            MDCFloatingLabelFoundation.prototype.float = function(shouldFloat) {
+                var _a = MDCFloatingLabelFoundation.cssClasses, LABEL_FLOAT_ABOVE = _a.LABEL_FLOAT_ABOVE, LABEL_SHAKE = _a.LABEL_SHAKE;
+                if (shouldFloat) {
+                    this.adapter_.addClass(LABEL_FLOAT_ABOVE);
+                } else {
+                    this.adapter_.removeClass(LABEL_FLOAT_ABOVE);
+                    this.adapter_.removeClass(LABEL_SHAKE);
+                }
+            };
+            MDCFloatingLabelFoundation.prototype.handleShakeAnimationEnd_ = function() {
+                var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;
+                this.adapter_.removeClass(LABEL_SHAKE);
+            };
+            return MDCFloatingLabelFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCFloatingLabelFoundation = MDCFloatingLabelFoundation;
+        exports.default = MDCFloatingLabelFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(40);
+        var MDCLineRipple = function(_super) {
+            __extends(MDCLineRipple, _super);
+            function MDCLineRipple() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCLineRipple.attachTo = function(root) {
+                return new MDCLineRipple(root);
+            };
+            MDCLineRipple.prototype.activate = function() {
+                this.foundation_.activate();
+            };
+            MDCLineRipple.prototype.deactivate = function() {
+                this.foundation_.deactivate();
+            };
+            MDCLineRipple.prototype.setRippleCenter = function(xCoordinate) {
+                this.foundation_.setRippleCenter(xCoordinate);
+            };
+            MDCLineRipple.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    setStyle: function setStyle(propertyName, value) {
+                        return _this.root_.style.setProperty(propertyName, value);
+                    },
+                    registerEventHandler: function registerEventHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterEventHandler: function deregisterEventHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    }
+                };
+                return new foundation_1.MDCLineRippleFoundation(adapter);
+            };
+            return MDCLineRipple;
+        }(component_1.MDCComponent);
+        exports.MDCLineRipple = MDCLineRipple;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            MENU_SELECTED_LIST_ITEM: "mdc-menu-item--selected",
+            MENU_SELECTION_GROUP: "mdc-menu__selection-group",
+            ROOT: "mdc-menu"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ARIA_SELECTED_ATTR: "aria-selected",
+            CHECKBOX_SELECTOR: 'input[type="checkbox"]',
+            LIST_SELECTOR: ".mdc-list",
+            SELECTED_EVENT: "MDCMenu:selected"
+        };
+        exports.strings = strings;
+        var numbers = {
+            FOCUS_ROOT_INDEX: -1
+        };
+        exports.numbers = numbers;
+        var DefaultFocusState;
+        (function(DefaultFocusState) {
+            DefaultFocusState[DefaultFocusState["NONE"] = 0] = "NONE";
+            DefaultFocusState[DefaultFocusState["LIST_ROOT"] = 1] = "LIST_ROOT";
+            DefaultFocusState[DefaultFocusState["FIRST_ITEM"] = 2] = "FIRST_ITEM";
+            DefaultFocusState[DefaultFocusState["LAST_ITEM"] = 3] = "LAST_ITEM";
+        })(DefaultFocusState || (DefaultFocusState = {}));
+        exports.DefaultFocusState = DefaultFocusState;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(16);
+        var constants_1 = __webpack_require__(46);
+        var foundation_2 = __webpack_require__(47);
+        var MDCNotchedOutline = function(_super) {
+            __extends(MDCNotchedOutline, _super);
+            function MDCNotchedOutline() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCNotchedOutline.attachTo = function(root) {
+                return new MDCNotchedOutline(root);
+            };
+            MDCNotchedOutline.prototype.initialSyncWithDOM = function() {
+                this.notchElement_ = this.root_.querySelector(constants_1.strings.NOTCH_ELEMENT_SELECTOR);
+                var label = this.root_.querySelector("." + foundation_1.MDCFloatingLabelFoundation.cssClasses.ROOT);
+                if (label) {
+                    label.style.transitionDuration = "0s";
+                    this.root_.classList.add(constants_1.cssClasses.OUTLINE_UPGRADED);
+                    requestAnimationFrame(function() {
+                        label.style.transitionDuration = "";
+                    });
+                } else {
+                    this.root_.classList.add(constants_1.cssClasses.NO_LABEL);
+                }
+            };
+            MDCNotchedOutline.prototype.notch = function(notchWidth) {
+                this.foundation_.notch(notchWidth);
+            };
+            MDCNotchedOutline.prototype.closeNotch = function() {
+                this.foundation_.closeNotch();
+            };
+            MDCNotchedOutline.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setNotchWidthProperty: function setNotchWidthProperty(width) {
+                        return _this.notchElement_.style.setProperty("width", width + "px");
+                    },
+                    removeNotchWidthProperty: function removeNotchWidthProperty() {
+                        return _this.notchElement_.style.removeProperty("width");
+                    }
+                };
+                return new foundation_2.MDCNotchedOutlineFoundation(adapter);
+            };
+            return MDCNotchedOutline;
+        }(component_1.MDCComponent);
+        exports.MDCNotchedOutline = MDCNotchedOutline;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            CLOSING: "mdc-snackbar--closing",
+            OPEN: "mdc-snackbar--open",
+            OPENING: "mdc-snackbar--opening"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ACTION_SELECTOR: ".mdc-snackbar__action",
+            ARIA_LIVE_LABEL_TEXT_ATTR: "data-mdc-snackbar-label-text",
+            CLOSED_EVENT: "MDCSnackbar:closed",
+            CLOSING_EVENT: "MDCSnackbar:closing",
+            DISMISS_SELECTOR: ".mdc-snackbar__dismiss",
+            LABEL_SELECTOR: ".mdc-snackbar__label",
+            OPENED_EVENT: "MDCSnackbar:opened",
+            OPENING_EVENT: "MDCSnackbar:opening",
+            REASON_ACTION: "action",
+            REASON_DISMISS: "dismiss",
+            SURFACE_SELECTOR: ".mdc-snackbar__surface"
+        };
+        exports.strings = strings;
+        var numbers = {
+            DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5e3,
+            MAX_AUTO_DISMISS_TIMEOUT_MS: 1e4,
+            MIN_AUTO_DISMISS_TIMEOUT_MS: 4e3,
+            SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,
+            SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,
+            ARIA_LIVE_DELAY_MS: 1e3
+        };
+        exports.numbers = numbers;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var MDCTabScrollerRTL = function() {
+            function MDCTabScrollerRTL(adapter) {
+                this.adapter_ = adapter;
+            }
+            return MDCTabScrollerRTL;
+        }();
+        exports.MDCTabScrollerRTL = MDCTabScrollerRTL;
+        exports.default = MDCTabScrollerRTL;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(145);
+        var MDCTabFoundation = function(_super) {
+            __extends(MDCTabFoundation, _super);
+            function MDCTabFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCTabFoundation.defaultAdapter, adapter)) || this;
+                _this.focusOnActivate_ = true;
+                return _this;
+            }
+            Object.defineProperty(MDCTabFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        },
+                        activateIndicator: function activateIndicator() {
+                            return undefined;
+                        },
+                        deactivateIndicator: function deactivateIndicator() {
+                            return undefined;
+                        },
+                        notifyInteracted: function notifyInteracted() {
+                            return undefined;
+                        },
+                        getOffsetLeft: function getOffsetLeft() {
+                            return 0;
+                        },
+                        getOffsetWidth: function getOffsetWidth() {
+                            return 0;
+                        },
+                        getContentOffsetLeft: function getContentOffsetLeft() {
+                            return 0;
+                        },
+                        getContentOffsetWidth: function getContentOffsetWidth() {
+                            return 0;
+                        },
+                        focus: function focus() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTabFoundation.prototype.handleClick = function() {
+                this.adapter_.notifyInteracted();
+            };
+            MDCTabFoundation.prototype.isActive = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.ACTIVE);
+            };
+            MDCTabFoundation.prototype.setFocusOnActivate = function(focusOnActivate) {
+                this.focusOnActivate_ = focusOnActivate;
+            };
+            MDCTabFoundation.prototype.activate = function(previousIndicatorClientRect) {
+                this.adapter_.addClass(constants_1.cssClasses.ACTIVE);
+                this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, "true");
+                this.adapter_.setAttr(constants_1.strings.TABINDEX, "0");
+                this.adapter_.activateIndicator(previousIndicatorClientRect);
+                if (this.focusOnActivate_) {
+                    this.adapter_.focus();
+                }
+            };
+            MDCTabFoundation.prototype.deactivate = function() {
+                if (!this.isActive()) {
+                    return;
+                }
+                this.adapter_.removeClass(constants_1.cssClasses.ACTIVE);
+                this.adapter_.setAttr(constants_1.strings.ARIA_SELECTED, "false");
+                this.adapter_.setAttr(constants_1.strings.TABINDEX, "-1");
+                this.adapter_.deactivateIndicator();
+            };
+            MDCTabFoundation.prototype.computeDimensions = function() {
+                var rootWidth = this.adapter_.getOffsetWidth();
+                var rootLeft = this.adapter_.getOffsetLeft();
+                var contentWidth = this.adapter_.getContentOffsetWidth();
+                var contentLeft = this.adapter_.getContentOffsetLeft();
+                return {
+                    contentLeft: rootLeft + contentLeft,
+                    contentRight: rootLeft + contentLeft + contentWidth,
+                    rootLeft: rootLeft,
+                    rootRight: rootLeft + rootWidth
+                };
+            };
+            return MDCTabFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTabFoundation = MDCTabFoundation;
+        exports.default = MDCTabFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(152);
+        var MDCTextFieldCharacterCounterFoundation = function(_super) {
+            __extends(MDCTextFieldCharacterCounterFoundation, _super);
+            function MDCTextFieldCharacterCounterFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCTextFieldCharacterCounterFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldCharacterCounterFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        setContent: function setContent() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldCharacterCounterFoundation.prototype.setCounterValue = function(currentLength, maxLength) {
+                currentLength = Math.min(currentLength, maxLength);
+                this.adapter_.setContent(currentLength + " / " + maxLength);
+            };
+            return MDCTextFieldCharacterCounterFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTextFieldCharacterCounterFoundation = MDCTextFieldCharacterCounterFoundation;
+        exports.default = MDCTextFieldCharacterCounterFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(153);
+        var MDCTextFieldHelperTextFoundation = function(_super) {
+            __extends(MDCTextFieldHelperTextFoundation, _super);
+            function MDCTextFieldHelperTextFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCTextFieldHelperTextFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCTextFieldHelperTextFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldHelperTextFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldHelperTextFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        },
+                        removeAttr: function removeAttr() {
+                            return undefined;
+                        },
+                        setContent: function setContent() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldHelperTextFoundation.prototype.setContent = function(content) {
+                this.adapter_.setContent(content);
+            };
+            MDCTextFieldHelperTextFoundation.prototype.setPersistent = function(isPersistent) {
+                if (isPersistent) {
+                    this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                }
+            };
+            MDCTextFieldHelperTextFoundation.prototype.setValidation = function(isValidation) {
+                if (isValidation) {
+                    this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                }
+            };
+            MDCTextFieldHelperTextFoundation.prototype.showToScreenReader = function() {
+                this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN);
+            };
+            MDCTextFieldHelperTextFoundation.prototype.setValidity = function(inputIsValid) {
+                var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;
+                if (validationMsgNeedsDisplay) {
+                    this.adapter_.setAttr(constants_1.strings.ROLE, "alert");
+                } else {
+                    this.adapter_.removeAttr(constants_1.strings.ROLE);
+                }
+                if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
+                    this.hide_();
+                }
+            };
+            MDCTextFieldHelperTextFoundation.prototype.hide_ = function() {
+                this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, "true");
+            };
+            return MDCTextFieldHelperTextFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTextFieldHelperTextFoundation = MDCTextFieldHelperTextFoundation;
+        exports.default = MDCTextFieldHelperTextFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(7);
+        var foundation_1 = __webpack_require__(26);
+        var INITIAL_VALUE = 0;
+        var MDCTopAppBarFoundation = function(_super) {
+            __extends(MDCTopAppBarFoundation, _super);
+            function MDCTopAppBarFoundation(adapter) {
+                var _this = _super.call(this, adapter) || this;
+                _this.wasDocked_ = true;
+                _this.isDockedShowing_ = true;
+                _this.currentAppBarOffsetTop_ = 0;
+                _this.isCurrentlyBeingResized_ = false;
+                _this.resizeThrottleId_ = INITIAL_VALUE;
+                _this.resizeDebounceId_ = INITIAL_VALUE;
+                _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY();
+                _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight();
+                _this.scrollHandler_ = function() {
+                    return _this.topAppBarScrollHandler_();
+                };
+                _this.resizeHandler_ = function() {
+                    return _this.topAppBarResizeHandler_();
+                };
+                return _this;
+            }
+            MDCTopAppBarFoundation.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+                this.adapter_.setStyle("top", "");
+            };
+            MDCTopAppBarFoundation.prototype.checkForUpdate_ = function() {
+                var offscreenBoundaryTop = -this.topAppBarHeight_;
+                var hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0;
+                var hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop;
+                var partiallyShowing = hasAnyPixelsOffscreen && hasAnyPixelsOnscreen;
+                if (partiallyShowing) {
+                    this.wasDocked_ = false;
+                } else {
+                    if (!this.wasDocked_) {
+                        this.wasDocked_ = true;
+                        return true;
+                    } else if (this.isDockedShowing_ !== hasAnyPixelsOnscreen) {
+                        this.isDockedShowing_ = hasAnyPixelsOnscreen;
+                        return true;
+                    }
+                }
+                return partiallyShowing;
+            };
+            MDCTopAppBarFoundation.prototype.moveTopAppBar_ = function() {
+                if (this.checkForUpdate_()) {
+                    var offset = this.currentAppBarOffsetTop_;
+                    if (Math.abs(offset) >= this.topAppBarHeight_) {
+                        offset = -constants_1.numbers.MAX_TOP_APP_BAR_HEIGHT;
+                    }
+                    this.adapter_.setStyle("top", offset + "px");
+                }
+            };
+            MDCTopAppBarFoundation.prototype.topAppBarScrollHandler_ = function() {
+                var currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0);
+                var diff = currentScrollPosition - this.lastScrollPosition_;
+                this.lastScrollPosition_ = currentScrollPosition;
+                if (!this.isCurrentlyBeingResized_) {
+                    this.currentAppBarOffsetTop_ -= diff;
+                    if (this.currentAppBarOffsetTop_ > 0) {
+                        this.currentAppBarOffsetTop_ = 0;
+                    } else if (Math.abs(this.currentAppBarOffsetTop_) > this.topAppBarHeight_) {
+                        this.currentAppBarOffsetTop_ = -this.topAppBarHeight_;
+                    }
+                    this.moveTopAppBar_();
+                }
+            };
+            MDCTopAppBarFoundation.prototype.topAppBarResizeHandler_ = function() {
+                var _this = this;
+                if (!this.resizeThrottleId_) {
+                    this.resizeThrottleId_ = setTimeout(function() {
+                        _this.resizeThrottleId_ = INITIAL_VALUE;
+                        _this.throttledResizeHandler_();
+                    }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
+                }
+                this.isCurrentlyBeingResized_ = true;
+                if (this.resizeDebounceId_) {
+                    clearTimeout(this.resizeDebounceId_);
+                }
+                this.resizeDebounceId_ = setTimeout(function() {
+                    _this.topAppBarScrollHandler_();
+                    _this.isCurrentlyBeingResized_ = false;
+                    _this.resizeDebounceId_ = INITIAL_VALUE;
+                }, constants_1.numbers.DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
+            };
+            MDCTopAppBarFoundation.prototype.throttledResizeHandler_ = function() {
+                var currentHeight = this.adapter_.getTopAppBarHeight();
+                if (this.topAppBarHeight_ !== currentHeight) {
+                    this.wasDocked_ = false;
+                    this.currentAppBarOffsetTop_ -= this.topAppBarHeight_ - currentHeight;
+                    this.topAppBarHeight_ = currentHeight;
+                }
+                this.topAppBarScrollHandler_();
+            };
+            return MDCTopAppBarFoundation;
+        }(foundation_1.MDCTopAppBarBaseFoundation);
+        exports.MDCTopAppBarFoundation = MDCTopAppBarFoundation;
+        exports.default = MDCTopAppBarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(7);
+        var MDCTopAppBarBaseFoundation = function(_super) {
+            __extends(MDCTopAppBarBaseFoundation, _super);
+            function MDCTopAppBarBaseFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCTopAppBarBaseFoundation.defaultAdapter, adapter)) || this;
+                _this.navClickHandler_ = function() {
+                    return _this.adapter_.notifyNavigationIconClicked();
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCTopAppBarBaseFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTopAppBarBaseFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTopAppBarBaseFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTopAppBarBaseFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        setStyle: function setStyle() {
+                            return undefined;
+                        },
+                        getTopAppBarHeight: function getTopAppBarHeight() {
+                            return 0;
+                        },
+                        registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler() {
+                            return undefined;
+                        },
+                        notifyNavigationIconClicked: function notifyNavigationIconClicked() {
+                            return undefined;
+                        },
+                        registerScrollHandler: function registerScrollHandler() {
+                            return undefined;
+                        },
+                        deregisterScrollHandler: function deregisterScrollHandler() {
+                            return undefined;
+                        },
+                        registerResizeHandler: function registerResizeHandler() {
+                            return undefined;
+                        },
+                        deregisterResizeHandler: function deregisterResizeHandler() {
+                            return undefined;
+                        },
+                        getViewportScrollY: function getViewportScrollY() {
+                            return 0;
+                        },
+                        getTotalActionItems: function getTotalActionItems() {
+                            return 0;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTopAppBarBaseFoundation.prototype.init = function() {
+                this.initScrollHandler();
+                this.initResizeHandler_();
+                this.adapter_.registerNavigationIconInteractionHandler("click", this.navClickHandler_);
+            };
+            MDCTopAppBarBaseFoundation.prototype.destroy = function() {
+                this.destroyScrollHandler();
+                this.destroyResizeHandler_();
+                this.adapter_.deregisterNavigationIconInteractionHandler("click", this.navClickHandler_);
+            };
+            MDCTopAppBarBaseFoundation.prototype.initScrollHandler = function() {
+                if (this.scrollHandler_) {
+                    this.adapter_.registerScrollHandler(this.scrollHandler_);
+                }
+            };
+            MDCTopAppBarBaseFoundation.prototype.destroyScrollHandler = function() {
+                if (this.scrollHandler_) {
+                    this.adapter_.deregisterScrollHandler(this.scrollHandler_);
+                }
+            };
+            MDCTopAppBarBaseFoundation.prototype.initResizeHandler_ = function() {
+                if (this.resizeHandler_) {
+                    this.adapter_.registerResizeHandler(this.resizeHandler_);
+                }
+            };
+            MDCTopAppBarBaseFoundation.prototype.destroyResizeHandler_ = function() {
+                if (this.resizeHandler_) {
+                    this.adapter_.deregisterResizeHandler(this.resizeHandler_);
+                }
+            };
+            return MDCTopAppBarBaseFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTopAppBarBaseFoundation = MDCTopAppBarBaseFoundation;
+        exports.default = MDCTopAppBarBaseFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(84);
+        var MDCCheckboxFoundation = function(_super) {
+            __extends(MDCCheckboxFoundation, _super);
+            function MDCCheckboxFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCCheckboxFoundation.defaultAdapter, adapter)) || this;
+                _this.currentCheckState_ = constants_1.strings.TRANSITION_STATE_INIT;
+                _this.currentAnimationClass_ = "";
+                _this.animEndLatchTimer_ = 0;
+                _this.enableAnimationEndHandler_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCCheckboxFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckboxFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckboxFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckboxFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        forceLayout: function forceLayout() {
+                            return undefined;
+                        },
+                        hasNativeControl: function hasNativeControl() {
+                            return false;
+                        },
+                        isAttachedToDOM: function isAttachedToDOM() {
+                            return false;
+                        },
+                        isChecked: function isChecked() {
+                            return false;
+                        },
+                        isIndeterminate: function isIndeterminate() {
+                            return false;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        removeNativeControlAttr: function removeNativeControlAttr() {
+                            return undefined;
+                        },
+                        setNativeControlAttr: function setNativeControlAttr() {
+                            return undefined;
+                        },
+                        setNativeControlDisabled: function setNativeControlDisabled() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCCheckboxFoundation.prototype.init = function() {
+                this.currentCheckState_ = this.determineCheckState_();
+                this.updateAriaChecked_();
+                this.adapter_.addClass(constants_1.cssClasses.UPGRADED);
+            };
+            MDCCheckboxFoundation.prototype.destroy = function() {
+                clearTimeout(this.animEndLatchTimer_);
+            };
+            MDCCheckboxFoundation.prototype.setDisabled = function(disabled) {
+                this.adapter_.setNativeControlDisabled(disabled);
+                if (disabled) {
+                    this.adapter_.addClass(constants_1.cssClasses.DISABLED);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.DISABLED);
+                }
+            };
+            MDCCheckboxFoundation.prototype.handleAnimationEnd = function() {
+                var _this = this;
+                if (!this.enableAnimationEndHandler_) {
+                    return;
+                }
+                clearTimeout(this.animEndLatchTimer_);
+                this.animEndLatchTimer_ = setTimeout(function() {
+                    _this.adapter_.removeClass(_this.currentAnimationClass_);
+                    _this.enableAnimationEndHandler_ = false;
+                }, constants_1.numbers.ANIM_END_LATCH_MS);
+            };
+            MDCCheckboxFoundation.prototype.handleChange = function() {
+                this.transitionCheckState_();
+            };
+            MDCCheckboxFoundation.prototype.transitionCheckState_ = function() {
+                if (!this.adapter_.hasNativeControl()) {
+                    return;
+                }
+                var oldState = this.currentCheckState_;
+                var newState = this.determineCheckState_();
+                if (oldState === newState) {
+                    return;
+                }
+                this.updateAriaChecked_();
+                var TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;
+                var SELECTED = constants_1.cssClasses.SELECTED;
+                if (newState === TRANSITION_STATE_UNCHECKED) {
+                    this.adapter_.removeClass(SELECTED);
+                } else {
+                    this.adapter_.addClass(SELECTED);
+                }
+                if (this.currentAnimationClass_.length > 0) {
+                    clearTimeout(this.animEndLatchTimer_);
+                    this.adapter_.forceLayout();
+                    this.adapter_.removeClass(this.currentAnimationClass_);
+                }
+                this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);
+                this.currentCheckState_ = newState;
+                if (this.adapter_.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {
+                    this.adapter_.addClass(this.currentAnimationClass_);
+                    this.enableAnimationEndHandler_ = true;
+                }
+            };
+            MDCCheckboxFoundation.prototype.determineCheckState_ = function() {
+                var TRANSITION_STATE_INDETERMINATE = constants_1.strings.TRANSITION_STATE_INDETERMINATE, TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;
+                if (this.adapter_.isIndeterminate()) {
+                    return TRANSITION_STATE_INDETERMINATE;
+                }
+                return this.adapter_.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;
+            };
+            MDCCheckboxFoundation.prototype.getTransitionAnimationClass_ = function(oldState, newState) {
+                var TRANSITION_STATE_INIT = constants_1.strings.TRANSITION_STATE_INIT, TRANSITION_STATE_CHECKED = constants_1.strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = constants_1.strings.TRANSITION_STATE_UNCHECKED;
+                var _a = MDCCheckboxFoundation.cssClasses, ANIM_UNCHECKED_CHECKED = _a.ANIM_UNCHECKED_CHECKED, ANIM_UNCHECKED_INDETERMINATE = _a.ANIM_UNCHECKED_INDETERMINATE, ANIM_CHECKED_UNCHECKED = _a.ANIM_CHECKED_UNCHECKED, ANIM_CHECKED_INDETERMINATE = _a.ANIM_CHECKED_INDETERMINATE, ANIM_INDETERMINATE_CHECKED = _a.ANIM_INDETERMINATE_CHECKED, ANIM_INDETERMINATE_UNCHECKED = _a.ANIM_INDETERMINATE_UNCHECKED;
+                switch (oldState) {
+                  case TRANSITION_STATE_INIT:
+                    if (newState === TRANSITION_STATE_UNCHECKED) {
+                        return "";
+                    }
+                    return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
+
+                  case TRANSITION_STATE_UNCHECKED:
+                    return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;
+
+                  case TRANSITION_STATE_CHECKED:
+                    return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;
+
+                  default:
+                    return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
+                }
+            };
+            MDCCheckboxFoundation.prototype.updateAriaChecked_ = function() {
+                if (this.adapter_.isIndeterminate()) {
+                    this.adapter_.setNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR, constants_1.strings.ARIA_CHECKED_INDETERMINATE_VALUE);
+                } else {
+                    this.adapter_.removeNativeControlAttr(constants_1.strings.ARIA_CHECKED_ATTR);
+                }
+            };
+            return MDCCheckboxFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCCheckboxFoundation = MDCCheckboxFoundation;
+        exports.default = MDCCheckboxFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var constants_1 = __webpack_require__(29);
+        var foundation_2 = __webpack_require__(12);
+        var INTERACTION_EVENTS = [ "click", "keydown" ];
+        var MDCChip = function(_super) {
+            __extends(MDCChip, _super);
+            function MDCChip() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            Object.defineProperty(MDCChip.prototype, "selected", {
+                get: function get() {
+                    return this.foundation_.isSelected();
+                },
+                set: function set(selected) {
+                    this.foundation_.setSelected(selected);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChip.prototype, "shouldRemoveOnTrailingIconClick", {
+                get: function get() {
+                    return this.foundation_.getShouldRemoveOnTrailingIconClick();
+                },
+                set: function set(shouldRemove) {
+                    this.foundation_.setShouldRemoveOnTrailingIconClick(shouldRemove);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChip.prototype, "ripple", {
+                get: function get() {
+                    return this.ripple_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChip.prototype, "id", {
+                get: function get() {
+                    return this.root_.id;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCChip.attachTo = function(root) {
+                return new MDCChip(root);
+            };
+            MDCChip.prototype.initialize = function(rippleFactory) {
+                var _this = this;
+                if (rippleFactory === void 0) {
+                    rippleFactory = function rippleFactory(el, foundation) {
+                        return new component_2.MDCRipple(el, foundation);
+                    };
+                }
+                this.leadingIcon_ = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR);
+                this.trailingIcon_ = this.root_.querySelector(constants_1.strings.TRAILING_ICON_SELECTOR);
+                this.checkmark_ = this.root_.querySelector(constants_1.strings.CHECKMARK_SELECTOR);
+                var rippleAdapter = __assign({}, component_2.MDCRipple.createAdapter(this), {
+                    computeBoundingRect: function computeBoundingRect() {
+                        return _this.foundation_.getDimensions();
+                    }
+                });
+                this.ripple_ = rippleFactory(this.root_, new foundation_1.MDCRippleFoundation(rippleAdapter));
+            };
+            MDCChip.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleInteraction_ = function(evt) {
+                    return _this.foundation_.handleInteraction(evt);
+                };
+                this.handleTransitionEnd_ = function(evt) {
+                    return _this.foundation_.handleTransitionEnd(evt);
+                };
+                this.handleTrailingIconInteraction_ = function(evt) {
+                    return _this.foundation_.handleTrailingIconInteraction(evt);
+                };
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.listen(evtType, _this.handleInteraction_);
+                });
+                this.listen("transitionend", this.handleTransitionEnd_);
+                if (this.trailingIcon_) {
+                    INTERACTION_EVENTS.forEach(function(evtType) {
+                        _this.trailingIcon_.addEventListener(evtType, _this.handleTrailingIconInteraction_);
+                    });
+                }
+            };
+            MDCChip.prototype.destroy = function() {
+                var _this = this;
+                this.ripple_.destroy();
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.unlisten(evtType, _this.handleInteraction_);
+                });
+                this.unlisten("transitionend", this.handleTransitionEnd_);
+                if (this.trailingIcon_) {
+                    INTERACTION_EVENTS.forEach(function(evtType) {
+                        _this.trailingIcon_.removeEventListener(evtType, _this.handleTrailingIconInteraction_);
+                    });
+                }
+                _super.prototype.destroy.call(this);
+            };
+            MDCChip.prototype.beginExit = function() {
+                this.foundation_.beginExit();
+            };
+            MDCChip.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    addClassToLeadingIcon: function addClassToLeadingIcon(className) {
+                        if (_this.leadingIcon_) {
+                            _this.leadingIcon_.classList.add(className);
+                        }
+                    },
+                    eventTargetHasClass: function eventTargetHasClass(target, className) {
+                        return target ? target.classList.contains(className) : false;
+                    },
+                    getCheckmarkBoundingClientRect: function getCheckmarkBoundingClientRect() {
+                        return _this.checkmark_ ? _this.checkmark_.getBoundingClientRect() : null;
+                    },
+                    getComputedStyleValue: function getComputedStyleValue(propertyName) {
+                        return window.getComputedStyle(_this.root_).getPropertyValue(propertyName);
+                    },
+                    getRootBoundingClientRect: function getRootBoundingClientRect() {
+                        return _this.root_.getBoundingClientRect();
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    hasLeadingIcon: function hasLeadingIcon() {
+                        return !!_this.leadingIcon_;
+                    },
+                    notifyInteraction: function notifyInteraction() {
+                        return _this.emit(constants_1.strings.INTERACTION_EVENT, {
+                            chipId: _this.id
+                        }, true);
+                    },
+                    notifyRemoval: function notifyRemoval() {
+                        return _this.emit(constants_1.strings.REMOVAL_EVENT, {
+                            chipId: _this.id,
+                            root: _this.root_
+                        }, true);
+                    },
+                    notifySelection: function notifySelection(selected) {
+                        return _this.emit(constants_1.strings.SELECTION_EVENT, {
+                            chipId: _this.id,
+                            selected: selected
+                        }, true);
+                    },
+                    notifyTrailingIconInteraction: function notifyTrailingIconInteraction() {
+                        return _this.emit(constants_1.strings.TRAILING_ICON_INTERACTION_EVENT, {
+                            chipId: _this.id
+                        }, true);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    removeClassFromLeadingIcon: function removeClassFromLeadingIcon(className) {
+                        if (_this.leadingIcon_) {
+                            _this.leadingIcon_.classList.remove(className);
+                        }
+                    },
+                    setStyleProperty: function setStyleProperty(propertyName, value) {
+                        return _this.root_.style.setProperty(propertyName, value);
+                    }
+                };
+                return new foundation_2.MDCChipFoundation(adapter);
+            };
+            return MDCChip;
+        }(component_1.MDCComponent);
+        exports.MDCChip = MDCChip;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.strings = {
+            CHECKMARK_SELECTOR: ".mdc-chip__checkmark",
+            ENTRY_ANIMATION_NAME: "mdc-chip-entry",
+            INTERACTION_EVENT: "MDCChip:interaction",
+            LEADING_ICON_SELECTOR: ".mdc-chip__icon--leading",
+            REMOVAL_EVENT: "MDCChip:removal",
+            SELECTION_EVENT: "MDCChip:selection",
+            TRAILING_ICON_INTERACTION_EVENT: "MDCChip:trailingIconInteraction",
+            TRAILING_ICON_SELECTOR: ".mdc-chip__icon--trailing"
+        };
+        exports.cssClasses = {
+            CHECKMARK: "mdc-chip__checkmark",
+            CHIP_EXIT: "mdc-chip--exit",
+            HIDDEN_LEADING_ICON: "mdc-chip__icon--leading-hidden",
+            LEADING_ICON: "mdc-chip__icon--leading",
+            SELECTED: "mdc-chip--selected",
+            TRAILING_ICON: "mdc-chip__icon--trailing"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(89);
+        var MDCChipSetFoundation = function(_super) {
+            __extends(MDCChipSetFoundation, _super);
+            function MDCChipSetFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCChipSetFoundation.defaultAdapter, adapter)) || this;
+                _this.selectedChipIds_ = [];
+                return _this;
+            }
+            Object.defineProperty(MDCChipSetFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChipSetFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChipSetFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        removeChip: function removeChip() {
+                            return undefined;
+                        },
+                        setSelected: function setSelected() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCChipSetFoundation.prototype.getSelectedChipIds = function() {
+                return this.selectedChipIds_.slice();
+            };
+            MDCChipSetFoundation.prototype.select = function(chipId) {
+                if (this.selectedChipIds_.indexOf(chipId) >= 0) {
+                    return;
+                }
+                if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) && this.selectedChipIds_.length > 0) {
+                    var previouslySelectedChip = this.selectedChipIds_[0];
+                    this.selectedChipIds_.length = 0;
+                    this.adapter_.setSelected(previouslySelectedChip, false);
+                }
+                this.selectedChipIds_.push(chipId);
+                this.adapter_.setSelected(chipId, true);
+            };
+            MDCChipSetFoundation.prototype.handleChipInteraction = function(chipId) {
+                if (this.adapter_.hasClass(constants_1.cssClasses.CHOICE) || this.adapter_.hasClass(constants_1.cssClasses.FILTER)) {
+                    this.toggleSelect_(chipId);
+                }
+            };
+            MDCChipSetFoundation.prototype.handleChipSelection = function(chipId, selected) {
+                var chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0;
+                if (selected && !chipIsSelected) {
+                    this.select(chipId);
+                } else if (!selected && chipIsSelected) {
+                    this.deselect_(chipId);
+                }
+            };
+            MDCChipSetFoundation.prototype.handleChipRemoval = function(chipId) {
+                this.deselect_(chipId);
+                this.adapter_.removeChip(chipId);
+            };
+            MDCChipSetFoundation.prototype.deselect_ = function(chipId) {
+                var index = this.selectedChipIds_.indexOf(chipId);
+                if (index >= 0) {
+                    this.selectedChipIds_.splice(index, 1);
+                    this.adapter_.setSelected(chipId, false);
+                }
+            };
+            MDCChipSetFoundation.prototype.toggleSelect_ = function(chipId) {
+                if (this.selectedChipIds_.indexOf(chipId) >= 0) {
+                    this.deselect_(chipId);
+                } else {
+                    this.select(chipId);
+                }
+            };
+            return MDCChipSetFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCChipSetFoundation = MDCChipSetFoundation;
+        exports.default = MDCChipSetFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __importDefault = this && this.__importDefault || function(mod) {
+            return mod && mod.__esModule ? mod : {
+                default: mod
+            };
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var focus_trap_1 = __importDefault(__webpack_require__(91));
+        function createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) {
+            if (focusTrapFactory === void 0) {
+                focusTrapFactory = focus_trap_1.default;
+            }
+            return focusTrapFactory(surfaceEl, {
+                clickOutsideDeactivates: true,
+                escapeDeactivates: false,
+                initialFocus: initialFocusEl
+            });
         }
         }
-      };
-
-      this.registerKeyDownHandler_(this.handleKeyDown_);
-      this.registerSurfaceClickHandler_(this.handleSurfaceClick_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCSnackbar.prototype.__proto__ || Object.getPrototypeOf(MDCSnackbar.prototype), 'destroy', this).call(this);
-      this.deregisterKeyDownHandler_(this.handleKeyDown_);
-      this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);
-    }
-  }, {
-    key: 'open',
-    value: function open() {
-      this.foundation_.open();
-    }
-
-    /**
-     * @param {string=} reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the
-     *     `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom
-     *     client-specific values may also be used if desired.
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
-
-      this.foundation_.close(reason);
-    }
-
-    /**
-     * @return {!MDCSnackbarFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      /* eslint brace-style: "off" */
-      return new __WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        announce: function announce() {
-          return _this3.announce_(_this3.labelEl_);
-        },
-        notifyOpening: function notifyOpening() {
-          return _this3.emit(OPENING_EVENT, {});
-        },
-        notifyOpened: function notifyOpened() {
-          return _this3.emit(OPENED_EVENT, {});
-        },
-        notifyClosing: function notifyClosing(reason) {
-          return _this3.emit(CLOSING_EVENT, reason ? { reason: reason } : {});
-        },
-        notifyClosed: function notifyClosed(reason) {
-          return _this3.emit(CLOSED_EVENT, reason ? { reason: reason } : {});
+        exports.createFocusTrapInstance = createFocusTrapInstance;
+        function isScrollable(el) {
+            return el ? el.scrollHeight > el.offsetHeight : false;
         }
         }
-      });
-    }
-
-    /**
-     * @return {number}
-     */
-
-  }, {
-    key: 'registerKeyDownHandler_',
-
-
-    /**
-     * @param {!Function} handler
-     * @private
-     */
-    value: function registerKeyDownHandler_(handler) {
-      this.listen('keydown', handler);
-    }
-
-    /**
-     * @param {!Function} handler
-     * @private
-     */
-
-  }, {
-    key: 'deregisterKeyDownHandler_',
-    value: function deregisterKeyDownHandler_(handler) {
-      this.unlisten('keydown', handler);
-    }
-
-    /**
-     * @param {!Function} handler
-     * @private
-     */
-
-  }, {
-    key: 'registerSurfaceClickHandler_',
-    value: function registerSurfaceClickHandler_(handler) {
-      this.surfaceEl_.addEventListener('click', handler);
-    }
-
-    /**
-     * @param {!Function} handler
-     * @private
-     */
-
-  }, {
-    key: 'deregisterSurfaceClickHandler_',
-    value: function deregisterSurfaceClickHandler_(handler) {
-      this.surfaceEl_.removeEventListener('click', handler);
-    }
-
-    /**
-     * @param {!Element} target
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isActionButton_',
-    value: function isActionButton_(target) {
-      return Boolean(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["closest"](target, ACTION_SELECTOR));
-    }
-
-    /**
-     * @param {!Element} target
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isActionIcon_',
-    value: function isActionIcon_(target) {
-      return Boolean(__WEBPACK_IMPORTED_MODULE_4__material_dom_ponyfill__["closest"](target, DISMISS_SELECTOR));
-    }
-  }, {
-    key: 'timeoutMs',
-    get: function get() {
-      return this.foundation_.getTimeoutMs();
-    }
-
-    /**
-     * @param {number} timeoutMs
-     */
-    ,
-    set: function set(timeoutMs) {
-      this.foundation_.setTimeoutMs(timeoutMs);
-    }
-
-    /**
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'closeOnEscape',
-    get: function get() {
-      return this.foundation_.getCloseOnEscape();
-    }
-
-    /**
-     * @param {boolean} closeOnEscape
-     */
-    ,
-    set: function set(closeOnEscape) {
-      this.foundation_.setCloseOnEscape(closeOnEscape);
-    }
-
-    /**
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isOpen',
-    get: function get() {
-      return this.foundation_.isOpen();
-    }
-
-    /**
-     * @return {string}
-     */
-
-  }, {
-    key: 'labelText',
-    get: function get() {
-      return this.labelEl_.textContent;
-    }
-
-    /**
-     * @param {string} labelText
-     */
-    ,
-    set: function set(labelText) {
-      this.labelEl_.textContent = labelText;
-    }
-
-    /**
-     * @return {string}
-     */
-
-  }, {
-    key: 'actionButtonText',
-    get: function get() {
-      return this.actionEl_.textContent;
-    }
-
-    /**
-     * @param {string} actionButtonText
-     */
-    ,
-    set: function set(actionButtonText) {
-      this.actionEl_.textContent = actionButtonText;
-    }
-  }]);
-
-  return MDCSnackbar;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 130 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(131);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(23);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: ["error", {"argsIgnorePattern": "evt", "varsIgnorePattern": "Adapter$"}] */
-
-
-
-
-
-var OPENING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING,
-    OPEN = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN,
-    CLOSING = __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING;
-var REASON_ACTION = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].REASON_ACTION,
-    REASON_DISMISS = __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */].REASON_DISMISS;
-
-var MDCSnackbarFoundation = function (_MDCFoundation) {
-  _inherits(MDCSnackbarFoundation, _MDCFoundation);
-
-  _createClass(MDCSnackbarFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["c" /* strings */];
-    }
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */];
-    }
-
-    /**
-     * @return {!MDCSnackbarAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSnackbarAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          announce: function announce() {},
-          notifyOpening: function notifyOpening() {},
-          notifyOpened: function notifyOpened() {},
-          notifyClosing: function notifyClosing() /* reason: string */{},
-          notifyClosed: function notifyClosed() /* reason: string */{}
+        exports.isScrollable = isScrollable;
+        function areTopsMisaligned(els) {
+            var tops = new Set();
+            [].forEach.call(els, function(el) {
+                return tops.add(el.offsetTop);
+            });
+            return tops.size > 1;
+        }
+        exports.areTopsMisaligned = areTopsMisaligned;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(95);
+        var MDCDialogFoundation = function(_super) {
+            __extends(MDCDialogFoundation, _super);
+            function MDCDialogFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCDialogFoundation.defaultAdapter, adapter)) || this;
+                _this.isOpen_ = false;
+                _this.animationFrame_ = 0;
+                _this.animationTimer_ = 0;
+                _this.layoutFrame_ = 0;
+                _this.escapeKeyAction_ = constants_1.strings.CLOSE_ACTION;
+                _this.scrimClickAction_ = constants_1.strings.CLOSE_ACTION;
+                _this.autoStackButtons_ = true;
+                _this.areButtonsStacked_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCDialogFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialogFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialogFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialogFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addBodyClass: function addBodyClass() {
+                            return undefined;
+                        },
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        areButtonsStacked: function areButtonsStacked() {
+                            return false;
+                        },
+                        clickDefaultButton: function clickDefaultButton() {
+                            return undefined;
+                        },
+                        eventTargetMatches: function eventTargetMatches() {
+                            return false;
+                        },
+                        getActionFromEvent: function getActionFromEvent() {
+                            return "";
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        isContentScrollable: function isContentScrollable() {
+                            return false;
+                        },
+                        notifyClosed: function notifyClosed() {
+                            return undefined;
+                        },
+                        notifyClosing: function notifyClosing() {
+                            return undefined;
+                        },
+                        notifyOpened: function notifyOpened() {
+                            return undefined;
+                        },
+                        notifyOpening: function notifyOpening() {
+                            return undefined;
+                        },
+                        releaseFocus: function releaseFocus() {
+                            return undefined;
+                        },
+                        removeBodyClass: function removeBodyClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        reverseButtons: function reverseButtons() {
+                            return undefined;
+                        },
+                        trapFocus: function trapFocus() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCDialogFoundation.prototype.init = function() {
+                if (this.adapter_.hasClass(constants_1.cssClasses.STACKED)) {
+                    this.setAutoStackButtons(false);
+                }
+            };
+            MDCDialogFoundation.prototype.destroy = function() {
+                if (this.isOpen_) {
+                    this.close(constants_1.strings.DESTROY_ACTION);
+                }
+                if (this.animationTimer_) {
+                    clearTimeout(this.animationTimer_);
+                    this.handleAnimationTimerEnd_();
+                }
+                if (this.layoutFrame_) {
+                    cancelAnimationFrame(this.layoutFrame_);
+                    this.layoutFrame_ = 0;
+                }
+            };
+            MDCDialogFoundation.prototype.open = function() {
+                var _this = this;
+                this.isOpen_ = true;
+                this.adapter_.notifyOpening();
+                this.adapter_.addClass(constants_1.cssClasses.OPENING);
+                this.runNextAnimationFrame_(function() {
+                    _this.adapter_.addClass(constants_1.cssClasses.OPEN);
+                    _this.adapter_.addBodyClass(constants_1.cssClasses.SCROLL_LOCK);
+                    _this.layout();
+                    _this.animationTimer_ = setTimeout(function() {
+                        _this.handleAnimationTimerEnd_();
+                        _this.adapter_.trapFocus();
+                        _this.adapter_.notifyOpened();
+                    }, constants_1.numbers.DIALOG_ANIMATION_OPEN_TIME_MS);
+                });
+            };
+            MDCDialogFoundation.prototype.close = function(action) {
+                var _this = this;
+                if (action === void 0) {
+                    action = "";
+                }
+                if (!this.isOpen_) {
+                    return;
+                }
+                this.isOpen_ = false;
+                this.adapter_.notifyClosing(action);
+                this.adapter_.addClass(constants_1.cssClasses.CLOSING);
+                this.adapter_.removeClass(constants_1.cssClasses.OPEN);
+                this.adapter_.removeBodyClass(constants_1.cssClasses.SCROLL_LOCK);
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = 0;
+                clearTimeout(this.animationTimer_);
+                this.animationTimer_ = setTimeout(function() {
+                    _this.adapter_.releaseFocus();
+                    _this.handleAnimationTimerEnd_();
+                    _this.adapter_.notifyClosed(action);
+                }, constants_1.numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);
+            };
+            MDCDialogFoundation.prototype.isOpen = function() {
+                return this.isOpen_;
+            };
+            MDCDialogFoundation.prototype.getEscapeKeyAction = function() {
+                return this.escapeKeyAction_;
+            };
+            MDCDialogFoundation.prototype.setEscapeKeyAction = function(action) {
+                this.escapeKeyAction_ = action;
+            };
+            MDCDialogFoundation.prototype.getScrimClickAction = function() {
+                return this.scrimClickAction_;
+            };
+            MDCDialogFoundation.prototype.setScrimClickAction = function(action) {
+                this.scrimClickAction_ = action;
+            };
+            MDCDialogFoundation.prototype.getAutoStackButtons = function() {
+                return this.autoStackButtons_;
+            };
+            MDCDialogFoundation.prototype.setAutoStackButtons = function(autoStack) {
+                this.autoStackButtons_ = autoStack;
+            };
+            MDCDialogFoundation.prototype.layout = function() {
+                var _this = this;
+                if (this.layoutFrame_) {
+                    cancelAnimationFrame(this.layoutFrame_);
+                }
+                this.layoutFrame_ = requestAnimationFrame(function() {
+                    _this.layoutInternal_();
+                    _this.layoutFrame_ = 0;
+                });
+            };
+            MDCDialogFoundation.prototype.handleInteraction = function(evt) {
+                var isClick = evt.type === "click";
+                var isEnter = evt.key === "Enter" || evt.keyCode === 13;
+                var isSpace = evt.key === "Space" || evt.keyCode === 32;
+                var isScrim = this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SCRIM_SELECTOR);
+                var isDefault = !this.adapter_.eventTargetMatches(evt.target, constants_1.strings.SUPPRESS_DEFAULT_PRESS_SELECTOR);
+                if (isClick && isScrim && this.scrimClickAction_ !== "") {
+                    this.close(this.scrimClickAction_);
+                } else if (isClick || isSpace || isEnter) {
+                    var action = this.adapter_.getActionFromEvent(evt);
+                    if (action) {
+                        this.close(action);
+                    } else if (isEnter && isDefault) {
+                        this.adapter_.clickDefaultButton();
+                    }
+                }
+            };
+            MDCDialogFoundation.prototype.handleDocumentKeydown = function(evt) {
+                var isEscape = evt.key === "Escape" || evt.keyCode === 27;
+                if (isEscape && this.escapeKeyAction_ !== "") {
+                    this.close(this.escapeKeyAction_);
+                }
+            };
+            MDCDialogFoundation.prototype.layoutInternal_ = function() {
+                if (this.autoStackButtons_) {
+                    this.detectStackedButtons_();
+                }
+                this.detectScrollableContent_();
+            };
+            MDCDialogFoundation.prototype.handleAnimationTimerEnd_ = function() {
+                this.animationTimer_ = 0;
+                this.adapter_.removeClass(constants_1.cssClasses.OPENING);
+                this.adapter_.removeClass(constants_1.cssClasses.CLOSING);
+            };
+            MDCDialogFoundation.prototype.runNextAnimationFrame_ = function(callback) {
+                var _this = this;
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = requestAnimationFrame(function() {
+                    _this.animationFrame_ = 0;
+                    clearTimeout(_this.animationTimer_);
+                    _this.animationTimer_ = setTimeout(callback, 0);
+                });
+            };
+            MDCDialogFoundation.prototype.detectStackedButtons_ = function() {
+                this.adapter_.removeClass(constants_1.cssClasses.STACKED);
+                var areButtonsStacked = this.adapter_.areButtonsStacked();
+                if (areButtonsStacked) {
+                    this.adapter_.addClass(constants_1.cssClasses.STACKED);
+                }
+                if (areButtonsStacked !== this.areButtonsStacked_) {
+                    this.adapter_.reverseButtons();
+                    this.areButtonsStacked_ = areButtonsStacked;
+                }
+            };
+            MDCDialogFoundation.prototype.detectScrollableContent_ = function() {
+                this.adapter_.removeClass(constants_1.cssClasses.SCROLLABLE);
+                if (this.adapter_.isContentScrollable()) {
+                    this.adapter_.addClass(constants_1.cssClasses.SCROLLABLE);
+                }
+            };
+            return MDCDialogFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCDialogFoundation = MDCDialogFoundation;
+        exports.default = MDCDialogFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __importDefault = this && this.__importDefault || function(mod) {
+            return mod && mod.__esModule ? mod : {
+                default: mod
+            };
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var focus_trap_1 = __importDefault(__webpack_require__(34));
+        function createFocusTrapInstance(surfaceEl, focusTrapFactory) {
+            if (focusTrapFactory === void 0) {
+                focusTrapFactory = focus_trap_1.default;
+            }
+            return focusTrapFactory(surfaceEl, {
+                clickOutsideDeactivates: true,
+                escapeDeactivates: false,
+                initialFocus: undefined,
+                returnFocusOnDeactivate: false
+            });
         }
         }
-      );
-    }
-
-    /**
-     * @param {!MDCSnackbarAdapter=} adapter
-     */
-
-  }]);
-
-  function MDCSnackbarFoundation(adapter) {
-    _classCallCheck(this, MDCSnackbarFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCSnackbarFoundation.__proto__ || Object.getPrototypeOf(MDCSnackbarFoundation)).call(this, _extends(MDCSnackbarFoundation.defaultAdapter, adapter)));
-
-    _this.isOpen_ = false;
-
-    /** @private {number} */
-    _this.animationFrame_ = 0;
-
-    /** @private {number} */
-    _this.animationTimer_ = 0;
-
-    /** @private {number} */
-    _this.autoDismissTimer_ = 0;
-
-    /** @private {number} */
-    _this.autoDismissTimeoutMs_ = __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DEFAULT_AUTO_DISMISS_TIMEOUT_MS;
-
-    /** @private {boolean} */
-    _this.closeOnEscape_ = true;
-    return _this;
-  }
-
-  _createClass(MDCSnackbarFoundation, [{
-    key: 'destroy',
-    value: function destroy() {
-      this.clearAutoDismissTimer_();
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = 0;
-      clearTimeout(this.animationTimer_);
-      this.animationTimer_ = 0;
-      this.adapter_.removeClass(OPENING);
-      this.adapter_.removeClass(OPEN);
-      this.adapter_.removeClass(CLOSING);
-    }
-  }, {
-    key: 'open',
-    value: function open() {
-      var _this2 = this;
-
-      this.clearAutoDismissTimer_();
-      this.isOpen_ = true;
-      this.adapter_.notifyOpening();
-      this.adapter_.removeClass(CLOSING);
-      this.adapter_.addClass(OPENING);
-      this.adapter_.announce();
-
-      // Wait a frame once display is no longer "none", to establish basis for animation
-      this.runNextAnimationFrame_(function () {
-        _this2.adapter_.addClass(OPEN);
-
-        _this2.animationTimer_ = setTimeout(function () {
-          _this2.handleAnimationTimerEnd_();
-          _this2.adapter_.notifyOpened();
-          _this2.autoDismissTimer_ = setTimeout(function () {
-            _this2.close(REASON_DISMISS);
-          }, _this2.getTimeoutMs());
-        }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].SNACKBAR_ANIMATION_OPEN_TIME_MS);
-      });
-    }
-
-    /**
-     * @param {string=} reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the
-     *     `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom
-     *     client-specific values may also be used if desired.
-     */
-
-  }, {
-    key: 'close',
-    value: function close() {
-      var _this3 = this;
-
-      var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
-
-      if (!this.isOpen_) {
-        // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed
-        return;
-      }
-
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = 0;
-      this.clearAutoDismissTimer_();
-
-      this.isOpen_ = false;
-      this.adapter_.notifyClosing(reason);
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPEN);
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
-
-      clearTimeout(this.animationTimer_);
-      this.animationTimer_ = setTimeout(function () {
-        _this3.handleAnimationTimerEnd_();
-        _this3.adapter_.notifyClosed(reason);
-      }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].SNACKBAR_ANIMATION_CLOSE_TIME_MS);
-    }
-
-    /**
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isOpen',
-    value: function isOpen() {
-      return this.isOpen_;
-    }
-
-    /**
-     * @return {number}
-     */
-
-  }, {
-    key: 'getTimeoutMs',
-    value: function getTimeoutMs() {
-      return this.autoDismissTimeoutMs_;
-    }
-
-    /**
-     * @param {number} timeoutMs
-     */
-
-  }, {
-    key: 'setTimeoutMs',
-    value: function setTimeoutMs(timeoutMs) {
-      // Use shorter variable names to make the code more readable
-      var minValue = __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].MIN_AUTO_DISMISS_TIMEOUT_MS;
-      var maxValue = __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].MAX_AUTO_DISMISS_TIMEOUT_MS;
-
-      if (timeoutMs <= maxValue && timeoutMs >= minValue) {
-        this.autoDismissTimeoutMs_ = timeoutMs;
-      } else {
-        throw new Error('timeoutMs must be an integer in the range ' + minValue + '\u2013' + maxValue + ', but got \'' + timeoutMs + '\'');
-      }
-    }
-
-    /**
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'getCloseOnEscape',
-    value: function getCloseOnEscape() {
-      return this.closeOnEscape_;
-    }
-
-    /**
-     * @param {boolean} closeOnEscape
-     */
-
-  }, {
-    key: 'setCloseOnEscape',
-    value: function setCloseOnEscape(closeOnEscape) {
-      this.closeOnEscape_ = closeOnEscape;
-    }
-
-    /**
-     * @param {!KeyboardEvent} evt
-     */
-
-  }, {
-    key: 'handleKeyDown',
-    value: function handleKeyDown(evt) {
-      if (this.getCloseOnEscape() && (evt.key === 'Escape' || evt.keyCode === 27)) {
-        this.close(REASON_DISMISS);
-      }
-    }
-
-    /**
-     * @param {!MouseEvent} evt
-     */
-
-  }, {
-    key: 'handleActionButtonClick',
-    value: function handleActionButtonClick(evt) {
-      this.close(REASON_ACTION);
-    }
-
-    /**
-     * @param {!MouseEvent} evt
-     */
-
-  }, {
-    key: 'handleActionIconClick',
-    value: function handleActionIconClick(evt) {
-      this.close(REASON_DISMISS);
-    }
-
-    /** @private */
-
-  }, {
-    key: 'clearAutoDismissTimer_',
-    value: function clearAutoDismissTimer_() {
-      clearTimeout(this.autoDismissTimer_);
-      this.autoDismissTimer_ = 0;
-    }
-
-    /** @private */
-
-  }, {
-    key: 'handleAnimationTimerEnd_',
-    value: function handleAnimationTimerEnd_() {
-      this.animationTimer_ = 0;
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].OPENING);
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CLOSING);
-    }
-
-    /**
-     * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.
-     * @param {Function} callback
-     * @private
-     */
-
-  }, {
-    key: 'runNextAnimationFrame_',
-    value: function runNextAnimationFrame_(callback) {
-      var _this4 = this;
-
-      cancelAnimationFrame(this.animationFrame_);
-      this.animationFrame_ = requestAnimationFrame(function () {
-        _this4.animationFrame_ = 0;
-        clearTimeout(_this4.animationTimer_);
-        _this4.animationTimer_ = setTimeout(callback, 0);
-      });
-    }
-  }]);
-
-  return MDCSnackbarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSnackbarFoundation);
-
-/***/ }),
-/* 131 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Snackbar. Provides an interface for managing:
- * - CSS classes
- * - Event handlers
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCSnackbarAdapter = function () {
-  function MDCSnackbarAdapter() {
-    _classCallCheck(this, MDCSnackbarAdapter);
-  }
-
-  _createClass(MDCSnackbarAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-  }, {
-    key: "announce",
-    value: function announce() {}
-  }, {
-    key: "notifyOpening",
-    value: function notifyOpening() {}
-  }, {
-    key: "notifyOpened",
-    value: function notifyOpened() {}
-
-    /**
-     * @param {string} reason
-     */
-
-  }, {
-    key: "notifyClosing",
-    value: function notifyClosing(reason) {}
-
-    /**
-     * @param {string} reason
-     */
-
-  }, {
-    key: "notifyClosed",
-    value: function notifyClosed(reason) {}
-  }]);
-
-  return MDCSnackbarAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCSnackbarAdapter);
-
-/***/ }),
-/* 132 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "announce", function() { return announce; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(23);
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-var ARIA_LIVE_DELAY_MS = __WEBPACK_IMPORTED_MODULE_0__constants__["b" /* numbers */].ARIA_LIVE_DELAY_MS;
-var ARIA_LIVE_LABEL_TEXT_ATTR = __WEBPACK_IMPORTED_MODULE_0__constants__["c" /* strings */].ARIA_LIVE_LABEL_TEXT_ATTR;
-
-/**
- * @param {!HTMLElement} ariaEl
- * @param {!HTMLElement=} labelEl
- */
-
-function announce(ariaEl) {
-  var labelEl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ariaEl;
-
-  var priority = ariaEl.getAttribute('aria-live');
-  var labelText = labelEl.textContent.trim(); // Ignore `&nbsp;` (see below)
-  if (!labelText) {
-    return;
-  }
-
-  // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.
-  ariaEl.setAttribute('aria-live', 'off');
-
-  // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.
-  // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars
-  // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.
-  // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,
-  // so screen readers won't announce the second message unless we first clear `textContent`.
-  //
-  // We have to clear the label text two different ways to make it work in all browsers and screen readers:
-  //
-  //   1. `textContent = ''` is required for IE11 + JAWS
-  //   2. `innerHTML = '&nbsp;'` is required for Chrome + JAWS and NVDA
-  //
-  // All other browser/screen reader combinations support both methods.
-  //
-  // The wrapper `<span>` visually hides the space character so that it doesn't cause jank when added/removed.
-  // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.
-  //
-  // This technique has been tested in:
-  //
-  //   * JAWS 2019:
-  //       - Chrome 70
-  //       - Firefox 60 (ESR)
-  //       - IE 11
-  //   * NVDA 2018:
-  //       - Chrome 70
-  //       - Firefox 60 (ESR)
-  //       - IE 11
-  //   * ChromeVox 53
-  labelEl.textContent = '';
-  labelEl.innerHTML = '<span style="display: inline-block; width: 0; height: 1px;">&nbsp;</span>';
-
-  // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.
-  // CSS generated content is normally announced by screen readers
-  // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);
-  // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.
-  labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);
-
-  setTimeout(function () {
-    // Allow screen readers to announce changes to the DOM again.
-    ariaEl.setAttribute('aria-live', priority);
-
-    // Remove the message from the ::before pseudo-element.
-    labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);
-
-    // Restore the original label text, which will be announced by screen readers.
-    labelEl.textContent = labelText;
-  }, ARIA_LIVE_DELAY_MS);
-}
-
-
-
-/***/ }),
-/* 133 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSwitch", function() { return MDCSwitch; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_selection_control_index__ = __webpack_require__(3);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(134);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__material_ripple_util__ = __webpack_require__(5);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCSwitchFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-
-
-
-/**
- * @extends MDCComponent<!MDCSwitchFoundation>
- * @implements {MDCSelectionControl}
- */
-
-var MDCSwitch = function (_MDCComponent) {
-  _inherits(MDCSwitch, _MDCComponent);
-
-  _createClass(MDCSwitch, null, [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCSwitch(root);
-    }
-  }]);
-
-  function MDCSwitch() {
-    var _ref;
-
-    _classCallCheck(this, MDCSwitch);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!MDCRipple} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCSwitch.__proto__ || Object.getPrototypeOf(MDCSwitch)).call.apply(_ref, [this].concat(args)));
-
-    _this.ripple_ = _this.initRipple_();
-
-    /** @private {!Function} */
-    _this.changeHandler_;
-    return _this;
-  }
-
-  _createClass(MDCSwitch, [{
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCSwitch.prototype.__proto__ || Object.getPrototypeOf(MDCSwitch.prototype), 'destroy', this).call(this);
-      this.ripple_.destroy();
-      this.nativeControl_.removeEventListener('change', this.changeHandler_);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      this.changeHandler_ = this.foundation_.handleChange.bind(this.foundation_);
-      this.nativeControl_.addEventListener('change', this.changeHandler_);
-
-      // Sometimes the checked state of the input element is saved in the history.
-      // The switch styling should match the checked state of the input element.
-      // Do an initial sync between the native control and the foundation.
-      this.checked = this.checked;
-    }
-
-    /**
-     * Returns the state of the native control element, or null if the native control element is not present.
-     * @return {?MDCSelectionControlState}
-     * @private
-     */
-
-  }, {
-    key: 'initRipple_',
-
-
-    /**
-     * @return {!MDCRipple}
-     * @private
-     */
-    value: function initRipple_() {
-      var _this2 = this;
-
-      var RIPPLE_SURFACE_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.RIPPLE_SURFACE_SELECTOR;
-
-      var rippleSurface = /** @type {!Element} */this.root_.querySelector(RIPPLE_SURFACE_SELECTOR);
-
-      var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_4__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
-      var adapter = _extends(__WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"].createAdapter(this), {
-        isUnbounded: function isUnbounded() {
-          return true;
-        },
-        isSurfaceActive: function isSurfaceActive() {
-          return _this2.nativeControl_[MATCHES](':active');
-        },
-        addClass: function addClass(className) {
-          return rippleSurface.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return rippleSurface.classList.remove(className);
-        },
-        registerInteractionHandler: function registerInteractionHandler(type, handler) {
-          return _this2.nativeControl_.addEventListener(type, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-          return _this2.nativeControl_.removeEventListener(type, handler);
-        },
-        updateCssVariable: function updateCssVariable(varName, value) {
-          return rippleSurface.style.setProperty(varName, value);
-        },
-        computeBoundingRect: function computeBoundingRect() {
-          return rippleSurface.getBoundingClientRect();
+        exports.createFocusTrapInstance = createFocusTrapInstance;
+    }, function(module, exports, __webpack_require__) {
+        var tabbable = __webpack_require__(98);
+        var xtend = __webpack_require__(99);
+        var activeFocusTraps = function() {
+            var trapQueue = [];
+            return {
+                activateTrap: function(trap) {
+                    if (trapQueue.length > 0) {
+                        var activeTrap = trapQueue[trapQueue.length - 1];
+                        if (activeTrap !== trap) {
+                            activeTrap.pause();
+                        }
+                    }
+                    var trapIndex = trapQueue.indexOf(trap);
+                    if (trapIndex === -1) {
+                        trapQueue.push(trap);
+                    } else {
+                        trapQueue.splice(trapIndex, 1);
+                        trapQueue.push(trap);
+                    }
+                },
+                deactivateTrap: function(trap) {
+                    var trapIndex = trapQueue.indexOf(trap);
+                    if (trapIndex !== -1) {
+                        trapQueue.splice(trapIndex, 1);
+                    }
+                    if (trapQueue.length > 0) {
+                        trapQueue[trapQueue.length - 1].unpause();
+                    }
+                }
+            };
+        }();
+        function focusTrap(element, userOptions) {
+            var doc = document;
+            var container = typeof element === "string" ? doc.querySelector(element) : element;
+            var config = xtend({
+                returnFocusOnDeactivate: true,
+                escapeDeactivates: true
+            }, userOptions);
+            var state = {
+                firstTabbableNode: null,
+                lastTabbableNode: null,
+                nodeFocusedBeforeActivation: null,
+                mostRecentlyFocusedNode: null,
+                active: false,
+                paused: false
+            };
+            var trap = {
+                activate: activate,
+                deactivate: deactivate,
+                pause: pause,
+                unpause: unpause
+            };
+            return trap;
+            function activate(activateOptions) {
+                if (state.active) return;
+                updateTabbableNodes();
+                state.active = true;
+                state.paused = false;
+                state.nodeFocusedBeforeActivation = doc.activeElement;
+                var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate;
+                if (onActivate) {
+                    onActivate();
+                }
+                addListeners();
+                return trap;
+            }
+            function deactivate(deactivateOptions) {
+                if (!state.active) return;
+                removeListeners();
+                state.active = false;
+                state.paused = false;
+                activeFocusTraps.deactivateTrap(trap);
+                var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate;
+                if (onDeactivate) {
+                    onDeactivate();
+                }
+                var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate;
+                if (returnFocus) {
+                    delay(function() {
+                        tryFocus(state.nodeFocusedBeforeActivation);
+                    });
+                }
+                return trap;
+            }
+            function pause() {
+                if (state.paused || !state.active) return;
+                state.paused = true;
+                removeListeners();
+            }
+            function unpause() {
+                if (!state.paused || !state.active) return;
+                state.paused = false;
+                updateTabbableNodes();
+                addListeners();
+            }
+            function addListeners() {
+                if (!state.active) return;
+                activeFocusTraps.activateTrap(trap);
+                delay(function() {
+                    tryFocus(getInitialFocusNode());
+                });
+                doc.addEventListener("focusin", checkFocusIn, true);
+                doc.addEventListener("mousedown", checkPointerDown, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("touchstart", checkPointerDown, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("click", checkClick, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("keydown", checkKey, {
+                    capture: true,
+                    passive: false
+                });
+                return trap;
+            }
+            function removeListeners() {
+                if (!state.active) return;
+                doc.removeEventListener("focusin", checkFocusIn, true);
+                doc.removeEventListener("mousedown", checkPointerDown, true);
+                doc.removeEventListener("touchstart", checkPointerDown, true);
+                doc.removeEventListener("click", checkClick, true);
+                doc.removeEventListener("keydown", checkKey, true);
+                return trap;
+            }
+            function getNodeForOption(optionName) {
+                var optionValue = config[optionName];
+                var node = optionValue;
+                if (!optionValue) {
+                    return null;
+                }
+                if (typeof optionValue === "string") {
+                    node = doc.querySelector(optionValue);
+                    if (!node) {
+                        throw new Error("`" + optionName + "` refers to no known node");
+                    }
+                }
+                if (typeof optionValue === "function") {
+                    node = optionValue();
+                    if (!node) {
+                        throw new Error("`" + optionName + "` did not return a node");
+                    }
+                }
+                return node;
+            }
+            function getInitialFocusNode() {
+                var node;
+                if (getNodeForOption("initialFocus") !== null) {
+                    node = getNodeForOption("initialFocus");
+                } else if (container.contains(doc.activeElement)) {
+                    node = doc.activeElement;
+                } else {
+                    node = state.firstTabbableNode || getNodeForOption("fallbackFocus");
+                }
+                if (!node) {
+                    throw new Error("You can't have a focus-trap without at least one focusable element");
+                }
+                return node;
+            }
+            function checkPointerDown(e) {
+                if (container.contains(e.target)) return;
+                if (config.clickOutsideDeactivates) {
+                    deactivate({
+                        returnFocus: !tabbable.isFocusable(e.target)
+                    });
+                } else {
+                    e.preventDefault();
+                }
+            }
+            function checkFocusIn(e) {
+                if (container.contains(e.target) || e.target instanceof Document) {
+                    return;
+                }
+                e.stopImmediatePropagation();
+                tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
+            }
+            function checkKey(e) {
+                if (config.escapeDeactivates !== false && isEscapeEvent(e)) {
+                    e.preventDefault();
+                    deactivate();
+                    return;
+                }
+                if (isTabEvent(e)) {
+                    checkTab(e);
+                    return;
+                }
+            }
+            function checkTab(e) {
+                updateTabbableNodes();
+                if (e.shiftKey && e.target === state.firstTabbableNode) {
+                    e.preventDefault();
+                    tryFocus(state.lastTabbableNode);
+                    return;
+                }
+                if (!e.shiftKey && e.target === state.lastTabbableNode) {
+                    e.preventDefault();
+                    tryFocus(state.firstTabbableNode);
+                    return;
+                }
+            }
+            function checkClick(e) {
+                if (config.clickOutsideDeactivates) return;
+                if (container.contains(e.target)) return;
+                e.preventDefault();
+                e.stopImmediatePropagation();
+            }
+            function updateTabbableNodes() {
+                var tabbableNodes = tabbable(container);
+                state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();
+                state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();
+            }
+            function tryFocus(node) {
+                if (node === doc.activeElement) return;
+                if (!node || !node.focus) {
+                    tryFocus(getInitialFocusNode());
+                    return;
+                }
+                node.focus();
+                state.mostRecentlyFocusedNode = node;
+                if (isSelectableInput(node)) {
+                    node.select();
+                }
+            }
         }
         }
-      });
-      var foundation = new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRippleFoundation"](adapter);
-      return new __WEBPACK_IMPORTED_MODULE_3__material_ripple_index__["MDCRipple"](this.root_, foundation);
-    }
-
-    /** @return {!MDCSwitchFoundation} */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        setNativeControlChecked: function setNativeControlChecked(checked) {
-          return _this3.nativeControl_.checked = checked;
-        },
-        setNativeControlDisabled: function setNativeControlDisabled(disabled) {
-          return _this3.nativeControl_.disabled = disabled;
+        function isSelectableInput(node) {
+            return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function";
         }
         }
-      });
-    }
-
-    /** @return {!MDCRipple} */
-
-  }, {
-    key: 'nativeControl_',
-    get: function get() {
-      var NATIVE_CONTROL_SELECTOR = __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.NATIVE_CONTROL_SELECTOR;
-
-      var el = /** @type {?MDCSelectionControlState} */this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
-      return el;
-    }
-  }, {
-    key: 'ripple',
-    get: function get() {
-      return this.ripple_;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'checked',
-    get: function get() {
-      return this.nativeControl_.checked;
-    }
-
-    /** @param {boolean} checked */
-    ,
-    set: function set(checked) {
-      this.foundation_.setChecked(checked);
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.nativeControl_.disabled;
-    }
-
-    /** @param {boolean} disabled */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-  }]);
-
-  return MDCSwitch;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 134 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(135);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(136);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-enable no-unused-vars */
-
-
-/**
- * @extends {MDCFoundation<!MDCSwitchAdapter>}
- */
-
-var MDCSwitchFoundation = function (_MDCFoundation) {
-  _inherits(MDCSwitchFoundation, _MDCFoundation);
-
-  _createClass(MDCSwitchFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return {!MDCSwitchAdapter} */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCSwitchAdapter} */{
-          addClass: function addClass() /* className: string */{},
-          removeClass: function removeClass() /* className: string */{},
-          setNativeControlChecked: function setNativeControlChecked() /* checked: boolean */{},
-          setNativeControlDisabled: function setNativeControlDisabled() /* disabled: boolean */{}
+        function isEscapeEvent(e) {
+            return e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
+        }
+        function isTabEvent(e) {
+            return e.key === "Tab" || e.keyCode === 9;
+        }
+        function delay(fn) {
+            return setTimeout(fn, 0);
+        }
+        module.exports = focusTrap;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            LIST_ITEM_ACTIVATED_CLASS: "mdc-list-item--activated",
+            LIST_ITEM_CLASS: "mdc-list-item",
+            LIST_ITEM_DISABLED_CLASS: "mdc-list-item--disabled",
+            LIST_ITEM_SELECTED_CLASS: "mdc-list-item--selected",
+            ROOT: "mdc-list"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ACTION_EVENT: "MDCList:action",
+            ARIA_CHECKED: "aria-checked",
+            ARIA_CHECKED_CHECKBOX_SELECTOR: '[role="checkbox"][aria-checked="true"]',
+            ARIA_CHECKED_RADIO_SELECTOR: '[role="radio"][aria-checked="true"]',
+            ARIA_CURRENT: "aria-current",
+            ARIA_ORIENTATION: "aria-orientation",
+            ARIA_ORIENTATION_HORIZONTAL: "horizontal",
+            ARIA_ROLE_CHECKBOX_SELECTOR: '[role="checkbox"]',
+            ARIA_SELECTED: "aria-selected",
+            CHECKBOX_RADIO_SELECTOR: 'input[type="checkbox"]:not(:disabled), input[type="radio"]:not(:disabled)',
+            CHECKBOX_SELECTOR: 'input[type="checkbox"]:not(:disabled)',
+            CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: "\n    ." + cssClasses.LIST_ITEM_CLASS + " button:not(:disabled),\n    ." + cssClasses.LIST_ITEM_CLASS + " a\n  ",
+            FOCUSABLE_CHILD_ELEMENTS: "\n    ." + cssClasses.LIST_ITEM_CLASS + " button:not(:disabled),\n    ." + cssClasses.LIST_ITEM_CLASS + " a,\n    ." + cssClasses.LIST_ITEM_CLASS + ' input[type="radio"]:not(:disabled),\n    .' + cssClasses.LIST_ITEM_CLASS + ' input[type="checkbox"]:not(:disabled)\n  ',
+            RADIO_SELECTOR: 'input[type="radio"]:not(:disabled)'
+        };
+        exports.strings = strings;
+        var numbers = {
+            UNSET_INDEX: -1
+        };
+        exports.numbers = numbers;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(14);
+        var MDCModalDrawerFoundation = function(_super) {
+            __extends(MDCModalDrawerFoundation, _super);
+            function MDCModalDrawerFoundation() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCModalDrawerFoundation.prototype.handleScrimClick = function() {
+                this.close();
+            };
+            MDCModalDrawerFoundation.prototype.opened_ = function() {
+                this.adapter_.trapFocus();
+            };
+            MDCModalDrawerFoundation.prototype.closed_ = function() {
+                this.adapter_.releaseFocus();
+            };
+            return MDCModalDrawerFoundation;
+        }(foundation_1.MDCDismissibleDrawerFoundation);
+        exports.MDCModalDrawerFoundation = MDCModalDrawerFoundation;
+        exports.default = MDCModalDrawerFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(106);
+        var MDCFormFieldFoundation = function(_super) {
+            __extends(MDCFormFieldFoundation, _super);
+            function MDCFormFieldFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCFormFieldFoundation.defaultAdapter, adapter)) || this;
+                _this.clickHandler_ = function() {
+                    return _this.handleClick_();
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCFormFieldFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFormFieldFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFormFieldFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        activateInputRipple: function activateInputRipple() {
+                            return undefined;
+                        },
+                        deactivateInputRipple: function deactivateInputRipple() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCFormFieldFoundation.prototype.init = function() {
+                this.adapter_.registerInteractionHandler("click", this.clickHandler_);
+            };
+            MDCFormFieldFoundation.prototype.destroy = function() {
+                this.adapter_.deregisterInteractionHandler("click", this.clickHandler_);
+            };
+            MDCFormFieldFoundation.prototype.handleClick_ = function() {
+                var _this = this;
+                this.adapter_.activateInputRipple();
+                requestAnimationFrame(function() {
+                    return _this.adapter_.deactivateInputRipple();
+                });
+            };
+            return MDCFormFieldFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCFormFieldFoundation = MDCFormFieldFoundation;
+        exports.default = MDCFormFieldFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(109);
+        var MDCGridListFoundation = function(_super) {
+            __extends(MDCGridListFoundation, _super);
+            function MDCGridListFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCGridListFoundation.defaultAdapter, adapter)) || this;
+                _this.resizeFrame_ = 0;
+                _this.resizeHandler_ = _this.alignCenter.bind(_this);
+                return _this;
+            }
+            Object.defineProperty(MDCGridListFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCGridListFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        deregisterResizeHandler: function deregisterResizeHandler() {
+                            return undefined;
+                        },
+                        getNumberOfTiles: function getNumberOfTiles() {
+                            return 0;
+                        },
+                        getOffsetWidth: function getOffsetWidth() {
+                            return 0;
+                        },
+                        getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex() {
+                            return 0;
+                        },
+                        registerResizeHandler: function registerResizeHandler() {
+                            return undefined;
+                        },
+                        setStyleForTilesElement: function setStyleForTilesElement() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCGridListFoundation.prototype.init = function() {
+                this.alignCenter();
+                this.adapter_.registerResizeHandler(this.resizeHandler_);
+            };
+            MDCGridListFoundation.prototype.destroy = function() {
+                this.adapter_.deregisterResizeHandler(this.resizeHandler_);
+            };
+            MDCGridListFoundation.prototype.alignCenter = function() {
+                var _this = this;
+                cancelAnimationFrame(this.resizeFrame_);
+                this.resizeFrame_ = requestAnimationFrame(function() {
+                    _this.alignCenter_();
+                    _this.resizeFrame_ = 0;
+                });
+            };
+            MDCGridListFoundation.prototype.alignCenter_ = function() {
+                if (this.adapter_.getNumberOfTiles() === 0) {
+                    return;
+                }
+                var gridWidth = this.adapter_.getOffsetWidth();
+                var itemWidth = this.adapter_.getOffsetWidthForTileAtIndex(0);
+                var tilesWidth = itemWidth * Math.floor(gridWidth / itemWidth);
+                this.adapter_.setStyleForTilesElement("width", tilesWidth + "px");
+            };
+            return MDCGridListFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCGridListFoundation = MDCGridListFoundation;
+        exports.default = MDCGridListFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(112);
+        var MDCIconButtonToggleFoundation = function(_super) {
+            __extends(MDCIconButtonToggleFoundation, _super);
+            function MDCIconButtonToggleFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCIconButtonToggleFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCIconButtonToggleFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCIconButtonToggleFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCIconButtonToggleFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        notifyChange: function notifyChange() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCIconButtonToggleFoundation.prototype.init = function() {
+                this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, "" + this.isOn());
+            };
+            MDCIconButtonToggleFoundation.prototype.handleClick = function() {
+                this.toggle();
+                this.adapter_.notifyChange({
+                    isOn: this.isOn()
+                });
+            };
+            MDCIconButtonToggleFoundation.prototype.isOn = function() {
+                return this.adapter_.hasClass(constants_1.cssClasses.ICON_BUTTON_ON);
+            };
+            MDCIconButtonToggleFoundation.prototype.toggle = function(isOn) {
+                if (isOn === void 0) {
+                    isOn = !this.isOn();
+                }
+                if (isOn) {
+                    this.adapter_.addClass(constants_1.cssClasses.ICON_BUTTON_ON);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.ICON_BUTTON_ON);
+                }
+                this.adapter_.setAttr(constants_1.strings.ARIA_PRESSED, "" + isOn);
+            };
+            return MDCIconButtonToggleFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCIconButtonToggleFoundation = MDCIconButtonToggleFoundation;
+        exports.default = MDCIconButtonToggleFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(114);
+        var MDCLineRippleFoundation = function(_super) {
+            __extends(MDCLineRippleFoundation, _super);
+            function MDCLineRippleFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCLineRippleFoundation.defaultAdapter, adapter)) || this;
+                _this.transitionEndHandler_ = function(evt) {
+                    return _this.handleTransitionEnd(evt);
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCLineRippleFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLineRippleFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        setStyle: function setStyle() {
+                            return undefined;
+                        },
+                        registerEventHandler: function registerEventHandler() {
+                            return undefined;
+                        },
+                        deregisterEventHandler: function deregisterEventHandler() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCLineRippleFoundation.prototype.init = function() {
+                this.adapter_.registerEventHandler("transitionend", this.transitionEndHandler_);
+            };
+            MDCLineRippleFoundation.prototype.destroy = function() {
+                this.adapter_.deregisterEventHandler("transitionend", this.transitionEndHandler_);
+            };
+            MDCLineRippleFoundation.prototype.activate = function() {
+                this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);
+                this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE);
+            };
+            MDCLineRippleFoundation.prototype.setRippleCenter = function(xCoordinate) {
+                this.adapter_.setStyle("transform-origin", xCoordinate + "px center");
+            };
+            MDCLineRippleFoundation.prototype.deactivate = function() {
+                this.adapter_.addClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);
+            };
+            MDCLineRippleFoundation.prototype.handleTransitionEnd = function(evt) {
+                var isDeactivating = this.adapter_.hasClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);
+                if (evt.propertyName === "opacity") {
+                    if (isDeactivating) {
+                        this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_ACTIVE);
+                        this.adapter_.removeClass(constants_1.cssClasses.LINE_RIPPLE_DEACTIVATING);
+                    }
+                }
+            };
+            return MDCLineRippleFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCLineRippleFoundation = MDCLineRippleFoundation;
+        exports.default = MDCLineRippleFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util_1 = __webpack_require__(10);
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(117);
+        var MDCLinearProgressFoundation = function(_super) {
+            __extends(MDCLinearProgressFoundation, _super);
+            function MDCLinearProgressFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCLinearProgressFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCLinearProgressFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLinearProgressFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLinearProgressFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        getBuffer: function getBuffer() {
+                            return null;
+                        },
+                        getPrimaryBar: function getPrimaryBar() {
+                            return null;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        setStyle: function setStyle() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCLinearProgressFoundation.prototype.init = function() {
+                this.isDeterminate_ = !this.adapter_.hasClass(constants_1.cssClasses.INDETERMINATE_CLASS);
+                this.isReversed_ = this.adapter_.hasClass(constants_1.cssClasses.REVERSED_CLASS);
+                this.progress_ = 0;
+            };
+            MDCLinearProgressFoundation.prototype.setDeterminate = function(isDeterminate) {
+                this.isDeterminate_ = isDeterminate;
+                if (this.isDeterminate_) {
+                    this.adapter_.removeClass(constants_1.cssClasses.INDETERMINATE_CLASS);
+                    this.setScale_(this.adapter_.getPrimaryBar(), this.progress_);
+                } else {
+                    this.adapter_.addClass(constants_1.cssClasses.INDETERMINATE_CLASS);
+                    this.setScale_(this.adapter_.getPrimaryBar(), 1);
+                    this.setScale_(this.adapter_.getBuffer(), 1);
+                }
+            };
+            MDCLinearProgressFoundation.prototype.setProgress = function(value) {
+                this.progress_ = value;
+                if (this.isDeterminate_) {
+                    this.setScale_(this.adapter_.getPrimaryBar(), value);
+                }
+            };
+            MDCLinearProgressFoundation.prototype.setBuffer = function(value) {
+                if (this.isDeterminate_) {
+                    this.setScale_(this.adapter_.getBuffer(), value);
+                }
+            };
+            MDCLinearProgressFoundation.prototype.setReverse = function(isReversed) {
+                this.isReversed_ = isReversed;
+                if (this.isReversed_) {
+                    this.adapter_.addClass(constants_1.cssClasses.REVERSED_CLASS);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.REVERSED_CLASS);
+                }
+            };
+            MDCLinearProgressFoundation.prototype.open = function() {
+                this.adapter_.removeClass(constants_1.cssClasses.CLOSED_CLASS);
+            };
+            MDCLinearProgressFoundation.prototype.close = function() {
+                this.adapter_.addClass(constants_1.cssClasses.CLOSED_CLASS);
+            };
+            MDCLinearProgressFoundation.prototype.setScale_ = function(el, scaleValue) {
+                if (!el) {
+                    return;
+                }
+                var value = "scaleX(" + scaleValue + ")";
+                this.adapter_.setStyle(el, util_1.getCorrectPropertyName(window, "transform"), value);
+            };
+            return MDCLinearProgressFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCLinearProgressFoundation = MDCLinearProgressFoundation;
+        exports.default = MDCLinearProgressFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cachedCssTransformPropertyName_;
+        function getTransformPropertyName(globalObj, forceRefresh) {
+            if (forceRefresh === void 0) {
+                forceRefresh = false;
+            }
+            if (cachedCssTransformPropertyName_ === undefined || forceRefresh) {
+                var el = globalObj.document.createElement("div");
+                cachedCssTransformPropertyName_ = "transform" in el.style ? "transform" : "webkitTransform";
+            }
+            return cachedCssTransformPropertyName_;
+        }
+        exports.getTransformPropertyName = getTransformPropertyName;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var constants_1 = __webpack_require__(6);
+        var foundation_1 = __webpack_require__(8);
+        var util = __importStar(__webpack_require__(42));
+        var MDCMenuSurface = function(_super) {
+            __extends(MDCMenuSurface, _super);
+            function MDCMenuSurface() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCMenuSurface.attachTo = function(root) {
+                return new MDCMenuSurface(root);
+            };
+            MDCMenuSurface.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                var parentEl = this.root_.parentElement;
+                this.anchorElement = parentEl && parentEl.classList.contains(constants_1.cssClasses.ANCHOR) ? parentEl : null;
+                if (this.root_.classList.contains(constants_1.cssClasses.FIXED)) {
+                    this.setFixedPosition(true);
+                }
+                this.handleKeydown_ = function(evt) {
+                    return _this.foundation_.handleKeydown(evt);
+                };
+                this.handleBodyClick_ = function(evt) {
+                    return _this.foundation_.handleBodyClick(evt);
+                };
+                this.registerBodyClickListener_ = function() {
+                    return document.body.addEventListener("click", _this.handleBodyClick_);
+                };
+                this.deregisterBodyClickListener_ = function() {
+                    return document.body.removeEventListener("click", _this.handleBodyClick_);
+                };
+                this.listen("keydown", this.handleKeydown_);
+                this.listen(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_);
+                this.listen(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_);
+            };
+            MDCMenuSurface.prototype.destroy = function() {
+                this.unlisten("keydown", this.handleKeydown_);
+                this.unlisten(constants_1.strings.OPENED_EVENT, this.registerBodyClickListener_);
+                this.unlisten(constants_1.strings.CLOSED_EVENT, this.deregisterBodyClickListener_);
+                _super.prototype.destroy.call(this);
+            };
+            Object.defineProperty(MDCMenuSurface.prototype, "open", {
+                get: function get() {
+                    return this.foundation_.isOpen();
+                },
+                set: function set(value) {
+                    if (value) {
+                        var focusableElements = this.root_.querySelectorAll(constants_1.strings.FOCUSABLE_ELEMENTS);
+                        this.firstFocusableElement_ = focusableElements[0];
+                        this.lastFocusableElement_ = focusableElements[focusableElements.length - 1];
+                        this.foundation_.open();
+                    } else {
+                        this.foundation_.close();
+                    }
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuSurface.prototype, "quickOpen", {
+                set: function set(quickOpen) {
+                    this.foundation_.setQuickOpen(quickOpen);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCMenuSurface.prototype.hoistMenuToBody = function() {
+                document.body.appendChild(this.root_);
+                this.setIsHoisted(true);
+            };
+            MDCMenuSurface.prototype.setIsHoisted = function(isHoisted) {
+                this.foundation_.setIsHoisted(isHoisted);
+            };
+            MDCMenuSurface.prototype.setMenuSurfaceAnchorElement = function(element) {
+                this.anchorElement = element;
+            };
+            MDCMenuSurface.prototype.setFixedPosition = function(isFixed) {
+                if (isFixed) {
+                    this.root_.classList.add(constants_1.cssClasses.FIXED);
+                } else {
+                    this.root_.classList.remove(constants_1.cssClasses.FIXED);
+                }
+                this.foundation_.setFixedPosition(isFixed);
+            };
+            MDCMenuSurface.prototype.setAbsolutePosition = function(x, y) {
+                this.foundation_.setAbsolutePosition(x, y);
+                this.setIsHoisted(true);
+            };
+            MDCMenuSurface.prototype.setAnchorCorner = function(corner) {
+                this.foundation_.setAnchorCorner(corner);
+            };
+            MDCMenuSurface.prototype.setAnchorMargin = function(margin) {
+                this.foundation_.setAnchorMargin(margin);
+            };
+            MDCMenuSurface.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    hasAnchor: function hasAnchor() {
+                        return !!_this.anchorElement;
+                    },
+                    notifyClose: function notifyClose() {
+                        return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.CLOSED_EVENT, {});
+                    },
+                    notifyOpen: function notifyOpen() {
+                        return _this.emit(foundation_1.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, {});
+                    },
+                    isElementInContainer: function isElementInContainer(el) {
+                        return _this.root_.contains(el);
+                    },
+                    isRtl: function isRtl() {
+                        return getComputedStyle(_this.root_).getPropertyValue("direction") === "rtl";
+                    },
+                    setTransformOrigin: function setTransformOrigin(origin) {
+                        var propertyName = util.getTransformPropertyName(window) + "-origin";
+                        _this.root_.style.setProperty(propertyName, origin);
+                    },
+                    isFocused: function isFocused() {
+                        return document.activeElement === _this.root_;
+                    },
+                    saveFocus: function saveFocus() {
+                        _this.previousFocus_ = document.activeElement;
+                    },
+                    restoreFocus: function restoreFocus() {
+                        if (_this.root_.contains(document.activeElement)) {
+                            if (_this.previousFocus_ && _this.previousFocus_.focus) {
+                                _this.previousFocus_.focus();
+                            }
+                        }
+                    },
+                    isFirstElementFocused: function isFirstElementFocused() {
+                        return _this.firstFocusableElement_ ? _this.firstFocusableElement_ === document.activeElement : false;
+                    },
+                    isLastElementFocused: function isLastElementFocused() {
+                        return _this.lastFocusableElement_ ? _this.lastFocusableElement_ === document.activeElement : false;
+                    },
+                    focusFirstElement: function focusFirstElement() {
+                        return _this.firstFocusableElement_ && _this.firstFocusableElement_.focus && _this.firstFocusableElement_.focus();
+                    },
+                    focusLastElement: function focusLastElement() {
+                        return _this.lastFocusableElement_ && _this.lastFocusableElement_.focus && _this.lastFocusableElement_.focus();
+                    },
+                    getInnerDimensions: function getInnerDimensions() {
+                        return {
+                            width: _this.root_.offsetWidth,
+                            height: _this.root_.offsetHeight
+                        };
+                    },
+                    getAnchorDimensions: function getAnchorDimensions() {
+                        return _this.anchorElement ? _this.anchorElement.getBoundingClientRect() : null;
+                    },
+                    getWindowDimensions: function getWindowDimensions() {
+                        return {
+                            width: window.innerWidth,
+                            height: window.innerHeight
+                        };
+                    },
+                    getBodyDimensions: function getBodyDimensions() {
+                        return {
+                            width: document.body.clientWidth,
+                            height: document.body.clientHeight
+                        };
+                    },
+                    getWindowScroll: function getWindowScroll() {
+                        return {
+                            x: window.pageXOffset,
+                            y: window.pageYOffset
+                        };
+                    },
+                    setPosition: function setPosition(position) {
+                        _this.root_.style.left = "left" in position ? position.left + "px" : "";
+                        _this.root_.style.right = "right" in position ? position.right + "px" : "";
+                        _this.root_.style.top = "top" in position ? position.top + "px" : "";
+                        _this.root_.style.bottom = "bottom" in position ? position.bottom + "px" : "";
+                    },
+                    setMaxHeight: function setMaxHeight(height) {
+                        _this.root_.style.maxHeight = height;
+                    }
+                };
+                return new foundation_1.MDCMenuSurfaceFoundation(adapter);
+            };
+            return MDCMenuSurface;
+        }(component_1.MDCComponent);
+        exports.MDCMenuSurface = MDCMenuSurface;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(13);
+        var foundation_1 = __webpack_require__(5);
+        var component_3 = __webpack_require__(43);
+        var foundation_2 = __webpack_require__(8);
+        var constants_1 = __webpack_require__(18);
+        var foundation_3 = __webpack_require__(45);
+        var MDCMenu = function(_super) {
+            __extends(MDCMenu, _super);
+            function MDCMenu() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCMenu.attachTo = function(root) {
+                return new MDCMenu(root);
+            };
+            MDCMenu.prototype.initialize = function(menuSurfaceFactory, listFactory) {
+                if (menuSurfaceFactory === void 0) {
+                    menuSurfaceFactory = function menuSurfaceFactory(el) {
+                        return new component_3.MDCMenuSurface(el);
+                    };
+                }
+                if (listFactory === void 0) {
+                    listFactory = function listFactory(el) {
+                        return new component_2.MDCList(el);
+                    };
+                }
+                this.menuSurfaceFactory_ = menuSurfaceFactory;
+                this.listFactory_ = listFactory;
+            };
+            MDCMenu.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.menuSurface_ = this.menuSurfaceFactory_(this.root_);
+                var list = this.root_.querySelector(constants_1.strings.LIST_SELECTOR);
+                if (list) {
+                    this.list_ = this.listFactory_(list);
+                    this.list_.wrapFocus = true;
+                } else {
+                    this.list_ = null;
+                }
+                this.handleKeydown_ = function(evt) {
+                    return _this.foundation_.handleKeydown(evt);
+                };
+                this.handleItemAction_ = function(evt) {
+                    return _this.foundation_.handleItemAction(_this.items[evt.detail.index]);
+                };
+                this.handleMenuSurfaceOpened_ = function() {
+                    return _this.foundation_.handleMenuSurfaceOpened();
+                };
+                this.menuSurface_.listen(foundation_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_);
+                this.listen("keydown", this.handleKeydown_);
+                this.listen(foundation_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);
+            };
+            MDCMenu.prototype.destroy = function() {
+                if (this.list_) {
+                    this.list_.destroy();
+                }
+                this.menuSurface_.destroy();
+                this.menuSurface_.unlisten(foundation_2.MDCMenuSurfaceFoundation.strings.OPENED_EVENT, this.handleMenuSurfaceOpened_);
+                this.unlisten("keydown", this.handleKeydown_);
+                this.unlisten(foundation_1.MDCListFoundation.strings.ACTION_EVENT, this.handleItemAction_);
+                _super.prototype.destroy.call(this);
+            };
+            Object.defineProperty(MDCMenu.prototype, "open", {
+                get: function get() {
+                    return this.menuSurface_.open;
+                },
+                set: function set(value) {
+                    this.menuSurface_.open = value;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenu.prototype, "wrapFocus", {
+                get: function get() {
+                    return this.list_ ? this.list_.wrapFocus : false;
+                },
+                set: function set(value) {
+                    if (this.list_) {
+                        this.list_.wrapFocus = value;
+                    }
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenu.prototype, "items", {
+                get: function get() {
+                    return this.list_ ? this.list_.listElements : [];
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenu.prototype, "quickOpen", {
+                set: function set(quickOpen) {
+                    this.menuSurface_.quickOpen = quickOpen;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCMenu.prototype.setDefaultFocusState = function(focusState) {
+                this.foundation_.setDefaultFocusState(focusState);
+            };
+            MDCMenu.prototype.setAnchorCorner = function(corner) {
+                this.menuSurface_.setAnchorCorner(corner);
+            };
+            MDCMenu.prototype.setAnchorMargin = function(margin) {
+                this.menuSurface_.setAnchorMargin(margin);
+            };
+            MDCMenu.prototype.getOptionByIndex = function(index) {
+                var items = this.items;
+                if (index < items.length) {
+                    return this.items[index];
+                } else {
+                    return null;
+                }
+            };
+            MDCMenu.prototype.setFixedPosition = function(isFixed) {
+                this.menuSurface_.setFixedPosition(isFixed);
+            };
+            MDCMenu.prototype.hoistMenuToBody = function() {
+                this.menuSurface_.hoistMenuToBody();
+            };
+            MDCMenu.prototype.setIsHoisted = function(isHoisted) {
+                this.menuSurface_.setIsHoisted(isHoisted);
+            };
+            MDCMenu.prototype.setAbsolutePosition = function(x, y) {
+                this.menuSurface_.setAbsolutePosition(x, y);
+            };
+            MDCMenu.prototype.setAnchorElement = function(element) {
+                this.menuSurface_.anchorElement = element;
+            };
+            MDCMenu.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClassToElementAtIndex: function addClassToElementAtIndex(index, className) {
+                        var list = _this.items;
+                        list[index].classList.add(className);
+                    },
+                    removeClassFromElementAtIndex: function removeClassFromElementAtIndex(index, className) {
+                        var list = _this.items;
+                        list[index].classList.remove(className);
+                    },
+                    addAttributeToElementAtIndex: function addAttributeToElementAtIndex(index, attr, value) {
+                        var list = _this.items;
+                        list[index].setAttribute(attr, value);
+                    },
+                    removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex(index, attr) {
+                        var list = _this.items;
+                        list[index].removeAttribute(attr);
+                    },
+                    elementContainsClass: function elementContainsClass(element, className) {
+                        return element.classList.contains(className);
+                    },
+                    closeSurface: function closeSurface() {
+                        return _this.open = false;
+                    },
+                    getElementIndex: function getElementIndex(element) {
+                        return _this.items.indexOf(element);
+                    },
+                    getParentElement: function getParentElement(element) {
+                        return element.parentElement;
+                    },
+                    getSelectedElementIndex: function getSelectedElementIndex(selectionGroup) {
+                        var selectedListItem = selectionGroup.querySelector("." + constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);
+                        return selectedListItem ? _this.items.indexOf(selectedListItem) : -1;
+                    },
+                    notifySelected: function notifySelected(evtData) {
+                        return _this.emit(constants_1.strings.SELECTED_EVENT, {
+                            index: evtData.index,
+                            item: _this.items[evtData.index]
+                        });
+                    },
+                    getMenuItemCount: function getMenuItemCount() {
+                        return _this.items.length;
+                    },
+                    focusItemAtIndex: function focusItemAtIndex(index) {
+                        return _this.items[index].focus();
+                    },
+                    focusListRoot: function focusListRoot() {
+                        return _this.root_.querySelector(constants_1.strings.LIST_SELECTOR).focus();
+                    }
+                };
+                return new foundation_3.MDCMenuFoundation(adapter);
+            };
+            return MDCMenu;
+        }(component_1.MDCComponent);
+        exports.MDCMenu = MDCMenu;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var foundation_2 = __webpack_require__(5);
+        var foundation_3 = __webpack_require__(8);
+        var constants_1 = __webpack_require__(18);
+        var MDCMenuFoundation = function(_super) {
+            __extends(MDCMenuFoundation, _super);
+            function MDCMenuFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCMenuFoundation.defaultAdapter, adapter)) || this;
+                _this.closeAnimationEndTimerId_ = 0;
+                _this.defaultFocusState_ = constants_1.DefaultFocusState.LIST_ROOT;
+                return _this;
+            }
+            Object.defineProperty(MDCMenuFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCMenuFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClassToElementAtIndex: function addClassToElementAtIndex() {
+                            return undefined;
+                        },
+                        removeClassFromElementAtIndex: function removeClassFromElementAtIndex() {
+                            return undefined;
+                        },
+                        addAttributeToElementAtIndex: function addAttributeToElementAtIndex() {
+                            return undefined;
+                        },
+                        removeAttributeFromElementAtIndex: function removeAttributeFromElementAtIndex() {
+                            return undefined;
+                        },
+                        elementContainsClass: function elementContainsClass() {
+                            return false;
+                        },
+                        closeSurface: function closeSurface() {
+                            return undefined;
+                        },
+                        getElementIndex: function getElementIndex() {
+                            return -1;
+                        },
+                        getParentElement: function getParentElement() {
+                            return null;
+                        },
+                        getSelectedElementIndex: function getSelectedElementIndex() {
+                            return -1;
+                        },
+                        notifySelected: function notifySelected() {
+                            return undefined;
+                        },
+                        getMenuItemCount: function getMenuItemCount() {
+                            return 0;
+                        },
+                        focusItemAtIndex: function focusItemAtIndex() {
+                            return undefined;
+                        },
+                        focusListRoot: function focusListRoot() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCMenuFoundation.prototype.destroy = function() {
+                if (this.closeAnimationEndTimerId_) {
+                    clearTimeout(this.closeAnimationEndTimerId_);
+                }
+                this.adapter_.closeSurface();
+            };
+            MDCMenuFoundation.prototype.handleKeydown = function(evt) {
+                var key = evt.key, keyCode = evt.keyCode;
+                var isTab = key === "Tab" || keyCode === 9;
+                if (isTab) {
+                    this.adapter_.closeSurface();
+                }
+            };
+            MDCMenuFoundation.prototype.handleItemAction = function(listItem) {
+                var _this = this;
+                var index = this.adapter_.getElementIndex(listItem);
+                if (index < 0) {
+                    return;
+                }
+                this.adapter_.notifySelected({
+                    index: index
+                });
+                this.adapter_.closeSurface();
+                this.closeAnimationEndTimerId_ = setTimeout(function() {
+                    var selectionGroup = _this.getSelectionGroup_(listItem);
+                    if (selectionGroup) {
+                        _this.handleSelectionGroup_(selectionGroup, index);
+                    }
+                }, foundation_3.MDCMenuSurfaceFoundation.numbers.TRANSITION_CLOSE_DURATION);
+            };
+            MDCMenuFoundation.prototype.handleMenuSurfaceOpened = function() {
+                switch (this.defaultFocusState_) {
+                  case constants_1.DefaultFocusState.FIRST_ITEM:
+                    this.adapter_.focusItemAtIndex(0);
+                    break;
+
+                  case constants_1.DefaultFocusState.LAST_ITEM:
+                    this.adapter_.focusItemAtIndex(this.adapter_.getMenuItemCount() - 1);
+                    break;
+
+                  case constants_1.DefaultFocusState.NONE:
+                    break;
+
+                  default:
+                    this.adapter_.focusListRoot();
+                    break;
+                }
+            };
+            MDCMenuFoundation.prototype.setDefaultFocusState = function(focusState) {
+                this.defaultFocusState_ = focusState;
+            };
+            MDCMenuFoundation.prototype.handleSelectionGroup_ = function(selectionGroup, index) {
+                var selectedIndex = this.adapter_.getSelectedElementIndex(selectionGroup);
+                if (selectedIndex >= 0) {
+                    this.adapter_.removeAttributeFromElementAtIndex(selectedIndex, constants_1.strings.ARIA_SELECTED_ATTR);
+                    this.adapter_.removeClassFromElementAtIndex(selectedIndex, constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);
+                }
+                this.adapter_.addClassToElementAtIndex(index, constants_1.cssClasses.MENU_SELECTED_LIST_ITEM);
+                this.adapter_.addAttributeToElementAtIndex(index, constants_1.strings.ARIA_SELECTED_ATTR, "true");
+            };
+            MDCMenuFoundation.prototype.getSelectionGroup_ = function(listItem) {
+                var parent = this.adapter_.getParentElement(listItem);
+                if (!parent) {
+                    return null;
+                }
+                var isGroup = this.adapter_.elementContainsClass(parent, constants_1.cssClasses.MENU_SELECTION_GROUP);
+                while (!isGroup && parent && !this.adapter_.elementContainsClass(parent, foundation_2.MDCListFoundation.cssClasses.ROOT)) {
+                    parent = this.adapter_.getParentElement(parent);
+                    isGroup = parent ? this.adapter_.elementContainsClass(parent, constants_1.cssClasses.MENU_SELECTION_GROUP) : false;
+                }
+                if (isGroup) {
+                    return parent;
+                } else {
+                    return null;
+                }
+            };
+            return MDCMenuFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCMenuFoundation = MDCMenuFoundation;
+        exports.default = MDCMenuFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            NOTCH_ELEMENT_SELECTOR: ".mdc-notched-outline__notch"
+        };
+        exports.strings = strings;
+        var numbers = {
+            NOTCH_ELEMENT_PADDING: 8
+        };
+        exports.numbers = numbers;
+        var cssClasses = {
+            NO_LABEL: "mdc-notched-outline--no-label",
+            OUTLINE_NOTCHED: "mdc-notched-outline--notched",
+            OUTLINE_UPGRADED: "mdc-notched-outline--upgraded"
+        };
+        exports.cssClasses = cssClasses;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(46);
+        var MDCNotchedOutlineFoundation = function(_super) {
+            __extends(MDCNotchedOutlineFoundation, _super);
+            function MDCNotchedOutlineFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCNotchedOutlineFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCNotchedOutlineFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCNotchedOutlineFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCNotchedOutlineFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCNotchedOutlineFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        setNotchWidthProperty: function setNotchWidthProperty() {
+                            return undefined;
+                        },
+                        removeNotchWidthProperty: function removeNotchWidthProperty() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCNotchedOutlineFoundation.prototype.notch = function(notchWidth) {
+                var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
+                if (notchWidth > 0) {
+                    notchWidth += constants_1.numbers.NOTCH_ELEMENT_PADDING;
+                }
+                this.adapter_.setNotchWidthProperty(notchWidth);
+                this.adapter_.addClass(OUTLINE_NOTCHED);
+            };
+            MDCNotchedOutlineFoundation.prototype.closeNotch = function() {
+                var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;
+                this.adapter_.removeClass(OUTLINE_NOTCHED);
+                this.adapter_.removeNotchWidthProperty();
+            };
+            return MDCNotchedOutlineFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCNotchedOutlineFoundation = MDCNotchedOutlineFoundation;
+        exports.default = MDCNotchedOutlineFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(124);
+        var MDCRadioFoundation = function(_super) {
+            __extends(MDCRadioFoundation, _super);
+            function MDCRadioFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCRadioFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCRadioFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRadioFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRadioFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        setNativeControlDisabled: function setNativeControlDisabled() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCRadioFoundation.prototype.setDisabled = function(disabled) {
+                var DISABLED = MDCRadioFoundation.cssClasses.DISABLED;
+                this.adapter_.setNativeControlDisabled(disabled);
+                if (disabled) {
+                    this.adapter_.addClass(DISABLED);
+                } else {
+                    this.adapter_.removeClass(DISABLED);
+                }
+            };
+            return MDCRadioFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCRadioFoundation = MDCRadioFoundation;
+        exports.default = MDCRadioFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            DISABLED: "mdc-select--disabled",
+            FOCUSED: "mdc-select--focused",
+            INVALID: "mdc-select--invalid",
+            OUTLINED: "mdc-select--outlined",
+            REQUIRED: "mdc-select--required",
+            ROOT: "mdc-select",
+            SELECTED_ITEM_CLASS: "mdc-list-item--selected",
+            WITH_LEADING_ICON: "mdc-select--with-leading-icon"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ARIA_CONTROLS: "aria-controls",
+            ARIA_SELECTED_ATTR: "aria-selected",
+            CHANGE_EVENT: "MDCSelect:change",
+            ENHANCED_VALUE_ATTR: "data-value",
+            HIDDEN_INPUT_SELECTOR: 'input[type="hidden"]',
+            LABEL_SELECTOR: ".mdc-floating-label",
+            LEADING_ICON_SELECTOR: ".mdc-select__icon",
+            LINE_RIPPLE_SELECTOR: ".mdc-line-ripple",
+            MENU_SELECTOR: ".mdc-select__menu",
+            NATIVE_CONTROL_SELECTOR: ".mdc-select__native-control",
+            OUTLINE_SELECTOR: ".mdc-notched-outline",
+            SELECTED_ITEM_SELECTOR: "." + cssClasses.SELECTED_ITEM_CLASS,
+            SELECTED_TEXT_SELECTOR: ".mdc-select__selected-text"
+        };
+        exports.strings = strings;
+        var numbers = {
+            LABEL_SCALE: .75
+        };
+        exports.numbers = numbers;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(49);
+        var MDCSelectFoundation = function(_super) {
+            __extends(MDCSelectFoundation, _super);
+            function MDCSelectFoundation(adapter, foundationMap) {
+                if (foundationMap === void 0) {
+                    foundationMap = {};
+                }
+                var _this = _super.call(this, __assign({}, MDCSelectFoundation.defaultAdapter, adapter)) || this;
+                _this.leadingIcon_ = foundationMap.leadingIcon;
+                _this.helperText_ = foundationMap.helperText;
+                return _this;
+            }
+            Object.defineProperty(MDCSelectFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        activateBottomLine: function activateBottomLine() {
+                            return undefined;
+                        },
+                        deactivateBottomLine: function deactivateBottomLine() {
+                            return undefined;
+                        },
+                        setValue: function setValue() {
+                            return undefined;
+                        },
+                        getValue: function getValue() {
+                            return "";
+                        },
+                        floatLabel: function floatLabel() {
+                            return undefined;
+                        },
+                        getLabelWidth: function getLabelWidth() {
+                            return 0;
+                        },
+                        hasOutline: function hasOutline() {
+                            return false;
+                        },
+                        notchOutline: function notchOutline() {
+                            return undefined;
+                        },
+                        closeOutline: function closeOutline() {
+                            return undefined;
+                        },
+                        openMenu: function openMenu() {
+                            return undefined;
+                        },
+                        closeMenu: function closeMenu() {
+                            return undefined;
+                        },
+                        isMenuOpen: function isMenuOpen() {
+                            return false;
+                        },
+                        setSelectedIndex: function setSelectedIndex() {
+                            return undefined;
+                        },
+                        setDisabled: function setDisabled() {
+                            return undefined;
+                        },
+                        setRippleCenter: function setRippleCenter() {
+                            return undefined;
+                        },
+                        notifyChange: function notifyChange() {
+                            return undefined;
+                        },
+                        checkValidity: function checkValidity() {
+                            return false;
+                        },
+                        setValid: function setValid() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelectFoundation.prototype.setSelectedIndex = function(index) {
+                this.adapter_.setSelectedIndex(index);
+                this.adapter_.closeMenu();
+                var didChange = true;
+                this.handleChange(didChange);
+            };
+            MDCSelectFoundation.prototype.setValue = function(value) {
+                this.adapter_.setValue(value);
+                var didChange = true;
+                this.handleChange(didChange);
+            };
+            MDCSelectFoundation.prototype.getValue = function() {
+                return this.adapter_.getValue();
+            };
+            MDCSelectFoundation.prototype.setDisabled = function(isDisabled) {
+                if (isDisabled) {
+                    this.adapter_.addClass(constants_1.cssClasses.DISABLED);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.DISABLED);
+                }
+                this.adapter_.setDisabled(isDisabled);
+                this.adapter_.closeMenu();
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setDisabled(isDisabled);
+                }
+            };
+            MDCSelectFoundation.prototype.setHelperTextContent = function(content) {
+                if (this.helperText_) {
+                    this.helperText_.setContent(content);
+                }
+            };
+            MDCSelectFoundation.prototype.layout = function() {
+                var openNotch = this.getValue().length > 0;
+                this.notchOutline(openNotch);
+            };
+            MDCSelectFoundation.prototype.handleChange = function(didChange) {
+                if (didChange === void 0) {
+                    didChange = true;
+                }
+                var value = this.getValue();
+                var optionHasValue = value.length > 0;
+                var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED);
+                this.notchOutline(optionHasValue);
+                if (!this.adapter_.hasClass(constants_1.cssClasses.FOCUSED)) {
+                    this.adapter_.floatLabel(optionHasValue);
+                }
+                if (didChange) {
+                    this.adapter_.notifyChange(value);
+                    if (isRequired) {
+                        this.setValid(this.isValid());
+                        if (this.helperText_) {
+                            this.helperText_.setValidity(this.isValid());
+                        }
+                    }
+                }
+            };
+            MDCSelectFoundation.prototype.handleFocus = function() {
+                this.adapter_.addClass(constants_1.cssClasses.FOCUSED);
+                this.adapter_.floatLabel(true);
+                this.notchOutline(true);
+                this.adapter_.activateBottomLine();
+                if (this.helperText_) {
+                    this.helperText_.showToScreenReader();
+                }
+            };
+            MDCSelectFoundation.prototype.handleBlur = function() {
+                if (this.adapter_.isMenuOpen()) {
+                    return;
+                }
+                this.adapter_.removeClass(constants_1.cssClasses.FOCUSED);
+                this.handleChange(false);
+                this.adapter_.deactivateBottomLine();
+                var isRequired = this.adapter_.hasClass(constants_1.cssClasses.REQUIRED);
+                if (isRequired) {
+                    this.setValid(this.isValid());
+                    if (this.helperText_) {
+                        this.helperText_.setValidity(this.isValid());
+                    }
+                }
+            };
+            MDCSelectFoundation.prototype.handleClick = function(normalizedX) {
+                if (this.adapter_.isMenuOpen()) {
+                    return;
+                }
+                this.adapter_.setRippleCenter(normalizedX);
+                this.adapter_.openMenu();
+            };
+            MDCSelectFoundation.prototype.handleKeydown = function(event) {
+                if (this.adapter_.isMenuOpen()) {
+                    return;
+                }
+                var isEnter = event.key === "Enter" || event.keyCode === 13;
+                var isSpace = event.key === "Space" || event.keyCode === 32;
+                var arrowUp = event.key === "ArrowUp" || event.keyCode === 38;
+                var arrowDown = event.key === "ArrowDown" || event.keyCode === 40;
+                if (this.adapter_.hasClass(constants_1.cssClasses.FOCUSED) && (isEnter || isSpace || arrowUp || arrowDown)) {
+                    this.adapter_.openMenu();
+                    event.preventDefault();
+                }
+            };
+            MDCSelectFoundation.prototype.notchOutline = function(openNotch) {
+                if (!this.adapter_.hasOutline()) {
+                    return;
+                }
+                var isFocused = this.adapter_.hasClass(constants_1.cssClasses.FOCUSED);
+                if (openNotch) {
+                    var labelScale = constants_1.numbers.LABEL_SCALE;
+                    var labelWidth = this.adapter_.getLabelWidth() * labelScale;
+                    this.adapter_.notchOutline(labelWidth);
+                } else if (!isFocused) {
+                    this.adapter_.closeOutline();
+                }
+            };
+            MDCSelectFoundation.prototype.setLeadingIconAriaLabel = function(label) {
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setAriaLabel(label);
+                }
+            };
+            MDCSelectFoundation.prototype.setLeadingIconContent = function(content) {
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setContent(content);
+                }
+            };
+            MDCSelectFoundation.prototype.setValid = function(isValid) {
+                this.adapter_.setValid(isValid);
+            };
+            MDCSelectFoundation.prototype.isValid = function() {
+                return this.adapter_.checkValidity();
+            };
+            return MDCSelectFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSelectFoundation = MDCSelectFoundation;
+        exports.default = MDCSelectFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(52);
+        var MDCSelectHelperText = function(_super) {
+            __extends(MDCSelectHelperText, _super);
+            function MDCSelectHelperText() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSelectHelperText.attachTo = function(root) {
+                return new MDCSelectHelperText(root);
+            };
+            Object.defineProperty(MDCSelectHelperText.prototype, "foundation", {
+                get: function get() {
+                    return this.foundation_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelectHelperText.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    setAttr: function setAttr(attr, value) {
+                        return _this.root_.setAttribute(attr, value);
+                    },
+                    removeAttr: function removeAttr(attr) {
+                        return _this.root_.removeAttribute(attr);
+                    },
+                    setContent: function setContent(content) {
+                        _this.root_.textContent = content;
+                    }
+                };
+                return new foundation_1.MDCSelectHelperTextFoundation(adapter);
+            };
+            return MDCSelectHelperText;
+        }(component_1.MDCComponent);
+        exports.MDCSelectHelperText = MDCSelectHelperText;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(128);
+        var MDCSelectHelperTextFoundation = function(_super) {
+            __extends(MDCSelectHelperTextFoundation, _super);
+            function MDCSelectHelperTextFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCSelectHelperTextFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCSelectHelperTextFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectHelperTextFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectHelperTextFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        },
+                        removeAttr: function removeAttr() {
+                            return undefined;
+                        },
+                        setContent: function setContent() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelectHelperTextFoundation.prototype.setContent = function(content) {
+                this.adapter_.setContent(content);
+            };
+            MDCSelectHelperTextFoundation.prototype.setPersistent = function(isPersistent) {
+                if (isPersistent) {
+                    this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                }
+            };
+            MDCSelectHelperTextFoundation.prototype.setValidation = function(isValidation) {
+                if (isValidation) {
+                    this.adapter_.addClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                }
+            };
+            MDCSelectHelperTextFoundation.prototype.showToScreenReader = function() {
+                this.adapter_.removeAttr(constants_1.strings.ARIA_HIDDEN);
+            };
+            MDCSelectHelperTextFoundation.prototype.setValidity = function(selectIsValid) {
+                var helperTextIsPersistent = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_PERSISTENT);
+                var helperTextIsValidationMsg = this.adapter_.hasClass(constants_1.cssClasses.HELPER_TEXT_VALIDATION_MSG);
+                var validationMsgNeedsDisplay = helperTextIsValidationMsg && !selectIsValid;
+                if (validationMsgNeedsDisplay) {
+                    this.adapter_.setAttr(constants_1.strings.ROLE, "alert");
+                } else {
+                    this.adapter_.removeAttr(constants_1.strings.ROLE);
+                }
+                if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {
+                    this.hide_();
+                }
+            };
+            MDCSelectHelperTextFoundation.prototype.hide_ = function() {
+                this.adapter_.setAttr(constants_1.strings.ARIA_HIDDEN, "true");
+            };
+            return MDCSelectHelperTextFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSelectHelperTextFoundation = MDCSelectHelperTextFoundation;
+        exports.default = MDCSelectHelperTextFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(54);
+        var MDCSelectIcon = function(_super) {
+            __extends(MDCSelectIcon, _super);
+            function MDCSelectIcon() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSelectIcon.attachTo = function(root) {
+                return new MDCSelectIcon(root);
+            };
+            Object.defineProperty(MDCSelectIcon.prototype, "foundation", {
+                get: function get() {
+                    return this.foundation_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelectIcon.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    getAttr: function getAttr(attr) {
+                        return _this.root_.getAttribute(attr);
+                    },
+                    setAttr: function setAttr(attr, value) {
+                        return _this.root_.setAttribute(attr, value);
+                    },
+                    removeAttr: function removeAttr(attr) {
+                        return _this.root_.removeAttribute(attr);
+                    },
+                    setContent: function setContent(content) {
+                        _this.root_.textContent = content;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    },
+                    notifyIconAction: function notifyIconAction() {
+                        return _this.emit(foundation_1.MDCSelectIconFoundation.strings.ICON_EVENT, {}, true);
+                    }
+                };
+                return new foundation_1.MDCSelectIconFoundation(adapter);
+            };
+            return MDCSelectIcon;
+        }(component_1.MDCComponent);
+        exports.MDCSelectIcon = MDCSelectIcon;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(129);
+        var INTERACTION_EVENTS = [ "click", "keydown" ];
+        var MDCSelectIconFoundation = function(_super) {
+            __extends(MDCSelectIconFoundation, _super);
+            function MDCSelectIconFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCSelectIconFoundation.defaultAdapter, adapter)) || this;
+                _this.savedTabIndex_ = null;
+                _this.interactionHandler_ = function(evt) {
+                    return _this.handleInteraction(evt);
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCSelectIconFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelectIconFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        getAttr: function getAttr() {
+                            return null;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        },
+                        removeAttr: function removeAttr() {
+                            return undefined;
+                        },
+                        setContent: function setContent() {
+                            return undefined;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        },
+                        notifyIconAction: function notifyIconAction() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelectIconFoundation.prototype.init = function() {
+                var _this = this;
+                this.savedTabIndex_ = this.adapter_.getAttr("tabindex");
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_);
+                });
+            };
+            MDCSelectIconFoundation.prototype.destroy = function() {
+                var _this = this;
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_);
+                });
+            };
+            MDCSelectIconFoundation.prototype.setDisabled = function(disabled) {
+                if (!this.savedTabIndex_) {
+                    return;
+                }
+                if (disabled) {
+                    this.adapter_.setAttr("tabindex", "-1");
+                    this.adapter_.removeAttr("role");
+                } else {
+                    this.adapter_.setAttr("tabindex", this.savedTabIndex_);
+                    this.adapter_.setAttr("role", constants_1.strings.ICON_ROLE);
+                }
+            };
+            MDCSelectIconFoundation.prototype.setAriaLabel = function(label) {
+                this.adapter_.setAttr("aria-label", label);
+            };
+            MDCSelectIconFoundation.prototype.setContent = function(content) {
+                this.adapter_.setContent(content);
+            };
+            MDCSelectIconFoundation.prototype.handleInteraction = function(evt) {
+                var isEnterKey = evt.key === "Enter" || evt.keyCode === 13;
+                if (evt.type === "click" || isEnterKey) {
+                    this.adapter_.notifyIconAction();
+                }
+            };
+            return MDCSelectIconFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSelectIconFoundation = MDCSelectIconFoundation;
+        exports.default = MDCSelectIconFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ACTIVE: "mdc-slider--active",
+            DISABLED: "mdc-slider--disabled",
+            DISCRETE: "mdc-slider--discrete",
+            FOCUS: "mdc-slider--focus",
+            HAS_TRACK_MARKER: "mdc-slider--display-markers",
+            IN_TRANSIT: "mdc-slider--in-transit",
+            IS_DISCRETE: "mdc-slider--discrete"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ARIA_DISABLED: "aria-disabled",
+            ARIA_VALUEMAX: "aria-valuemax",
+            ARIA_VALUEMIN: "aria-valuemin",
+            ARIA_VALUENOW: "aria-valuenow",
+            CHANGE_EVENT: "MDCSlider:change",
+            INPUT_EVENT: "MDCSlider:input",
+            LAST_TRACK_MARKER_SELECTOR: ".mdc-slider__track-marker:last-child",
+            PIN_VALUE_MARKER_SELECTOR: ".mdc-slider__pin-value-marker",
+            STEP_DATA_ATTR: "data-step",
+            THUMB_CONTAINER_SELECTOR: ".mdc-slider__thumb-container",
+            TRACK_MARKER_CONTAINER_SELECTOR: ".mdc-slider__track-marker-container",
+            TRACK_SELECTOR: ".mdc-slider__track"
+        };
+        exports.strings = strings;
+        var numbers = {
+            PAGE_FACTOR: 4
+        };
+        exports.numbers = numbers;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util_1 = __webpack_require__(10);
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(55);
+        var DOWN_EVENTS = [ "mousedown", "pointerdown", "touchstart" ];
+        var UP_EVENTS = [ "mouseup", "pointerup", "touchend" ];
+        var MOVE_EVENT_MAP = {
+            mousedown: "mousemove",
+            pointerdown: "pointermove",
+            touchstart: "touchmove"
+        };
+        var KEY_IDS = {
+            ARROW_DOWN: "ArrowDown",
+            ARROW_LEFT: "ArrowLeft",
+            ARROW_RIGHT: "ArrowRight",
+            ARROW_UP: "ArrowUp",
+            END: "End",
+            HOME: "Home",
+            PAGE_DOWN: "PageDown",
+            PAGE_UP: "PageUp"
+        };
+        var MDCSliderFoundation = function(_super) {
+            __extends(MDCSliderFoundation, _super);
+            function MDCSliderFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCSliderFoundation.defaultAdapter, adapter)) || this;
+                _this.savedTabIndex_ = NaN;
+                _this.active_ = false;
+                _this.inTransit_ = false;
+                _this.isDiscrete_ = false;
+                _this.hasTrackMarker_ = false;
+                _this.handlingThumbTargetEvt_ = false;
+                _this.min_ = 0;
+                _this.max_ = 100;
+                _this.step_ = 0;
+                _this.value_ = 0;
+                _this.disabled_ = false;
+                _this.preventFocusState_ = false;
+                _this.thumbContainerPointerHandler_ = function() {
+                    return _this.handlingThumbTargetEvt_ = true;
+                };
+                _this.interactionStartHandler_ = function(evt) {
+                    return _this.handleDown_(evt);
+                };
+                _this.keydownHandler_ = function(evt) {
+                    return _this.handleKeydown_(evt);
+                };
+                _this.focusHandler_ = function() {
+                    return _this.handleFocus_();
+                };
+                _this.blurHandler_ = function() {
+                    return _this.handleBlur_();
+                };
+                _this.resizeHandler_ = function() {
+                    return _this.layout();
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCSliderFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSliderFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSliderFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSliderFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        getAttribute: function getAttribute() {
+                            return null;
+                        },
+                        setAttribute: function setAttribute() {
+                            return undefined;
+                        },
+                        removeAttribute: function removeAttribute() {
+                            return undefined;
+                        },
+                        computeBoundingRect: function computeBoundingRect() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        getTabIndex: function getTabIndex() {
+                            return 0;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        },
+                        registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler() {
+                            return undefined;
+                        },
+                        registerBodyInteractionHandler: function registerBodyInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler() {
+                            return undefined;
+                        },
+                        registerResizeHandler: function registerResizeHandler() {
+                            return undefined;
+                        },
+                        deregisterResizeHandler: function deregisterResizeHandler() {
+                            return undefined;
+                        },
+                        notifyInput: function notifyInput() {
+                            return undefined;
+                        },
+                        notifyChange: function notifyChange() {
+                            return undefined;
+                        },
+                        setThumbContainerStyleProperty: function setThumbContainerStyleProperty() {
+                            return undefined;
+                        },
+                        setTrackStyleProperty: function setTrackStyleProperty() {
+                            return undefined;
+                        },
+                        setMarkerValue: function setMarkerValue() {
+                            return undefined;
+                        },
+                        appendTrackMarkers: function appendTrackMarkers() {
+                            return undefined;
+                        },
+                        removeTrackMarkers: function removeTrackMarkers() {
+                            return undefined;
+                        },
+                        setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty() {
+                            return undefined;
+                        },
+                        isRTL: function isRTL() {
+                            return false;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSliderFoundation.prototype.init = function() {
+                var _this = this;
+                this.isDiscrete_ = this.adapter_.hasClass(constants_1.cssClasses.IS_DISCRETE);
+                this.hasTrackMarker_ = this.adapter_.hasClass(constants_1.cssClasses.HAS_TRACK_MARKER);
+                DOWN_EVENTS.forEach(function(evtName) {
+                    _this.adapter_.registerInteractionHandler(evtName, _this.interactionStartHandler_);
+                    _this.adapter_.registerThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_);
+                });
+                this.adapter_.registerInteractionHandler("keydown", this.keydownHandler_);
+                this.adapter_.registerInteractionHandler("focus", this.focusHandler_);
+                this.adapter_.registerInteractionHandler("blur", this.blurHandler_);
+                this.adapter_.registerResizeHandler(this.resizeHandler_);
+                this.layout();
+                if (this.isDiscrete_ && this.getStep() === 0) {
+                    this.step_ = 1;
+                }
+            };
+            MDCSliderFoundation.prototype.destroy = function() {
+                var _this = this;
+                DOWN_EVENTS.forEach(function(evtName) {
+                    _this.adapter_.deregisterInteractionHandler(evtName, _this.interactionStartHandler_);
+                    _this.adapter_.deregisterThumbContainerInteractionHandler(evtName, _this.thumbContainerPointerHandler_);
+                });
+                this.adapter_.deregisterInteractionHandler("keydown", this.keydownHandler_);
+                this.adapter_.deregisterInteractionHandler("focus", this.focusHandler_);
+                this.adapter_.deregisterInteractionHandler("blur", this.blurHandler_);
+                this.adapter_.deregisterResizeHandler(this.resizeHandler_);
+            };
+            MDCSliderFoundation.prototype.setupTrackMarker = function() {
+                if (this.isDiscrete_ && this.hasTrackMarker_ && this.getStep() !== 0) {
+                    var min = this.getMin();
+                    var max = this.getMax();
+                    var step = this.getStep();
+                    var numMarkers = (max - min) / step;
+                    var indivisible = Math.ceil(numMarkers) !== numMarkers;
+                    if (indivisible) {
+                        numMarkers = Math.ceil(numMarkers);
+                    }
+                    this.adapter_.removeTrackMarkers();
+                    this.adapter_.appendTrackMarkers(numMarkers);
+                    if (indivisible) {
+                        var lastStepRatio = (max - numMarkers * step) / step + 1;
+                        this.adapter_.setLastTrackMarkersStyleProperty("flex-grow", String(lastStepRatio));
+                    }
+                }
+            };
+            MDCSliderFoundation.prototype.layout = function() {
+                this.rect_ = this.adapter_.computeBoundingRect();
+                this.updateUIForCurrentValue_();
+            };
+            MDCSliderFoundation.prototype.getValue = function() {
+                return this.value_;
+            };
+            MDCSliderFoundation.prototype.setValue = function(value) {
+                this.setValue_(value, false);
+            };
+            MDCSliderFoundation.prototype.getMax = function() {
+                return this.max_;
+            };
+            MDCSliderFoundation.prototype.setMax = function(max) {
+                if (max < this.min_) {
+                    throw new Error("Cannot set max to be less than the slider's minimum value");
+                }
+                this.max_ = max;
+                this.setValue_(this.value_, false, true);
+                this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMAX, String(this.max_));
+                this.setupTrackMarker();
+            };
+            MDCSliderFoundation.prototype.getMin = function() {
+                return this.min_;
+            };
+            MDCSliderFoundation.prototype.setMin = function(min) {
+                if (min > this.max_) {
+                    throw new Error("Cannot set min to be greater than the slider's maximum value");
+                }
+                this.min_ = min;
+                this.setValue_(this.value_, false, true);
+                this.adapter_.setAttribute(constants_1.strings.ARIA_VALUEMIN, String(this.min_));
+                this.setupTrackMarker();
+            };
+            MDCSliderFoundation.prototype.getStep = function() {
+                return this.step_;
+            };
+            MDCSliderFoundation.prototype.setStep = function(step) {
+                if (step < 0) {
+                    throw new Error("Step cannot be set to a negative number");
+                }
+                if (this.isDiscrete_ && (typeof step !== "number" || step < 1)) {
+                    step = 1;
+                }
+                this.step_ = step;
+                this.setValue_(this.value_, false, true);
+                this.setupTrackMarker();
+            };
+            MDCSliderFoundation.prototype.isDisabled = function() {
+                return this.disabled_;
+            };
+            MDCSliderFoundation.prototype.setDisabled = function(disabled) {
+                this.disabled_ = disabled;
+                this.toggleClass_(constants_1.cssClasses.DISABLED, this.disabled_);
+                if (this.disabled_) {
+                    this.savedTabIndex_ = this.adapter_.getTabIndex();
+                    this.adapter_.setAttribute(constants_1.strings.ARIA_DISABLED, "true");
+                    this.adapter_.removeAttribute("tabindex");
+                } else {
+                    this.adapter_.removeAttribute(constants_1.strings.ARIA_DISABLED);
+                    if (!isNaN(this.savedTabIndex_)) {
+                        this.adapter_.setAttribute("tabindex", String(this.savedTabIndex_));
+                    }
+                }
+            };
+            MDCSliderFoundation.prototype.handleDown_ = function(downEvent) {
+                var _this = this;
+                if (this.disabled_) {
+                    return;
+                }
+                this.preventFocusState_ = true;
+                this.setInTransit_(!this.handlingThumbTargetEvt_);
+                this.handlingThumbTargetEvt_ = false;
+                this.setActive_(true);
+                var moveHandler = function moveHandler(moveEvent) {
+                    _this.handleMove_(moveEvent);
+                };
+                var moveEventType = MOVE_EVENT_MAP[downEvent.type];
+                var upHandler = function upHandler() {
+                    _this.handleUp_();
+                    _this.adapter_.deregisterBodyInteractionHandler(moveEventType, moveHandler);
+                    UP_EVENTS.forEach(function(evtName) {
+                        return _this.adapter_.deregisterBodyInteractionHandler(evtName, upHandler);
+                    });
+                };
+                this.adapter_.registerBodyInteractionHandler(moveEventType, moveHandler);
+                UP_EVENTS.forEach(function(evtName) {
+                    return _this.adapter_.registerBodyInteractionHandler(evtName, upHandler);
+                });
+                this.setValueFromEvt_(downEvent);
+            };
+            MDCSliderFoundation.prototype.handleMove_ = function(evt) {
+                evt.preventDefault();
+                this.setValueFromEvt_(evt);
+            };
+            MDCSliderFoundation.prototype.handleUp_ = function() {
+                this.setActive_(false);
+                this.adapter_.notifyChange();
+            };
+            MDCSliderFoundation.prototype.getPageX_ = function(evt) {
+                if (evt.targetTouches && evt.targetTouches.length > 0) {
+                    return evt.targetTouches[0].pageX;
+                }
+                return evt.pageX;
+            };
+            MDCSliderFoundation.prototype.setValueFromEvt_ = function(evt) {
+                var pageX = this.getPageX_(evt);
+                var value = this.computeValueFromPageX_(pageX);
+                this.setValue_(value, true);
+            };
+            MDCSliderFoundation.prototype.computeValueFromPageX_ = function(pageX) {
+                var _a = this, max = _a.max_, min = _a.min_;
+                var xPos = pageX - this.rect_.left;
+                var pctComplete = xPos / this.rect_.width;
+                if (this.adapter_.isRTL()) {
+                    pctComplete = 1 - pctComplete;
+                }
+                return min + pctComplete * (max - min);
+            };
+            MDCSliderFoundation.prototype.handleKeydown_ = function(evt) {
+                var keyId = this.getKeyId_(evt);
+                var value = this.getValueForKeyId_(keyId);
+                if (isNaN(value)) {
+                    return;
+                }
+                evt.preventDefault();
+                this.adapter_.addClass(constants_1.cssClasses.FOCUS);
+                this.setValue_(value, true);
+                this.adapter_.notifyChange();
+            };
+            MDCSliderFoundation.prototype.getKeyId_ = function(kbdEvt) {
+                if (kbdEvt.key === KEY_IDS.ARROW_LEFT || kbdEvt.keyCode === 37) {
+                    return KEY_IDS.ARROW_LEFT;
+                }
+                if (kbdEvt.key === KEY_IDS.ARROW_RIGHT || kbdEvt.keyCode === 39) {
+                    return KEY_IDS.ARROW_RIGHT;
+                }
+                if (kbdEvt.key === KEY_IDS.ARROW_UP || kbdEvt.keyCode === 38) {
+                    return KEY_IDS.ARROW_UP;
+                }
+                if (kbdEvt.key === KEY_IDS.ARROW_DOWN || kbdEvt.keyCode === 40) {
+                    return KEY_IDS.ARROW_DOWN;
+                }
+                if (kbdEvt.key === KEY_IDS.HOME || kbdEvt.keyCode === 36) {
+                    return KEY_IDS.HOME;
+                }
+                if (kbdEvt.key === KEY_IDS.END || kbdEvt.keyCode === 35) {
+                    return KEY_IDS.END;
+                }
+                if (kbdEvt.key === KEY_IDS.PAGE_UP || kbdEvt.keyCode === 33) {
+                    return KEY_IDS.PAGE_UP;
+                }
+                if (kbdEvt.key === KEY_IDS.PAGE_DOWN || kbdEvt.keyCode === 34) {
+                    return KEY_IDS.PAGE_DOWN;
+                }
+                return "";
+            };
+            MDCSliderFoundation.prototype.getValueForKeyId_ = function(keyId) {
+                var _a = this, max = _a.max_, min = _a.min_, step = _a.step_;
+                var delta = step || (max - min) / 100;
+                var valueNeedsToBeFlipped = this.adapter_.isRTL() && (keyId === KEY_IDS.ARROW_LEFT || keyId === KEY_IDS.ARROW_RIGHT);
+                if (valueNeedsToBeFlipped) {
+                    delta = -delta;
+                }
+                switch (keyId) {
+                  case KEY_IDS.ARROW_LEFT:
+                  case KEY_IDS.ARROW_DOWN:
+                    return this.value_ - delta;
+
+                  case KEY_IDS.ARROW_RIGHT:
+                  case KEY_IDS.ARROW_UP:
+                    return this.value_ + delta;
+
+                  case KEY_IDS.HOME:
+                    return this.min_;
+
+                  case KEY_IDS.END:
+                    return this.max_;
+
+                  case KEY_IDS.PAGE_UP:
+                    return this.value_ + delta * constants_1.numbers.PAGE_FACTOR;
+
+                  case KEY_IDS.PAGE_DOWN:
+                    return this.value_ - delta * constants_1.numbers.PAGE_FACTOR;
+
+                  default:
+                    return NaN;
+                }
+            };
+            MDCSliderFoundation.prototype.handleFocus_ = function() {
+                if (this.preventFocusState_) {
+                    return;
+                }
+                this.adapter_.addClass(constants_1.cssClasses.FOCUS);
+            };
+            MDCSliderFoundation.prototype.handleBlur_ = function() {
+                this.preventFocusState_ = false;
+                this.adapter_.removeClass(constants_1.cssClasses.FOCUS);
+            };
+            MDCSliderFoundation.prototype.setValue_ = function(value, shouldFireInput, force) {
+                if (force === void 0) {
+                    force = false;
+                }
+                if (value === this.value_ && !force) {
+                    return;
+                }
+                var _a = this, min = _a.min_, max = _a.max_;
+                var valueSetToBoundary = value === min || value === max;
+                if (this.step_ && !valueSetToBoundary) {
+                    value = this.quantize_(value);
+                }
+                if (value < min) {
+                    value = min;
+                } else if (value > max) {
+                    value = max;
+                }
+                this.value_ = value;
+                this.adapter_.setAttribute(constants_1.strings.ARIA_VALUENOW, String(this.value_));
+                this.updateUIForCurrentValue_();
+                if (shouldFireInput) {
+                    this.adapter_.notifyInput();
+                    if (this.isDiscrete_) {
+                        this.adapter_.setMarkerValue(value);
+                    }
+                }
+            };
+            MDCSliderFoundation.prototype.quantize_ = function(value) {
+                var numSteps = Math.round(value / this.step_);
+                return numSteps * this.step_;
+            };
+            MDCSliderFoundation.prototype.updateUIForCurrentValue_ = function() {
+                var _this = this;
+                var _a = this, max = _a.max_, min = _a.min_, value = _a.value_;
+                var pctComplete = (value - min) / (max - min);
+                var translatePx = pctComplete * this.rect_.width;
+                if (this.adapter_.isRTL()) {
+                    translatePx = this.rect_.width - translatePx;
+                }
+                var transformProp = util_1.getCorrectPropertyName(window, "transform");
+                var transitionendEvtName = util_1.getCorrectEventName(window, "transitionend");
+                if (this.inTransit_) {
+                    var onTransitionEnd_1 = function onTransitionEnd_1() {
+                        _this.setInTransit_(false);
+                        _this.adapter_.deregisterThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1);
+                    };
+                    this.adapter_.registerThumbContainerInteractionHandler(transitionendEvtName, onTransitionEnd_1);
+                }
+                requestAnimationFrame(function() {
+                    _this.adapter_.setThumbContainerStyleProperty(transformProp, "translateX(" + translatePx + "px) translateX(-50%)");
+                    _this.adapter_.setTrackStyleProperty(transformProp, "scaleX(" + pctComplete + ")");
+                });
+            };
+            MDCSliderFoundation.prototype.setActive_ = function(active) {
+                this.active_ = active;
+                this.toggleClass_(constants_1.cssClasses.ACTIVE, this.active_);
+            };
+            MDCSliderFoundation.prototype.setInTransit_ = function(inTransit) {
+                this.inTransit_ = inTransit;
+                this.toggleClass_(constants_1.cssClasses.IN_TRANSIT, this.inTransit_);
+            };
+            MDCSliderFoundation.prototype.toggleClass_ = function(className, shouldBePresent) {
+                if (shouldBePresent) {
+                    this.adapter_.addClass(className);
+                } else {
+                    this.adapter_.removeClass(className);
+                }
+            };
+            return MDCSliderFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSliderFoundation = MDCSliderFoundation;
+        exports.default = MDCSliderFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(20);
+        var ARIA_LIVE_DELAY_MS = constants_1.numbers.ARIA_LIVE_DELAY_MS;
+        var ARIA_LIVE_LABEL_TEXT_ATTR = constants_1.strings.ARIA_LIVE_LABEL_TEXT_ATTR;
+        function announce(ariaEl, labelEl) {
+            if (labelEl === void 0) {
+                labelEl = ariaEl;
+            }
+            var priority = ariaEl.getAttribute("aria-live");
+            var labelText = labelEl.textContent.trim();
+            if (!labelText || !priority) {
+                return;
+            }
+            ariaEl.setAttribute("aria-live", "off");
+            labelEl.textContent = "";
+            labelEl.innerHTML = '<span style="display: inline-block; width: 0; height: 1px;">&nbsp;</span>';
+            labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);
+            setTimeout(function() {
+                ariaEl.setAttribute("aria-live", priority);
+                labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);
+                labelEl.textContent = labelText;
+            }, ARIA_LIVE_DELAY_MS);
+        }
+        exports.announce = announce;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(20);
+        var OPENING = constants_1.cssClasses.OPENING, OPEN = constants_1.cssClasses.OPEN, CLOSING = constants_1.cssClasses.CLOSING;
+        var REASON_ACTION = constants_1.strings.REASON_ACTION, REASON_DISMISS = constants_1.strings.REASON_DISMISS;
+        var MDCSnackbarFoundation = function(_super) {
+            __extends(MDCSnackbarFoundation, _super);
+            function MDCSnackbarFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCSnackbarFoundation.defaultAdapter, adapter)) || this;
+                _this.isOpen_ = false;
+                _this.animationFrame_ = 0;
+                _this.animationTimer_ = 0;
+                _this.autoDismissTimer_ = 0;
+                _this.autoDismissTimeoutMs_ = constants_1.numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;
+                _this.closeOnEscape_ = true;
+                return _this;
+            }
+            Object.defineProperty(MDCSnackbarFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbarFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbarFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbarFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        announce: function announce() {
+                            return undefined;
+                        },
+                        notifyClosed: function notifyClosed() {
+                            return undefined;
+                        },
+                        notifyClosing: function notifyClosing() {
+                            return undefined;
+                        },
+                        notifyOpened: function notifyOpened() {
+                            return undefined;
+                        },
+                        notifyOpening: function notifyOpening() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSnackbarFoundation.prototype.destroy = function() {
+                this.clearAutoDismissTimer_();
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = 0;
+                clearTimeout(this.animationTimer_);
+                this.animationTimer_ = 0;
+                this.adapter_.removeClass(OPENING);
+                this.adapter_.removeClass(OPEN);
+                this.adapter_.removeClass(CLOSING);
+            };
+            MDCSnackbarFoundation.prototype.open = function() {
+                var _this = this;
+                this.clearAutoDismissTimer_();
+                this.isOpen_ = true;
+                this.adapter_.notifyOpening();
+                this.adapter_.removeClass(CLOSING);
+                this.adapter_.addClass(OPENING);
+                this.adapter_.announce();
+                this.runNextAnimationFrame_(function() {
+                    _this.adapter_.addClass(OPEN);
+                    _this.animationTimer_ = setTimeout(function() {
+                        _this.handleAnimationTimerEnd_();
+                        _this.adapter_.notifyOpened();
+                        _this.autoDismissTimer_ = setTimeout(function() {
+                            _this.close(REASON_DISMISS);
+                        }, _this.getTimeoutMs());
+                    }, constants_1.numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);
+                });
+            };
+            MDCSnackbarFoundation.prototype.close = function(reason) {
+                var _this = this;
+                if (reason === void 0) {
+                    reason = "";
+                }
+                if (!this.isOpen_) {
+                    return;
+                }
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = 0;
+                this.clearAutoDismissTimer_();
+                this.isOpen_ = false;
+                this.adapter_.notifyClosing(reason);
+                this.adapter_.addClass(constants_1.cssClasses.CLOSING);
+                this.adapter_.removeClass(constants_1.cssClasses.OPEN);
+                this.adapter_.removeClass(constants_1.cssClasses.OPENING);
+                clearTimeout(this.animationTimer_);
+                this.animationTimer_ = setTimeout(function() {
+                    _this.handleAnimationTimerEnd_();
+                    _this.adapter_.notifyClosed(reason);
+                }, constants_1.numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);
+            };
+            MDCSnackbarFoundation.prototype.isOpen = function() {
+                return this.isOpen_;
+            };
+            MDCSnackbarFoundation.prototype.getTimeoutMs = function() {
+                return this.autoDismissTimeoutMs_;
+            };
+            MDCSnackbarFoundation.prototype.setTimeoutMs = function(timeoutMs) {
+                var minValue = constants_1.numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;
+                var maxValue = constants_1.numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;
+                if (timeoutMs <= maxValue && timeoutMs >= minValue) {
+                    this.autoDismissTimeoutMs_ = timeoutMs;
+                } else {
+                    throw new Error("timeoutMs must be an integer in the range " + minValue + "–" + maxValue + ", but got '" + timeoutMs + "'");
+                }
+            };
+            MDCSnackbarFoundation.prototype.getCloseOnEscape = function() {
+                return this.closeOnEscape_;
+            };
+            MDCSnackbarFoundation.prototype.setCloseOnEscape = function(closeOnEscape) {
+                this.closeOnEscape_ = closeOnEscape;
+            };
+            MDCSnackbarFoundation.prototype.handleKeyDown = function(evt) {
+                var isEscapeKey = evt.key === "Escape" || evt.keyCode === 27;
+                if (isEscapeKey && this.getCloseOnEscape()) {
+                    this.close(REASON_DISMISS);
+                }
+            };
+            MDCSnackbarFoundation.prototype.handleActionButtonClick = function(_evt) {
+                this.close(REASON_ACTION);
+            };
+            MDCSnackbarFoundation.prototype.handleActionIconClick = function(_evt) {
+                this.close(REASON_DISMISS);
+            };
+            MDCSnackbarFoundation.prototype.clearAutoDismissTimer_ = function() {
+                clearTimeout(this.autoDismissTimer_);
+                this.autoDismissTimer_ = 0;
+            };
+            MDCSnackbarFoundation.prototype.handleAnimationTimerEnd_ = function() {
+                this.animationTimer_ = 0;
+                this.adapter_.removeClass(constants_1.cssClasses.OPENING);
+                this.adapter_.removeClass(constants_1.cssClasses.CLOSING);
+            };
+            MDCSnackbarFoundation.prototype.runNextAnimationFrame_ = function(callback) {
+                var _this = this;
+                cancelAnimationFrame(this.animationFrame_);
+                this.animationFrame_ = requestAnimationFrame(function() {
+                    _this.animationFrame_ = 0;
+                    clearTimeout(_this.animationTimer_);
+                    _this.animationTimer_ = setTimeout(callback, 0);
+                });
+            };
+            return MDCSnackbarFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSnackbarFoundation = MDCSnackbarFoundation;
+        exports.default = MDCSnackbarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(138);
+        var MDCSwitchFoundation = function(_super) {
+            __extends(MDCSwitchFoundation, _super);
+            function MDCSwitchFoundation(adapter) {
+                return _super.call(this, __assign({}, MDCSwitchFoundation.defaultAdapter, adapter)) || this;
+            }
+            Object.defineProperty(MDCSwitchFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSwitchFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSwitchFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        setNativeControlChecked: function setNativeControlChecked() {
+                            return undefined;
+                        },
+                        setNativeControlDisabled: function setNativeControlDisabled() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSwitchFoundation.prototype.setChecked = function(checked) {
+                this.adapter_.setNativeControlChecked(checked);
+                this.updateCheckedStyling_(checked);
+            };
+            MDCSwitchFoundation.prototype.setDisabled = function(disabled) {
+                this.adapter_.setNativeControlDisabled(disabled);
+                if (disabled) {
+                    this.adapter_.addClass(constants_1.cssClasses.DISABLED);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.DISABLED);
+                }
+            };
+            MDCSwitchFoundation.prototype.handleChange = function(evt) {
+                var nativeControl = evt.target;
+                this.updateCheckedStyling_(nativeControl.checked);
+            };
+            MDCSwitchFoundation.prototype.updateCheckedStyling_ = function(checked) {
+                if (checked) {
+                    this.adapter_.addClass(constants_1.cssClasses.CHECKED);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.CHECKED);
+                }
+            };
+            return MDCSwitchFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCSwitchFoundation = MDCSwitchFoundation;
+        exports.default = MDCSwitchFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var foundation_1 = __webpack_require__(61);
+        var util = __importStar(__webpack_require__(63));
+        var MDCTabScroller = function(_super) {
+            __extends(MDCTabScroller, _super);
+            function MDCTabScroller() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabScroller.attachTo = function(root) {
+                return new MDCTabScroller(root);
+            };
+            MDCTabScroller.prototype.initialize = function() {
+                this.area_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.AREA_SELECTOR);
+                this.content_ = this.root_.querySelector(foundation_1.MDCTabScrollerFoundation.strings.CONTENT_SELECTOR);
+            };
+            MDCTabScroller.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleInteraction_ = function() {
+                    return _this.foundation_.handleInteraction();
+                };
+                this.handleTransitionEnd_ = function(evt) {
+                    return _this.foundation_.handleTransitionEnd(evt);
+                };
+                this.area_.addEventListener("wheel", this.handleInteraction_);
+                this.area_.addEventListener("touchstart", this.handleInteraction_);
+                this.area_.addEventListener("pointerdown", this.handleInteraction_);
+                this.area_.addEventListener("mousedown", this.handleInteraction_);
+                this.area_.addEventListener("keydown", this.handleInteraction_);
+                this.content_.addEventListener("transitionend", this.handleTransitionEnd_);
+            };
+            MDCTabScroller.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+                this.area_.removeEventListener("wheel", this.handleInteraction_);
+                this.area_.removeEventListener("touchstart", this.handleInteraction_);
+                this.area_.removeEventListener("pointerdown", this.handleInteraction_);
+                this.area_.removeEventListener("mousedown", this.handleInteraction_);
+                this.area_.removeEventListener("keydown", this.handleInteraction_);
+                this.content_.removeEventListener("transitionend", this.handleTransitionEnd_);
+            };
+            MDCTabScroller.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    eventTargetMatchesSelector: function eventTargetMatchesSelector(evtTarget, selector) {
+                        return ponyfill_1.matches(evtTarget, selector);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    addScrollAreaClass: function addScrollAreaClass(className) {
+                        return _this.area_.classList.add(className);
+                    },
+                    setScrollAreaStyleProperty: function setScrollAreaStyleProperty(prop, value) {
+                        return _this.area_.style.setProperty(prop, value);
+                    },
+                    setScrollContentStyleProperty: function setScrollContentStyleProperty(prop, value) {
+                        return _this.content_.style.setProperty(prop, value);
+                    },
+                    getScrollContentStyleValue: function getScrollContentStyleValue(propName) {
+                        return window.getComputedStyle(_this.content_).getPropertyValue(propName);
+                    },
+                    setScrollAreaScrollLeft: function setScrollAreaScrollLeft(scrollX) {
+                        return _this.area_.scrollLeft = scrollX;
+                    },
+                    getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {
+                        return _this.area_.scrollLeft;
+                    },
+                    getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {
+                        return _this.content_.offsetWidth;
+                    },
+                    getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {
+                        return _this.area_.offsetWidth;
+                    },
+                    computeScrollAreaClientRect: function computeScrollAreaClientRect() {
+                        return _this.area_.getBoundingClientRect();
+                    },
+                    computeScrollContentClientRect: function computeScrollContentClientRect() {
+                        return _this.content_.getBoundingClientRect();
+                    },
+                    computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {
+                        return util.computeHorizontalScrollbarHeight(document);
+                    }
+                };
+                return new foundation_1.MDCTabScrollerFoundation(adapter);
+            };
+            MDCTabScroller.prototype.getScrollPosition = function() {
+                return this.foundation_.getScrollPosition();
+            };
+            MDCTabScroller.prototype.getScrollContentWidth = function() {
+                return this.content_.offsetWidth;
+            };
+            MDCTabScroller.prototype.incrementScroll = function(scrollXIncrement) {
+                this.foundation_.incrementScroll(scrollXIncrement);
+            };
+            MDCTabScroller.prototype.scrollTo = function(scrollX) {
+                this.foundation_.scrollTo(scrollX);
+            };
+            return MDCTabScroller;
+        }(component_1.MDCComponent);
+        exports.MDCTabScroller = MDCTabScroller;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        var __read = this && this.__read || function(o, n) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator];
+            if (!m) return o;
+            var i = m.call(o), r, ar = [], e;
+            try {
+                while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+                    ar.push(r.value);
+                }
+            } catch (error) {
+                e = {
+                    error: error
+                };
+            } finally {
+                try {
+                    if (r && !r.done && (m = i["return"])) m.call(i);
+                } finally {
+                    if (e) throw e.error;
+                }
+            }
+            return ar;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(62);
+        var rtl_default_scroller_1 = __webpack_require__(141);
+        var rtl_negative_scroller_1 = __webpack_require__(142);
+        var rtl_reverse_scroller_1 = __webpack_require__(143);
+        var MDCTabScrollerFoundation = function(_super) {
+            __extends(MDCTabScrollerFoundation, _super);
+            function MDCTabScrollerFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCTabScrollerFoundation.defaultAdapter, adapter)) || this;
+                _this.isAnimating_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCTabScrollerFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabScrollerFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabScrollerFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        eventTargetMatchesSelector: function eventTargetMatchesSelector() {
+                            return false;
+                        },
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        addScrollAreaClass: function addScrollAreaClass() {
+                            return undefined;
+                        },
+                        setScrollAreaStyleProperty: function setScrollAreaStyleProperty() {
+                            return undefined;
+                        },
+                        setScrollContentStyleProperty: function setScrollContentStyleProperty() {
+                            return undefined;
+                        },
+                        getScrollContentStyleValue: function getScrollContentStyleValue() {
+                            return "";
+                        },
+                        setScrollAreaScrollLeft: function setScrollAreaScrollLeft() {
+                            return undefined;
+                        },
+                        getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {
+                            return 0;
+                        },
+                        getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {
+                            return 0;
+                        },
+                        getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {
+                            return 0;
+                        },
+                        computeScrollAreaClientRect: function computeScrollAreaClientRect() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        computeScrollContentClientRect: function computeScrollContentClientRect() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {
+                            return 0;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTabScrollerFoundation.prototype.init = function() {
+                var horizontalScrollbarHeight = this.adapter_.computeHorizontalScrollbarHeight();
+                this.adapter_.setScrollAreaStyleProperty("margin-bottom", -horizontalScrollbarHeight + "px");
+                this.adapter_.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL);
+            };
+            MDCTabScrollerFoundation.prototype.getScrollPosition = function() {
+                if (this.isRTL_()) {
+                    return this.computeCurrentScrollPositionRTL_();
+                }
+                var currentTranslateX = this.calculateCurrentTranslateX_();
+                var scrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                return scrollLeft - currentTranslateX;
+            };
+            MDCTabScrollerFoundation.prototype.handleInteraction = function() {
+                if (!this.isAnimating_) {
+                    return;
+                }
+                this.stopScrollAnimation_();
+            };
+            MDCTabScrollerFoundation.prototype.handleTransitionEnd = function(evt) {
+                var evtTarget = evt.target;
+                if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evtTarget, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {
+                    return;
+                }
+                this.isAnimating_ = false;
+                this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
+            };
+            MDCTabScrollerFoundation.prototype.incrementScroll = function(scrollXIncrement) {
+                if (scrollXIncrement === 0) {
+                    return;
+                }
+                if (this.isRTL_()) {
+                    return this.incrementScrollRTL_(scrollXIncrement);
+                }
+                this.incrementScroll_(scrollXIncrement);
+            };
+            MDCTabScrollerFoundation.prototype.scrollTo = function(scrollX) {
+                if (this.isRTL_()) {
+                    return this.scrollToRTL_(scrollX);
+                }
+                this.scrollTo_(scrollX);
+            };
+            MDCTabScrollerFoundation.prototype.getRTLScroller = function() {
+                if (!this.rtlScrollerInstance_) {
+                    this.rtlScrollerInstance_ = this.rtlScrollerFactory_();
+                }
+                return this.rtlScrollerInstance_;
+            };
+            MDCTabScrollerFoundation.prototype.calculateCurrentTranslateX_ = function() {
+                var transformValue = this.adapter_.getScrollContentStyleValue("transform");
+                if (transformValue === "none") {
+                    return 0;
+                }
+                var match = /\((.+?)\)/.exec(transformValue);
+                if (!match) {
+                    return 0;
+                }
+                var matrixParams = match[1];
+                var _a = __read(matrixParams.split(","), 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], tx = _a[4], ty = _a[5];
+                return parseFloat(tx);
+            };
+            MDCTabScrollerFoundation.prototype.clampScrollValue_ = function(scrollX) {
+                var edges = this.calculateScrollEdges_();
+                return Math.min(Math.max(edges.left, scrollX), edges.right);
+            };
+            MDCTabScrollerFoundation.prototype.computeCurrentScrollPositionRTL_ = function() {
+                var translateX = this.calculateCurrentTranslateX_();
+                return this.getRTLScroller().getScrollPositionRTL(translateX);
+            };
+            MDCTabScrollerFoundation.prototype.calculateScrollEdges_ = function() {
+                var contentWidth = this.adapter_.getScrollContentOffsetWidth();
+                var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
+                return {
+                    left: 0,
+                    right: contentWidth - rootWidth
+                };
+            };
+            MDCTabScrollerFoundation.prototype.scrollTo_ = function(scrollX) {
+                var currentScrollX = this.getScrollPosition();
+                var safeScrollX = this.clampScrollValue_(scrollX);
+                var scrollDelta = safeScrollX - currentScrollX;
+                this.animate_({
+                    finalScrollPosition: safeScrollX,
+                    scrollDelta: scrollDelta
+                });
+            };
+            MDCTabScrollerFoundation.prototype.scrollToRTL_ = function(scrollX) {
+                var animation = this.getRTLScroller().scrollToRTL(scrollX);
+                this.animate_(animation);
+            };
+            MDCTabScrollerFoundation.prototype.incrementScroll_ = function(scrollX) {
+                var currentScrollX = this.getScrollPosition();
+                var targetScrollX = scrollX + currentScrollX;
+                var safeScrollX = this.clampScrollValue_(targetScrollX);
+                var scrollDelta = safeScrollX - currentScrollX;
+                this.animate_({
+                    finalScrollPosition: safeScrollX,
+                    scrollDelta: scrollDelta
+                });
+            };
+            MDCTabScrollerFoundation.prototype.incrementScrollRTL_ = function(scrollX) {
+                var animation = this.getRTLScroller().incrementScrollRTL(scrollX);
+                this.animate_(animation);
+            };
+            MDCTabScrollerFoundation.prototype.animate_ = function(animation) {
+                var _this = this;
+                if (animation.scrollDelta === 0) {
+                    return;
+                }
+                this.stopScrollAnimation_();
+                this.adapter_.setScrollAreaScrollLeft(animation.finalScrollPosition);
+                this.adapter_.setScrollContentStyleProperty("transform", "translateX(" + animation.scrollDelta + "px)");
+                this.adapter_.computeScrollAreaClientRect();
+                requestAnimationFrame(function() {
+                    _this.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
+                    _this.adapter_.setScrollContentStyleProperty("transform", "none");
+                });
+                this.isAnimating_ = true;
+            };
+            MDCTabScrollerFoundation.prototype.stopScrollAnimation_ = function() {
+                this.isAnimating_ = false;
+                var currentScrollPosition = this.getAnimatingScrollPosition_();
+                this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
+                this.adapter_.setScrollContentStyleProperty("transform", "translateX(0px)");
+                this.adapter_.setScrollAreaScrollLeft(currentScrollPosition);
+            };
+            MDCTabScrollerFoundation.prototype.getAnimatingScrollPosition_ = function() {
+                var currentTranslateX = this.calculateCurrentTranslateX_();
+                var scrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                if (this.isRTL_()) {
+                    return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX);
+                }
+                return scrollLeft - currentTranslateX;
+            };
+            MDCTabScrollerFoundation.prototype.rtlScrollerFactory_ = function() {
+                var initialScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                this.adapter_.setScrollAreaScrollLeft(initialScrollLeft - 1);
+                var newScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                if (newScrollLeft < 0) {
+                    this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);
+                    return new rtl_negative_scroller_1.MDCTabScrollerRTLNegative(this.adapter_);
+                }
+                var rootClientRect = this.adapter_.computeScrollAreaClientRect();
+                var contentClientRect = this.adapter_.computeScrollContentClientRect();
+                var rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right);
+                this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);
+                if (rightEdgeDelta === newScrollLeft) {
+                    return new rtl_reverse_scroller_1.MDCTabScrollerRTLReverse(this.adapter_);
+                }
+                return new rtl_default_scroller_1.MDCTabScrollerRTLDefault(this.adapter_);
+            };
+            MDCTabScrollerFoundation.prototype.isRTL_ = function() {
+                return this.adapter_.getScrollContentStyleValue("direction") === "rtl";
+            };
+            return MDCTabScrollerFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTabScrollerFoundation = MDCTabScrollerFoundation;
+        exports.default = MDCTabScrollerFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ANIMATING: "mdc-tab-scroller--animating",
+            SCROLL_AREA_SCROLL: "mdc-tab-scroller__scroll-area--scroll",
+            SCROLL_TEST: "mdc-tab-scroller__test"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            AREA_SELECTOR: ".mdc-tab-scroller__scroll-area",
+            CONTENT_SELECTOR: ".mdc-tab-scroller__scroll-content"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(62);
+        var horizontalScrollbarHeight_;
+        function computeHorizontalScrollbarHeight(documentObj, shouldCacheResult) {
+            if (shouldCacheResult === void 0) {
+                shouldCacheResult = true;
+            }
+            if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== "undefined") {
+                return horizontalScrollbarHeight_;
+            }
+            var el = documentObj.createElement("div");
+            el.classList.add(constants_1.cssClasses.SCROLL_TEST);
+            documentObj.body.appendChild(el);
+            var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;
+            documentObj.body.removeChild(el);
+            if (shouldCacheResult) {
+                horizontalScrollbarHeight_ = horizontalScrollbarHeight;
+            }
+            return horizontalScrollbarHeight;
+        }
+        exports.computeHorizontalScrollbarHeight = computeHorizontalScrollbarHeight;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var component_3 = __webpack_require__(65);
+        var foundation_2 = __webpack_require__(22);
+        var MDCTab = function(_super) {
+            __extends(MDCTab, _super);
+            function MDCTab() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTab.attachTo = function(root) {
+                return new MDCTab(root);
+            };
+            MDCTab.prototype.initialize = function(rippleFactory, tabIndicatorFactory) {
+                if (rippleFactory === void 0) {
+                    rippleFactory = function rippleFactory(el, foundation) {
+                        return new component_2.MDCRipple(el, foundation);
+                    };
+                }
+                if (tabIndicatorFactory === void 0) {
+                    tabIndicatorFactory = function tabIndicatorFactory(el) {
+                        return new component_3.MDCTabIndicator(el);
+                    };
+                }
+                this.id = this.root_.id;
+                var rippleSurface = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.RIPPLE_SELECTOR);
+                var rippleAdapter = __assign({}, component_2.MDCRipple.createAdapter(this), {
+                    addClass: function addClass(className) {
+                        return rippleSurface.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return rippleSurface.classList.remove(className);
+                    },
+                    updateCssVariable: function updateCssVariable(varName, value) {
+                        return rippleSurface.style.setProperty(varName, value);
+                    }
+                });
+                var rippleFoundation = new foundation_1.MDCRippleFoundation(rippleAdapter);
+                this.ripple_ = rippleFactory(this.root_, rippleFoundation);
+                var tabIndicatorElement = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR);
+                this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);
+                this.content_ = this.root_.querySelector(foundation_2.MDCTabFoundation.strings.CONTENT_SELECTOR);
+            };
+            MDCTab.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleClick_ = function() {
+                    return _this.foundation_.handleClick();
+                };
+                this.listen("click", this.handleClick_);
+            };
+            MDCTab.prototype.destroy = function() {
+                this.unlisten("click", this.handleClick_);
+                this.ripple_.destroy();
+                _super.prototype.destroy.call(this);
+            };
+            MDCTab.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    setAttr: function setAttr(attr, value) {
+                        return _this.root_.setAttribute(attr, value);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    activateIndicator: function activateIndicator(previousIndicatorClientRect) {
+                        return _this.tabIndicator_.activate(previousIndicatorClientRect);
+                    },
+                    deactivateIndicator: function deactivateIndicator() {
+                        return _this.tabIndicator_.deactivate();
+                    },
+                    notifyInteracted: function notifyInteracted() {
+                        return _this.emit(foundation_2.MDCTabFoundation.strings.INTERACTED_EVENT, {
+                            tabId: _this.id
+                        }, true);
+                    },
+                    getOffsetLeft: function getOffsetLeft() {
+                        return _this.root_.offsetLeft;
+                    },
+                    getOffsetWidth: function getOffsetWidth() {
+                        return _this.root_.offsetWidth;
+                    },
+                    getContentOffsetLeft: function getContentOffsetLeft() {
+                        return _this.content_.offsetLeft;
+                    },
+                    getContentOffsetWidth: function getContentOffsetWidth() {
+                        return _this.content_.offsetWidth;
+                    },
+                    focus: function focus() {
+                        return _this.root_.focus();
+                    }
+                };
+                return new foundation_2.MDCTabFoundation(adapter);
+            };
+            Object.defineProperty(MDCTab.prototype, "active", {
+                get: function get() {
+                    return this.foundation_.isActive();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTab.prototype, "focusOnActivate", {
+                set: function set(focusOnActivate) {
+                    this.foundation_.setFocusOnActivate(focusOnActivate);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTab.prototype.activate = function(computeIndicatorClientRect) {
+                this.foundation_.activate(computeIndicatorClientRect);
+            };
+            MDCTab.prototype.deactivate = function() {
+                this.foundation_.deactivate();
+            };
+            MDCTab.prototype.computeIndicatorClientRect = function() {
+                return this.tabIndicator_.computeContentClientRect();
+            };
+            MDCTab.prototype.computeDimensions = function() {
+                return this.foundation_.computeDimensions();
+            };
+            MDCTab.prototype.focus = function() {
+                this.root_.focus();
+            };
+            return MDCTab;
+        }(component_1.MDCComponent);
+        exports.MDCTab = MDCTab;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var fading_foundation_1 = __webpack_require__(66);
+        var foundation_1 = __webpack_require__(9);
+        var sliding_foundation_1 = __webpack_require__(67);
+        var MDCTabIndicator = function(_super) {
+            __extends(MDCTabIndicator, _super);
+            function MDCTabIndicator() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabIndicator.attachTo = function(root) {
+                return new MDCTabIndicator(root);
+            };
+            MDCTabIndicator.prototype.initialize = function() {
+                this.content_ = this.root_.querySelector(foundation_1.MDCTabIndicatorFoundation.strings.CONTENT_SELECTOR);
+            };
+            MDCTabIndicator.prototype.computeContentClientRect = function() {
+                return this.foundation_.computeContentClientRect();
+            };
+            MDCTabIndicator.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    computeContentClientRect: function computeContentClientRect() {
+                        return _this.content_.getBoundingClientRect();
+                    },
+                    setContentStyleProperty: function setContentStyleProperty(prop, value) {
+                        return _this.content_.style.setProperty(prop, value);
+                    }
+                };
+                if (this.root_.classList.contains(foundation_1.MDCTabIndicatorFoundation.cssClasses.FADE)) {
+                    return new fading_foundation_1.MDCFadingTabIndicatorFoundation(adapter);
+                }
+                return new sliding_foundation_1.MDCSlidingTabIndicatorFoundation(adapter);
+            };
+            MDCTabIndicator.prototype.activate = function(previousIndicatorClientRect) {
+                this.foundation_.activate(previousIndicatorClientRect);
+            };
+            MDCTabIndicator.prototype.deactivate = function() {
+                this.foundation_.deactivate();
+            };
+            return MDCTabIndicator;
+        }(component_1.MDCComponent);
+        exports.MDCTabIndicator = MDCTabIndicator;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(9);
+        var MDCFadingTabIndicatorFoundation = function(_super) {
+            __extends(MDCFadingTabIndicatorFoundation, _super);
+            function MDCFadingTabIndicatorFoundation() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCFadingTabIndicatorFoundation.prototype.activate = function() {
+                this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);
+            };
+            MDCFadingTabIndicatorFoundation.prototype.deactivate = function() {
+                this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);
+            };
+            return MDCFadingTabIndicatorFoundation;
+        }(foundation_1.MDCTabIndicatorFoundation);
+        exports.MDCFadingTabIndicatorFoundation = MDCFadingTabIndicatorFoundation;
+        exports.default = MDCFadingTabIndicatorFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(9);
+        var MDCSlidingTabIndicatorFoundation = function(_super) {
+            __extends(MDCSlidingTabIndicatorFoundation, _super);
+            function MDCSlidingTabIndicatorFoundation() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSlidingTabIndicatorFoundation.prototype.activate = function(previousIndicatorClientRect) {
+                if (!previousIndicatorClientRect) {
+                    this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);
+                    return;
+                }
+                var currentClientRect = this.computeContentClientRect();
+                var widthDelta = previousIndicatorClientRect.width / currentClientRect.width;
+                var xPosition = previousIndicatorClientRect.left - currentClientRect.left;
+                this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);
+                this.adapter_.setContentStyleProperty("transform", "translateX(" + xPosition + "px) scaleX(" + widthDelta + ")");
+                this.computeContentClientRect();
+                this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.NO_TRANSITION);
+                this.adapter_.addClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);
+                this.adapter_.setContentStyleProperty("transform", "");
+            };
+            MDCSlidingTabIndicatorFoundation.prototype.deactivate = function() {
+                this.adapter_.removeClass(foundation_1.MDCTabIndicatorFoundation.cssClasses.ACTIVE);
+            };
+            return MDCSlidingTabIndicatorFoundation;
+        }(foundation_1.MDCTabIndicatorFoundation);
+        exports.MDCSlidingTabIndicatorFoundation = MDCSlidingTabIndicatorFoundation;
+        exports.default = MDCSlidingTabIndicatorFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(146);
+        var ACCEPTABLE_KEYS = new Set();
+        ACCEPTABLE_KEYS.add(constants_1.strings.ARROW_LEFT_KEY);
+        ACCEPTABLE_KEYS.add(constants_1.strings.ARROW_RIGHT_KEY);
+        ACCEPTABLE_KEYS.add(constants_1.strings.END_KEY);
+        ACCEPTABLE_KEYS.add(constants_1.strings.HOME_KEY);
+        ACCEPTABLE_KEYS.add(constants_1.strings.ENTER_KEY);
+        ACCEPTABLE_KEYS.add(constants_1.strings.SPACE_KEY);
+        var KEYCODE_MAP = new Map();
+        KEYCODE_MAP.set(constants_1.numbers.ARROW_LEFT_KEYCODE, constants_1.strings.ARROW_LEFT_KEY);
+        KEYCODE_MAP.set(constants_1.numbers.ARROW_RIGHT_KEYCODE, constants_1.strings.ARROW_RIGHT_KEY);
+        KEYCODE_MAP.set(constants_1.numbers.END_KEYCODE, constants_1.strings.END_KEY);
+        KEYCODE_MAP.set(constants_1.numbers.HOME_KEYCODE, constants_1.strings.HOME_KEY);
+        KEYCODE_MAP.set(constants_1.numbers.ENTER_KEYCODE, constants_1.strings.ENTER_KEY);
+        KEYCODE_MAP.set(constants_1.numbers.SPACE_KEYCODE, constants_1.strings.SPACE_KEY);
+        var MDCTabBarFoundation = function(_super) {
+            __extends(MDCTabBarFoundation, _super);
+            function MDCTabBarFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCTabBarFoundation.defaultAdapter, adapter)) || this;
+                _this.useAutomaticActivation_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCTabBarFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabBarFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabBarFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        scrollTo: function scrollTo() {
+                            return undefined;
+                        },
+                        incrementScroll: function incrementScroll() {
+                            return undefined;
+                        },
+                        getScrollPosition: function getScrollPosition() {
+                            return 0;
+                        },
+                        getScrollContentWidth: function getScrollContentWidth() {
+                            return 0;
+                        },
+                        getOffsetWidth: function getOffsetWidth() {
+                            return 0;
+                        },
+                        isRTL: function isRTL() {
+                            return false;
+                        },
+                        setActiveTab: function setActiveTab() {
+                            return undefined;
+                        },
+                        activateTabAtIndex: function activateTabAtIndex() {
+                            return undefined;
+                        },
+                        deactivateTabAtIndex: function deactivateTabAtIndex() {
+                            return undefined;
+                        },
+                        focusTabAtIndex: function focusTabAtIndex() {
+                            return undefined;
+                        },
+                        getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() {
+                            return {
+                                top: 0,
+                                right: 0,
+                                bottom: 0,
+                                left: 0,
+                                width: 0,
+                                height: 0
+                            };
+                        },
+                        getTabDimensionsAtIndex: function getTabDimensionsAtIndex() {
+                            return {
+                                rootLeft: 0,
+                                rootRight: 0,
+                                contentLeft: 0,
+                                contentRight: 0
+                            };
+                        },
+                        getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {
+                            return -1;
+                        },
+                        getFocusedTabIndex: function getFocusedTabIndex() {
+                            return -1;
+                        },
+                        getIndexOfTabById: function getIndexOfTabById() {
+                            return -1;
+                        },
+                        getTabListLength: function getTabListLength() {
+                            return 0;
+                        },
+                        notifyTabActivated: function notifyTabActivated() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTabBarFoundation.prototype.setUseAutomaticActivation = function(useAutomaticActivation) {
+                this.useAutomaticActivation_ = useAutomaticActivation;
+            };
+            MDCTabBarFoundation.prototype.activateTab = function(index) {
+                var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();
+                if (!this.indexIsInRange_(index) || index === previousActiveIndex) {
+                    return;
+                }
+                var previousClientRect;
+                if (previousActiveIndex !== -1) {
+                    this.adapter_.deactivateTabAtIndex(previousActiveIndex);
+                    previousClientRect = this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex);
+                }
+                this.adapter_.activateTabAtIndex(index, previousClientRect);
+                this.scrollIntoView(index);
+                this.adapter_.notifyTabActivated(index);
+            };
+            MDCTabBarFoundation.prototype.handleKeyDown = function(evt) {
+                var key = this.getKeyFromEvent_(evt);
+                if (key === undefined) {
+                    return;
+                }
+                if (!this.isActivationKey_(key)) {
+                    evt.preventDefault();
+                }
+                if (this.useAutomaticActivation_) {
+                    if (this.isActivationKey_(key)) {
+                        return;
+                    }
+                    var index = this.determineTargetFromKey_(this.adapter_.getPreviousActiveTabIndex(), key);
+                    this.adapter_.setActiveTab(index);
+                    this.scrollIntoView(index);
+                } else {
+                    var focusedTabIndex = this.adapter_.getFocusedTabIndex();
+                    if (this.isActivationKey_(key)) {
+                        this.adapter_.setActiveTab(focusedTabIndex);
+                    } else {
+                        var index = this.determineTargetFromKey_(focusedTabIndex, key);
+                        this.adapter_.focusTabAtIndex(index);
+                        this.scrollIntoView(index);
+                    }
+                }
+            };
+            MDCTabBarFoundation.prototype.handleTabInteraction = function(evt) {
+                this.adapter_.setActiveTab(this.adapter_.getIndexOfTabById(evt.detail.tabId));
+            };
+            MDCTabBarFoundation.prototype.scrollIntoView = function(index) {
+                if (!this.indexIsInRange_(index)) {
+                    return;
+                }
+                if (index === 0) {
+                    return this.adapter_.scrollTo(0);
+                }
+                if (index === this.adapter_.getTabListLength() - 1) {
+                    return this.adapter_.scrollTo(this.adapter_.getScrollContentWidth());
+                }
+                if (this.isRTL_()) {
+                    return this.scrollIntoViewRTL_(index);
+                }
+                this.scrollIntoView_(index);
+            };
+            MDCTabBarFoundation.prototype.determineTargetFromKey_ = function(origin, key) {
+                var isRTL = this.isRTL_();
+                var maxIndex = this.adapter_.getTabListLength() - 1;
+                var shouldGoToEnd = key === constants_1.strings.END_KEY;
+                var shouldDecrement = key === constants_1.strings.ARROW_LEFT_KEY && !isRTL || key === constants_1.strings.ARROW_RIGHT_KEY && isRTL;
+                var shouldIncrement = key === constants_1.strings.ARROW_RIGHT_KEY && !isRTL || key === constants_1.strings.ARROW_LEFT_KEY && isRTL;
+                var index = origin;
+                if (shouldGoToEnd) {
+                    index = maxIndex;
+                } else if (shouldDecrement) {
+                    index -= 1;
+                } else if (shouldIncrement) {
+                    index += 1;
+                } else {
+                    index = 0;
+                }
+                if (index < 0) {
+                    index = maxIndex;
+                } else if (index > maxIndex) {
+                    index = 0;
+                }
+                return index;
+            };
+            MDCTabBarFoundation.prototype.calculateScrollIncrement_ = function(index, nextIndex, scrollPosition, barWidth) {
+                var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);
+                var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;
+                var relativeContentRight = nextTabDimensions.contentRight - scrollPosition;
+                var leftIncrement = relativeContentRight - constants_1.numbers.EXTRA_SCROLL_AMOUNT;
+                var rightIncrement = relativeContentLeft + constants_1.numbers.EXTRA_SCROLL_AMOUNT;
+                if (nextIndex < index) {
+                    return Math.min(leftIncrement, 0);
+                }
+                return Math.max(rightIncrement, 0);
+            };
+            MDCTabBarFoundation.prototype.calculateScrollIncrementRTL_ = function(index, nextIndex, scrollPosition, barWidth, scrollContentWidth) {
+                var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);
+                var relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition;
+                var relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth;
+                var leftIncrement = relativeContentRight + constants_1.numbers.EXTRA_SCROLL_AMOUNT;
+                var rightIncrement = relativeContentLeft - constants_1.numbers.EXTRA_SCROLL_AMOUNT;
+                if (nextIndex > index) {
+                    return Math.max(leftIncrement, 0);
+                }
+                return Math.min(rightIncrement, 0);
+            };
+            MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdge_ = function(index, tabDimensions, scrollPosition, barWidth) {
+                var relativeRootLeft = tabDimensions.rootLeft - scrollPosition;
+                var relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;
+                var relativeRootDelta = relativeRootLeft + relativeRootRight;
+                var leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;
+                var rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;
+                if (leftEdgeIsCloser) {
+                    return index - 1;
+                }
+                if (rightEdgeIsCloser) {
+                    return index + 1;
+                }
+                return -1;
+            };
+            MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdgeRTL_ = function(index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) {
+                var rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition;
+                var rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition;
+                var rootDelta = rootLeft + rootRight;
+                var leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0;
+                var rightEdgeIsCloser = rootRight < 0 || rootDelta < 0;
+                if (leftEdgeIsCloser) {
+                    return index + 1;
+                }
+                if (rightEdgeIsCloser) {
+                    return index - 1;
+                }
+                return -1;
+            };
+            MDCTabBarFoundation.prototype.getKeyFromEvent_ = function(evt) {
+                if (ACCEPTABLE_KEYS.has(evt.key)) {
+                    return evt.key;
+                }
+                return KEYCODE_MAP.get(evt.keyCode);
+            };
+            MDCTabBarFoundation.prototype.isActivationKey_ = function(key) {
+                return key === constants_1.strings.SPACE_KEY || key === constants_1.strings.ENTER_KEY;
+            };
+            MDCTabBarFoundation.prototype.indexIsInRange_ = function(index) {
+                return index >= 0 && index < this.adapter_.getTabListLength();
+            };
+            MDCTabBarFoundation.prototype.isRTL_ = function() {
+                return this.adapter_.isRTL();
+            };
+            MDCTabBarFoundation.prototype.scrollIntoView_ = function(index) {
+                var scrollPosition = this.adapter_.getScrollPosition();
+                var barWidth = this.adapter_.getOffsetWidth();
+                var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);
+                var nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth);
+                if (!this.indexIsInRange_(nextIndex)) {
+                    return;
+                }
+                var scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth);
+                this.adapter_.incrementScroll(scrollIncrement);
+            };
+            MDCTabBarFoundation.prototype.scrollIntoViewRTL_ = function(index) {
+                var scrollPosition = this.adapter_.getScrollPosition();
+                var barWidth = this.adapter_.getOffsetWidth();
+                var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);
+                var scrollWidth = this.adapter_.getScrollContentWidth();
+                var nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollWidth);
+                if (!this.indexIsInRange_(nextIndex)) {
+                    return;
+                }
+                var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);
+                this.adapter_.incrementScroll(scrollIncrement);
+            };
+            return MDCTabBarFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTabBarFoundation = MDCTabBarFoundation;
+        exports.default = MDCTabBarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(23);
+        var MDCTextFieldCharacterCounter = function(_super) {
+            __extends(MDCTextFieldCharacterCounter, _super);
+            function MDCTextFieldCharacterCounter() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTextFieldCharacterCounter.attachTo = function(root) {
+                return new MDCTextFieldCharacterCounter(root);
+            };
+            Object.defineProperty(MDCTextFieldCharacterCounter.prototype, "foundation", {
+                get: function get() {
+                    return this.foundation_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldCharacterCounter.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    setContent: function setContent(content) {
+                        _this.root_.textContent = content;
+                    }
+                };
+                return new foundation_1.MDCTextFieldCharacterCounterFoundation(adapter);
+            };
+            return MDCTextFieldCharacterCounter;
+        }(component_1.MDCComponent);
+        exports.MDCTextFieldCharacterCounter = MDCTextFieldCharacterCounter;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            ARIA_CONTROLS: "aria-controls",
+            ICON_SELECTOR: ".mdc-text-field__icon",
+            INPUT_SELECTOR: ".mdc-text-field__input",
+            LABEL_SELECTOR: ".mdc-floating-label",
+            LINE_RIPPLE_SELECTOR: ".mdc-line-ripple",
+            OUTLINE_SELECTOR: ".mdc-notched-outline"
+        };
+        exports.strings = strings;
+        var cssClasses = {
+            DENSE: "mdc-text-field--dense",
+            DISABLED: "mdc-text-field--disabled",
+            FOCUSED: "mdc-text-field--focused",
+            FULLWIDTH: "mdc-text-field--fullwidth",
+            HELPER_LINE: "mdc-text-field-helper-line",
+            INVALID: "mdc-text-field--invalid",
+            NO_LABEL: "mdc-text-field--no-label",
+            OUTLINED: "mdc-text-field--outlined",
+            ROOT: "mdc-text-field",
+            TEXTAREA: "mdc-text-field--textarea",
+            WITH_LEADING_ICON: "mdc-text-field--with-leading-icon",
+            WITH_TRAILING_ICON: "mdc-text-field--with-trailing-icon"
+        };
+        exports.cssClasses = cssClasses;
+        var numbers = {
+            DENSE_LABEL_SCALE: .923,
+            LABEL_SCALE: .75
+        };
+        exports.numbers = numbers;
+        var VALIDATION_ATTR_WHITELIST = [ "pattern", "min", "max", "required", "step", "minlength", "maxlength" ];
+        exports.VALIDATION_ATTR_WHITELIST = VALIDATION_ATTR_WHITELIST;
+        var ALWAYS_FLOAT_TYPES = [ "color", "date", "datetime-local", "month", "range", "time", "week" ];
+        exports.ALWAYS_FLOAT_TYPES = ALWAYS_FLOAT_TYPES;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(70);
+        var POINTERDOWN_EVENTS = [ "mousedown", "touchstart" ];
+        var INTERACTION_EVENTS = [ "click", "keydown" ];
+        var MDCTextFieldFoundation = function(_super) {
+            __extends(MDCTextFieldFoundation, _super);
+            function MDCTextFieldFoundation(adapter, foundationMap) {
+                if (foundationMap === void 0) {
+                    foundationMap = {};
+                }
+                var _this = _super.call(this, __assign({}, MDCTextFieldFoundation.defaultAdapter, adapter)) || this;
+                _this.isFocused_ = false;
+                _this.receivedUserInput_ = false;
+                _this.isValid_ = true;
+                _this.useNativeValidation_ = true;
+                _this.helperText_ = foundationMap.helperText;
+                _this.characterCounter_ = foundationMap.characterCounter;
+                _this.leadingIcon_ = foundationMap.leadingIcon;
+                _this.trailingIcon_ = foundationMap.trailingIcon;
+                _this.inputFocusHandler_ = function() {
+                    return _this.activateFocus();
+                };
+                _this.inputBlurHandler_ = function() {
+                    return _this.deactivateFocus();
+                };
+                _this.inputInputHandler_ = function() {
+                    return _this.handleInput();
+                };
+                _this.setPointerXOffset_ = function(evt) {
+                    return _this.setTransformOrigin(evt);
+                };
+                _this.textFieldInteractionHandler_ = function() {
+                    return _this.handleTextFieldInteraction();
+                };
+                _this.validationAttributeChangeHandler_ = function(attributesList) {
+                    return _this.handleValidationAttributeChange(attributesList);
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCTextFieldFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldAlwaysFloat_", {
+                get: function get() {
+                    var type = this.getNativeInput_().type;
+                    return constants_1.ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldFloat", {
+                get: function get() {
+                    return this.shouldAlwaysFloat_ || this.isFocused_ || Boolean(this.getValue()) || this.isBadInput_();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation.prototype, "shouldShake", {
+                get: function get() {
+                    return !this.isFocused_ && !this.isValid() && Boolean(this.getValue());
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        hasClass: function hasClass() {
+                            return true;
+                        },
+                        registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {
+                            return undefined;
+                        },
+                        registerInputInteractionHandler: function registerInputInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {
+                            return undefined;
+                        },
+                        registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {
+                            return new MutationObserver(function() {
+                                return undefined;
+                            });
+                        },
+                        deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {
+                            return undefined;
+                        },
+                        getNativeInput: function getNativeInput() {
+                            return null;
+                        },
+                        isFocused: function isFocused() {
+                            return false;
+                        },
+                        activateLineRipple: function activateLineRipple() {
+                            return undefined;
+                        },
+                        deactivateLineRipple: function deactivateLineRipple() {
+                            return undefined;
+                        },
+                        setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {
+                            return undefined;
+                        },
+                        shakeLabel: function shakeLabel() {
+                            return undefined;
+                        },
+                        floatLabel: function floatLabel() {
+                            return undefined;
+                        },
+                        hasLabel: function hasLabel() {
+                            return false;
+                        },
+                        getLabelWidth: function getLabelWidth() {
+                            return 0;
+                        },
+                        hasOutline: function hasOutline() {
+                            return false;
+                        },
+                        notchOutline: function notchOutline() {
+                            return undefined;
+                        },
+                        closeOutline: function closeOutline() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldFoundation.prototype.init = function() {
+                var _this = this;
+                if (this.adapter_.isFocused()) {
+                    this.inputFocusHandler_();
+                } else if (this.adapter_.hasLabel() && this.shouldFloat) {
+                    this.notchOutline(true);
+                    this.adapter_.floatLabel(true);
+                }
+                this.adapter_.registerInputInteractionHandler("focus", this.inputFocusHandler_);
+                this.adapter_.registerInputInteractionHandler("blur", this.inputBlurHandler_);
+                this.adapter_.registerInputInteractionHandler("input", this.inputInputHandler_);
+                POINTERDOWN_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.registerInputInteractionHandler(evtType, _this.setPointerXOffset_);
+                });
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.registerTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);
+                });
+                this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);
+                this.setCharacterCounter_(this.getValue().length);
+            };
+            MDCTextFieldFoundation.prototype.destroy = function() {
+                var _this = this;
+                this.adapter_.deregisterInputInteractionHandler("focus", this.inputFocusHandler_);
+                this.adapter_.deregisterInputInteractionHandler("blur", this.inputBlurHandler_);
+                this.adapter_.deregisterInputInteractionHandler("input", this.inputInputHandler_);
+                POINTERDOWN_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.deregisterInputInteractionHandler(evtType, _this.setPointerXOffset_);
+                });
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.deregisterTextFieldInteractionHandler(evtType, _this.textFieldInteractionHandler_);
+                });
+                this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);
+            };
+            MDCTextFieldFoundation.prototype.handleTextFieldInteraction = function() {
+                var nativeInput = this.adapter_.getNativeInput();
+                if (nativeInput && nativeInput.disabled) {
+                    return;
+                }
+                this.receivedUserInput_ = true;
+            };
+            MDCTextFieldFoundation.prototype.handleValidationAttributeChange = function(attributesList) {
+                var _this = this;
+                attributesList.some(function(attributeName) {
+                    if (constants_1.VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {
+                        _this.styleValidity_(true);
+                        return true;
+                    }
+                    return false;
+                });
+                if (attributesList.indexOf("maxlength") > -1) {
+                    this.setCharacterCounter_(this.getValue().length);
+                }
+            };
+            MDCTextFieldFoundation.prototype.notchOutline = function(openNotch) {
+                if (!this.adapter_.hasOutline()) {
+                    return;
+                }
+                if (openNotch) {
+                    var isDense = this.adapter_.hasClass(constants_1.cssClasses.DENSE);
+                    var labelScale = isDense ? constants_1.numbers.DENSE_LABEL_SCALE : constants_1.numbers.LABEL_SCALE;
+                    var labelWidth = this.adapter_.getLabelWidth() * labelScale;
+                    this.adapter_.notchOutline(labelWidth);
+                } else {
+                    this.adapter_.closeOutline();
+                }
+            };
+            MDCTextFieldFoundation.prototype.activateFocus = function() {
+                this.isFocused_ = true;
+                this.styleFocused_(this.isFocused_);
+                this.adapter_.activateLineRipple();
+                if (this.adapter_.hasLabel()) {
+                    this.notchOutline(this.shouldFloat);
+                    this.adapter_.floatLabel(this.shouldFloat);
+                    this.adapter_.shakeLabel(this.shouldShake);
+                }
+                if (this.helperText_) {
+                    this.helperText_.showToScreenReader();
+                }
+            };
+            MDCTextFieldFoundation.prototype.setTransformOrigin = function(evt) {
+                var touches = evt.touches;
+                var targetEvent = touches ? touches[0] : evt;
+                var targetClientRect = targetEvent.target.getBoundingClientRect();
+                var normalizedX = targetEvent.clientX - targetClientRect.left;
+                this.adapter_.setLineRippleTransformOrigin(normalizedX);
+            };
+            MDCTextFieldFoundation.prototype.handleInput = function() {
+                this.autoCompleteFocus();
+                this.setCharacterCounter_(this.getValue().length);
+            };
+            MDCTextFieldFoundation.prototype.autoCompleteFocus = function() {
+                if (!this.receivedUserInput_) {
+                    this.activateFocus();
+                }
+            };
+            MDCTextFieldFoundation.prototype.deactivateFocus = function() {
+                this.isFocused_ = false;
+                this.adapter_.deactivateLineRipple();
+                var isValid = this.isValid();
+                this.styleValidity_(isValid);
+                this.styleFocused_(this.isFocused_);
+                if (this.adapter_.hasLabel()) {
+                    this.notchOutline(this.shouldFloat);
+                    this.adapter_.floatLabel(this.shouldFloat);
+                    this.adapter_.shakeLabel(this.shouldShake);
+                }
+                if (!this.shouldFloat) {
+                    this.receivedUserInput_ = false;
+                }
+            };
+            MDCTextFieldFoundation.prototype.getValue = function() {
+                return this.getNativeInput_().value;
+            };
+            MDCTextFieldFoundation.prototype.setValue = function(value) {
+                if (this.getValue() !== value) {
+                    this.getNativeInput_().value = value;
+                }
+                this.setCharacterCounter_(value.length);
+                var isValid = this.isValid();
+                this.styleValidity_(isValid);
+                if (this.adapter_.hasLabel()) {
+                    this.notchOutline(this.shouldFloat);
+                    this.adapter_.floatLabel(this.shouldFloat);
+                    this.adapter_.shakeLabel(this.shouldShake);
+                }
+            };
+            MDCTextFieldFoundation.prototype.isValid = function() {
+                return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_;
+            };
+            MDCTextFieldFoundation.prototype.setValid = function(isValid) {
+                this.isValid_ = isValid;
+                this.styleValidity_(isValid);
+                var shouldShake = !isValid && !this.isFocused_;
+                if (this.adapter_.hasLabel()) {
+                    this.adapter_.shakeLabel(shouldShake);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setUseNativeValidation = function(useNativeValidation) {
+                this.useNativeValidation_ = useNativeValidation;
+            };
+            MDCTextFieldFoundation.prototype.isDisabled = function() {
+                return this.getNativeInput_().disabled;
+            };
+            MDCTextFieldFoundation.prototype.setDisabled = function(disabled) {
+                this.getNativeInput_().disabled = disabled;
+                this.styleDisabled_(disabled);
+            };
+            MDCTextFieldFoundation.prototype.setHelperTextContent = function(content) {
+                if (this.helperText_) {
+                    this.helperText_.setContent(content);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setLeadingIconAriaLabel = function(label) {
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setAriaLabel(label);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setLeadingIconContent = function(content) {
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setContent(content);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setTrailingIconAriaLabel = function(label) {
+                if (this.trailingIcon_) {
+                    this.trailingIcon_.setAriaLabel(label);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setTrailingIconContent = function(content) {
+                if (this.trailingIcon_) {
+                    this.trailingIcon_.setContent(content);
+                }
+            };
+            MDCTextFieldFoundation.prototype.setCharacterCounter_ = function(currentLength) {
+                if (!this.characterCounter_) {
+                    return;
+                }
+                var maxLength = this.getNativeInput_().maxLength;
+                if (maxLength === -1) {
+                    throw new Error("MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.");
+                }
+                this.characterCounter_.setCounterValue(currentLength, maxLength);
+            };
+            MDCTextFieldFoundation.prototype.isBadInput_ = function() {
+                return this.getNativeInput_().validity.badInput || false;
+            };
+            MDCTextFieldFoundation.prototype.isNativeInputValid_ = function() {
+                return this.getNativeInput_().validity.valid;
+            };
+            MDCTextFieldFoundation.prototype.styleValidity_ = function(isValid) {
+                var INVALID = MDCTextFieldFoundation.cssClasses.INVALID;
+                if (isValid) {
+                    this.adapter_.removeClass(INVALID);
+                } else {
+                    this.adapter_.addClass(INVALID);
+                }
+                if (this.helperText_) {
+                    this.helperText_.setValidity(isValid);
+                }
+            };
+            MDCTextFieldFoundation.prototype.styleFocused_ = function(isFocused) {
+                var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED;
+                if (isFocused) {
+                    this.adapter_.addClass(FOCUSED);
+                } else {
+                    this.adapter_.removeClass(FOCUSED);
+                }
+            };
+            MDCTextFieldFoundation.prototype.styleDisabled_ = function(isDisabled) {
+                var _a = MDCTextFieldFoundation.cssClasses, DISABLED = _a.DISABLED, INVALID = _a.INVALID;
+                if (isDisabled) {
+                    this.adapter_.addClass(DISABLED);
+                    this.adapter_.removeClass(INVALID);
+                } else {
+                    this.adapter_.removeClass(DISABLED);
+                }
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.setDisabled(isDisabled);
+                }
+                if (this.trailingIcon_) {
+                    this.trailingIcon_.setDisabled(isDisabled);
+                }
+            };
+            MDCTextFieldFoundation.prototype.getNativeInput_ = function() {
+                var nativeInput = this.adapter_ ? this.adapter_.getNativeInput() : null;
+                return nativeInput || {
+                    disabled: false,
+                    maxLength: -1,
+                    type: "input",
+                    validity: {
+                        badInput: false,
+                        valid: true
+                    },
+                    value: ""
+                };
+            };
+            return MDCTextFieldFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTextFieldFoundation = MDCTextFieldFoundation;
+        exports.default = MDCTextFieldFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(24);
+        var MDCTextFieldHelperText = function(_super) {
+            __extends(MDCTextFieldHelperText, _super);
+            function MDCTextFieldHelperText() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTextFieldHelperText.attachTo = function(root) {
+                return new MDCTextFieldHelperText(root);
+            };
+            Object.defineProperty(MDCTextFieldHelperText.prototype, "foundation", {
+                get: function get() {
+                    return this.foundation_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldHelperText.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    setAttr: function setAttr(attr, value) {
+                        return _this.root_.setAttribute(attr, value);
+                    },
+                    removeAttr: function removeAttr(attr) {
+                        return _this.root_.removeAttribute(attr);
+                    },
+                    setContent: function setContent(content) {
+                        _this.root_.textContent = content;
+                    }
+                };
+                return new foundation_1.MDCTextFieldHelperTextFoundation(adapter);
+            };
+            return MDCTextFieldHelperText;
+        }(component_1.MDCComponent);
+        exports.MDCTextFieldHelperText = MDCTextFieldHelperText;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(74);
+        var MDCTextFieldIcon = function(_super) {
+            __extends(MDCTextFieldIcon, _super);
+            function MDCTextFieldIcon() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTextFieldIcon.attachTo = function(root) {
+                return new MDCTextFieldIcon(root);
+            };
+            Object.defineProperty(MDCTextFieldIcon.prototype, "foundation", {
+                get: function get() {
+                    return this.foundation_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldIcon.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    getAttr: function getAttr(attr) {
+                        return _this.root_.getAttribute(attr);
+                    },
+                    setAttr: function setAttr(attr, value) {
+                        return _this.root_.setAttribute(attr, value);
+                    },
+                    removeAttr: function removeAttr(attr) {
+                        return _this.root_.removeAttribute(attr);
+                    },
+                    setContent: function setContent(content) {
+                        _this.root_.textContent = content;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    },
+                    notifyIconAction: function notifyIconAction() {
+                        return _this.emit(foundation_1.MDCTextFieldIconFoundation.strings.ICON_EVENT, {}, true);
+                    }
+                };
+                return new foundation_1.MDCTextFieldIconFoundation(adapter);
+            };
+            return MDCTextFieldIcon;
+        }(component_1.MDCComponent);
+        exports.MDCTextFieldIcon = MDCTextFieldIcon;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(154);
+        var INTERACTION_EVENTS = [ "click", "keydown" ];
+        var MDCTextFieldIconFoundation = function(_super) {
+            __extends(MDCTextFieldIconFoundation, _super);
+            function MDCTextFieldIconFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCTextFieldIconFoundation.defaultAdapter, adapter)) || this;
+                _this.savedTabIndex_ = null;
+                _this.interactionHandler_ = function(evt) {
+                    return _this.handleInteraction(evt);
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCTextFieldIconFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldIconFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextFieldIconFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        getAttr: function getAttr() {
+                            return null;
+                        },
+                        setAttr: function setAttr() {
+                            return undefined;
+                        },
+                        removeAttr: function removeAttr() {
+                            return undefined;
+                        },
+                        setContent: function setContent() {
+                            return undefined;
+                        },
+                        registerInteractionHandler: function registerInteractionHandler() {
+                            return undefined;
+                        },
+                        deregisterInteractionHandler: function deregisterInteractionHandler() {
+                            return undefined;
+                        },
+                        notifyIconAction: function notifyIconAction() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextFieldIconFoundation.prototype.init = function() {
+                var _this = this;
+                this.savedTabIndex_ = this.adapter_.getAttr("tabindex");
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.registerInteractionHandler(evtType, _this.interactionHandler_);
+                });
+            };
+            MDCTextFieldIconFoundation.prototype.destroy = function() {
+                var _this = this;
+                INTERACTION_EVENTS.forEach(function(evtType) {
+                    _this.adapter_.deregisterInteractionHandler(evtType, _this.interactionHandler_);
+                });
+            };
+            MDCTextFieldIconFoundation.prototype.setDisabled = function(disabled) {
+                if (!this.savedTabIndex_) {
+                    return;
+                }
+                if (disabled) {
+                    this.adapter_.setAttr("tabindex", "-1");
+                    this.adapter_.removeAttr("role");
+                } else {
+                    this.adapter_.setAttr("tabindex", this.savedTabIndex_);
+                    this.adapter_.setAttr("role", constants_1.strings.ICON_ROLE);
+                }
+            };
+            MDCTextFieldIconFoundation.prototype.setAriaLabel = function(label) {
+                this.adapter_.setAttr("aria-label", label);
+            };
+            MDCTextFieldIconFoundation.prototype.setContent = function(content) {
+                this.adapter_.setContent(content);
+            };
+            MDCTextFieldIconFoundation.prototype.handleInteraction = function(evt) {
+                var isEnterKey = evt.key === "Enter" || evt.keyCode === 13;
+                if (evt.type === "click" || isEnterKey) {
+                    this.adapter_.notifyIconAction();
+                }
+            };
+            return MDCTextFieldIconFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCTextFieldIconFoundation = MDCTextFieldIconFoundation;
+        exports.default = MDCTextFieldIconFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var foundation_1 = __webpack_require__(0);
+        var constants_1 = __webpack_require__(160);
+        var MDCToolbarFoundation = function(_super) {
+            __extends(MDCToolbarFoundation, _super);
+            function MDCToolbarFoundation(adapter) {
+                var _this = _super.call(this, __assign({}, MDCToolbarFoundation.defaultAdapter, adapter)) || this;
+                _this.checkRowHeightFrame_ = 0;
+                _this.scrollFrame_ = 0;
+                _this.executedLastChange_ = false;
+                _this.isFixed_ = false;
+                _this.isFixedLastRow_ = false;
+                _this.hasFlexibleFirstRow_ = false;
+                _this.useFlexDefaultBehavior_ = false;
+                _this.calculations_ = {
+                    flexibleExpansionHeight: 0,
+                    flexibleExpansionRatio: 0,
+                    maxTranslateYDistance: 0,
+                    maxTranslateYRatio: 0,
+                    scrollThreshold: 0,
+                    scrollThresholdRatio: 0,
+                    toolbarHeight: 0,
+                    toolbarRatio: 0,
+                    toolbarRowHeight: 0
+                };
+                return _this;
+            }
+            Object.defineProperty(MDCToolbarFoundation, "cssClasses", {
+                get: function get() {
+                    return constants_1.cssClasses;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCToolbarFoundation, "strings", {
+                get: function get() {
+                    return constants_1.strings;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCToolbarFoundation, "numbers", {
+                get: function get() {
+                    return constants_1.numbers;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCToolbarFoundation, "defaultAdapter", {
+                get: function get() {
+                    return {
+                        hasClass: function hasClass() {
+                            return false;
+                        },
+                        addClass: function addClass() {
+                            return undefined;
+                        },
+                        removeClass: function removeClass() {
+                            return undefined;
+                        },
+                        registerScrollHandler: function registerScrollHandler() {
+                            return undefined;
+                        },
+                        deregisterScrollHandler: function deregisterScrollHandler() {
+                            return undefined;
+                        },
+                        registerResizeHandler: function registerResizeHandler() {
+                            return undefined;
+                        },
+                        deregisterResizeHandler: function deregisterResizeHandler() {
+                            return undefined;
+                        },
+                        getViewportWidth: function getViewportWidth() {
+                            return 0;
+                        },
+                        getViewportScrollY: function getViewportScrollY() {
+                            return 0;
+                        },
+                        getOffsetHeight: function getOffsetHeight() {
+                            return 0;
+                        },
+                        getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
+                            return 0;
+                        },
+                        notifyChange: function notifyChange() {
+                            return undefined;
+                        },
+                        setStyle: function setStyle() {
+                            return undefined;
+                        },
+                        setStyleForTitleElement: function setStyleForTitleElement() {
+                            return undefined;
+                        },
+                        setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() {
+                            return undefined;
+                        },
+                        setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() {
+                            return undefined;
+                        }
+                    };
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCToolbarFoundation.prototype.init = function() {
+                var _this = this;
+                this.isFixed_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED);
+                this.isFixedLastRow_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED_LASTROW) && this.isFixed_;
+                this.hasFlexibleFirstRow_ = this.adapter_.hasClass(constants_1.cssClasses.TOOLBAR_ROW_FLEXIBLE);
+                if (this.hasFlexibleFirstRow_) {
+                    this.useFlexDefaultBehavior_ = this.adapter_.hasClass(constants_1.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);
+                }
+                this.resizeHandler_ = function() {
+                    return _this.checkRowHeight_();
+                };
+                this.scrollHandler_ = function() {
+                    return _this.updateToolbarStyles_();
+                };
+                this.adapter_.registerResizeHandler(this.resizeHandler_);
+                this.adapter_.registerScrollHandler(this.scrollHandler_);
+                this.initKeyRatio_();
+                this.setKeyHeights_();
+            };
+            MDCToolbarFoundation.prototype.destroy = function() {
+                this.adapter_.deregisterResizeHandler(this.resizeHandler_);
+                this.adapter_.deregisterScrollHandler(this.scrollHandler_);
+            };
+            MDCToolbarFoundation.prototype.updateAdjustElementStyles = function() {
+                if (this.isFixed_) {
+                    this.adapter_.setStyleForFixedAdjustElement("margin-top", this.calculations_.toolbarHeight + "px");
+                }
+            };
+            MDCToolbarFoundation.prototype.getFlexibleExpansionRatio_ = function(scrollTop) {
+                var delta = 1e-4;
+                return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));
+            };
+            MDCToolbarFoundation.prototype.checkRowHeight_ = function() {
+                var _this = this;
+                cancelAnimationFrame(this.checkRowHeightFrame_);
+                this.checkRowHeightFrame_ = requestAnimationFrame(function() {
+                    return _this.setKeyHeights_();
+                });
+            };
+            MDCToolbarFoundation.prototype.setKeyHeights_ = function() {
+                var newToolbarRowHeight = this.getRowHeight_();
+                if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {
+                    this.calculations_.toolbarRowHeight = newToolbarRowHeight;
+                    this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;
+                    this.calculations_.flexibleExpansionHeight = this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;
+                    this.calculations_.maxTranslateYDistance = this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;
+                    this.calculations_.scrollThreshold = this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;
+                    this.updateAdjustElementStyles();
+                    this.updateToolbarStyles_();
+                }
+            };
+            MDCToolbarFoundation.prototype.updateToolbarStyles_ = function() {
+                var _this = this;
+                cancelAnimationFrame(this.scrollFrame_);
+                this.scrollFrame_ = requestAnimationFrame(function() {
+                    var scrollTop = _this.adapter_.getViewportScrollY();
+                    var hasScrolledOutOfThreshold = _this.scrolledOutOfThreshold_(scrollTop);
+                    if (hasScrolledOutOfThreshold && _this.executedLastChange_) {
+                        return;
+                    }
+                    var flexibleExpansionRatio = _this.getFlexibleExpansionRatio_(scrollTop);
+                    _this.updateToolbarFlexibleState_(flexibleExpansionRatio);
+                    if (_this.isFixedLastRow_) {
+                        _this.updateToolbarFixedState_(scrollTop);
+                    }
+                    if (_this.hasFlexibleFirstRow_) {
+                        _this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);
+                    }
+                    _this.executedLastChange_ = hasScrolledOutOfThreshold;
+                    _this.adapter_.notifyChange({
+                        flexibleExpansionRatio: flexibleExpansionRatio
+                    });
+                });
+            };
+            MDCToolbarFoundation.prototype.scrolledOutOfThreshold_ = function(scrollTop) {
+                return scrollTop > this.calculations_.scrollThreshold;
+            };
+            MDCToolbarFoundation.prototype.initKeyRatio_ = function() {
+                var toolbarRowHeight = this.getRowHeight_();
+                var firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;
+                this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;
+                this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;
+                this.calculations_.maxTranslateYRatio = this.isFixedLastRow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;
+                this.calculations_.scrollThresholdRatio = (this.isFixedLastRow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;
+            };
+            MDCToolbarFoundation.prototype.getRowHeight_ = function() {
+                var breakpoint = constants_1.numbers.TOOLBAR_MOBILE_BREAKPOINT;
+                return this.adapter_.getViewportWidth() < breakpoint ? constants_1.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : constants_1.numbers.TOOLBAR_ROW_HEIGHT;
+            };
+            MDCToolbarFoundation.prototype.updateToolbarFlexibleState_ = function(flexibleExpansionRatio) {
+                this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MAX);
+                this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MIN);
+                if (flexibleExpansionRatio === 1) {
+                    this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MAX);
+                } else if (flexibleExpansionRatio === 0) {
+                    this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MIN);
+                }
+            };
+            MDCToolbarFoundation.prototype.updateToolbarFixedState_ = function(scrollTop) {
+                var translateDistance = Math.max(0, Math.min(scrollTop - this.calculations_.flexibleExpansionHeight, this.calculations_.maxTranslateYDistance));
+                this.adapter_.setStyle("transform", "translateY(" + -translateDistance + "px)");
+                if (translateDistance === this.calculations_.maxTranslateYDistance) {
+                    this.adapter_.addClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);
+                } else {
+                    this.adapter_.removeClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);
+                }
+            };
+            MDCToolbarFoundation.prototype.updateFlexibleRowElementStyles_ = function(flexibleExpansionRatio) {
+                if (this.isFixed_) {
+                    var height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;
+                    this.adapter_.setStyleForFlexibleRowElement("height", height + this.calculations_.toolbarRowHeight + "px");
+                }
+                if (this.useFlexDefaultBehavior_) {
+                    this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);
+                }
+            };
+            MDCToolbarFoundation.prototype.updateElementStylesDefaultBehavior_ = function(flexibleExpansionRatio) {
+                var maxTitleSize = constants_1.numbers.MAX_TITLE_SIZE;
+                var minTitleSize = constants_1.numbers.MIN_TITLE_SIZE;
+                var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;
+                this.adapter_.setStyleForTitleElement("font-size", currentTitleSize + "rem");
+            };
+            return MDCToolbarFoundation;
+        }(foundation_1.MDCFoundation);
+        exports.MDCToolbarFoundation = MDCToolbarFoundation;
+        exports.default = MDCToolbarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(7);
+        var foundation_1 = __webpack_require__(25);
+        var MDCFixedTopAppBarFoundation = function(_super) {
+            __extends(MDCFixedTopAppBarFoundation, _super);
+            function MDCFixedTopAppBarFoundation(adapter) {
+                var _this = _super.call(this, adapter) || this;
+                _this.wasScrolled_ = false;
+                _this.scrollHandler_ = function() {
+                    return _this.fixedScrollHandler_();
+                };
+                return _this;
+            }
+            MDCFixedTopAppBarFoundation.prototype.fixedScrollHandler_ = function() {
+                var currentScroll = this.adapter_.getViewportScrollY();
+                if (currentScroll <= 0) {
+                    if (this.wasScrolled_) {
+                        this.adapter_.removeClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS);
+                        this.wasScrolled_ = false;
+                    }
+                } else {
+                    if (!this.wasScrolled_) {
+                        this.adapter_.addClass(constants_1.cssClasses.FIXED_SCROLLED_CLASS);
+                        this.wasScrolled_ = true;
+                    }
+                }
+            };
+            return MDCFixedTopAppBarFoundation;
+        }(foundation_1.MDCTopAppBarFoundation);
+        exports.MDCFixedTopAppBarFoundation = MDCFixedTopAppBarFoundation;
+        exports.default = MDCFixedTopAppBarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(7);
+        var foundation_1 = __webpack_require__(26);
+        var MDCShortTopAppBarFoundation = function(_super) {
+            __extends(MDCShortTopAppBarFoundation, _super);
+            function MDCShortTopAppBarFoundation(adapter) {
+                var _this = _super.call(this, adapter) || this;
+                _this.isCollapsed_ = false;
+                return _this;
+            }
+            Object.defineProperty(MDCShortTopAppBarFoundation.prototype, "isCollapsed", {
+                get: function get() {
+                    return this.isCollapsed_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCShortTopAppBarFoundation.prototype.init = function() {
+                var _this = this;
+                _super.prototype.init.call(this);
+                if (this.adapter_.getTotalActionItems() > 0) {
+                    this.adapter_.addClass(constants_1.cssClasses.SHORT_HAS_ACTION_ITEM_CLASS);
+                }
+                if (!this.adapter_.hasClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS)) {
+                    this.scrollHandler_ = function() {
+                        return _this.shortAppBarScrollHandler_();
+                    };
+                    this.adapter_.registerScrollHandler(this.scrollHandler_);
+                    this.shortAppBarScrollHandler_();
+                }
+            };
+            MDCShortTopAppBarFoundation.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+            };
+            MDCShortTopAppBarFoundation.prototype.shortAppBarScrollHandler_ = function() {
+                var currentScroll = this.adapter_.getViewportScrollY();
+                if (currentScroll <= 0) {
+                    if (this.isCollapsed_) {
+                        this.adapter_.removeClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS);
+                        this.isCollapsed_ = false;
+                    }
+                } else {
+                    if (!this.isCollapsed_) {
+                        this.adapter_.addClass(constants_1.cssClasses.SHORT_COLLAPSED_CLASS);
+                        this.isCollapsed_ = true;
+                    }
+                }
+            };
+            return MDCShortTopAppBarFoundation;
+        }(foundation_1.MDCTopAppBarBaseFoundation);
+        exports.MDCShortTopAppBarFoundation = MDCShortTopAppBarFoundation;
+        exports.default = MDCShortTopAppBarFoundation;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __importDefault = this && this.__importDefault || function(mod) {
+            return mod && mod.__esModule ? mod : {
+                default: mod
+            };
+        };
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var index_1 = __importDefault(__webpack_require__(79));
+        exports.autoInit = index_1.default;
+        var base = __importStar(__webpack_require__(80));
+        exports.base = base;
+        var checkbox = __importStar(__webpack_require__(81));
+        exports.checkbox = checkbox;
+        var chips = __importStar(__webpack_require__(85));
+        exports.chips = chips;
+        var dialog = __importStar(__webpack_require__(90));
+        exports.dialog = dialog;
+        var dom = __importStar(__webpack_require__(96));
+        exports.dom = dom;
+        var drawer = __importStar(__webpack_require__(97));
+        exports.drawer = drawer;
+        var floatingLabel = __importStar(__webpack_require__(102));
+        exports.floatingLabel = floatingLabel;
+        var formField = __importStar(__webpack_require__(104));
+        exports.formField = formField;
+        var gridList = __importStar(__webpack_require__(107));
+        exports.gridList = gridList;
+        var iconButton = __importStar(__webpack_require__(110));
+        exports.iconButton = iconButton;
+        var lineRipple = __importStar(__webpack_require__(113));
+        exports.lineRipple = lineRipple;
+        var linearProgress = __importStar(__webpack_require__(115));
+        exports.linearProgress = linearProgress;
+        var list = __importStar(__webpack_require__(118));
+        exports.list = list;
+        var menuSurface = __importStar(__webpack_require__(119));
+        exports.menuSurface = menuSurface;
+        var menu = __importStar(__webpack_require__(120));
+        exports.menu = menu;
+        var notchedOutline = __importStar(__webpack_require__(121));
+        exports.notchedOutline = notchedOutline;
+        var radio = __importStar(__webpack_require__(122));
+        exports.radio = radio;
+        var ripple = __importStar(__webpack_require__(125));
+        exports.ripple = ripple;
+        var select = __importStar(__webpack_require__(126));
+        exports.select = select;
+        var slider = __importStar(__webpack_require__(132));
+        exports.slider = slider;
+        var snackbar = __importStar(__webpack_require__(134));
+        exports.snackbar = snackbar;
+        var switchControl = __importStar(__webpack_require__(136));
+        exports.switchControl = switchControl;
+        var tabBar = __importStar(__webpack_require__(139));
+        exports.tabBar = tabBar;
+        var tabIndicator = __importStar(__webpack_require__(147));
+        exports.tabIndicator = tabIndicator;
+        var tabScroller = __importStar(__webpack_require__(148));
+        exports.tabScroller = tabScroller;
+        var tab = __importStar(__webpack_require__(149));
+        exports.tab = tab;
+        var textField = __importStar(__webpack_require__(150));
+        exports.textField = textField;
+        var toolbar = __importStar(__webpack_require__(158));
+        exports.toolbar = toolbar;
+        var topAppBar = __importStar(__webpack_require__(161));
+        exports.topAppBar = topAppBar;
+        index_1.default.register("MDCCheckbox", checkbox.MDCCheckbox);
+        index_1.default.register("MDCChip", chips.MDCChip);
+        index_1.default.register("MDCChipSet", chips.MDCChipSet);
+        index_1.default.register("MDCDialog", dialog.MDCDialog);
+        index_1.default.register("MDCDrawer", drawer.MDCDrawer);
+        index_1.default.register("MDCFloatingLabel", floatingLabel.MDCFloatingLabel);
+        index_1.default.register("MDCFormField", formField.MDCFormField);
+        index_1.default.register("MDCGridList", gridList.MDCGridList);
+        index_1.default.register("MDCIconButtonToggle", iconButton.MDCIconButtonToggle);
+        index_1.default.register("MDCLineRipple", lineRipple.MDCLineRipple);
+        index_1.default.register("MDCLinearProgress", linearProgress.MDCLinearProgress);
+        index_1.default.register("MDCList", list.MDCList);
+        index_1.default.register("MDCMenu", menu.MDCMenu);
+        index_1.default.register("MDCMenuSurface", menuSurface.MDCMenuSurface);
+        index_1.default.register("MDCNotchedOutline", notchedOutline.MDCNotchedOutline);
+        index_1.default.register("MDCRadio", radio.MDCRadio);
+        index_1.default.register("MDCRipple", ripple.MDCRipple);
+        index_1.default.register("MDCSelect", select.MDCSelect);
+        index_1.default.register("MDCSlider", slider.MDCSlider);
+        index_1.default.register("MDCSnackbar", snackbar.MDCSnackbar);
+        index_1.default.register("MDCSwitch", switchControl.MDCSwitch);
+        index_1.default.register("MDCTabBar", tabBar.MDCTabBar);
+        index_1.default.register("MDCTextField", textField.MDCTextField);
+        index_1.default.register("MDCToolbar", toolbar.MDCToolbar);
+        index_1.default.register("MDCTopAppBar", topAppBar.MDCTopAppBar);
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __values = this && this.__values || function(o) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
+            if (m) return m.call(o);
+            return {
+                next: function next() {
+                    if (o && i >= o.length) o = void 0;
+                    return {
+                        value: o && o[i++],
+                        done: !o
+                    };
+                }
+            };
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var registry = {};
+        var CONSOLE_WARN = console.warn.bind(console);
+        function emit(evtType, evtData, shouldBubble) {
+            if (shouldBubble === void 0) {
+                shouldBubble = false;
+            }
+            var evt;
+            if (typeof CustomEvent === "function") {
+                evt = new CustomEvent(evtType, {
+                    bubbles: shouldBubble,
+                    detail: evtData
+                });
+            } else {
+                evt = document.createEvent("CustomEvent");
+                evt.initCustomEvent(evtType, shouldBubble, false, evtData);
+            }
+            document.dispatchEvent(evt);
         }
         }
-      );
-    }
-  }]);
-
-  function MDCSwitchFoundation(adapter) {
-    _classCallCheck(this, MDCSwitchFoundation);
-
-    return _possibleConstructorReturn(this, (MDCSwitchFoundation.__proto__ || Object.getPrototypeOf(MDCSwitchFoundation)).call(this, _extends(MDCSwitchFoundation.defaultAdapter, adapter)));
-  }
-
-  /** @param {boolean} checked */
-
-
-  _createClass(MDCSwitchFoundation, [{
-    key: 'setChecked',
-    value: function setChecked(checked) {
-      this.adapter_.setNativeControlChecked(checked);
-      this.updateCheckedStyling_(checked);
-    }
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      this.adapter_.setNativeControlDisabled(disabled);
-      if (disabled) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].DISABLED);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].DISABLED);
-      }
-    }
-
-    /**
-     * Handles the change event for the switch native control.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleChange',
-    value: function handleChange(evt) {
-      this.updateCheckedStyling_(evt.target.checked);
-    }
-
-    /**
-     * Updates the styling of the switch based on its checked state.
-     * @param {boolean} checked
-     * @private
-     */
-
-  }, {
-    key: 'updateCheckedStyling_',
-    value: function updateCheckedStyling_(checked) {
-      if (checked) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKED);
-      } else {
-        this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].CHECKED);
-      }
-    }
-  }]);
-
-  return MDCSwitchFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSwitchFoundation);
-
-/***/ }),
-/* 135 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/* eslint no-unused-vars: [2, {"args": "none"}] */
-
-/**
- * Adapter for MDC Switch. Provides an interface for managing
- * - classes
- * - dom
- *
- * Additionally, provides type information for the adapter to the Closure
- * compiler.
- *
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- *
- * @record
- */
-var MDCSwitchAdapter = function () {
-  function MDCSwitchAdapter() {
-    _classCallCheck(this, MDCSwitchAdapter);
-  }
-
-  _createClass(MDCSwitchAdapter, [{
-    key: "addClass",
-
-    /** @param {string} className */
-    value: function addClass(className) {}
-
-    /** @param {string} className */
-
-  }, {
-    key: "removeClass",
-    value: function removeClass(className) {}
-
-    /** @param {boolean} checked */
-
-  }, {
-    key: "setNativeControlChecked",
-    value: function setNativeControlChecked(checked) {}
-
-    /** @param {boolean} disabled */
-
-  }, {
-    key: "setNativeControlDisabled",
-    value: function setNativeControlDisabled(disabled) {}
-  }]);
-
-  return MDCSwitchAdapter;
-}();
-
-/* unused harmony default export */ var _unused_webpack_default_export = (MDCSwitchAdapter);
-
-/***/ }),
-/* 136 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  CHECKED: 'mdc-switch--checked',
-  DISABLED: 'mdc-switch--disabled'
-};
-
-/** @enum {string} */
-var strings = {
-  NATIVE_CONTROL_SELECTOR: '.mdc-switch__native-control',
-  RIPPLE_SURFACE_SELECTOR: '.mdc-switch__thumb-underlay'
-};
-
-
-
-/***/ }),
-/* 137 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ACTIVE: 'mdc-tab-indicator--active',
-  FADE: 'mdc-tab-indicator--fade',
-  NO_TRANSITION: 'mdc-tab-indicator--no-transition'
-};
-
-/** @enum {string} */
-var strings = {
-  CONTENT_SELECTOR: '.mdc-tab-indicator__content'
-};
-
-
-
-/***/ }),
-/* 138 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(24);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @extends {MDCTabIndicatorFoundation}
- * @final
- */
-
-var MDCSlidingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {
-  _inherits(MDCSlidingTabIndicatorFoundation, _MDCTabIndicatorFound);
-
-  function MDCSlidingTabIndicatorFoundation() {
-    _classCallCheck(this, MDCSlidingTabIndicatorFoundation);
-
-    return _possibleConstructorReturn(this, (MDCSlidingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCSlidingTabIndicatorFoundation)).apply(this, arguments));
-  }
-
-  _createClass(MDCSlidingTabIndicatorFoundation, [{
-    key: 'activate',
-
-    /** @param {!ClientRect=} previousIndicatorClientRect */
-    value: function activate(previousIndicatorClientRect) {
-      // Early exit if no indicator is present to handle cases where an indicator
-      // may be activated without a prior indicator state
-      if (!previousIndicatorClientRect) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
-        return;
-      }
-
-      // This animation uses the FLIP approach. You can read more about it at the link below:
-      // https://aerotwist.com/blog/flip-your-animations/
-
-      // Calculate the dimensions based on the dimensions of the previous indicator
-      var currentClientRect = this.computeContentClientRect();
-      var widthDelta = previousIndicatorClientRect.width / currentClientRect.width;
-      var xPosition = previousIndicatorClientRect.left - currentClientRect.left;
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.NO_TRANSITION);
-      this.adapter_.setContentStyleProperty('transform', 'translateX(' + xPosition + 'px) scaleX(' + widthDelta + ')');
-
-      // Force repaint before updating classes and transform to ensure the transform properly takes effect
-      this.computeContentClientRect();
-
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.NO_TRANSITION);
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
-      this.adapter_.setContentStyleProperty('transform', '');
-    }
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
-    }
-  }]);
-
-  return MDCSlidingTabIndicatorFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCSlidingTabIndicatorFoundation);
-
-/***/ }),
-/* 139 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation__ = __webpack_require__(24);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * @extends {MDCTabIndicatorFoundation}
- * @final
- */
-
-var MDCFadingTabIndicatorFoundation = function (_MDCTabIndicatorFound) {
-  _inherits(MDCFadingTabIndicatorFoundation, _MDCTabIndicatorFound);
-
-  function MDCFadingTabIndicatorFoundation() {
-    _classCallCheck(this, MDCFadingTabIndicatorFoundation);
-
-    return _possibleConstructorReturn(this, (MDCFadingTabIndicatorFoundation.__proto__ || Object.getPrototypeOf(MDCFadingTabIndicatorFoundation)).apply(this, arguments));
-  }
-
-  _createClass(MDCFadingTabIndicatorFoundation, [{
-    key: 'activate',
-    value: function activate() {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
-    }
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */].cssClasses.ACTIVE);
-    }
-  }]);
-
-  return MDCFadingTabIndicatorFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCFadingTabIndicatorFoundation);
-
-/***/ }),
-/* 140 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(10);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(141);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTabAdapter>}
- * @final
- */
-
-var MDCTabFoundation = function (_MDCFoundation) {
-  _inherits(MDCTabFoundation, _MDCFoundation);
-
-  _createClass(MDCTabFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */];
-    }
-
-    /**
-     * @see MDCTabAdapter for typing information
-     * @return {!MDCTabAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTabAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          setAttr: function setAttr() {},
-          activateIndicator: function activateIndicator() {},
-          deactivateIndicator: function deactivateIndicator() {},
-          notifyInteracted: function notifyInteracted() {},
-          getOffsetLeft: function getOffsetLeft() {},
-          getOffsetWidth: function getOffsetWidth() {},
-          getContentOffsetLeft: function getContentOffsetLeft() {},
-          getContentOffsetWidth: function getContentOffsetWidth() {},
-          focus: function focus() {}
+        function mdcAutoInit(root, warn) {
+            if (root === void 0) {
+                root = document;
+            }
+            if (warn === void 0) {
+                warn = CONSOLE_WARN;
+            }
+            var e_1, _a;
+            var components = [];
+            var nodes = [].slice.call(root.querySelectorAll("[data-mdc-auto-init]"));
+            try {
+                for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {
+                    var node = nodes_1_1.value;
+                    var ctorName = node.getAttribute("data-mdc-auto-init");
+                    if (!ctorName) {
+                        throw new Error("(mdc-auto-init) Constructor name must be given.");
+                    }
+                    var Constructor = registry[ctorName];
+                    if (typeof Constructor !== "function") {
+                        throw new Error("(mdc-auto-init) Could not find constructor in registry for " + ctorName);
+                    }
+                    if (Object.getOwnPropertyDescriptor(node, ctorName)) {
+                        warn("(mdc-auto-init) Component already initialized for " + node + ". Skipping...");
+                        continue;
+                    }
+                    var component = Constructor.attachTo(node);
+                    Object.defineProperty(node, ctorName, {
+                        configurable: true,
+                        enumerable: false,
+                        value: component,
+                        writable: false
+                    });
+                    components.push(component);
+                }
+            } catch (e_1_1) {
+                e_1 = {
+                    error: e_1_1
+                };
+            } finally {
+                try {
+                    if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);
+                } finally {
+                    if (e_1) throw e_1.error;
+                }
+            }
+            emit("MDCAutoInit:End", {});
+            return components;
         }
         }
-      );
-    }
-
-    /** @param {!MDCTabAdapter} adapter */
-
-  }]);
-
-  function MDCTabFoundation(adapter) {
-    _classCallCheck(this, MDCTabFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCTabFoundation.__proto__ || Object.getPrototypeOf(MDCTabFoundation)).call(this, _extends(MDCTabFoundation.defaultAdapter, adapter)));
-
-    _this.focusOnActivate_ = true;
-    return _this;
-  }
-
-  /**
-   * Handles the "click" event
-   */
-
-
-  _createClass(MDCTabFoundation, [{
-    key: 'handleClick',
-    value: function handleClick() {
-      // It's up to the parent component to keep track of the active Tab and
-      // ensure we don't activate a Tab that's already active.
-      this.adapter_.notifyInteracted();
-    }
-
-    /**
-     * Returns the Tab's active state
-     * @return {boolean}
-     */
-
-  }, {
-    key: 'isActive',
-    value: function isActive() {
-      return this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
-    }
-
-    /**
-     * Sets whether the tab should focus itself when activated
-     * @param {boolean} focusOnActivate
-     */
-
-  }, {
-    key: 'setFocusOnActivate',
-    value: function setFocusOnActivate(focusOnActivate) {
-      this.focusOnActivate_ = focusOnActivate;
-    }
-
-    /**
-     * Activates the Tab
-     * @param {!ClientRect=} previousIndicatorClientRect
-     */
-
-  }, {
-    key: 'activate',
-    value: function activate(previousIndicatorClientRect) {
-      this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'true');
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].TABINDEX, '0');
-      this.adapter_.activateIndicator(previousIndicatorClientRect);
-      if (this.focusOnActivate_) {
-        this.adapter_.focus();
-      }
-    }
-
-    /**
-     * Deactivates the Tab
-     */
-
-  }, {
-    key: 'deactivate',
-    value: function deactivate() {
-      // Early exit
-      if (!this.isActive()) {
-        return;
-      }
-
-      this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].ACTIVE);
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].ARIA_SELECTED, 'false');
-      this.adapter_.setAttr(__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* strings */].TABINDEX, '-1');
-      this.adapter_.deactivateIndicator();
-    }
-
-    /**
-     * Returns the dimensions of the Tab
-     * @return {!MDCTabDimensions}
-     */
-
-  }, {
-    key: 'computeDimensions',
-    value: function computeDimensions() {
-      var rootWidth = this.adapter_.getOffsetWidth();
-      var rootLeft = this.adapter_.getOffsetLeft();
-      var contentWidth = this.adapter_.getContentOffsetWidth();
-      var contentLeft = this.adapter_.getContentOffsetLeft();
-
-      return {
-        rootLeft: rootLeft,
-        rootRight: rootLeft + rootWidth,
-        contentLeft: rootLeft + contentLeft,
-        contentRight: rootLeft + contentLeft + contentWidth
-      };
-    }
-  }]);
-
-  return MDCTabFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabFoundation);
-
-/***/ }),
-/* 141 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ACTIVE: 'mdc-tab--active'
-};
-
-/** @enum {string} */
-var strings = {
-  ARIA_SELECTED: 'aria-selected',
-  RIPPLE_SELECTOR: '.mdc-tab__ripple',
-  CONTENT_SELECTOR: '.mdc-tab__content',
-  TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator',
-  TABINDEX: 'tabIndex',
-  INTERACTED_EVENT: 'MDCTab:interacted'
-};
-
-
-
-/***/ }),
-/* 142 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabBar", function() { return MDCTabBar; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_tab_index__ = __webpack_require__(54);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__ = __webpack_require__(57);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__adapter__ = __webpack_require__(59);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(148);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTabBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-var tabIdCounter = 0;
-
-/**
- * @extends {MDCComponent<!MDCTabBarFoundation>}
- * @final
- */
-
-var MDCTabBar = function (_MDCComponent) {
-  _inherits(MDCTabBar, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCTabBar() {
-    var _ref;
-
-    _classCallCheck(this, MDCTabBar);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {!Array<!MDCTab>} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTabBar.__proto__ || Object.getPrototypeOf(MDCTabBar)).call.apply(_ref, [this].concat(args)));
-
-    _this.tabList_;
-
-    /** @private {?MDCTabScroller} */
-    _this.tabScroller_;
-
-    /** @private {?function(?Event): undefined} */
-    _this.handleTabInteraction_;
-
-    /** @private {?function(?Event): undefined} */
-    _this.handleKeyDown_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCTabBar}
-   */
-
-
-  _createClass(MDCTabBar, [{
-    key: 'initialize',
-
-
-    /**
-     * @param {(function(!Element): !MDCTab)=} tabFactory A function which creates a new MDCTab
-     * @param {(function(!Element): !MDCTabScroller)=} tabScrollerFactory A function which creates a new MDCTabScroller
-     */
-    value: function initialize() {
-      var tabFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTab"](el);
-      };
-      var tabScrollerFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_2__material_tab_scroller_index__["MDCTabScroller"](el);
-      };
-
-      this.tabList_ = this.instantiateTabs_(tabFactory);
-      this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);
-    }
-  }, {
-    key: 'initialSyncWithDOM',
-    value: function initialSyncWithDOM() {
-      var _this2 = this;
-
-      this.handleTabInteraction_ = function (evt) {
-        return _this2.foundation_.handleTabInteraction(evt);
-      };
-      this.handleKeyDown_ = function (evt) {
-        return _this2.foundation_.handleKeyDown(evt);
-      };
-
-      this.root_.addEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTabFoundation"].strings.INTERACTED_EVENT, this.handleTabInteraction_);
-      this.root_.addEventListener('keydown', this.handleKeyDown_);
-
-      for (var i = 0; i < this.tabList_.length; i++) {
-        if (this.tabList_[i].active) {
-          this.scrollIntoView(i);
-          break;
+        exports.mdcAutoInit = mdcAutoInit;
+        mdcAutoInit.register = function(componentName, Constructor, warn) {
+            if (warn === void 0) {
+                warn = CONSOLE_WARN;
+            }
+            if (typeof Constructor !== "function") {
+                throw new Error("(mdc-auto-init) Invalid Constructor value: " + Constructor + ". Expected function.");
+            }
+            var registryValue = registry[componentName];
+            if (registryValue) {
+                warn("(mdc-auto-init) Overriding registration for " + componentName + " with " + Constructor + ". Was: " + registryValue);
+            }
+            registry[componentName] = Constructor;
+        };
+        mdcAutoInit.deregister = function(componentName) {
+            delete registry[componentName];
+        };
+        mdcAutoInit.deregisterAll = function() {
+            var keys = Object.keys(registry);
+            keys.forEach(this.deregister, this);
+        };
+        exports.default = mdcAutoInit;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(1));
+        __export(__webpack_require__(0));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(82));
+        __export(__webpack_require__(27));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util_1 = __webpack_require__(10);
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var foundation_2 = __webpack_require__(27);
+        var CB_PROTO_PROPS = [ "checked", "indeterminate" ];
+        var MDCCheckbox = function(_super) {
+            __extends(MDCCheckbox, _super);
+            function MDCCheckbox() {
+                var _this = _super !== null && _super.apply(this, arguments) || this;
+                _this.ripple_ = _this.createRipple_();
+                return _this;
+            }
+            MDCCheckbox.attachTo = function(root) {
+                return new MDCCheckbox(root);
+            };
+            Object.defineProperty(MDCCheckbox.prototype, "ripple", {
+                get: function get() {
+                    return this.ripple_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckbox.prototype, "checked", {
+                get: function get() {
+                    return this.nativeControl_.checked;
+                },
+                set: function set(checked) {
+                    this.nativeControl_.checked = checked;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckbox.prototype, "indeterminate", {
+                get: function get() {
+                    return this.nativeControl_.indeterminate;
+                },
+                set: function set(indeterminate) {
+                    this.nativeControl_.indeterminate = indeterminate;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckbox.prototype, "disabled", {
+                get: function get() {
+                    return this.nativeControl_.disabled;
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCCheckbox.prototype, "value", {
+                get: function get() {
+                    return this.nativeControl_.value;
+                },
+                set: function set(value) {
+                    this.nativeControl_.value = value;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCCheckbox.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleChange_ = function() {
+                    return _this.foundation_.handleChange();
+                };
+                this.handleAnimationEnd_ = function() {
+                    return _this.foundation_.handleAnimationEnd();
+                };
+                this.nativeControl_.addEventListener("change", this.handleChange_);
+                this.listen(util_1.getCorrectEventName(window, "animationend"), this.handleAnimationEnd_);
+                this.installPropertyChangeHooks_();
+            };
+            MDCCheckbox.prototype.destroy = function() {
+                this.ripple_.destroy();
+                this.nativeControl_.removeEventListener("change", this.handleChange_);
+                this.unlisten(util_1.getCorrectEventName(window, "animationend"), this.handleAnimationEnd_);
+                this.uninstallPropertyChangeHooks_();
+                _super.prototype.destroy.call(this);
+            };
+            MDCCheckbox.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    forceLayout: function forceLayout() {
+                        return _this.root_.offsetWidth;
+                    },
+                    hasNativeControl: function hasNativeControl() {
+                        return !!_this.nativeControl_;
+                    },
+                    isAttachedToDOM: function isAttachedToDOM() {
+                        return Boolean(_this.root_.parentNode);
+                    },
+                    isChecked: function isChecked() {
+                        return _this.checked;
+                    },
+                    isIndeterminate: function isIndeterminate() {
+                        return _this.indeterminate;
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    removeNativeControlAttr: function removeNativeControlAttr(attr) {
+                        return _this.nativeControl_.removeAttribute(attr);
+                    },
+                    setNativeControlAttr: function setNativeControlAttr(attr, value) {
+                        return _this.nativeControl_.setAttribute(attr, value);
+                    },
+                    setNativeControlDisabled: function setNativeControlDisabled(disabled) {
+                        return _this.nativeControl_.disabled = disabled;
+                    }
+                };
+                return new foundation_2.MDCCheckboxFoundation(adapter);
+            };
+            MDCCheckbox.prototype.createRipple_ = function() {
+                var _this = this;
+                var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), {
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.nativeControl_.removeEventListener(evtType, handler);
+                    },
+                    isSurfaceActive: function isSurfaceActive() {
+                        return ponyfill_1.matches(_this.nativeControl_, ":active");
+                    },
+                    isUnbounded: function isUnbounded() {
+                        return true;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.nativeControl_.addEventListener(evtType, handler);
+                    }
+                });
+                return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));
+            };
+            MDCCheckbox.prototype.installPropertyChangeHooks_ = function() {
+                var _this = this;
+                var nativeCb = this.nativeControl_;
+                var cbProto = Object.getPrototypeOf(nativeCb);
+                CB_PROTO_PROPS.forEach(function(controlState) {
+                    var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);
+                    if (!validDescriptor(desc)) {
+                        return;
+                    }
+                    var nativeGetter = desc.get;
+                    var nativeCbDesc = {
+                        configurable: desc.configurable,
+                        enumerable: desc.enumerable,
+                        get: nativeGetter,
+                        set: function set(state) {
+                            desc.set.call(nativeCb, state);
+                            _this.foundation_.handleChange();
+                        }
+                    };
+                    Object.defineProperty(nativeCb, controlState, nativeCbDesc);
+                });
+            };
+            MDCCheckbox.prototype.uninstallPropertyChangeHooks_ = function() {
+                var nativeCb = this.nativeControl_;
+                var cbProto = Object.getPrototypeOf(nativeCb);
+                CB_PROTO_PROPS.forEach(function(controlState) {
+                    var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);
+                    if (!validDescriptor(desc)) {
+                        return;
+                    }
+                    Object.defineProperty(nativeCb, controlState, desc);
+                });
+            };
+            Object.defineProperty(MDCCheckbox.prototype, "nativeControl_", {
+                get: function get() {
+                    var NATIVE_CONTROL_SELECTOR = foundation_2.MDCCheckboxFoundation.strings.NATIVE_CONTROL_SELECTOR;
+                    var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
+                    if (!el) {
+                        throw new Error("Checkbox component requires a " + NATIVE_CONTROL_SELECTOR + " element");
+                    }
+                    return el;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            return MDCCheckbox;
+        }(component_1.MDCComponent);
+        exports.MDCCheckbox = MDCCheckbox;
+        function validDescriptor(inputPropDesc) {
+            return !!inputPropDesc && typeof inputPropDesc.set === "function";
+        }
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            BG_FOCUSED: "mdc-ripple-upgraded--background-focused",
+            FG_ACTIVATION: "mdc-ripple-upgraded--foreground-activation",
+            FG_DEACTIVATION: "mdc-ripple-upgraded--foreground-deactivation",
+            ROOT: "mdc-ripple-upgraded",
+            UNBOUNDED: "mdc-ripple-upgraded--unbounded"
+        };
+        exports.strings = {
+            VAR_FG_SCALE: "--mdc-ripple-fg-scale",
+            VAR_FG_SIZE: "--mdc-ripple-fg-size",
+            VAR_FG_TRANSLATE_END: "--mdc-ripple-fg-translate-end",
+            VAR_FG_TRANSLATE_START: "--mdc-ripple-fg-translate-start",
+            VAR_LEFT: "--mdc-ripple-left",
+            VAR_TOP: "--mdc-ripple-top"
+        };
+        exports.numbers = {
+            DEACTIVATION_TIMEOUT_MS: 225,
+            FG_DEACTIVATION_MS: 150,
+            INITIAL_ORIGIN_SCALE: .6,
+            PADDING: 10,
+            TAP_DELAY_MS: 300
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            ANIM_CHECKED_INDETERMINATE: "mdc-checkbox--anim-checked-indeterminate",
+            ANIM_CHECKED_UNCHECKED: "mdc-checkbox--anim-checked-unchecked",
+            ANIM_INDETERMINATE_CHECKED: "mdc-checkbox--anim-indeterminate-checked",
+            ANIM_INDETERMINATE_UNCHECKED: "mdc-checkbox--anim-indeterminate-unchecked",
+            ANIM_UNCHECKED_CHECKED: "mdc-checkbox--anim-unchecked-checked",
+            ANIM_UNCHECKED_INDETERMINATE: "mdc-checkbox--anim-unchecked-indeterminate",
+            BACKGROUND: "mdc-checkbox__background",
+            CHECKED: "mdc-checkbox--checked",
+            CHECKMARK: "mdc-checkbox__checkmark",
+            CHECKMARK_PATH: "mdc-checkbox__checkmark-path",
+            DISABLED: "mdc-checkbox--disabled",
+            INDETERMINATE: "mdc-checkbox--indeterminate",
+            MIXEDMARK: "mdc-checkbox__mixedmark",
+            NATIVE_CONTROL: "mdc-checkbox__native-control",
+            ROOT: "mdc-checkbox",
+            SELECTED: "mdc-checkbox--selected",
+            UPGRADED: "mdc-checkbox--upgraded"
+        };
+        exports.strings = {
+            ARIA_CHECKED_ATTR: "aria-checked",
+            ARIA_CHECKED_INDETERMINATE_VALUE: "mixed",
+            NATIVE_CONTROL_SELECTOR: ".mdc-checkbox__native-control",
+            TRANSITION_STATE_CHECKED: "checked",
+            TRANSITION_STATE_INDETERMINATE: "indeterminate",
+            TRANSITION_STATE_INIT: "init",
+            TRANSITION_STATE_UNCHECKED: "unchecked"
+        };
+        exports.numbers = {
+            ANIM_END_LATCH_MS: 250
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCTabBar.prototype.__proto__ || Object.getPrototypeOf(MDCTabBar.prototype), 'destroy', this).call(this);
-      this.root_.removeEventListener(__WEBPACK_IMPORTED_MODULE_1__material_tab_index__["MDCTabFoundation"].strings.INTERACTED_EVENT, this.handleTabInteraction_);
-      this.root_.removeEventListener('keydown', this.handleKeyDown_);
-      this.tabList_.forEach(function (tab) {
-        return tab.destroy();
-      });
-      this.tabScroller_.destroy();
-    }
-
-    /**
-     * @return {!MDCTabBarFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */](
-      /** @type {!MDCTabBarAdapter} */{
-        scrollTo: function scrollTo(scrollX) {
-          return _this3.tabScroller_.scrollTo(scrollX);
-        },
-        incrementScroll: function incrementScroll(scrollXIncrement) {
-          return _this3.tabScroller_.incrementScroll(scrollXIncrement);
-        },
-        getScrollPosition: function getScrollPosition() {
-          return _this3.tabScroller_.getScrollPosition();
-        },
-        getScrollContentWidth: function getScrollContentWidth() {
-          return _this3.tabScroller_.getScrollContentWidth();
-        },
-        getOffsetWidth: function getOffsetWidth() {
-          return _this3.root_.offsetWidth;
-        },
-        isRTL: function isRTL() {
-          return window.getComputedStyle(_this3.root_).getPropertyValue('direction') === 'rtl';
-        },
-        setActiveTab: function setActiveTab(index) {
-          return _this3.foundation_.activateTab(index);
-        },
-        activateTabAtIndex: function activateTabAtIndex(index, clientRect) {
-          return _this3.tabList_[index].activate(clientRect);
-        },
-        deactivateTabAtIndex: function deactivateTabAtIndex(index) {
-          return _this3.tabList_[index].deactivate();
-        },
-        focusTabAtIndex: function focusTabAtIndex(index) {
-          return _this3.tabList_[index].focus();
-        },
-        getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) {
-          return _this3.tabList_[index].computeIndicatorClientRect();
-        },
-        getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) {
-          return _this3.tabList_[index].computeDimensions();
-        },
-        getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {
-          for (var i = 0; i < _this3.tabList_.length; i++) {
-            if (_this3.tabList_[i].active) {
-              return i;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(86));
+        __export(__webpack_require__(87));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
             }
             }
-          }
-          return -1;
-        },
-        getFocusedTabIndex: function getFocusedTabIndex() {
-          var tabElements = _this3.getTabElements_();
-          var activeElement = document.activeElement;
-          return tabElements.indexOf(activeElement);
-        },
-        getIndexOfTabById: function getIndexOfTabById(id) {
-          for (var i = 0; i < _this3.tabList_.length; i++) {
-            if (_this3.tabList_[i].id === id) {
-              return i;
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(28));
+        __export(__webpack_require__(12));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
             }
             }
-          }
-          return -1;
-        },
-        getTabListLength: function getTabListLength() {
-          return _this3.tabList_.length;
-        },
-        notifyTabActivated: function notifyTabActivated(index) {
-          return _this3.emit(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_ACTIVATED_EVENT, { index: index }, true);
         }
         }
-      });
-    }
-
-    /**
-     * Activates the tab at the given index
-     * @param {number} index The index of the tab
-     */
-
-  }, {
-    key: 'activateTab',
-    value: function activateTab(index) {
-      this.foundation_.activateTab(index);
-    }
-
-    /**
-     * Scrolls the tab at the given index into view
-     * @param {number} index THe index of the tab
-     */
-
-  }, {
-    key: 'scrollIntoView',
-    value: function scrollIntoView(index) {
-      this.foundation_.scrollIntoView(index);
-    }
-
-    /**
-     * Returns all the tab elements in a nice clean array
-     * @return {!Array<!Element>}
-     * @private
-     */
-
-  }, {
-    key: 'getTabElements_',
-    value: function getTabElements_() {
-      return [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_SELECTOR));
-    }
-
-    /**
-     * Instantiates tab components on all child tab elements
-     * @param {(function(!Element): !MDCTab)} tabFactory
-     * @return {!Array<!MDCTab>}
-     * @private
-     */
-
-  }, {
-    key: 'instantiateTabs_',
-    value: function instantiateTabs_(tabFactory) {
-      return this.getTabElements_().map(function (el) {
-        el.id = el.id || 'mdc-tab-' + ++tabIdCounter;
-        return tabFactory(el);
-      });
-    }
-
-    /**
-     * Instantiates tab scroller component on the child tab scroller element
-     * @param {(function(!Element): !MDCTabScroller)} tabScrollerFactory
-     * @return {?MDCTabScroller}
-     * @private
-     */
-
-  }, {
-    key: 'instantiateTabScroller_',
-    value: function instantiateTabScroller_(tabScrollerFactory) {
-      var tabScrollerElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_4__foundation__["a" /* default */].strings.TAB_SCROLLER_SELECTOR);
-      if (tabScrollerElement) {
-        return tabScrollerFactory(tabScrollerElement);
-      }
-      return null;
-    }
-  }, {
-    key: 'focusOnActivate',
-    set: function set(focusOnActivate) {
-      this.tabList_.forEach(function (tab) {
-        return tab.focusOnActivate = focusOnActivate;
-      });
-    }
-  }, {
-    key: 'useAutomaticActivation',
-    set: function set(useAutomaticActivation) {
-      this.foundation_.setUseAutomaticActivation(useAutomaticActivation);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCTabBar(root);
-    }
-  }]);
-
-  return MDCTabBar;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 143 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(58);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(4);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__rtl_scroller__ = __webpack_require__(11);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__ = __webpack_require__(144);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__ = __webpack_require__(145);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__ = __webpack_require__(146);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-
-/* eslint-enable no-unused-vars */
-
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTabScrollerAdapter>}
- * @final
- */
-
-var MDCTabScrollerFoundation = function (_MDCFoundation) {
-  _inherits(MDCTabScrollerFoundation, _MDCFoundation);
-
-  _createClass(MDCTabScrollerFoundation, null, [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */];
-    }
-
-    /**
-     * @see MDCTabScrollerAdapter for typing information
-     * @return {!MDCTabScrollerAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTabScrollerAdapter} */{
-          eventTargetMatchesSelector: function eventTargetMatchesSelector() {},
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          addScrollAreaClass: function addScrollAreaClass() {},
-          setScrollAreaStyleProperty: function setScrollAreaStyleProperty() {},
-          setScrollContentStyleProperty: function setScrollContentStyleProperty() {},
-          getScrollContentStyleValue: function getScrollContentStyleValue() {},
-          setScrollAreaScrollLeft: function setScrollAreaScrollLeft() {},
-          getScrollAreaScrollLeft: function getScrollAreaScrollLeft() {},
-          getScrollContentOffsetWidth: function getScrollContentOffsetWidth() {},
-          getScrollAreaOffsetWidth: function getScrollAreaOffsetWidth() {},
-          computeScrollAreaClientRect: function computeScrollAreaClientRect() {},
-          computeScrollContentClientRect: function computeScrollContentClientRect() {},
-          computeHorizontalScrollbarHeight: function computeHorizontalScrollbarHeight() {}
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(88));
+        __export(__webpack_require__(30));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(28);
+        var foundation_1 = __webpack_require__(12);
+        var foundation_2 = __webpack_require__(30);
+        var _a = foundation_1.MDCChipFoundation.strings, INTERACTION_EVENT = _a.INTERACTION_EVENT, SELECTION_EVENT = _a.SELECTION_EVENT, REMOVAL_EVENT = _a.REMOVAL_EVENT;
+        var CHIP_SELECTOR = foundation_2.MDCChipSetFoundation.strings.CHIP_SELECTOR;
+        var idCounter = 0;
+        var MDCChipSet = function(_super) {
+            __extends(MDCChipSet, _super);
+            function MDCChipSet() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCChipSet.attachTo = function(root) {
+                return new MDCChipSet(root);
+            };
+            Object.defineProperty(MDCChipSet.prototype, "chips", {
+                get: function get() {
+                    return this.chips_.slice();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCChipSet.prototype, "selectedChipIds", {
+                get: function get() {
+                    return this.foundation_.getSelectedChipIds();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCChipSet.prototype.initialize = function(chipFactory) {
+                if (chipFactory === void 0) {
+                    chipFactory = function chipFactory(el) {
+                        return new component_2.MDCChip(el);
+                    };
+                }
+                this.chipFactory_ = chipFactory;
+                this.chips_ = this.instantiateChips_(this.chipFactory_);
+            };
+            MDCChipSet.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.chips_.forEach(function(chip) {
+                    if (chip.id && chip.selected) {
+                        _this.foundation_.select(chip.id);
+                    }
+                });
+                this.handleChipInteraction_ = function(evt) {
+                    return _this.foundation_.handleChipInteraction(evt.detail.chipId);
+                };
+                this.handleChipSelection_ = function(evt) {
+                    return _this.foundation_.handleChipSelection(evt.detail.chipId, evt.detail.selected);
+                };
+                this.handleChipRemoval_ = function(evt) {
+                    return _this.foundation_.handleChipRemoval(evt.detail.chipId);
+                };
+                this.listen(INTERACTION_EVENT, this.handleChipInteraction_);
+                this.listen(SELECTION_EVENT, this.handleChipSelection_);
+                this.listen(REMOVAL_EVENT, this.handleChipRemoval_);
+            };
+            MDCChipSet.prototype.destroy = function() {
+                this.chips_.forEach(function(chip) {
+                    chip.destroy();
+                });
+                this.unlisten(INTERACTION_EVENT, this.handleChipInteraction_);
+                this.unlisten(SELECTION_EVENT, this.handleChipSelection_);
+                this.unlisten(REMOVAL_EVENT, this.handleChipRemoval_);
+                _super.prototype.destroy.call(this);
+            };
+            MDCChipSet.prototype.addChip = function(chipEl) {
+                chipEl.id = chipEl.id || "mdc-chip-" + ++idCounter;
+                this.chips_.push(this.chipFactory_(chipEl));
+            };
+            MDCChipSet.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    removeChip: function removeChip(chipId) {
+                        var index = _this.findChipIndex_(chipId);
+                        if (index >= 0) {
+                            _this.chips_[index].destroy();
+                            _this.chips_.splice(index, 1);
+                        }
+                    },
+                    setSelected: function setSelected(chipId, selected) {
+                        var index = _this.findChipIndex_(chipId);
+                        if (index >= 0) {
+                            _this.chips_[index].selected = selected;
+                        }
+                    }
+                };
+                return new foundation_2.MDCChipSetFoundation(adapter);
+            };
+            MDCChipSet.prototype.instantiateChips_ = function(chipFactory) {
+                var chipElements = [].slice.call(this.root_.querySelectorAll(CHIP_SELECTOR));
+                return chipElements.map(function(el) {
+                    el.id = el.id || "mdc-chip-" + ++idCounter;
+                    return chipFactory(el);
+                });
+            };
+            MDCChipSet.prototype.findChipIndex_ = function(chipId) {
+                for (var i = 0; i < this.chips_.length; i++) {
+                    if (this.chips_[i].id === chipId) {
+                        return i;
+                    }
+                }
+                return -1;
+            };
+            return MDCChipSet;
+        }(component_1.MDCComponent);
+        exports.MDCChipSet = MDCChipSet;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.strings = {
+            CHIP_SELECTOR: ".mdc-chip"
+        };
+        exports.cssClasses = {
+            CHOICE: "mdc-chip-set--choice",
+            FILTER: "mdc-chip-set--filter"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      );
-    }
-
-    /** @param {!MDCTabScrollerAdapter} adapter */
-
-  }]);
-
-  function MDCTabScrollerFoundation(adapter) {
-    _classCallCheck(this, MDCTabScrollerFoundation);
-
-    /**
-     * This boolean controls whether we should handle the transitionend and interaction events during the animation.
-     * @private {boolean}
-     */
-    var _this = _possibleConstructorReturn(this, (MDCTabScrollerFoundation.__proto__ || Object.getPrototypeOf(MDCTabScrollerFoundation)).call(this, _extends(MDCTabScrollerFoundation.defaultAdapter, adapter)));
-
-    _this.isAnimating_ = false;
-
-    /**
-     * The MDCTabScrollerRTL instance varies per browser and allows us to encapsulate the peculiar browser behavior
-     * of RTL scrolling in it's own class.
-     * @private {?MDCTabScrollerRTL}
-     */
-    _this.rtlScrollerInstance_;
-    return _this;
-  }
-
-  _createClass(MDCTabScrollerFoundation, [{
-    key: 'init',
-    value: function init() {
-      // Compute horizontal scrollbar height on scroller with overflow initially hidden, then update overflow to scroll
-      // and immediately adjust bottom margin to avoid the scrollbar initially appearing before JS runs.
-      var horizontalScrollbarHeight = this.adapter_.computeHorizontalScrollbarHeight();
-      this.adapter_.setScrollAreaStyleProperty('margin-bottom', -horizontalScrollbarHeight + 'px');
-      this.adapter_.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL);
-    }
-
-    /**
-     * Computes the current visual scroll position
-     * @return {number}
-     */
-
-  }, {
-    key: 'getScrollPosition',
-    value: function getScrollPosition() {
-      if (this.isRTL_()) {
-        return this.computeCurrentScrollPositionRTL_();
-      }
-
-      var currentTranslateX = this.calculateCurrentTranslateX_();
-      var scrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      return scrollLeft - currentTranslateX;
-    }
-
-    /**
-     * Handles interaction events that occur during transition
-     */
-
-  }, {
-    key: 'handleInteraction',
-    value: function handleInteraction() {
-      // Early exit if we aren't animating
-      if (!this.isAnimating_) {
-        return;
-      }
-
-      // Prevent other event listeners from handling this event
-      this.stopScrollAnimation_();
-    }
-
-    /**
-     * Handles the transitionend event
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleTransitionEnd',
-    value: function handleTransitionEnd(evt) {
-      // Early exit if we aren't animating or the event was triggered by a different element.
-      if (!this.isAnimating_ || !this.adapter_.eventTargetMatchesSelector(evt.target, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {
-        return;
-      }
-
-      this.isAnimating_ = false;
-      this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
-    }
-
-    /**
-     * Increment the scroll value by the scrollXIncrement
-     * @param {number} scrollXIncrement The value by which to increment the scroll position
-     */
-
-  }, {
-    key: 'incrementScroll',
-    value: function incrementScroll(scrollXIncrement) {
-      // Early exit for non-operational increment values
-      if (scrollXIncrement === 0) {
-        return;
-      }
-
-      if (this.isRTL_()) {
-        return this.incrementScrollRTL_(scrollXIncrement);
-      }
-
-      this.incrementScroll_(scrollXIncrement);
-    }
-
-    /**
-     * Scrolls to the given scrollX value
-     * @param {number} scrollX
-     */
-
-  }, {
-    key: 'scrollTo',
-    value: function scrollTo(scrollX) {
-      if (this.isRTL_()) {
-        return this.scrollToRTL_(scrollX);
-      }
-
-      this.scrollTo_(scrollX);
-    }
-
-    /**
-     * Returns the appropriate version of the MDCTabScrollerRTL
-     * @return {!MDCTabScrollerRTL}
-     */
-
-  }, {
-    key: 'getRTLScroller',
-    value: function getRTLScroller() {
-      if (!this.rtlScrollerInstance_) {
-        this.rtlScrollerInstance_ = this.rtlScrollerFactory_();
-      }
-
-      return this.rtlScrollerInstance_;
-    }
-
-    /**
-     * Returns the translateX value from a CSS matrix transform function string
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'calculateCurrentTranslateX_',
-    value: function calculateCurrentTranslateX_() {
-      var transformValue = this.adapter_.getScrollContentStyleValue('transform');
-      // Early exit if no transform is present
-      if (transformValue === 'none') {
-        return 0;
-      }
-
-      // The transform value comes back as a matrix transformation in the form
-      // of `matrix(a, b, c, d, tx, ty)`. We only care about tx (translateX) so
-      // we're going to grab all the parenthesized values, strip out tx, and
-      // parse it.
-      var results = /\((.+)\)/.exec(transformValue)[1];
-      var parts = results.split(',');
-      return parseFloat(parts[4]);
-    }
-
-    /**
-     * Calculates a safe scroll value that is > 0 and < the max scroll value
-     * @param {number} scrollX The distance to scroll
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'clampScrollValue_',
-    value: function clampScrollValue_(scrollX) {
-      var edges = this.calculateScrollEdges_();
-      return Math.min(Math.max(edges.left, scrollX), edges.right);
-    }
-
-    /**
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'computeCurrentScrollPositionRTL_',
-    value: function computeCurrentScrollPositionRTL_() {
-      var translateX = this.calculateCurrentTranslateX_();
-      return this.getRTLScroller().getScrollPositionRTL(translateX);
-    }
-
-    /**
-     * @return {!MDCTabScrollerHorizontalEdges}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollEdges_',
-    value: function calculateScrollEdges_() {
-      var contentWidth = this.adapter_.getScrollContentOffsetWidth();
-      var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
-      return (/** @type {!MDCTabScrollerHorizontalEdges} */{
-          left: 0,
-          right: contentWidth - rootWidth
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(31));
+        exports.util = util;
+        __export(__webpack_require__(94));
+        __export(__webpack_require__(32));
+    }, function(module, exports, __webpack_require__) {
+        var tabbable = __webpack_require__(92);
+        var xtend = __webpack_require__(93);
+        var activeFocusTraps = function() {
+            var trapQueue = [];
+            return {
+                activateTrap: function(trap) {
+                    if (trapQueue.length > 0) {
+                        var activeTrap = trapQueue[trapQueue.length - 1];
+                        if (activeTrap !== trap) {
+                            activeTrap.pause();
+                        }
+                    }
+                    var trapIndex = trapQueue.indexOf(trap);
+                    if (trapIndex === -1) {
+                        trapQueue.push(trap);
+                    } else {
+                        trapQueue.splice(trapIndex, 1);
+                        trapQueue.push(trap);
+                    }
+                },
+                deactivateTrap: function(trap) {
+                    var trapIndex = trapQueue.indexOf(trap);
+                    if (trapIndex !== -1) {
+                        trapQueue.splice(trapIndex, 1);
+                    }
+                    if (trapQueue.length > 0) {
+                        trapQueue[trapQueue.length - 1].unpause();
+                    }
+                }
+            };
+        }();
+        function focusTrap(element, userOptions) {
+            var doc = document;
+            var container = typeof element === "string" ? doc.querySelector(element) : element;
+            var config = xtend({
+                returnFocusOnDeactivate: true,
+                escapeDeactivates: true
+            }, userOptions);
+            var state = {
+                firstTabbableNode: null,
+                lastTabbableNode: null,
+                nodeFocusedBeforeActivation: null,
+                mostRecentlyFocusedNode: null,
+                active: false,
+                paused: false
+            };
+            var trap = {
+                activate: activate,
+                deactivate: deactivate,
+                pause: pause,
+                unpause: unpause
+            };
+            return trap;
+            function activate(activateOptions) {
+                if (state.active) return;
+                updateTabbableNodes();
+                state.active = true;
+                state.paused = false;
+                state.nodeFocusedBeforeActivation = doc.activeElement;
+                var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate;
+                if (onActivate) {
+                    onActivate();
+                }
+                addListeners();
+                return trap;
+            }
+            function deactivate(deactivateOptions) {
+                if (!state.active) return;
+                removeListeners();
+                state.active = false;
+                state.paused = false;
+                activeFocusTraps.deactivateTrap(trap);
+                var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate;
+                if (onDeactivate) {
+                    onDeactivate();
+                }
+                var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate;
+                if (returnFocus) {
+                    delay(function() {
+                        tryFocus(state.nodeFocusedBeforeActivation);
+                    });
+                }
+                return trap;
+            }
+            function pause() {
+                if (state.paused || !state.active) return;
+                state.paused = true;
+                removeListeners();
+            }
+            function unpause() {
+                if (!state.paused || !state.active) return;
+                state.paused = false;
+                updateTabbableNodes();
+                addListeners();
+            }
+            function addListeners() {
+                if (!state.active) return;
+                activeFocusTraps.activateTrap(trap);
+                delay(function() {
+                    tryFocus(getInitialFocusNode());
+                });
+                doc.addEventListener("focusin", checkFocusIn, true);
+                doc.addEventListener("mousedown", checkPointerDown, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("touchstart", checkPointerDown, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("click", checkClick, {
+                    capture: true,
+                    passive: false
+                });
+                doc.addEventListener("keydown", checkKey, {
+                    capture: true,
+                    passive: false
+                });
+                return trap;
+            }
+            function removeListeners() {
+                if (!state.active) return;
+                doc.removeEventListener("focusin", checkFocusIn, true);
+                doc.removeEventListener("mousedown", checkPointerDown, true);
+                doc.removeEventListener("touchstart", checkPointerDown, true);
+                doc.removeEventListener("click", checkClick, true);
+                doc.removeEventListener("keydown", checkKey, true);
+                return trap;
+            }
+            function getNodeForOption(optionName) {
+                var optionValue = config[optionName];
+                var node = optionValue;
+                if (!optionValue) {
+                    return null;
+                }
+                if (typeof optionValue === "string") {
+                    node = doc.querySelector(optionValue);
+                    if (!node) {
+                        throw new Error("`" + optionName + "` refers to no known node");
+                    }
+                }
+                if (typeof optionValue === "function") {
+                    node = optionValue();
+                    if (!node) {
+                        throw new Error("`" + optionName + "` did not return a node");
+                    }
+                }
+                return node;
+            }
+            function getInitialFocusNode() {
+                var node;
+                if (getNodeForOption("initialFocus") !== null) {
+                    node = getNodeForOption("initialFocus");
+                } else if (container.contains(doc.activeElement)) {
+                    node = doc.activeElement;
+                } else {
+                    node = state.firstTabbableNode || getNodeForOption("fallbackFocus");
+                }
+                if (!node) {
+                    throw new Error("You can't have a focus-trap without at least one focusable element");
+                }
+                return node;
+            }
+            function checkPointerDown(e) {
+                if (container.contains(e.target)) return;
+                if (config.clickOutsideDeactivates) {
+                    deactivate({
+                        returnFocus: !tabbable.isFocusable(e.target)
+                    });
+                } else {
+                    e.preventDefault();
+                }
+            }
+            function checkFocusIn(e) {
+                if (container.contains(e.target) || e.target instanceof Document) {
+                    return;
+                }
+                e.stopImmediatePropagation();
+                tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
+            }
+            function checkKey(e) {
+                if (config.escapeDeactivates !== false && isEscapeEvent(e)) {
+                    e.preventDefault();
+                    deactivate();
+                    return;
+                }
+                if (isTabEvent(e)) {
+                    checkTab(e);
+                    return;
+                }
+            }
+            function checkTab(e) {
+                updateTabbableNodes();
+                if (e.shiftKey && e.target === state.firstTabbableNode) {
+                    e.preventDefault();
+                    tryFocus(state.lastTabbableNode);
+                    return;
+                }
+                if (!e.shiftKey && e.target === state.lastTabbableNode) {
+                    e.preventDefault();
+                    tryFocus(state.firstTabbableNode);
+                    return;
+                }
+            }
+            function checkClick(e) {
+                if (config.clickOutsideDeactivates) return;
+                if (container.contains(e.target)) return;
+                e.preventDefault();
+                e.stopImmediatePropagation();
+            }
+            function updateTabbableNodes() {
+                var tabbableNodes = tabbable(container);
+                state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();
+                state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();
+            }
+            function tryFocus(node) {
+                if (node === doc.activeElement) return;
+                if (!node || !node.focus) {
+                    tryFocus(getInitialFocusNode());
+                    return;
+                }
+                node.focus();
+                state.mostRecentlyFocusedNode = node;
+                if (isSelectableInput(node)) {
+                    node.select();
+                }
+            }
         }
         }
-      );
-    }
-
-    /**
-     * Internal scroll method
-     * @param {number} scrollX The new scroll position
-     * @private
-     */
-
-  }, {
-    key: 'scrollTo_',
-    value: function scrollTo_(scrollX) {
-      var currentScrollX = this.getScrollPosition();
-      var safeScrollX = this.clampScrollValue_(scrollX);
-      var scrollDelta = safeScrollX - currentScrollX;
-      this.animate_( /** @type {!MDCTabScrollerAnimation} */{
-        finalScrollPosition: safeScrollX,
-        scrollDelta: scrollDelta
-      });
-    }
-
-    /**
-     * Internal RTL scroll method
-     * @param {number} scrollX The new scroll position
-     * @private
-     */
-
-  }, {
-    key: 'scrollToRTL_',
-    value: function scrollToRTL_(scrollX) {
-      var animation = this.getRTLScroller().scrollToRTL(scrollX);
-      this.animate_(animation);
-    }
-
-    /**
-     * Internal increment scroll method
-     * @param {number} scrollX The new scroll position increment
-     * @private
-     */
-
-  }, {
-    key: 'incrementScroll_',
-    value: function incrementScroll_(scrollX) {
-      var currentScrollX = this.getScrollPosition();
-      var targetScrollX = scrollX + currentScrollX;
-      var safeScrollX = this.clampScrollValue_(targetScrollX);
-      var scrollDelta = safeScrollX - currentScrollX;
-      this.animate_( /** @type {!MDCTabScrollerAnimation} */{
-        finalScrollPosition: safeScrollX,
-        scrollDelta: scrollDelta
-      });
-    }
-
-    /**
-     * Internal incremenet scroll RTL method
-     * @param {number} scrollX The new scroll position RTL increment
-     * @private
-     */
-
-  }, {
-    key: 'incrementScrollRTL_',
-    value: function incrementScrollRTL_(scrollX) {
-      var animation = this.getRTLScroller().incrementScrollRTL(scrollX);
-      this.animate_(animation);
-    }
-
-    /**
-     * Animates the tab scrolling
-     * @param {!MDCTabScrollerAnimation} animation The animation to apply
-     * @private
-     */
-
-  }, {
-    key: 'animate_',
-    value: function animate_(animation) {
-      var _this2 = this;
-
-      // Early exit if translateX is 0, which means there's no animation to perform
-      if (animation.scrollDelta === 0) {
-        return;
-      }
-
-      this.stopScrollAnimation_();
-      // This animation uses the FLIP approach.
-      // Read more here: https://aerotwist.com/blog/flip-your-animations/
-      this.adapter_.setScrollAreaScrollLeft(animation.finalScrollPosition);
-      this.adapter_.setScrollContentStyleProperty('transform', 'translateX(' + animation.scrollDelta + 'px)');
-      // Force repaint
-      this.adapter_.computeScrollAreaClientRect();
-
-      requestAnimationFrame(function () {
-        _this2.adapter_.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
-        _this2.adapter_.setScrollContentStyleProperty('transform', 'none');
-      });
-
-      this.isAnimating_ = true;
-    }
-
-    /**
-     * Stops scroll animation
-     * @private
-     */
-
-  }, {
-    key: 'stopScrollAnimation_',
-    value: function stopScrollAnimation_() {
-      this.isAnimating_ = false;
-      var currentScrollPosition = this.getAnimatingScrollPosition_();
-      this.adapter_.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);
-      this.adapter_.setScrollContentStyleProperty('transform', 'translateX(0px)');
-      this.adapter_.setScrollAreaScrollLeft(currentScrollPosition);
-    }
-
-    /**
-     * Gets the current scroll position during animation
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'getAnimatingScrollPosition_',
-    value: function getAnimatingScrollPosition_() {
-      var currentTranslateX = this.calculateCurrentTranslateX_();
-      var scrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      if (this.isRTL_()) {
-        return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX);
-      }
-
-      return scrollLeft - currentTranslateX;
-    }
-
-    /**
-     * Determines the RTL Scroller to use
-     * @return {!MDCTabScrollerRTL}
-     * @private
-     */
-
-  }, {
-    key: 'rtlScrollerFactory_',
-    value: function rtlScrollerFactory_() {
-      // Browsers have three different implementations of scrollLeft in RTL mode,
-      // dependent on the browser. The behavior is based off the max LTR
-      // scrollleft value and 0.
-      //
-      // * Default scrolling in RTL *
-      //    - Left-most value: 0
-      //    - Right-most value: Max LTR scrollLeft value
-      //
-      // * Negative scrolling in RTL *
-      //    - Left-most value: Negated max LTR scrollLeft value
-      //    - Right-most value: 0
-      //
-      // * Reverse scrolling in RTL *
-      //    - Left-most value: Max LTR scrollLeft value
-      //    - Right-most value: 0
-      //
-      // We use those principles below to determine which RTL scrollLeft
-      // behavior is implemented in the current browser.
-      var initialScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      this.adapter_.setScrollAreaScrollLeft(initialScrollLeft - 1);
-      var newScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-
-      // If the newScrollLeft value is negative,then we know that the browser has
-      // implemented negative RTL scrolling, since all other implementations have
-      // only positive values.
-      if (newScrollLeft < 0) {
-        // Undo the scrollLeft test check
-        this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);
-        return new __WEBPACK_IMPORTED_MODULE_5__rtl_negative_scroller__["a" /* default */](this.adapter_);
-      }
-
-      var rootClientRect = this.adapter_.computeScrollAreaClientRect();
-      var contentClientRect = this.adapter_.computeScrollContentClientRect();
-      var rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right);
-      // Undo the scrollLeft test check
-      this.adapter_.setScrollAreaScrollLeft(initialScrollLeft);
-
-      // By calculating the clientRect of the root element and the clientRect of
-      // the content element, we can determine how much the scroll value changed
-      // when we performed the scrollLeft subtraction above.
-      if (rightEdgeDelta === newScrollLeft) {
-        return new __WEBPACK_IMPORTED_MODULE_6__rtl_reverse_scroller__["a" /* default */](this.adapter_);
-      }
-
-      return new __WEBPACK_IMPORTED_MODULE_4__rtl_default_scroller__["a" /* default */](this.adapter_);
-    }
-
-    /**
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isRTL_',
-    value: function isRTL_() {
-      return this.adapter_.getScrollContentStyleValue('direction') === 'rtl';
-    }
-  }]);
-
-  return MDCTabScrollerFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerFoundation);
-
-/***/ }),
-/* 144 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @extends {MDCTabScrollerRTL}
- * @final
- */
-
-var MDCTabScrollerRTLDefault = function (_MDCTabScrollerRTL) {
-  _inherits(MDCTabScrollerRTLDefault, _MDCTabScrollerRTL);
-
-  function MDCTabScrollerRTLDefault() {
-    _classCallCheck(this, MDCTabScrollerRTLDefault);
-
-    return _possibleConstructorReturn(this, (MDCTabScrollerRTLDefault.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLDefault)).apply(this, arguments));
-  }
-
-  _createClass(MDCTabScrollerRTLDefault, [{
-    key: 'getScrollPositionRTL',
-
-    /**
-     * @return {number}
-     */
-    value: function getScrollPositionRTL() {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-
-      var _calculateScrollEdges = this.calculateScrollEdges_(),
-          right = _calculateScrollEdges.right;
-      // Scroll values on most browsers are ints instead of floats so we round
-
-
-      return Math.round(right - currentScrollLeft);
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'scrollToRTL',
-    value: function scrollToRTL(scrollX) {
-      var edges = this.calculateScrollEdges_();
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: clampedScrollLeft - currentScrollLeft
+        function isSelectableInput(node) {
+            return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function";
+        }
+        function isEscapeEvent(e) {
+            return e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
+        }
+        function isTabEvent(e) {
+            return e.key === "Tab" || e.keyCode === 9;
+        }
+        function delay(fn) {
+            return setTimeout(fn, 0);
+        }
+        module.exports = focusTrap;
+    }, function(module, exports) {
+        var candidateSelectors = [ "input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])' ];
+        var candidateSelector = candidateSelectors.join(",");
+        var matches = typeof Element === "undefined" ? function() {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
+        function tabbable(el, options) {
+            options = options || {};
+            var regularTabbables = [];
+            var orderedTabbables = [];
+            var candidates = el.querySelectorAll(candidateSelector);
+            if (options.includeContainer) {
+                if (matches.call(el, candidateSelector)) {
+                    candidates = Array.prototype.slice.apply(candidates);
+                    candidates.unshift(el);
+                }
+            }
+            var i, candidate, candidateTabindex;
+            for (i = 0; i < candidates.length; i++) {
+                candidate = candidates[i];
+                if (!isNodeMatchingSelectorTabbable(candidate)) continue;
+                candidateTabindex = getTabindex(candidate);
+                if (candidateTabindex === 0) {
+                    regularTabbables.push(candidate);
+                } else {
+                    orderedTabbables.push({
+                        documentOrder: i,
+                        tabIndex: candidateTabindex,
+                        node: candidate
+                    });
+                }
+            }
+            var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function(a) {
+                return a.node;
+            }).concat(regularTabbables);
+            return tabbableNodes;
+        }
+        tabbable.isTabbable = isTabbable;
+        tabbable.isFocusable = isFocusable;
+        function isNodeMatchingSelectorTabbable(node) {
+            if (!isNodeMatchingSelectorFocusable(node) || isNonTabbableRadio(node) || getTabindex(node) < 0) {
+                return false;
+            }
+            return true;
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'incrementScrollRTL',
-    value: function incrementScrollRTL(scrollX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: clampedScrollLeft - currentScrollLeft
+        function isTabbable(node) {
+            if (!node) throw new Error("No node provided");
+            if (matches.call(node, candidateSelector) === false) return false;
+            return isNodeMatchingSelectorTabbable(node);
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {number}
-     */
-
-  }, {
-    key: 'getAnimatingScrollPosition',
-    value: function getAnimatingScrollPosition(scrollX) {
-      return scrollX;
-    }
-
-    /**
-     * @return {!MDCTabScrollerHorizontalEdges}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollEdges_',
-    value: function calculateScrollEdges_() {
-      var contentWidth = this.adapter_.getScrollContentOffsetWidth();
-      var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
-      return (/** @type {!MDCTabScrollerHorizontalEdges} */{
-          left: 0,
-          right: contentWidth - rootWidth
+        function isNodeMatchingSelectorFocusable(node) {
+            if (node.disabled || isHiddenInput(node) || isHidden(node)) {
+                return false;
+            }
+            return true;
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'clampScrollValue_',
-    value: function clampScrollValue_(scrollX) {
-      var edges = this.calculateScrollEdges_();
-      return Math.min(Math.max(edges.left, scrollX), edges.right);
-    }
-  }]);
-
-  return MDCTabScrollerRTLDefault;
-}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLDefault);
-
-/***/ }),
-/* 145 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @extends {MDCTabScrollerRTL}
- * @final
- */
-
-var MDCTabScrollerRTLNegative = function (_MDCTabScrollerRTL) {
-  _inherits(MDCTabScrollerRTLNegative, _MDCTabScrollerRTL);
-
-  function MDCTabScrollerRTLNegative() {
-    _classCallCheck(this, MDCTabScrollerRTLNegative);
-
-    return _possibleConstructorReturn(this, (MDCTabScrollerRTLNegative.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLNegative)).apply(this, arguments));
-  }
-
-  _createClass(MDCTabScrollerRTLNegative, [{
-    key: 'getScrollPositionRTL',
-
-    /**
-     * @param {number} translateX The current translateX position
-     * @return {number}
-     */
-    value: function getScrollPositionRTL(translateX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      return Math.round(translateX - currentScrollLeft);
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'scrollToRTL',
-    value: function scrollToRTL(scrollX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(-scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: clampedScrollLeft - currentScrollLeft
+        var focusableCandidateSelector = candidateSelectors.concat("iframe").join(",");
+        function isFocusable(node) {
+            if (!node) throw new Error("No node provided");
+            if (matches.call(node, focusableCandidateSelector) === false) return false;
+            return isNodeMatchingSelectorFocusable(node);
+        }
+        function getTabindex(node) {
+            var tabindexAttr = parseInt(node.getAttribute("tabindex"), 10);
+            if (!isNaN(tabindexAttr)) return tabindexAttr;
+            if (isContentEditable(node)) return 0;
+            return node.tabIndex;
+        }
+        function sortOrderedTabbables(a, b) {
+            return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
+        }
+        function isContentEditable(node) {
+            return node.contentEditable === "true";
+        }
+        function isInput(node) {
+            return node.tagName === "INPUT";
+        }
+        function isHiddenInput(node) {
+            return isInput(node) && node.type === "hidden";
+        }
+        function isRadio(node) {
+            return isInput(node) && node.type === "radio";
+        }
+        function isNonTabbableRadio(node) {
+            return isRadio(node) && !isTabbableRadio(node);
+        }
+        function getCheckedRadio(nodes) {
+            for (var i = 0; i < nodes.length; i++) {
+                if (nodes[i].checked) {
+                    return nodes[i];
+                }
+            }
+        }
+        function isTabbableRadio(node) {
+            if (!node.name) return true;
+            var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]');
+            var checked = getCheckedRadio(radioSet);
+            return !checked || checked === node;
+        }
+        function isHidden(node) {
+            return node.offsetParent === null || getComputedStyle(node).visibility === "hidden";
+        }
+        module.exports = tabbable;
+    }, function(module, exports) {
+        module.exports = extend;
+        var hasOwnProperty = Object.prototype.hasOwnProperty;
+        function extend() {
+            var target = {};
+            for (var i = 0; i < arguments.length; i++) {
+                var source = arguments[i];
+                for (var key in source) {
+                    if (hasOwnProperty.call(source, key)) {
+                        target[key] = source[key];
+                    }
+                }
+            }
+            return target;
+        }
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __values = this && this.__values || function(o) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
+            if (m) return m.call(o);
+            return {
+                next: function next() {
+                    if (o && i >= o.length) o = void 0;
+                    return {
+                        value: o && o[i++],
+                        done: !o
+                    };
+                }
+            };
+        };
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(32);
+        var util = __importStar(__webpack_require__(31));
+        var strings = foundation_1.MDCDialogFoundation.strings;
+        var MDCDialog = function(_super) {
+            __extends(MDCDialog, _super);
+            function MDCDialog() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            Object.defineProperty(MDCDialog.prototype, "isOpen", {
+                get: function get() {
+                    return this.foundation_.isOpen();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialog.prototype, "escapeKeyAction", {
+                get: function get() {
+                    return this.foundation_.getEscapeKeyAction();
+                },
+                set: function set(action) {
+                    this.foundation_.setEscapeKeyAction(action);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialog.prototype, "scrimClickAction", {
+                get: function get() {
+                    return this.foundation_.getScrimClickAction();
+                },
+                set: function set(action) {
+                    this.foundation_.setScrimClickAction(action);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCDialog.prototype, "autoStackButtons", {
+                get: function get() {
+                    return this.foundation_.getAutoStackButtons();
+                },
+                set: function set(autoStack) {
+                    this.foundation_.setAutoStackButtons(autoStack);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCDialog.attachTo = function(root) {
+                return new MDCDialog(root);
+            };
+            MDCDialog.prototype.initialize = function(focusTrapFactory, initialFocusEl) {
+                var e_1, _a;
+                var container = this.root_.querySelector(strings.CONTAINER_SELECTOR);
+                if (!container) {
+                    throw new Error("Dialog component requires a " + strings.CONTAINER_SELECTOR + " container element");
+                }
+                this.container_ = container;
+                this.content_ = this.root_.querySelector(strings.CONTENT_SELECTOR);
+                this.buttons_ = [].slice.call(this.root_.querySelectorAll(strings.BUTTON_SELECTOR));
+                this.defaultButton_ = this.root_.querySelector(strings.DEFAULT_BUTTON_SELECTOR);
+                this.focusTrapFactory_ = focusTrapFactory;
+                this.initialFocusEl_ = initialFocusEl;
+                this.buttonRipples_ = [];
+                try {
+                    for (var _b = __values(this.buttons_), _c = _b.next(); !_c.done; _c = _b.next()) {
+                        var buttonEl = _c.value;
+                        this.buttonRipples_.push(new component_2.MDCRipple(buttonEl));
+                    }
+                } catch (e_1_1) {
+                    e_1 = {
+                        error: e_1_1
+                    };
+                } finally {
+                    try {
+                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
+                    } finally {
+                        if (e_1) throw e_1.error;
+                    }
+                }
+            };
+            MDCDialog.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.focusTrap_ = util.createFocusTrapInstance(this.container_, this.focusTrapFactory_, this.initialFocusEl_);
+                this.handleInteraction_ = this.foundation_.handleInteraction.bind(this.foundation_);
+                this.handleDocumentKeydown_ = this.foundation_.handleDocumentKeydown.bind(this.foundation_);
+                this.handleLayout_ = this.layout.bind(this);
+                var LAYOUT_EVENTS = [ "resize", "orientationchange" ];
+                this.handleOpening_ = function() {
+                    LAYOUT_EVENTS.forEach(function(evtType) {
+                        return window.addEventListener(evtType, _this.handleLayout_);
+                    });
+                    document.addEventListener("keydown", _this.handleDocumentKeydown_);
+                };
+                this.handleClosing_ = function() {
+                    LAYOUT_EVENTS.forEach(function(evtType) {
+                        return window.removeEventListener(evtType, _this.handleLayout_);
+                    });
+                    document.removeEventListener("keydown", _this.handleDocumentKeydown_);
+                };
+                this.listen("click", this.handleInteraction_);
+                this.listen("keydown", this.handleInteraction_);
+                this.listen(strings.OPENING_EVENT, this.handleOpening_);
+                this.listen(strings.CLOSING_EVENT, this.handleClosing_);
+            };
+            MDCDialog.prototype.destroy = function() {
+                this.unlisten("click", this.handleInteraction_);
+                this.unlisten("keydown", this.handleInteraction_);
+                this.unlisten(strings.OPENING_EVENT, this.handleOpening_);
+                this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);
+                this.handleClosing_();
+                this.buttonRipples_.forEach(function(ripple) {
+                    return ripple.destroy();
+                });
+                _super.prototype.destroy.call(this);
+            };
+            MDCDialog.prototype.layout = function() {
+                this.foundation_.layout();
+            };
+            MDCDialog.prototype.open = function() {
+                this.foundation_.open();
+            };
+            MDCDialog.prototype.close = function(action) {
+                if (action === void 0) {
+                    action = "";
+                }
+                this.foundation_.close(action);
+            };
+            MDCDialog.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addBodyClass: function addBodyClass(className) {
+                        return document.body.classList.add(className);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    areButtonsStacked: function areButtonsStacked() {
+                        return util.areTopsMisaligned(_this.buttons_);
+                    },
+                    clickDefaultButton: function clickDefaultButton() {
+                        return _this.defaultButton_ && _this.defaultButton_.click();
+                    },
+                    eventTargetMatches: function eventTargetMatches(target, selector) {
+                        return target ? ponyfill_1.matches(target, selector) : false;
+                    },
+                    getActionFromEvent: function getActionFromEvent(evt) {
+                        if (!evt.target) {
+                            return "";
+                        }
+                        var element = ponyfill_1.closest(evt.target, "[" + strings.ACTION_ATTRIBUTE + "]");
+                        return element && element.getAttribute(strings.ACTION_ATTRIBUTE);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    isContentScrollable: function isContentScrollable() {
+                        return util.isScrollable(_this.content_);
+                    },
+                    notifyClosed: function notifyClosed(action) {
+                        return _this.emit(strings.CLOSED_EVENT, action ? {
+                            action: action
+                        } : {});
+                    },
+                    notifyClosing: function notifyClosing(action) {
+                        return _this.emit(strings.CLOSING_EVENT, action ? {
+                            action: action
+                        } : {});
+                    },
+                    notifyOpened: function notifyOpened() {
+                        return _this.emit(strings.OPENED_EVENT, {});
+                    },
+                    notifyOpening: function notifyOpening() {
+                        return _this.emit(strings.OPENING_EVENT, {});
+                    },
+                    releaseFocus: function releaseFocus() {
+                        return _this.focusTrap_.deactivate();
+                    },
+                    removeBodyClass: function removeBodyClass(className) {
+                        return document.body.classList.remove(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    reverseButtons: function reverseButtons() {
+                        _this.buttons_.reverse();
+                        _this.buttons_.forEach(function(button) {
+                            button.parentElement.appendChild(button);
+                        });
+                    },
+                    trapFocus: function trapFocus() {
+                        return _this.focusTrap_.activate();
+                    }
+                };
+                return new foundation_1.MDCDialogFoundation(adapter);
+            };
+            return MDCDialog;
+        }(component_1.MDCComponent);
+        exports.MDCDialog = MDCDialog;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            CLOSING: "mdc-dialog--closing",
+            OPEN: "mdc-dialog--open",
+            OPENING: "mdc-dialog--opening",
+            SCROLLABLE: "mdc-dialog--scrollable",
+            SCROLL_LOCK: "mdc-dialog-scroll-lock",
+            STACKED: "mdc-dialog--stacked"
+        };
+        exports.strings = {
+            ACTION_ATTRIBUTE: "data-mdc-dialog-action",
+            BUTTON_SELECTOR: ".mdc-dialog__button",
+            CLOSED_EVENT: "MDCDialog:closed",
+            CLOSE_ACTION: "close",
+            CLOSING_EVENT: "MDCDialog:closing",
+            CONTAINER_SELECTOR: ".mdc-dialog__container",
+            CONTENT_SELECTOR: ".mdc-dialog__content",
+            DEFAULT_BUTTON_SELECTOR: ".mdc-dialog__button--default",
+            DESTROY_ACTION: "destroy",
+            OPENED_EVENT: "MDCDialog:opened",
+            OPENING_EVENT: "MDCDialog:opening",
+            SCRIM_SELECTOR: ".mdc-dialog__scrim",
+            SUPPRESS_DEFAULT_PRESS_SELECTOR: [ "textarea", ".mdc-menu .mdc-list-item" ].join(", "),
+            SURFACE_SELECTOR: ".mdc-dialog__surface"
+        };
+        exports.numbers = {
+            DIALOG_ANIMATION_CLOSE_TIME_MS: 75,
+            DIALOG_ANIMATION_OPEN_TIME_MS: 150
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var ponyfill = __importStar(__webpack_require__(3));
+        exports.ponyfill = ponyfill;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(33));
+        exports.util = util;
+        __export(__webpack_require__(100));
+        __export(__webpack_require__(14));
+        __export(__webpack_require__(36));
+    }, function(module, exports) {
+        var candidateSelectors = [ "input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])' ];
+        var candidateSelector = candidateSelectors.join(",");
+        var matches = typeof Element === "undefined" ? function() {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
+        function tabbable(el, options) {
+            options = options || {};
+            var regularTabbables = [];
+            var orderedTabbables = [];
+            var candidates = el.querySelectorAll(candidateSelector);
+            if (options.includeContainer) {
+                if (matches.call(el, candidateSelector)) {
+                    candidates = Array.prototype.slice.apply(candidates);
+                    candidates.unshift(el);
+                }
+            }
+            var i, candidate, candidateTabindex;
+            for (i = 0; i < candidates.length; i++) {
+                candidate = candidates[i];
+                if (!isNodeMatchingSelectorTabbable(candidate)) continue;
+                candidateTabindex = getTabindex(candidate);
+                if (candidateTabindex === 0) {
+                    regularTabbables.push(candidate);
+                } else {
+                    orderedTabbables.push({
+                        documentOrder: i,
+                        tabIndex: candidateTabindex,
+                        node: candidate
+                    });
+                }
+            }
+            var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function(a) {
+                return a.node;
+            }).concat(regularTabbables);
+            return tabbableNodes;
+        }
+        tabbable.isTabbable = isTabbable;
+        tabbable.isFocusable = isFocusable;
+        function isNodeMatchingSelectorTabbable(node) {
+            if (!isNodeMatchingSelectorFocusable(node) || isNonTabbableRadio(node) || getTabindex(node) < 0) {
+                return false;
+            }
+            return true;
+        }
+        function isTabbable(node) {
+            if (!node) throw new Error("No node provided");
+            if (matches.call(node, candidateSelector) === false) return false;
+            return isNodeMatchingSelectorTabbable(node);
+        }
+        function isNodeMatchingSelectorFocusable(node) {
+            if (node.disabled || isHiddenInput(node) || isHidden(node)) {
+                return false;
+            }
+            return true;
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'incrementScrollRTL',
-    value: function incrementScrollRTL(scrollX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: clampedScrollLeft - currentScrollLeft
+        var focusableCandidateSelector = candidateSelectors.concat("iframe").join(",");
+        function isFocusable(node) {
+            if (!node) throw new Error("No node provided");
+            if (matches.call(node, focusableCandidateSelector) === false) return false;
+            return isNodeMatchingSelectorFocusable(node);
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @param {number} translateX
-     * @return {number}
-     */
-
-  }, {
-    key: 'getAnimatingScrollPosition',
-    value: function getAnimatingScrollPosition(scrollX, translateX) {
-      return scrollX - translateX;
-    }
-
-    /**
-     * @return {!MDCTabScrollerHorizontalEdges}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollEdges_',
-    value: function calculateScrollEdges_() {
-      var contentWidth = this.adapter_.getScrollContentOffsetWidth();
-      var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
-      return (/** @type {!MDCTabScrollerHorizontalEdges} */{
-          left: rootWidth - contentWidth,
-          right: 0
+        function getTabindex(node) {
+            var tabindexAttr = parseInt(node.getAttribute("tabindex"), 10);
+            if (!isNaN(tabindexAttr)) return tabindexAttr;
+            if (isContentEditable(node)) return 0;
+            return node.tabIndex;
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'clampScrollValue_',
-    value: function clampScrollValue_(scrollX) {
-      var edges = this.calculateScrollEdges_();
-      return Math.max(Math.min(edges.right, scrollX), edges.left);
-    }
-  }]);
-
-  return MDCTabScrollerRTLNegative;
-}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLNegative);
-
-/***/ }),
-/* 146 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rtl_scroller__ = __webpack_require__(11);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(4);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @extends {MDCTabScrollerRTL}
- * @final
- */
-
-var MDCTabScrollerRTLReverse = function (_MDCTabScrollerRTL) {
-  _inherits(MDCTabScrollerRTLReverse, _MDCTabScrollerRTL);
-
-  function MDCTabScrollerRTLReverse() {
-    _classCallCheck(this, MDCTabScrollerRTLReverse);
-
-    return _possibleConstructorReturn(this, (MDCTabScrollerRTLReverse.__proto__ || Object.getPrototypeOf(MDCTabScrollerRTLReverse)).apply(this, arguments));
-  }
-
-  _createClass(MDCTabScrollerRTLReverse, [{
-    key: 'getScrollPositionRTL',
-
-    /**
-     * @param {number} translateX
-     * @return {number}
-     */
-    value: function getScrollPositionRTL(translateX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      // Scroll values on most browsers are ints instead of floats so we round
-      return Math.round(currentScrollLeft - translateX);
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'scrollToRTL',
-    value: function scrollToRTL(scrollX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: currentScrollLeft - clampedScrollLeft
+        function sortOrderedTabbables(a, b) {
+            return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {!MDCTabScrollerAnimation}
-     */
-
-  }, {
-    key: 'incrementScrollRTL',
-    value: function incrementScrollRTL(scrollX) {
-      var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
-      var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);
-      return (/** @type {!MDCTabScrollerAnimation} */{
-          finalScrollPosition: clampedScrollLeft,
-          scrollDelta: currentScrollLeft - clampedScrollLeft
+        function isContentEditable(node) {
+            return node.contentEditable === "true";
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {number}
-     */
-
-  }, {
-    key: 'getAnimatingScrollPosition',
-    value: function getAnimatingScrollPosition(scrollX, translateX) {
-      return scrollX + translateX;
-    }
-
-    /**
-     * @return {!MDCTabScrollerHorizontalEdges}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollEdges_',
-    value: function calculateScrollEdges_() {
-      var contentWidth = this.adapter_.getScrollContentOffsetWidth();
-      var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
-      return (/** @type {!MDCTabScrollerHorizontalEdges} */{
-          left: contentWidth - rootWidth,
-          right: 0
+        function isInput(node) {
+            return node.tagName === "INPUT";
         }
         }
-      );
-    }
-
-    /**
-     * @param {number} scrollX
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'clampScrollValue_',
-    value: function clampScrollValue_(scrollX) {
-      var edges = this.calculateScrollEdges_();
-      return Math.min(Math.max(edges.right, scrollX), edges.left);
-    }
-  }]);
-
-  return MDCTabScrollerRTLReverse;
-}(__WEBPACK_IMPORTED_MODULE_0__rtl_scroller__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabScrollerRTLReverse);
-
-/***/ }),
-/* 147 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "computeHorizontalScrollbarHeight", function() { return computeHorizontalScrollbarHeight; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMatchesProperty", function() { return getMatchesProperty; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(58);
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-/**
- * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.
- * @private {number|undefined}
- */
-var horizontalScrollbarHeight_ = void 0;
-
-/**
- * Computes the height of browser-rendered horizontal scrollbars using a self-created test element.
- * May return 0 (e.g. on OS X browsers under default configuration).
- * @param {!Document} documentObj
- * @param {boolean=} shouldCacheResult
- * @return {number}
- */
-function computeHorizontalScrollbarHeight(documentObj) {
-  var shouldCacheResult = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
-
-  if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {
-    return horizontalScrollbarHeight_;
-  }
-
-  var el = documentObj.createElement('div');
-  el.classList.add(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].SCROLL_TEST);
-  documentObj.body.appendChild(el);
-
-  var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;
-  documentObj.body.removeChild(el);
-
-  if (shouldCacheResult) {
-    horizontalScrollbarHeight_ = horizontalScrollbarHeight;
-  }
-  return horizontalScrollbarHeight;
-}
-
-/**
- * @param {!Object} HTMLElementPrototype
- * @return {string}
- */
-function getMatchesProperty(HTMLElementPrototype) {
-  return ['msMatchesSelector', 'matches'].filter(function (p) {
-    return p in HTMLElementPrototype;
-  }).pop();
-}
-
-
-
-/***/ }),
-/* 148 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(149);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__adapter__ = __webpack_require__(59);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__material_tab_adapter__ = __webpack_require__(10);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @type {Set<string>}
- */
-var ACCEPTABLE_KEYS = new Set();
-// IE11 has no support for new Set with iterable so we need to initialize this by hand
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY);
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY);
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY);
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].HOME_KEY);
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY);
-ACCEPTABLE_KEYS.add(__WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY);
-
-/**
- * @type {Map<number, string>}
- */
-var KEYCODE_MAP = new Map();
-// IE11 has no support for new Map with iterable so we need to initialize this by hand
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ARROW_LEFT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY);
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ARROW_RIGHT_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY);
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].END_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY);
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].HOME_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].HOME_KEY);
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].ENTER_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY);
-KEYCODE_MAP.set(__WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].SPACE_KEYCODE, __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY);
-
-/**
- * @extends {MDCFoundation<!MDCTabBarAdapter>}
- * @final
- */
-
-var MDCTabBarFoundation = function (_MDCFoundation) {
-  _inherits(MDCTabBarFoundation, _MDCFoundation);
-
-  _createClass(MDCTabBarFoundation, null, [{
-    key: 'strings',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */];
-    }
-
-    /** @return enum {number} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */];
-    }
-
-    /**
-     * @see MDCTabBarAdapter for typing information
-     * @return {!MDCTabBarAdapter}
-     */
-
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTabBarAdapter} */{
-          scrollTo: function scrollTo() {},
-          incrementScroll: function incrementScroll() {},
-          getScrollPosition: function getScrollPosition() {},
-          getScrollContentWidth: function getScrollContentWidth() {},
-          getOffsetWidth: function getOffsetWidth() {},
-          isRTL: function isRTL() {},
-          setActiveTab: function setActiveTab() {},
-          activateTabAtIndex: function activateTabAtIndex() {},
-          deactivateTabAtIndex: function deactivateTabAtIndex() {},
-          focusTabAtIndex: function focusTabAtIndex() {},
-          getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex() {},
-          getTabDimensionsAtIndex: function getTabDimensionsAtIndex() {},
-          getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {},
-          getFocusedTabIndex: function getFocusedTabIndex() {},
-          getIndexOfTabById: function getIndexOfTabById() {},
-          getTabListLength: function getTabListLength() {},
-          notifyTabActivated: function notifyTabActivated() {}
+        function isHiddenInput(node) {
+            return isInput(node) && node.type === "hidden";
         }
         }
-      );
-    }
-
-    /**
-     * @param {!MDCTabBarAdapter} adapter
-     * */
-
-  }]);
-
-  function MDCTabBarFoundation(adapter) {
-    _classCallCheck(this, MDCTabBarFoundation);
-
-    /** @private {boolean} */
-    var _this = _possibleConstructorReturn(this, (MDCTabBarFoundation.__proto__ || Object.getPrototypeOf(MDCTabBarFoundation)).call(this, _extends(MDCTabBarFoundation.defaultAdapter, adapter)));
-
-    _this.useAutomaticActivation_ = false;
-    return _this;
-  }
-
-  /**
-   * Switches between automatic and manual activation modes.
-   * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples.
-   * @param {boolean} useAutomaticActivation
-   */
-
-
-  _createClass(MDCTabBarFoundation, [{
-    key: 'setUseAutomaticActivation',
-    value: function setUseAutomaticActivation(useAutomaticActivation) {
-      this.useAutomaticActivation_ = useAutomaticActivation;
-    }
-
-    /**
-     * Activates the tab at the given index
-     * @param {number} index
-     */
-
-  }, {
-    key: 'activateTab',
-    value: function activateTab(index) {
-      var previousActiveIndex = this.adapter_.getPreviousActiveTabIndex();
-      if (!this.indexIsInRange_(index) || index === previousActiveIndex) {
-        return;
-      }
-
-      this.adapter_.deactivateTabAtIndex(previousActiveIndex);
-      this.adapter_.activateTabAtIndex(index, this.adapter_.getTabIndicatorClientRectAtIndex(previousActiveIndex));
-      this.scrollIntoView(index);
-
-      this.adapter_.notifyTabActivated(index);
-    }
-
-    /**
-     * Handles the keydown event
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'handleKeyDown',
-    value: function handleKeyDown(evt) {
-      // Get the key from the event
-      var key = this.getKeyFromEvent_(evt);
-
-      // Early exit if the event key isn't one of the keyboard navigation keys
-      if (key === undefined) {
-        return;
-      }
-
-      // Prevent default behavior for movement keys, but not for activation keys, since :active is used to apply ripple
-      if (!this.isActivationKey_(key)) {
-        evt.preventDefault();
-      }
-
-      if (this.useAutomaticActivation_) {
-        if (this.isActivationKey_(key)) {
-          return;
+        function isRadio(node) {
+            return isInput(node) && node.type === "radio";
         }
         }
-
-        var index = this.determineTargetFromKey_(this.adapter_.getPreviousActiveTabIndex(), key);
-        this.adapter_.setActiveTab(index);
-        this.scrollIntoView(index);
-      } else {
-        var focusedTabIndex = this.adapter_.getFocusedTabIndex();
-        if (this.isActivationKey_(key)) {
-          this.adapter_.setActiveTab(focusedTabIndex);
-        } else {
-          var _index = this.determineTargetFromKey_(focusedTabIndex, key);
-          this.adapter_.focusTabAtIndex(_index);
-          this.scrollIntoView(_index);
+        function isNonTabbableRadio(node) {
+            return isRadio(node) && !isTabbableRadio(node);
         }
         }
-      }
-    }
-
-    /**
-     * Handles the MDCTab:interacted event
-     * @param {!CustomEvent} evt
-     */
-
-  }, {
-    key: 'handleTabInteraction',
-    value: function handleTabInteraction(evt) {
-      this.adapter_.setActiveTab(this.adapter_.getIndexOfTabById(evt.detail.tabId));
-    }
-
-    /**
-     * Scrolls the tab at the given index into view
-     * @param {number} index The tab index to make visible
-     */
-
-  }, {
-    key: 'scrollIntoView',
-    value: function scrollIntoView(index) {
-      // Early exit if the index is out of range
-      if (!this.indexIsInRange_(index)) {
-        return;
-      }
-
-      // Always scroll to 0 if scrolling to the 0th index
-      if (index === 0) {
-        return this.adapter_.scrollTo(0);
-      }
-
-      // Always scroll to the max value if scrolling to the Nth index
-      // MDCTabScroller.scrollTo() will never scroll past the max possible value
-      if (index === this.adapter_.getTabListLength() - 1) {
-        return this.adapter_.scrollTo(this.adapter_.getScrollContentWidth());
-      }
-
-      if (this.isRTL_()) {
-        return this.scrollIntoViewRTL_(index);
-      }
-
-      this.scrollIntoView_(index);
-    }
-
-    /**
-     * Private method for determining the index of the destination tab based on what key was pressed
-     * @param {number} origin The original index from which to determine the destination
-     * @param {string} key The name of the key
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'determineTargetFromKey_',
-    value: function determineTargetFromKey_(origin, key) {
-      var isRTL = this.isRTL_();
-      var maxIndex = this.adapter_.getTabListLength() - 1;
-      var shouldGoToEnd = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].END_KEY;
-      var shouldDecrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY && isRTL;
-      var shouldIncrement = key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_RIGHT_KEY && !isRTL || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ARROW_LEFT_KEY && isRTL;
-      var index = origin;
-
-      if (shouldGoToEnd) {
-        index = maxIndex;
-      } else if (shouldDecrement) {
-        index -= 1;
-      } else if (shouldIncrement) {
-        index += 1;
-      } else {
-        index = 0;
-      }
-
-      if (index < 0) {
-        index = maxIndex;
-      } else if (index > maxIndex) {
-        index = 0;
-      }
-
-      return index;
-    }
-
-    /**
-     * Calculates the scroll increment that will make the tab at the given index visible
-     * @param {number} index The index of the tab
-     * @param {number} nextIndex The index of the next tab
-     * @param {number} scrollPosition The current scroll position
-     * @param {number} barWidth The width of the Tab Bar
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollIncrement_',
-    value: function calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth) {
-      var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);
-      var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;
-      var relativeContentRight = nextTabDimensions.contentRight - scrollPosition;
-      var leftIncrement = relativeContentRight - __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
-      var rightIncrement = relativeContentLeft + __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
-
-      if (nextIndex < index) {
-        return Math.min(leftIncrement, 0);
-      }
-
-      return Math.max(rightIncrement, 0);
-    }
-
-    /**
-     * Calculates the scroll increment that will make the tab at the given index visible in RTL
-     * @param {number} index The index of the tab
-     * @param {number} nextIndex The index of the next tab
-     * @param {number} scrollPosition The current scroll position
-     * @param {number} barWidth The width of the Tab Bar
-     * @param {number} scrollContentWidth The width of the scroll content
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'calculateScrollIncrementRTL_',
-    value: function calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollContentWidth) {
-      var nextTabDimensions = this.adapter_.getTabDimensionsAtIndex(nextIndex);
-      var relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition;
-      var relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth;
-      var leftIncrement = relativeContentRight + __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
-      var rightIncrement = relativeContentLeft - __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* numbers */].EXTRA_SCROLL_AMOUNT;
-
-      if (nextIndex > index) {
-        return Math.max(leftIncrement, 0);
-      }
-
-      return Math.min(rightIncrement, 0);
-    }
-
-    /**
-     * Determines the index of the adjacent tab closest to either edge of the Tab Bar
-     * @param {number} index The index of the tab
-     * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab
-     * @param {number} scrollPosition The current scroll position
-     * @param {number} barWidth The width of the tab bar
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'findAdjacentTabIndexClosestToEdge_',
-    value: function findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth) {
-      /**
-       * Tabs are laid out in the Tab Scroller like this:
-       *
-       *    Scroll Position
-       *    +---+
-       *    |   |   Bar Width
-       *    |   +-----------------------------------+
-       *    |   |                                   |
-       *    |   V                                   V
-       *    |   +-----------------------------------+
-       *    V   |             Tab Scroller          |
-       *    +------------+--------------+-------------------+
-       *    |    Tab     |      Tab     |        Tab        |
-       *    +------------+--------------+-------------------+
-       *        |                                   |
-       *        +-----------------------------------+
-       *
-       * To determine the next adjacent index, we look at the Tab root left and
-       * Tab root right, both relative to the scroll position. If the Tab root
-       * left is less than 0, then we know it's out of view to the left. If the
-       * Tab root right minus the bar width is greater than 0, we know the Tab is
-       * out of view to the right. From there, we either increment or decrement
-       * the index.
-       */
-      var relativeRootLeft = tabDimensions.rootLeft - scrollPosition;
-      var relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;
-      var relativeRootDelta = relativeRootLeft + relativeRootRight;
-      var leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;
-      var rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;
-
-      if (leftEdgeIsCloser) {
-        return index - 1;
-      }
-
-      if (rightEdgeIsCloser) {
-        return index + 1;
-      }
-
-      return -1;
-    }
-
-    /**
-     * Determines the index of the adjacent tab closest to either edge of the Tab Bar in RTL
-     * @param {number} index The index of the tab
-     * @param {!MDCTabDimensions} tabDimensions The dimensions of the tab
-     * @param {number} scrollPosition The current scroll position
-     * @param {number} barWidth The width of the tab bar
-     * @param {number} scrollContentWidth The width of the scroller content
-     * @return {number}
-     * @private
-     */
-
-  }, {
-    key: 'findAdjacentTabIndexClosestToEdgeRTL_',
-    value: function findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) {
-      var rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition;
-      var rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition;
-      var rootDelta = rootLeft + rootRight;
-      var leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0;
-      var rightEdgeIsCloser = rootRight < 0 || rootDelta < 0;
-
-      if (leftEdgeIsCloser) {
-        return index + 1;
-      }
-
-      if (rightEdgeIsCloser) {
-        return index - 1;
-      }
-
-      return -1;
-    }
-
-    /**
-     * Returns the key associated with a keydown event
-     * @param {!Event} evt The keydown event
-     * @return {string}
-     * @private
-     */
-
-  }, {
-    key: 'getKeyFromEvent_',
-    value: function getKeyFromEvent_(evt) {
-      if (ACCEPTABLE_KEYS.has(evt.key)) {
-        return evt.key;
-      }
-
-      return KEYCODE_MAP.get(evt.keyCode);
-    }
-  }, {
-    key: 'isActivationKey_',
-    value: function isActivationKey_(key) {
-      return key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].SPACE_KEY || key === __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* strings */].ENTER_KEY;
-    }
-
-    /**
-     * Returns whether a given index is inclusively between the ends
-     * @param {number} index The index to test
-     * @private
-     */
-
-  }, {
-    key: 'indexIsInRange_',
-    value: function indexIsInRange_(index) {
-      return index >= 0 && index < this.adapter_.getTabListLength();
-    }
-
-    /**
-     * Returns the view's RTL property
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'isRTL_',
-    value: function isRTL_() {
-      return this.adapter_.isRTL();
-    }
-
-    /**
-     * Scrolls the tab at the given index into view for left-to-right useragents
-     * @param {number} index The index of the tab to scroll into view
-     * @private
-     */
-
-  }, {
-    key: 'scrollIntoView_',
-    value: function scrollIntoView_(index) {
-      var scrollPosition = this.adapter_.getScrollPosition();
-      var barWidth = this.adapter_.getOffsetWidth();
-      var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);
-      var nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth);
-
-      if (!this.indexIsInRange_(nextIndex)) {
-        return;
-      }
-
-      var scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth);
-      this.adapter_.incrementScroll(scrollIncrement);
-    }
-
-    /**
-     * Scrolls the tab at the given index into view in RTL
-     * @param {number} index The tab index to make visible
-     * @private
-     */
-
-  }, {
-    key: 'scrollIntoViewRTL_',
-    value: function scrollIntoViewRTL_(index) {
-      var scrollPosition = this.adapter_.getScrollPosition();
-      var barWidth = this.adapter_.getOffsetWidth();
-      var tabDimensions = this.adapter_.getTabDimensionsAtIndex(index);
-      var scrollWidth = this.adapter_.getScrollContentWidth();
-      var nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollWidth);
-
-      if (!this.indexIsInRange_(nextIndex)) {
-        return;
-      }
-
-      var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);
-      this.adapter_.incrementScroll(scrollIncrement);
-    }
-  }]);
-
-  return MDCTabBarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTabBarFoundation);
-
-/***/ }),
-/* 149 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return numbers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',
-  TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',
-  TAB_SELECTOR: '.mdc-tab',
-  ARROW_LEFT_KEY: 'ArrowLeft',
-  ARROW_RIGHT_KEY: 'ArrowRight',
-  END_KEY: 'End',
-  HOME_KEY: 'Home',
-  ENTER_KEY: 'Enter',
-  SPACE_KEY: 'Space'
-};
-
-/** @enum {number} */
-var numbers = {
-  EXTRA_SCROLL_AMOUNT: 20,
-  ARROW_LEFT_KEYCODE: 37,
-  ARROW_RIGHT_KEYCODE: 39,
-  END_KEYCODE: 35,
-  HOME_KEYCODE: 36,
-  ENTER_KEYCODE: 13,
-  SPACE_KEYCODE: 32
-};
-
-
-
-/***/ }),
-/* 150 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextField", function() { return MDCTextField; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_util__ = __webpack_require__(5);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(60);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__adapter__ = __webpack_require__(61);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__foundation__ = __webpack_require__(154);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__ = __webpack_require__(16);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helper_text_index__ = __webpack_require__(155);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__character_counter_index__ = __webpack_require__(156);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__icon_index__ = __webpack_require__(157);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__material_floating_label_index__ = __webpack_require__(9);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__material_notched_outline_index__ = __webpack_require__(20);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldFoundation", function() { return __WEBPACK_IMPORTED_MODULE_5__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldHelperText", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldHelperTextFoundation", function() { return __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldCharacterCounter", function() { return __WEBPACK_IMPORTED_MODULE_8__character_counter_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldCharacterCounterFoundation", function() { return __WEBPACK_IMPORTED_MODULE_8__character_counter_index__["b"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldIcon", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTextFieldIconFoundation", function() { return __WEBPACK_IMPORTED_MODULE_9__icon_index__["b"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-/* eslint-enable no-unused-vars */
-
-
-
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-
-
-
-/* eslint-enable no-unused-vars */
-
-/**
- * @extends {MDCComponent<!MDCTextFieldFoundation>}
- * @final
- */
-
-var MDCTextField = function (_MDCComponent) {
-  _inherits(MDCTextField, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCTextField() {
-    var _ref;
-
-    _classCallCheck(this, MDCTextField);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTextField.__proto__ || Object.getPrototypeOf(MDCTextField)).call.apply(_ref, [this].concat(args)));
-
-    _this.input_;
-    /** @type {?MDCRipple} */
-    _this.ripple;
-    /** @private {?MDCLineRipple} */
-    _this.lineRipple_;
-    /** @private {?MDCTextFieldHelperText} */
-    _this.helperText_;
-    /** @private {?MDCTextFieldCharacterCounter} */
-    _this.characterCounter_;
-    /** @private {?MDCTextFieldIcon} */
-    _this.leadingIcon_;
-    /** @private {?MDCTextFieldIcon} */
-    _this.trailingIcon_;
-    /** @private {?MDCFloatingLabel} */
-    _this.label_;
-    /** @private {?MDCNotchedOutline} */
-    _this.outline_;
-    return _this;
-  }
-
-  /**
-   * @param {!Element} root
-   * @return {!MDCTextField}
-   */
-
-
-  _createClass(MDCTextField, [{
-    key: 'initialize',
-
-
-    /**
-     * @param {(function(!Element, MDCRippleFoundation): !MDCRipple)=} rippleFactory A function which
-     * creates a new MDCRipple.
-     * @param {(function(!Element): !MDCLineRipple)=} lineRippleFactory A function which
-     * creates a new MDCLineRipple.
-     * @param {(function(!Element): !MDCTextFieldHelperText)=} helperTextFactory A function which
-     * creates a new MDCTextFieldHelperText.
-     * @param {(function(!Element): !MDCTextFieldCharacterCounter)=} characterCounterFactory A function which
-     * creates a new MDCTextFieldCharacterCounter.
-     * @param {(function(!Element): !MDCTextFieldIcon)=} iconFactory A function which
-     * creates a new MDCTextFieldIcon.
-     * @param {(function(!Element): !MDCFloatingLabel)=} labelFactory A function which
-     * creates a new MDCFloatingLabel.
-     * @param {(function(!Element): !MDCNotchedOutline)=} outlineFactory A function which
-     * creates a new MDCNotchedOutline.
-     */
-    value: function initialize() {
-      var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el, foundation) {
-        return new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"](el, foundation);
-      };
-      var lineRippleFactory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_6__material_line_ripple_index__["MDCLineRipple"](el);
-      };
-      var helperTextFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["a" /* MDCTextFieldHelperText */](el);
-      };
-      var characterCounterFactory = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_8__character_counter_index__["a" /* MDCTextFieldCharacterCounter */](el);
-      };
-      var iconFactory = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_9__icon_index__["a" /* MDCTextFieldIcon */](el);
-      };
-
-      var _this2 = this;
-
-      var labelFactory = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_10__material_floating_label_index__["MDCFloatingLabel"](el);
-      };
-      var outlineFactory = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function (el) {
-        return new __WEBPACK_IMPORTED_MODULE_11__material_notched_outline_index__["MDCNotchedOutline"](el);
-      };
-
-      this.input_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
-      var labelElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].LABEL_SELECTOR);
-      if (labelElement) {
-        this.label_ = labelFactory(labelElement);
-      }
-      var lineRippleElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].LINE_RIPPLE_SELECTOR);
-      if (lineRippleElement) {
-        this.lineRipple_ = lineRippleFactory(lineRippleElement);
-      }
-      var outlineElement = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].OUTLINE_SELECTOR);
-      if (outlineElement) {
-        this.outline_ = outlineFactory(outlineElement);
-      }
-
-      // Helper text
-      var helperTextStrings = __WEBPACK_IMPORTED_MODULE_7__helper_text_index__["b" /* MDCTextFieldHelperTextFoundation */].strings;
-      var nextElementSibling = this.root_.nextElementSibling;
-      var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].HELPER_LINE);
-      var helperTextEl = hasHelperLine && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);
-      if (helperTextEl) {
-        this.helperText_ = helperTextFactory(helperTextEl);
-      }
-
-      // Character counter
-      var characterCounterStrings = __WEBPACK_IMPORTED_MODULE_8__character_counter_index__["b" /* MDCTextFieldCharacterCounterFoundation */].strings;
-      var characterCounterEl = this.root_.querySelector(characterCounterStrings.ROOT_SELECTOR);
-      // If character counter is not found in root element search in sibling element.
-      if (!characterCounterEl && hasHelperLine) {
-        characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);
-      }
-
-      if (characterCounterEl) {
-        this.characterCounter_ = characterCounterFactory(characterCounterEl);
-      }
-
-      var iconElements = this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].ICON_SELECTOR);
-      if (iconElements.length > 0) {
-        if (iconElements.length > 1) {
-          // Has both icons.
-          this.leadingIcon_ = iconFactory(iconElements[0]);
-          this.trailingIcon_ = iconFactory(iconElements[1]);
-        } else {
-          if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].WITH_LEADING_ICON)) {
-            this.leadingIcon_ = iconFactory(iconElements[0]);
-          } else {
-            this.trailingIcon_ = iconFactory(iconElements[0]);
-          }
+        function getCheckedRadio(nodes) {
+            for (var i = 0; i < nodes.length; i++) {
+                if (nodes[i].checked) {
+                    return nodes[i];
+                }
+            }
         }
         }
-      }
-
-      this.ripple = null;
-      if (!this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].TEXTAREA) && !this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* cssClasses */].OUTLINED)) {
-        var MATCHES = Object(__WEBPACK_IMPORTED_MODULE_2__material_ripple_util__["getMatchesProperty"])(HTMLElement.prototype);
-        var adapter = _extends(__WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].createAdapter( /** @type {!RippleCapableSurface} */this), {
-          isSurfaceActive: function isSurfaceActive() {
-            return _this2.input_[MATCHES](':active');
-          },
-          registerInteractionHandler: function registerInteractionHandler(type, handler) {
-            return _this2.input_.addEventListener(type, handler);
-          },
-          deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {
-            return _this2.input_.removeEventListener(type, handler);
-          }
+        function isTabbableRadio(node) {
+            if (!node.name) return true;
+            var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]');
+            var checked = getCheckedRadio(radioSet);
+            return !checked || checked === node;
+        }
+        function isHidden(node) {
+            return node.offsetParent === null || getComputedStyle(node).visibility === "hidden";
+        }
+        module.exports = tabbable;
+    }, function(module, exports) {
+        module.exports = extend;
+        var hasOwnProperty = Object.prototype.hasOwnProperty;
+        function extend() {
+            var target = {};
+            for (var i = 0; i < arguments.length; i++) {
+                var source = arguments[i];
+                for (var key in source) {
+                    if (hasOwnProperty.call(source, key)) {
+                        target[key] = source[key];
+                    }
+                }
+            }
+            return target;
+        }
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __importDefault = this && this.__importDefault || function(mod) {
+            return mod && mod.__esModule ? mod : {
+                default: mod
+            };
+        };
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
         });
         });
-        var foundation = new __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRippleFoundation"](adapter);
-        this.ripple = rippleFactory(this.root_, foundation);
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      if (this.ripple) {
-        this.ripple.destroy();
-      }
-      if (this.lineRipple_) {
-        this.lineRipple_.destroy();
-      }
-      if (this.helperText_) {
-        this.helperText_.destroy();
-      }
-      if (this.characterCounter_) {
-        this.characterCounter_.destroy();
-      }
-      if (this.leadingIcon_) {
-        this.leadingIcon_.destroy();
-      }
-      if (this.trailingIcon_) {
-        this.trailingIcon_.destroy();
-      }
-      if (this.label_) {
-        this.label_.destroy();
-      }
-      if (this.outline_) {
-        this.outline_.destroy();
-      }
-      _get(MDCTextField.prototype.__proto__ || Object.getPrototypeOf(MDCTextField.prototype), 'destroy', this).call(this);
-    }
-
-    /**
-     * Initiliazes the Text Field's internal state based on the environment's
-     * state.
-     */
-
-  }, {
-    key: 'initialSyncWithDom',
-    value: function initialSyncWithDom() {
-      this.disabled = this.input_.disabled;
-    }
-
-    /**
-     * @return {string} The value of the input.
-     */
-
-  }, {
-    key: 'focus',
-
-
-    /**
-     * Focuses the input element.
-     */
-    value: function focus() {
-      this.input_.focus();
-    }
-
-    /**
-     * Recomputes the outline SVG path for the outline element.
-     */
-
-  }, {
-    key: 'layout',
-    value: function layout() {
-      var openNotch = this.foundation_.shouldFloat;
-      this.foundation_.notchOutline(openNotch);
-    }
-
-    /**
-     * @return {!MDCTextFieldFoundation}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this3 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_5__foundation__["a" /* default */](
-      /** @type {!MDCTextFieldAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this3.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this3.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this3.root_.classList.contains(className);
-        },
-        registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) {
-          return _this3.root_.addEventListener(evtType, handler);
-        },
-        deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) {
-          return _this3.root_.removeEventListener(evtType, handler);
-        },
-        registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler(handler) {
-          var getAttributesList = function getAttributesList(mutationsList) {
-            return mutationsList.map(function (mutation) {
-              return mutation.attributeName;
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(13);
+        var foundation_1 = __webpack_require__(5);
+        var focus_trap_1 = __importDefault(__webpack_require__(34));
+        var foundation_2 = __webpack_require__(14);
+        var foundation_3 = __webpack_require__(36);
+        var util = __importStar(__webpack_require__(33));
+        var cssClasses = foundation_2.MDCDismissibleDrawerFoundation.cssClasses, strings = foundation_2.MDCDismissibleDrawerFoundation.strings;
+        var MDCDrawer = function(_super) {
+            __extends(MDCDrawer, _super);
+            function MDCDrawer() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCDrawer.attachTo = function(root) {
+                return new MDCDrawer(root);
+            };
+            Object.defineProperty(MDCDrawer.prototype, "open", {
+                get: function get() {
+                    return this.foundation_.isOpen();
+                },
+                set: function set(isOpen) {
+                    if (isOpen) {
+                        this.foundation_.open();
+                    } else {
+                        this.foundation_.close();
+                    }
+                },
+                enumerable: true,
+                configurable: true
             });
             });
-          };
-          var observer = new MutationObserver(function (mutationsList) {
-            return handler(getAttributesList(mutationsList));
-          });
-          var targetNode = _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
-          var config = { attributes: true };
-          observer.observe(targetNode, config);
-          return observer;
-        },
-        deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) {
-          return observer.disconnect();
-        },
-        isFocused: function isFocused() {
-          return document.activeElement === _this3.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["e" /* strings */].INPUT_SELECTOR);
+            Object.defineProperty(MDCDrawer.prototype, "list", {
+                get: function get() {
+                    return this.list_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCDrawer.prototype.initialize = function(focusTrapFactory, listFactory) {
+                if (focusTrapFactory === void 0) {
+                    focusTrapFactory = focus_trap_1.default;
+                }
+                if (listFactory === void 0) {
+                    listFactory = function listFactory(el) {
+                        return new component_2.MDCList(el);
+                    };
+                }
+                var listEl = this.root_.querySelector("." + foundation_1.MDCListFoundation.cssClasses.ROOT);
+                if (listEl) {
+                    this.list_ = listFactory(listEl);
+                    this.list_.wrapFocus = true;
+                }
+                this.focusTrapFactory_ = focusTrapFactory;
+            };
+            MDCDrawer.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                var MODAL = cssClasses.MODAL;
+                var SCRIM_SELECTOR = strings.SCRIM_SELECTOR;
+                this.scrim_ = this.root_.parentNode.querySelector(SCRIM_SELECTOR);
+                if (this.scrim_ && this.root_.classList.contains(MODAL)) {
+                    this.handleScrimClick_ = function() {
+                        return _this.foundation_.handleScrimClick();
+                    };
+                    this.scrim_.addEventListener("click", this.handleScrimClick_);
+                    this.focusTrap_ = util.createFocusTrapInstance(this.root_, this.focusTrapFactory_);
+                }
+                this.handleKeydown_ = function(evt) {
+                    return _this.foundation_.handleKeydown(evt);
+                };
+                this.handleTransitionEnd_ = function(evt) {
+                    return _this.foundation_.handleTransitionEnd(evt);
+                };
+                this.listen("keydown", this.handleKeydown_);
+                this.listen("transitionend", this.handleTransitionEnd_);
+            };
+            MDCDrawer.prototype.destroy = function() {
+                this.unlisten("keydown", this.handleKeydown_);
+                this.unlisten("transitionend", this.handleTransitionEnd_);
+                if (this.list_) {
+                    this.list_.destroy();
+                }
+                var MODAL = cssClasses.MODAL;
+                if (this.scrim_ && this.handleScrimClick_ && this.root_.classList.contains(MODAL)) {
+                    this.scrim_.removeEventListener("click", this.handleScrimClick_);
+                    this.open = false;
+                }
+            };
+            MDCDrawer.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    elementHasClass: function elementHasClass(element, className) {
+                        return element.classList.contains(className);
+                    },
+                    saveFocus: function saveFocus() {
+                        return _this.previousFocus_ = document.activeElement;
+                    },
+                    restoreFocus: function restoreFocus() {
+                        var previousFocus = _this.previousFocus_;
+                        if (previousFocus && previousFocus.focus && _this.root_.contains(document.activeElement)) {
+                            previousFocus.focus();
+                        }
+                    },
+                    focusActiveNavigationItem: function focusActiveNavigationItem() {
+                        var activeNavItemEl = _this.root_.querySelector("." + foundation_1.MDCListFoundation.cssClasses.LIST_ITEM_ACTIVATED_CLASS);
+                        if (activeNavItemEl) {
+                            activeNavItemEl.focus();
+                        }
+                    },
+                    notifyClose: function notifyClose() {
+                        return _this.emit(strings.CLOSE_EVENT, {}, true);
+                    },
+                    notifyOpen: function notifyOpen() {
+                        return _this.emit(strings.OPEN_EVENT, {}, true);
+                    },
+                    trapFocus: function trapFocus() {
+                        return _this.focusTrap_.activate();
+                    },
+                    releaseFocus: function releaseFocus() {
+                        return _this.focusTrap_.deactivate();
+                    }
+                };
+                var DISMISSIBLE = cssClasses.DISMISSIBLE, MODAL = cssClasses.MODAL;
+                if (this.root_.classList.contains(DISMISSIBLE)) {
+                    return new foundation_2.MDCDismissibleDrawerFoundation(adapter);
+                } else if (this.root_.classList.contains(MODAL)) {
+                    return new foundation_3.MDCModalDrawerFoundation(adapter);
+                } else {
+                    throw new Error("MDCDrawer: Failed to instantiate component. Supported variants are " + DISMISSIBLE + " and " + MODAL + ".");
+                }
+            };
+            return MDCDrawer;
+        }(component_1.MDCComponent);
+        exports.MDCDrawer = MDCDrawer;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ANIMATE: "mdc-drawer--animate",
+            CLOSING: "mdc-drawer--closing",
+            DISMISSIBLE: "mdc-drawer--dismissible",
+            MODAL: "mdc-drawer--modal",
+            OPEN: "mdc-drawer--open",
+            OPENING: "mdc-drawer--opening",
+            ROOT: "mdc-drawer"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            APP_CONTENT_SELECTOR: ".mdc-drawer-app-content",
+            CLOSE_EVENT: "MDCDrawer:closed",
+            OPEN_EVENT: "MDCDrawer:opened",
+            SCRIM_SELECTOR: ".mdc-drawer-scrim"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }, this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_()), this.getFoundationMap_());
-    }
-
-    /**
-     * @return {!{
-     *   shakeLabel: function(boolean): undefined,
-     *   floatLabel: function(boolean): undefined,
-     *   hasLabel: function(): boolean,
-     *   getLabelWidth: function(): number,
-     * }}
-     */
-
-  }, {
-    key: 'getLabelAdapterMethods_',
-    value: function getLabelAdapterMethods_() {
-      var _this4 = this;
-
-      return {
-        shakeLabel: function shakeLabel(shouldShake) {
-          return _this4.label_.shake(shouldShake);
-        },
-        floatLabel: function floatLabel(shouldFloat) {
-          return _this4.label_.float(shouldFloat);
-        },
-        hasLabel: function hasLabel() {
-          return !!_this4.label_;
-        },
-        getLabelWidth: function getLabelWidth() {
-          return _this4.label_ ? _this4.label_.getWidth() : 0;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(15));
+        __export(__webpack_require__(16));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            LABEL_FLOAT_ABOVE: "mdc-floating-label--float-above",
+            LABEL_SHAKE: "mdc-floating-label--shake",
+            ROOT: "mdc-floating-label"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   activateLineRipple: function(): undefined,
-     *   deactivateLineRipple: function(): undefined,
-     *   setLineRippleTransformOrigin: function(number): undefined,
-     * }}
-     */
-
-  }, {
-    key: 'getLineRippleAdapterMethods_',
-    value: function getLineRippleAdapterMethods_() {
-      var _this5 = this;
-
-      return {
-        activateLineRipple: function activateLineRipple() {
-          if (_this5.lineRipple_) {
-            _this5.lineRipple_.activate();
-          }
-        },
-        deactivateLineRipple: function deactivateLineRipple() {
-          if (_this5.lineRipple_) {
-            _this5.lineRipple_.deactivate();
-          }
-        },
-        setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) {
-          if (_this5.lineRipple_) {
-            _this5.lineRipple_.setRippleCenter(normalizedX);
-          }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(105));
+        __export(__webpack_require__(37));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(37);
+        var MDCFormField = function(_super) {
+            __extends(MDCFormField, _super);
+            function MDCFormField() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCFormField.attachTo = function(root) {
+                return new MDCFormField(root);
+            };
+            Object.defineProperty(MDCFormField.prototype, "input", {
+                get: function get() {
+                    return this.input_;
+                },
+                set: function set(input) {
+                    this.input_ = input;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCFormField.prototype, "label_", {
+                get: function get() {
+                    var LABEL_SELECTOR = foundation_1.MDCFormFieldFoundation.strings.LABEL_SELECTOR;
+                    return this.root_.querySelector(LABEL_SELECTOR);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCFormField.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    activateInputRipple: function activateInputRipple() {
+                        if (_this.input_ && _this.input_.ripple) {
+                            _this.input_.ripple.activate();
+                        }
+                    },
+                    deactivateInputRipple: function deactivateInputRipple() {
+                        if (_this.input_ && _this.input_.ripple) {
+                            _this.input_.ripple.deactivate();
+                        }
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        if (_this.label_) {
+                            _this.label_.removeEventListener(evtType, handler);
+                        }
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        if (_this.label_) {
+                            _this.label_.addEventListener(evtType, handler);
+                        }
+                    }
+                };
+                return new foundation_1.MDCFormFieldFoundation(adapter);
+            };
+            return MDCFormField;
+        }(component_1.MDCComponent);
+        exports.MDCFormField = MDCFormField;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            ROOT: "mdc-form-field"
+        };
+        exports.strings = {
+            LABEL_SELECTOR: ".mdc-form-field > label"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   notchOutline: function(number, boolean): undefined,
-     *   hasOutline: function(): boolean,
-     * }}
-     */
-
-  }, {
-    key: 'getOutlineAdapterMethods_',
-    value: function getOutlineAdapterMethods_() {
-      var _this6 = this;
-
-      return {
-        notchOutline: function notchOutline(labelWidth) {
-          return _this6.outline_.notch(labelWidth);
-        },
-        closeOutline: function closeOutline() {
-          return _this6.outline_.closeNotch();
-        },
-        hasOutline: function hasOutline() {
-          return !!_this6.outline_;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(108));
+        __export(__webpack_require__(38));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(38);
+        var MDCGridList = function(_super) {
+            __extends(MDCGridList, _super);
+            function MDCGridList() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCGridList.attachTo = function(root) {
+                return new MDCGridList(root);
+            };
+            MDCGridList.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    deregisterResizeHandler: function deregisterResizeHandler(handler) {
+                        return window.removeEventListener("resize", handler);
+                    },
+                    getNumberOfTiles: function getNumberOfTiles() {
+                        return _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR).length;
+                    },
+                    getOffsetWidth: function getOffsetWidth() {
+                        return _this.root_.offsetWidth;
+                    },
+                    getOffsetWidthForTileAtIndex: function getOffsetWidthForTileAtIndex(index) {
+                        var tileEl = _this.root_.querySelectorAll(foundation_1.MDCGridListFoundation.strings.TILE_SELECTOR)[index];
+                        return tileEl.offsetWidth;
+                    },
+                    registerResizeHandler: function registerResizeHandler(handler) {
+                        return window.addEventListener("resize", handler);
+                    },
+                    setStyleForTilesElement: function setStyleForTilesElement(property, value) {
+                        var tilesEl = _this.root_.querySelector(foundation_1.MDCGridListFoundation.strings.TILES_SELECTOR);
+                        tilesEl.style[property] = value;
+                    }
+                };
+                return new foundation_1.MDCGridListFoundation(adapter);
+            };
+            return MDCGridList;
+        }(component_1.MDCComponent);
+        exports.MDCGridList = MDCGridList;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.strings = {
+            TILES_SELECTOR: ".mdc-grid-list__tiles",
+            TILE_SELECTOR: ".mdc-grid-tile"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      };
-    }
-
-    /**
-     * @return {!{
-     *   registerInputInteractionHandler: function(string, function()): undefined,
-     *   deregisterInputInteractionHandler: function(string, function()): undefined,
-     *   getNativeInput: function(): ?Element,
-     * }}
-     */
-
-  }, {
-    key: 'getInputAdapterMethods_',
-    value: function getInputAdapterMethods_() {
-      var _this7 = this;
-
-      return {
-        registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) {
-          return _this7.input_.addEventListener(evtType, handler);
-        },
-        deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) {
-          return _this7.input_.removeEventListener(evtType, handler);
-        },
-        getNativeInput: function getNativeInput() {
-          return _this7.input_;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(111));
+        __export(__webpack_require__(39));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(39);
+        var strings = foundation_1.MDCIconButtonToggleFoundation.strings;
+        var MDCIconButtonToggle = function(_super) {
+            __extends(MDCIconButtonToggle, _super);
+            function MDCIconButtonToggle() {
+                var _this = _super !== null && _super.apply(this, arguments) || this;
+                _this.ripple_ = _this.createRipple_();
+                return _this;
+            }
+            MDCIconButtonToggle.attachTo = function(root) {
+                return new MDCIconButtonToggle(root);
+            };
+            MDCIconButtonToggle.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleClick_ = function() {
+                    return _this.foundation_.handleClick();
+                };
+                this.listen("click", this.handleClick_);
+            };
+            MDCIconButtonToggle.prototype.destroy = function() {
+                this.unlisten("click", this.handleClick_);
+                this.ripple_.destroy();
+                _super.prototype.destroy.call(this);
+            };
+            MDCIconButtonToggle.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    notifyChange: function notifyChange(evtData) {
+                        return _this.emit(strings.CHANGE_EVENT, evtData);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setAttr: function setAttr(attrName, attrValue) {
+                        return _this.root_.setAttribute(attrName, attrValue);
+                    }
+                };
+                return new foundation_1.MDCIconButtonToggleFoundation(adapter);
+            };
+            Object.defineProperty(MDCIconButtonToggle.prototype, "ripple", {
+                get: function get() {
+                    return this.ripple_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCIconButtonToggle.prototype, "on", {
+                get: function get() {
+                    return this.foundation_.isOn();
+                },
+                set: function set(isOn) {
+                    this.foundation_.toggle(isOn);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCIconButtonToggle.prototype.createRipple_ = function() {
+                var ripple = new component_2.MDCRipple(this.root_);
+                ripple.unbounded = true;
+                return ripple;
+            };
+            return MDCIconButtonToggle;
+        }(component_1.MDCComponent);
+        exports.MDCIconButtonToggle = MDCIconButtonToggle;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            ICON_BUTTON_ON: "mdc-icon-button--on",
+            ROOT: "mdc-icon-button"
+        };
+        exports.strings = {
+            ARIA_PRESSED: "aria-pressed",
+            CHANGE_EVENT: "MDCIconButtonToggle:change"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      };
-    }
-
-    /**
-     * Returns a map of all subcomponents to subfoundations.
-     * @return {!FoundationMapType}
-     */
-
-  }, {
-    key: 'getFoundationMap_',
-    value: function getFoundationMap_() {
-      return {
-        helperText: this.helperText_ ? this.helperText_.foundation : undefined,
-        characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,
-        leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,
-        trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined
-      };
-    }
-  }, {
-    key: 'value',
-    get: function get() {
-      return this.foundation_.getValue();
-    }
-
-    /**
-     * @param {string} value The value to set on the input.
-     */
-    ,
-    set: function set(value) {
-      this.foundation_.setValue(value);
-    }
-
-    /**
-     * @return {boolean} True if the Text Field is disabled.
-     */
-
-  }, {
-    key: 'disabled',
-    get: function get() {
-      return this.foundation_.isDisabled();
-    }
-
-    /**
-     * @param {boolean} disabled Sets the Text Field disabled or enabled.
-     */
-    ,
-    set: function set(disabled) {
-      this.foundation_.setDisabled(disabled);
-    }
-
-    /**
-     * @return {boolean} valid True if the Text Field is valid.
-     */
-
-  }, {
-    key: 'valid',
-    get: function get() {
-      return this.foundation_.isValid();
-    }
-
-    /**
-     * @param {boolean} valid Sets the Text Field valid or invalid.
-     */
-    ,
-    set: function set(valid) {
-      this.foundation_.setValid(valid);
-    }
-
-    /**
-     * @return {boolean} True if the Text Field is required.
-     */
-
-  }, {
-    key: 'required',
-    get: function get() {
-      return this.input_.required;
-    }
-
-    /**
-     * @param {boolean} required Sets the Text Field to required.
-     */
-    ,
-    set: function set(required) {
-      this.input_.required = required;
-    }
-
-    /**
-     * @return {string} The input element's validation pattern.
-     */
-
-  }, {
-    key: 'pattern',
-    get: function get() {
-      return this.input_.pattern;
-    }
-
-    /**
-     * @param {string} pattern Sets the input element's validation pattern.
-     */
-    ,
-    set: function set(pattern) {
-      this.input_.pattern = pattern;
-    }
-
-    /**
-     * @return {number} The input element's minLength.
-     */
-
-  }, {
-    key: 'minLength',
-    get: function get() {
-      return this.input_.minLength;
-    }
-
-    /**
-     * @param {number} minLength Sets the input element's minLength.
-     */
-    ,
-    set: function set(minLength) {
-      this.input_.minLength = minLength;
-    }
-
-    /**
-     * @return {number} The input element's maxLength.
-     */
-
-  }, {
-    key: 'maxLength',
-    get: function get() {
-      return this.input_.maxLength;
-    }
-
-    /**
-     * @param {number} maxLength Sets the input element's maxLength.
-     */
-    ,
-    set: function set(maxLength) {
-      // Chrome throws exception if maxLength is set < 0
-      if (maxLength < 0) {
-        this.input_.removeAttribute('maxLength');
-      } else {
-        this.input_.maxLength = maxLength;
-      }
-    }
-
-    /**
-     * @return {string} The input element's min.
-     */
-
-  }, {
-    key: 'min',
-    get: function get() {
-      return this.input_.min;
-    }
-
-    /**
-     * @param {string} min Sets the input element's min.
-     */
-    ,
-    set: function set(min) {
-      this.input_.min = min;
-    }
-
-    /**
-     * @return {string} The input element's max.
-     */
-
-  }, {
-    key: 'max',
-    get: function get() {
-      return this.input_.max;
-    }
-
-    /**
-     * @param {string} max Sets the input element's max.
-     */
-    ,
-    set: function set(max) {
-      this.input_.max = max;
-    }
-
-    /**
-     * @return {string} The input element's step.
-     */
-
-  }, {
-    key: 'step',
-    get: function get() {
-      return this.input_.step;
-    }
-
-    /**
-     * @param {string} step Sets the input element's step.
-     */
-    ,
-    set: function set(step) {
-      this.input_.step = step;
-    }
-
-    /**
-     * Sets the helper text element content.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'helperTextContent',
-    set: function set(content) {
-      this.foundation_.setHelperTextContent(content);
-    }
-
-    /**
-     * Sets the aria label of the leading icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'leadingIconAriaLabel',
-    set: function set(label) {
-      this.foundation_.setLeadingIconAriaLabel(label);
-    }
-
-    /**
-     * Sets the text content of the leading icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'leadingIconContent',
-    set: function set(content) {
-      this.foundation_.setLeadingIconContent(content);
-    }
-
-    /**
-     * Sets the aria label of the trailing icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'trailingIconAriaLabel',
-    set: function set(label) {
-      this.foundation_.setTrailingIconAriaLabel(label);
-    }
-
-    /**
-     * Sets the text content of the trailing icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'trailingIconContent',
-    set: function set(content) {
-      this.foundation_.setTrailingIconContent(content);
-    }
-
-    /**
-     * Enables or disables the use of native validation. Use this for custom validation.
-     * @param {boolean} useNativeValidation Set this to false to ignore native input validation.
-     */
-
-  }, {
-    key: 'useNativeValidation',
-    set: function set(useNativeValidation) {
-      this.foundation_.setUseNativeValidation(useNativeValidation);
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCTextField(root);
-    }
-  }]);
-
-  return MDCTextField;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 151 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-text-field-helper-text',
-  HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',
-  HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg'
-};
-
-/** @enum {string} */
-var strings = {
-  ARIA_HIDDEN: 'aria-hidden',
-  ROLE: 'role',
-  ROOT_SELECTOR: '.' + cssClasses.ROOT
-};
-
-
-
-/***/ }),
-/* 152 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/**
- * @license
- * Copyright 2019 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var cssClasses = {
-  ROOT: 'mdc-text-field-character-counter'
-};
-
-/** @enum {string} */
-var strings = {
-  ROOT_SELECTOR: '.' + cssClasses.ROOT
-};
-
-
-
-/***/ }),
-/* 153 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return strings; });
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/** @enum {string} */
-var strings = {
-  ICON_EVENT: 'MDCTextField:icon',
-  ICON_ROLE: 'button'
-};
-
-
-
-/***/ }),
-/* 154 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helper_text_foundation__ = __webpack_require__(25);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__character_counter_foundation__ = __webpack_require__(26);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__icon_foundation__ = __webpack_require__(27);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__adapter__ = __webpack_require__(61);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__constants__ = __webpack_require__(60);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2016 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* eslint-disable no-unused-vars */
-
-
-
-/* eslint-enable no-unused-vars */
-
-
-
-/**
- * @extends {MDCFoundation<!MDCTextFieldAdapter>}
- * @final
- */
-
-var MDCTextFieldFoundation = function (_MDCFoundation) {
-  _inherits(MDCTextFieldFoundation, _MDCFoundation);
-
-  _createClass(MDCTextFieldFoundation, [{
-    key: 'shouldShake',
-
-
-    /** @return {boolean} */
-    get: function get() {
-      return !this.isValid() && !this.isFocused_ && !!this.getValue();
-    }
-
-    /**
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'shouldAlwaysFloat_',
-    get: function get() {
-      var type = this.getNativeInput_().type;
-      return __WEBPACK_IMPORTED_MODULE_5__constants__["a" /* ALWAYS_FLOAT_TYPES */].indexOf(type) >= 0;
-    }
-
-    /** @return {boolean} */
-
-  }, {
-    key: 'shouldFloat',
-    get: function get() {
-      return this.shouldAlwaysFloat_ || this.isFocused_ || !!this.getValue() || this.isBadInput_();
-    }
-
-    /**
-     * {@see MDCTextFieldAdapter} for typing information on parameters and return
-     * types.
-     * @return {!MDCTextFieldAdapter}
-     */
-
-  }], [{
-    key: 'cssClasses',
-
-    /** @return enum {string} */
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_5__constants__["c" /* cssClasses */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_5__constants__["e" /* strings */];
-    }
-
-    /** @return enum {string} */
-
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_5__constants__["d" /* numbers */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return (/** @type {!MDCTextFieldAdapter} */{
-          addClass: function addClass() {},
-          removeClass: function removeClass() {},
-          hasClass: function hasClass() {},
-          registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler() {},
-          deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler() {},
-          registerInputInteractionHandler: function registerInputInteractionHandler() {},
-          deregisterInputInteractionHandler: function deregisterInputInteractionHandler() {},
-          registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler() {},
-          deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler() {},
-          getNativeInput: function getNativeInput() {},
-          isFocused: function isFocused() {},
-          activateLineRipple: function activateLineRipple() {},
-          deactivateLineRipple: function deactivateLineRipple() {},
-          setLineRippleTransformOrigin: function setLineRippleTransformOrigin() {},
-          shakeLabel: function shakeLabel() {},
-          floatLabel: function floatLabel() {},
-          hasLabel: function hasLabel() {},
-          getLabelWidth: function getLabelWidth() {},
-          hasOutline: function hasOutline() {},
-          notchOutline: function notchOutline() {},
-          closeOutline: function closeOutline() {}
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(17));
+        __export(__webpack_require__(40));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            LINE_RIPPLE_ACTIVE: "mdc-line-ripple--active",
+            LINE_RIPPLE_DEACTIVATING: "mdc-line-ripple--deactivating"
+        };
+        exports.cssClasses = cssClasses;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      );
-    }
-
-    /**
-     * @param {!MDCTextFieldAdapter} adapter
-     * @param {!FoundationMapType=} foundationMap Map from subcomponent names to their subfoundations.
-     */
-
-  }]);
-
-  function MDCTextFieldFoundation(adapter) {
-    var foundationMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /** @type {!FoundationMapType} */{};
-
-    _classCallCheck(this, MDCTextFieldFoundation);
-
-    /** @type {!MDCTextFieldHelperTextFoundation|undefined} */
-    var _this = _possibleConstructorReturn(this, (MDCTextFieldFoundation.__proto__ || Object.getPrototypeOf(MDCTextFieldFoundation)).call(this, _extends(MDCTextFieldFoundation.defaultAdapter, adapter)));
-
-    _this.helperText_ = foundationMap.helperText;
-    /** @type {!MDCTextFieldCharacterCounterFoundation|undefined} */
-    _this.characterCounter_ = foundationMap.characterCounter;
-    /** @type {!MDCTextFieldIconFoundation|undefined} */
-    _this.leadingIcon_ = foundationMap.leadingIcon;
-    /** @type {!MDCTextFieldIconFoundation|undefined} */
-    _this.trailingIcon_ = foundationMap.trailingIcon;
-
-    /** @private {boolean} */
-    _this.isFocused_ = false;
-    /** @private {boolean} */
-    _this.receivedUserInput_ = false;
-    /** @private {boolean} */
-    _this.useCustomValidityChecking_ = false;
-    /** @private {boolean} */
-    _this.isValid_ = true;
-
-    /** @private {boolean} */
-    _this.useNativeValidation_ = true;
-
-    /** @private {function(): undefined} */
-    _this.inputFocusHandler_ = function () {
-      return _this.activateFocus();
-    };
-    /** @private {function(): undefined} */
-    _this.inputBlurHandler_ = function () {
-      return _this.deactivateFocus();
-    };
-    /** @private {function(): undefined} */
-    _this.inputInputHandler_ = function () {
-      return _this.handleInput();
-    };
-    /** @private {function(!Event): undefined} */
-    _this.setPointerXOffset_ = function (evt) {
-      return _this.setTransformOrigin(evt);
-    };
-    /** @private {function(!Event): undefined} */
-    _this.textFieldInteractionHandler_ = function () {
-      return _this.handleTextFieldInteraction();
-    };
-    /** @private {function(!Array): undefined} */
-    _this.validationAttributeChangeHandler_ = function (attributesList) {
-      return _this.handleValidationAttributeChange(attributesList);
-    };
-
-    /** @private {!MutationObserver} */
-    _this.validationObserver_;
-    return _this;
-  }
-
-  _createClass(MDCTextFieldFoundation, [{
-    key: 'init',
-    value: function init() {
-      var _this2 = this;
-
-      if (this.adapter_.isFocused()) {
-        this.inputFocusHandler_();
-      } else if (this.adapter_.hasLabel() && this.shouldFloat) {
-        this.notchOutline(true);
-        this.adapter_.floatLabel(true);
-      }
-
-      this.adapter_.registerInputInteractionHandler('focus', this.inputFocusHandler_);
-      this.adapter_.registerInputInteractionHandler('blur', this.inputBlurHandler_);
-      this.adapter_.registerInputInteractionHandler('input', this.inputInputHandler_);
-      ['mousedown', 'touchstart'].forEach(function (evtType) {
-        _this2.adapter_.registerInputInteractionHandler(evtType, _this2.setPointerXOffset_);
-      });
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this2.adapter_.registerTextFieldInteractionHandler(evtType, _this2.textFieldInteractionHandler_);
-      });
-      this.validationObserver_ = this.adapter_.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler_);
-      this.setCharacterCounter_(this.getValue().length);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      var _this3 = this;
-
-      this.adapter_.deregisterInputInteractionHandler('focus', this.inputFocusHandler_);
-      this.adapter_.deregisterInputInteractionHandler('blur', this.inputBlurHandler_);
-      this.adapter_.deregisterInputInteractionHandler('input', this.inputInputHandler_);
-      ['mousedown', 'touchstart'].forEach(function (evtType) {
-        _this3.adapter_.deregisterInputInteractionHandler(evtType, _this3.setPointerXOffset_);
-      });
-      ['click', 'keydown'].forEach(function (evtType) {
-        _this3.adapter_.deregisterTextFieldInteractionHandler(evtType, _this3.textFieldInteractionHandler_);
-      });
-      this.adapter_.deregisterValidationAttributeChangeHandler(this.validationObserver_);
-    }
-
-    /**
-     * Handles user interactions with the Text Field.
-     */
-
-  }, {
-    key: 'handleTextFieldInteraction',
-    value: function handleTextFieldInteraction() {
-      if (this.adapter_.getNativeInput().disabled) {
-        return;
-      }
-      this.receivedUserInput_ = true;
-    }
-
-    /**
-     * Handles validation attribute changes
-     * @param {!Array<string>} attributesList
-     */
-
-  }, {
-    key: 'handleValidationAttributeChange',
-    value: function handleValidationAttributeChange(attributesList) {
-      var _this4 = this;
-
-      attributesList.some(function (attributeName) {
-        if (__WEBPACK_IMPORTED_MODULE_5__constants__["b" /* VALIDATION_ATTR_WHITELIST */].indexOf(attributeName) > -1) {
-          _this4.styleValidity_(true);
-          return true;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(116));
+        __export(__webpack_require__(41));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var foundation_1 = __webpack_require__(41);
+        var MDCLinearProgress = function(_super) {
+            __extends(MDCLinearProgress, _super);
+            function MDCLinearProgress() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCLinearProgress.attachTo = function(root) {
+                return new MDCLinearProgress(root);
+            };
+            Object.defineProperty(MDCLinearProgress.prototype, "determinate", {
+                set: function set(value) {
+                    this.foundation_.setDeterminate(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLinearProgress.prototype, "progress", {
+                set: function set(value) {
+                    this.foundation_.setProgress(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLinearProgress.prototype, "buffer", {
+                set: function set(value) {
+                    this.foundation_.setBuffer(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCLinearProgress.prototype, "reverse", {
+                set: function set(value) {
+                    this.foundation_.setReverse(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCLinearProgress.prototype.open = function() {
+                this.foundation_.open();
+            };
+            MDCLinearProgress.prototype.close = function() {
+                this.foundation_.close();
+            };
+            MDCLinearProgress.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    getBuffer: function getBuffer() {
+                        return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.BUFFER_SELECTOR);
+                    },
+                    getPrimaryBar: function getPrimaryBar() {
+                        return _this.root_.querySelector(foundation_1.MDCLinearProgressFoundation.strings.PRIMARY_BAR_SELECTOR);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setStyle: function setStyle(el, styleProperty, value) {
+                        return el.style.setProperty(styleProperty, value);
+                    }
+                };
+                return new foundation_1.MDCLinearProgressFoundation(adapter);
+            };
+            return MDCLinearProgress;
+        }(component_1.MDCComponent);
+        exports.MDCLinearProgress = MDCLinearProgress;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            CLOSED_CLASS: "mdc-linear-progress--closed",
+            INDETERMINATE_CLASS: "mdc-linear-progress--indeterminate",
+            REVERSED_CLASS: "mdc-linear-progress--reversed"
+        };
+        exports.strings = {
+            BUFFER_SELECTOR: ".mdc-linear-progress__buffer",
+            PRIMARY_BAR_SELECTOR: ".mdc-linear-progress__primary-bar"
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      });
-
-      if (attributesList.indexOf('maxlength') > -1) {
-        this.setCharacterCounter_(this.getValue().length);
-      }
-    }
-
-    /**
-     * Opens/closes the notched outline.
-     * @param {boolean} openNotch
-     */
-
-  }, {
-    key: 'notchOutline',
-    value: function notchOutline(openNotch) {
-      if (!this.adapter_.hasOutline()) {
-        return;
-      }
-
-      if (openNotch) {
-        var isDense = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_5__constants__["c" /* cssClasses */].DENSE);
-        var labelScale = isDense ? __WEBPACK_IMPORTED_MODULE_5__constants__["d" /* numbers */].DENSE_LABEL_SCALE : __WEBPACK_IMPORTED_MODULE_5__constants__["d" /* numbers */].LABEL_SCALE;
-        var labelWidth = this.adapter_.getLabelWidth() * labelScale;
-        this.adapter_.notchOutline(labelWidth);
-      } else {
-        this.adapter_.closeOutline();
-      }
-    }
-
-    /**
-     * Activates the text field focus state.
-     */
-
-  }, {
-    key: 'activateFocus',
-    value: function activateFocus() {
-      this.isFocused_ = true;
-      this.styleFocused_(this.isFocused_);
-      this.adapter_.activateLineRipple();
-      if (this.adapter_.hasLabel()) {
-        this.notchOutline(this.shouldFloat);
-        this.adapter_.floatLabel(this.shouldFloat);
-        this.adapter_.shakeLabel(this.shouldShake);
-      }
-      if (this.helperText_) {
-        this.helperText_.showToScreenReader();
-      }
-    }
-
-    /**
-     * Sets the line ripple's transform origin, so that the line ripple activate
-     * animation will animate out from the user's click location.
-     * @param {!Event} evt
-     */
-
-  }, {
-    key: 'setTransformOrigin',
-    value: function setTransformOrigin(evt) {
-      var targetEvent = void 0;
-      if (evt.touches) {
-        targetEvent = evt.touches[0];
-      } else {
-        targetEvent = evt;
-      }
-      var targetClientRect = targetEvent.target.getBoundingClientRect();
-      var normalizedX = targetEvent.clientX - targetClientRect.left;
-      this.adapter_.setLineRippleTransformOrigin(normalizedX);
-    }
-
-    /**
-     * Handles input change of text input and text area.
-     */
-
-  }, {
-    key: 'handleInput',
-    value: function handleInput() {
-      this.autoCompleteFocus();
-      this.setCharacterCounter_(this.getValue().length);
-    }
-
-    /**
-     * Activates the Text Field's focus state in cases when the input value
-     * changes without user input (e.g. programatically).
-     */
-
-  }, {
-    key: 'autoCompleteFocus',
-    value: function autoCompleteFocus() {
-      if (!this.receivedUserInput_) {
-        this.activateFocus();
-      }
-    }
-
-    /**
-     * Deactivates the Text Field's focus state.
-     */
-
-  }, {
-    key: 'deactivateFocus',
-    value: function deactivateFocus() {
-      this.isFocused_ = false;
-      this.adapter_.deactivateLineRipple();
-      var isValid = this.isValid();
-      this.styleValidity_(isValid);
-      this.styleFocused_(this.isFocused_);
-      if (this.adapter_.hasLabel()) {
-        this.notchOutline(this.shouldFloat);
-        this.adapter_.floatLabel(this.shouldFloat);
-        this.adapter_.shakeLabel(this.shouldShake);
-      }
-      if (!this.shouldFloat) {
-        this.receivedUserInput_ = false;
-      }
-    }
-
-    /**
-     * @return {string} The value of the input Element.
-     */
-
-  }, {
-    key: 'getValue',
-    value: function getValue() {
-      return this.getNativeInput_().value;
-    }
-
-    /**
-     * @param {string} value The value to set on the input Element.
-     */
-
-  }, {
-    key: 'setValue',
-    value: function setValue(value) {
-      // Prevent Safari from moving the caret to the end of the input when the value has not changed.
-      if (this.getValue() !== value) {
-        this.getNativeInput_().value = value;
-      }
-      var isValid = this.isValid();
-      this.styleValidity_(isValid);
-      if (this.adapter_.hasLabel()) {
-        this.notchOutline(this.shouldFloat);
-        this.adapter_.floatLabel(this.shouldFloat);
-        this.adapter_.shakeLabel(this.shouldShake);
-      }
-    }
-
-    /**
-     * @return {boolean} If a custom validity is set, returns that value.
-     *     Otherwise, returns the result of native validity checks.
-     */
-
-  }, {
-    key: 'isValid',
-    value: function isValid() {
-      return this.useNativeValidation_ ? this.isNativeInputValid_() : this.isValid_;
-    }
-
-    /**
-     * @param {boolean} isValid Sets the validity state of the Text Field.
-     */
-
-  }, {
-    key: 'setValid',
-    value: function setValid(isValid) {
-      this.isValid_ = isValid;
-      this.styleValidity_(isValid);
-
-      var shouldShake = !isValid && !this.isFocused_;
-      if (this.adapter_.hasLabel()) {
-        this.adapter_.shakeLabel(shouldShake);
-      }
-    }
-
-    /**
-     * Enables or disables the use of native validation. Use this for custom validation.
-     * @param {boolean} useNativeValidation Set this to false to ignore native input validation.
-     */
-
-  }, {
-    key: 'setUseNativeValidation',
-    value: function setUseNativeValidation(useNativeValidation) {
-      this.useNativeValidation_ = useNativeValidation;
-    }
-
-    /**
-     * @return {boolean} True if the Text Field is disabled.
-     */
-
-  }, {
-    key: 'isDisabled',
-    value: function isDisabled() {
-      return this.getNativeInput_().disabled;
-    }
-
-    /**
-     * @param {boolean} disabled Sets the text-field disabled or enabled.
-     */
-
-  }, {
-    key: 'setDisabled',
-    value: function setDisabled(disabled) {
-      this.getNativeInput_().disabled = disabled;
-      this.styleDisabled_(disabled);
-    }
-
-    /**
-     * @param {string} content Sets the content of the helper text.
-     */
-
-  }, {
-    key: 'setHelperTextContent',
-    value: function setHelperTextContent(content) {
-      if (this.helperText_) {
-        this.helperText_.setContent(content);
-      }
-    }
-
-    /**
-     * Sets character counter values that shows characters used and the total character limit.
-     * @param {number} currentLength
-     * @private
-     */
-
-  }, {
-    key: 'setCharacterCounter_',
-    value: function setCharacterCounter_(currentLength) {
-      if (!this.characterCounter_) return;
-
-      var maxLength = this.getNativeInput_().maxLength;
-      if (maxLength === -1) {
-        throw new Error('MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.');
-      }
-
-      this.characterCounter_.setCounterValue(currentLength, maxLength);
-    }
-
-    /**
-     * Sets the aria label of the leading icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'setLeadingIconAriaLabel',
-    value: function setLeadingIconAriaLabel(label) {
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setAriaLabel(label);
-      }
-    }
-
-    /**
-     * Sets the text content of the leading icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'setLeadingIconContent',
-    value: function setLeadingIconContent(content) {
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setContent(content);
-      }
-    }
-
-    /**
-     * Sets the aria label of the trailing icon.
-     * @param {string} label
-     */
-
-  }, {
-    key: 'setTrailingIconAriaLabel',
-    value: function setTrailingIconAriaLabel(label) {
-      if (this.trailingIcon_) {
-        this.trailingIcon_.setAriaLabel(label);
-      }
-    }
-
-    /**
-     * Sets the text content of the trailing icon.
-     * @param {string} content
-     */
-
-  }, {
-    key: 'setTrailingIconContent',
-    value: function setTrailingIconContent(content) {
-      if (this.trailingIcon_) {
-        this.trailingIcon_.setContent(content);
-      }
-    }
-
-    /**
-     * @return {boolean} True if the Text Field input fails in converting the
-     *     user-supplied value.
-     * @private
-     */
-
-  }, {
-    key: 'isBadInput_',
-    value: function isBadInput_() {
-      return this.getNativeInput_().validity.badInput;
-    }
-
-    /**
-     * @return {boolean} The result of native validity checking
-     *     (ValidityState.valid).
-     */
-
-  }, {
-    key: 'isNativeInputValid_',
-    value: function isNativeInputValid_() {
-      return this.getNativeInput_().validity.valid;
-    }
-
-    /**
-     * Styles the component based on the validity state.
-     * @param {boolean} isValid
-     * @private
-     */
-
-  }, {
-    key: 'styleValidity_',
-    value: function styleValidity_(isValid) {
-      var INVALID = MDCTextFieldFoundation.cssClasses.INVALID;
-
-      if (isValid) {
-        this.adapter_.removeClass(INVALID);
-      } else {
-        this.adapter_.addClass(INVALID);
-      }
-      if (this.helperText_) {
-        this.helperText_.setValidity(isValid);
-      }
-    }
-
-    /**
-     * Styles the component based on the focused state.
-     * @param {boolean} isFocused
-     * @private
-     */
-
-  }, {
-    key: 'styleFocused_',
-    value: function styleFocused_(isFocused) {
-      var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED;
-
-      if (isFocused) {
-        this.adapter_.addClass(FOCUSED);
-      } else {
-        this.adapter_.removeClass(FOCUSED);
-      }
-    }
-
-    /**
-     * Styles the component based on the disabled state.
-     * @param {boolean} isDisabled
-     * @private
-     */
-
-  }, {
-    key: 'styleDisabled_',
-    value: function styleDisabled_(isDisabled) {
-      var _MDCTextFieldFoundati = MDCTextFieldFoundation.cssClasses,
-          DISABLED = _MDCTextFieldFoundati.DISABLED,
-          INVALID = _MDCTextFieldFoundati.INVALID;
-
-      if (isDisabled) {
-        this.adapter_.addClass(DISABLED);
-        this.adapter_.removeClass(INVALID);
-      } else {
-        this.adapter_.removeClass(DISABLED);
-      }
-
-      if (this.leadingIcon_) {
-        this.leadingIcon_.setDisabled(isDisabled);
-      }
-
-      if (this.trailingIcon_) {
-        this.trailingIcon_.setDisabled(isDisabled);
-      }
-    }
-
-    /**
-     * @return {!Element|!NativeInputType} The native text input from the
-     * host environment, or a dummy if none exists.
-     * @private
-     */
-
-  }, {
-    key: 'getNativeInput_',
-    value: function getNativeInput_() {
-      return this.adapter_.getNativeInput() ||
-      /** @type {!NativeInputType} */{
-        value: '',
-        disabled: false,
-        validity: {
-          badInput: false,
-          valid: true
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(13));
+        __export(__webpack_require__(5));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      };
-    }
-  }]);
-
-  return MDCTextFieldFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTextFieldFoundation);
-
-/***/ }),
-/* 155 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCTextFieldHelperText; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(62);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(25);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTextFieldHelperTextFoundation>}
- * @final
- */
-
-var MDCTextFieldHelperText = function (_MDCComponent) {
-  _inherits(MDCTextFieldHelperText, _MDCComponent);
-
-  function MDCTextFieldHelperText() {
-    _classCallCheck(this, MDCTextFieldHelperText);
-
-    return _possibleConstructorReturn(this, (MDCTextFieldHelperText.__proto__ || Object.getPrototypeOf(MDCTextFieldHelperText)).apply(this, arguments));
-  }
-
-  _createClass(MDCTextFieldHelperText, [{
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCTextFieldHelperTextFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCTextFieldHelperTextAdapter} */_extends({
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        setAttr: function setAttr(attr, value) {
-          return _this2.root_.setAttribute(attr, value);
-        },
-        removeAttr: function removeAttr(attr) {
-          return _this2.root_.removeAttribute(attr);
-        },
-        setContent: function setContent(content) {
-          _this2.root_.textContent = content;
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(42));
+        exports.util = util;
+        var constants_1 = __webpack_require__(6);
+        exports.Corner = constants_1.Corner;
+        exports.CornerBit = constants_1.CornerBit;
+        __export(__webpack_require__(43));
+        __export(__webpack_require__(8));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }));
-    }
-  }, {
-    key: 'foundation',
-
-
-    /**
-     * @return {!MDCTextFieldHelperTextFoundation}
-     */
-    get: function get() {
-      return this.foundation_;
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTextFieldHelperText}
-     */
-    value: function attachTo(root) {
-      return new MDCTextFieldHelperText(root);
-    }
-  }]);
-
-  return MDCTextFieldHelperText;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 156 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCTextFieldCharacterCounter; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(63);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(26);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2019 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTextFieldCharacterCounterFoundation>}
- * @final
- */
-
-var MDCTextFieldCharacterCounter = function (_MDCComponent) {
-  _inherits(MDCTextFieldCharacterCounter, _MDCComponent);
-
-  function MDCTextFieldCharacterCounter() {
-    _classCallCheck(this, MDCTextFieldCharacterCounter);
-
-    return _possibleConstructorReturn(this, (MDCTextFieldCharacterCounter.__proto__ || Object.getPrototypeOf(MDCTextFieldCharacterCounter)).apply(this, arguments));
-  }
-
-  _createClass(MDCTextFieldCharacterCounter, [{
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCTextFieldCharacterCounterFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */](
-      /** @type {!MDCTextFieldCharacterCounterAdapter} */_extends({
-        setContent: function setContent(content) {
-          _this2.root_.textContent = content;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var constants_1 = __webpack_require__(6);
+        exports.Corner = constants_1.Corner;
+        __export(__webpack_require__(44));
+        __export(__webpack_require__(45));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }));
-    }
-  }, {
-    key: 'foundation',
-
-
-    /**
-     * @return {!MDCTextFieldCharacterCounterFoundation}
-     */
-    get: function get() {
-      return this.foundation_;
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTextFieldCharacterCounter}
-     */
-    value: function attachTo(root) {
-      return new MDCTextFieldCharacterCounter(root);
-    }
-  }]);
-
-  return MDCTextFieldCharacterCounter;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 157 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MDCTextFieldIcon; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(64);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(27);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTextFieldIconFoundation>}
- * @final
- */
-
-var MDCTextFieldIcon = function (_MDCComponent) {
-  _inherits(MDCTextFieldIcon, _MDCComponent);
-
-  function MDCTextFieldIcon() {
-    _classCallCheck(this, MDCTextFieldIcon);
-
-    return _possibleConstructorReturn(this, (MDCTextFieldIcon.__proto__ || Object.getPrototypeOf(MDCTextFieldIcon)).apply(this, arguments));
-  }
-
-  _createClass(MDCTextFieldIcon, [{
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCTextFieldIconFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]( /** @type {!MDCTextFieldIconAdapter} */_extends({
-        getAttr: function getAttr(attr) {
-          return _this2.root_.getAttribute(attr);
-        },
-        setAttr: function setAttr(attr, value) {
-          return _this2.root_.setAttribute(attr, value);
-        },
-        removeAttr: function removeAttr(attr) {
-          return _this2.root_.removeAttribute(attr);
-        },
-        setContent: function setContent(content) {
-          _this2.root_.textContent = content;
-        },
-        registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
-          return _this2.root_.addEventListener(evtType, handler);
-        },
-        deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
-          return _this2.root_.removeEventListener(evtType, handler);
-        },
-        notifyIconAction: function notifyIconAction() {
-          return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_EVENT, {} /* evtData */, true /* shouldBubble */);
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(19));
+        __export(__webpack_require__(47));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }));
-    }
-  }, {
-    key: 'foundation',
-
-
-    /**
-     * @return {!MDCTextFieldIconFoundation}
-     */
-    get: function get() {
-      return this.foundation_;
-    }
-  }], [{
-    key: 'attachTo',
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTextFieldIcon}
-     */
-    value: function attachTo(root) {
-      return new MDCTextFieldIcon(root);
-    }
-  }]);
-
-  return MDCTextFieldIcon;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 158 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCToolbar", function() { return MDCToolbar; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(159);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCToolbarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_2__foundation__["a"]; });
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-var MDCToolbar = function (_MDCComponent) {
-  _inherits(MDCToolbar, _MDCComponent);
-
-  function MDCToolbar() {
-    _classCallCheck(this, MDCToolbar);
-
-    return _possibleConstructorReturn(this, (MDCToolbar.__proto__ || Object.getPrototypeOf(MDCToolbar)).apply(this, arguments));
-  }
-
-  _createClass(MDCToolbar, [{
-    key: 'initialize',
-    value: function initialize() {
-      this.ripples_ = [].map.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.ICON_SELECTOR), function (icon) {
-        var ripple = __WEBPACK_IMPORTED_MODULE_1__material_ripple_index__["MDCRipple"].attachTo(icon);
-        ripple.unbounded = true;
-        return ripple;
-      });
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.ripples_.forEach(function (ripple) {
-        ripple.destroy();
-      });
-      _get(MDCToolbar.prototype.__proto__ || Object.getPrototypeOf(MDCToolbar.prototype), 'destroy', this).call(this);
-    }
-  }, {
-    key: 'getDefaultFoundation',
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      return new __WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]({
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        registerScrollHandler: function registerScrollHandler(handler) {
-          return window.addEventListener('scroll', handler);
-        },
-        deregisterScrollHandler: function deregisterScrollHandler(handler) {
-          return window.removeEventListener('scroll', handler);
-        },
-        registerResizeHandler: function registerResizeHandler(handler) {
-          return window.addEventListener('resize', handler);
-        },
-        deregisterResizeHandler: function deregisterResizeHandler(handler) {
-          return window.removeEventListener('resize', handler);
-        },
-        getViewportWidth: function getViewportWidth() {
-          return window.innerWidth;
-        },
-        getViewportScrollY: function getViewportScrollY() {
-          return window.pageYOffset;
-        },
-        getOffsetHeight: function getOffsetHeight() {
-          return _this2.root_.offsetHeight;
-        },
-        getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
-          return _this2.firstRowElement_.offsetHeight;
-        },
-        notifyChange: function notifyChange(evtData) {
-          return _this2.emit(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.CHANGE_EVENT, evtData);
-        },
-        setStyle: function setStyle(property, value) {
-          return _this2.root_.style.setProperty(property, value);
-        },
-        setStyleForTitleElement: function setStyleForTitleElement(property, value) {
-          return _this2.titleElement_.style.setProperty(property, value);
-        },
-        setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {
-          return _this2.firstRowElement_.style.setProperty(property, value);
-        },
-        setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {
-          if (_this2.fixedAdjustElement) {
-            _this2.fixedAdjustElement.style.setProperty(property, value);
-          }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(123));
+        __export(__webpack_require__(48));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var foundation_2 = __webpack_require__(48);
+        var MDCRadio = function(_super) {
+            __extends(MDCRadio, _super);
+            function MDCRadio() {
+                var _this = _super !== null && _super.apply(this, arguments) || this;
+                _this.ripple_ = _this.createRipple_();
+                return _this;
+            }
+            MDCRadio.attachTo = function(root) {
+                return new MDCRadio(root);
+            };
+            Object.defineProperty(MDCRadio.prototype, "checked", {
+                get: function get() {
+                    return this.nativeControl_.checked;
+                },
+                set: function set(checked) {
+                    this.nativeControl_.checked = checked;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRadio.prototype, "disabled", {
+                get: function get() {
+                    return this.nativeControl_.disabled;
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRadio.prototype, "value", {
+                get: function get() {
+                    return this.nativeControl_.value;
+                },
+                set: function set(value) {
+                    this.nativeControl_.value = value;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCRadio.prototype, "ripple", {
+                get: function get() {
+                    return this.ripple_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCRadio.prototype.destroy = function() {
+                this.ripple_.destroy();
+                _super.prototype.destroy.call(this);
+            };
+            MDCRadio.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setNativeControlDisabled: function setNativeControlDisabled(disabled) {
+                        return _this.nativeControl_.disabled = disabled;
+                    }
+                };
+                return new foundation_2.MDCRadioFoundation(adapter);
+            };
+            MDCRadio.prototype.createRipple_ = function() {
+                var _this = this;
+                var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), {
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.nativeControl_.addEventListener(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.nativeControl_.removeEventListener(evtType, handler);
+                    },
+                    isSurfaceActive: function isSurfaceActive() {
+                        return false;
+                    },
+                    isUnbounded: function isUnbounded() {
+                        return true;
+                    }
+                });
+                return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));
+            };
+            Object.defineProperty(MDCRadio.prototype, "nativeControl_", {
+                get: function get() {
+                    var NATIVE_CONTROL_SELECTOR = foundation_2.MDCRadioFoundation.strings.NATIVE_CONTROL_SELECTOR;
+                    var el = this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
+                    if (!el) {
+                        throw new Error("Radio component requires a " + NATIVE_CONTROL_SELECTOR + " element");
+                    }
+                    return el;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            return MDCRadio;
+        }(component_1.MDCComponent);
+        exports.MDCRadio = MDCRadio;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            NATIVE_CONTROL_SELECTOR: ".mdc-radio__native-control"
+        };
+        exports.strings = strings;
+        var cssClasses = {
+            DISABLED: "mdc-radio--disabled",
+            ROOT: "mdc-radio"
+        };
+        exports.cssClasses = cssClasses;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      });
-    }
-  }, {
-    key: 'firstRowElement_',
-    get: function get() {
-      return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.FIRST_ROW_SELECTOR);
-    }
-  }, {
-    key: 'titleElement_',
-    get: function get() {
-      return this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */].strings.TITLE_SELECTOR);
-    }
-  }, {
-    key: 'fixedAdjustElement',
-    set: function set(fixedAdjustElement) {
-      this.fixedAdjustElement_ = fixedAdjustElement;
-      this.foundation_.updateAdjustElementStyles();
-    },
-    get: function get() {
-      return this.fixedAdjustElement_;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCToolbar(root);
-    }
-  }]);
-
-  return MDCToolbar;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_component__["a" /* default */]);
-
-/***/ }),
-/* 159 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__material_base_foundation__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(160);
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-var MDCToolbarFoundation = function (_MDCFoundation) {
-  _inherits(MDCToolbarFoundation, _MDCFoundation);
-
-  _createClass(MDCToolbarFoundation, null, [{
-    key: 'cssClasses',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["a" /* cssClasses */];
-    }
-  }, {
-    key: 'strings',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["c" /* strings */];
-    }
-  }, {
-    key: 'numbers',
-    get: function get() {
-      return __WEBPACK_IMPORTED_MODULE_1__constants__["b" /* numbers */];
-    }
-  }, {
-    key: 'defaultAdapter',
-    get: function get() {
-      return {
-        hasClass: function hasClass() {
-          return (/* className: string */ /* boolean */false
-          );
-        },
-        addClass: function addClass() /* className: string */{},
-        removeClass: function removeClass() /* className: string */{},
-        registerScrollHandler: function registerScrollHandler() /* handler: EventListener */{},
-        deregisterScrollHandler: function deregisterScrollHandler() /* handler: EventListener */{},
-        registerResizeHandler: function registerResizeHandler() /* handler: EventListener */{},
-        deregisterResizeHandler: function deregisterResizeHandler() /* handler: EventListener */{},
-        getViewportWidth: function getViewportWidth() {
-          return (/* number */0
-          );
-        },
-        getViewportScrollY: function getViewportScrollY() {
-          return (/* number */0
-          );
-        },
-        getOffsetHeight: function getOffsetHeight() {
-          return (/* number */0
-          );
-        },
-        getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
-          return (/* number */0
-          );
-        },
-        notifyChange: function notifyChange() /* evtData: {flexibleExpansionRatio: number} */{},
-        setStyle: function setStyle() /* property: string, value: string */{},
-        setStyleForTitleElement: function setStyleForTitleElement() /* property: string, value: string */{},
-        setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() /* property: string, value: string */{},
-        setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() /* property: string, value: string */{}
-      };
-    }
-  }]);
-
-  function MDCToolbarFoundation(adapter) {
-    _classCallCheck(this, MDCToolbarFoundation);
-
-    var _this = _possibleConstructorReturn(this, (MDCToolbarFoundation.__proto__ || Object.getPrototypeOf(MDCToolbarFoundation)).call(this, _extends(MDCToolbarFoundation.defaultAdapter, adapter)));
-
-    _this.resizeHandler_ = function () {
-      return _this.checkRowHeight_();
-    };
-    _this.scrollHandler_ = function () {
-      return _this.updateToolbarStyles_();
-    };
-    _this.checkRowHeightFrame_ = 0;
-    _this.scrollFrame_ = 0;
-    _this.executedLastChange_ = false;
-
-    _this.calculations_ = {
-      toolbarRowHeight: 0,
-      // Calculated Height ratio. We use ratio to calculate corresponding heights in resize event.
-      toolbarRatio: 0, // The ratio of toolbar height to row height
-      flexibleExpansionRatio: 0, // The ratio of flexible space height to row height
-      maxTranslateYRatio: 0, // The ratio of max toolbar move up distance to row height
-      scrollThresholdRatio: 0, // The ratio of max scrollTop that we should listen to to row height
-      // Derived Heights based on the above key ratios.
-      toolbarHeight: 0,
-      flexibleExpansionHeight: 0, // Flexible row minus toolbar height (derived)
-      maxTranslateYDistance: 0, // When toolbar only fix last row (derived)
-      scrollThreshold: 0
-    };
-    // Toolbar fixed behavior
-    // If toolbar is fixed
-    _this.fixed_ = false;
-    // If fixed is targeted only at the last row
-    _this.fixedLastrow_ = false;
-    // Toolbar flexible behavior
-    // If the first row is flexible
-    _this.hasFlexibleRow_ = false;
-    // If use the default behavior
-    _this.useFlexDefaultBehavior_ = false;
-    return _this;
-  }
-
-  _createClass(MDCToolbarFoundation, [{
-    key: 'init',
-    value: function init() {
-      this.fixed_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED);
-      this.fixedLastrow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FIXED_LASTROW) & this.fixed_;
-      this.hasFlexibleRow_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.TOOLBAR_ROW_FLEXIBLE);
-      if (this.hasFlexibleRow_) {
-        this.useFlexDefaultBehavior_ = this.adapter_.hasClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);
-      }
-      this.initKeyRatio_();
-      this.setKeyHeights_();
-      this.adapter_.registerResizeHandler(this.resizeHandler_);
-      this.adapter_.registerScrollHandler(this.scrollHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.adapter_.deregisterResizeHandler(this.resizeHandler_);
-      this.adapter_.deregisterScrollHandler(this.scrollHandler_);
-    }
-  }, {
-    key: 'updateAdjustElementStyles',
-    value: function updateAdjustElementStyles() {
-      if (this.fixed_) {
-        this.adapter_.setStyleForFixedAdjustElement('margin-top', this.calculations_.toolbarHeight + 'px');
-      }
-    }
-  }, {
-    key: 'getFlexibleExpansionRatio_',
-    value: function getFlexibleExpansionRatio_(scrollTop) {
-      // To prevent division by zero when there is no flexibleExpansionHeight
-      var delta = 0.0001;
-      return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));
-    }
-  }, {
-    key: 'checkRowHeight_',
-    value: function checkRowHeight_() {
-      var _this2 = this;
-
-      cancelAnimationFrame(this.checkRowHeightFrame_);
-      this.checkRowHeightFrame_ = requestAnimationFrame(function () {
-        return _this2.setKeyHeights_();
-      });
-    }
-  }, {
-    key: 'setKeyHeights_',
-    value: function setKeyHeights_() {
-      var newToolbarRowHeight = this.getRowHeight_();
-      if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {
-        this.calculations_.toolbarRowHeight = newToolbarRowHeight;
-        this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;
-        this.calculations_.flexibleExpansionHeight = this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;
-        this.calculations_.maxTranslateYDistance = this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;
-        this.calculations_.scrollThreshold = this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;
-        this.updateAdjustElementStyles();
-        this.updateToolbarStyles_();
-      }
-    }
-  }, {
-    key: 'updateToolbarStyles_',
-    value: function updateToolbarStyles_() {
-      var _this3 = this;
-
-      cancelAnimationFrame(this.scrollFrame_);
-      this.scrollFrame_ = requestAnimationFrame(function () {
-        var scrollTop = _this3.adapter_.getViewportScrollY();
-        var hasScrolledOutOfThreshold = _this3.scrolledOutOfThreshold_(scrollTop);
-
-        if (hasScrolledOutOfThreshold && _this3.executedLastChange_) {
-          return;
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(11));
+        exports.util = util;
+        __export(__webpack_require__(2));
+        __export(__webpack_require__(4));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-
-        var flexibleExpansionRatio = _this3.getFlexibleExpansionRatio_(scrollTop);
-
-        _this3.updateToolbarFlexibleState_(flexibleExpansionRatio);
-        if (_this3.fixedLastrow_) {
-          _this3.updateToolbarFixedState_(scrollTop);
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(127));
+        __export(__webpack_require__(50));
+        __export(__webpack_require__(130));
+        __export(__webpack_require__(131));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(15);
+        var component_3 = __webpack_require__(17);
+        var menuSurfaceConstants = __importStar(__webpack_require__(6));
+        var component_4 = __webpack_require__(44);
+        var menuConstants = __importStar(__webpack_require__(18));
+        var component_5 = __webpack_require__(19);
+        var component_6 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var constants_1 = __webpack_require__(49);
+        var foundation_2 = __webpack_require__(50);
+        var component_7 = __webpack_require__(51);
+        var component_8 = __webpack_require__(53);
+        var VALIDATION_ATTR_WHITELIST = [ "required", "aria-required" ];
+        var MDCSelect = function(_super) {
+            __extends(MDCSelect, _super);
+            function MDCSelect() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSelect.attachTo = function(root) {
+                return new MDCSelect(root);
+            };
+            MDCSelect.prototype.initialize = function(labelFactory, lineRippleFactory, outlineFactory, menuFactory, iconFactory, helperTextFactory) {
+                if (labelFactory === void 0) {
+                    labelFactory = function labelFactory(el) {
+                        return new component_2.MDCFloatingLabel(el);
+                    };
+                }
+                if (lineRippleFactory === void 0) {
+                    lineRippleFactory = function lineRippleFactory(el) {
+                        return new component_3.MDCLineRipple(el);
+                    };
+                }
+                if (outlineFactory === void 0) {
+                    outlineFactory = function outlineFactory(el) {
+                        return new component_5.MDCNotchedOutline(el);
+                    };
+                }
+                if (menuFactory === void 0) {
+                    menuFactory = function menuFactory(el) {
+                        return new component_4.MDCMenu(el);
+                    };
+                }
+                if (iconFactory === void 0) {
+                    iconFactory = function iconFactory(el) {
+                        return new component_8.MDCSelectIcon(el);
+                    };
+                }
+                if (helperTextFactory === void 0) {
+                    helperTextFactory = function helperTextFactory(el) {
+                        return new component_7.MDCSelectHelperText(el);
+                    };
+                }
+                this.isMenuOpen_ = false;
+                this.nativeControl_ = this.root_.querySelector(constants_1.strings.NATIVE_CONTROL_SELECTOR);
+                this.selectedText_ = this.root_.querySelector(constants_1.strings.SELECTED_TEXT_SELECTOR);
+                var targetElement = this.nativeControl_ || this.selectedText_;
+                if (!targetElement) {
+                    throw new Error("MDCSelect: Missing required element: Exactly one of the following selectors must be present: " + ("'" + constants_1.strings.NATIVE_CONTROL_SELECTOR + "' or '" + constants_1.strings.SELECTED_TEXT_SELECTOR + "'"));
+                }
+                this.targetElement_ = targetElement;
+                if (this.targetElement_.hasAttribute(constants_1.strings.ARIA_CONTROLS)) {
+                    var helperTextElement = document.getElementById(this.targetElement_.getAttribute(constants_1.strings.ARIA_CONTROLS));
+                    if (helperTextElement) {
+                        this.helperText_ = helperTextFactory(helperTextElement);
+                    }
+                }
+                if (this.selectedText_) {
+                    this.enhancedSelectSetup_(menuFactory);
+                }
+                var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR);
+                this.label_ = labelElement ? labelFactory(labelElement) : null;
+                var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR);
+                this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;
+                var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR);
+                this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;
+                var leadingIcon = this.root_.querySelector(constants_1.strings.LEADING_ICON_SELECTOR);
+                if (leadingIcon) {
+                    this.root_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON);
+                    this.leadingIcon_ = iconFactory(leadingIcon);
+                    if (this.menuElement_) {
+                        this.menuElement_.classList.add(constants_1.cssClasses.WITH_LEADING_ICON);
+                    }
+                }
+                if (!this.root_.classList.contains(constants_1.cssClasses.OUTLINED)) {
+                    this.ripple = this.createRipple_();
+                }
+                this.initialSyncRequiredState_();
+                this.addMutationObserverForRequired_();
+            };
+            MDCSelect.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleChange_ = function() {
+                    return _this.foundation_.handleChange(true);
+                };
+                this.handleFocus_ = function() {
+                    return _this.foundation_.handleFocus();
+                };
+                this.handleBlur_ = function() {
+                    return _this.foundation_.handleBlur();
+                };
+                this.handleClick_ = function(evt) {
+                    if (_this.selectedText_) {
+                        _this.selectedText_.focus();
+                    }
+                    _this.foundation_.handleClick(_this.getNormalizedXCoordinate_(evt));
+                };
+                this.handleKeydown_ = function(evt) {
+                    return _this.foundation_.handleKeydown(evt);
+                };
+                this.handleMenuSelected_ = function(evtData) {
+                    return _this.selectedIndex = evtData.detail.index;
+                };
+                this.handleMenuOpened_ = function() {
+                    if (_this.menu_.items.length === 0) {
+                        return;
+                    }
+                    var focusItemIndex = _this.selectedIndex >= 0 ? _this.selectedIndex : 0;
+                    var focusItemEl = _this.menu_.items[focusItemIndex];
+                    focusItemEl.focus();
+                };
+                this.handleMenuClosed_ = function() {
+                    _this.isMenuOpen_ = false;
+                    _this.selectedText_.removeAttribute("aria-expanded");
+                    if (document.activeElement !== _this.selectedText_) {
+                        _this.foundation_.handleBlur();
+                    }
+                };
+                this.targetElement_.addEventListener("change", this.handleChange_);
+                this.targetElement_.addEventListener("focus", this.handleFocus_);
+                this.targetElement_.addEventListener("blur", this.handleBlur_);
+                this.targetElement_.addEventListener("click", this.handleClick_);
+                if (this.menuElement_) {
+                    this.selectedText_.addEventListener("keydown", this.handleKeydown_);
+                    this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
+                    this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
+                    this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
+                    if (this.hiddenInput_ && this.hiddenInput_.value) {
+                        var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
+                        enhancedAdapterMethods.setValue(this.hiddenInput_.value);
+                    } else if (this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR)) {
+                        var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
+                        enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());
+                    }
+                }
+                this.foundation_.handleChange(false);
+                if (this.root_.classList.contains(constants_1.cssClasses.DISABLED) || this.nativeControl_ && this.nativeControl_.disabled) {
+                    this.disabled = true;
+                }
+            };
+            MDCSelect.prototype.destroy = function() {
+                this.targetElement_.removeEventListener("change", this.handleChange_);
+                this.targetElement_.removeEventListener("focus", this.handleFocus_);
+                this.targetElement_.removeEventListener("blur", this.handleBlur_);
+                this.targetElement_.removeEventListener("keydown", this.handleKeydown_);
+                this.targetElement_.removeEventListener("click", this.handleClick_);
+                if (this.menu_) {
+                    this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
+                    this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
+                    this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
+                    this.menu_.destroy();
+                }
+                if (this.ripple) {
+                    this.ripple.destroy();
+                }
+                if (this.outline_) {
+                    this.outline_.destroy();
+                }
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.destroy();
+                }
+                if (this.helperText_) {
+                    this.helperText_.destroy();
+                }
+                if (this.validationObserver_) {
+                    this.validationObserver_.disconnect();
+                }
+                _super.prototype.destroy.call(this);
+            };
+            Object.defineProperty(MDCSelect.prototype, "value", {
+                get: function get() {
+                    return this.foundation_.getValue();
+                },
+                set: function set(value) {
+                    this.foundation_.setValue(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "selectedIndex", {
+                get: function get() {
+                    var selectedIndex = -1;
+                    if (this.menuElement_ && this.menu_) {
+                        var selectedEl = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);
+                        selectedIndex = this.menu_.items.indexOf(selectedEl);
+                    } else if (this.nativeControl_) {
+                        selectedIndex = this.nativeControl_.selectedIndex;
+                    }
+                    return selectedIndex;
+                },
+                set: function set(selectedIndex) {
+                    this.foundation_.setSelectedIndex(selectedIndex);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "disabled", {
+                get: function get() {
+                    return this.root_.classList.contains(constants_1.cssClasses.DISABLED) || (this.nativeControl_ ? this.nativeControl_.disabled : false);
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "leadingIconAriaLabel", {
+                set: function set(label) {
+                    this.foundation_.setLeadingIconAriaLabel(label);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "leadingIconContent", {
+                set: function set(content) {
+                    this.foundation_.setLeadingIconContent(content);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "helperTextContent", {
+                set: function set(content) {
+                    this.foundation_.setHelperTextContent(content);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "valid", {
+                get: function get() {
+                    return this.foundation_.isValid();
+                },
+                set: function set(isValid) {
+                    this.foundation_.setValid(isValid);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSelect.prototype, "required", {
+                get: function get() {
+                    if (this.nativeControl_) {
+                        return this.nativeControl_.required;
+                    } else {
+                        return this.selectedText_.getAttribute("aria-required") === "true";
+                    }
+                },
+                set: function set(isRequired) {
+                    if (this.nativeControl_) {
+                        this.nativeControl_.required = isRequired;
+                    } else {
+                        if (isRequired) {
+                            this.selectedText_.setAttribute("aria-required", isRequired.toString());
+                        } else {
+                            this.selectedText_.removeAttribute("aria-required");
+                        }
+                    }
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSelect.prototype.layout = function() {
+                this.foundation_.layout();
+            };
+            MDCSelect.prototype.getDefaultFoundation = function() {
+                var adapter = __assign({}, this.nativeControl_ ? this.getNativeSelectAdapterMethods_() : this.getEnhancedSelectAdapterMethods_(), this.getCommonAdapterMethods_(), this.getOutlineAdapterMethods_(), this.getLabelAdapterMethods_());
+                return new foundation_2.MDCSelectFoundation(adapter, this.getFoundationMap_());
+            };
+            MDCSelect.prototype.enhancedSelectSetup_ = function(menuFactory) {
+                var isDisabled = this.root_.classList.contains(constants_1.cssClasses.DISABLED);
+                this.selectedText_.setAttribute("tabindex", isDisabled ? "-1" : "0");
+                this.hiddenInput_ = this.root_.querySelector(constants_1.strings.HIDDEN_INPUT_SELECTOR);
+                this.menuElement_ = this.root_.querySelector(constants_1.strings.MENU_SELECTOR);
+                this.menu_ = menuFactory(this.menuElement_);
+                this.menu_.hoistMenuToBody();
+                this.menu_.setAnchorElement(this.root_);
+                this.menu_.setAnchorCorner(menuSurfaceConstants.Corner.BOTTOM_START);
+                this.menu_.wrapFocus = false;
+            };
+            MDCSelect.prototype.createRipple_ = function() {
+                var _this = this;
+                var adapter = __assign({}, component_6.MDCRipple.createAdapter(this), {
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.targetElement_.addEventListener(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.targetElement_.removeEventListener(evtType, handler);
+                    }
+                });
+                return new component_6.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));
+            };
+            MDCSelect.prototype.getNativeSelectAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    getValue: function getValue() {
+                        return _this.nativeControl_.value;
+                    },
+                    setValue: function setValue(value) {
+                        _this.nativeControl_.value = value;
+                    },
+                    openMenu: function openMenu() {
+                        return undefined;
+                    },
+                    closeMenu: function closeMenu() {
+                        return undefined;
+                    },
+                    isMenuOpen: function isMenuOpen() {
+                        return false;
+                    },
+                    setSelectedIndex: function setSelectedIndex(index) {
+                        _this.nativeControl_.selectedIndex = index;
+                    },
+                    setDisabled: function setDisabled(isDisabled) {
+                        _this.nativeControl_.disabled = isDisabled;
+                    },
+                    setValid: function setValid(isValid) {
+                        if (isValid) {
+                            _this.root_.classList.remove(constants_1.cssClasses.INVALID);
+                        } else {
+                            _this.root_.classList.add(constants_1.cssClasses.INVALID);
+                        }
+                    },
+                    checkValidity: function checkValidity() {
+                        return _this.nativeControl_.checkValidity();
+                    }
+                };
+            };
+            MDCSelect.prototype.getEnhancedSelectAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    getValue: function getValue() {
+                        var listItem = _this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);
+                        if (listItem && listItem.hasAttribute(constants_1.strings.ENHANCED_VALUE_ATTR)) {
+                            return listItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || "";
+                        }
+                        return "";
+                    },
+                    setValue: function setValue(value) {
+                        var element = _this.menuElement_.querySelector("[" + constants_1.strings.ENHANCED_VALUE_ATTR + '="' + value + '"]');
+                        _this.setEnhancedSelectedIndex_(element ? _this.menu_.items.indexOf(element) : -1);
+                    },
+                    openMenu: function openMenu() {
+                        if (_this.menu_ && !_this.menu_.open) {
+                            _this.menu_.open = true;
+                            _this.isMenuOpen_ = true;
+                            _this.selectedText_.setAttribute("aria-expanded", "true");
+                        }
+                    },
+                    closeMenu: function closeMenu() {
+                        if (_this.menu_ && _this.menu_.open) {
+                            _this.menu_.open = false;
+                        }
+                    },
+                    isMenuOpen: function isMenuOpen() {
+                        return Boolean(_this.menu_) && _this.isMenuOpen_;
+                    },
+                    setSelectedIndex: function setSelectedIndex(index) {
+                        return _this.setEnhancedSelectedIndex_(index);
+                    },
+                    setDisabled: function setDisabled(isDisabled) {
+                        _this.selectedText_.setAttribute("tabindex", isDisabled ? "-1" : "0");
+                        _this.selectedText_.setAttribute("aria-disabled", isDisabled.toString());
+                        if (_this.hiddenInput_) {
+                            _this.hiddenInput_.disabled = isDisabled;
+                        }
+                    },
+                    checkValidity: function checkValidity() {
+                        var classList = _this.root_.classList;
+                        if (classList.contains(constants_1.cssClasses.REQUIRED) && !classList.contains(constants_1.cssClasses.DISABLED)) {
+                            return _this.selectedIndex !== -1 && (_this.selectedIndex !== 0 || Boolean(_this.value));
+                        } else {
+                            return true;
+                        }
+                    },
+                    setValid: function setValid(isValid) {
+                        _this.selectedText_.setAttribute("aria-invalid", (!isValid).toString());
+                        if (isValid) {
+                            _this.root_.classList.remove(constants_1.cssClasses.INVALID);
+                        } else {
+                            _this.root_.classList.add(constants_1.cssClasses.INVALID);
+                        }
+                    }
+                };
+            };
+            MDCSelect.prototype.getCommonAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    setRippleCenter: function setRippleCenter(normalizedX) {
+                        return _this.lineRipple_ && _this.lineRipple_.setRippleCenter(normalizedX);
+                    },
+                    activateBottomLine: function activateBottomLine() {
+                        return _this.lineRipple_ && _this.lineRipple_.activate();
+                    },
+                    deactivateBottomLine: function deactivateBottomLine() {
+                        return _this.lineRipple_ && _this.lineRipple_.deactivate();
+                    },
+                    notifyChange: function notifyChange(value) {
+                        var index = _this.selectedIndex;
+                        _this.emit(constants_1.strings.CHANGE_EVENT, {
+                            value: value,
+                            index: index
+                        }, true);
+                    }
+                };
+            };
+            MDCSelect.prototype.getOutlineAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    hasOutline: function hasOutline() {
+                        return Boolean(_this.outline_);
+                    },
+                    notchOutline: function notchOutline(labelWidth) {
+                        return _this.outline_ && _this.outline_.notch(labelWidth);
+                    },
+                    closeOutline: function closeOutline() {
+                        return _this.outline_ && _this.outline_.closeNotch();
+                    }
+                };
+            };
+            MDCSelect.prototype.getLabelAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    floatLabel: function floatLabel(shouldFloat) {
+                        return _this.label_ && _this.label_.float(shouldFloat);
+                    },
+                    getLabelWidth: function getLabelWidth() {
+                        return _this.label_ ? _this.label_.getWidth() : 0;
+                    }
+                };
+            };
+            MDCSelect.prototype.getNormalizedXCoordinate_ = function(evt) {
+                var targetClientRect = evt.target.getBoundingClientRect();
+                var xCoordinate = this.isTouchEvent_(evt) ? evt.touches[0].clientX : evt.clientX;
+                return xCoordinate - targetClientRect.left;
+            };
+            MDCSelect.prototype.isTouchEvent_ = function(evt) {
+                return Boolean(evt.touches);
+            };
+            MDCSelect.prototype.getFoundationMap_ = function() {
+                return {
+                    helperText: this.helperText_ ? this.helperText_.foundation : undefined,
+                    leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined
+                };
+            };
+            MDCSelect.prototype.setEnhancedSelectedIndex_ = function(index) {
+                var selectedItem = this.menu_.items[index];
+                this.selectedText_.textContent = selectedItem ? selectedItem.textContent.trim() : "";
+                var previouslySelected = this.menuElement_.querySelector(constants_1.strings.SELECTED_ITEM_SELECTOR);
+                if (previouslySelected) {
+                    previouslySelected.classList.remove(constants_1.cssClasses.SELECTED_ITEM_CLASS);
+                    previouslySelected.removeAttribute(constants_1.strings.ARIA_SELECTED_ATTR);
+                }
+                if (selectedItem) {
+                    selectedItem.classList.add(constants_1.cssClasses.SELECTED_ITEM_CLASS);
+                    selectedItem.setAttribute(constants_1.strings.ARIA_SELECTED_ATTR, "true");
+                }
+                if (this.hiddenInput_) {
+                    this.hiddenInput_.value = selectedItem ? selectedItem.getAttribute(constants_1.strings.ENHANCED_VALUE_ATTR) || "" : "";
+                }
+                this.layout();
+            };
+            MDCSelect.prototype.initialSyncRequiredState_ = function() {
+                var isRequired = this.targetElement_.required || this.targetElement_.getAttribute("aria-required") === "true" || this.root_.classList.contains(constants_1.cssClasses.REQUIRED);
+                if (isRequired) {
+                    if (this.nativeControl_) {
+                        this.nativeControl_.required = true;
+                    } else {
+                        this.selectedText_.setAttribute("aria-required", "true");
+                    }
+                    this.root_.classList.add(constants_1.cssClasses.REQUIRED);
+                }
+            };
+            MDCSelect.prototype.addMutationObserverForRequired_ = function() {
+                var _this = this;
+                var observerHandler = function observerHandler(attributesList) {
+                    attributesList.some(function(attributeName) {
+                        if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) === -1) {
+                            return false;
+                        }
+                        if (_this.selectedText_) {
+                            if (_this.selectedText_.getAttribute("aria-required") === "true") {
+                                _this.root_.classList.add(constants_1.cssClasses.REQUIRED);
+                            } else {
+                                _this.root_.classList.remove(constants_1.cssClasses.REQUIRED);
+                            }
+                        } else {
+                            if (_this.nativeControl_.required) {
+                                _this.root_.classList.add(constants_1.cssClasses.REQUIRED);
+                            } else {
+                                _this.root_.classList.remove(constants_1.cssClasses.REQUIRED);
+                            }
+                        }
+                        return true;
+                    });
+                };
+                var getAttributesList = function getAttributesList(mutationsList) {
+                    return mutationsList.map(function(mutation) {
+                        return mutation.attributeName;
+                    }).filter(function(attributeName) {
+                        return attributeName;
+                    });
+                };
+                var observer = new MutationObserver(function(mutationsList) {
+                    return observerHandler(getAttributesList(mutationsList));
+                });
+                observer.observe(this.targetElement_, {
+                    attributes: true
+                });
+                this.validationObserver_ = observer;
+            };
+            return MDCSelect;
+        }(component_1.MDCComponent);
+        exports.MDCSelect = MDCSelect;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            ARIA_HIDDEN: "aria-hidden",
+            ROLE: "role"
+        };
+        exports.strings = strings;
+        var cssClasses = {
+            HELPER_TEXT_PERSISTENT: "mdc-select-helper-text--persistent",
+            HELPER_TEXT_VALIDATION_MSG: "mdc-select-helper-text--validation-msg"
+        };
+        exports.cssClasses = cssClasses;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            ICON_EVENT: "MDCSelect:icon",
+            ICON_ROLE: "button"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(51));
+        __export(__webpack_require__(52));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(53));
+        __export(__webpack_require__(54));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(133));
+        __export(__webpack_require__(56));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var constants_1 = __webpack_require__(55);
+        var foundation_1 = __webpack_require__(56);
+        var MDCSlider = function(_super) {
+            __extends(MDCSlider, _super);
+            function MDCSlider() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSlider.attachTo = function(root) {
+                return new MDCSlider(root);
+            };
+            Object.defineProperty(MDCSlider.prototype, "value", {
+                get: function get() {
+                    return this.foundation_.getValue();
+                },
+                set: function set(value) {
+                    this.foundation_.setValue(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSlider.prototype, "min", {
+                get: function get() {
+                    return this.foundation_.getMin();
+                },
+                set: function set(min) {
+                    this.foundation_.setMin(min);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSlider.prototype, "max", {
+                get: function get() {
+                    return this.foundation_.getMax();
+                },
+                set: function set(max) {
+                    this.foundation_.setMax(max);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSlider.prototype, "step", {
+                get: function get() {
+                    return this.foundation_.getStep();
+                },
+                set: function set(step) {
+                    this.foundation_.setStep(step);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSlider.prototype, "disabled", {
+                get: function get() {
+                    return this.foundation_.isDisabled();
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSlider.prototype.initialize = function() {
+                this.thumbContainer_ = this.root_.querySelector(constants_1.strings.THUMB_CONTAINER_SELECTOR);
+                this.track_ = this.root_.querySelector(constants_1.strings.TRACK_SELECTOR);
+                this.pinValueMarker_ = this.root_.querySelector(constants_1.strings.PIN_VALUE_MARKER_SELECTOR);
+                this.trackMarkerContainer_ = this.root_.querySelector(constants_1.strings.TRACK_MARKER_CONTAINER_SELECTOR);
+            };
+            MDCSlider.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    getAttribute: function getAttribute(name) {
+                        return _this.root_.getAttribute(name);
+                    },
+                    setAttribute: function setAttribute(name, value) {
+                        return _this.root_.setAttribute(name, value);
+                    },
+                    removeAttribute: function removeAttribute(name) {
+                        return _this.root_.removeAttribute(name);
+                    },
+                    computeBoundingRect: function computeBoundingRect() {
+                        return _this.root_.getBoundingClientRect();
+                    },
+                    getTabIndex: function getTabIndex() {
+                        return _this.root_.tabIndex;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    },
+                    registerThumbContainerInteractionHandler: function registerThumbContainerInteractionHandler(evtType, handler) {
+                        _this.thumbContainer_.addEventListener(evtType, handler);
+                    },
+                    deregisterThumbContainerInteractionHandler: function deregisterThumbContainerInteractionHandler(evtType, handler) {
+                        _this.thumbContainer_.removeEventListener(evtType, handler);
+                    },
+                    registerBodyInteractionHandler: function registerBodyInteractionHandler(evtType, handler) {
+                        return document.body.addEventListener(evtType, handler);
+                    },
+                    deregisterBodyInteractionHandler: function deregisterBodyInteractionHandler(evtType, handler) {
+                        return document.body.removeEventListener(evtType, handler);
+                    },
+                    registerResizeHandler: function registerResizeHandler(handler) {
+                        return window.addEventListener("resize", handler);
+                    },
+                    deregisterResizeHandler: function deregisterResizeHandler(handler) {
+                        return window.removeEventListener("resize", handler);
+                    },
+                    notifyInput: function notifyInput() {
+                        return _this.emit(constants_1.strings.INPUT_EVENT, _this);
+                    },
+                    notifyChange: function notifyChange() {
+                        return _this.emit(constants_1.strings.CHANGE_EVENT, _this);
+                    },
+                    setThumbContainerStyleProperty: function setThumbContainerStyleProperty(propertyName, value) {
+                        _this.thumbContainer_.style.setProperty(propertyName, value);
+                    },
+                    setTrackStyleProperty: function setTrackStyleProperty(propertyName, value) {
+                        return _this.track_.style.setProperty(propertyName, value);
+                    },
+                    setMarkerValue: function setMarkerValue(value) {
+                        return _this.pinValueMarker_.innerText = value.toLocaleString();
+                    },
+                    appendTrackMarkers: function appendTrackMarkers(numMarkers) {
+                        var frag = document.createDocumentFragment();
+                        for (var i = 0; i < numMarkers; i++) {
+                            var marker = document.createElement("div");
+                            marker.classList.add("mdc-slider__track-marker");
+                            frag.appendChild(marker);
+                        }
+                        _this.trackMarkerContainer_.appendChild(frag);
+                    },
+                    removeTrackMarkers: function removeTrackMarkers() {
+                        while (_this.trackMarkerContainer_.firstChild) {
+                            _this.trackMarkerContainer_.removeChild(_this.trackMarkerContainer_.firstChild);
+                        }
+                    },
+                    setLastTrackMarkersStyleProperty: function setLastTrackMarkersStyleProperty(propertyName, value) {
+                        var lastTrackMarker = _this.root_.querySelector(constants_1.strings.LAST_TRACK_MARKER_SELECTOR);
+                        lastTrackMarker.style.setProperty(propertyName, value);
+                    },
+                    isRTL: function isRTL() {
+                        return getComputedStyle(_this.root_).direction === "rtl";
+                    }
+                };
+                return new foundation_1.MDCSliderFoundation(adapter);
+            };
+            MDCSlider.prototype.initialSyncWithDOM = function() {
+                var origValueNow = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUENOW), this.value);
+                var min = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMIN), this.min);
+                var max = this.parseFloat_(this.root_.getAttribute(constants_1.strings.ARIA_VALUEMAX), this.max);
+                if (min >= this.max) {
+                    this.max = max;
+                    this.min = min;
+                } else {
+                    this.min = min;
+                    this.max = max;
+                }
+                this.step = this.parseFloat_(this.root_.getAttribute(constants_1.strings.STEP_DATA_ATTR), this.step);
+                this.value = origValueNow;
+                this.disabled = this.root_.hasAttribute(constants_1.strings.ARIA_DISABLED) && this.root_.getAttribute(constants_1.strings.ARIA_DISABLED) !== "false";
+                this.foundation_.setupTrackMarker();
+            };
+            MDCSlider.prototype.layout = function() {
+                this.foundation_.layout();
+            };
+            MDCSlider.prototype.stepUp = function(amount) {
+                if (amount === void 0) {
+                    amount = this.step || 1;
+                }
+                this.value += amount;
+            };
+            MDCSlider.prototype.stepDown = function(amount) {
+                if (amount === void 0) {
+                    amount = this.step || 1;
+                }
+                this.value -= amount;
+            };
+            MDCSlider.prototype.parseFloat_ = function(str, defaultValue) {
+                var num = parseFloat(str);
+                var isNumeric = typeof num === "number" && isFinite(num);
+                return isNumeric ? num : defaultValue;
+            };
+            return MDCSlider;
+        }(component_1.MDCComponent);
+        exports.MDCSlider = MDCSlider;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(57));
+        exports.util = util;
+        __export(__webpack_require__(135));
+        __export(__webpack_require__(58));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var constants_1 = __webpack_require__(20);
+        var foundation_1 = __webpack_require__(58);
+        var util = __importStar(__webpack_require__(57));
+        var SURFACE_SELECTOR = constants_1.strings.SURFACE_SELECTOR, LABEL_SELECTOR = constants_1.strings.LABEL_SELECTOR, ACTION_SELECTOR = constants_1.strings.ACTION_SELECTOR, DISMISS_SELECTOR = constants_1.strings.DISMISS_SELECTOR, OPENING_EVENT = constants_1.strings.OPENING_EVENT, OPENED_EVENT = constants_1.strings.OPENED_EVENT, CLOSING_EVENT = constants_1.strings.CLOSING_EVENT, CLOSED_EVENT = constants_1.strings.CLOSED_EVENT;
+        var MDCSnackbar = function(_super) {
+            __extends(MDCSnackbar, _super);
+            function MDCSnackbar() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCSnackbar.attachTo = function(root) {
+                return new MDCSnackbar(root);
+            };
+            MDCSnackbar.prototype.initialize = function(announcerFactory) {
+                if (announcerFactory === void 0) {
+                    announcerFactory = function announcerFactory() {
+                        return util.announce;
+                    };
+                }
+                this.announce_ = announcerFactory();
+            };
+            MDCSnackbar.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.surfaceEl_ = this.root_.querySelector(SURFACE_SELECTOR);
+                this.labelEl_ = this.root_.querySelector(LABEL_SELECTOR);
+                this.actionEl_ = this.root_.querySelector(ACTION_SELECTOR);
+                this.handleKeyDown_ = function(evt) {
+                    return _this.foundation_.handleKeyDown(evt);
+                };
+                this.handleSurfaceClick_ = function(evt) {
+                    var target = evt.target;
+                    if (_this.isActionButton_(target)) {
+                        _this.foundation_.handleActionButtonClick(evt);
+                    } else if (_this.isActionIcon_(target)) {
+                        _this.foundation_.handleActionIconClick(evt);
+                    }
+                };
+                this.registerKeyDownHandler_(this.handleKeyDown_);
+                this.registerSurfaceClickHandler_(this.handleSurfaceClick_);
+            };
+            MDCSnackbar.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+                this.deregisterKeyDownHandler_(this.handleKeyDown_);
+                this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);
+            };
+            MDCSnackbar.prototype.open = function() {
+                this.foundation_.open();
+            };
+            MDCSnackbar.prototype.close = function(reason) {
+                if (reason === void 0) {
+                    reason = "";
+                }
+                this.foundation_.close(reason);
+            };
+            MDCSnackbar.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    announce: function announce() {
+                        return _this.announce_(_this.labelEl_);
+                    },
+                    notifyClosed: function notifyClosed(reason) {
+                        return _this.emit(CLOSED_EVENT, reason ? {
+                            reason: reason
+                        } : {});
+                    },
+                    notifyClosing: function notifyClosing(reason) {
+                        return _this.emit(CLOSING_EVENT, reason ? {
+                            reason: reason
+                        } : {});
+                    },
+                    notifyOpened: function notifyOpened() {
+                        return _this.emit(OPENED_EVENT, {});
+                    },
+                    notifyOpening: function notifyOpening() {
+                        return _this.emit(OPENING_EVENT, {});
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    }
+                };
+                return new foundation_1.MDCSnackbarFoundation(adapter);
+            };
+            Object.defineProperty(MDCSnackbar.prototype, "timeoutMs", {
+                get: function get() {
+                    return this.foundation_.getTimeoutMs();
+                },
+                set: function set(timeoutMs) {
+                    this.foundation_.setTimeoutMs(timeoutMs);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbar.prototype, "closeOnEscape", {
+                get: function get() {
+                    return this.foundation_.getCloseOnEscape();
+                },
+                set: function set(closeOnEscape) {
+                    this.foundation_.setCloseOnEscape(closeOnEscape);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbar.prototype, "isOpen", {
+                get: function get() {
+                    return this.foundation_.isOpen();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbar.prototype, "labelText", {
+                get: function get() {
+                    return this.labelEl_.textContent;
+                },
+                set: function set(labelText) {
+                    this.labelEl_.textContent = labelText;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSnackbar.prototype, "actionButtonText", {
+                get: function get() {
+                    return this.actionEl_.textContent;
+                },
+                set: function set(actionButtonText) {
+                    this.actionEl_.textContent = actionButtonText;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSnackbar.prototype.registerKeyDownHandler_ = function(handler) {
+                this.listen("keydown", handler);
+            };
+            MDCSnackbar.prototype.deregisterKeyDownHandler_ = function(handler) {
+                this.unlisten("keydown", handler);
+            };
+            MDCSnackbar.prototype.registerSurfaceClickHandler_ = function(handler) {
+                this.surfaceEl_.addEventListener("click", handler);
+            };
+            MDCSnackbar.prototype.deregisterSurfaceClickHandler_ = function(handler) {
+                this.surfaceEl_.removeEventListener("click", handler);
+            };
+            MDCSnackbar.prototype.isActionButton_ = function(target) {
+                return Boolean(ponyfill_1.closest(target, ACTION_SELECTOR));
+            };
+            MDCSnackbar.prototype.isActionIcon_ = function(target) {
+                return Boolean(ponyfill_1.closest(target, DISMISS_SELECTOR));
+            };
+            return MDCSnackbar;
+        }(component_1.MDCComponent);
+        exports.MDCSnackbar = MDCSnackbar;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
+        }
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(137));
+        __export(__webpack_require__(59));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        var __read = this && this.__read || function(o, n) {
+            var m = typeof Symbol === "function" && o[Symbol.iterator];
+            if (!m) return o;
+            var i = m.call(o), r, ar = [], e;
+            try {
+                while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+                    ar.push(r.value);
+                }
+            } catch (error) {
+                e = {
+                    error: error
+                };
+            } finally {
+                try {
+                    if (r && !r.done && (m = i["return"])) m.call(i);
+                } finally {
+                    if (e) throw e.error;
+                }
+            }
+            return ar;
+        };
+        var __spread = this && this.__spread || function() {
+            for (var ar = [], i = 0; i < arguments.length; i++) {
+                ar = ar.concat(__read(arguments[i]));
+            }
+            return ar;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill_1 = __webpack_require__(3);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var foundation_2 = __webpack_require__(59);
+        var MDCSwitch = function(_super) {
+            __extends(MDCSwitch, _super);
+            function MDCSwitch() {
+                var _this = _super !== null && _super.apply(this, arguments) || this;
+                _this.ripple_ = _this.createRipple_();
+                return _this;
+            }
+            MDCSwitch.attachTo = function(root) {
+                return new MDCSwitch(root);
+            };
+            MDCSwitch.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+                this.ripple_.destroy();
+                this.nativeControl_.removeEventListener("change", this.changeHandler_);
+            };
+            MDCSwitch.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.changeHandler_ = function() {
+                    var args = [];
+                    for (var _i = 0; _i < arguments.length; _i++) {
+                        args[_i] = arguments[_i];
+                    }
+                    var _a;
+                    return (_a = _this.foundation_).handleChange.apply(_a, __spread(args));
+                };
+                this.nativeControl_.addEventListener("change", this.changeHandler_);
+                this.checked = this.checked;
+            };
+            MDCSwitch.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setNativeControlChecked: function setNativeControlChecked(checked) {
+                        return _this.nativeControl_.checked = checked;
+                    },
+                    setNativeControlDisabled: function setNativeControlDisabled(disabled) {
+                        return _this.nativeControl_.disabled = disabled;
+                    }
+                };
+                return new foundation_2.MDCSwitchFoundation(adapter);
+            };
+            Object.defineProperty(MDCSwitch.prototype, "ripple", {
+                get: function get() {
+                    return this.ripple_;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSwitch.prototype, "checked", {
+                get: function get() {
+                    return this.nativeControl_.checked;
+                },
+                set: function set(checked) {
+                    this.foundation_.setChecked(checked);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCSwitch.prototype, "disabled", {
+                get: function get() {
+                    return this.nativeControl_.disabled;
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCSwitch.prototype.createRipple_ = function() {
+                var _this = this;
+                var RIPPLE_SURFACE_SELECTOR = foundation_2.MDCSwitchFoundation.strings.RIPPLE_SURFACE_SELECTOR;
+                var rippleSurface = this.root_.querySelector(RIPPLE_SURFACE_SELECTOR);
+                var adapter = __assign({}, component_2.MDCRipple.createAdapter(this), {
+                    addClass: function addClass(className) {
+                        return rippleSurface.classList.add(className);
+                    },
+                    computeBoundingRect: function computeBoundingRect() {
+                        return rippleSurface.getBoundingClientRect();
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        _this.nativeControl_.removeEventListener(evtType, handler);
+                    },
+                    isSurfaceActive: function isSurfaceActive() {
+                        return ponyfill_1.matches(_this.nativeControl_, ":active");
+                    },
+                    isUnbounded: function isUnbounded() {
+                        return true;
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        _this.nativeControl_.addEventListener(evtType, handler);
+                    },
+                    removeClass: function removeClass(className) {
+                        return rippleSurface.classList.remove(className);
+                    },
+                    updateCssVariable: function updateCssVariable(varName, value) {
+                        rippleSurface.style.setProperty(varName, value);
+                    }
+                });
+                return new component_2.MDCRipple(this.root_, new foundation_1.MDCRippleFoundation(adapter));
+            };
+            Object.defineProperty(MDCSwitch.prototype, "nativeControl_", {
+                get: function get() {
+                    var NATIVE_CONTROL_SELECTOR = foundation_2.MDCSwitchFoundation.strings.NATIVE_CONTROL_SELECTOR;
+                    return this.root_.querySelector(NATIVE_CONTROL_SELECTOR);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            return MDCSwitch;
+        }(component_1.MDCComponent);
+        exports.MDCSwitch = MDCSwitch;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            CHECKED: "mdc-switch--checked",
+            DISABLED: "mdc-switch--disabled"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            NATIVE_CONTROL_SELECTOR: ".mdc-switch__native-control",
+            RIPPLE_SURFACE_SELECTOR: ".mdc-switch__thumb-underlay"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-        if (_this3.hasFlexibleRow_) {
-          _this3.updateFlexibleRowElementStyles_(flexibleExpansionRatio);
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(140));
+        __export(__webpack_require__(68));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(60);
+        var component_3 = __webpack_require__(64);
+        var foundation_1 = __webpack_require__(22);
+        var foundation_2 = __webpack_require__(68);
+        var strings = foundation_2.MDCTabBarFoundation.strings;
+        var tabIdCounter = 0;
+        var MDCTabBar = function(_super) {
+            __extends(MDCTabBar, _super);
+            function MDCTabBar() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabBar.attachTo = function(root) {
+                return new MDCTabBar(root);
+            };
+            Object.defineProperty(MDCTabBar.prototype, "focusOnActivate", {
+                set: function set(focusOnActivate) {
+                    this.tabList_.forEach(function(tab) {
+                        return tab.focusOnActivate = focusOnActivate;
+                    });
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTabBar.prototype, "useAutomaticActivation", {
+                set: function set(useAutomaticActivation) {
+                    this.foundation_.setUseAutomaticActivation(useAutomaticActivation);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTabBar.prototype.initialize = function(tabFactory, tabScrollerFactory) {
+                if (tabFactory === void 0) {
+                    tabFactory = function tabFactory(el) {
+                        return new component_3.MDCTab(el);
+                    };
+                }
+                if (tabScrollerFactory === void 0) {
+                    tabScrollerFactory = function tabScrollerFactory(el) {
+                        return new component_2.MDCTabScroller(el);
+                    };
+                }
+                this.tabList_ = this.instantiateTabs_(tabFactory);
+                this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);
+            };
+            MDCTabBar.prototype.initialSyncWithDOM = function() {
+                var _this = this;
+                this.handleTabInteraction_ = function(evt) {
+                    return _this.foundation_.handleTabInteraction(evt);
+                };
+                this.handleKeyDown_ = function(evt) {
+                    return _this.foundation_.handleKeyDown(evt);
+                };
+                this.listen(foundation_1.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);
+                this.listen("keydown", this.handleKeyDown_);
+                for (var i = 0; i < this.tabList_.length; i++) {
+                    if (this.tabList_[i].active) {
+                        this.scrollIntoView(i);
+                        break;
+                    }
+                }
+            };
+            MDCTabBar.prototype.destroy = function() {
+                _super.prototype.destroy.call(this);
+                this.unlisten(foundation_1.MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);
+                this.unlisten("keydown", this.handleKeyDown_);
+                this.tabList_.forEach(function(tab) {
+                    return tab.destroy();
+                });
+                if (this.tabScroller_) {
+                    this.tabScroller_.destroy();
+                }
+            };
+            MDCTabBar.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    scrollTo: function scrollTo(scrollX) {
+                        return _this.tabScroller_.scrollTo(scrollX);
+                    },
+                    incrementScroll: function incrementScroll(scrollXIncrement) {
+                        return _this.tabScroller_.incrementScroll(scrollXIncrement);
+                    },
+                    getScrollPosition: function getScrollPosition() {
+                        return _this.tabScroller_.getScrollPosition();
+                    },
+                    getScrollContentWidth: function getScrollContentWidth() {
+                        return _this.tabScroller_.getScrollContentWidth();
+                    },
+                    getOffsetWidth: function getOffsetWidth() {
+                        return _this.root_.offsetWidth;
+                    },
+                    isRTL: function isRTL() {
+                        return window.getComputedStyle(_this.root_).getPropertyValue("direction") === "rtl";
+                    },
+                    setActiveTab: function setActiveTab(index) {
+                        return _this.foundation_.activateTab(index);
+                    },
+                    activateTabAtIndex: function activateTabAtIndex(index, clientRect) {
+                        return _this.tabList_[index].activate(clientRect);
+                    },
+                    deactivateTabAtIndex: function deactivateTabAtIndex(index) {
+                        return _this.tabList_[index].deactivate();
+                    },
+                    focusTabAtIndex: function focusTabAtIndex(index) {
+                        return _this.tabList_[index].focus();
+                    },
+                    getTabIndicatorClientRectAtIndex: function getTabIndicatorClientRectAtIndex(index) {
+                        return _this.tabList_[index].computeIndicatorClientRect();
+                    },
+                    getTabDimensionsAtIndex: function getTabDimensionsAtIndex(index) {
+                        return _this.tabList_[index].computeDimensions();
+                    },
+                    getPreviousActiveTabIndex: function getPreviousActiveTabIndex() {
+                        for (var i = 0; i < _this.tabList_.length; i++) {
+                            if (_this.tabList_[i].active) {
+                                return i;
+                            }
+                        }
+                        return -1;
+                    },
+                    getFocusedTabIndex: function getFocusedTabIndex() {
+                        var tabElements = _this.getTabElements_();
+                        var activeElement = document.activeElement;
+                        return tabElements.indexOf(activeElement);
+                    },
+                    getIndexOfTabById: function getIndexOfTabById(id) {
+                        for (var i = 0; i < _this.tabList_.length; i++) {
+                            if (_this.tabList_[i].id === id) {
+                                return i;
+                            }
+                        }
+                        return -1;
+                    },
+                    getTabListLength: function getTabListLength() {
+                        return _this.tabList_.length;
+                    },
+                    notifyTabActivated: function notifyTabActivated(index) {
+                        return _this.emit(strings.TAB_ACTIVATED_EVENT, {
+                            index: index
+                        }, true);
+                    }
+                };
+                return new foundation_2.MDCTabBarFoundation(adapter);
+            };
+            MDCTabBar.prototype.activateTab = function(index) {
+                this.foundation_.activateTab(index);
+            };
+            MDCTabBar.prototype.scrollIntoView = function(index) {
+                this.foundation_.scrollIntoView(index);
+            };
+            MDCTabBar.prototype.getTabElements_ = function() {
+                return [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR));
+            };
+            MDCTabBar.prototype.instantiateTabs_ = function(tabFactory) {
+                return this.getTabElements_().map(function(el) {
+                    el.id = el.id || "mdc-tab-" + ++tabIdCounter;
+                    return tabFactory(el);
+                });
+            };
+            MDCTabBar.prototype.instantiateTabScroller_ = function(tabScrollerFactory) {
+                var tabScrollerElement = this.root_.querySelector(strings.TAB_SCROLLER_SELECTOR);
+                if (tabScrollerElement) {
+                    return tabScrollerFactory(tabScrollerElement);
+                }
+                return null;
+            };
+            return MDCTabBar;
+        }(component_1.MDCComponent);
+        exports.MDCTabBar = MDCTabBar;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var rtl_scroller_1 = __webpack_require__(21);
+        var MDCTabScrollerRTLDefault = function(_super) {
+            __extends(MDCTabScrollerRTLDefault, _super);
+            function MDCTabScrollerRTLDefault() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabScrollerRTLDefault.prototype.getScrollPositionRTL = function() {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var right = this.calculateScrollEdges_().right;
+                return Math.round(right - currentScrollLeft);
+            };
+            MDCTabScrollerRTLDefault.prototype.scrollToRTL = function(scrollX) {
+                var edges = this.calculateScrollEdges_();
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: clampedScrollLeft - currentScrollLeft
+                };
+            };
+            MDCTabScrollerRTLDefault.prototype.incrementScrollRTL = function(scrollX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: clampedScrollLeft - currentScrollLeft
+                };
+            };
+            MDCTabScrollerRTLDefault.prototype.getAnimatingScrollPosition = function(scrollX) {
+                return scrollX;
+            };
+            MDCTabScrollerRTLDefault.prototype.calculateScrollEdges_ = function() {
+                var contentWidth = this.adapter_.getScrollContentOffsetWidth();
+                var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
+                return {
+                    left: 0,
+                    right: contentWidth - rootWidth
+                };
+            };
+            MDCTabScrollerRTLDefault.prototype.clampScrollValue_ = function(scrollX) {
+                var edges = this.calculateScrollEdges_();
+                return Math.min(Math.max(edges.left, scrollX), edges.right);
+            };
+            return MDCTabScrollerRTLDefault;
+        }(rtl_scroller_1.MDCTabScrollerRTL);
+        exports.MDCTabScrollerRTLDefault = MDCTabScrollerRTLDefault;
+        exports.default = MDCTabScrollerRTLDefault;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var rtl_scroller_1 = __webpack_require__(21);
+        var MDCTabScrollerRTLNegative = function(_super) {
+            __extends(MDCTabScrollerRTLNegative, _super);
+            function MDCTabScrollerRTLNegative() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabScrollerRTLNegative.prototype.getScrollPositionRTL = function(translateX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                return Math.round(translateX - currentScrollLeft);
+            };
+            MDCTabScrollerRTLNegative.prototype.scrollToRTL = function(scrollX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(-scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: clampedScrollLeft - currentScrollLeft
+                };
+            };
+            MDCTabScrollerRTLNegative.prototype.incrementScrollRTL = function(scrollX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: clampedScrollLeft - currentScrollLeft
+                };
+            };
+            MDCTabScrollerRTLNegative.prototype.getAnimatingScrollPosition = function(scrollX, translateX) {
+                return scrollX - translateX;
+            };
+            MDCTabScrollerRTLNegative.prototype.calculateScrollEdges_ = function() {
+                var contentWidth = this.adapter_.getScrollContentOffsetWidth();
+                var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
+                return {
+                    left: rootWidth - contentWidth,
+                    right: 0
+                };
+            };
+            MDCTabScrollerRTLNegative.prototype.clampScrollValue_ = function(scrollX) {
+                var edges = this.calculateScrollEdges_();
+                return Math.max(Math.min(edges.right, scrollX), edges.left);
+            };
+            return MDCTabScrollerRTLNegative;
+        }(rtl_scroller_1.MDCTabScrollerRTL);
+        exports.MDCTabScrollerRTLNegative = MDCTabScrollerRTLNegative;
+        exports.default = MDCTabScrollerRTLNegative;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var rtl_scroller_1 = __webpack_require__(21);
+        var MDCTabScrollerRTLReverse = function(_super) {
+            __extends(MDCTabScrollerRTLReverse, _super);
+            function MDCTabScrollerRTLReverse() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTabScrollerRTLReverse.prototype.getScrollPositionRTL = function(translateX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                return Math.round(currentScrollLeft - translateX);
+            };
+            MDCTabScrollerRTLReverse.prototype.scrollToRTL = function(scrollX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: currentScrollLeft - clampedScrollLeft
+                };
+            };
+            MDCTabScrollerRTLReverse.prototype.incrementScrollRTL = function(scrollX) {
+                var currentScrollLeft = this.adapter_.getScrollAreaScrollLeft();
+                var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);
+                return {
+                    finalScrollPosition: clampedScrollLeft,
+                    scrollDelta: currentScrollLeft - clampedScrollLeft
+                };
+            };
+            MDCTabScrollerRTLReverse.prototype.getAnimatingScrollPosition = function(scrollX, translateX) {
+                return scrollX + translateX;
+            };
+            MDCTabScrollerRTLReverse.prototype.calculateScrollEdges_ = function() {
+                var contentWidth = this.adapter_.getScrollContentOffsetWidth();
+                var rootWidth = this.adapter_.getScrollAreaOffsetWidth();
+                return {
+                    left: contentWidth - rootWidth,
+                    right: 0
+                };
+            };
+            MDCTabScrollerRTLReverse.prototype.clampScrollValue_ = function(scrollX) {
+                var edges = this.calculateScrollEdges_();
+                return Math.min(Math.max(edges.right, scrollX), edges.left);
+            };
+            return MDCTabScrollerRTLReverse;
+        }(rtl_scroller_1.MDCTabScrollerRTL);
+        exports.MDCTabScrollerRTLReverse = MDCTabScrollerRTLReverse;
+        exports.default = MDCTabScrollerRTLReverse;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ACTIVE: "mdc-tab-indicator--active",
+            FADE: "mdc-tab-indicator--fade",
+            NO_TRANSITION: "mdc-tab-indicator--no-transition"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            CONTENT_SELECTOR: ".mdc-tab-indicator__content"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ACTIVE: "mdc-tab--active"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ARIA_SELECTED: "aria-selected",
+            CONTENT_SELECTOR: ".mdc-tab__content",
+            INTERACTED_EVENT: "MDCTab:interacted",
+            RIPPLE_SELECTOR: ".mdc-tab__ripple",
+            TABINDEX: "tabIndex",
+            TAB_INDICATOR_SELECTOR: ".mdc-tab-indicator"
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            ARROW_LEFT_KEY: "ArrowLeft",
+            ARROW_RIGHT_KEY: "ArrowRight",
+            END_KEY: "End",
+            ENTER_KEY: "Enter",
+            HOME_KEY: "Home",
+            SPACE_KEY: "Space",
+            TAB_ACTIVATED_EVENT: "MDCTabBar:activated",
+            TAB_SCROLLER_SELECTOR: ".mdc-tab-scroller",
+            TAB_SELECTOR: ".mdc-tab"
+        };
+        exports.strings = strings;
+        var numbers = {
+            ARROW_LEFT_KEYCODE: 37,
+            ARROW_RIGHT_KEYCODE: 39,
+            END_KEYCODE: 35,
+            ENTER_KEYCODE: 13,
+            EXTRA_SCROLL_AMOUNT: 20,
+            HOME_KEYCODE: 36,
+            SPACE_KEYCODE: 32
+        };
+        exports.numbers = numbers;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-        _this3.executedLastChange_ = hasScrolledOutOfThreshold;
-        _this3.adapter_.notifyChange({ flexibleExpansionRatio: flexibleExpansionRatio });
-      });
-    }
-  }, {
-    key: 'scrolledOutOfThreshold_',
-    value: function scrolledOutOfThreshold_(scrollTop) {
-      return scrollTop > this.calculations_.scrollThreshold;
-    }
-  }, {
-    key: 'initKeyRatio_',
-    value: function initKeyRatio_() {
-      var toolbarRowHeight = this.getRowHeight_();
-      var firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;
-      this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;
-      this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;
-      this.calculations_.maxTranslateYRatio = this.fixedLastrow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;
-      this.calculations_.scrollThresholdRatio = (this.fixedLastrow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;
-    }
-  }, {
-    key: 'getRowHeight_',
-    value: function getRowHeight_() {
-      var breakpoint = MDCToolbarFoundation.numbers.TOOLBAR_MOBILE_BREAKPOINT;
-      return this.adapter_.getViewportWidth() < breakpoint ? MDCToolbarFoundation.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : MDCToolbarFoundation.numbers.TOOLBAR_ROW_HEIGHT;
-    }
-  }, {
-    key: 'updateToolbarFlexibleState_',
-    value: function updateToolbarFlexibleState_(flexibleExpansionRatio) {
-      this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);
-      this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);
-      if (flexibleExpansionRatio === 1) {
-        this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MAX);
-      } else if (flexibleExpansionRatio === 0) {
-        this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FLEXIBLE_MIN);
-      }
-    }
-  }, {
-    key: 'updateToolbarFixedState_',
-    value: function updateToolbarFixedState_(scrollTop) {
-      var translateDistance = Math.max(0, Math.min(scrollTop - this.calculations_.flexibleExpansionHeight, this.calculations_.maxTranslateYDistance));
-      this.adapter_.setStyle('transform', 'translateY(' + -translateDistance + 'px)');
-
-      if (translateDistance === this.calculations_.maxTranslateYDistance) {
-        this.adapter_.addClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);
-      } else {
-        this.adapter_.removeClass(MDCToolbarFoundation.cssClasses.FIXED_AT_LAST_ROW);
-      }
-    }
-  }, {
-    key: 'updateFlexibleRowElementStyles_',
-    value: function updateFlexibleRowElementStyles_(flexibleExpansionRatio) {
-      if (this.fixed_) {
-        var height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;
-        this.adapter_.setStyleForFlexibleRowElement('height', height + this.calculations_.toolbarRowHeight + 'px');
-      }
-      if (this.useFlexDefaultBehavior_) {
-        this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);
-      }
-    }
-  }, {
-    key: 'updateElementStylesDefaultBehavior_',
-    value: function updateElementStylesDefaultBehavior_(flexibleExpansionRatio) {
-      var maxTitleSize = MDCToolbarFoundation.numbers.MAX_TITLE_SIZE;
-      var minTitleSize = MDCToolbarFoundation.numbers.MIN_TITLE_SIZE;
-      var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;
-
-      this.adapter_.setStyleForTitleElement('font-size', currentTitleSize + 'rem');
-    }
-  }]);
-
-  return MDCToolbarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_0__material_base_foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCToolbarFoundation);
-
-/***/ }),
-/* 160 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return cssClasses; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return strings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return numbers; });
-/**
- * @license
- * Copyright 2017 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-var cssClasses = {
-  FIXED: 'mdc-toolbar--fixed',
-  FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',
-  FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',
-  TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',
-  FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',
-  FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',
-  FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized'
-};
-
-var strings = {
-  TITLE_SELECTOR: '.mdc-toolbar__title',
-  ICON_SELECTOR: '.mdc-toolbar__icon',
-  FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',
-  CHANGE_EVENT: 'MDCToolbar:change'
-};
-
-var numbers = {
-  MAX_TITLE_SIZE: 2.125,
-  MIN_TITLE_SIZE: 1.25,
-  TOOLBAR_ROW_HEIGHT: 64,
-  TOOLBAR_ROW_MOBILE_HEIGHT: 56,
-  TOOLBAR_MOBILE_BREAKPOINT: 600
-};
-
-/***/ }),
-/* 161 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBar", function() { return MDCTopAppBar; });
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__material_base_component__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(7);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation__ = __webpack_require__(12);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__ = __webpack_require__(162);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__short_foundation__ = __webpack_require__(163);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__standard_foundation__ = __webpack_require__(164);
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBarBaseFoundation", function() { return __WEBPACK_IMPORTED_MODULE_4__foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_7__standard_foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCFixedTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__["a"]; });
-/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "MDCShortTopAppBarFoundation", function() { return __WEBPACK_IMPORTED_MODULE_6__short_foundation__["a"]; });
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * @extends {MDCComponent<!MDCTopAppBarBaseFoundation>}
- * @final
- */
-
-var MDCTopAppBar = function (_MDCComponent) {
-  _inherits(MDCTopAppBar, _MDCComponent);
-
-  /**
-   * @param {...?} args
-   */
-  function MDCTopAppBar() {
-    var _ref;
-
-    _classCallCheck(this, MDCTopAppBar);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    /** @private {?Element} */
-    var _this = _possibleConstructorReturn(this, (_ref = MDCTopAppBar.__proto__ || Object.getPrototypeOf(MDCTopAppBar)).call.apply(_ref, [this].concat(args)));
-
-    _this.navIcon_;
-    /** @type {?Array<MDCRipple>} */
-    _this.iconRipples_;
-    /** @type {Object} */
-    _this.scrollTarget_;
-    return _this;
-  }
-
-  _createClass(MDCTopAppBar, [{
-    key: 'initialize',
-    value: function initialize() {
-      var rippleFactory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (el) {
-        return __WEBPACK_IMPORTED_MODULE_2__material_ripple_index__["MDCRipple"].attachTo(el);
-      };
-
-      this.navIcon_ = this.root_.querySelector(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].NAVIGATION_ICON_SELECTOR);
-
-      // Get all icons in the toolbar and instantiate the ripples
-      var icons = [].slice.call(this.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ACTION_ITEM_SELECTOR));
-      if (this.navIcon_) {
-        icons.push(this.navIcon_);
-      }
-
-      this.iconRipples_ = icons.map(function (icon) {
-        var ripple = rippleFactory(icon);
-        ripple.unbounded = true;
-        return ripple;
-      });
-
-      this.scrollTarget_ = window;
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      this.iconRipples_.forEach(function (iconRipple) {
-        return iconRipple.destroy();
-      });
-      _get(MDCTopAppBar.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBar.prototype), 'destroy', this).call(this);
-    }
-  }, {
-    key: 'setScrollTarget',
-    value: function setScrollTarget(target) {
-      this.foundation_.destroyScrollHandler();
-      this.scrollTarget_ = target;
-      this.foundation_.initScrollHandler();
-    }
-
-    /**
-     * @param {!Element} root
-     * @return {!MDCTopAppBar}
-     */
-
-  }, {
-    key: 'getDefaultFoundation',
-
-
-    /**
-     * @return {!MDCTopAppBarBaseFoundation}
-     */
-    value: function getDefaultFoundation() {
-      var _this2 = this;
-
-      /** @type {!MDCTopAppBarAdapter} */
-      var adapter = /** @type {!MDCTopAppBarAdapter} */_extends({
-        hasClass: function hasClass(className) {
-          return _this2.root_.classList.contains(className);
-        },
-        addClass: function addClass(className) {
-          return _this2.root_.classList.add(className);
-        },
-        removeClass: function removeClass(className) {
-          return _this2.root_.classList.remove(className);
-        },
-        setStyle: function setStyle(property, value) {
-          return _this2.root_.style.setProperty(property, value);
-        },
-        getTopAppBarHeight: function getTopAppBarHeight() {
-          return _this2.root_.clientHeight;
-        },
-        registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler(evtType, handler) {
-          if (_this2.navIcon_) {
-            _this2.navIcon_.addEventListener(evtType, handler);
-          }
-        },
-        deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler(evtType, handler) {
-          if (_this2.navIcon_) {
-            _this2.navIcon_.removeEventListener(evtType, handler);
-          }
-        },
-        notifyNavigationIconClicked: function notifyNavigationIconClicked() {
-          _this2.emit(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].NAVIGATION_EVENT, {});
-        },
-        registerScrollHandler: function registerScrollHandler(handler) {
-          return _this2.scrollTarget_.addEventListener('scroll', handler);
-        },
-        deregisterScrollHandler: function deregisterScrollHandler(handler) {
-          return _this2.scrollTarget_.removeEventListener('scroll', handler);
-        },
-        registerResizeHandler: function registerResizeHandler(handler) {
-          return window.addEventListener('resize', handler);
-        },
-        deregisterResizeHandler: function deregisterResizeHandler(handler) {
-          return window.removeEventListener('resize', handler);
-        },
-        getViewportScrollY: function getViewportScrollY() {
-          return _this2.scrollTarget_[_this2.scrollTarget_ === window ? 'pageYOffset' : 'scrollTop'];
-        },
-        getTotalActionItems: function getTotalActionItems() {
-          return _this2.root_.querySelectorAll(__WEBPACK_IMPORTED_MODULE_3__constants__["c" /* strings */].ACTION_ITEM_SELECTOR).length;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(65));
+        __export(__webpack_require__(9));
+        __export(__webpack_require__(66));
+        __export(__webpack_require__(67));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      });
-
-      /** @type {!MDCTopAppBarBaseFoundation} */
-      var foundation = void 0;
-      if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].SHORT_CLASS)) {
-        foundation = new __WEBPACK_IMPORTED_MODULE_6__short_foundation__["a" /* default */](adapter);
-      } else if (this.root_.classList.contains(__WEBPACK_IMPORTED_MODULE_3__constants__["a" /* cssClasses */].FIXED_CLASS)) {
-        foundation = new __WEBPACK_IMPORTED_MODULE_5__fixed_foundation__["a" /* default */](adapter);
-      } else {
-        foundation = new __WEBPACK_IMPORTED_MODULE_7__standard_foundation__["a" /* default */](adapter);
-      }
-
-      return foundation;
-    }
-  }], [{
-    key: 'attachTo',
-    value: function attachTo(root) {
-      return new MDCTopAppBar(root);
-    }
-  }]);
-
-  return MDCTopAppBar;
-}(__WEBPACK_IMPORTED_MODULE_1__material_base_component__["a" /* default */]);
-
-
-
-/***/ }),
-/* 162 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(7);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__adapter__ = __webpack_require__(6);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation__ = __webpack_require__(12);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCTopAppBarFoundation<!MDCFixedTopAppBarFoundation>}
- * @final
- */
-
-var MDCFixedTopAppBarFoundation = function (_MDCTopAppBarFoundati) {
-  _inherits(MDCFixedTopAppBarFoundation, _MDCTopAppBarFoundati);
-
-  /**
-   * @param {!MDCTopAppBarAdapter} adapter
-   */
-  function MDCFixedTopAppBarFoundation(adapter) {
-    _classCallCheck(this, MDCFixedTopAppBarFoundation);
-
-    /** State variable for the previous scroll iteration top app bar state */
-    var _this = _possibleConstructorReturn(this, (MDCFixedTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation)).call(this, adapter));
-
-    _this.wasScrolled_ = false;
-
-    _this.scrollHandler_ = function () {
-      return _this.fixedScrollHandler_();
-    };
-    return _this;
-  }
-
-  _createClass(MDCFixedTopAppBarFoundation, [{
-    key: 'init',
-    value: function init() {
-      _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'init', this).call(this);
-      this.adapter_.registerScrollHandler(this.scrollHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCFixedTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCFixedTopAppBarFoundation.prototype), 'destroy', this).call(this);
-      this.adapter_.deregisterScrollHandler(this.scrollHandler_);
-    }
-
-    /**
-     * Scroll handler for applying/removing the modifier class
-     * on the fixed top app bar.
-     */
-
-  }, {
-    key: 'fixedScrollHandler_',
-    value: function fixedScrollHandler_() {
-      var currentScroll = this.adapter_.getViewportScrollY();
-
-      if (currentScroll <= 0) {
-        if (this.wasScrolled_) {
-          this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FIXED_SCROLLED_CLASS);
-          this.wasScrolled_ = false;
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var util = __importStar(__webpack_require__(63));
+        exports.util = util;
+        __export(__webpack_require__(60));
+        __export(__webpack_require__(61));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      } else {
-        if (!this.wasScrolled_) {
-          this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_0__constants__["a" /* cssClasses */].FIXED_SCROLLED_CLASS);
-          this.wasScrolled_ = true;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(64));
+        __export(__webpack_require__(22));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }
-    }
-  }]);
-
-  return MDCFixedTopAppBarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_2__foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCFixedTopAppBarFoundation);
-
-/***/ }),
-/* 163 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(7);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-/**
- * @extends {MDCTopAppBarBaseFoundation<!MDCShortTopAppBarFoundation>}
- * @final
- */
-
-var MDCShortTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {
-  _inherits(MDCShortTopAppBarFoundation, _MDCTopAppBarBaseFoun);
-
-  /**
-   * @param {!MDCTopAppBarAdapter} adapter
-   */
-  function MDCShortTopAppBarFoundation(adapter) {
-    _classCallCheck(this, MDCShortTopAppBarFoundation);
-
-    // State variable for the current top app bar state
-    var _this = _possibleConstructorReturn(this, (MDCShortTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation)).call(this, adapter));
-
-    _this.isCollapsed = false;
-
-    _this.scrollHandler_ = function () {
-      return _this.shortAppBarScrollHandler_();
-    };
-    return _this;
-  }
-
-  _createClass(MDCShortTopAppBarFoundation, [{
-    key: 'init',
-    value: function init() {
-      _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'init', this).call(this);
-      var isAlwaysCollapsed = this.adapter_.hasClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
-
-      if (this.adapter_.getTotalActionItems() > 0) {
-        this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_HAS_ACTION_ITEM_CLASS);
-      }
-
-      if (!isAlwaysCollapsed) {
-        this.adapter_.registerScrollHandler(this.scrollHandler_);
-        this.shortAppBarScrollHandler_();
-      }
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCShortTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCShortTopAppBarFoundation.prototype), 'destroy', this).call(this);
-      this.adapter_.deregisterScrollHandler(this.scrollHandler_);
-    }
-
-    /**
-     * Scroll handler for applying/removing the collapsed modifier class
-     * on the short top app bar.
-     * @private
-     */
-
-  }, {
-    key: 'shortAppBarScrollHandler_',
-    value: function shortAppBarScrollHandler_() {
-      var currentScroll = this.adapter_.getViewportScrollY();
-
-      if (currentScroll <= 0) {
-        if (this.isCollapsed) {
-          this.adapter_.removeClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
-          this.isCollapsed = false;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(151));
+        __export(__webpack_require__(71));
+        __export(__webpack_require__(155));
+        __export(__webpack_require__(156));
+        __export(__webpack_require__(157));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        var __assign = this && this.__assign || function() {
+            __assign = Object.assign || function(t) {
+                for (var s, i = 1, n = arguments.length; i < n; i++) {
+                    s = arguments[i];
+                    for (var p in s) {
+                        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+                    }
+                }
+                return t;
+            };
+            return __assign.apply(this, arguments);
+        };
+        var __importStar = this && this.__importStar || function(mod) {
+            if (mod && mod.__esModule) return mod;
+            var result = {};
+            if (mod != null) for (var k in mod) {
+                if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+            }
+            result["default"] = mod;
+            return result;
+        };
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var ponyfill = __importStar(__webpack_require__(3));
+        var component_2 = __webpack_require__(15);
+        var component_3 = __webpack_require__(17);
+        var component_4 = __webpack_require__(19);
+        var component_5 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(4);
+        var component_6 = __webpack_require__(69);
+        var foundation_2 = __webpack_require__(23);
+        var constants_1 = __webpack_require__(70);
+        var foundation_3 = __webpack_require__(71);
+        var component_7 = __webpack_require__(72);
+        var foundation_4 = __webpack_require__(24);
+        var component_8 = __webpack_require__(73);
+        var MDCTextField = function(_super) {
+            __extends(MDCTextField, _super);
+            function MDCTextField() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTextField.attachTo = function(root) {
+                return new MDCTextField(root);
+            };
+            MDCTextField.prototype.initialize = function(rippleFactory, lineRippleFactory, helperTextFactory, characterCounterFactory, iconFactory, labelFactory, outlineFactory) {
+                if (rippleFactory === void 0) {
+                    rippleFactory = function rippleFactory(el, foundation) {
+                        return new component_5.MDCRipple(el, foundation);
+                    };
+                }
+                if (lineRippleFactory === void 0) {
+                    lineRippleFactory = function lineRippleFactory(el) {
+                        return new component_3.MDCLineRipple(el);
+                    };
+                }
+                if (helperTextFactory === void 0) {
+                    helperTextFactory = function helperTextFactory(el) {
+                        return new component_7.MDCTextFieldHelperText(el);
+                    };
+                }
+                if (characterCounterFactory === void 0) {
+                    characterCounterFactory = function characterCounterFactory(el) {
+                        return new component_6.MDCTextFieldCharacterCounter(el);
+                    };
+                }
+                if (iconFactory === void 0) {
+                    iconFactory = function iconFactory(el) {
+                        return new component_8.MDCTextFieldIcon(el);
+                    };
+                }
+                if (labelFactory === void 0) {
+                    labelFactory = function labelFactory(el) {
+                        return new component_2.MDCFloatingLabel(el);
+                    };
+                }
+                if (outlineFactory === void 0) {
+                    outlineFactory = function outlineFactory(el) {
+                        return new component_4.MDCNotchedOutline(el);
+                    };
+                }
+                this.input_ = this.root_.querySelector(constants_1.strings.INPUT_SELECTOR);
+                var labelElement = this.root_.querySelector(constants_1.strings.LABEL_SELECTOR);
+                this.label_ = labelElement ? labelFactory(labelElement) : null;
+                var lineRippleElement = this.root_.querySelector(constants_1.strings.LINE_RIPPLE_SELECTOR);
+                this.lineRipple_ = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;
+                var outlineElement = this.root_.querySelector(constants_1.strings.OUTLINE_SELECTOR);
+                this.outline_ = outlineElement ? outlineFactory(outlineElement) : null;
+                var helperTextStrings = foundation_4.MDCTextFieldHelperTextFoundation.strings;
+                var nextElementSibling = this.root_.nextElementSibling;
+                var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(constants_1.cssClasses.HELPER_LINE);
+                var helperTextEl = hasHelperLine && nextElementSibling && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);
+                this.helperText_ = helperTextEl ? helperTextFactory(helperTextEl) : null;
+                var characterCounterStrings = foundation_2.MDCTextFieldCharacterCounterFoundation.strings;
+                var characterCounterEl = this.root_.querySelector(characterCounterStrings.ROOT_SELECTOR);
+                if (!characterCounterEl && hasHelperLine && nextElementSibling) {
+                    characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);
+                }
+                this.characterCounter_ = characterCounterEl ? characterCounterFactory(characterCounterEl) : null;
+                this.leadingIcon_ = null;
+                this.trailingIcon_ = null;
+                var iconElements = this.root_.querySelectorAll(constants_1.strings.ICON_SELECTOR);
+                if (iconElements.length > 0) {
+                    if (iconElements.length > 1) {
+                        this.leadingIcon_ = iconFactory(iconElements[0]);
+                        this.trailingIcon_ = iconFactory(iconElements[1]);
+                    } else {
+                        if (this.root_.classList.contains(constants_1.cssClasses.WITH_LEADING_ICON)) {
+                            this.leadingIcon_ = iconFactory(iconElements[0]);
+                        } else {
+                            this.trailingIcon_ = iconFactory(iconElements[0]);
+                        }
+                    }
+                }
+                this.ripple = this.createRipple_(rippleFactory);
+            };
+            MDCTextField.prototype.destroy = function() {
+                if (this.ripple) {
+                    this.ripple.destroy();
+                }
+                if (this.lineRipple_) {
+                    this.lineRipple_.destroy();
+                }
+                if (this.helperText_) {
+                    this.helperText_.destroy();
+                }
+                if (this.characterCounter_) {
+                    this.characterCounter_.destroy();
+                }
+                if (this.leadingIcon_) {
+                    this.leadingIcon_.destroy();
+                }
+                if (this.trailingIcon_) {
+                    this.trailingIcon_.destroy();
+                }
+                if (this.label_) {
+                    this.label_.destroy();
+                }
+                if (this.outline_) {
+                    this.outline_.destroy();
+                }
+                _super.prototype.destroy.call(this);
+            };
+            MDCTextField.prototype.initialSyncWithDOM = function() {
+                this.disabled = this.input_.disabled;
+            };
+            Object.defineProperty(MDCTextField.prototype, "value", {
+                get: function get() {
+                    return this.foundation_.getValue();
+                },
+                set: function set(value) {
+                    this.foundation_.setValue(value);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "disabled", {
+                get: function get() {
+                    return this.foundation_.isDisabled();
+                },
+                set: function set(disabled) {
+                    this.foundation_.setDisabled(disabled);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "valid", {
+                get: function get() {
+                    return this.foundation_.isValid();
+                },
+                set: function set(valid) {
+                    this.foundation_.setValid(valid);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "required", {
+                get: function get() {
+                    return this.input_.required;
+                },
+                set: function set(required) {
+                    this.input_.required = required;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "pattern", {
+                get: function get() {
+                    return this.input_.pattern;
+                },
+                set: function set(pattern) {
+                    this.input_.pattern = pattern;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "minLength", {
+                get: function get() {
+                    return this.input_.minLength;
+                },
+                set: function set(minLength) {
+                    this.input_.minLength = minLength;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "maxLength", {
+                get: function get() {
+                    return this.input_.maxLength;
+                },
+                set: function set(maxLength) {
+                    if (maxLength < 0) {
+                        this.input_.removeAttribute("maxLength");
+                    } else {
+                        this.input_.maxLength = maxLength;
+                    }
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "min", {
+                get: function get() {
+                    return this.input_.min;
+                },
+                set: function set(min) {
+                    this.input_.min = min;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "max", {
+                get: function get() {
+                    return this.input_.max;
+                },
+                set: function set(max) {
+                    this.input_.max = max;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "step", {
+                get: function get() {
+                    return this.input_.step;
+                },
+                set: function set(step) {
+                    this.input_.step = step;
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "helperTextContent", {
+                set: function set(content) {
+                    this.foundation_.setHelperTextContent(content);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "leadingIconAriaLabel", {
+                set: function set(label) {
+                    this.foundation_.setLeadingIconAriaLabel(label);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "leadingIconContent", {
+                set: function set(content) {
+                    this.foundation_.setLeadingIconContent(content);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "trailingIconAriaLabel", {
+                set: function set(label) {
+                    this.foundation_.setTrailingIconAriaLabel(label);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "trailingIconContent", {
+                set: function set(content) {
+                    this.foundation_.setTrailingIconContent(content);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            Object.defineProperty(MDCTextField.prototype, "useNativeValidation", {
+                set: function set(useNativeValidation) {
+                    this.foundation_.setUseNativeValidation(useNativeValidation);
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCTextField.prototype.focus = function() {
+                this.input_.focus();
+            };
+            MDCTextField.prototype.layout = function() {
+                var openNotch = this.foundation_.shouldFloat;
+                this.foundation_.notchOutline(openNotch);
+            };
+            MDCTextField.prototype.getDefaultFoundation = function() {
+                var adapter = __assign({}, this.getRootAdapterMethods_(), this.getInputAdapterMethods_(), this.getLabelAdapterMethods_(), this.getLineRippleAdapterMethods_(), this.getOutlineAdapterMethods_());
+                return new foundation_3.MDCTextFieldFoundation(adapter, this.getFoundationMap_());
+            };
+            MDCTextField.prototype.getRootAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    registerTextFieldInteractionHandler: function registerTextFieldInteractionHandler(evtType, handler) {
+                        return _this.listen(evtType, handler);
+                    },
+                    deregisterTextFieldInteractionHandler: function deregisterTextFieldInteractionHandler(evtType, handler) {
+                        return _this.unlisten(evtType, handler);
+                    },
+                    registerValidationAttributeChangeHandler: function registerValidationAttributeChangeHandler(handler) {
+                        var getAttributesList = function getAttributesList(mutationsList) {
+                            return mutationsList.map(function(mutation) {
+                                return mutation.attributeName;
+                            }).filter(function(attributeName) {
+                                return attributeName;
+                            });
+                        };
+                        var observer = new MutationObserver(function(mutationsList) {
+                            return handler(getAttributesList(mutationsList));
+                        });
+                        var config = {
+                            attributes: true
+                        };
+                        observer.observe(_this.input_, config);
+                        return observer;
+                    },
+                    deregisterValidationAttributeChangeHandler: function deregisterValidationAttributeChangeHandler(observer) {
+                        return observer.disconnect();
+                    }
+                };
+            };
+            MDCTextField.prototype.getInputAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    getNativeInput: function getNativeInput() {
+                        return _this.input_;
+                    },
+                    isFocused: function isFocused() {
+                        return document.activeElement === _this.input_;
+                    },
+                    registerInputInteractionHandler: function registerInputInteractionHandler(evtType, handler) {
+                        return _this.input_.addEventListener(evtType, handler);
+                    },
+                    deregisterInputInteractionHandler: function deregisterInputInteractionHandler(evtType, handler) {
+                        return _this.input_.removeEventListener(evtType, handler);
+                    }
+                };
+            };
+            MDCTextField.prototype.getLabelAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    floatLabel: function floatLabel(shouldFloat) {
+                        return _this.label_ && _this.label_.float(shouldFloat);
+                    },
+                    getLabelWidth: function getLabelWidth() {
+                        return _this.label_ ? _this.label_.getWidth() : 0;
+                    },
+                    hasLabel: function hasLabel() {
+                        return Boolean(_this.label_);
+                    },
+                    shakeLabel: function shakeLabel(shouldShake) {
+                        return _this.label_ && _this.label_.shake(shouldShake);
+                    }
+                };
+            };
+            MDCTextField.prototype.getLineRippleAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    activateLineRipple: function activateLineRipple() {
+                        if (_this.lineRipple_) {
+                            _this.lineRipple_.activate();
+                        }
+                    },
+                    deactivateLineRipple: function deactivateLineRipple() {
+                        if (_this.lineRipple_) {
+                            _this.lineRipple_.deactivate();
+                        }
+                    },
+                    setLineRippleTransformOrigin: function setLineRippleTransformOrigin(normalizedX) {
+                        if (_this.lineRipple_) {
+                            _this.lineRipple_.setRippleCenter(normalizedX);
+                        }
+                    }
+                };
+            };
+            MDCTextField.prototype.getOutlineAdapterMethods_ = function() {
+                var _this = this;
+                return {
+                    closeOutline: function closeOutline() {
+                        return _this.outline_ && _this.outline_.closeNotch();
+                    },
+                    hasOutline: function hasOutline() {
+                        return Boolean(_this.outline_);
+                    },
+                    notchOutline: function notchOutline(labelWidth) {
+                        return _this.outline_ && _this.outline_.notch(labelWidth);
+                    }
+                };
+            };
+            MDCTextField.prototype.getFoundationMap_ = function() {
+                return {
+                    characterCounter: this.characterCounter_ ? this.characterCounter_.foundation : undefined,
+                    helperText: this.helperText_ ? this.helperText_.foundation : undefined,
+                    leadingIcon: this.leadingIcon_ ? this.leadingIcon_.foundation : undefined,
+                    trailingIcon: this.trailingIcon_ ? this.trailingIcon_.foundation : undefined
+                };
+            };
+            MDCTextField.prototype.createRipple_ = function(rippleFactory) {
+                var _this = this;
+                var isTextArea = this.root_.classList.contains(constants_1.cssClasses.TEXTAREA);
+                var isOutlined = this.root_.classList.contains(constants_1.cssClasses.OUTLINED);
+                if (isTextArea || isOutlined) {
+                    return null;
+                }
+                var adapter = __assign({}, component_5.MDCRipple.createAdapter(this), {
+                    isSurfaceActive: function isSurfaceActive() {
+                        return ponyfill.matches(_this.input_, ":active");
+                    },
+                    registerInteractionHandler: function registerInteractionHandler(evtType, handler) {
+                        return _this.input_.addEventListener(evtType, handler);
+                    },
+                    deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {
+                        return _this.input_.removeEventListener(evtType, handler);
+                    }
+                });
+                return rippleFactory(this.root_, new foundation_1.MDCRippleFoundation(adapter));
+            };
+            return MDCTextField;
+        }(component_1.MDCComponent);
+        exports.MDCTextField = MDCTextField;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            ROOT: "mdc-text-field-character-counter"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ROOT_SELECTOR: "." + cssClasses.ROOT
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var cssClasses = {
+            HELPER_TEXT_PERSISTENT: "mdc-text-field-helper-text--persistent",
+            HELPER_TEXT_VALIDATION_MSG: "mdc-text-field-helper-text--validation-msg",
+            ROOT: "mdc-text-field-helper-text"
+        };
+        exports.cssClasses = cssClasses;
+        var strings = {
+            ARIA_HIDDEN: "aria-hidden",
+            ROLE: "role",
+            ROOT_SELECTOR: "." + cssClasses.ROOT
+        };
+        exports.strings = strings;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var strings = {
+            ICON_EVENT: "MDCTextField:icon",
+            ICON_ROLE: "button"
+        };
+        exports.strings = strings;
+        var cssClasses = {
+            ROOT: "mdc-text-field__icon"
+        };
+        exports.cssClasses = cssClasses;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      } else {
-        if (!this.isCollapsed) {
-          this.adapter_.addClass(__WEBPACK_IMPORTED_MODULE_2__constants__["a" /* cssClasses */].SHORT_COLLAPSED_CLASS);
-          this.isCollapsed = true;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(69));
+        __export(__webpack_require__(23));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }
-    }
-  }]);
-
-  return MDCShortTopAppBarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCShortTopAppBarFoundation);
-
-/***/ }),
-/* 164 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__adapter__ = __webpack_require__(6);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation__ = __webpack_require__(12);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(7);
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/**
- * @license
- * Copyright 2018 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
-
-
-var INITIAL_VALUE = 0;
-/**
- * @extends {MDCTopAppBarBaseFoundation<!MDCTopAppBarFoundation>}
- * @final
- */
-
-var MDCTopAppBarFoundation = function (_MDCTopAppBarBaseFoun) {
-  _inherits(MDCTopAppBarFoundation, _MDCTopAppBarBaseFoun);
-
-  /**
-   * @param {!MDCTopAppBarAdapter} adapter
-   */
-  function MDCTopAppBarFoundation(adapter) {
-    _classCallCheck(this, MDCTopAppBarFoundation);
-
-    /**
-     * Used for diffs of current scroll position vs previous scroll position
-     * @private {number}
-     */
-    var _this = _possibleConstructorReturn(this, (MDCTopAppBarFoundation.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation)).call(this, adapter));
-
-    _this.lastScrollPosition_ = _this.adapter_.getViewportScrollY();
-
-    /**
-     * Used to verify when the top app bar is completely showing or completely hidden
-     * @private {number}
-     */
-    _this.topAppBarHeight_ = _this.adapter_.getTopAppBarHeight();
-
-    /**
-     * wasDocked_ is used to indicate if the top app bar was docked in the previous
-     * scroll handler iteration.
-     * @private {boolean}
-     */
-    _this.wasDocked_ = true;
-
-    /**
-     * isDockedShowing_ is used to indicate if the top app bar is docked in the fully
-     * shown position.
-     * @private {boolean}
-     */
-    _this.isDockedShowing_ = true;
-
-    /**
-     * Variable for current scroll position of the top app bar
-     * @private {number}
-     */
-    _this.currentAppBarOffsetTop_ = 0;
-
-    /**
-     * Used to prevent the top app bar from being scrolled out of view during resize events
-     * @private {boolean} */
-    _this.isCurrentlyBeingResized_ = false;
-
-    /**
-     * The timeout that's used to throttle the resize events
-     * @private {number}
-     */
-    _this.resizeThrottleId_ = INITIAL_VALUE;
-
-    /**
-     * The timeout that's used to debounce toggling the isCurrentlyBeingResized_ variable after a resize
-     * @private {number}
-     */
-    _this.resizeDebounceId_ = INITIAL_VALUE;
-
-    _this.scrollHandler_ = function () {
-      return _this.topAppBarScrollHandler_();
-    };
-    _this.resizeHandler_ = function () {
-      return _this.topAppBarResizeHandler_();
-    };
-    return _this;
-  }
-
-  _createClass(MDCTopAppBarFoundation, [{
-    key: 'init',
-    value: function init() {
-      _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'init', this).call(this);
-      this.adapter_.registerScrollHandler(this.scrollHandler_);
-      this.adapter_.registerResizeHandler(this.resizeHandler_);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy() {
-      _get(MDCTopAppBarFoundation.prototype.__proto__ || Object.getPrototypeOf(MDCTopAppBarFoundation.prototype), 'destroy', this).call(this);
-      this.adapter_.deregisterScrollHandler(this.scrollHandler_);
-      this.adapter_.deregisterResizeHandler(this.resizeHandler_);
-      this.adapter_.setStyle('top', '');
-    }
-
-    /**
-     * Function to determine if the DOM needs to update.
-     * @return {boolean}
-     * @private
-     */
-
-  }, {
-    key: 'checkForUpdate_',
-    value: function checkForUpdate_() {
-      var offscreenBoundaryTop = -this.topAppBarHeight_;
-      var hasAnyPixelsOffscreen = this.currentAppBarOffsetTop_ < 0;
-      var hasAnyPixelsOnscreen = this.currentAppBarOffsetTop_ > offscreenBoundaryTop;
-      var partiallyShowing = hasAnyPixelsOffscreen && hasAnyPixelsOnscreen;
-
-      // If it's partially showing, it can't be docked.
-      if (partiallyShowing) {
-        this.wasDocked_ = false;
-      } else {
-        // Not previously docked and not partially showing, it's now docked.
-        if (!this.wasDocked_) {
-          this.wasDocked_ = true;
-          return true;
-        } else if (this.isDockedShowing_ !== hasAnyPixelsOnscreen) {
-          this.isDockedShowing_ = hasAnyPixelsOnscreen;
-          return true;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(72));
+        __export(__webpack_require__(24));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-      }
-
-      return partiallyShowing;
-    }
-
-    /**
-     * Function to move the top app bar if needed.
-     * @private
-     */
-
-  }, {
-    key: 'moveTopAppBar_',
-    value: function moveTopAppBar_() {
-      if (this.checkForUpdate_()) {
-        // Once the top app bar is fully hidden we use the max potential top app bar height as our offset
-        // so the top app bar doesn't show if the window resizes and the new height > the old height.
-        var offset = this.currentAppBarOffsetTop_;
-        if (Math.abs(offset) >= this.topAppBarHeight_) {
-          offset = -__WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].MAX_TOP_APP_BAR_HEIGHT;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(73));
+        __export(__webpack_require__(74));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-
-        this.adapter_.setStyle('top', offset + 'px');
-      }
-    }
-
-    /**
-     * Scroll handler for the default scroll behavior of the top app bar.
-     * @private
-     */
-
-  }, {
-    key: 'topAppBarScrollHandler_',
-    value: function topAppBarScrollHandler_() {
-      var currentScrollPosition = Math.max(this.adapter_.getViewportScrollY(), 0);
-      var diff = currentScrollPosition - this.lastScrollPosition_;
-      this.lastScrollPosition_ = currentScrollPosition;
-
-      // If the window is being resized the lastScrollPosition_ needs to be updated but the
-      // current scroll of the top app bar should stay in the same position.
-      if (!this.isCurrentlyBeingResized_) {
-        this.currentAppBarOffsetTop_ -= diff;
-
-        if (this.currentAppBarOffsetTop_ > 0) {
-          this.currentAppBarOffsetTop_ = 0;
-        } else if (Math.abs(this.currentAppBarOffsetTop_) > this.topAppBarHeight_) {
-          this.currentAppBarOffsetTop_ = -this.topAppBarHeight_;
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(159));
+        __export(__webpack_require__(75));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var foundation_1 = __webpack_require__(75);
+        var strings = foundation_1.MDCToolbarFoundation.strings;
+        var MDCToolbar = function(_super) {
+            __extends(MDCToolbar, _super);
+            function MDCToolbar() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCToolbar.attachTo = function(root) {
+                return new MDCToolbar(root);
+            };
+            MDCToolbar.prototype.initialize = function() {
+                var _this = this;
+                this.ripples_ = [];
+                this.fixedAdjustElement_ = null;
+                this.titleElement_ = this.root_.querySelector(strings.TITLE_SELECTOR);
+                var firstRowElement = this.root_.querySelector(strings.FIRST_ROW_SELECTOR);
+                if (!firstRowElement) {
+                    throw new Error("MDCToolbar: Required sub-element '" + strings.FIRST_ROW_SELECTOR + "' is missing");
+                }
+                this.firstRowElement_ = firstRowElement;
+                [].forEach.call(this.root_.querySelectorAll(strings.ICON_SELECTOR), function(icon) {
+                    var ripple = component_2.MDCRipple.attachTo(icon);
+                    ripple.unbounded = true;
+                    _this.ripples_.push(ripple);
+                });
+            };
+            MDCToolbar.prototype.destroy = function() {
+                this.ripples_.forEach(function(ripple) {
+                    ripple.destroy();
+                });
+                _super.prototype.destroy.call(this);
+            };
+            Object.defineProperty(MDCToolbar.prototype, "fixedAdjustElement", {
+                get: function get() {
+                    return this.fixedAdjustElement_;
+                },
+                set: function set(element) {
+                    this.fixedAdjustElement_ = element;
+                    this.foundation_.updateAdjustElementStyles();
+                },
+                enumerable: true,
+                configurable: true
+            });
+            MDCToolbar.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    registerScrollHandler: function registerScrollHandler(handler) {
+                        return window.addEventListener("scroll", handler);
+                    },
+                    deregisterScrollHandler: function deregisterScrollHandler(handler) {
+                        return window.removeEventListener("scroll", handler);
+                    },
+                    registerResizeHandler: function registerResizeHandler(handler) {
+                        return window.addEventListener("resize", handler);
+                    },
+                    deregisterResizeHandler: function deregisterResizeHandler(handler) {
+                        return window.removeEventListener("resize", handler);
+                    },
+                    getViewportWidth: function getViewportWidth() {
+                        return window.innerWidth;
+                    },
+                    getViewportScrollY: function getViewportScrollY() {
+                        return window.pageYOffset;
+                    },
+                    getOffsetHeight: function getOffsetHeight() {
+                        return _this.root_.offsetHeight;
+                    },
+                    getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {
+                        return _this.firstRowElement_.offsetHeight;
+                    },
+                    notifyChange: function notifyChange(evtData) {
+                        return _this.emit(strings.CHANGE_EVENT, evtData);
+                    },
+                    setStyle: function setStyle(property, value) {
+                        return _this.root_.style.setProperty(property, value);
+                    },
+                    setStyleForTitleElement: function setStyleForTitleElement(property, value) {
+                        if (_this.titleElement_) {
+                            _this.titleElement_.style.setProperty(property, value);
+                        }
+                    },
+                    setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {
+                        return _this.firstRowElement_.style.setProperty(property, value);
+                    },
+                    setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {
+                        if (_this.fixedAdjustElement) {
+                            _this.fixedAdjustElement.style.setProperty(property, value);
+                        }
+                    }
+                };
+                return new foundation_1.MDCToolbarFoundation(adapter);
+            };
+            return MDCToolbar;
+        }(component_1.MDCComponent);
+        exports.MDCToolbar = MDCToolbar;
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        exports.cssClasses = {
+            FIXED: "mdc-toolbar--fixed",
+            FIXED_AT_LAST_ROW: "mdc-toolbar--fixed-at-last-row",
+            FIXED_LASTROW: "mdc-toolbar--fixed-lastrow-only",
+            FLEXIBLE_DEFAULT_BEHAVIOR: "mdc-toolbar--flexible-default-behavior",
+            FLEXIBLE_MAX: "mdc-toolbar--flexible-space-maximized",
+            FLEXIBLE_MIN: "mdc-toolbar--flexible-space-minimized",
+            TOOLBAR_ROW_FLEXIBLE: "mdc-toolbar--flexible"
+        };
+        exports.strings = {
+            CHANGE_EVENT: "MDCToolbar:change",
+            FIRST_ROW_SELECTOR: ".mdc-toolbar__row:first-child",
+            ICON_SELECTOR: ".mdc-toolbar__icon",
+            TITLE_SELECTOR: ".mdc-toolbar__title"
+        };
+        exports.numbers = {
+            MAX_TITLE_SIZE: 2.125,
+            MIN_TITLE_SIZE: 1.25,
+            TOOLBAR_MOBILE_BREAKPOINT: 600,
+            TOOLBAR_ROW_HEIGHT: 64,
+            TOOLBAR_ROW_MOBILE_HEIGHT: 56
+        };
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        function __export(m) {
+            for (var p in m) {
+                if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+            }
         }
         }
-
-        this.moveTopAppBar_();
-      }
-    }
-
-    /**
-     * Top app bar resize handler that throttle/debounce functions that execute updates.
-     * @private
-     */
-
-  }, {
-    key: 'topAppBarResizeHandler_',
-    value: function topAppBarResizeHandler_() {
-      var _this2 = this;
-
-      // Throttle resize events 10 p/s
-      if (!this.resizeThrottleId_) {
-        this.resizeThrottleId_ = setTimeout(function () {
-          _this2.resizeThrottleId_ = INITIAL_VALUE;
-          _this2.throttledResizeHandler_();
-        }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
-      }
-
-      this.isCurrentlyBeingResized_ = true;
-
-      if (this.resizeDebounceId_) {
-        clearTimeout(this.resizeDebounceId_);
-      }
-
-      this.resizeDebounceId_ = setTimeout(function () {
-        _this2.topAppBarScrollHandler_();
-        _this2.isCurrentlyBeingResized_ = false;
-        _this2.resizeDebounceId_ = INITIAL_VALUE;
-      }, __WEBPACK_IMPORTED_MODULE_2__constants__["b" /* numbers */].DEBOUNCE_THROTTLE_RESIZE_TIME_MS);
-    }
-
-    /**
-     * Throttled function that updates the top app bar scrolled values if the
-     * top app bar height changes.
-     * @private
-     */
-
-  }, {
-    key: 'throttledResizeHandler_',
-    value: function throttledResizeHandler_() {
-      var currentHeight = this.adapter_.getTopAppBarHeight();
-      if (this.topAppBarHeight_ !== currentHeight) {
-        this.wasDocked_ = false;
-
-        // Since the top app bar has a different height depending on the screen width, this
-        // will ensure that the top app bar remains in the correct location if
-        // completely hidden and a resize makes the top app bar a different height.
-        this.currentAppBarOffsetTop_ -= this.topAppBarHeight_ - currentHeight;
-        this.topAppBarHeight_ = currentHeight;
-      }
-      this.topAppBarScrollHandler_();
-    }
-  }]);
-
-  return MDCTopAppBarFoundation;
-}(__WEBPACK_IMPORTED_MODULE_1__foundation__["a" /* default */]);
-
-/* harmony default export */ __webpack_exports__["a"] = (MDCTopAppBarFoundation);
-
-/***/ })
-/******/ ]);
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        __export(__webpack_require__(162));
+        __export(__webpack_require__(26));
+        __export(__webpack_require__(76));
+        __export(__webpack_require__(77));
+        __export(__webpack_require__(25));
+    }, function(module, exports, __webpack_require__) {
+        "use strict";
+        var __extends = this && this.__extends || function() {
+            var _extendStatics = function extendStatics(d, b) {
+                _extendStatics = Object.setPrototypeOf || {
+                    __proto__: []
+                } instanceof Array && function(d, b) {
+                    d.__proto__ = b;
+                } || function(d, b) {
+                    for (var p in b) {
+                        if (b.hasOwnProperty(p)) d[p] = b[p];
+                    }
+                };
+                return _extendStatics(d, b);
+            };
+            return function(d, b) {
+                _extendStatics(d, b);
+                function __() {
+                    this.constructor = d;
+                }
+                d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+            };
+        }();
+        Object.defineProperty(exports, "__esModule", {
+            value: true
+        });
+        var component_1 = __webpack_require__(1);
+        var component_2 = __webpack_require__(2);
+        var constants_1 = __webpack_require__(7);
+        var foundation_1 = __webpack_require__(76);
+        var foundation_2 = __webpack_require__(77);
+        var foundation_3 = __webpack_require__(25);
+        var MDCTopAppBar = function(_super) {
+            __extends(MDCTopAppBar, _super);
+            function MDCTopAppBar() {
+                return _super !== null && _super.apply(this, arguments) || this;
+            }
+            MDCTopAppBar.attachTo = function(root) {
+                return new MDCTopAppBar(root);
+            };
+            MDCTopAppBar.prototype.initialize = function(rippleFactory) {
+                if (rippleFactory === void 0) {
+                    rippleFactory = function rippleFactory(el) {
+                        return component_2.MDCRipple.attachTo(el);
+                    };
+                }
+                this.navIcon_ = this.root_.querySelector(constants_1.strings.NAVIGATION_ICON_SELECTOR);
+                var icons = [].slice.call(this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR));
+                if (this.navIcon_) {
+                    icons.push(this.navIcon_);
+                }
+                this.iconRipples_ = icons.map(function(icon) {
+                    var ripple = rippleFactory(icon);
+                    ripple.unbounded = true;
+                    return ripple;
+                });
+                this.scrollTarget_ = window;
+            };
+            MDCTopAppBar.prototype.destroy = function() {
+                this.iconRipples_.forEach(function(iconRipple) {
+                    return iconRipple.destroy();
+                });
+                _super.prototype.destroy.call(this);
+            };
+            MDCTopAppBar.prototype.setScrollTarget = function(target) {
+                this.foundation_.destroyScrollHandler();
+                this.scrollTarget_ = target;
+                this.foundation_.initScrollHandler();
+            };
+            MDCTopAppBar.prototype.getDefaultFoundation = function() {
+                var _this = this;
+                var adapter = {
+                    hasClass: function hasClass(className) {
+                        return _this.root_.classList.contains(className);
+                    },
+                    addClass: function addClass(className) {
+                        return _this.root_.classList.add(className);
+                    },
+                    removeClass: function removeClass(className) {
+                        return _this.root_.classList.remove(className);
+                    },
+                    setStyle: function setStyle(property, value) {
+                        return _this.root_.style.setProperty(property, value);
+                    },
+                    getTopAppBarHeight: function getTopAppBarHeight() {
+                        return _this.root_.clientHeight;
+                    },
+                    registerNavigationIconInteractionHandler: function registerNavigationIconInteractionHandler(evtType, handler) {
+                        if (_this.navIcon_) {
+                            _this.navIcon_.addEventListener(evtType, handler);
+                        }
+                    },
+                    deregisterNavigationIconInteractionHandler: function deregisterNavigationIconInteractionHandler(evtType, handler) {
+                        if (_this.navIcon_) {
+                            _this.navIcon_.removeEventListener(evtType, handler);
+                        }
+                    },
+                    notifyNavigationIconClicked: function notifyNavigationIconClicked() {
+                        return _this.emit(constants_1.strings.NAVIGATION_EVENT, {});
+                    },
+                    registerScrollHandler: function registerScrollHandler(handler) {
+                        return _this.scrollTarget_.addEventListener("scroll", handler);
+                    },
+                    deregisterScrollHandler: function deregisterScrollHandler(handler) {
+                        return _this.scrollTarget_.removeEventListener("scroll", handler);
+                    },
+                    registerResizeHandler: function registerResizeHandler(handler) {
+                        return window.addEventListener("resize", handler);
+                    },
+                    deregisterResizeHandler: function deregisterResizeHandler(handler) {
+                        return window.removeEventListener("resize", handler);
+                    },
+                    getViewportScrollY: function getViewportScrollY() {
+                        var win = _this.scrollTarget_;
+                        var el = _this.scrollTarget_;
+                        return win.pageYOffset !== undefined ? win.pageYOffset : el.scrollTop;
+                    },
+                    getTotalActionItems: function getTotalActionItems() {
+                        return _this.root_.querySelectorAll(constants_1.strings.ACTION_ITEM_SELECTOR).length;
+                    }
+                };
+                var foundation;
+                if (this.root_.classList.contains(constants_1.cssClasses.SHORT_CLASS)) {
+                    foundation = new foundation_2.MDCShortTopAppBarFoundation(adapter);
+                } else if (this.root_.classList.contains(constants_1.cssClasses.FIXED_CLASS)) {
+                    foundation = new foundation_1.MDCFixedTopAppBarFoundation(adapter);
+                } else {
+                    foundation = new foundation_3.MDCTopAppBarFoundation(adapter);
+                }
+                return foundation;
+            };
+            return MDCTopAppBar;
+        }(component_1.MDCComponent);
+        exports.MDCTopAppBar = MDCTopAppBar;
+    } ]);
 });
 });
 //# sourceMappingURL=material-components-web.js.map
 //# sourceMappingURL=material-components-web.js.map

File diff suppressed because it is too large
+ 0 - 0
public/lib/mdc/dist/material-components-web.js.map


File diff suppressed because it is too large
+ 0 - 5
public/lib/mdc/dist/material-components-web.min.css


File diff suppressed because it is too large
+ 0 - 0
public/lib/mdc/dist/material-components-web.min.css.map


File diff suppressed because it is too large
+ 0 - 5
public/lib/mdc/dist/material-components-web.min.js


File diff suppressed because it is too large
+ 0 - 0
public/lib/mdc/dist/material-components-web.min.js.map


+ 25 - 9
public/lib/widgets.js

@@ -295,7 +295,13 @@ Copyright (c) 2014-2018 Nikolai Suslov and the Krestianstvo.org project contribu
                 $cell: true,
                 $cell: true,
                 $type: "button",
                 $type: "button",
                 class: "mdc-button",
                 class: "mdc-button",
-                $text: obj.label,
+                $components: [
+                    {
+                        $type: "span",
+                        class: "mdc-button__label",
+                        $text: obj.label
+                    }
+                ],
                 onclick: obj.onclick
                 onclick: obj.onclick
             }
             }
         }
         }
@@ -456,18 +462,28 @@ Copyright (c) 2014-2018 Nikolai Suslov and the Krestianstvo.org project contribu
             if (obj.styleClass){
             if (obj.styleClass){
                 addClass = obj.styleClass;
                 addClass = obj.styleClass;
             }
             }
-
             return {
             return {
-                $type: "i",
-                class: addClass + " mdc-icon-toggle material-icons",
-                role: "button",
-                $text: obj.label,
+                $type: "button",
+                class: addClass + " mdc-icon-button",
+                //$text: obj.label,
                 id: obj.id,
                 id: obj.id,
-                'data-toggle-on': obj.on,
-                'data-toggle-off': obj.off,
+                //'data-toggle-on': obj.on,
+               // 'data-toggle-off': obj.off,
                 'aria-pressed': obj.state,
                 'aria-pressed': obj.state,
                 'aria-hidden': true,
                 'aria-hidden': true,
-                $init: obj.init
+                $init: obj.init,
+                $components:[
+                    {
+                    $type: "i",
+                    class: "material-icons mdc-icon-button__icon mdc-icon-button__icon--on",
+                    $text: JSON.parse(obj.on).content
+                },
+                {
+                    $type: "i",
+                    class: "material-icons mdc-icon-button__icon",
+                    $text: JSON.parse(obj.off).content  
+                },
+                ]
             }
             }
         }
         }
 
 

+ 1 - 1
public/vwf/view/aframe.js

@@ -527,7 +527,7 @@ define(["module", "vwf/view"], function (module, view) {
                         let editorDriver = vwf.views["vwf/view/editor-new"];
                         let editorDriver = vwf.views["vwf/view/editor-new"];
                         if (editorDriver) {
                         if (editorDriver) {
                             let selectSwitch = document.querySelector('#selectNodeSwitch');
                             let selectSwitch = document.querySelector('#selectNodeSwitch');
-                            const selectSwitchComp = new mdc.iconToggle.MDCIconToggle(selectSwitch); //new mdc.select.MDCIconToggle
+                            const selectSwitchComp = new mdc.iconButton.MDCIconButtonToggle(selectSwitch); //new mdc.select.MDCIconToggle
                             selectSwitchComp.on = false;
                             selectSwitchComp.on = false;
 
 
                             let currentNodeDIV = document.querySelector('#currentNode');
                             let currentNodeDIV = document.querySelector('#currentNode');

+ 55 - 30
public/vwf/view/editor-new.js

@@ -370,6 +370,7 @@ define([
                                 $text: "Google Poly"
                                 $text: "Google Poly"
 
 
                             },
                             },
+
                             self.widgets.inputTextFieldOutlined({
                             self.widgets.inputTextFieldOutlined({
                                 "id": 'googlepolyid',
                                 "id": 'googlepolyid',
                                 "label": "Enter Google Poly model ID",
                                 "label": "Enter Google Poly model ID",
@@ -385,16 +386,31 @@ define([
                             //         console.log(this.value)
                             //         console.log(this.value)
                             //     }
                             //     }
                             // }),
                             // }),
-                            self.widgets.buttonSimple(
-                                {
-                                    label: "Load Model from Poly",
-                                    onclick: function (e) {
-                                        let srcEl = document.querySelector('#googlepolyid');
-                                        let avatarID = 'avatar-' + vwf.moniker_;
-                                        vwf_view.kernel.callMethod(vwf.application(), "createGooglePoly", [srcEl.value, null, null, avatarID])
+
+                            {
+                                $type: "div",
+                                class: "mdc-grid-list",
+                                $components: [
+                                    {
+                                        $type: "ul",
+                                        class: "mdc-grid-list__tiles",
+                                        $components: [
+                                            self.widgets.buttonSimple(
+                                                {
+                                                    label: "Load from Poly",
+                                                    onclick: function (e) {
+                                                        let srcEl = document.querySelector('#googlepolyid');
+                                                        let avatarID = 'avatar-' + vwf.moniker_;
+                                                        vwf_view.kernel.callMethod(vwf.application(), "createGooglePoly", [srcEl.value, null, null, avatarID])
+                                                    }
+                                                }
+                                            )
+                                        ]
                                     }
                                     }
-                                }
-                            )
+                                ]
+                            }
+
+
                         ]
                         ]
                     }
                     }
 
 
@@ -514,8 +530,8 @@ define([
                                         'state': false,
                                         'state': false,
                                         'init': function () {
                                         'init': function () {
                                             this._driver = vwf.views["vwf/view/aframe"];
                                             this._driver = vwf.views["vwf/view/aframe"];
-                                            this._comp = new mdc.iconToggle.MDCIconToggle(this);
-                                            mdc.iconToggle.MDCIconToggle.attachTo(this);
+                                            this._comp = new mdc.iconButton.MDCIconButtonToggle(this);
+                                            //mdc.iconButton.MDCIconButtonToggle.attachTo(this);
                                             if (document.getElementsByClassName('touchZone').length > 0){
                                             if (document.getElementsByClassName('touchZone').length > 0){
                                                 this._comp.on = true;
                                                 this._comp.on = true;
                                                 this.style.color = "#3e7e40";
                                                 this.style.color = "#3e7e40";
@@ -525,7 +541,7 @@ define([
                                             }
                                             }
                                             
                                             
 
 
-                                                this.addEventListener('MDCIconToggle:change', (e) => {
+                                                this.addEventListener('MDCIconButtonToggle:change', (e) => {
                                                     let chkAttr = e.detail.isOn;
                                                     let chkAttr = e.detail.isOn;
                                                     let driver = e.target._driver;
                                                     let driver = e.target._driver;
                                                     if (chkAttr) {
                                                     if (chkAttr) {
@@ -1491,11 +1507,12 @@ define([
                                         'init': function () {
                                         'init': function () {
                                             this._driver = vwf.views["vwf/view/webrtc"];
                                             this._driver = vwf.views["vwf/view/webrtc"];
                                             if (!this._driver) {
                                             if (!this._driver) {
-                                                this.classList.add('mdc-icon-toggle--disabled');
+                                                //this.classList.add('mdc-icon-toggle--disabled');
+                                                this.setAttribute('disabled',"");
 
 
                                             }
                                             }
 
 
-                                            this.addEventListener('MDCIconToggle:change', (e) => {
+                                            this.addEventListener('MDCIconButtonToggle:change', (e) => {
 
 
                                                 let driver = e.target._driver;
                                                 let driver = e.target._driver;
                                                 let chkAttr = e.detail.isOn;
                                                 let chkAttr = e.detail.isOn;
@@ -1507,16 +1524,20 @@ define([
                                                 if (chkAttr) {
                                                 if (chkAttr) {
                                                     driver.startWebRTC(avatarID);
                                                     driver.startWebRTC(avatarID);
 
 
-                                                    micToggle.classList.remove('mdc-icon-toggle--disabled');
-                                                    camToggle.classList.remove('mdc-icon-toggle--disabled');
+                                                    micToggle.removeAttribute('disabled');
+                                                    camToggle.removeAttribute('disabled');
+                                                    //micToggle.classList.remove('mdc-icon-toggle--disabled');
+                                                    //camToggle.classList.remove('mdc-icon-toggle--disabled');
 
 
                                                     console.log("on")
                                                     console.log("on")
 
 
                                                 } else {
                                                 } else {
                                                     driver.stopWebRTC(avatarID);
                                                     driver.stopWebRTC(avatarID);
 
 
-                                                    micToggle.classList.add('mdc-icon-toggle--disabled');
-                                                    camToggle.classList.add('mdc-icon-toggle--disabled');
+                                                    micToggle.setAttribute('disabled',"");
+                                                    camToggle.setAttribute('disabled',"");
+                                                    //micToggle.classList.add('mdc-icon-toggle--disabled');
+                                                    //camToggle.classList.add('mdc-icon-toggle--disabled');
                                                     console.log("off")
                                                     console.log("off")
                                                 }
                                                 }
 
 
@@ -1545,10 +1566,12 @@ define([
                                             let webrtcswitch = document.querySelector('#webrtcswitch');
                                             let webrtcswitch = document.querySelector('#webrtcswitch');
 
 
                                             if (!this._driver) {
                                             if (!this._driver) {
-                                                this.classList.add('mdc-icon-toggle--disabled');
+                                                //this.classList.add('mdc-icon-toggle--disabled');
+                                                this.setAttribute("disabled", "");
                                             }
                                             }
-                                            this.classList.add('mdc-icon-toggle--disabled');
-                                            this.addEventListener('MDCIconToggle:change', (e) => {
+                                            //this.classList.add('mdc-icon-toggle--disabled');
+                                            this.setAttribute("disabled", "");
+                                            this.addEventListener('MDCIconButtonToggle:change', (e) => {
 
 
                                                 let driver = e.target._driver;
                                                 let driver = e.target._driver;
                                                 let chkAttr = e.detail.isOn;
                                                 let chkAttr = e.detail.isOn;
@@ -1583,11 +1606,13 @@ define([
                                             this._driver = vwf.views["vwf/view/webrtc"];
                                             this._driver = vwf.views["vwf/view/webrtc"];
 
 
                                             if (!this._driver) {
                                             if (!this._driver) {
-                                                this.classList.add('mdc-icon-toggle--disabled');
+                                                //this.classList.add('mdc-icon-toggle--disabled');
+                                                this.setAttribute("disabled", "");
                                             }
                                             }
 
 
-                                            this.classList.add('mdc-icon-toggle--disabled');
-                                            this.addEventListener('MDCIconToggle:change', (e) => {
+                                           // this.classList.add('mdc-icon-toggle--disabled');
+                                           this.setAttribute("disabled", "");
+                                            this.addEventListener('MDCIconButtonToggle:change', (e) => {
 
 
                                                 let driver = e.target._driver;
                                                 let driver = e.target._driver;
                                                 let chkAttr = e.detail.isOn;
                                                 let chkAttr = e.detail.isOn;
@@ -1650,15 +1675,15 @@ define([
                                         'init': function () {
                                         'init': function () {
                                             var nodeID = this._currentNode;
                                             var nodeID = this._currentNode;
 
 
-                                            this._comp = new mdc.iconToggle.MDCIconToggle(this);
+                                            this._comp = new mdc.iconButtonToggle.MDCIconButtonToggle(this);
 
 
                                             this.setAttribute('id', "soundStopStartSwitch-" + nodeID);
                                             this.setAttribute('id', "soundStopStartSwitch-" + nodeID);
                                             let isPlaying = vwf.getProperty(nodeID, 'isPlaying');
                                             let isPlaying = vwf.getProperty(nodeID, 'isPlaying');
-                                            mdc.iconToggle.MDCIconToggle.attachTo(this);
+                                            //mdc.iconToggle.MDCIconToggle.attachTo(this);
                                             this._comp.on = isPlaying;
                                             this._comp.on = isPlaying;
 
 
 
 
-                                            this.addEventListener('MDCIconToggle:change', (e) => {
+                                            this.addEventListener('MDCIconButtonToggle:change', (e) => {
 
 
                                                 // let avatarID = 'avatar-'+ vwf.moniker_;
                                                 // let avatarID = 'avatar-'+ vwf.moniker_;
                                                 // let avatarNode = self.nodes['avatar-'+ vwf.moniker_];
                                                 // let avatarNode = self.nodes['avatar-'+ vwf.moniker_];
@@ -3587,7 +3612,7 @@ define([
                             'state': false,
                             'state': false,
                             'init': function () {
                             'init': function () {
 
 
-                                this.addEventListener('MDCIconToggle:change', (e) => {
+                                this.addEventListener('MDCIconButtonToggle:change', (e) => {
 
 
                                     let avatarID = 'avatar-' + vwf.moniker_;
                                     let avatarID = 'avatar-' + vwf.moniker_;
                                     let avatarNode = self.nodes['avatar-' + vwf.moniker_];
                                     let avatarNode = self.nodes['avatar-' + vwf.moniker_];
@@ -3678,9 +3703,9 @@ define([
             }
             }
             );
             );
 
 
-            var toggleNodes = document.querySelectorAll('.mdc-icon-toggle');
+            var toggleNodes = document.querySelectorAll('.mdc-icon-button');
             toggleNodes.forEach(el => {
             toggleNodes.forEach(el => {
-                mdc.iconToggle.MDCIconToggle.attachTo(el);
+                mdc.iconButton.MDCIconButtonToggle.attachTo(el);
             });
             });
 
 
 
 

+ 4 - 4
public/vwf/view/webrtc.js

@@ -167,11 +167,11 @@ define( [ "module", "vwf/view", "vwf/utility", "vwf/utility/color"], function( m
 
 
 
 
                 let vidui = document.querySelector('#webrtcvideo');
                 let vidui = document.querySelector('#webrtcvideo');
-                const viduicomp = new mdc.iconToggle.MDCIconToggle(vidui); //new mdc.select.MDCIconToggle
+                const viduicomp = new mdc.iconButton.MDCIconButtonToggle(vidui); //new mdc.select.MDCIconToggle
                 if (vidui) viduicomp.on = false;
                 if (vidui) viduicomp.on = false;
 
 
                 let micui = document.querySelector('#webrtcaudio');
                 let micui = document.querySelector('#webrtcaudio');
-                const micuicomp = new mdc.iconToggle.MDCIconToggle(micui);
+                const micuicomp = new mdc.iconButton.MDCIconButtonToggle(micui);
                 if (micui) micuicomp.on = false;
                 if (micui) micuicomp.on = false;
 
 
                 this.deleteConnection(nodeID);
                 this.deleteConnection(nodeID);
@@ -562,14 +562,14 @@ define( [ "module", "vwf/view", "vwf/utility", "vwf/utility/color"], function( m
                 let vstatus =  videoTracks[0].enabled;
                 let vstatus =  videoTracks[0].enabled;
 
 
                 let vidui = document.querySelector('#webrtcvideo');
                 let vidui = document.querySelector('#webrtcvideo');
-                const viduicomp = new mdc.iconToggle.MDCIconToggle(vidui); //new mdc.select.MDCIconToggle
+                const viduicomp = new mdc.iconButton.MDCIconButtonToggle(vidui); //new mdc.select.MDCIconToggle
                 if (vidui) viduicomp.on = vstatus;
                 if (vidui) viduicomp.on = vstatus;
 
 
                 let audioTracks = stream.getAudioTracks();
                 let audioTracks = stream.getAudioTracks();
                 let astatus =  audioTracks[0].enabled;
                 let astatus =  audioTracks[0].enabled;
 
 
                 let micui = document.querySelector('#webrtcaudio');
                 let micui = document.querySelector('#webrtcaudio');
-                const micuicomp = new mdc.iconToggle.MDCIconToggle(micui);
+                const micuicomp = new mdc.iconButton.MDCIconButtonToggle(micui);
                 if (micui) micuicomp.on = astatus;
                 if (micui) micuicomp.on = astatus;
 
 
 
 

Some files were not shown because too many files changed in this diff