{"version":3,"sources":["webpack:///webpack/bootstrap fb02e771b796fffab8f5","webpack:///./node_modules/@material/base/foundation.js","webpack:///./node_modules/@material/ripple/adapter.js","webpack:///./node_modules/@material/ripple/util.js","webpack:///./module/mdc-ripple.js","webpack:///./node_modules/@material/ripple/index.js","webpack:///./node_modules/@material/base/component.js","webpack:///./node_modules/@material/ripple/foundation.js","webpack:///./node_modules/@material/ripple/constants.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","cssClasses","strings","numbers","defaultAdapter","constructor","adapter","this","adapter_","init","destroy","browserSupportsCssVars","isUnbounded","isSurfaceActive","isSurfaceDisabled","addClass","className","removeClass","containsEventTarget","target","registerInteractionHandler","evtType","handler","deregisterInteractionHandler","registerDocumentInteractionHandler","deregisterDocumentInteractionHandler","registerResizeHandler","deregisterResizeHandler","updateCssVariable","varName","value","computeBoundingRect","getWindowPageOffset","supportsCssVariables_","supportsPassive_","supportsCssVariables","windowObj","forceRefresh","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","document","node","createElement","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","remove","detectEdgePseudoVarBug","applyPassive","globalObj","window","undefined","isSupported","addEventListener","passive","e","getMatchesProperty","HTMLElementPrototype","filter","pop","getNormalizedEventCoords","ev","pageOffset","clientRect","x","y","documentX","left","documentY","top","normalizedX","normalizedY","type","changedTouches","pageX","pageY","_ripple","mdc","MDCRipple","util","MDCComponent","args","super","disabled","unbounded_","[object Object]","root","ripple","unbounded","instance","MATCHES","HTMLElement","root_","classList","add","contains","removeEventListener","documentElement","style","setProperty","getBoundingClientRect","pageXOffset","pageYOffset","Boolean","setUnbounded_","foundation_","setUnbounded","activate","deactivate","layout","getDefaultFoundation","MDCRippleFoundation","createAdapter","initialSyncWithDOM","dataset","RippleCapableSurface","_foundation","MDCFoundation","foundation","initialize","Error","listen","unlisten","emit","evtData","shouldBubble","evt","CustomEvent","detail","bubbles","createEvent","initCustomEvent","dispatchEvent","_constants","_util","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","assign","layoutFrame_","frame_","width","height","activationState_","defaultActivationState_","initialSize_","maxRadius_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","requestAnimationFrame","BG_FOCUSED","blurHandler_","resizeHandler_","unboundedCoords_","fgScale_","activationTimer_","fgDeactivationRemovalTimer_","activationAnimationHasEnded_","activationTimerCallback_","runDeactivationUXLogicIfReady_","previousActivationEvent_","isSupported_","isActivated","hasDeactivationUXRun","wasActivatedByPointer","wasElementMadeActive","activationEvent","isProgrammatic","registerRootHandlers_","ROOT","UNBOUNDED","layoutInternal_","clearTimeout","FG_ACTIVATION","deregisterRootHandlers_","deregisterDeactivationHandlers_","removeCssVars_","forEach","registerDeactivationHandlers_","keys","k","indexOf","activationState","previousActivationEvent","length","some","resetActivationState_","push","checkElementMadeActive_","animateActivation_","key","keyCode","event","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","FG_DEACTIVATION","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","startPoint","endPoint","getFgTranslationCoordinates_","rmBoundedActivationClasses_","setTimeout","FG_DEACTIVATION_MS","TAP_DELAY_MS","state","evtObject","animateDeactivation_","cancelAnimationFrame","maxDim","Math","max","sqrt","pow","PADDING","getBoundedRadius","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round"],"mappings":"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","file":"js/mdc-ripple.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap fb02e771b796fffab8f5","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @template A\n */\nclass MDCFoundation {\n /** @return enum{cssClasses} */\n static get cssClasses() {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n }\n\n /** @return enum{strings} */\n static get strings() {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n }\n\n /** @return enum{numbers} */\n static get numbers() {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n }\n\n /** @return {!Object} */\n static get defaultAdapter() {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n }\n\n /**\n * @param {A=} adapter\n */\n constructor(adapter = {}) {\n /** @protected {!A} */\n this.adapter_ = adapter;\n }\n\n init() {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n }\n\n destroy() {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n }\n}\n\nexport default MDCFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/base/foundation.js","/**\n * @license\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint no-unused-vars: [2, {\"args\": \"none\"}] */\n\n/**\n * Adapter for MDC Ripple. Provides an interface for managing\n * - classes\n * - dom\n * - CSS variables\n * - position\n * - dimensions\n * - scroll position\n * - event handlers\n * - unbounded, active and disabled states\n *\n * Additionally, provides type information for the adapter to the Closure\n * compiler.\n *\n * Implement this adapter for your framework of choice to delegate updates to\n * the component in your framework of choice. See architecture documentation\n * for more details.\n * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n *\n * @record\n */\nclass MDCRippleAdapter {\n /** @return {boolean} */\n browserSupportsCssVars() {}\n\n /** @return {boolean} */\n isUnbounded() {}\n\n /** @return {boolean} */\n isSurfaceActive() {}\n\n /** @return {boolean} */\n isSurfaceDisabled() {}\n\n /** @param {string} className */\n addClass(className) {}\n\n /** @param {string} className */\n removeClass(className) {}\n\n /** @param {!EventTarget} target */\n containsEventTarget(target) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n registerInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n deregisterInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n registerDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {string} evtType\n * @param {!Function} handler\n */\n deregisterDocumentInteractionHandler(evtType, handler) {}\n\n /**\n * @param {!Function} handler\n */\n registerResizeHandler(handler) {}\n\n /**\n * @param {!Function} handler\n */\n deregisterResizeHandler(handler) {}\n\n /**\n * @param {string} varName\n * @param {?number|string} value\n */\n updateCssVariable(varName, value) {}\n\n /** @return {!ClientRect} */\n computeBoundingRect() {}\n\n /** @return {{x: number, y: number}} */\n getWindowPageOffset() {}\n}\n\nexport default MDCRippleAdapter;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/ripple/adapter.js","/**\n * @license\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to detect CSS custom variable support.\n * @private {boolean|undefined}\n */\nlet supportsCssVariables_;\n\n/**\n * Stores result from applyPassive to avoid redundant processing to detect passive event listener support.\n * @private {boolean|undefined}\n */\nlet supportsPassive_;\n\n/**\n * @param {!Window} windowObj\n * @return {boolean}\n */\nfunction detectEdgePseudoVarBug(windowObj) {\n // Detect versions of Edge with buggy var() support\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11495448/\n const document = windowObj.document;\n const node = document.createElement('div');\n node.className = 'mdc-ripple-surface--test-edge-var-bug';\n document.body.appendChild(node);\n\n // The bug exists if ::before style ends up propagating to the parent element.\n // Additionally, getComputedStyle returns null in iframes with display: \"none\" in Firefox,\n // but Firefox is known to support CSS custom properties correctly.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n const computedStyle = windowObj.getComputedStyle(node);\n const hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n node.remove();\n return hasPseudoVarBug;\n}\n\n/**\n * @param {!Window} windowObj\n * @param {boolean=} forceRefresh\n * @return {boolean|undefined}\n */\n\nfunction supportsCssVariables(windowObj, forceRefresh = false) {\n let supportsCssVariables = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables;\n }\n\n const supportsFunctionPresent = windowObj.CSS && typeof windowObj.CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return;\n }\n\n const explicitlySupportsCssVars = windowObj.CSS.supports('--css-vars', 'yes');\n // See: https://bugs.webkit.org/show_bug.cgi?id=154669\n // See: README section on Safari\n const weAreFeatureDetectingSafari10plus = (\n windowObj.CSS.supports('(--css-vars: yes)') &&\n windowObj.CSS.supports('color', '#00000000')\n );\n\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVariables = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVariables = false;\n }\n\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVariables;\n }\n return supportsCssVariables;\n}\n\n//\n/**\n * Determine whether the current browser supports passive event listeners, and if so, use them.\n * @param {!Window=} globalObj\n * @param {boolean=} forceRefresh\n * @return {boolean|{passive: boolean}}\n */\nfunction applyPassive(globalObj = window, forceRefresh = false) {\n if (supportsPassive_ === undefined || forceRefresh) {\n let isSupported = false;\n try {\n globalObj.document.addEventListener('test', null, {get passive() {\n isSupported = true;\n }});\n } catch (e) { }\n\n supportsPassive_ = isSupported;\n }\n\n return supportsPassive_ ? {passive: true} : false;\n}\n\n/**\n * @param {!Object} HTMLElementPrototype\n * @return {!Array}\n */\nfunction getMatchesProperty(HTMLElementPrototype) {\n return [\n 'webkitMatchesSelector', 'msMatchesSelector', 'matches',\n ].filter((p) => p in HTMLElementPrototype).pop();\n}\n\n/**\n * @param {!Event} ev\n * @param {{x: number, y: number}} pageOffset\n * @param {!ClientRect} clientRect\n * @return {{x: number, y: number}}\n */\nfunction getNormalizedEventCoords(ev, pageOffset, clientRect) {\n const {x, y} = pageOffset;\n const documentX = x + clientRect.left;\n const documentY = y + clientRect.top;\n\n let normalizedX;\n let normalizedY;\n // Determine touch point relative to the ripple container.\n if (ev.type === 'touchstart') {\n normalizedX = ev.changedTouches[0].pageX - documentX;\n normalizedY = ev.changedTouches[0].pageY - documentY;\n } else {\n normalizedX = ev.pageX - documentX;\n normalizedY = ev.pageY - documentY;\n }\n\n return {x: normalizedX, y: normalizedY};\n}\n\nexport {supportsCssVariables, applyPassive, getMatchesProperty, getNormalizedEventCoords};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/ripple/util.js","import { MDCRipple } from \"@material/ripple\";\n\nif (!(\"mdc\" in window))\n\twindow.mdc = { MDCRipple };\nelse if (!(\"MDCRipple\" in window.mdc))\n\twindow.mdc.MDCRipple = MDCRipple;\n\n\n// WEBPACK FOOTER //\n// ./module/mdc-ripple.js","/**\n * @license\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport MDCComponent from '@material/base/component';\nimport MDCRippleAdapter from './adapter';\nimport MDCRippleFoundation from './foundation';\nimport * as util from './util';\n\n/**\n * @extends MDCComponent\n */\nclass MDCRipple extends MDCComponent {\n /** @param {...?} args */\n constructor(...args) {\n super(...args);\n\n /** @type {boolean} */\n this.disabled = false;\n\n /** @private {boolean} */\n this.unbounded_;\n }\n\n /**\n * @param {!Element} root\n * @param {{isUnbounded: (boolean|undefined)}=} options\n * @return {!MDCRipple}\n */\n static attachTo(root, {isUnbounded = undefined} = {}) {\n const ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (isUnbounded !== undefined) {\n ripple.unbounded = /** @type {boolean} */ (isUnbounded);\n }\n return ripple;\n }\n\n /**\n * @param {!RippleCapableSurface} instance\n * @return {!MDCRippleAdapter}\n */\n static createAdapter(instance) {\n const MATCHES = util.getMatchesProperty(HTMLElement.prototype);\n\n return {\n browserSupportsCssVars: () => util.supportsCssVariables(window),\n isUnbounded: () => instance.unbounded,\n isSurfaceActive: () => instance.root_[MATCHES](':active'),\n isSurfaceDisabled: () => instance.disabled,\n addClass: (className) => instance.root_.classList.add(className),\n removeClass: (className) => instance.root_.classList.remove(className),\n containsEventTarget: (target) => instance.root_.contains(target),\n registerInteractionHandler: (evtType, handler) =>\n instance.root_.addEventListener(evtType, handler, util.applyPassive()),\n deregisterInteractionHandler: (evtType, handler) =>\n instance.root_.removeEventListener(evtType, handler, util.applyPassive()),\n registerDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.addEventListener(evtType, handler, util.applyPassive()),\n deregisterDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.removeEventListener(evtType, handler, util.applyPassive()),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n updateCssVariable: (varName, value) => instance.root_.style.setProperty(varName, value),\n computeBoundingRect: () => instance.root_.getBoundingClientRect(),\n getWindowPageOffset: () => ({x: window.pageXOffset, y: window.pageYOffset}),\n };\n }\n\n /** @return {boolean} */\n get unbounded() {\n return this.unbounded_;\n }\n\n /** @param {boolean} unbounded */\n set unbounded(unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n }\n\n /**\n * Closure Compiler throws an access control error when directly accessing a\n * protected or private property inside a getter/setter, like unbounded above.\n * By accessing the protected property inside a method, we solve that problem.\n * That's why this function exists.\n * @private\n */\n setUnbounded_() {\n this.foundation_.setUnbounded(this.unbounded_);\n }\n\n activate() {\n this.foundation_.activate();\n }\n\n deactivate() {\n this.foundation_.deactivate();\n }\n\n layout() {\n this.foundation_.layout();\n }\n\n /** @return {!MDCRippleFoundation} */\n getDefaultFoundation() {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n }\n\n initialSyncWithDOM() {\n this.unbounded = 'mdcRippleIsUnbounded' in this.root_.dataset;\n }\n}\n\n/**\n * See Material Design spec for more details on when to use ripples.\n * https://material.io/guidelines/motion/choreography.html#choreography-creation\n * @record\n */\nclass RippleCapableSurface {}\n\n/** @protected {!Element} */\nRippleCapableSurface.prototype.root_;\n\n/**\n * Whether or not the ripple bleeds out of the bounds of the element.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.unbounded;\n\n/**\n * Whether or not the ripple is attached to a disabled component.\n * @type {boolean|undefined}\n */\nRippleCapableSurface.prototype.disabled;\n\nexport {MDCRipple, MDCRippleFoundation, RippleCapableSurface, util};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/ripple/index.js","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport MDCFoundation from './foundation';\n\n/**\n * @template F\n */\nclass MDCComponent {\n /**\n * @param {!Element} root\n * @return {!MDCComponent}\n */\n static attachTo(root) {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new MDCFoundation());\n }\n\n /**\n * @param {!Element} root\n * @param {F=} foundation\n * @param {...?} args\n */\n constructor(root, foundation = undefined, ...args) {\n /** @protected {!Element} */\n this.root_ = root;\n this.initialize(...args);\n // Note that we initialize foundation here and not within the constructor's default param so that\n // this.root_ is defined and can be used within the foundation class.\n /** @protected {!F} */\n this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n\n initialize(/* ...args */) {\n // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n }\n\n /**\n * @return {!F} foundation\n */\n getDefaultFoundation() {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' +\n 'foundation class');\n }\n\n initialSyncWithDOM() {\n // Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n }\n\n destroy() {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation_.destroy();\n }\n\n /**\n * Wrapper method to add an event listener to the component's root element. This is most useful when\n * listening for custom events.\n * @param {string} evtType\n * @param {!Function} handler\n */\n listen(evtType, handler) {\n this.root_.addEventListener(evtType, handler);\n }\n\n /**\n * Wrapper method to remove an event listener to the component's root element. This is most useful when\n * unlistening for custom events.\n * @param {string} evtType\n * @param {!Function} handler\n */\n unlisten(evtType, handler) {\n this.root_.removeEventListener(evtType, handler);\n }\n\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type,\n * with the given data.\n * @param {string} evtType\n * @param {!Object} evtData\n * @param {boolean=} shouldBubble\n */\n emit(evtType, evtData, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble,\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n\n this.root_.dispatchEvent(evt);\n }\n}\n\nexport default MDCComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/base/component.js","/**\n * @license\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport MDCFoundation from '@material/base/foundation';\nimport MDCRippleAdapter from './adapter';\nimport {cssClasses, strings, numbers} from './constants';\nimport {getNormalizedEventCoords} from './util';\n\n/**\n * @typedef {{\n * isActivated: (boolean|undefined),\n * hasDeactivationUXRun: (boolean|undefined),\n * wasActivatedByPointer: (boolean|undefined),\n * wasElementMadeActive: (boolean|undefined),\n * activationEvent: Event,\n * isProgrammatic: (boolean|undefined)\n * }}\n */\nlet ActivationStateType;\n\n/**\n * @typedef {{\n * activate: (string|undefined),\n * deactivate: (string|undefined),\n * focus: (string|undefined),\n * blur: (string|undefined)\n * }}\n */\nlet ListenerInfoType;\n\n/**\n * @typedef {{\n * activate: function(!Event),\n * deactivate: function(!Event),\n * focus: function(),\n * blur: function()\n * }}\n */\nlet ListenersType;\n\n/**\n * @typedef {{\n * x: number,\n * y: number\n * }}\n */\nlet PointType;\n\n// Activation events registered on the root element of each instance for activation\nconst ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nconst POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup'];\n\n// Tracks activations that have occurred on the current frame, to avoid simultaneous nested activations\n/** @type {!Array} */\nlet activatedTargets = [];\n\n/**\n * @extends {MDCFoundation}\n */\nclass MDCRippleFoundation extends MDCFoundation {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get numbers() {\n return numbers;\n }\n\n static get defaultAdapter() {\n return {\n browserSupportsCssVars: () => /* boolean - cached */ {},\n isUnbounded: () => /* boolean */ {},\n isSurfaceActive: () => /* boolean */ {},\n isSurfaceDisabled: () => /* boolean */ {},\n addClass: (/* className: string */) => {},\n removeClass: (/* className: string */) => {},\n containsEventTarget: (/* target: !EventTarget */) => {},\n registerInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n deregisterInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n registerDocumentInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n deregisterDocumentInteractionHandler: (/* evtType: string, handler: EventListener */) => {},\n registerResizeHandler: (/* handler: EventListener */) => {},\n deregisterResizeHandler: (/* handler: EventListener */) => {},\n updateCssVariable: (/* varName: string, value: string */) => {},\n computeBoundingRect: () => /* ClientRect */ {},\n getWindowPageOffset: () => /* {x: number, y: number} */ {},\n };\n }\n\n constructor(adapter) {\n super(Object.assign(MDCRippleFoundation.defaultAdapter, adapter));\n\n /** @private {number} */\n this.layoutFrame_ = 0;\n\n /** @private {!ClientRect} */\n this.frame_ = /** @type {!ClientRect} */ ({width: 0, height: 0});\n\n /** @private {!ActivationStateType} */\n this.activationState_ = this.defaultActivationState_();\n\n /** @private {number} */\n this.initialSize_ = 0;\n\n /** @private {number} */\n this.maxRadius_ = 0;\n\n /** @private {function(!Event)} */\n this.activateHandler_ = (e) => this.activate_(e);\n\n /** @private {function(!Event)} */\n this.deactivateHandler_ = (e) => this.deactivate_(e);\n\n /** @private {function(?Event=)} */\n this.focusHandler_ = () => requestAnimationFrame(\n () => this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED)\n );\n\n /** @private {function(?Event=)} */\n this.blurHandler_ = () => requestAnimationFrame(\n () => this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED)\n );\n\n /** @private {!Function} */\n this.resizeHandler_ = () => this.layout();\n\n /** @private {{left: number, top:number}} */\n this.unboundedCoords_ = {\n left: 0,\n top: 0,\n };\n\n /** @private {number} */\n this.fgScale_ = 0;\n\n /** @private {number} */\n this.activationTimer_ = 0;\n\n /** @private {number} */\n this.fgDeactivationRemovalTimer_ = 0;\n\n /** @private {boolean} */\n this.activationAnimationHasEnded_ = false;\n\n /** @private {!Function} */\n this.activationTimerCallback_ = () => {\n this.activationAnimationHasEnded_ = true;\n this.runDeactivationUXLogicIfReady_();\n };\n\n /** @private {?Event} */\n this.previousActivationEvent_ = null;\n }\n\n /**\n * We compute this property so that we are not querying information about the client\n * until the point in time where the foundation requests it. This prevents scenarios where\n * client-side feature-detection may happen too early, such as when components are rendered on the server\n * and then initialized at mount time on the client.\n * @return {boolean}\n * @private\n */\n isSupported_() {\n return this.adapter_.browserSupportsCssVars();\n }\n\n /**\n * @return {!ActivationStateType}\n */\n defaultActivationState_() {\n return {\n isActivated: false,\n hasDeactivationUXRun: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false,\n activationEvent: null,\n isProgrammatic: false,\n };\n }\n\n init() {\n if (!this.isSupported_()) {\n return;\n }\n this.registerRootHandlers_();\n\n const {ROOT, UNBOUNDED} = MDCRippleFoundation.cssClasses;\n requestAnimationFrame(() => {\n this.adapter_.addClass(ROOT);\n if (this.adapter_.isUnbounded()) {\n this.adapter_.addClass(UNBOUNDED);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n this.layoutInternal_();\n }\n });\n }\n\n destroy() {\n if (!this.isSupported_()) {\n return;\n }\n\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n const {FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n this.adapter_.removeClass(FG_ACTIVATION);\n }\n\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n\n const {ROOT, UNBOUNDED} = MDCRippleFoundation.cssClasses;\n requestAnimationFrame(() => {\n this.adapter_.removeClass(ROOT);\n this.adapter_.removeClass(UNBOUNDED);\n this.removeCssVars_();\n });\n }\n\n /** @private */\n registerRootHandlers_() {\n ACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.registerInteractionHandler(type, this.activateHandler_);\n });\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n\n if (this.adapter_.isUnbounded()) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n /**\n * @param {!Event} e\n * @private\n */\n registerDeactivationHandlers_(e) {\n if (e.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.registerDocumentInteractionHandler(type, this.deactivateHandler_);\n });\n }\n }\n\n /** @private */\n deregisterRootHandlers_() {\n ACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.deregisterInteractionHandler(type, this.activateHandler_);\n });\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n\n if (this.adapter_.isUnbounded()) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n }\n\n /** @private */\n deregisterDeactivationHandlers_() {\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => {\n this.adapter_.deregisterDocumentInteractionHandler(type, this.deactivateHandler_);\n });\n }\n\n /** @private */\n removeCssVars_() {\n const {strings} = MDCRippleFoundation;\n Object.keys(strings).forEach((k) => {\n if (k.indexOf('VAR_') === 0) {\n this.adapter_.updateCssVariable(strings[k], null);\n }\n });\n }\n\n /**\n * @param {?Event} e\n * @private\n */\n activate_(e) {\n if (this.adapter_.isSurfaceDisabled()) {\n return;\n }\n\n const activationState = this.activationState_;\n if (activationState.isActivated) {\n return;\n }\n\n // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n const previousActivationEvent = this.previousActivationEvent_;\n const isSameInteraction = previousActivationEvent && e && previousActivationEvent.type !== e.type;\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = e === null;\n activationState.activationEvent = e;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : (\n e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown'\n );\n\n const hasActivatedChild =\n e && activatedTargets.length > 0 && activatedTargets.some((target) => this.adapter_.containsEventTarget(target));\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n\n if (e) {\n activatedTargets.push(/** @type {!EventTarget} */ (e.target));\n this.registerDeactivationHandlers_(e);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(e);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n\n requestAnimationFrame(() => {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n\n if (!activationState.wasElementMadeActive && (e.key === ' ' || e.keyCode === 32)) {\n // If space was pressed, try again within an rAF call to detect :active, because different UAs report\n // active states inconsistently when they're called within event handling code:\n // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741\n // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS\n // variable is set within a rAF callback for a submit button interaction (#2241).\n activationState.wasElementMadeActive = this.checkElementMadeActive_(e);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n }\n\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n this.activationState_ = this.defaultActivationState_();\n }\n });\n }\n\n /**\n * @param {?Event} e\n * @private\n */\n checkElementMadeActive_(e) {\n return (e && e.type === 'keydown') ? this.adapter_.isSurfaceActive() : true;\n }\n\n /**\n * @param {?Event=} event Optional event containing position information.\n */\n activate(event = null) {\n this.activate_(event);\n }\n\n /** @private */\n animateActivation_() {\n const {VAR_FG_TRANSLATE_START, VAR_FG_TRANSLATE_END} = MDCRippleFoundation.strings;\n const {FG_DEACTIVATION, FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n const {DEACTIVATION_TIMEOUT_MS} = MDCRippleFoundation.numbers;\n\n this.layoutInternal_();\n\n let translateStart = '';\n let translateEnd = '';\n\n if (!this.adapter_.isUnbounded()) {\n const {startPoint, endPoint} = this.getFgTranslationCoordinates_();\n translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n }\n\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter_.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);\n // Cancel any ongoing activation/deactivation animations\n clearTimeout(this.activationTimer_);\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.rmBoundedActivationClasses_();\n this.adapter_.removeClass(FG_DEACTIVATION);\n\n // Force layout in order to re-trigger the animation.\n this.adapter_.computeBoundingRect();\n this.adapter_.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(() => this.activationTimerCallback_(), DEACTIVATION_TIMEOUT_MS);\n }\n\n /**\n * @private\n * @return {{startPoint: PointType, endPoint: PointType}}\n */\n getFgTranslationCoordinates_() {\n const {activationEvent, wasActivatedByPointer} = this.activationState_;\n\n let startPoint;\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(\n /** @type {!Event} */ (activationEvent),\n this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect()\n );\n } else {\n startPoint = {\n x: this.frame_.width / 2,\n y: this.frame_.height / 2,\n };\n }\n // Center the element around the start point.\n startPoint = {\n x: startPoint.x - (this.initialSize_ / 2),\n y: startPoint.y - (this.initialSize_ / 2),\n };\n\n const endPoint = {\n x: (this.frame_.width / 2) - (this.initialSize_ / 2),\n y: (this.frame_.height / 2) - (this.initialSize_ / 2),\n };\n\n return {startPoint, endPoint};\n }\n\n /** @private */\n runDeactivationUXLogicIfReady_() {\n // This method is called both when a pointing device is released, and when the activation animation ends.\n // The deactivation animation should only run after both of those occur.\n const {FG_DEACTIVATION} = MDCRippleFoundation.cssClasses;\n const {hasDeactivationUXRun, isActivated} = this.activationState_;\n const activationHasEnded = hasDeactivationUXRun || !isActivated;\n\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter_.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(() => {\n this.adapter_.removeClass(FG_DEACTIVATION);\n }, numbers.FG_DEACTIVATION_MS);\n }\n }\n\n /** @private */\n rmBoundedActivationClasses_() {\n const {FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n }\n\n resetActivationState_() {\n this.previousActivationEvent_ = this.activationState_.activationEvent;\n this.activationState_ = this.defaultActivationState_();\n // Touch devices may fire additional events for the same interaction within a short time.\n // Store the previous event until it's safe to assume that subsequent events are for new interactions.\n setTimeout(() => this.previousActivationEvent_ = null, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n }\n\n /**\n * @param {?Event} e\n * @private\n */\n deactivate_(e) {\n const activationState = this.activationState_;\n // This can happen in scenarios such as when you have a keyup event that blurs the element.\n if (!activationState.isActivated) {\n return;\n }\n\n const state = /** @type {!ActivationStateType} */ (Object.assign({}, activationState));\n\n if (activationState.isProgrammatic) {\n const evtObject = null;\n requestAnimationFrame(() => this.animateDeactivation_(evtObject, state));\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(() => {\n this.activationState_.hasDeactivationUXRun = true;\n this.animateDeactivation_(e, state);\n this.resetActivationState_();\n });\n }\n }\n\n /**\n * @param {?Event=} event Optional event containing position information.\n */\n deactivate(event = null) {\n this.deactivate_(event);\n }\n\n /**\n * @param {Event} e\n * @param {!ActivationStateType} options\n * @private\n */\n animateDeactivation_(e, {wasActivatedByPointer, wasElementMadeActive}) {\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n }\n\n layout() {\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(() => {\n this.layoutInternal_();\n this.layoutFrame_ = 0;\n });\n }\n\n /** @private */\n layoutInternal_() {\n this.frame_ = this.adapter_.computeBoundingRect();\n const maxDim = Math.max(this.frame_.height, this.frame_.width);\n\n // Surface diameter is treated differently for unbounded vs. bounded ripples.\n // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately\n // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically\n // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter\n // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via\n // `overflow: hidden`.\n const getBoundedRadius = () => {\n const hypotenuse = Math.sqrt(Math.pow(this.frame_.width, 2) + Math.pow(this.frame_.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n\n this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();\n\n // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n this.initialSize_ = maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE;\n this.fgScale_ = this.maxRadius_ / this.initialSize_;\n\n this.updateLayoutCssVars_();\n }\n\n /** @private */\n updateLayoutCssVars_() {\n const {\n VAR_FG_SIZE, VAR_LEFT, VAR_TOP, VAR_FG_SCALE,\n } = MDCRippleFoundation.strings;\n\n this.adapter_.updateCssVariable(VAR_FG_SIZE, `${this.initialSize_}px`);\n this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);\n\n if (this.adapter_.isUnbounded()) {\n this.unboundedCoords_ = {\n left: Math.round((this.frame_.width / 2) - (this.initialSize_ / 2)),\n top: Math.round((this.frame_.height / 2) - (this.initialSize_ / 2)),\n };\n\n this.adapter_.updateCssVariable(VAR_LEFT, `${this.unboundedCoords_.left}px`);\n this.adapter_.updateCssVariable(VAR_TOP, `${this.unboundedCoords_.top}px`);\n }\n }\n\n /** @param {boolean} unbounded */\n setUnbounded(unbounded) {\n const {UNBOUNDED} = MDCRippleFoundation.cssClasses;\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n }\n}\n\nexport default MDCRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/ripple/foundation.js","/**\n * @license\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst cssClasses = {\n // Ripple is a special case where the \"root\" component is really a \"mixin\" of sorts,\n // given that it's an 'upgrade' to an existing component. That being said it is the root\n // CSS class that all other CSS classes derive from.\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded',\n BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n};\n\nconst strings = {\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n};\n\nconst numbers = {\n PADDING: 10,\n INITIAL_ORIGIN_SCALE: 0.6,\n DEACTIVATION_TIMEOUT_MS: 225, // Corresponds to $mdc-ripple-translate-duration (i.e. activation animation duration)\n FG_DEACTIVATION_MS: 150, // Corresponds to $mdc-ripple-fade-out-duration (i.e. deactivation animation duration)\n TAP_DELAY_MS: 300, // Delay between touch and simulated mouse events on touch devices\n};\n\nexport {cssClasses, strings, numbers};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@material/ripple/constants.js"],"sourceRoot":""}