/** * material-design-lite - Material Design Components in CSS, JS and HTML * @version v1.3.0 * @license Apache-2.0 * @copyright 2015 Google, Inc. * @link https://github.com/google/material-design-lite */ !function () { "use strict"; function e(e, t) { if (e) { if (t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)) { var s = document.createElement("span"); s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER), s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT); var i = document.createElement("span"); i.classList.add(t.CssClasses_.MDL_RIPPLE), s.appendChild(i), e.appendChild(s) } e.addEventListener("click", function (s) { if ("#" === e.getAttribute("href").charAt(0)) { s.preventDefault(); var i = e.href.split("#")[1], n = t.element_.querySelector("#" + i); t.resetTabState_(), t.resetPanelState_(), e.classList.add(t.CssClasses_.ACTIVE_CLASS), n.classList.add(t.CssClasses_.ACTIVE_CLASS) } }) } } function t(e, t, s, i) { function n() { var n = e.href.split("#")[1], a = i.content_.querySelector("#" + n); i.resetTabState_(t), i.resetPanelState_(s), e.classList.add(i.CssClasses_.IS_ACTIVE), a.classList.add(i.CssClasses_.IS_ACTIVE) } if (i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)) { var a = document.createElement("span"); a.classList.add(i.CssClasses_.RIPPLE_CONTAINER), a.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT); var l = document.createElement("span"); l.classList.add(i.CssClasses_.RIPPLE), a.appendChild(l), e.appendChild(a) } i.tabBar_.classList.contains(i.CssClasses_.TAB_MANUAL_SWITCH) || e.addEventListener("click", function (t) { "#" === e.getAttribute("href").charAt(0) && (t.preventDefault(), n()) }), e.show = n } var s = { upgradeDom: function (e, t) { }, upgradeElement: function (e, t) { }, upgradeElements: function (e) { }, upgradeAllRegistered: function () { }, registerUpgradedCallback: function (e, t) { }, register: function (e) { }, downgradeElements: function (e) { } }; s = function () { function e(e, t) { for (var s = 0; s < c.length; s++) if (c[s].className === e) return "undefined" != typeof t && (c[s] = t), c[s]; return !1 } function t(e) { var t = e.getAttribute("data-upgraded"); return null === t ? [""] : t.split(",") } function s(e, s) { var i = t(e); return i.indexOf(s) !== -1 } function i(e, t, s) { if ("CustomEvent" in window && "function" == typeof window.CustomEvent) return new CustomEvent(e, { bubbles: t, cancelable: s }); var i = document.createEvent("Events"); return i.initEvent(e, t, s), i } function n(t, s) { if ("undefined" == typeof t && "undefined" == typeof s) for (var i = 0; i < c.length; i++) n(c[i].className, c[i].cssClass); else { var l = t; if ("undefined" == typeof s) { var o = e(l); o && (s = o.cssClass) } for (var r = document.querySelectorAll("." + s), _ = 0; _ < r.length; _++) a(r[_], l) } } function a(n, a) { if (!("object" == typeof n && n instanceof Element)) throw new Error("Invalid argument provided to upgrade MDL element."); var l = i("mdl-componentupgrading", !0, !0); if (n.dispatchEvent(l), !l.defaultPrevented) { var o = t(n), r = []; if (a) s(n, a) || r.push(e(a)); else { var _ = n.classList; c.forEach(function (e) { _.contains(e.cssClass) && r.indexOf(e) === -1 && !s(n, e.className) && r.push(e) }) } for (var d, h = 0, u = r.length; h < u; h++) { if (d = r[h], !d) throw new Error("Unable to find a registered component for the given class."); o.push(d.className), n.setAttribute("data-upgraded", o.join(",")); var E = new d.classConstructor(n); E[C] = d, p.push(E); for (var m = 0, L = d.callbacks.length; m < L; m++) d.callbacks[m](n); d.widget && (n[d.className] = E); var I = i("mdl-componentupgraded", !0, !1); n.dispatchEvent(I) } } } function l(e) { Array.isArray(e) || (e = e instanceof Element ? [e] : Array.prototype.slice.call(e)); for (var t, s = 0, i = e.length; s < i; s++) t = e[s], t instanceof HTMLElement && (a(t), t.children.length > 0 && l(t.children)) } function o(t) { var s = "undefined" == typeof t.widget && "undefined" == typeof t.widget, i = !0; s || (i = t.widget || t.widget); var n = { classConstructor: t.constructor || t.constructor, className: t.classAsString || t.classAsString, cssClass: t.cssClass || t.cssClass, widget: i, callbacks: [] }; if (c.forEach(function (e) { if (e.cssClass === n.cssClass) throw new Error("The provided cssClass has already been registered: " + e.cssClass); if (e.className === n.className) throw new Error("The provided className has already been registered") }), t.constructor.prototype.hasOwnProperty(C)) throw new Error("MDL component classes must not have " + C + " defined as a property."); var a = e(t.classAsString, n); a || c.push(n) } function r(t, s) { var i = e(t); i && i.callbacks.push(s) } function _() { for (var e = 0; e < c.length; e++) n(c[e].className) } function d(e) { if (e) { var t = p.indexOf(e); p.splice(t, 1); var s = e.element_.getAttribute("data-upgraded").split(","), n = s.indexOf(e[C].classAsString); s.splice(n, 1), e.element_.setAttribute("data-upgraded", s.join(",")); var a = i("mdl-componentdowngraded", !0, !1); e.element_.dispatchEvent(a) } } function h(e) { var t = function (e) { p.filter(function (t) { return t.element_ === e }).forEach(d) }; if (e instanceof Array || e instanceof NodeList) for (var s = 0; s < e.length; s++) t(e[s]); else { if (!(e instanceof Node)) throw new Error("Invalid argument provided to downgrade MDL nodes."); t(e) } } var c = [], p = [], C = "mdlComponentConfigInternal_"; return { upgradeDom: n, upgradeElement: a, upgradeElements: l, upgradeAllRegistered: _, registerUpgradedCallback: r, register: o, downgradeElements: h } }(), s.ComponentConfigPublic, s.ComponentConfig, s.Component, s.upgradeDom = s.upgradeDom, s.upgradeElement = s.upgradeElement, s.upgradeElements = s.upgradeElements, s.upgradeAllRegistered = s.upgradeAllRegistered, s.registerUpgradedCallback = s.registerUpgradedCallback, s.register = s.register, s.downgradeElements = s.downgradeElements, window.componentHandler = s, window.componentHandler = s, window.addEventListener("load", function () { "classList" in document.createElement("div") && "querySelector" in document && "addEventListener" in window && Array.prototype.forEach ? (document.documentElement.classList.add("mdl-js"), s.upgradeAllRegistered()) : (s.upgradeElement = function () { }, s.register = function () { }) }), Date.now || (Date.now = function () { return (new Date).getTime() }, Date.now = Date.now); for (var i = ["webkit", "moz"], n = 0; n < i.length && !window.requestAnimationFrame; ++n) { var a = i[n]; window.requestAnimationFrame = window[a + "RequestAnimationFrame"], window.cancelAnimationFrame = window[a + "CancelAnimationFrame"] || window[a + "CancelRequestAnimationFrame"], window.requestAnimationFrame = window.requestAnimationFrame, window.cancelAnimationFrame = window.cancelAnimationFrame } if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { var l = 0; window.requestAnimationFrame = function (e) { var t = Date.now(), s = Math.max(l + 16, t); return setTimeout(function () { e(l = s) }, s - t) }, window.cancelAnimationFrame = clearTimeout, window.requestAnimationFrame = window.requestAnimationFrame, window.cancelAnimationFrame = window.cancelAnimationFrame } var o = function (e) { this.element_ = e, this.init() }; window.MaterialButton = o, o.prototype.Constant_ = {}, o.prototype.CssClasses_ = { RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_CONTAINER: "mdl-button__ripple-container", RIPPLE: "mdl-ripple" }, o.prototype.blurHandler_ = function (e) { e && this.element_.blur() }, o.prototype.disable = function () { this.element_.disabled = !0 }, o.prototype.disable = o.prototype.disable, o.prototype.enable = function () { this.element_.disabled = !1 }, o.prototype.enable = o.prototype.enable, o.prototype.init = function () { if (this.element_) { if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) { var e = document.createElement("span"); e.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleElement_ = document.createElement("span"), this.rippleElement_.classList.add(this.CssClasses_.RIPPLE), e.appendChild(this.rippleElement_), this.boundRippleBlurHandler = this.blurHandler_.bind(this), this.rippleElement_.addEventListener("mouseup", this.boundRippleBlurHandler), this.element_.appendChild(e) } this.boundButtonBlurHandler = this.blurHandler_.bind(this), this.element_.addEventListener("mouseup", this.boundButtonBlurHandler), this.element_.addEventListener("mouseleave", this.boundButtonBlurHandler) } }, s.register({constructor: o, classAsString: "MaterialButton", cssClass: "mdl-js-button", widget: !0}); var r = function (e) { this.element_ = e, this.init() }; window.MaterialCheckbox = r, r.prototype.Constant_ = {TINY_TIMEOUT: .001}, r.prototype.CssClasses_ = { INPUT: "mdl-checkbox__input", BOX_OUTLINE: "mdl-checkbox__box-outline", FOCUS_HELPER: "mdl-checkbox__focus-helper", TICK_OUTLINE: "mdl-checkbox__tick-outline", RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE_CONTAINER: "mdl-checkbox__ripple-container", RIPPLE_CENTER: "mdl-ripple--center", RIPPLE: "mdl-ripple", IS_FOCUSED: "is-focused", IS_DISABLED: "is-disabled", IS_CHECKED: "is-checked", IS_UPGRADED: "is-upgraded" }, r.prototype.onChange_ = function (e) { this.updateClasses_() }, r.prototype.onFocus_ = function (e) { this.element_.classList.add(this.CssClasses_.IS_FOCUSED) }, r.prototype.onBlur_ = function (e) { this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, r.prototype.onMouseUp_ = function (e) { this.blur_() }, r.prototype.updateClasses_ = function () { this.checkDisabled(), this.checkToggleState() }, r.prototype.blur_ = function () { window.setTimeout(function () { this.inputElement_.blur() }.bind(this), this.Constant_.TINY_TIMEOUT) }, r.prototype.checkToggleState = function () { this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED) }, r.prototype.checkToggleState = r.prototype.checkToggleState, r.prototype.checkDisabled = function () { this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED) }, r.prototype.checkDisabled = r.prototype.checkDisabled, r.prototype.disable = function () { this.inputElement_.disabled = !0, this.updateClasses_() }, r.prototype.disable = r.prototype.disable, r.prototype.enable = function () { this.inputElement_.disabled = !1, this.updateClasses_() }, r.prototype.enable = r.prototype.enable, r.prototype.check = function () { this.inputElement_.checked = !0, this.updateClasses_() }, r.prototype.check = r.prototype.check, r.prototype.uncheck = function () { this.inputElement_.checked = !1, this.updateClasses_() }, r.prototype.uncheck = r.prototype.uncheck, r.prototype.init = function () { if (this.element_) { this.inputElement_ = this.element_.querySelector("." + this.CssClasses_.INPUT); var e = document.createElement("span"); e.classList.add(this.CssClasses_.BOX_OUTLINE); var t = document.createElement("span"); t.classList.add(this.CssClasses_.FOCUS_HELPER); var s = document.createElement("span"); if (s.classList.add(this.CssClasses_.TICK_OUTLINE), e.appendChild(s), this.element_.appendChild(t), this.element_.appendChild(e), this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) { this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement("span"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.boundRippleMouseUp = this.onMouseUp_.bind(this), this.rippleContainerElement_.addEventListener("mouseup", this.boundRippleMouseUp); var i = document.createElement("span"); i.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(i), this.element_.appendChild(this.rippleContainerElement_) } this.boundInputOnChange = this.onChange_.bind(this), this.boundInputOnFocus = this.onFocus_.bind(this), this.boundInputOnBlur = this.onBlur_.bind(this), this.boundElementMouseUp = this.onMouseUp_.bind(this), this.inputElement_.addEventListener("change", this.boundInputOnChange), this.inputElement_.addEventListener("focus", this.boundInputOnFocus), this.inputElement_.addEventListener("blur", this.boundInputOnBlur), this.element_.addEventListener("mouseup", this.boundElementMouseUp), this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED) } }, s.register({constructor: r, classAsString: "MaterialCheckbox", cssClass: "mdl-js-checkbox", widget: !0}); var _ = function (e) { this.element_ = e, this.init() }; window.MaterialIconToggle = _, _.prototype.Constant_ = {TINY_TIMEOUT: .001}, _.prototype.CssClasses_ = { INPUT: "mdl-icon-toggle__input", JS_RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE_CONTAINER: "mdl-icon-toggle__ripple-container", RIPPLE_CENTER: "mdl-ripple--center", RIPPLE: "mdl-ripple", IS_FOCUSED: "is-focused", IS_DISABLED: "is-disabled", IS_CHECKED: "is-checked" }, _.prototype.onChange_ = function (e) { this.updateClasses_() }, _.prototype.onFocus_ = function (e) { this.element_.classList.add(this.CssClasses_.IS_FOCUSED) }, _.prototype.onBlur_ = function (e) { this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, _.prototype.onMouseUp_ = function (e) { this.blur_() }, _.prototype.updateClasses_ = function () { this.checkDisabled(), this.checkToggleState() }, _.prototype.blur_ = function () { window.setTimeout(function () { this.inputElement_.blur() }.bind(this), this.Constant_.TINY_TIMEOUT) }, _.prototype.checkToggleState = function () { this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED) }, _.prototype.checkToggleState = _.prototype.checkToggleState, _.prototype.checkDisabled = function () { this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED) }, _.prototype.checkDisabled = _.prototype.checkDisabled, _.prototype.disable = function () { this.inputElement_.disabled = !0, this.updateClasses_() }, _.prototype.disable = _.prototype.disable, _.prototype.enable = function () { this.inputElement_.disabled = !1, this.updateClasses_() }, _.prototype.enable = _.prototype.enable, _.prototype.check = function () { this.inputElement_.checked = !0, this.updateClasses_() }, _.prototype.check = _.prototype.check, _.prototype.uncheck = function () { this.inputElement_.checked = !1, this.updateClasses_() }, _.prototype.uncheck = _.prototype.uncheck, _.prototype.init = function () { if (this.element_) { if (this.inputElement_ = this.element_.querySelector("." + this.CssClasses_.INPUT), this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) { this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement("span"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.boundRippleMouseUp = this.onMouseUp_.bind(this), this.rippleContainerElement_.addEventListener("mouseup", this.boundRippleMouseUp); var e = document.createElement("span"); e.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(e), this.element_.appendChild(this.rippleContainerElement_) } this.boundInputOnChange = this.onChange_.bind(this), this.boundInputOnFocus = this.onFocus_.bind(this), this.boundInputOnBlur = this.onBlur_.bind(this), this.boundElementOnMouseUp = this.onMouseUp_.bind(this), this.inputElement_.addEventListener("change", this.boundInputOnChange), this.inputElement_.addEventListener("focus", this.boundInputOnFocus), this.inputElement_.addEventListener("blur", this.boundInputOnBlur), this.element_.addEventListener("mouseup", this.boundElementOnMouseUp), this.updateClasses_(), this.element_.classList.add("is-upgraded") } }, s.register({constructor: _, classAsString: "MaterialIconToggle", cssClass: "mdl-js-icon-toggle", widget: !0}); var d = function (e) { this.element_ = e, this.init() }; window.MaterialMenu = d, d.prototype.Constant_ = { TRANSITION_DURATION_SECONDS: .3, TRANSITION_DURATION_FRACTION: .8, CLOSE_TIMEOUT: 150 }, d.prototype.Keycodes_ = { ENTER: 13, ESCAPE: 27, SPACE: 32, UP_ARROW: 38, DOWN_ARROW: 40 }, d.prototype.CssClasses_ = { CONTAINER: "mdl-menu__container", OUTLINE: "mdl-menu__outline", ITEM: "mdl-menu__item", ITEM_RIPPLE_CONTAINER: "mdl-menu__item-ripple-container", RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE: "mdl-ripple", IS_UPGRADED: "is-upgraded", IS_VISIBLE: "is-visible", IS_ANIMATING: "is-animating", BOTTOM_LEFT: "mdl-menu--bottom-left", BOTTOM_RIGHT: "mdl-menu--bottom-right", TOP_LEFT: "mdl-menu--top-left", TOP_RIGHT: "mdl-menu--top-right", UNALIGNED: "mdl-menu--unaligned" }, d.prototype.init = function () { if (this.element_) { var e = document.createElement("div"); e.classList.add(this.CssClasses_.CONTAINER), this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_), this.container_ = e; var t = document.createElement("div"); t.classList.add(this.CssClasses_.OUTLINE), this.outline_ = t, e.insertBefore(t, this.element_); var s = this.element_.getAttribute("for") || this.element_.getAttribute("data-mdl-for"), i = null; s && (i = document.getElementById(s), i && (this.forElement_ = i, i.addEventListener("click", this.handleForClick_.bind(this)), i.addEventListener("keydown", this.handleForKeyboardEvent_.bind(this)))); var n = this.element_.querySelectorAll("." + this.CssClasses_.ITEM); this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this), this.boundItemClick_ = this.handleItemClick_.bind(this); for (var a = 0; a < n.length; a++) n[a].addEventListener("click", this.boundItemClick_), n[a].tabIndex = "-1", n[a].addEventListener("keydown", this.boundItemKeydown_); if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) for (this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), a = 0; a < n.length; a++) { var l = n[a], o = document.createElement("span"); o.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER); var r = document.createElement("span"); r.classList.add(this.CssClasses_.RIPPLE), o.appendChild(r), l.appendChild(o), l.classList.add(this.CssClasses_.RIPPLE_EFFECT) } this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT) && this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT), this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) && this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT), this.element_.classList.contains(this.CssClasses_.TOP_LEFT) && this.outline_.classList.add(this.CssClasses_.TOP_LEFT), this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) && this.outline_.classList.add(this.CssClasses_.TOP_RIGHT), this.element_.classList.contains(this.CssClasses_.UNALIGNED) && this.outline_.classList.add(this.CssClasses_.UNALIGNED), e.classList.add(this.CssClasses_.IS_UPGRADED) } }, d.prototype.handleForClick_ = function (e) { if (this.element_ && this.forElement_) { var t = this.forElement_.getBoundingClientRect(), s = this.forElement_.parentElement.getBoundingClientRect(); this.element_.classList.contains(this.CssClasses_.UNALIGNED) || (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) ? (this.container_.style.right = s.right - t.right + "px", this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + "px") : this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ? (this.container_.style.left = this.forElement_.offsetLeft + "px", this.container_.style.bottom = s.bottom - t.top + "px") : this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? (this.container_.style.right = s.right - t.right + "px", this.container_.style.bottom = s.bottom - t.top + "px") : (this.container_.style.left = this.forElement_.offsetLeft + "px", this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + "px")) } this.toggle(e) }, d.prototype.handleForKeyboardEvent_ = function (e) { if (this.element_ && this.container_ && this.forElement_) { var t = this.element_.querySelectorAll("." + this.CssClasses_.ITEM + ":not([disabled])"); t && t.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE) && (e.keyCode === this.Keycodes_.UP_ARROW ? (e.preventDefault(), t[t.length - 1].focus()) : e.keyCode === this.Keycodes_.DOWN_ARROW && (e.preventDefault(), t[0].focus())) } }, d.prototype.handleItemKeyboardEvent_ = function (e) { if (this.element_ && this.container_) { var t = this.element_.querySelectorAll("." + this.CssClasses_.ITEM + ":not([disabled])"); if (t && t.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) { var s = Array.prototype.slice.call(t).indexOf(e.target); if (e.keyCode === this.Keycodes_.UP_ARROW) e.preventDefault(), s > 0 ? t[s - 1].focus() : t[t.length - 1].focus(); else if (e.keyCode === this.Keycodes_.DOWN_ARROW) e.preventDefault(), t.length > s + 1 ? t[s + 1].focus() : t[0].focus(); else if (e.keyCode === this.Keycodes_.SPACE || e.keyCode === this.Keycodes_.ENTER) { e.preventDefault(); var i = new MouseEvent("mousedown"); e.target.dispatchEvent(i), i = new MouseEvent("mouseup"), e.target.dispatchEvent(i), e.target.click() } else e.keyCode === this.Keycodes_.ESCAPE && (e.preventDefault(), this.hide()) } } }, d.prototype.handleItemClick_ = function (e) { e.target.hasAttribute("disabled") ? e.stopPropagation() : (this.closing_ = !0, window.setTimeout(function (e) { this.hide(), this.closing_ = !1 }.bind(this), this.Constant_.CLOSE_TIMEOUT)) }, d.prototype.applyClip_ = function (e, t) { this.element_.classList.contains(this.CssClasses_.UNALIGNED) ? this.element_.style.clip = "" : this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) ? this.element_.style.clip = "rect(0 " + t + "px 0 " + t + "px)" : this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ? this.element_.style.clip = "rect(" + e + "px 0 " + e + "px 0)" : this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? this.element_.style.clip = "rect(" + e + "px " + t + "px " + e + "px " + t + "px)" : this.element_.style.clip = "" }, d.prototype.removeAnimationEndListener_ = function (e) { e.target.classList.remove(d.prototype.CssClasses_.IS_ANIMATING) }, d.prototype.addAnimationEndListener_ = function () { this.element_.addEventListener("transitionend", this.removeAnimationEndListener_), this.element_.addEventListener("webkitTransitionEnd", this.removeAnimationEndListener_) }, d.prototype.show = function (e) { if (this.element_ && this.container_ && this.outline_) { var t = this.element_.getBoundingClientRect().height, s = this.element_.getBoundingClientRect().width; this.container_.style.width = s + "px", this.container_.style.height = t + "px", this.outline_.style.width = s + "px", this.outline_.style.height = t + "px"; for (var i = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION, n = this.element_.querySelectorAll("." + this.CssClasses_.ITEM), a = 0; a < n.length; a++) { var l = null; l = this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? (t - n[a].offsetTop - n[a].offsetHeight) / t * i + "s" : n[a].offsetTop / t * i + "s", n[a].style.transitionDelay = l } this.applyClip_(t, s), window.requestAnimationFrame(function () { this.element_.classList.add(this.CssClasses_.IS_ANIMATING), this.element_.style.clip = "rect(0 " + s + "px " + t + "px 0)", this.container_.classList.add(this.CssClasses_.IS_VISIBLE) }.bind(this)), this.addAnimationEndListener_(); var o = function (t) { t === e || this.closing_ || t.target.parentNode === this.element_ || (document.removeEventListener("click", o), this.hide()) }.bind(this); document.addEventListener("click", o) } }, d.prototype.show = d.prototype.show, d.prototype.hide = function () { if (this.element_ && this.container_ && this.outline_) { for (var e = this.element_.querySelectorAll("." + this.CssClasses_.ITEM), t = 0; t < e.length; t++) e[t].style.removeProperty("transition-delay"); var s = this.element_.getBoundingClientRect(), i = s.height, n = s.width; this.element_.classList.add(this.CssClasses_.IS_ANIMATING), this.applyClip_(i, n), this.container_.classList.remove(this.CssClasses_.IS_VISIBLE), this.addAnimationEndListener_() } }, d.prototype.hide = d.prototype.hide, d.prototype.toggle = function (e) { this.container_.classList.contains(this.CssClasses_.IS_VISIBLE) ? this.hide() : this.show(e) }, d.prototype.toggle = d.prototype.toggle, s.register({ constructor: d, classAsString: "MaterialMenu", cssClass: "mdl-js-menu", widget: !0 }); var h = function (e) { this.element_ = e, this.init() }; window.MaterialProgress = h, h.prototype.Constant_ = {}, h.prototype.CssClasses_ = {INDETERMINATE_CLASS: "mdl-progress__indeterminate"}, h.prototype.setProgress = function (e) { this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS) || (this.progressbar_.style.width = e + "%") }, h.prototype.setProgress = h.prototype.setProgress, h.prototype.setBuffer = function (e) { this.bufferbar_.style.width = e + "%", this.auxbar_.style.width = 100 - e + "%" }, h.prototype.setBuffer = h.prototype.setBuffer, h.prototype.init = function () { if (this.element_) { var e = document.createElement("div"); e.className = "progressbar bar bar1", this.element_.appendChild(e), this.progressbar_ = e, e = document.createElement("div"), e.className = "bufferbar bar bar2", this.element_.appendChild(e), this.bufferbar_ = e, e = document.createElement("div"), e.className = "auxbar bar bar3", this.element_.appendChild(e), this.auxbar_ = e, this.progressbar_.style.width = "0%", this.bufferbar_.style.width = "100%", this.auxbar_.style.width = "0%", this.element_.classList.add("is-upgraded") } }, s.register({constructor: h, classAsString: "MaterialProgress", cssClass: "mdl-js-progress", widget: !0}); var c = function (e) { this.element_ = e, this.init() }; window.MaterialRadio = c, c.prototype.Constant_ = {TINY_TIMEOUT: .001}, c.prototype.CssClasses_ = { IS_FOCUSED: "is-focused", IS_DISABLED: "is-disabled", IS_CHECKED: "is-checked", IS_UPGRADED: "is-upgraded", JS_RADIO: "mdl-js-radio", RADIO_BTN: "mdl-radio__button", RADIO_OUTER_CIRCLE: "mdl-radio__outer-circle", RADIO_INNER_CIRCLE: "mdl-radio__inner-circle", RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE_CONTAINER: "mdl-radio__ripple-container", RIPPLE_CENTER: "mdl-ripple--center", RIPPLE: "mdl-ripple" }, c.prototype.onChange_ = function (e) { for (var t = document.getElementsByClassName(this.CssClasses_.JS_RADIO), s = 0; s < t.length; s++) { var i = t[s].querySelector("." + this.CssClasses_.RADIO_BTN); i.getAttribute("name") === this.btnElement_.getAttribute("name") && "undefined" != typeof t[s].MaterialRadio && t[s].MaterialRadio.updateClasses_() } }, c.prototype.onFocus_ = function (e) { this.element_.classList.add(this.CssClasses_.IS_FOCUSED) }, c.prototype.onBlur_ = function (e) { this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, c.prototype.onMouseup_ = function (e) { this.blur_() }, c.prototype.updateClasses_ = function () { this.checkDisabled(), this.checkToggleState() }, c.prototype.blur_ = function () { window.setTimeout(function () { this.btnElement_.blur() }.bind(this), this.Constant_.TINY_TIMEOUT) }, c.prototype.checkDisabled = function () { this.btnElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED) }, c.prototype.checkDisabled = c.prototype.checkDisabled, c.prototype.checkToggleState = function () { this.btnElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED) }, c.prototype.checkToggleState = c.prototype.checkToggleState, c.prototype.disable = function () { this.btnElement_.disabled = !0, this.updateClasses_() }, c.prototype.disable = c.prototype.disable, c.prototype.enable = function () { this.btnElement_.disabled = !1, this.updateClasses_() }, c.prototype.enable = c.prototype.enable, c.prototype.check = function () { this.btnElement_.checked = !0, this.onChange_(null) }, c.prototype.check = c.prototype.check, c.prototype.uncheck = function () { this.btnElement_.checked = !1, this.onChange_(null) }, c.prototype.uncheck = c.prototype.uncheck, c.prototype.init = function () { if (this.element_) { this.btnElement_ = this.element_.querySelector("." + this.CssClasses_.RADIO_BTN), this.boundChangeHandler_ = this.onChange_.bind(this), this.boundFocusHandler_ = this.onChange_.bind(this), this.boundBlurHandler_ = this.onBlur_.bind(this), this.boundMouseUpHandler_ = this.onMouseup_.bind(this); var e = document.createElement("span"); e.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE); var t = document.createElement("span"); t.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE), this.element_.appendChild(e), this.element_.appendChild(t); var s; if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) { this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), s = document.createElement("span"), s.classList.add(this.CssClasses_.RIPPLE_CONTAINER), s.classList.add(this.CssClasses_.RIPPLE_EFFECT), s.classList.add(this.CssClasses_.RIPPLE_CENTER), s.addEventListener("mouseup", this.boundMouseUpHandler_); var i = document.createElement("span"); i.classList.add(this.CssClasses_.RIPPLE), s.appendChild(i), this.element_.appendChild(s) } this.btnElement_.addEventListener("change", this.boundChangeHandler_), this.btnElement_.addEventListener("focus", this.boundFocusHandler_), this.btnElement_.addEventListener("blur", this.boundBlurHandler_), this.element_.addEventListener("mouseup", this.boundMouseUpHandler_), this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED) } }, s.register({constructor: c, classAsString: "MaterialRadio", cssClass: "mdl-js-radio", widget: !0}); var p = function (e) { this.element_ = e, this.isIE_ = window.navigator.msPointerEnabled, this.init() }; window.MaterialSlider = p, p.prototype.Constant_ = {}, p.prototype.CssClasses_ = { IE_CONTAINER: "mdl-slider__ie-container", SLIDER_CONTAINER: "mdl-slider__container", BACKGROUND_FLEX: "mdl-slider__background-flex", BACKGROUND_LOWER: "mdl-slider__background-lower", BACKGROUND_UPPER: "mdl-slider__background-upper", IS_LOWEST_VALUE: "is-lowest-value", IS_UPGRADED: "is-upgraded" }, p.prototype.onInput_ = function (e) { this.updateValueStyles_() }, p.prototype.onChange_ = function (e) { this.updateValueStyles_() }, p.prototype.onMouseUp_ = function (e) { e.target.blur() }, p.prototype.onContainerMouseDown_ = function (e) { if (e.target === this.element_.parentElement) { e.preventDefault(); var t = new MouseEvent("mousedown", { target: e.target, buttons: e.buttons, clientX: e.clientX, clientY: this.element_.getBoundingClientRect().y }); this.element_.dispatchEvent(t) } }, p.prototype.updateValueStyles_ = function () { var e = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min); 0 === e ? this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE) : this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE), this.isIE_ || (this.backgroundLower_.style.flex = e, this.backgroundLower_.style.webkitFlex = e, this.backgroundUpper_.style.flex = 1 - e, this.backgroundUpper_.style.webkitFlex = 1 - e) }, p.prototype.disable = function () { this.element_.disabled = !0 }, p.prototype.disable = p.prototype.disable, p.prototype.enable = function () { this.element_.disabled = !1 }, p.prototype.enable = p.prototype.enable, p.prototype.change = function (e) { "undefined" != typeof e && (this.element_.value = e), this.updateValueStyles_() }, p.prototype.change = p.prototype.change, p.prototype.init = function () { if (this.element_) { if (this.isIE_) { var e = document.createElement("div"); e.classList.add(this.CssClasses_.IE_CONTAINER), this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_) } else { var t = document.createElement("div"); t.classList.add(this.CssClasses_.SLIDER_CONTAINER), this.element_.parentElement.insertBefore(t, this.element_), this.element_.parentElement.removeChild(this.element_), t.appendChild(this.element_); var s = document.createElement("div"); s.classList.add(this.CssClasses_.BACKGROUND_FLEX), t.appendChild(s), this.backgroundLower_ = document.createElement("div"), this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER), s.appendChild(this.backgroundLower_), this.backgroundUpper_ = document.createElement("div"), this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER), s.appendChild(this.backgroundUpper_) } this.boundInputHandler = this.onInput_.bind(this), this.boundChangeHandler = this.onChange_.bind(this), this.boundMouseUpHandler = this.onMouseUp_.bind(this), this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this), this.element_.addEventListener("input", this.boundInputHandler), this.element_.addEventListener("change", this.boundChangeHandler), this.element_.addEventListener("mouseup", this.boundMouseUpHandler), this.element_.parentElement.addEventListener("mousedown", this.boundContainerMouseDownHandler), this.updateValueStyles_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED) } }, s.register({constructor: p, classAsString: "MaterialSlider", cssClass: "mdl-js-slider", widget: !0}); var C = function (e) { if (this.element_ = e, this.textElement_ = this.element_.querySelector("." + this.cssClasses_.MESSAGE), this.actionElement_ = this.element_.querySelector("." + this.cssClasses_.ACTION), !this.textElement_) throw new Error("There must be a message element for a snackbar."); if (!this.actionElement_) throw new Error("There must be an action element for a snackbar."); this.active = !1, this.actionHandler_ = void 0, this.message_ = void 0, this.actionText_ = void 0, this.queuedNotifications_ = [], this.setActionHidden_(!0) }; window.MaterialSnackbar = C, C.prototype.Constant_ = {ANIMATION_LENGTH: 250}, C.prototype.cssClasses_ = { SNACKBAR: "mdl-snackbar", MESSAGE: "mdl-snackbar__text", ACTION: "mdl-snackbar__action", ACTIVE: "mdl-snackbar--active" }, C.prototype.displaySnackbar_ = function () { this.element_.setAttribute("aria-hidden", "true"), this.actionHandler_ && (this.actionElement_.textContent = this.actionText_, this.actionElement_.addEventListener("click", this.actionHandler_), this.setActionHidden_(!1)), this.textElement_.textContent = this.message_, this.element_.classList.add(this.cssClasses_.ACTIVE), this.element_.setAttribute("aria-hidden", "false"), setTimeout(this.cleanup_.bind(this), this.timeout_) }, C.prototype.showSnackbar = function (e) { if (void 0 === e) throw new Error("Please provide a data object with at least a message to display."); if (void 0 === e.message) throw new Error("Please provide a message to be displayed."); if (e.actionHandler && !e.actionText) throw new Error("Please provide action text with the handler."); this.active ? this.queuedNotifications_.push(e) : (this.active = !0, this.message_ = e.message, e.timeout ? this.timeout_ = e.timeout : this.timeout_ = 2750, e.actionHandler && (this.actionHandler_ = e.actionHandler), e.actionText && (this.actionText_ = e.actionText), this.displaySnackbar_()) }, C.prototype.showSnackbar = C.prototype.showSnackbar, C.prototype.checkQueue_ = function () { this.queuedNotifications_.length > 0 && this.showSnackbar(this.queuedNotifications_.shift()) }, C.prototype.cleanup_ = function () { this.element_.classList.remove(this.cssClasses_.ACTIVE), setTimeout(function () { this.element_.setAttribute("aria-hidden", "true"), this.textElement_.textContent = "", Boolean(this.actionElement_.getAttribute("aria-hidden")) || (this.setActionHidden_(!0), this.actionElement_.textContent = "", this.actionElement_.removeEventListener("click", this.actionHandler_)), this.actionHandler_ = void 0, this.message_ = void 0, this.actionText_ = void 0, this.active = !1, this.checkQueue_() }.bind(this), this.Constant_.ANIMATION_LENGTH) }, C.prototype.setActionHidden_ = function (e) { e ? this.actionElement_.setAttribute("aria-hidden", "true") : this.actionElement_.removeAttribute("aria-hidden") }, s.register({constructor: C, classAsString: "MaterialSnackbar", cssClass: "mdl-js-snackbar", widget: !0}); var u = function (e) { this.element_ = e, this.init() }; window.MaterialSpinner = u, u.prototype.Constant_ = {MDL_SPINNER_LAYER_COUNT: 4}, u.prototype.CssClasses_ = { MDL_SPINNER_LAYER: "mdl-spinner__layer", MDL_SPINNER_CIRCLE_CLIPPER: "mdl-spinner__circle-clipper", MDL_SPINNER_CIRCLE: "mdl-spinner__circle", MDL_SPINNER_GAP_PATCH: "mdl-spinner__gap-patch", MDL_SPINNER_LEFT: "mdl-spinner__left", MDL_SPINNER_RIGHT: "mdl-spinner__right" }, u.prototype.createLayer = function (e) { var t = document.createElement("div"); t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER), t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + "-" + e); var s = document.createElement("div"); s.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER), s.classList.add(this.CssClasses_.MDL_SPINNER_LEFT); var i = document.createElement("div"); i.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH); var n = document.createElement("div"); n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER), n.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT); for (var a = [s, i, n], l = 0; l < a.length; l++) { var o = document.createElement("div"); o.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE), a[l].appendChild(o) } t.appendChild(s), t.appendChild(i), t.appendChild(n), this.element_.appendChild(t) }, u.prototype.createLayer = u.prototype.createLayer, u.prototype.stop = function () { this.element_.classList.remove("is-active") }, u.prototype.stop = u.prototype.stop, u.prototype.start = function () { this.element_.classList.add("is-active") }, u.prototype.start = u.prototype.start, u.prototype.init = function () { if (this.element_) { for (var e = 1; e <= this.Constant_.MDL_SPINNER_LAYER_COUNT; e++) this.createLayer(e); this.element_.classList.add("is-upgraded") } }, s.register({constructor: u, classAsString: "MaterialSpinner", cssClass: "mdl-js-spinner", widget: !0}); var E = function (e) { this.element_ = e, this.init() }; window.MaterialSwitch = E, E.prototype.Constant_ = {TINY_TIMEOUT: .001}, E.prototype.CssClasses_ = { INPUT: "mdl-switch__input", TRACK: "mdl-switch__track", THUMB: "mdl-switch__thumb", FOCUS_HELPER: "mdl-switch__focus-helper", RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE_CONTAINER: "mdl-switch__ripple-container", RIPPLE_CENTER: "mdl-ripple--center", RIPPLE: "mdl-ripple", IS_FOCUSED: "is-focused", IS_DISABLED: "is-disabled", IS_CHECKED: "is-checked" }, E.prototype.onChange_ = function (e) { this.updateClasses_() }, E.prototype.onFocus_ = function (e) { this.element_.classList.add(this.CssClasses_.IS_FOCUSED) }, E.prototype.onBlur_ = function (e) { this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, E.prototype.onMouseUp_ = function (e) { this.blur_() }, E.prototype.updateClasses_ = function () { this.checkDisabled(), this.checkToggleState() }, E.prototype.blur_ = function () { window.setTimeout(function () { this.inputElement_.blur() }.bind(this), this.Constant_.TINY_TIMEOUT) }, E.prototype.checkDisabled = function () { this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED) }, E.prototype.checkDisabled = E.prototype.checkDisabled, E.prototype.checkToggleState = function () { this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED) }, E.prototype.checkToggleState = E.prototype.checkToggleState, E.prototype.disable = function () { this.inputElement_.disabled = !0, this.updateClasses_() }, E.prototype.disable = E.prototype.disable, E.prototype.enable = function () { this.inputElement_.disabled = !1, this.updateClasses_() }, E.prototype.enable = E.prototype.enable, E.prototype.on = function () { this.inputElement_.checked = !0, this.updateClasses_() }, E.prototype.on = E.prototype.on, E.prototype.off = function () { this.inputElement_.checked = !1, this.updateClasses_() }, E.prototype.off = E.prototype.off, E.prototype.init = function () { if (this.element_) { this.inputElement_ = this.element_.querySelector("." + this.CssClasses_.INPUT); var e = document.createElement("div"); e.classList.add(this.CssClasses_.TRACK); var t = document.createElement("div"); t.classList.add(this.CssClasses_.THUMB); var s = document.createElement("span"); if (s.classList.add(this.CssClasses_.FOCUS_HELPER), t.appendChild(s), this.element_.appendChild(e), this.element_.appendChild(t), this.boundMouseUpHandler = this.onMouseUp_.bind(this), this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) { this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement("span"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.rippleContainerElement_.addEventListener("mouseup", this.boundMouseUpHandler); var i = document.createElement("span"); i.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(i), this.element_.appendChild(this.rippleContainerElement_) } this.boundChangeHandler = this.onChange_.bind(this), this.boundFocusHandler = this.onFocus_.bind(this), this.boundBlurHandler = this.onBlur_.bind(this), this.inputElement_.addEventListener("change", this.boundChangeHandler), this.inputElement_.addEventListener("focus", this.boundFocusHandler), this.inputElement_.addEventListener("blur", this.boundBlurHandler), this.element_.addEventListener("mouseup", this.boundMouseUpHandler), this.updateClasses_(), this.element_.classList.add("is-upgraded") } }, s.register({constructor: E, classAsString: "MaterialSwitch", cssClass: "mdl-js-switch", widget: !0}); var m = function (e) { this.element_ = e, this.init() }; window.MaterialTabs = m, m.prototype.Constant_ = {}, m.prototype.CssClasses_ = { TAB_CLASS: "mdl-tabs__tab", PANEL_CLASS: "mdl-tabs__panel", ACTIVE_CLASS: "is-active", UPGRADED_CLASS: "is-upgraded", MDL_JS_RIPPLE_EFFECT: "mdl-js-ripple-effect", MDL_RIPPLE_CONTAINER: "mdl-tabs__ripple-container", MDL_RIPPLE: "mdl-ripple", MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events" }, m.prototype.initTabs_ = function () { this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT) && this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS), this.tabs_ = this.element_.querySelectorAll("." + this.CssClasses_.TAB_CLASS), this.panels_ = this.element_.querySelectorAll("." + this.CssClasses_.PANEL_CLASS); for (var t = 0; t < this.tabs_.length; t++) new e(this.tabs_[t], this); this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS) }, m.prototype.resetTabState_ = function () { for (var e = 0; e < this.tabs_.length; e++) this.tabs_[e].classList.remove(this.CssClasses_.ACTIVE_CLASS) }, m.prototype.resetPanelState_ = function () { for (var e = 0; e < this.panels_.length; e++) this.panels_[e].classList.remove(this.CssClasses_.ACTIVE_CLASS) }, m.prototype.init = function () { this.element_ && this.initTabs_() }, s.register({constructor: m, classAsString: "MaterialTabs", cssClass: "mdl-js-tabs"}); var L = function (e) { this.element_ = e, this.maxRows = this.Constant_.NO_MAX_ROWS, this.init() }; window.MaterialTextfield = L, L.prototype.Constant_ = { NO_MAX_ROWS: -1, MAX_ROWS_ATTRIBUTE: "maxrows" }, L.prototype.CssClasses_ = { LABEL: "mdl-textfield__label", INPUT: "mdl-textfield__input", IS_DIRTY: "is-dirty", IS_FOCUSED: "is-focused", IS_DISABLED: "is-disabled", IS_INVALID: "is-invalid", IS_UPGRADED: "is-upgraded", HAS_PLACEHOLDER: "has-placeholder" }, L.prototype.onKeyDown_ = function (e) { var t = e.target.value.split("\n").length; 13 === e.keyCode && t >= this.maxRows && e.preventDefault() }, L.prototype.onFocus_ = function (e) { this.element_.classList.add(this.CssClasses_.IS_FOCUSED) }, L.prototype.onBlur_ = function (e) { this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, L.prototype.onReset_ = function (e) { this.updateClasses_() }, L.prototype.updateClasses_ = function () { this.checkDisabled(), this.checkValidity(), this.checkDirty(), this.checkFocus() }, L.prototype.checkDisabled = function () { this.input_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED) }, L.prototype.checkDisabled = L.prototype.checkDisabled, L.prototype.checkFocus = function () { Boolean(this.element_.querySelector(":focus")) ? this.element_.classList.add(this.CssClasses_.IS_FOCUSED) : this.element_.classList.remove(this.CssClasses_.IS_FOCUSED) }, L.prototype.checkFocus = L.prototype.checkFocus, L.prototype.checkValidity = function () { this.input_.validity && (this.input_.validity.valid ? this.element_.classList.remove(this.CssClasses_.IS_INVALID) : this.element_.classList.add(this.CssClasses_.IS_INVALID)) }, L.prototype.checkValidity = L.prototype.checkValidity, L.prototype.checkDirty = function () { this.input_.value && this.input_.value.length > 0 ? this.element_.classList.add(this.CssClasses_.IS_DIRTY) : this.element_.classList.remove(this.CssClasses_.IS_DIRTY) }, L.prototype.checkDirty = L.prototype.checkDirty, L.prototype.disable = function () { this.input_.disabled = !0, this.updateClasses_() }, L.prototype.disable = L.prototype.disable, L.prototype.enable = function () { this.input_.disabled = !1, this.updateClasses_() }, L.prototype.enable = L.prototype.enable, L.prototype.change = function (e) { this.input_.value = e || "", this.updateClasses_() }, L.prototype.change = L.prototype.change, L.prototype.init = function () { if (this.element_ && (this.label_ = this.element_.querySelector("." + this.CssClasses_.LABEL), this.input_ = this.element_.querySelector("." + this.CssClasses_.INPUT), this.input_)) { this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE) && (this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10), isNaN(this.maxRows) && (this.maxRows = this.Constant_.NO_MAX_ROWS)), this.input_.hasAttribute("placeholder") && this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER), this.boundUpdateClassesHandler = this.updateClasses_.bind(this), this.boundFocusHandler = this.onFocus_.bind(this), this.boundBlurHandler = this.onBlur_.bind(this), this.boundResetHandler = this.onReset_.bind(this), this.input_.addEventListener("input", this.boundUpdateClassesHandler), this.input_.addEventListener("focus", this.boundFocusHandler), this.input_.addEventListener("blur", this.boundBlurHandler), this.input_.addEventListener("reset", this.boundResetHandler), this.maxRows !== this.Constant_.NO_MAX_ROWS && (this.boundKeyDownHandler = this.onKeyDown_.bind(this), this.input_.addEventListener("keydown", this.boundKeyDownHandler)); var e = this.element_.classList.contains(this.CssClasses_.IS_INVALID); this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED), e && this.element_.classList.add(this.CssClasses_.IS_INVALID), this.input_.hasAttribute("autofocus") && (this.element_.focus(), this.checkFocus()) } }, s.register({constructor: L, classAsString: "MaterialTextfield", cssClass: "mdl-js-textfield", widget: !0}); var I = function (e) { this.element_ = e, this.init() }; window.MaterialTooltip = I, I.prototype.Constant_ = {}, I.prototype.CssClasses_ = { IS_ACTIVE: "is-active", BOTTOM: "mdl-tooltip--bottom", LEFT: "mdl-tooltip--left", RIGHT: "mdl-tooltip--right", TOP: "mdl-tooltip--top" }, I.prototype.handleMouseEnter_ = function (e) { var t = e.target.getBoundingClientRect(), s = t.left + t.width / 2, i = t.top + t.height / 2, n = -1 * (this.element_.offsetWidth / 2), a = -1 * (this.element_.offsetHeight / 2); this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT) ? (s = t.width / 2, i + a < 0 ? (this.element_.style.top = "0", this.element_.style.marginTop = "0") : (this.element_.style.top = i + "px", this.element_.style.marginTop = a + "px")) : s + n < 0 ? (this.element_.style.left = "0", this.element_.style.marginLeft = "0") : (this.element_.style.left = s + "px", this.element_.style.marginLeft = n + "px"), this.element_.classList.contains(this.CssClasses_.TOP) ? this.element_.style.top = t.top - this.element_.offsetHeight - 10 + "px" : this.element_.classList.contains(this.CssClasses_.RIGHT) ? this.element_.style.left = t.left + t.width + 10 + "px" : this.element_.classList.contains(this.CssClasses_.LEFT) ? this.element_.style.left = t.left - this.element_.offsetWidth - 10 + "px" : this.element_.style.top = t.top + t.height + 10 + "px", this.element_.classList.add(this.CssClasses_.IS_ACTIVE) }, I.prototype.hideTooltip_ = function () { this.element_.classList.remove(this.CssClasses_.IS_ACTIVE) }, I.prototype.init = function () { if (this.element_) { var e = this.element_.getAttribute("for") || this.element_.getAttribute("data-mdl-for"); e && (this.forElement_ = document.getElementById(e)), this.forElement_ && (this.forElement_.hasAttribute("tabindex") || this.forElement_.setAttribute("tabindex", "0"), this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this), this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this), this.forElement_.addEventListener("mouseenter", this.boundMouseEnterHandler, !1), this.forElement_.addEventListener("touchend", this.boundMouseEnterHandler, !1), this.forElement_.addEventListener("mouseleave", this.boundMouseLeaveAndScrollHandler, !1), window.addEventListener("scroll", this.boundMouseLeaveAndScrollHandler, !0), window.addEventListener("touchstart", this.boundMouseLeaveAndScrollHandler)) } }, s.register({constructor: I, classAsString: "MaterialTooltip", cssClass: "mdl-tooltip"}); var f = function (e) { this.element_ = e, this.init() }; window.MaterialLayout = f, f.prototype.Constant_ = { MAX_WIDTH: "(max-width: 1024px)", TAB_SCROLL_PIXELS: 100, RESIZE_TIMEOUT: 100, MENU_ICON: "", CHEVRON_LEFT: "chevron_left", CHEVRON_RIGHT: "chevron_right" }, f.prototype.Keycodes_ = {ENTER: 13, ESCAPE: 27, SPACE: 32}, f.prototype.Mode_ = { STANDARD: 0, SEAMED: 1, WATERFALL: 2, SCROLL: 3 }, f.prototype.CssClasses_ = { CONTAINER: "mdl-layout__container", HEADER: "mdl-layout__header", DRAWER: "mdl-layout__drawer", CONTENT: "mdl-layout__content", DRAWER_BTN: "mdl-layout__drawer-button", ICON: "material-icons", JS_RIPPLE_EFFECT: "mdl-js-ripple-effect", RIPPLE_CONTAINER: "mdl-layout__tab-ripple-container", RIPPLE: "mdl-ripple", RIPPLE_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", HEADER_SEAMED: "mdl-layout__header--seamed", HEADER_WATERFALL: "mdl-layout__header--waterfall", HEADER_SCROLL: "mdl-layout__header--scroll", FIXED_HEADER: "mdl-layout--fixed-header", OBFUSCATOR: "mdl-layout__obfuscator", TAB_BAR: "mdl-layout__tab-bar", TAB_CONTAINER: "mdl-layout__tab-bar-container", TAB: "mdl-layout__tab", TAB_BAR_BUTTON: "mdl-layout__tab-bar-button", TAB_BAR_LEFT_BUTTON: "mdl-layout__tab-bar-left-button", TAB_BAR_RIGHT_BUTTON: "mdl-layout__tab-bar-right-button", TAB_MANUAL_SWITCH: "mdl-layout__tab-manual-switch", PANEL: "mdl-layout__tab-panel", HAS_DRAWER: "has-drawer", HAS_TABS: "has-tabs", HAS_SCROLLING_HEADER: "has-scrolling-header", CASTING_SHADOW: "is-casting-shadow", IS_COMPACT: "is-compact", IS_SMALL_SCREEN: "is-small-screen", IS_DRAWER_OPEN: "is-visible", IS_ACTIVE: "is-active", IS_UPGRADED: "is-upgraded", IS_ANIMATING: "is-animating", ON_LARGE_SCREEN: "mdl-layout--large-screen-only", ON_SMALL_SCREEN: "mdl-layout--small-screen-only" }, f.prototype.contentScrollHandler_ = function () { if (!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) { var e = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER); this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT) ? (this.header_.classList.add(this.CssClasses_.CASTING_SHADOW), this.header_.classList.add(this.CssClasses_.IS_COMPACT), e && this.header_.classList.add(this.CssClasses_.IS_ANIMATING)) : this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT) && (this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW), this.header_.classList.remove(this.CssClasses_.IS_COMPACT), e && this.header_.classList.add(this.CssClasses_.IS_ANIMATING)) } }, f.prototype.keyboardEventHandler_ = function (e) { e.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN) && this.toggleDrawer() }, f.prototype.screenSizeHandler_ = function () { this.screenSizeMediaQuery_.matches ? this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN) : (this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN), this.drawer_ && (this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN), this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN))) }, f.prototype.drawerToggleHandler_ = function (e) { if (e && "keydown" === e.type) { if (e.keyCode !== this.Keycodes_.SPACE && e.keyCode !== this.Keycodes_.ENTER) return; e.preventDefault() } this.toggleDrawer() }, f.prototype.headerTransitionEndHandler_ = function () { this.header_.classList.remove(this.CssClasses_.IS_ANIMATING) }, f.prototype.headerClickHandler_ = function () { this.header_.classList.contains(this.CssClasses_.IS_COMPACT) && (this.header_.classList.remove(this.CssClasses_.IS_COMPACT), this.header_.classList.add(this.CssClasses_.IS_ANIMATING)) }, f.prototype.resetTabState_ = function (e) { for (var t = 0; t < e.length; t++) e[t].classList.remove(this.CssClasses_.IS_ACTIVE) }, f.prototype.resetPanelState_ = function (e) { for (var t = 0; t < e.length; t++) e[t].classList.remove(this.CssClasses_.IS_ACTIVE) }, f.prototype.toggleDrawer = function () { var e = this.element_.querySelector("." + this.CssClasses_.DRAWER_BTN); this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN), this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN), this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN) ? (this.drawer_.setAttribute("aria-hidden", "false"), e.setAttribute("aria-expanded", "true")) : (this.drawer_.setAttribute("aria-hidden", "true"), e.setAttribute("aria-expanded", "false")) }, f.prototype.toggleDrawer = f.prototype.toggleDrawer, f.prototype.init = function () { if (this.element_) { var e = document.createElement("div"); e.classList.add(this.CssClasses_.CONTAINER); var s = this.element_.querySelector(":focus"); this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_), s && s.focus(); for (var i = this.element_.childNodes, n = i.length, a = 0; a < n; a++) { var l = i[a]; l.classList && l.classList.contains(this.CssClasses_.HEADER) && (this.header_ = l), l.classList && l.classList.contains(this.CssClasses_.DRAWER) && (this.drawer_ = l), l.classList && l.classList.contains(this.CssClasses_.CONTENT) && (this.content_ = l) } window.addEventListener("pageshow", function (e) { e.persisted && (this.element_.style.overflowY = "hidden", requestAnimationFrame(function () { this.element_.style.overflowY = "" }.bind(this))) }.bind(this), !1), this.header_ && (this.tabBar_ = this.header_.querySelector("." + this.CssClasses_.TAB_BAR)); var o = this.Mode_.STANDARD; if (this.header_ && (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED) ? o = this.Mode_.SEAMED : this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL) ? (o = this.Mode_.WATERFALL, this.header_.addEventListener("transitionend", this.headerTransitionEndHandler_.bind(this)), this.header_.addEventListener("click", this.headerClickHandler_.bind(this))) : this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL) && (o = this.Mode_.SCROLL, e.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER)), o === this.Mode_.STANDARD ? (this.header_.classList.add(this.CssClasses_.CASTING_SHADOW), this.tabBar_ && this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW)) : o === this.Mode_.SEAMED || o === this.Mode_.SCROLL ? (this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW), this.tabBar_ && this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW)) : o === this.Mode_.WATERFALL && (this.content_.addEventListener("scroll", this.contentScrollHandler_.bind(this)), this.contentScrollHandler_())), this.drawer_) { var r = this.element_.querySelector("." + this.CssClasses_.DRAWER_BTN); if (!r) { r = document.createElement("div"), r.setAttribute("aria-expanded", "false"), r.setAttribute("role", "button"), r.setAttribute("tabindex", "0"), r.classList.add(this.CssClasses_.DRAWER_BTN); var _ = document.createElement("i"); _.classList.add(this.CssClasses_.ICON), _.innerHTML = this.Constant_.MENU_ICON, r.appendChild(_) } this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN) ? r.classList.add(this.CssClasses_.ON_LARGE_SCREEN) : this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN) && r.classList.add(this.CssClasses_.ON_SMALL_SCREEN), r.addEventListener("click", this.drawerToggleHandler_.bind(this)), r.addEventListener("keydown", this.drawerToggleHandler_.bind(this)), this.element_.classList.add(this.CssClasses_.HAS_DRAWER), this.element_.classList.contains(this.CssClasses_.FIXED_HEADER) ? this.header_.insertBefore(r, this.header_.firstChild) : this.element_.insertBefore(r, this.content_); var d = document.createElement("div"); d.classList.add(this.CssClasses_.OBFUSCATOR), this.element_.appendChild(d), d.addEventListener("click", this.drawerToggleHandler_.bind(this)), this.obfuscator_ = d, this.drawer_.addEventListener("keydown", this.keyboardEventHandler_.bind(this)), this.drawer_.setAttribute("aria-hidden", "true") } if (this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH), this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this)), this.screenSizeHandler_(), this.header_ && this.tabBar_) { this.element_.classList.add(this.CssClasses_.HAS_TABS); var h = document.createElement("div"); h.classList.add(this.CssClasses_.TAB_CONTAINER), this.header_.insertBefore(h, this.tabBar_), this.header_.removeChild(this.tabBar_); var c = document.createElement("div"); c.classList.add(this.CssClasses_.TAB_BAR_BUTTON), c.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON); var p = document.createElement("i"); p.classList.add(this.CssClasses_.ICON), p.textContent = this.Constant_.CHEVRON_LEFT, c.appendChild(p), c.addEventListener("click", function () { this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS }.bind(this)); var C = document.createElement("div"); C.classList.add(this.CssClasses_.TAB_BAR_BUTTON), C.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON); var u = document.createElement("i"); u.classList.add(this.CssClasses_.ICON), u.textContent = this.Constant_.CHEVRON_RIGHT, C.appendChild(u), C.addEventListener("click", function () { this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS }.bind(this)), h.appendChild(c), h.appendChild(this.tabBar_), h.appendChild(C); var E = function () { this.tabBar_.scrollLeft > 0 ? c.classList.add(this.CssClasses_.IS_ACTIVE) : c.classList.remove(this.CssClasses_.IS_ACTIVE), this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth ? C.classList.add(this.CssClasses_.IS_ACTIVE) : C.classList.remove(this.CssClasses_.IS_ACTIVE) }.bind(this); this.tabBar_.addEventListener("scroll", E), E(); var m = function () { this.resizeTimeoutId_ && clearTimeout(this.resizeTimeoutId_), this.resizeTimeoutId_ = setTimeout(function () { E(), this.resizeTimeoutId_ = null }.bind(this), this.Constant_.RESIZE_TIMEOUT) }.bind(this); window.addEventListener("resize", m), this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT) && this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS); for (var L = this.tabBar_.querySelectorAll("." + this.CssClasses_.TAB), I = this.content_.querySelectorAll("." + this.CssClasses_.PANEL), f = 0; f < L.length; f++) new t(L[f], L, I, this) } this.element_.classList.add(this.CssClasses_.IS_UPGRADED) } }, window.MaterialLayoutTab = t, s.register({ constructor: f, classAsString: "MaterialLayout", cssClass: "mdl-js-layout" }); var b = function (e) { this.element_ = e, this.init() }; window.MaterialDataTable = b, b.prototype.Constant_ = {}, b.prototype.CssClasses_ = { DATA_TABLE: "mdl-data-table", SELECTABLE: "mdl-data-table--selectable", SELECT_ELEMENT: "mdl-data-table__select", IS_SELECTED: "is-selected", IS_UPGRADED: "is-upgraded" }, b.prototype.selectRow_ = function (e, t, s) { return t ? function () { e.checked ? t.classList.add(this.CssClasses_.IS_SELECTED) : t.classList.remove(this.CssClasses_.IS_SELECTED) }.bind(this) : s ? function () { var t, i; if (e.checked) for (t = 0; t < s.length; t++) i = s[t].querySelector("td").querySelector(".mdl-checkbox"), i.MaterialCheckbox.check(), s[t].classList.add(this.CssClasses_.IS_SELECTED); else for (t = 0; t < s.length; t++) i = s[t].querySelector("td").querySelector(".mdl-checkbox"), i.MaterialCheckbox.uncheck(), s[t].classList.remove(this.CssClasses_.IS_SELECTED) }.bind(this) : void 0 }, b.prototype.createCheckbox_ = function (e, t) { var i = document.createElement("label"), n = ["mdl-checkbox", "mdl-js-checkbox", "mdl-js-ripple-effect", this.CssClasses_.SELECT_ELEMENT]; i.className = n.join(" "); var a = document.createElement("input"); return a.type = "checkbox", a.classList.add("mdl-checkbox__input"), e ? (a.checked = e.classList.contains(this.CssClasses_.IS_SELECTED), a.addEventListener("change", this.selectRow_(a, e))) : t && a.addEventListener("change", this.selectRow_(a, null, t)), i.appendChild(a), s.upgradeElement(i, "MaterialCheckbox"), i }, b.prototype.init = function () { if (this.element_) { var e = this.element_.querySelector("th"), t = Array.prototype.slice.call(this.element_.querySelectorAll("tbody tr")), s = Array.prototype.slice.call(this.element_.querySelectorAll("tfoot tr")), i = t.concat(s); if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) { var n = document.createElement("th"), a = this.createCheckbox_(null, i); n.appendChild(a), e.parentElement.insertBefore(n, e); for (var l = 0; l < i.length; l++) { var o = i[l].querySelector("td"); if (o) { var r = document.createElement("td"); if ("TBODY" === i[l].parentNode.nodeName.toUpperCase()) { var _ = this.createCheckbox_(i[l]); r.appendChild(_) } i[l].insertBefore(r, o) } } this.element_.classList.add(this.CssClasses_.IS_UPGRADED) } } }, s.register({constructor: b, classAsString: "MaterialDataTable", cssClass: "mdl-js-data-table"}); var S = function (e) { this.element_ = e, this.init() }; window.MaterialRipple = S, S.prototype.Constant_ = { INITIAL_SCALE: "scale(0.0001, 0.0001)", INITIAL_SIZE: "1px", INITIAL_OPACITY: "0.4", FINAL_OPACITY: "0", FINAL_SCALE: "" }, S.prototype.CssClasses_ = { RIPPLE_CENTER: "mdl-ripple--center", RIPPLE_EFFECT_IGNORE_EVENTS: "mdl-js-ripple-effect--ignore-events", RIPPLE: "mdl-ripple", IS_ANIMATING: "is-animating", IS_VISIBLE: "is-visible" }, S.prototype.downHandler_ = function (e) { if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) { var t = this.element_.getBoundingClientRect(); this.boundHeight = t.height, this.boundWidth = t.width, this.rippleSize_ = 2 * Math.sqrt(t.width * t.width + t.height * t.height) + 2, this.rippleElement_.style.width = this.rippleSize_ + "px", this.rippleElement_.style.height = this.rippleSize_ + "px" } if (this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE), "mousedown" === e.type && this.ignoringMouseDown_) this.ignoringMouseDown_ = !1; else { "touchstart" === e.type && (this.ignoringMouseDown_ = !0); var s = this.getFrameCount(); if (s > 0) return; this.setFrameCount(1); var i, n, a = e.currentTarget.getBoundingClientRect(); if (0 === e.clientX && 0 === e.clientY) i = Math.round(a.width / 2), n = Math.round(a.height / 2); else { var l = void 0 !== e.clientX ? e.clientX : e.touches[0].clientX, o = void 0 !== e.clientY ? e.clientY : e.touches[0].clientY; i = Math.round(l - a.left), n = Math.round(o - a.top) } this.setRippleXY(i, n), this.setRippleStyles(!0), window.requestAnimationFrame(this.animFrameHandler.bind(this)) } }, S.prototype.upHandler_ = function (e) { e && 2 !== e.detail && window.setTimeout(function () { this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE) }.bind(this), 0) }, S.prototype.init = function () { if (this.element_) { var e = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER); this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS) || (this.rippleElement_ = this.element_.querySelector("." + this.CssClasses_.RIPPLE), this.frameCount_ = 0, this.rippleSize_ = 0, this.x_ = 0, this.y_ = 0, this.ignoringMouseDown_ = !1, this.boundDownHandler = this.downHandler_.bind(this), this.element_.addEventListener("mousedown", this.boundDownHandler), this.element_.addEventListener("touchstart", this.boundDownHandler), this.boundUpHandler = this.upHandler_.bind(this), this.element_.addEventListener("mouseup", this.boundUpHandler), this.element_.addEventListener("mouseleave", this.boundUpHandler), this.element_.addEventListener("touchend", this.boundUpHandler), this.element_.addEventListener("blur", this.boundUpHandler), this.getFrameCount = function () { return this.frameCount_ }, this.setFrameCount = function (e) { this.frameCount_ = e }, this.getRippleElement = function () { return this.rippleElement_ }, this.setRippleXY = function (e, t) { this.x_ = e, this.y_ = t }, this.setRippleStyles = function (t) { if (null !== this.rippleElement_) { var s, i, n, a = "translate(" + this.x_ + "px, " + this.y_ + "px)"; t ? (i = this.Constant_.INITIAL_SCALE, n = this.Constant_.INITIAL_SIZE) : (i = this.Constant_.FINAL_SCALE, n = this.rippleSize_ + "px", e && (a = "translate(" + this.boundWidth / 2 + "px, " + this.boundHeight / 2 + "px)")), s = "translate(-50%, -50%) " + a + i, this.rippleElement_.style.webkitTransform = s, this.rippleElement_.style.msTransform = s, this.rippleElement_.style.transform = s, t ? this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING) : this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING) } }, this.animFrameHandler = function () { this.frameCount_-- > 0 ? window.requestAnimationFrame(this.animFrameHandler.bind(this)) : this.setRippleStyles(!1) }) } }, s.register({constructor: S, classAsString: "MaterialRipple", cssClass: "mdl-js-ripple-effect", widget: !1}) }(); //# sourceMappingURL=material.min.js.map