/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * 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
 */
(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
        });
        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;
        }
        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;
        }
        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;
        }
        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
        });
        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
        };
        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
            });
        }
        exports.createFocusTrapInstance = createFocusTrapInstance;
        function isScrollable(el) {
            return el ? el.scrollHeight > el.offsetHeight : false;
        }
        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
            });
        }
        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();
                }
            }
        }
        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, __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 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;
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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();
                }
            }
        }
        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;
        }
        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;
        }
        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;
        }
        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 __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 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
            });
            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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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];
            }
        }
        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