UNPKG

180 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///mdc.toolbar.js","webpack:///webpack/bootstrap b31518711b0023492c74","webpack:///./packages/mdc-base/foundation.ts","webpack:///./packages/mdc-base/component.ts","webpack:///./packages/mdc-toolbar/foundation.ts","webpack:///./packages/mdc-toolbar/constants.ts","webpack:///./packages/mdc-toolbar/index.ts","webpack:///./packages/mdc-toolbar/component.ts","webpack:///./packages/mdc-dom/ponyfill.ts","webpack:///./packages/mdc-ripple/util.ts","webpack:///./packages/mdc-ripple/foundation.ts","webpack:///./packages/mdc-ripple/constants.ts","webpack:///./packages/mdc-ripple/component.ts"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","this","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","0","value","MDCFoundation","adapter","adapter_","init","destroy","default","1","__read","Symbol","iterator","r","ar","e","next","done","push","error","__spread","arguments","length","concat","foundation_1","MDCComponent","foundation","args","_i","root_","initialize","apply","foundation_","undefined","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","document","createEvent","initCustomEvent","dispatchEvent","107","__extends","_extendStatics","extendStatics","b","setPrototypeOf","__proto__","Array","__","constructor","create","__assign","assign","t","constants_1","MDCToolbarFoundation","_super","_this","defaultAdapter","checkRowHeightFrame_","scrollFrame_","executedLastChange_","isFixed_","isFixedLastRow_","hasFlexibleFirstRow_","useFlexDefaultBehavior_","calculations_","flexibleExpansionHeight","flexibleExpansionRatio","maxTranslateYDistance","maxTranslateYRatio","scrollThreshold","scrollThresholdRatio","toolbarHeight","toolbarRatio","toolbarRowHeight","cssClasses","strings","numbers","hasClass","addClass","removeClass","registerScrollHandler","deregisterScrollHandler","registerResizeHandler","deregisterResizeHandler","getViewportWidth","getViewportScrollY","getOffsetHeight","getFirstRowElementOffsetHeight","notifyChange","setStyle","setStyleForTitleElement","setStyleForFlexibleRowElement","setStyleForFixedAdjustElement","FIXED","FIXED_LASTROW","TOOLBAR_ROW_FLEXIBLE","FLEXIBLE_DEFAULT_BEHAVIOR","resizeHandler_","checkRowHeight_","scrollHandler_","updateToolbarStyles_","initKeyRatio_","setKeyHeights_","updateAdjustElementStyles","getFlexibleExpansionRatio_","scrollTop","delta","Math","max","cancelAnimationFrame","requestAnimationFrame","newToolbarRowHeight","getRowHeight_","hasScrolledOutOfThreshold","scrolledOutOfThreshold_","updateToolbarFlexibleState_","updateToolbarFixedState_","updateFlexibleRowElementStyles_","firstRowMaxRatio","breakpoint","TOOLBAR_MOBILE_BREAKPOINT","TOOLBAR_ROW_MOBILE_HEIGHT","TOOLBAR_ROW_HEIGHT","FLEXIBLE_MAX","FLEXIBLE_MIN","translateDistance","min","FIXED_AT_LAST_ROW","height","updateElementStylesDefaultBehavior_","maxTitleSize","MAX_TITLE_SIZE","minTitleSize","MIN_TITLE_SIZE","currentTitleSize","108","CHANGE_EVENT","FIRST_ROW_SELECTOR","ICON_SELECTOR","TITLE_SELECTOR","173","__export","174","component_1","component_2","MDCToolbar","ripples_","fixedAdjustElement_","titleElement_","querySelector","firstRowElement","firstRowElement_","forEach","querySelectorAll","icon","ripple","MDCRipple","unbounded","set","element","className","classList","contains","add","remove","window","innerWidth","pageYOffset","offsetHeight","style","setProperty","fixedAdjustElement","2","closest","selector","el","matches","parentElement","nativeMatches","webkitMatchesSelector","msMatchesSelector","3","supportsCssVariables_","supportsPassive_","detectEdgePseudoVarBug","windowObj","node","createElement","body","appendChild","computedStyle","getComputedStyle","hasPseudoVarBug","borderTopStyle","parentNode","removeChild","supportsCssVariables","forceRefresh","CSS","supportsCssVars","supportsFunctionPresent","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","applyPassive","globalObj","isSupported_1","passive","getNormalizedEventCoords","pageOffset","clientRect","x","y","documentX","left","documentY","top","normalizedX","normalizedY","type","touchEvent","changedTouches","pageX","pageY","mouseEvent","4","util_1","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","MDCRippleFoundation","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","width","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","layout","browserSupportsCssVars","computeBoundingRect","right","bottom","containsEventTarget","deregisterDocumentInteractionHandler","deregisterInteractionHandler","getWindowPageOffset","isSurfaceActive","isSurfaceDisabled","isUnbounded","registerDocumentInteractionHandler","registerInteractionHandler","updateCssVariable","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_a","ROOT_1","ROOT","UNBOUNDED_1","UNBOUNDED","layoutInternal_","clearTimeout","FG_ACTIVATION","FG_DEACTIVATION","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","activate","deactivate","setUnbounded","BG_FOCUSED","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","registerDeactivationHandlers_","rippleStrings","keys","key","indexOf","activationState","previousActivationEvent","previousActivationEvent_","isSameInteraction","hasActivatedChild","some","target","resetActivationState_","checkElementMadeActive_","animateActivation_","keyCode","VAR_FG_TRANSLATE_START","VAR_FG_TRANSLATE_END","_b","DEACTIVATION_TIMEOUT_MS","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","setTimeout","activationHasEnded","FG_DEACTIVATION_MS","TAP_DELAY_MS","state","animateDeactivation_","maxDim","getBoundedRadius","hypotenuse","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","5","6","__importStar","mod","result","k","ponyfill_1","util","disabled","opts","createAdapter","instance","getBoundingClientRect","documentElement","pageXOffset","Boolean","varName","unbounded_","setUnbounded_","dataset"],"mappings":"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","file":"mdc.toolbar.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"toolbar\"] = factory();\n\telse\n\t\troot[\"mdc\"] = root[\"mdc\"] || {}, root[\"mdc\"][\"toolbar\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"toolbar\"] = factory();\n\telse\n\t\troot[\"mdc\"] = root[\"mdc\"] || {}, root[\"mdc\"][\"toolbar\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = 173);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MDCFoundation = /** @class */function () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) {\n adapter = {};\n }\n this.adapter_ = adapter;\n }\n Object.defineProperty(MDCFoundation, \"cssClasses\", {\n get: function get() {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"strings\", {\n get: function get() {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"numbers\", {\n get: function get() {\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 enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"defaultAdapter\", {\n get: function get() {\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 enumerable: true,\n configurable: true\n });\n MDCFoundation.prototype.init = function () {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n MDCFoundation.prototype.destroy = function () {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n return MDCFoundation;\n}();\nexports.MDCFoundation = MDCFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCFoundation;\n\n/***/ }),\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = { error: error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar MDCComponent = /** @class */function () {\n function MDCComponent(root, foundation) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n this.root_ = root;\n this.initialize.apply(this, __spread(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 this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n MDCComponent.attachTo = function (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 foundation_1.MDCFoundation({}));\n };\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\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 MDCComponent.prototype.getDefaultFoundation = function () {\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 ' + 'foundation class');\n };\n MDCComponent.prototype.initialSyncWithDOM = function () {\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 MDCComponent.prototype.destroy = function () {\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 MDCComponent.prototype.listen = function (evtType, handler) {\n this.root_.addEventListener(evtType, handler);\n };\n MDCComponent.prototype.unlisten = function (evtType, handler) {\n this.root_.removeEventListener(evtType, handler);\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n var evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n this.root_.dispatchEvent(evt);\n };\n return MDCComponent;\n}();\nexports.MDCComponent = MDCComponent;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCComponent;\n\n/***/ }),\n\n/***/ 107:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(108);\nvar MDCToolbarFoundation = /** @class */function (_super) {\n __extends(MDCToolbarFoundation, _super);\n function MDCToolbarFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCToolbarFoundation.defaultAdapter, adapter)) || this;\n _this.checkRowHeightFrame_ = 0;\n _this.scrollFrame_ = 0;\n _this.executedLastChange_ = false;\n _this.isFixed_ = false;\n _this.isFixedLastRow_ = false;\n _this.hasFlexibleFirstRow_ = false;\n _this.useFlexDefaultBehavior_ = false;\n _this.calculations_ = {\n flexibleExpansionHeight: 0,\n flexibleExpansionRatio: 0,\n maxTranslateYDistance: 0,\n maxTranslateYRatio: 0,\n scrollThreshold: 0,\n scrollThresholdRatio: 0,\n toolbarHeight: 0,\n toolbarRatio: 0,\n toolbarRowHeight: 0\n };\n return _this;\n }\n Object.defineProperty(MDCToolbarFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCToolbarFoundation, \"defaultAdapter\", {\n get: function get() {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: function hasClass() {\n return false;\n },\n addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n registerScrollHandler: function registerScrollHandler() {\n return undefined;\n },\n deregisterScrollHandler: function deregisterScrollHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getViewportWidth: function getViewportWidth() {\n return 0;\n },\n getViewportScrollY: function getViewportScrollY() {\n return 0;\n },\n getOffsetHeight: function getOffsetHeight() {\n return 0;\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return 0;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n setStyle: function setStyle() {\n return undefined;\n },\n setStyleForTitleElement: function setStyleForTitleElement() {\n return undefined;\n },\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement() {\n return undefined;\n },\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCToolbarFoundation.prototype.init = function () {\n var _this = this;\n this.isFixed_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED);\n this.isFixedLastRow_ = this.adapter_.hasClass(constants_1.cssClasses.FIXED_LASTROW) && this.isFixed_;\n this.hasFlexibleFirstRow_ = this.adapter_.hasClass(constants_1.cssClasses.TOOLBAR_ROW_FLEXIBLE);\n if (this.hasFlexibleFirstRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(constants_1.cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n this.resizeHandler_ = function () {\n return _this.checkRowHeight_();\n };\n this.scrollHandler_ = function () {\n return _this.updateToolbarStyles_();\n };\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n this.initKeyRatio_();\n this.setKeyHeights_();\n };\n MDCToolbarFoundation.prototype.destroy = function () {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n };\n MDCToolbarFoundation.prototype.updateAdjustElementStyles = function () {\n if (this.isFixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', this.calculations_.toolbarHeight + \"px\");\n }\n };\n MDCToolbarFoundation.prototype.getFlexibleExpansionRatio_ = function (scrollTop) {\n // To prevent division by zero when there is no flexibleExpansionHeight\n var delta = 0.0001;\n return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));\n };\n MDCToolbarFoundation.prototype.checkRowHeight_ = function () {\n var _this = this;\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(function () {\n return _this.setKeyHeights_();\n });\n };\n MDCToolbarFoundation.prototype.setKeyHeights_ = function () {\n var newToolbarRowHeight = this.getRowHeight_();\n if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {\n this.calculations_.toolbarRowHeight = newToolbarRowHeight;\n this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.flexibleExpansionHeight = this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.maxTranslateYDistance = this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.scrollThreshold = this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;\n this.updateAdjustElementStyles();\n this.updateToolbarStyles_();\n }\n };\n MDCToolbarFoundation.prototype.updateToolbarStyles_ = function () {\n var _this = this;\n cancelAnimationFrame(this.scrollFrame_);\n this.scrollFrame_ = requestAnimationFrame(function () {\n var scrollTop = _this.adapter_.getViewportScrollY();\n var hasScrolledOutOfThreshold = _this.scrolledOutOfThreshold_(scrollTop);\n if (hasScrolledOutOfThreshold && _this.executedLastChange_) {\n return;\n }\n var flexibleExpansionRatio = _this.getFlexibleExpansionRatio_(scrollTop);\n _this.updateToolbarFlexibleState_(flexibleExpansionRatio);\n if (_this.isFixedLastRow_) {\n _this.updateToolbarFixedState_(scrollTop);\n }\n if (_this.hasFlexibleFirstRow_) {\n _this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n _this.executedLastChange_ = hasScrolledOutOfThreshold;\n _this.adapter_.notifyChange({ flexibleExpansionRatio: flexibleExpansionRatio });\n });\n };\n MDCToolbarFoundation.prototype.scrolledOutOfThreshold_ = function (scrollTop) {\n return scrollTop > this.calculations_.scrollThreshold;\n };\n MDCToolbarFoundation.prototype.initKeyRatio_ = function () {\n var toolbarRowHeight = this.getRowHeight_();\n var firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;\n this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;\n this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;\n this.calculations_.maxTranslateYRatio = this.isFixedLastRow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio = (this.isFixedLastRow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n };\n MDCToolbarFoundation.prototype.getRowHeight_ = function () {\n var breakpoint = constants_1.numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ? constants_1.numbers.TOOLBAR_ROW_MOBILE_HEIGHT : constants_1.numbers.TOOLBAR_ROW_HEIGHT;\n };\n MDCToolbarFoundation.prototype.updateToolbarFlexibleState_ = function (flexibleExpansionRatio) {\n this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(constants_1.cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(constants_1.cssClasses.FLEXIBLE_MIN);\n }\n };\n MDCToolbarFoundation.prototype.updateToolbarFixedState_ = function (scrollTop) {\n var translateDistance = Math.max(0, Math.min(scrollTop - this.calculations_.flexibleExpansionHeight, this.calculations_.maxTranslateYDistance));\n this.adapter_.setStyle('transform', \"translateY(\" + -translateDistance + \"px)\");\n if (translateDistance === this.calculations_.maxTranslateYDistance) {\n this.adapter_.addClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.FIXED_AT_LAST_ROW);\n }\n };\n MDCToolbarFoundation.prototype.updateFlexibleRowElementStyles_ = function (flexibleExpansionRatio) {\n if (this.isFixed_) {\n var height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;\n this.adapter_.setStyleForFlexibleRowElement('height', height + this.calculations_.toolbarRowHeight + \"px\");\n }\n if (this.useFlexDefaultBehavior_) {\n this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);\n }\n };\n MDCToolbarFoundation.prototype.updateElementStylesDefaultBehavior_ = function (flexibleExpansionRatio) {\n var maxTitleSize = constants_1.numbers.MAX_TITLE_SIZE;\n var minTitleSize = constants_1.numbers.MIN_TITLE_SIZE;\n var currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n this.adapter_.setStyleForTitleElement('font-size', currentTitleSize + \"rem\");\n };\n return MDCToolbarFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCToolbarFoundation = MDCToolbarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCToolbarFoundation;\n\n/***/ }),\n\n/***/ 108:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssClasses = {\n FIXED: 'mdc-toolbar--fixed',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',\n FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',\n FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible'\n};\nexports.strings = {\n CHANGE_EVENT: 'MDCToolbar:change',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n TITLE_SELECTOR: '.mdc-toolbar__title'\n};\nexports.numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_MOBILE_BREAKPOINT: 600,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56\n};\n\n/***/ }),\n\n/***/ 173:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(174));\n__export(__webpack_require__(108));\n__export(__webpack_require__(107));\n\n/***/ }),\n\n/***/ 174:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(6);\nvar foundation_1 = __webpack_require__(107);\nvar strings = foundation_1.MDCToolbarFoundation.strings;\nvar MDCToolbar = /** @class */function (_super) {\n __extends(MDCToolbar, _super);\n function MDCToolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCToolbar.attachTo = function (root) {\n return new MDCToolbar(root);\n };\n MDCToolbar.prototype.initialize = function () {\n var _this = this;\n this.ripples_ = [];\n this.fixedAdjustElement_ = null;\n this.titleElement_ = this.root_.querySelector(strings.TITLE_SELECTOR);\n var firstRowElement = this.root_.querySelector(strings.FIRST_ROW_SELECTOR);\n if (!firstRowElement) {\n throw new Error(\"MDCToolbar: Required sub-element '\" + strings.FIRST_ROW_SELECTOR + \"' is missing\");\n }\n this.firstRowElement_ = firstRowElement;\n [].forEach.call(this.root_.querySelectorAll(strings.ICON_SELECTOR), function (icon) {\n var ripple = component_2.MDCRipple.attachTo(icon);\n ripple.unbounded = true;\n _this.ripples_.push(ripple);\n });\n };\n MDCToolbar.prototype.destroy = function () {\n this.ripples_.forEach(function (ripple) {\n ripple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n Object.defineProperty(MDCToolbar.prototype, \"fixedAdjustElement\", {\n get: function get() {\n return this.fixedAdjustElement_;\n },\n set: function set(element) {\n this.fixedAdjustElement_ = element;\n this.foundation_.updateAdjustElementStyles();\n },\n enumerable: true,\n configurable: true\n });\n MDCToolbar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n hasClass: function hasClass(className) {\n return _this.root_.classList.contains(className);\n },\n addClass: function addClass(className) {\n return _this.root_.classList.add(className);\n },\n removeClass: function removeClass(className) {\n return _this.root_.classList.remove(className);\n },\n registerScrollHandler: function registerScrollHandler(handler) {\n return window.addEventListener('scroll', handler);\n },\n deregisterScrollHandler: function deregisterScrollHandler(handler) {\n return window.removeEventListener('scroll', handler);\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getViewportWidth: function getViewportWidth() {\n return window.innerWidth;\n },\n getViewportScrollY: function getViewportScrollY() {\n return window.pageYOffset;\n },\n getOffsetHeight: function getOffsetHeight() {\n return _this.root_.offsetHeight;\n },\n getFirstRowElementOffsetHeight: function getFirstRowElementOffsetHeight() {\n return _this.firstRowElement_.offsetHeight;\n },\n notifyChange: function notifyChange(evtData) {\n return _this.emit(strings.CHANGE_EVENT, evtData);\n },\n setStyle: function setStyle(property, value) {\n return _this.root_.style.setProperty(property, value);\n },\n setStyleForTitleElement: function setStyleForTitleElement(property, value) {\n if (_this.titleElement_) {\n _this.titleElement_.style.setProperty(property, value);\n }\n },\n setStyleForFlexibleRowElement: function setStyleForFlexibleRowElement(property, value) {\n return _this.firstRowElement_.style.setProperty(property, value);\n },\n setStyleForFixedAdjustElement: function setStyleForFixedAdjustElement(property, value) {\n if (_this.fixedAdjustElement) {\n _this.fixedAdjustElement.style.setProperty(property, value);\n }\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCToolbarFoundation(adapter);\n };\n return MDCToolbar;\n}(component_1.MDCComponent);\nexports.MDCToolbar = MDCToolbar;\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var el = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\nexports.closest = closest;\nfunction matches(element, selector) {\n var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\nexports.matches = matches;\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to\n * detect CSS custom variable support.\n */\nvar supportsCssVariables_;\n/**\n * Stores result from applyPassive to avoid redundant processing to detect\n * passive event listener support.\n */\nvar supportsPassive_;\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 var document = windowObj.document;\n var node = document.createElement('div');\n node.className = 'mdc-ripple-surface--test-edge-var-bug';\n document.body.appendChild(node);\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 var computedStyle = windowObj.getComputedStyle(node);\n var hasPseudoVarBug = computedStyle !== null && computedStyle.borderTopStyle === 'solid';\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n return hasPseudoVarBug;\n}\nfunction supportsCssVariables(windowObj, forceRefresh) {\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n var CSS = windowObj.CSS;\n var supportsCssVars = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables_;\n }\n var supportsFunctionPresent = CSS && typeof CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return false;\n }\n var explicitlySupportsCssVars = CSS.supports('--css-vars', 'yes');\n // See: https://bugs.webkit.org/show_bug.cgi?id=154669\n // See: README section on Safari\n var weAreFeatureDetectingSafari10plus = CSS.supports('(--css-vars: yes)') && CSS.supports('color', '#00000000');\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVars = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVars = false;\n }\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVars;\n }\n return supportsCssVars;\n}\nexports.supportsCssVariables = supportsCssVariables;\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nfunction applyPassive(globalObj, forceRefresh) {\n if (globalObj === void 0) {\n globalObj = window;\n }\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n if (supportsPassive_ === undefined || forceRefresh) {\n var isSupported_1 = false;\n try {\n globalObj.document.addEventListener('test', function () {\n return undefined;\n }, {\n get passive() {\n isSupported_1 = true;\n return isSupported_1;\n }\n });\n } catch (e) {} // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log.\n supportsPassive_ = isSupported_1;\n }\n return supportsPassive_ ? { passive: true } : false;\n}\nexports.applyPassive = applyPassive;\nfunction getNormalizedEventCoords(evt, pageOffset, clientRect) {\n if (!evt) {\n return { x: 0, y: 0 };\n }\n var x = pageOffset.x,\n y = pageOffset.y;\n var documentX = x + clientRect.left;\n var documentY = y + clientRect.top;\n var normalizedX;\n var normalizedY;\n // Determine touch point relative to the ripple container.\n if (evt.type === 'touchstart') {\n var touchEvent = evt;\n normalizedX = touchEvent.changedTouches[0].pageX - documentX;\n normalizedY = touchEvent.changedTouches[0].pageY - documentY;\n } else {\n var mouseEvent = evt;\n normalizedX = mouseEvent.pageX - documentX;\n normalizedY = mouseEvent.pageY - documentY;\n }\n return { x: normalizedX, y: normalizedY };\n}\nexports.getNormalizedEventCoords = getNormalizedEventCoords;\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(5);\nvar util_1 = __webpack_require__(3);\n// Activation events registered on the root element of each instance for activation\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];\n// simultaneous nested activations\nvar activatedTargets = [];\nvar MDCRippleFoundation = /** @class */function (_super) {\n __extends(MDCRippleFoundation, _super);\n function MDCRippleFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCRippleFoundation.defaultAdapter, adapter)) || this;\n _this.activationAnimationHasEnded_ = false;\n _this.activationTimer_ = 0;\n _this.fgDeactivationRemovalTimer_ = 0;\n _this.fgScale_ = '0';\n _this.frame_ = { width: 0, height: 0 };\n _this.initialSize_ = 0;\n _this.layoutFrame_ = 0;\n _this.maxRadius_ = 0;\n _this.unboundedCoords_ = { left: 0, top: 0 };\n _this.activationState_ = _this.defaultActivationState_();\n _this.activationTimerCallback_ = function () {\n _this.activationAnimationHasEnded_ = true;\n _this.runDeactivationUXLogicIfReady_();\n };\n _this.activateHandler_ = function (e) {\n return _this.activate_(e);\n };\n _this.deactivateHandler_ = function () {\n return _this.deactivate_();\n };\n _this.focusHandler_ = function () {\n return _this.handleFocus();\n };\n _this.blurHandler_ = function () {\n return _this.handleBlur();\n };\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCRippleFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"numbers\", {\n get: function get() {\n return constants_1.numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"defaultAdapter\", {\n get: function get() {\n return {\n addClass: function addClass() {\n return undefined;\n },\n browserSupportsCssVars: function browserSupportsCssVars() {\n return true;\n },\n computeBoundingRect: function computeBoundingRect() {\n return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n },\n containsEventTarget: function containsEventTarget() {\n return true;\n },\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getWindowPageOffset: function getWindowPageOffset() {\n return { x: 0, y: 0 };\n },\n isSurfaceActive: function isSurfaceActive() {\n return true;\n },\n isSurfaceDisabled: function isSurfaceDisabled() {\n return true;\n },\n isUnbounded: function isUnbounded() {\n return true;\n },\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n updateCssVariable: function updateCssVariable() {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n MDCRippleFoundation.prototype.init = function () {\n var _this = this;\n var supportsPressRipple = this.supportsPressRipple_();\n this.registerRootHandlers_(supportsPressRipple);\n if (supportsPressRipple) {\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_1 = _a.ROOT,\n UNBOUNDED_1 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter_.addClass(ROOT_1);\n if (_this.adapter_.isUnbounded()) {\n _this.adapter_.addClass(UNBOUNDED_1);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n _this.layoutInternal_();\n }\n });\n }\n };\n MDCRippleFoundation.prototype.destroy = function () {\n var _this = this;\n if (this.supportsPressRipple_()) {\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_2 = _a.ROOT,\n UNBOUNDED_2 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter_.removeClass(ROOT_2);\n _this.adapter_.removeClass(UNBOUNDED_2);\n _this.removeCssVars_();\n });\n }\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n };\n /**\n * @param evt Optional event containing position information.\n */\n MDCRippleFoundation.prototype.activate = function (evt) {\n this.activate_(evt);\n };\n MDCRippleFoundation.prototype.deactivate = function () {\n this.deactivate_();\n };\n MDCRippleFoundation.prototype.layout = function () {\n var _this = this;\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n _this.layoutFrame_ = 0;\n });\n };\n MDCRippleFoundation.prototype.setUnbounded = function (unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n };\n MDCRippleFoundation.prototype.handleFocus = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n MDCRippleFoundation.prototype.handleBlur = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\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 */\n MDCRippleFoundation.prototype.supportsPressRipple_ = function () {\n return this.adapter_.browserSupportsCssVars();\n };\n MDCRippleFoundation.prototype.defaultActivationState_ = function () {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false\n };\n };\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n MDCRippleFoundation.prototype.registerRootHandlers_ = function (supportsPressRipple) {\n var _this = this;\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.registerInteractionHandler(evtType, _this.activateHandler_);\n });\n if (this.adapter_.isUnbounded()) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n };\n MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function (evt) {\n var _this = this;\n if (evt.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n }\n };\n MDCRippleFoundation.prototype.deregisterRootHandlers_ = function () {\n var _this = this;\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.deregisterInteractionHandler(evtType, _this.activateHandler_);\n });\n this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_);\n if (this.adapter_.isUnbounded()) {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n };\n MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function () {\n var _this = this;\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter_.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n };\n MDCRippleFoundation.prototype.removeCssVars_ = function () {\n var _this = this;\n var rippleStrings = MDCRippleFoundation.strings;\n var keys = Object.keys(rippleStrings);\n keys.forEach(function (key) {\n if (key.indexOf('VAR_') === 0) {\n _this.adapter_.updateCssVariable(rippleStrings[key], null);\n }\n });\n };\n MDCRippleFoundation.prototype.activate_ = function (evt) {\n var _this = this;\n if (this.adapter_.isSurfaceDisabled()) {\n return;\n }\n var activationState = this.activationState_;\n if (activationState.isActivated) {\n return;\n }\n // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n var previousActivationEvent = this.previousActivationEvent_;\n var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n if (isSameInteraction) {\n return;\n }\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown');\n var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {\n return _this.adapter_.containsEventTarget(target);\n });\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\n requestAnimationFrame(function () {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === ' ' || evt.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_(evt);\n if (activationState.wasElementMadeActive) {\n _this.animateActivation_();\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 MDCRippleFoundation.prototype.checkElementMadeActive_ = function (evt) {\n return evt !== undefined && evt.type === 'keydown' ? this.adapter_.isSurfaceActive() : true;\n };\n MDCRippleFoundation.prototype.animateActivation_ = function () {\n var _this = this;\n var _a = MDCRippleFoundation.strings,\n VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START,\n VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END;\n var _b = MDCRippleFoundation.cssClasses,\n FG_DEACTIVATION = _b.FG_DEACTIVATION,\n FG_ACTIVATION = _b.FG_ACTIVATION;\n var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;\n this.layoutInternal_();\n var translateStart = '';\n var translateEnd = '';\n if (!this.adapter_.isUnbounded()) {\n var _c = this.getFgTranslationCoordinates_(),\n startPoint = _c.startPoint,\n endPoint = _c.endPoint;\n translateStart = startPoint.x + \"px, \" + startPoint.y + \"px\";\n translateEnd = endPoint.x + \"px, \" + endPoint.y + \"px\";\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 // Force layout in order to re-trigger the animation.\n this.adapter_.computeBoundingRect();\n this.adapter_.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(function () {\n return _this.activationTimerCallback_();\n }, DEACTIVATION_TIMEOUT_MS);\n };\n MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function () {\n var _a = this.activationState_,\n activationEvent = _a.activationEvent,\n wasActivatedByPointer = _a.wasActivatedByPointer;\n var startPoint;\n if (wasActivatedByPointer) {\n startPoint = util_1.getNormalizedEventCoords(activationEvent, this.adapter_.getWindowPageOffset(), this.adapter_.computeBoundingRect());\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 var endPoint = {\n x: this.frame_.width / 2 - this.initialSize_ / 2,\n y: this.frame_.height / 2 - this.initialSize_ / 2\n };\n return { startPoint: startPoint, endPoint: endPoint };\n };\n MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function () {\n var _this = this;\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 var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;\n var _a = this.activationState_,\n hasDeactivationUXRun = _a.hasDeactivationUXRun,\n isActivated = _a.isActivated;\n var activationHasEnded = hasDeactivationUXRun || !isActivated;\n if (activationHasEnded && this.activationAnimationHasEnded_) {\n this.rmBoundedActivationClasses_();\n this.adapter_.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer_ = setTimeout(function () {\n _this.adapter_.removeClass(FG_DEACTIVATION);\n }, constants_1.numbers.FG_DEACTIVATION_MS);\n }\n };\n MDCRippleFoundation.prototype.rmBoundedActivationClasses_ = function () {\n var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n };\n MDCRippleFoundation.prototype.resetActivationState_ = function () {\n var _this = this;\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(function () {\n return _this.previousActivationEvent_ = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n };\n MDCRippleFoundation.prototype.deactivate_ = function () {\n var _this = this;\n var 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 var state = __assign({}, activationState);\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n return _this.animateDeactivation_(state);\n });\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(function () {\n _this.activationState_.hasDeactivationUXRun = true;\n _this.animateDeactivation_(state);\n _this.resetActivationState_();\n });\n }\n };\n MDCRippleFoundation.prototype.animateDeactivation_ = function (_a) {\n var wasActivatedByPointer = _a.wasActivatedByPointer,\n wasElementMadeActive = _a.wasElementMadeActive;\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n };\n MDCRippleFoundation.prototype.layoutInternal_ = function () {\n var _this = this;\n this.frame_ = this.adapter_.computeBoundingRect();\n var maxDim = Math.max(this.frame_.height, this.frame_.width);\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 var getBoundedRadius = function getBoundedRadius() {\n var hypotenuse = Math.sqrt(Math.pow(_this.frame_.width, 2) + Math.pow(_this.frame_.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n this.maxRadius_ = this.adapter_.isUnbounded() ? maxDim : getBoundedRadius();\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_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);\n this.fgScale_ = \"\" + this.maxRadius_ / this.initialSize_;\n this.updateLayoutCssVars_();\n };\n MDCRippleFoundation.prototype.updateLayoutCssVars_ = function () {\n var _a = MDCRippleFoundation.strings,\n VAR_FG_SIZE = _a.VAR_FG_SIZE,\n VAR_LEFT = _a.VAR_LEFT,\n VAR_TOP = _a.VAR_TOP,\n VAR_FG_SCALE = _a.VAR_FG_SCALE;\n this.adapter_.updateCssVariable(VAR_FG_SIZE, this.initialSize_ + \"px\");\n this.adapter_.updateCssVariable(VAR_FG_SCALE, this.fgScale_);\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 this.adapter_.updateCssVariable(VAR_LEFT, this.unboundedCoords_.left + \"px\");\n this.adapter_.updateCssVariable(VAR_TOP, this.unboundedCoords_.top + \"px\");\n }\n };\n return MDCRippleFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCRippleFoundation = MDCRippleFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCRippleFoundation;\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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 BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded'\n};\nexports.strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top'\n};\nexports.numbers = {\n DEACTIVATION_TIMEOUT_MS: 225,\n FG_DEACTIVATION_MS: 150,\n INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300\n};\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar component_1 = __webpack_require__(1);\nvar ponyfill_1 = __webpack_require__(2);\nvar foundation_1 = __webpack_require__(4);\nvar util = __importStar(__webpack_require__(3));\nvar MDCRipple = /** @class */function (_super) {\n __extends(MDCRipple, _super);\n function MDCRipple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.disabled = false;\n return _this;\n }\n MDCRipple.attachTo = function (root, opts) {\n if (opts === void 0) {\n opts = { isUnbounded: undefined };\n }\n var ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n return ripple;\n };\n MDCRipple.createAdapter = function (instance) {\n return {\n addClass: function addClass(className) {\n return instance.root_.classList.add(className);\n },\n browserSupportsCssVars: function browserSupportsCssVars() {\n return util.supportsCssVariables(window);\n },\n computeBoundingRect: function computeBoundingRect() {\n return instance.root_.getBoundingClientRect();\n },\n containsEventTarget: function containsEventTarget(target) {\n return instance.root_.contains(target);\n },\n deregisterDocumentInteractionHandler: function deregisterDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.removeEventListener(evtType, handler, util.applyPassive());\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(evtType, handler) {\n return instance.root_.removeEventListener(evtType, handler, util.applyPassive());\n },\n deregisterResizeHandler: function deregisterResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getWindowPageOffset: function getWindowPageOffset() {\n return { x: window.pageXOffset, y: window.pageYOffset };\n },\n isSurfaceActive: function isSurfaceActive() {\n return ponyfill_1.matches(instance.root_, ':active');\n },\n isSurfaceDisabled: function isSurfaceDisabled() {\n return Boolean(instance.disabled);\n },\n isUnbounded: function isUnbounded() {\n return Boolean(instance.unbounded);\n },\n registerDocumentInteractionHandler: function registerDocumentInteractionHandler(evtType, handler) {\n return document.documentElement.addEventListener(evtType, handler, util.applyPassive());\n },\n registerInteractionHandler: function registerInteractionHandler(evtType, handler) {\n return instance.root_.addEventListener(evtType, handler, util.applyPassive());\n },\n registerResizeHandler: function registerResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n removeClass: function removeClass(className) {\n return instance.root_.classList.remove(className);\n },\n updateCssVariable: function updateCssVariable(varName, value) {\n return instance.root_.style.setProperty(varName, value);\n }\n };\n };\n Object.defineProperty(MDCRipple.prototype, \"unbounded\", {\n get: function get() {\n return Boolean(this.unbounded_);\n },\n set: function set(unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n },\n enumerable: true,\n configurable: true\n });\n MDCRipple.prototype.activate = function () {\n this.foundation_.activate();\n };\n MDCRipple.prototype.deactivate = function () {\n this.foundation_.deactivate();\n };\n MDCRipple.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCRipple.prototype.getDefaultFoundation = function () {\n return new foundation_1.MDCRippleFoundation(MDCRipple.createAdapter(this));\n };\n MDCRipple.prototype.initialSyncWithDOM = function () {\n var root = this.root_;\n this.unbounded = 'mdcRippleIsUnbounded' in root.dataset;\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 */\n MDCRipple.prototype.setUnbounded_ = function () {\n this.foundation_.setUnbounded(Boolean(this.unbounded_));\n };\n return MDCRipple;\n}(component_1.MDCComponent);\nexports.MDCRipple = MDCRipple;\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// mdc.toolbar.js"," \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 = 173);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b31518711b0023492c74","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport class MDCFoundation<AdapterType extends {} = {}> {\n static get cssClasses(): { [key: string]: string } {\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 static get strings(): { [key: string]: string } {\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 static get numbers(): { [key: string]: number } {\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 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 protected adapter_: AdapterType;\n\n constructor(adapter: AdapterType = {} as AdapterType) {\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\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from './foundation';\nimport {CustomEventListener, EventType, SpecificEventListener} from './types';\n\nexport class MDCComponent<FoundationType extends MDCFoundation> {\n static attachTo(root: Element): MDCComponent<MDCFoundation<{}>> {\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 protected root_: Element;\n protected foundation_: FoundationType;\n\n constructor(\n root: Element,\n foundation?: FoundationType,\n ...args: Array<unknown>\n ) {\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 this.foundation_ = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation_.init();\n this.initialSyncWithDOM();\n }\n\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n initialize(..._args: Array<unknown>) {\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 getDefaultFoundation(): FoundationType {\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 */\n listen<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;\n listen<E extends Event>(evtType: string, handler: CustomEventListener<E>): void;\n listen(evtType: string, handler: EventListener) {\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 */\n unlisten<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;\n unlisten<E extends Event>(evtType: string, handler: CustomEventListener<E>): void;\n unlisten(evtType: string, handler: EventListener) {\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, with the given data.\n */\n emit<T extends object>(evtType: string, evtData: T, shouldBubble = false) {\n let evt: CustomEvent<T>;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent<T>(evtType, {\n bubbles: shouldBubble,\n detail: evtData,\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\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-base/component.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCToolbarAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\n\ninterface Calculations {\n toolbarRowHeight: number;\n\n /*\n * Calculated height ratios. We use ratio to calculate corresponding heights in resize event.\n */\n\n /** The ratio of toolbar height to row height. */\n toolbarRatio: number;\n\n /** The ratio of flexible space height to row height. */\n flexibleExpansionRatio: number;\n\n /** The ratio of max toolbar move up distance to row height. */\n maxTranslateYRatio: number;\n\n /** The ratio of max scrollTop that we should listen to to row height. */\n scrollThresholdRatio: number;\n\n /*\n * Derived heights based on the above ratios.\n */\n\n toolbarHeight: number;\n\n /** Flexible row minus toolbar height (derived). */\n flexibleExpansionHeight: number;\n\n /** When toolbar only fix last row (derived). */\n maxTranslateYDistance: number;\n\n scrollThreshold: number;\n}\n\nexport class MDCToolbarFoundation extends MDCFoundation<MDCToolbarAdapter> {\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(): MDCToolbarAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n hasClass: () => false,\n addClass: () => undefined,\n removeClass: () => undefined,\n registerScrollHandler: () => undefined,\n deregisterScrollHandler: () => undefined,\n registerResizeHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getViewportWidth: () => 0,\n getViewportScrollY: () => 0,\n getOffsetHeight: () => 0,\n getFirstRowElementOffsetHeight: () => 0,\n notifyChange: () => undefined,\n setStyle: () => undefined,\n setStyleForTitleElement: () => undefined,\n setStyleForFlexibleRowElement: () => undefined,\n setStyleForFixedAdjustElement: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private checkRowHeightFrame_ = 0;\n private scrollFrame_ = 0;\n private executedLastChange_ = false;\n private isFixed_ = false;\n private isFixedLastRow_ = false;\n private hasFlexibleFirstRow_ = false;\n private useFlexDefaultBehavior_ = false;\n private calculations_: Calculations = {\n flexibleExpansionHeight: 0,\n flexibleExpansionRatio: 0,\n maxTranslateYDistance: 0,\n maxTranslateYRatio: 0,\n scrollThreshold: 0,\n scrollThresholdRatio: 0,\n toolbarHeight: 0,\n toolbarRatio: 0,\n toolbarRowHeight: 0,\n };\n\n private resizeHandler_!: SpecificEventListener<'resize'>; // assigned in init()\n private scrollHandler_!: SpecificEventListener<'scroll'>; // assigned in init()\n\n constructor(adapter?: Partial<MDCToolbarAdapter>) {\n super({...MDCToolbarFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.isFixed_ = this.adapter_.hasClass(cssClasses.FIXED);\n this.isFixedLastRow_ = this.adapter_.hasClass(cssClasses.FIXED_LASTROW) && this.isFixed_;\n this.hasFlexibleFirstRow_ = this.adapter_.hasClass(cssClasses.TOOLBAR_ROW_FLEXIBLE);\n\n if (this.hasFlexibleFirstRow_) {\n this.useFlexDefaultBehavior_ = this.adapter_.hasClass(cssClasses.FLEXIBLE_DEFAULT_BEHAVIOR);\n }\n\n this.resizeHandler_ = () => this.checkRowHeight_();\n this.scrollHandler_ = () => this.updateToolbarStyles_();\n\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n this.adapter_.registerScrollHandler(this.scrollHandler_);\n\n this.initKeyRatio_();\n this.setKeyHeights_();\n }\n\n destroy() {\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n this.adapter_.deregisterScrollHandler(this.scrollHandler_);\n }\n\n updateAdjustElementStyles() {\n if (this.isFixed_) {\n this.adapter_.setStyleForFixedAdjustElement('margin-top', `${this.calculations_.toolbarHeight}px`);\n }\n }\n\n private getFlexibleExpansionRatio_(scrollTop: number) {\n // To prevent division by zero when there is no flexibleExpansionHeight\n const delta = 0.0001;\n return Math.max(0, 1 - scrollTop / (this.calculations_.flexibleExpansionHeight + delta));\n }\n\n private checkRowHeight_() {\n cancelAnimationFrame(this.checkRowHeightFrame_);\n this.checkRowHeightFrame_ = requestAnimationFrame(() => this.setKeyHeights_());\n }\n\n private setKeyHeights_() {\n const newToolbarRowHeight = this.getRowHeight_();\n if (newToolbarRowHeight !== this.calculations_.toolbarRowHeight) {\n this.calculations_.toolbarRowHeight = newToolbarRowHeight;\n this.calculations_.toolbarHeight = this.calculations_.toolbarRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.flexibleExpansionHeight =\n this.calculations_.flexibleExpansionRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.maxTranslateYDistance =\n this.calculations_.maxTranslateYRatio * this.calculations_.toolbarRowHeight;\n this.calculations_.scrollThreshold =\n this.calculations_.scrollThresholdRatio * this.calculations_.toolbarRowHeight;\n this.updateAdjustElementStyles();\n this.updateToolbarStyles_();\n }\n }\n\n private updateToolbarStyles_() {\n cancelAnimationFrame(this.scrollFrame_);\n this.scrollFrame_ = requestAnimationFrame(() => {\n const scrollTop = this.adapter_.getViewportScrollY();\n const hasScrolledOutOfThreshold = this.scrolledOutOfThreshold_(scrollTop);\n\n if (hasScrolledOutOfThreshold && this.executedLastChange_) {\n return;\n }\n\n const flexibleExpansionRatio = this.getFlexibleExpansionRatio_(scrollTop);\n\n this.updateToolbarFlexibleState_(flexibleExpansionRatio);\n if (this.isFixedLastRow_) {\n this.updateToolbarFixedState_(scrollTop);\n }\n if (this.hasFlexibleFirstRow_) {\n this.updateFlexibleRowElementStyles_(flexibleExpansionRatio);\n }\n this.executedLastChange_ = hasScrolledOutOfThreshold;\n this.adapter_.notifyChange({flexibleExpansionRatio});\n });\n }\n\n private scrolledOutOfThreshold_(scrollTop: number) {\n return scrollTop > this.calculations_.scrollThreshold;\n }\n\n private initKeyRatio_() {\n const toolbarRowHeight = this.getRowHeight_();\n const firstRowMaxRatio = this.adapter_.getFirstRowElementOffsetHeight() / toolbarRowHeight;\n this.calculations_.toolbarRatio = this.adapter_.getOffsetHeight() / toolbarRowHeight;\n this.calculations_.flexibleExpansionRatio = firstRowMaxRatio - 1;\n this.calculations_.maxTranslateYRatio =\n this.isFixedLastRow_ ? this.calculations_.toolbarRatio - firstRowMaxRatio : 0;\n this.calculations_.scrollThresholdRatio =\n (this.isFixedLastRow_ ? this.calculations_.toolbarRatio : firstRowMaxRatio) - 1;\n }\n\n private getRowHeight_() {\n const breakpoint = numbers.TOOLBAR_MOBILE_BREAKPOINT;\n return this.adapter_.getViewportWidth() < breakpoint ?\n numbers.TOOLBAR_ROW_MOBILE_HEIGHT : numbers.TOOLBAR_ROW_HEIGHT;\n }\n\n private updateToolbarFlexibleState_(flexibleExpansionRatio: number) {\n this.adapter_.removeClass(cssClasses.FLEXIBLE_MAX);\n this.adapter_.removeClass(cssClasses.FLEXIBLE_MIN);\n if (flexibleExpansionRatio === 1) {\n this.adapter_.addClass(cssClasses.FLEXIBLE_MAX);\n } else if (flexibleExpansionRatio === 0) {\n this.adapter_.addClass(cssClasses.FLEXIBLE_MIN);\n }\n }\n\n private updateToolbarFixedState_(scrollTop: number) {\n const translateDistance = Math.max(0, Math.min(\n scrollTop - this.calculations_.flexibleExpansionHeight,\n this.calculations_.maxTranslateYDistance));\n this.adapter_.setStyle('transform', `translateY(${-translateDistance}px)`);\n\n if (translateDistance === this.calculations_.maxTranslateYDistance) {\n this.adapter_.addClass(cssClasses.FIXED_AT_LAST_ROW);\n } else {\n this.adapter_.removeClass(cssClasses.FIXED_AT_LAST_ROW);\n }\n }\n\n private updateFlexibleRowElementStyles_(flexibleExpansionRatio: number) {\n if (this.isFixed_) {\n const height = this.calculations_.flexibleExpansionHeight * flexibleExpansionRatio;\n this.adapter_.setStyleForFlexibleRowElement('height',\n `${height + this.calculations_.toolbarRowHeight}px`);\n }\n if (this.useFlexDefaultBehavior_) {\n this.updateElementStylesDefaultBehavior_(flexibleExpansionRatio);\n }\n }\n\n private updateElementStylesDefaultBehavior_(flexibleExpansionRatio: number) {\n const maxTitleSize = numbers.MAX_TITLE_SIZE;\n const minTitleSize = numbers.MIN_TITLE_SIZE;\n const currentTitleSize = (maxTitleSize - minTitleSize) * flexibleExpansionRatio + minTitleSize;\n\n this.adapter_.setStyleForTitleElement('font-size', `${currentTitleSize}rem`);\n }\n}\n\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCToolbarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/foundation.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const cssClasses = {\n FIXED: 'mdc-toolbar--fixed',\n FIXED_AT_LAST_ROW: 'mdc-toolbar--fixed-at-last-row',\n FIXED_LASTROW: 'mdc-toolbar--fixed-lastrow-only',\n FLEXIBLE_DEFAULT_BEHAVIOR: 'mdc-toolbar--flexible-default-behavior',\n FLEXIBLE_MAX: 'mdc-toolbar--flexible-space-maximized',\n FLEXIBLE_MIN: 'mdc-toolbar--flexible-space-minimized',\n TOOLBAR_ROW_FLEXIBLE: 'mdc-toolbar--flexible',\n};\n\nexport const strings = {\n CHANGE_EVENT: 'MDCToolbar:change',\n FIRST_ROW_SELECTOR: '.mdc-toolbar__row:first-child',\n ICON_SELECTOR: '.mdc-toolbar__icon',\n TITLE_SELECTOR: '.mdc-toolbar__title',\n};\n\nexport const numbers = {\n MAX_TITLE_SIZE: 2.125,\n MIN_TITLE_SIZE: 1.25,\n TOOLBAR_MOBILE_BREAKPOINT: 600,\n TOOLBAR_ROW_HEIGHT: 64,\n TOOLBAR_ROW_MOBILE_HEIGHT: 56,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/constants.ts","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport * from './adapter';\nexport * from './component';\nexport * from './constants';\nexport * from './foundation';\nexport * from './types';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/index.ts","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {MDCRipple} from '@material/ripple/component';\nimport {MDCToolbarAdapter} from './adapter';\nimport {MDCToolbarFoundation} from './foundation';\nimport {MDCToolbarEventDetail} from './types';\n\nconst {strings} = MDCToolbarFoundation;\n\nexport class MDCToolbar extends MDCComponent<MDCToolbarFoundation> {\n static attachTo(root: Element) {\n return new MDCToolbar(root);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private ripples_!: MDCRipple[]; // assigned in initialize()\n private firstRowElement_!: HTMLElement; // assigned in initialize()\n private fixedAdjustElement_!: HTMLElement | null; // assigned in initialize()\n private titleElement_!: HTMLElement | null; // assigned in initialize()\n\n initialize() {\n this.ripples_ = [];\n this.fixedAdjustElement_ = null;\n this.titleElement_ = this.root_.querySelector<HTMLElement>(strings.TITLE_SELECTOR);\n const firstRowElement = this.root_.querySelector<HTMLElement>(strings.FIRST_ROW_SELECTOR);\n if (!firstRowElement) {\n throw new Error(`MDCToolbar: Required sub-element '${strings.FIRST_ROW_SELECTOR}' is missing`);\n }\n this.firstRowElement_ = firstRowElement;\n\n [].forEach.call(this.root_.querySelectorAll(strings.ICON_SELECTOR), (icon: HTMLElement) => {\n const ripple = MDCRipple.attachTo(icon);\n ripple.unbounded = true;\n this.ripples_.push(ripple);\n });\n }\n\n destroy() {\n this.ripples_.forEach((ripple) => {\n ripple.destroy();\n });\n super.destroy();\n }\n\n set fixedAdjustElement(element: HTMLElement | null) {\n this.fixedAdjustElement_ = element;\n this.foundation_.updateAdjustElementStyles();\n }\n\n get fixedAdjustElement(): HTMLElement | null {\n return this.fixedAdjustElement_;\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n const adapter: MDCToolbarAdapter = {\n hasClass: (className) => this.root_.classList.contains(className),\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n registerScrollHandler: (handler) => window.addEventListener('scroll', handler),\n deregisterScrollHandler: (handler) => window.removeEventListener('scroll', handler),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getViewportWidth: () => window.innerWidth,\n getViewportScrollY: () => window.pageYOffset,\n getOffsetHeight: () => this.root_.offsetHeight,\n getFirstRowElementOffsetHeight: () => this.firstRowElement_.offsetHeight,\n notifyChange: (evtData) => this.emit<MDCToolbarEventDetail>(strings.CHANGE_EVENT, evtData),\n setStyle: (property, value) => this.root_.style.setProperty(property, value),\n setStyleForTitleElement: (property, value) => {\n if (this.titleElement_) {\n this.titleElement_.style.setProperty(property, value);\n }\n },\n setStyleForFlexibleRowElement: (property, value) => this.firstRowElement_.style.setProperty(property, value),\n setStyleForFixedAdjustElement: (property, value) => {\n if (this.fixedAdjustElement) {\n this.fixedAdjustElement.style.setProperty(property, value);\n }\n },\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCToolbarFoundation(adapter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-toolbar/component.ts","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\n\nexport function closest(element: Element, selector: string): Element | null {\n if (element.closest) {\n return element.closest(selector);\n }\n\n let el: Element | null = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\n\nexport function matches(element: Element, selector: string): boolean {\n const nativeMatches = element.matches\n || element.webkitMatchesSelector\n || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-dom/ponyfill.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport {MDCRipplePoint} from './types';\n\n/**\n * Stores result from supportsCssVariables to avoid redundant processing to\n * detect CSS custom variable support.\n */\nlet supportsCssVariables_: boolean | undefined;\n\n/**\n * Stores result from applyPassive to avoid redundant processing to detect\n * passive event listener support.\n */\nlet supportsPassive_: boolean | undefined;\n\nfunction detectEdgePseudoVarBug(windowObj: Window): boolean {\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 if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n return hasPseudoVarBug;\n}\n\nexport function supportsCssVariables(windowObj: Window, forceRefresh = false): boolean {\n const {CSS} = windowObj;\n let supportsCssVars = supportsCssVariables_;\n if (typeof supportsCssVariables_ === 'boolean' && !forceRefresh) {\n return supportsCssVariables_;\n }\n\n const supportsFunctionPresent = CSS && typeof CSS.supports === 'function';\n if (!supportsFunctionPresent) {\n return false;\n }\n\n const explicitlySupportsCssVars = 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 CSS.supports('(--css-vars: yes)') &&\n CSS.supports('color', '#00000000')\n );\n\n if (explicitlySupportsCssVars || weAreFeatureDetectingSafari10plus) {\n supportsCssVars = !detectEdgePseudoVarBug(windowObj);\n } else {\n supportsCssVars = false;\n }\n\n if (!forceRefresh) {\n supportsCssVariables_ = supportsCssVars;\n }\n return supportsCssVars;\n}\n\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nexport function applyPassive(globalObj: Window = window, forceRefresh = false):\n boolean | EventListenerOptions {\n if (supportsPassive_ === undefined || forceRefresh) {\n let isSupported = false;\n try {\n globalObj.document.addEventListener('test', () => undefined, {\n get passive() {\n isSupported = true;\n return isSupported;\n },\n });\n } catch (e) {\n } // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log.\n\n supportsPassive_ = isSupported;\n }\n\n return supportsPassive_ ? {passive: true} as EventListenerOptions : false;\n}\n\nexport function getNormalizedEventCoords(evt: Event | undefined, pageOffset: MDCRipplePoint, clientRect: ClientRect):\n MDCRipplePoint {\n if (!evt) {\n return {x: 0, y: 0};\n }\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 (evt.type === 'touchstart') {\n const touchEvent = evt as TouchEvent;\n normalizedX = touchEvent.changedTouches[0].pageX - documentX;\n normalizedY = touchEvent.changedTouches[0].pageY - documentY;\n } else {\n const mouseEvent = evt as MouseEvent;\n normalizedX = mouseEvent.pageX - documentX;\n normalizedY = mouseEvent.pageY - documentY;\n }\n\n return {x: normalizedX, y: normalizedY};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/util.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCFoundation} from '@material/base/foundation';\nimport {MDCRippleAdapter} from './adapter';\nimport {cssClasses, numbers, strings} from './constants';\nimport {MDCRipplePoint} from './types';\nimport {getNormalizedEventCoords} from './util';\n\ninterface ActivationStateType {\n isActivated?: boolean;\n hasDeactivationUXRun?: boolean;\n wasActivatedByPointer?: boolean;\n wasElementMadeActive?: boolean;\n activationEvent?: Event;\n isProgrammatic?: boolean;\n}\n\ninterface FgTranslationCoordinates {\n startPoint: MDCRipplePoint;\n endPoint: MDCRipplePoint;\n}\n\ninterface Coordinates {\n left: number;\n top: number;\n}\n\ntype ActivationEventType = 'touchstart' | 'pointerdown' | 'mousedown' | 'keydown';\ntype DeactivationEventType = 'touchend' | 'pointerup' | 'mouseup' | 'contextmenu';\n\n// Activation events registered on the root element of each instance for activation\nconst ACTIVATION_EVENT_TYPES: ActivationEventType[] = [\n 'touchstart', 'pointerdown', 'mousedown', 'keydown',\n];\n\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nconst POINTER_DEACTIVATION_EVENT_TYPES: DeactivationEventType[] = [\n 'touchend', 'pointerup', 'mouseup', 'contextmenu',\n];\n\n// simultaneous nested activations\nlet activatedTargets: Array<EventTarget | null> = [];\n\nexport class MDCRippleFoundation extends MDCFoundation<MDCRippleAdapter> {\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(): MDCRippleAdapter {\n return {\n addClass: () => undefined,\n browserSupportsCssVars: () => true,\n computeBoundingRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}),\n containsEventTarget: () => true,\n deregisterDocumentInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getWindowPageOffset: () => ({x: 0, y: 0}),\n isSurfaceActive: () => true,\n isSurfaceDisabled: () => true,\n isUnbounded: () => true,\n registerDocumentInteractionHandler: () => undefined,\n registerInteractionHandler: () => undefined,\n registerResizeHandler: () => undefined,\n removeClass: () => undefined,\n updateCssVariable: () => undefined,\n };\n }\n\n private activationAnimationHasEnded_ = false;\n private activationState_: ActivationStateType;\n private activationTimer_ = 0;\n private fgDeactivationRemovalTimer_ = 0;\n private fgScale_ = '0';\n private frame_ = {width: 0, height: 0};\n private initialSize_ = 0;\n private layoutFrame_ = 0;\n private maxRadius_ = 0;\n private unboundedCoords_: Coordinates = {left: 0, top: 0};\n\n private readonly activationTimerCallback_: () => void;\n private readonly activateHandler_: EventHandlerNonNull;\n private readonly deactivateHandler_: EventHandlerNonNull;\n private readonly focusHandler_: EventHandlerNonNull;\n private readonly blurHandler_: EventHandlerNonNull;\n private readonly resizeHandler_: EventHandlerNonNull;\n\n private previousActivationEvent_?: Event;\n\n constructor(adapter?: Partial<MDCRippleAdapter>) {\n super({...MDCRippleFoundation.defaultAdapter, ...adapter});\n\n this.activationState_ = this.defaultActivationState_();\n\n this.activationTimerCallback_ = () => {\n this.activationAnimationHasEnded_ = true;\n this.runDeactivationUXLogicIfReady_();\n };\n this.activateHandler_ = (e) => this.activate_(e);\n this.deactivateHandler_ = () => this.deactivate_();\n this.focusHandler_ = () => this.handleFocus();\n this.blurHandler_ = () => this.handleBlur();\n this.resizeHandler_ = () => this.layout();\n }\n\n init() {\n const supportsPressRipple = this.supportsPressRipple_();\n\n this.registerRootHandlers_(supportsPressRipple);\n\n if (supportsPressRipple) {\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\n destroy() {\n if (this.supportsPressRipple_()) {\n if (this.activationTimer_) {\n clearTimeout(this.activationTimer_);\n this.activationTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\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 this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n }\n\n /**\n * @param evt Optional event containing position information.\n */\n activate(evt?: Event): void {\n this.activate_(evt);\n }\n\n deactivate(): void {\n this.deactivate_();\n }\n\n layout(): void {\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n this.layoutFrame_ = requestAnimationFrame(() => {\n this.layoutInternal_();\n this.layoutFrame_ = 0;\n });\n }\n\n setUnbounded(unbounded: boolean): void {\n const {UNBOUNDED} = MDCRippleFoundation.cssClasses;\n if (unbounded) {\n this.adapter_.addClass(UNBOUNDED);\n } else {\n this.adapter_.removeClass(UNBOUNDED);\n }\n }\n\n handleFocus(): void {\n requestAnimationFrame(() =>\n this.adapter_.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\n }\n\n handleBlur(): void {\n requestAnimationFrame(() =>\n this.adapter_.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED));\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 */\n private supportsPressRipple_(): boolean {\n return this.adapter_.browserSupportsCssVars();\n }\n\n private defaultActivationState_(): ActivationStateType {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false,\n };\n }\n\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n private registerRootHandlers_(supportsPressRipple: boolean) {\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.registerInteractionHandler(evtType, this.activateHandler_);\n });\n if (this.adapter_.isUnbounded()) {\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n this.adapter_.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter_.registerInteractionHandler('blur', this.blurHandler_);\n }\n\n private registerDeactivationHandlers_(evt: Event) {\n if (evt.type === 'keydown') {\n this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.registerDocumentInteractionHandler(evtType, this.deactivateHandler_);\n });\n }\n }\n\n private deregisterRootHandlers_() {\n ACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.deregisterInteractionHandler(evtType, 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 deregisterDeactivationHandlers_() {\n this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => {\n this.adapter_.deregisterDocumentInteractionHandler(evtType, this.deactivateHandler_);\n });\n }\n\n private removeCssVars_() {\n const rippleStrings = MDCRippleFoundation.strings;\n const keys = Object.keys(rippleStrings) as Array<keyof typeof rippleStrings>;\n keys.forEach((key) => {\n if (key.indexOf('VAR_') === 0) {\n this.adapter_.updateCssVariable(rippleStrings[key], null);\n }\n });\n }\n\n private activate_(evt?: Event) {\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 && evt !== undefined && previousActivationEvent.type !== evt.type;\n if (isSameInteraction) {\n return;\n }\n\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (\n evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown'\n );\n\n const hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(\n (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 (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\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\n && evt !== undefined\n && ((evt as KeyboardEvent).key === ' ' || (evt as KeyboardEvent).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_(evt);\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 private checkElementMadeActive_(evt?: Event) {\n return (evt !== undefined && evt.type === 'keydown') ? this.adapter_.isSurfaceActive() : true;\n }\n\n private 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 private getFgTranslationCoordinates_(): FgTranslationCoordinates {\n const {activationEvent, wasActivatedByPointer} = this.activationState_;\n\n let startPoint;\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(\n activationEvent,\n this.adapter_.getWindowPageOffset(),\n 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 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 rmBoundedActivationClasses_() {\n const {FG_ACTIVATION} = MDCRippleFoundation.cssClasses;\n this.adapter_.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded_ = false;\n this.adapter_.computeBoundingRect();\n }\n\n private 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_ = undefined, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n }\n\n private deactivate_(): void {\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: ActivationStateType = {...activationState};\n\n if (activationState.isProgrammatic) {\n requestAnimationFrame(() => this.animateDeactivation_(state));\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(() => {\n this.activationState_.hasDeactivationUXRun = true;\n this.animateDeactivation_(state);\n this.resetActivationState_();\n });\n }\n }\n\n private animateDeactivation_({wasActivatedByPointer, wasElementMadeActive}: ActivationStateType) {\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n }\n\n private 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_ = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);\n this.fgScale_ = `${this.maxRadius_ / this.initialSize_}`;\n\n this.updateLayoutCssVars_();\n }\n\n private 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\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCRippleFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/foundation.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nexport const 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 BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded',\n};\n\nexport const strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top',\n};\n\nexport const numbers = {\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 INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300, // Delay between touch and simulated mouse events on touch devices\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/constants.ts","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport {MDCComponent} from '@material/base/component';\nimport {matches} from '@material/dom/ponyfill';\nimport {MDCRippleAdapter} from './adapter';\nimport {MDCRippleFoundation} from './foundation';\nimport {MDCRippleAttachOpts, MDCRippleCapableSurface} from './types';\nimport * as util from './util';\n\nexport type MDCRippleFactory = (el: Element, foundation?: MDCRippleFoundation) => MDCRipple;\n\nexport class MDCRipple extends MDCComponent<MDCRippleFoundation> implements MDCRippleCapableSurface {\n static attachTo(root: Element, opts: MDCRippleAttachOpts = {isUnbounded: undefined}): MDCRipple {\n const ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n return ripple;\n }\n\n static createAdapter(instance: MDCRippleCapableSurface): MDCRippleAdapter {\n return {\n addClass: (className) => instance.root_.classList.add(className),\n browserSupportsCssVars: () => util.supportsCssVariables(window),\n computeBoundingRect: () => instance.root_.getBoundingClientRect(),\n containsEventTarget: (target) => instance.root_.contains(target as Node),\n deregisterDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.removeEventListener(evtType, handler, util.applyPassive()),\n deregisterInteractionHandler: (evtType, handler) =>\n instance.root_.removeEventListener(evtType, handler, util.applyPassive()),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getWindowPageOffset: () => ({x: window.pageXOffset, y: window.pageYOffset}),\n isSurfaceActive: () => matches(instance.root_, ':active'),\n isSurfaceDisabled: () => Boolean(instance.disabled),\n isUnbounded: () => Boolean(instance.unbounded),\n registerDocumentInteractionHandler: (evtType, handler) =>\n document.documentElement.addEventListener(evtType, handler, util.applyPassive()),\n registerInteractionHandler: (evtType, handler) =>\n instance.root_.addEventListener(evtType, handler, util.applyPassive()),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n removeClass: (className) => instance.root_.classList.remove(className),\n updateCssVariable: (varName, value) => (instance.root_ as HTMLElement).style.setProperty(varName, value),\n };\n }\n\n // Public visibility for this property is required by MDCRippleCapableSurface.\n root_!: Element; // assigned in MDCComponent constructor\n\n disabled = false;\n\n private unbounded_?: boolean;\n\n get unbounded(): boolean {\n return Boolean(this.unbounded_);\n }\n\n set unbounded(unbounded: boolean) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\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 getDefaultFoundation() {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n }\n\n initialSyncWithDOM() {\n const root = this.root_ as HTMLElement;\n this.unbounded = 'mdcRippleIsUnbounded' in root.dataset;\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 */\n private setUnbounded_() {\n this.foundation_.setUnbounded(Boolean(this.unbounded_));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-ripple/component.ts"],"sourceRoot":""}
\No newline at end of file