UNPKG

278 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///mdc.tabs.js","webpack:///webpack/bootstrap b31518711b0023492c74","webpack:///./packages/mdc-base/foundation.ts","webpack:///./packages/mdc-base/component.ts","webpack:///./packages/mdc-animation/util.ts","webpack:///./packages/mdc-tabs/index.ts","webpack:///./packages/mdc-tabs/tab/index.ts","webpack:///./packages/mdc-tabs/tab-bar/index.ts","webpack:///./packages/mdc-tabs/tab-bar-scroller/index.ts","webpack:///./packages/mdc-tabs/tab-bar-scroller/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-tabs/tab/constants.ts","webpack:///./packages/mdc-tabs/tab/foundation.ts","webpack:///./packages/mdc-ripple/component.ts","webpack:///./packages/mdc-tabs/tab/component.ts","webpack:///./packages/mdc-tabs/tab-bar/component.ts","webpack:///./packages/mdc-tabs/tab-bar/foundation.ts","webpack:///./packages/mdc-tabs/tab-bar/constants.ts","webpack:///./packages/mdc-tabs/tab-bar-scroller/foundation.ts","webpack:///./packages/mdc-tabs/tab-bar-scroller/constants.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","11","cssPropertyNameMap","animation","prefixed","standard","transform","transition","jsEventTypeMap","animationend","cssProperty","animationiteration","animationstart","transitionend","isWindow","windowObj","Boolean","createElement","getCorrectPropertyName","el","_a","isStandard","style","getCorrectEventName","eventType","163","__export","164","constants_1","tabCssClasses","cssClasses","tabStrings","strings","165","tabBarCssClasses","tabBarStrings","166","tabBarScrollerCssClasses","tabBarScrollerStrings","167","__extends","_extendStatics","extendStatics","b","setPrototypeOf","__proto__","Array","__","constructor","create","util_1","component_1","component_2","MDCTabBarScroller","_super","tabBar_","tabBarFactory","MDCTabBar","scrollFrame_","querySelector","MDCTabBarScrollerFoundation","FRAME_SELECTOR","tabBarEl_","TABS_SELECTOR","forwardIndicator_","INDICATOR_FORWARD_SELECTOR","backIndicator_","INDICATOR_BACK_SELECTOR","_this","addClass","className","classList","add","removeClass","remove","eventTargetHasClass","target","contains","addClassToForwardIndicator","removeClassFromForwardIndicator","addClassToBackIndicator","removeClassFromBackIndicator","isRTL","getComputedStyle","getPropertyValue","registerBackIndicatorClickHandler","deregisterBackIndicatorClickHandler","registerForwardIndicatorClickHandler","deregisterForwardIndicatorClickHandler","registerCapturedInteractionHandler","deregisterCapturedInteractionHandler","registerWindowResizeHandler","window","deregisterWindowResizeHandler","getNumberOfTabs","tabBar","tabs","getComputedWidthForTabAtIndex","index","computedWidth","getComputedLeftForTabAtIndex","computedLeft","getOffsetWidthForScrollFrame","offsetWidth","getScrollLeftForScrollFrame","scrollLeft","setScrollLeftForScrollFrame","scrollLeftAmount","getOffsetWidthForTabBar","setTransformStyleForTabBar","setProperty","getOffsetLeftForEventTarget","offsetLeft","getOffsetWidthForEventTarget","layout","2","closest","element","selector","matches","parentElement","nativeMatches","webkitMatchesSelector","msMatchesSelector","3","supportsCssVariables_","supportsPassive_","detectEdgePseudoVarBug","node","body","appendChild","computedStyle","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","__assign","assign","t","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","MDCRippleFoundation","defaultAdapter","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","width","height","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","numbers","browserSupportsCssVars","computeBoundingRect","right","bottom","containsEventTarget","deregisterDocumentInteractionHandler","deregisterInteractionHandler","deregisterResizeHandler","getWindowPageOffset","isSurfaceActive","isSurfaceDisabled","isUnbounded","registerDocumentInteractionHandler","registerInteractionHandler","registerResizeHandler","updateCssVariable","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","ROOT_1","ROOT","UNBOUNDED_1","UNBOUNDED","requestAnimationFrame","layoutInternal_","clearTimeout","FG_ACTIVATION","FG_DEACTIVATION","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","activate","deactivate","cancelAnimationFrame","setUnbounded","unbounded","BG_FOCUSED","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","forEach","registerDeactivationHandlers_","rippleStrings","keys","key","indexOf","activationState","previousActivationEvent","previousActivationEvent_","isSameInteraction","hasActivatedChild","some","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","Math","max","getBoundedRadius","hypotenuse","sqrt","pow","PADDING","floor","INITIAL_ORIGIN_SCALE","updateLayoutCssVars_","VAR_FG_SIZE","VAR_LEFT","VAR_TOP","VAR_FG_SCALE","round","5","50","ACTIVE","SELECTED_EVENT","51","MDCTabFoundation","computedWidth_","computedLeft_","isActive_","preventDefaultOnClick_","clickHandler_","preventDefault","notifySelected","keydownHandler_","getOffsetWidth","getOffsetLeft","getComputedWidth","getComputedLeft","isActive","setActive","preventsDefaultOnClick","setPreventDefaultOnClick","preventDefaultOnClick","measureSelf","6","__importStar","mod","result","k","ponyfill_1","util","MDCRipple","disabled","opts","ripple","createAdapter","instance","getBoundingClientRect","documentElement","pageXOffset","pageYOffset","varName","unbounded_","set","setUnbounded_","dataset","93","MDCTab","ripple_","tab","94","foundation_2","MDCTabBarFoundation","tabs_","activeIndex","getActiveTabIndex","setActiveTab_","setActiveTabIndex_","tabFactory","indicator_","INDICATOR_SELECTOR","gatherTabs_","tabSelectedHandler_","bindOnMDCTabSelectedEvent","unbindOnMDCTabSelectedEvent","setStyleForIndicator","propertyName","getOffsetWidthForIndicator","notifyChange","CHANGE_EVENT","isTabActiveAtIndex","setTabActiveAtIndex","isDefaultPreventedOnClickForTabAtIndex","setPreventDefaultOnClickForTabAtIndex","measureTabAtIndex","tabElements","slice","querySelectorAll","TAB_SELECTOR","map","activeTabIndex","switchToTabAtIndex","activeTab","indexOfTab","95","isIndicatorShown_","activeTabIndex_","UPGRADED","findActiveTabIndex_","shouldNotify","prevActiveTabIndex","layoutIndicator_","forEachTabIndex_","isIndicatorFirstRender","translateAmtForActiveTabLeft","scaleAmtForActiveTabWidth","transformValue","numTabs","shouldBreak","96","97","INTERACTION_EVENTS","pointerDownRecognized_","currentTranslateOffset_","focusedTarget_","scrollFrameScrollLeft_","forwardIndicatorClickHandler_","scrollForward","backIndicatorClickHandler_","scrollBack","interactionHandler_","handlePossibleTabKeyboardFocus_","tabWidthAccumulator","scrollTargetIndex","tabOffsetLeft","tabBarWidthLessTabOffsetLeft","tabIsNotOccluded","isRTL_","scrollTargetDetermined","scrollToTabAtIndex","scrollFrameOffsetWidth","tabOffsetLeftAndWidth","frameOffsetAndTabWidth","tabRightOffset","layout_","scrollTargetOffsetLeft","scrollTargetOffsetWidth","normalizeForRTL_","shiftFrame_","frameWidth","isOverflowing","updateIndicatorEnabledStates_","shiftAmount","TAB","resetAmt","scrollFrameWidth","tabBarWidth","leftEdge","rightEdge","shouldScrollBack","shouldScrollForward","normalizedLeftOffset","INDICATOR_ENABLED","remainingTabBarWidth","98","INDICATOR_BACK","INDICATOR_FORWARD"],"mappings":"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","file":"mdc.tabs.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[\"tabs\"] = factory();\n\telse\n\t\troot[\"mdc\"] = root[\"mdc\"] || {}, root[\"mdc\"][\"tabs\"] = 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[\"tabs\"] = factory();\n\telse\n\t\troot[\"mdc\"] = root[\"mdc\"] || {}, root[\"mdc\"][\"tabs\"] = 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 = 163);\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/***/ 11:\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 cssPropertyNameMap = {\n animation: {\n prefixed: '-webkit-animation',\n standard: 'animation'\n },\n transform: {\n prefixed: '-webkit-transform',\n standard: 'transform'\n },\n transition: {\n prefixed: '-webkit-transition',\n standard: 'transition'\n }\n};\nvar jsEventTypeMap = {\n animationend: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationEnd',\n standard: 'animationend'\n },\n animationiteration: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationIteration',\n standard: 'animationiteration'\n },\n animationstart: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationStart',\n standard: 'animationstart'\n },\n transitionend: {\n cssProperty: 'transition',\n prefixed: 'webkitTransitionEnd',\n standard: 'transitionend'\n }\n};\nfunction isWindow(windowObj) {\n return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function';\n}\nfunction getCorrectPropertyName(windowObj, cssProperty) {\n if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {\n var el = windowObj.document.createElement('div');\n var _a = cssPropertyNameMap[cssProperty],\n standard = _a.standard,\n prefixed = _a.prefixed;\n var isStandard = standard in el.style;\n return isStandard ? standard : prefixed;\n }\n return cssProperty;\n}\nexports.getCorrectPropertyName = getCorrectPropertyName;\nfunction getCorrectEventName(windowObj, eventType) {\n if (isWindow(windowObj) && eventType in jsEventTypeMap) {\n var el = windowObj.document.createElement('div');\n var _a = jsEventTypeMap[eventType],\n standard = _a.standard,\n prefixed = _a.prefixed,\n cssProperty = _a.cssProperty;\n var isStandard = cssProperty in el.style;\n return isStandard ? standard : prefixed;\n }\n return eventType;\n}\nexports.getCorrectEventName = getCorrectEventName;\n\n/***/ }),\n\n/***/ 163:\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__(164));\n__export(__webpack_require__(165));\n__export(__webpack_require__(166));\n\n/***/ }),\n\n/***/ 164:\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__(93));\n__export(__webpack_require__(51));\nvar constants_1 = __webpack_require__(50);\nexports.tabCssClasses = constants_1.cssClasses;\nexports.tabStrings = constants_1.strings;\n\n/***/ }),\n\n/***/ 165:\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__(94));\n__export(__webpack_require__(95));\nvar constants_1 = __webpack_require__(96);\nexports.tabBarCssClasses = constants_1.cssClasses;\nexports.tabBarStrings = constants_1.strings;\n\n/***/ }),\n\n/***/ 166:\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__(167));\n__export(__webpack_require__(97));\nvar constants_1 = __webpack_require__(98);\nexports.tabBarScrollerCssClasses = constants_1.cssClasses;\nexports.tabBarScrollerStrings = constants_1.strings;\n\n/***/ }),\n\n/***/ 167:\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 util_1 = __webpack_require__(11);\nvar component_1 = __webpack_require__(1);\nvar component_2 = __webpack_require__(94);\nvar foundation_1 = __webpack_require__(97);\nvar MDCTabBarScroller = /** @class */function (_super) {\n __extends(MDCTabBarScroller, _super);\n function MDCTabBarScroller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabBarScroller.attachTo = function (root) {\n return new MDCTabBarScroller(root);\n };\n Object.defineProperty(MDCTabBarScroller.prototype, \"tabBar\", {\n get: function get() {\n return this.tabBar_;\n },\n enumerable: true,\n configurable: true\n });\n MDCTabBarScroller.prototype.initialize = function (tabBarFactory) {\n if (tabBarFactory === void 0) {\n tabBarFactory = function tabBarFactory(el) {\n return new component_2.MDCTabBar(el);\n };\n }\n this.scrollFrame_ = this.root_.querySelector(foundation_1.MDCTabBarScrollerFoundation.strings.FRAME_SELECTOR);\n this.tabBarEl_ = this.root_.querySelector(foundation_1.MDCTabBarScrollerFoundation.strings.TABS_SELECTOR);\n this.forwardIndicator_ = this.root_.querySelector(foundation_1.MDCTabBarScrollerFoundation.strings.INDICATOR_FORWARD_SELECTOR);\n this.backIndicator_ = this.root_.querySelector(foundation_1.MDCTabBarScrollerFoundation.strings.INDICATOR_BACK_SELECTOR);\n this.tabBar_ = tabBarFactory(this.tabBarEl_);\n };\n MDCTabBarScroller.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 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 eventTargetHasClass: function eventTargetHasClass(target, className) {\n return target.classList.contains(className);\n },\n addClassToForwardIndicator: function addClassToForwardIndicator(className) {\n return _this.forwardIndicator_.classList.add(className);\n },\n removeClassFromForwardIndicator: function removeClassFromForwardIndicator(className) {\n return _this.forwardIndicator_.classList.remove(className);\n },\n addClassToBackIndicator: function addClassToBackIndicator(className) {\n return _this.backIndicator_.classList.add(className);\n },\n removeClassFromBackIndicator: function removeClassFromBackIndicator(className) {\n return _this.backIndicator_.classList.remove(className);\n },\n isRTL: function isRTL() {\n return getComputedStyle(_this.root_).getPropertyValue('direction') === 'rtl';\n },\n registerBackIndicatorClickHandler: function registerBackIndicatorClickHandler(handler) {\n return _this.backIndicator_.addEventListener('click', handler);\n },\n deregisterBackIndicatorClickHandler: function deregisterBackIndicatorClickHandler(handler) {\n return _this.backIndicator_.removeEventListener('click', handler);\n },\n registerForwardIndicatorClickHandler: function registerForwardIndicatorClickHandler(handler) {\n return _this.forwardIndicator_.addEventListener('click', handler);\n },\n deregisterForwardIndicatorClickHandler: function deregisterForwardIndicatorClickHandler(handler) {\n return _this.forwardIndicator_.removeEventListener('click', handler);\n },\n registerCapturedInteractionHandler: function registerCapturedInteractionHandler(evt, handler) {\n return _this.root_.addEventListener(evt, handler, true);\n },\n deregisterCapturedInteractionHandler: function deregisterCapturedInteractionHandler(evt, handler) {\n return _this.root_.removeEventListener(evt, handler, true);\n },\n registerWindowResizeHandler: function registerWindowResizeHandler(handler) {\n return window.addEventListener('resize', handler);\n },\n deregisterWindowResizeHandler: function deregisterWindowResizeHandler(handler) {\n return window.removeEventListener('resize', handler);\n },\n getNumberOfTabs: function getNumberOfTabs() {\n return _this.tabBar.tabs.length;\n },\n getComputedWidthForTabAtIndex: function getComputedWidthForTabAtIndex(index) {\n return _this.tabBar.tabs[index].computedWidth;\n },\n getComputedLeftForTabAtIndex: function getComputedLeftForTabAtIndex(index) {\n return _this.tabBar.tabs[index].computedLeft;\n },\n getOffsetWidthForScrollFrame: function getOffsetWidthForScrollFrame() {\n return _this.scrollFrame_.offsetWidth;\n },\n getScrollLeftForScrollFrame: function getScrollLeftForScrollFrame() {\n return _this.scrollFrame_.scrollLeft;\n },\n setScrollLeftForScrollFrame: function setScrollLeftForScrollFrame(scrollLeftAmount) {\n return _this.scrollFrame_.scrollLeft = scrollLeftAmount;\n },\n getOffsetWidthForTabBar: function getOffsetWidthForTabBar() {\n return _this.tabBarEl_.offsetWidth;\n },\n setTransformStyleForTabBar: function setTransformStyleForTabBar(value) {\n _this.tabBarEl_.style.setProperty(util_1.getCorrectPropertyName(window, 'transform'), value);\n },\n getOffsetLeftForEventTarget: function getOffsetLeftForEventTarget(target) {\n return target.offsetLeft;\n },\n getOffsetWidthForEventTarget: function getOffsetWidthForEventTarget(target) {\n return target.offsetWidth;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTabBarScrollerFoundation(adapter);\n };\n MDCTabBarScroller.prototype.layout = function () {\n this.foundation_.layout();\n };\n return MDCTabBarScroller;\n}(component_1.MDCComponent);\nexports.MDCTabBarScroller = MDCTabBarScroller;\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/***/ 50:\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 ACTIVE: 'mdc-tab--active'\n};\nexports.strings = {\n SELECTED_EVENT: 'MDCTab:selected'\n};\n\n/***/ }),\n\n/***/ 51:\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__(50);\nvar MDCTabFoundation = /** @class */function (_super) {\n __extends(MDCTabFoundation, _super);\n function MDCTabFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabFoundation.defaultAdapter, adapter)) || this;\n _this.computedWidth_ = 0;\n _this.computedLeft_ = 0;\n _this.isActive_ = false;\n _this.preventDefaultOnClick_ = false;\n _this.clickHandler_ = function (evt) {\n if (_this.preventDefaultOnClick_) {\n evt.preventDefault();\n }\n _this.adapter_.notifySelected();\n };\n _this.keydownHandler_ = function (evt) {\n if (evt.key === 'Enter' || evt.keyCode === 13) {\n _this.adapter_.notifySelected();\n }\n };\n return _this;\n }\n Object.defineProperty(MDCTabFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"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 addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n registerInteractionHandler: function registerInteractionHandler() {\n return undefined;\n },\n deregisterInteractionHandler: function deregisterInteractionHandler() {\n return undefined;\n },\n getOffsetWidth: function getOffsetWidth() {\n return 0;\n },\n getOffsetLeft: function getOffsetLeft() {\n return 0;\n },\n notifySelected: function notifySelected() {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabFoundation.prototype.init = function () {\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n };\n MDCTabFoundation.prototype.destroy = function () {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n };\n MDCTabFoundation.prototype.getComputedWidth = function () {\n return this.computedWidth_;\n };\n MDCTabFoundation.prototype.getComputedLeft = function () {\n return this.computedLeft_;\n };\n MDCTabFoundation.prototype.isActive = function () {\n return this.isActive_;\n };\n MDCTabFoundation.prototype.setActive = function (isActive) {\n this.isActive_ = isActive;\n if (this.isActive_) {\n this.adapter_.addClass(constants_1.cssClasses.ACTIVE);\n } else {\n this.adapter_.removeClass(constants_1.cssClasses.ACTIVE);\n }\n };\n MDCTabFoundation.prototype.preventsDefaultOnClick = function () {\n return this.preventDefaultOnClick_;\n };\n MDCTabFoundation.prototype.setPreventDefaultOnClick = function (preventDefaultOnClick) {\n this.preventDefaultOnClick_ = preventDefaultOnClick;\n };\n MDCTabFoundation.prototype.measureSelf = function () {\n this.computedWidth_ = this.adapter_.getOffsetWidth();\n this.computedLeft_ = this.adapter_.getOffsetLeft();\n };\n return MDCTabFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabFoundation = MDCTabFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabFoundation;\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/***/ 93:\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 constants_1 = __webpack_require__(50);\nvar foundation_1 = __webpack_require__(51);\nvar MDCTab = /** @class */function (_super) {\n __extends(MDCTab, _super);\n function MDCTab() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ripple_ = component_2.MDCRipple.attachTo(_this.root_);\n return _this;\n }\n MDCTab.attachTo = function (root) {\n return new MDCTab(root);\n };\n Object.defineProperty(MDCTab.prototype, \"computedWidth\", {\n get: function get() {\n return this.foundation_.getComputedWidth();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTab.prototype, \"computedLeft\", {\n get: function get() {\n return this.foundation_.getComputedLeft();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTab.prototype, \"isActive\", {\n get: function get() {\n return this.foundation_.isActive();\n },\n set: function set(isActive) {\n this.foundation_.setActive(isActive);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTab.prototype, \"preventDefaultOnClick\", {\n get: function get() {\n return this.foundation_.preventsDefaultOnClick();\n },\n set: function set(preventDefaultOnClick) {\n this.foundation_.setPreventDefaultOnClick(preventDefaultOnClick);\n },\n enumerable: true,\n configurable: true\n });\n MDCTab.prototype.destroy = function () {\n this.ripple_.destroy();\n _super.prototype.destroy.call(this);\n };\n MDCTab.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 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 registerInteractionHandler: function registerInteractionHandler(type, handler) {\n return _this.listen(type, handler);\n },\n deregisterInteractionHandler: function deregisterInteractionHandler(type, handler) {\n return _this.unlisten(type, handler);\n },\n getOffsetWidth: function getOffsetWidth() {\n return _this.root_.offsetWidth;\n },\n getOffsetLeft: function getOffsetLeft() {\n return _this.root_.offsetLeft;\n },\n notifySelected: function notifySelected() {\n return _this.emit(foundation_1.MDCTabFoundation.strings.SELECTED_EVENT, { tab: _this }, true);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_1.MDCTabFoundation(adapter);\n };\n MDCTab.prototype.initialSyncWithDOM = function () {\n this.isActive = this.root_.classList.contains(constants_1.cssClasses.ACTIVE);\n };\n MDCTab.prototype.measureSelf = function () {\n this.foundation_.measureSelf();\n };\n return MDCTab;\n}(component_1.MDCComponent);\nexports.MDCTab = MDCTab;\n\n/***/ }),\n\n/***/ 94:\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__(93);\nvar foundation_1 = __webpack_require__(51);\nvar foundation_2 = __webpack_require__(95);\nvar strings = foundation_2.MDCTabBarFoundation.strings;\nvar MDCTabBar = /** @class */function (_super) {\n __extends(MDCTabBar, _super);\n function MDCTabBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTabBar.attachTo = function (root) {\n return new MDCTabBar(root);\n };\n Object.defineProperty(MDCTabBar.prototype, \"tabs\", {\n get: function get() {\n return this.tabs_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBar.prototype, \"activeTab\", {\n get: function get() {\n var activeIndex = this.foundation_.getActiveTabIndex();\n return this.tabs[activeIndex];\n },\n set: function set(tab) {\n this.setActiveTab_(tab, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBar.prototype, \"activeTabIndex\", {\n get: function get() {\n return this.foundation_.getActiveTabIndex();\n },\n set: function set(index) {\n this.setActiveTabIndex_(index, false);\n },\n enumerable: true,\n configurable: true\n });\n MDCTabBar.prototype.initialize = function (tabFactory) {\n var _this = this;\n if (tabFactory === void 0) {\n tabFactory = function tabFactory(el) {\n return new component_2.MDCTab(el);\n };\n }\n this.indicator_ = this.root_.querySelector(strings.INDICATOR_SELECTOR);\n this.tabs_ = this.gatherTabs_(tabFactory);\n this.tabSelectedHandler_ = function (_a) {\n var detail = _a.detail;\n var tab = detail.tab;\n _this.setActiveTab_(tab, true);\n };\n };\n MDCTabBar.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 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 bindOnMDCTabSelectedEvent: function bindOnMDCTabSelectedEvent() {\n return _this.listen(foundation_1.MDCTabFoundation.strings.SELECTED_EVENT, _this.tabSelectedHandler_);\n },\n unbindOnMDCTabSelectedEvent: function unbindOnMDCTabSelectedEvent() {\n return _this.unlisten(foundation_1.MDCTabFoundation.strings.SELECTED_EVENT, _this.tabSelectedHandler_);\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 getOffsetWidth: function getOffsetWidth() {\n return _this.root_.offsetWidth;\n },\n setStyleForIndicator: function setStyleForIndicator(propertyName, value) {\n return _this.indicator_.style.setProperty(propertyName, value);\n },\n getOffsetWidthForIndicator: function getOffsetWidthForIndicator() {\n return _this.indicator_.offsetWidth;\n },\n notifyChange: function notifyChange(evtData) {\n return _this.emit(strings.CHANGE_EVENT, evtData);\n },\n getNumberOfTabs: function getNumberOfTabs() {\n return _this.tabs.length;\n },\n isTabActiveAtIndex: function isTabActiveAtIndex(index) {\n return _this.tabs[index].isActive;\n },\n setTabActiveAtIndex: function setTabActiveAtIndex(index, isActive) {\n _this.tabs[index].isActive = isActive;\n },\n isDefaultPreventedOnClickForTabAtIndex: function isDefaultPreventedOnClickForTabAtIndex(index) {\n return _this.tabs[index].preventDefaultOnClick;\n },\n setPreventDefaultOnClickForTabAtIndex: function setPreventDefaultOnClickForTabAtIndex(index, preventDefaultOnClick) {\n _this.tabs[index].preventDefaultOnClick = preventDefaultOnClick;\n },\n measureTabAtIndex: function measureTabAtIndex(index) {\n return _this.tabs[index].measureSelf();\n },\n getComputedWidthForTabAtIndex: function getComputedWidthForTabAtIndex(index) {\n return _this.tabs[index].computedWidth;\n },\n getComputedLeftForTabAtIndex: function getComputedLeftForTabAtIndex(index) {\n return _this.tabs[index].computedLeft;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new foundation_2.MDCTabBarFoundation(adapter);\n };\n MDCTabBar.prototype.layout = function () {\n this.foundation_.layout();\n };\n MDCTabBar.prototype.gatherTabs_ = function (tabFactory) {\n var tabElements = [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR));\n return tabElements.map(function (el) {\n return tabFactory(el);\n });\n };\n MDCTabBar.prototype.setActiveTabIndex_ = function (activeTabIndex, notifyChange) {\n this.foundation_.switchToTabAtIndex(activeTabIndex, notifyChange);\n };\n MDCTabBar.prototype.setActiveTab_ = function (activeTab, notifyChange) {\n var indexOfTab = this.tabs.indexOf(activeTab);\n if (indexOfTab < 0) {\n throw new Error('Invalid tab component given as activeTab: Tab not found within this component\\'s tab list');\n }\n this.setActiveTabIndex_(indexOfTab, notifyChange);\n };\n return MDCTabBar;\n}(component_1.MDCComponent);\nexports.MDCTabBar = MDCTabBar;\n\n/***/ }),\n\n/***/ 95:\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 util_1 = __webpack_require__(11);\nvar foundation_1 = __webpack_require__(0);\nvar constants_1 = __webpack_require__(96);\nvar MDCTabBarFoundation = /** @class */function (_super) {\n __extends(MDCTabBarFoundation, _super);\n function MDCTabBarFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabBarFoundation.defaultAdapter, adapter)) || this;\n _this.isIndicatorShown_ = false;\n _this.activeTabIndex_ = 0;\n _this.layoutFrame_ = 0;\n return _this;\n }\n Object.defineProperty(MDCTabBarFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"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 addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n bindOnMDCTabSelectedEvent: function bindOnMDCTabSelectedEvent() {\n return undefined;\n },\n unbindOnMDCTabSelectedEvent: function unbindOnMDCTabSelectedEvent() {\n return undefined;\n },\n registerResizeHandler: function registerResizeHandler() {\n return undefined;\n },\n deregisterResizeHandler: function deregisterResizeHandler() {\n return undefined;\n },\n getOffsetWidth: function getOffsetWidth() {\n return 0;\n },\n setStyleForIndicator: function setStyleForIndicator() {\n return undefined;\n },\n getOffsetWidthForIndicator: function getOffsetWidthForIndicator() {\n return 0;\n },\n notifyChange: function notifyChange() {\n return undefined;\n },\n getNumberOfTabs: function getNumberOfTabs() {\n return 0;\n },\n isTabActiveAtIndex: function isTabActiveAtIndex() {\n return false;\n },\n setTabActiveAtIndex: function setTabActiveAtIndex() {\n return undefined;\n },\n isDefaultPreventedOnClickForTabAtIndex: function isDefaultPreventedOnClickForTabAtIndex() {\n return false;\n },\n setPreventDefaultOnClickForTabAtIndex: function setPreventDefaultOnClickForTabAtIndex() {\n return undefined;\n },\n measureTabAtIndex: function measureTabAtIndex() {\n return undefined;\n },\n getComputedWidthForTabAtIndex: function getComputedWidthForTabAtIndex() {\n return 0;\n },\n getComputedLeftForTabAtIndex: function getComputedLeftForTabAtIndex() {\n return 0;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabBarFoundation.prototype.init = function () {\n var _this = this;\n this.resizeHandler_ = function () {\n return _this.layout();\n };\n this.adapter_.addClass(constants_1.cssClasses.UPGRADED);\n this.adapter_.bindOnMDCTabSelectedEvent();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n var activeTabIndex = this.findActiveTabIndex_();\n if (activeTabIndex >= 0) {\n this.activeTabIndex_ = activeTabIndex;\n }\n this.layout();\n };\n MDCTabBarFoundation.prototype.destroy = function () {\n this.adapter_.removeClass(constants_1.cssClasses.UPGRADED);\n this.adapter_.unbindOnMDCTabSelectedEvent();\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n };\n MDCTabBarFoundation.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 MDCTabBarFoundation.prototype.switchToTabAtIndex = function (index, shouldNotify) {\n var _this = this;\n if (index === this.activeTabIndex_) {\n return;\n }\n if (index < 0 || index >= this.adapter_.getNumberOfTabs()) {\n throw new Error(\"Out of bounds index specified for tab: \" + index);\n }\n var prevActiveTabIndex = this.activeTabIndex_;\n this.activeTabIndex_ = index;\n requestAnimationFrame(function () {\n if (prevActiveTabIndex >= 0) {\n _this.adapter_.setTabActiveAtIndex(prevActiveTabIndex, false);\n }\n _this.adapter_.setTabActiveAtIndex(_this.activeTabIndex_, true);\n _this.layoutIndicator_();\n if (shouldNotify) {\n _this.adapter_.notifyChange({ activeTabIndex: _this.activeTabIndex_ });\n }\n });\n };\n MDCTabBarFoundation.prototype.getActiveTabIndex = function () {\n return this.findActiveTabIndex_();\n };\n MDCTabBarFoundation.prototype.layoutInternal_ = function () {\n var _this = this;\n this.forEachTabIndex_(function (index) {\n return _this.adapter_.measureTabAtIndex(index);\n });\n this.layoutIndicator_();\n };\n MDCTabBarFoundation.prototype.layoutIndicator_ = function () {\n var isIndicatorFirstRender = !this.isIndicatorShown_;\n // Ensure that indicator appears in the right position immediately for correct first render.\n if (isIndicatorFirstRender) {\n this.adapter_.setStyleForIndicator('transition', 'none');\n }\n var translateAmtForActiveTabLeft = this.adapter_.getComputedLeftForTabAtIndex(this.activeTabIndex_);\n var scaleAmtForActiveTabWidth = this.adapter_.getComputedWidthForTabAtIndex(this.activeTabIndex_) / this.adapter_.getOffsetWidth();\n var transformValue = \"translateX(\" + translateAmtForActiveTabLeft + \"px) scale(\" + scaleAmtForActiveTabWidth + \", 1)\";\n this.adapter_.setStyleForIndicator(util_1.getCorrectPropertyName(window, 'transform'), transformValue);\n if (isIndicatorFirstRender) {\n // Force layout so that transform styles to take effect.\n this.adapter_.getOffsetWidthForIndicator();\n this.adapter_.setStyleForIndicator('transition', '');\n this.adapter_.setStyleForIndicator('visibility', 'visible');\n this.isIndicatorShown_ = true;\n }\n };\n MDCTabBarFoundation.prototype.findActiveTabIndex_ = function () {\n var _this = this;\n var activeTabIndex = -1;\n this.forEachTabIndex_(function (index) {\n if (_this.adapter_.isTabActiveAtIndex(index)) {\n activeTabIndex = index;\n return true;\n }\n });\n return activeTabIndex;\n };\n MDCTabBarFoundation.prototype.forEachTabIndex_ = function (iterator) {\n var numTabs = this.adapter_.getNumberOfTabs();\n for (var index = 0; index < numTabs; index++) {\n var shouldBreak = iterator(index);\n if (shouldBreak) {\n break;\n }\n }\n };\n return MDCTabBarFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabBarFoundation = MDCTabBarFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabBarFoundation;\n\n/***/ }),\n\n/***/ 96:\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 UPGRADED: 'mdc-tab-bar-upgraded'\n};\nexports.strings = {\n CHANGE_EVENT: 'MDCTabBar:change',\n INDICATOR_SELECTOR: '.mdc-tab-bar__indicator',\n TAB_SELECTOR: '.mdc-tab'\n};\n\n/***/ }),\n\n/***/ 97:\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__(98);\nvar INTERACTION_EVENTS = ['touchstart', 'mousedown', 'focus'];\nvar MDCTabBarScrollerFoundation = /** @class */function (_super) {\n __extends(MDCTabBarScrollerFoundation, _super);\n function MDCTabBarScrollerFoundation(adapter) {\n var _this = _super.call(this, __assign({}, MDCTabBarScrollerFoundation.defaultAdapter, adapter)) || this;\n _this.pointerDownRecognized_ = false;\n _this.currentTranslateOffset_ = 0;\n _this.focusedTarget_ = null;\n _this.layoutFrame_ = 0;\n _this.scrollFrameScrollLeft_ = 0;\n _this.forwardIndicatorClickHandler_ = function (evt) {\n return _this.scrollForward(evt);\n };\n _this.backIndicatorClickHandler_ = function (evt) {\n return _this.scrollBack(evt);\n };\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n _this.interactionHandler_ = function (evt) {\n if (evt.type === 'touchstart' || evt.type === 'mousedown') {\n _this.pointerDownRecognized_ = true;\n }\n _this.handlePossibleTabKeyboardFocus_(evt);\n if (evt.type === 'focus') {\n _this.pointerDownRecognized_ = false;\n }\n };\n return _this;\n }\n Object.defineProperty(MDCTabBarScrollerFoundation, \"cssClasses\", {\n get: function get() {\n return constants_1.cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarScrollerFoundation, \"strings\", {\n get: function get() {\n return constants_1.strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarScrollerFoundation, \"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 addClass: function addClass() {\n return undefined;\n },\n removeClass: function removeClass() {\n return undefined;\n },\n eventTargetHasClass: function eventTargetHasClass() {\n return false;\n },\n addClassToForwardIndicator: function addClassToForwardIndicator() {\n return undefined;\n },\n removeClassFromForwardIndicator: function removeClassFromForwardIndicator() {\n return undefined;\n },\n addClassToBackIndicator: function addClassToBackIndicator() {\n return undefined;\n },\n removeClassFromBackIndicator: function removeClassFromBackIndicator() {\n return undefined;\n },\n isRTL: function isRTL() {\n return false;\n },\n registerBackIndicatorClickHandler: function registerBackIndicatorClickHandler() {\n return undefined;\n },\n deregisterBackIndicatorClickHandler: function deregisterBackIndicatorClickHandler() {\n return undefined;\n },\n registerForwardIndicatorClickHandler: function registerForwardIndicatorClickHandler() {\n return undefined;\n },\n deregisterForwardIndicatorClickHandler: function deregisterForwardIndicatorClickHandler() {\n return undefined;\n },\n registerCapturedInteractionHandler: function registerCapturedInteractionHandler() {\n return undefined;\n },\n deregisterCapturedInteractionHandler: function deregisterCapturedInteractionHandler() {\n return undefined;\n },\n registerWindowResizeHandler: function registerWindowResizeHandler() {\n return undefined;\n },\n deregisterWindowResizeHandler: function deregisterWindowResizeHandler() {\n return undefined;\n },\n getNumberOfTabs: function getNumberOfTabs() {\n return 0;\n },\n getComputedWidthForTabAtIndex: function getComputedWidthForTabAtIndex() {\n return 0;\n },\n getComputedLeftForTabAtIndex: function getComputedLeftForTabAtIndex() {\n return 0;\n },\n getOffsetWidthForScrollFrame: function getOffsetWidthForScrollFrame() {\n return 0;\n },\n getScrollLeftForScrollFrame: function getScrollLeftForScrollFrame() {\n return 0;\n },\n setScrollLeftForScrollFrame: function setScrollLeftForScrollFrame() {\n return undefined;\n },\n getOffsetWidthForTabBar: function getOffsetWidthForTabBar() {\n return 0;\n },\n setTransformStyleForTabBar: function setTransformStyleForTabBar() {\n return undefined;\n },\n getOffsetLeftForEventTarget: function getOffsetLeftForEventTarget() {\n return 0;\n },\n getOffsetWidthForEventTarget: function getOffsetWidthForEventTarget() {\n return 0;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n MDCTabBarScrollerFoundation.prototype.init = function () {\n var _this = this;\n this.adapter_.registerBackIndicatorClickHandler(this.backIndicatorClickHandler_);\n this.adapter_.registerForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_);\n this.adapter_.registerWindowResizeHandler(this.resizeHandler_);\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.registerCapturedInteractionHandler(evtType, _this.interactionHandler_);\n });\n this.layout();\n };\n MDCTabBarScrollerFoundation.prototype.destroy = function () {\n var _this = this;\n this.adapter_.deregisterBackIndicatorClickHandler(this.backIndicatorClickHandler_);\n this.adapter_.deregisterForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_);\n this.adapter_.deregisterWindowResizeHandler(this.resizeHandler_);\n INTERACTION_EVENTS.forEach(function (evtType) {\n _this.adapter_.deregisterCapturedInteractionHandler(evtType, _this.interactionHandler_);\n });\n };\n MDCTabBarScrollerFoundation.prototype.scrollBack = function (evt) {\n if (evt) {\n evt.preventDefault();\n }\n var tabWidthAccumulator = 0;\n var scrollTargetIndex = 0;\n for (var i = this.adapter_.getNumberOfTabs() - 1; i > 0; i--) {\n var tabOffsetLeft = this.adapter_.getComputedLeftForTabAtIndex(i);\n var tabBarWidthLessTabOffsetLeft = this.adapter_.getOffsetWidthForTabBar() - tabOffsetLeft;\n var tabIsNotOccluded = tabOffsetLeft > this.currentTranslateOffset_;\n if (this.isRTL_()) {\n tabIsNotOccluded = tabBarWidthLessTabOffsetLeft > this.currentTranslateOffset_;\n }\n if (tabIsNotOccluded) {\n continue;\n }\n tabWidthAccumulator += this.adapter_.getComputedWidthForTabAtIndex(i);\n var scrollTargetDetermined = tabWidthAccumulator > this.adapter_.getOffsetWidthForScrollFrame();\n if (scrollTargetDetermined) {\n scrollTargetIndex = this.isRTL_() ? i + 1 : i;\n break;\n }\n }\n this.scrollToTabAtIndex(scrollTargetIndex);\n };\n MDCTabBarScrollerFoundation.prototype.scrollForward = function (evt) {\n if (evt) {\n evt.preventDefault();\n }\n var scrollFrameOffsetWidth = this.adapter_.getOffsetWidthForScrollFrame() + this.currentTranslateOffset_;\n var scrollTargetIndex = 0;\n for (var i = 0; i < this.adapter_.getNumberOfTabs(); i++) {\n var tabOffsetLeftAndWidth = this.adapter_.getComputedLeftForTabAtIndex(i) + this.adapter_.getComputedWidthForTabAtIndex(i);\n var scrollTargetDetermined = tabOffsetLeftAndWidth > scrollFrameOffsetWidth;\n if (this.isRTL_()) {\n var frameOffsetAndTabWidth = scrollFrameOffsetWidth - this.adapter_.getComputedWidthForTabAtIndex(i);\n var tabRightOffset = this.adapter_.getOffsetWidthForTabBar() - tabOffsetLeftAndWidth;\n scrollTargetDetermined = tabRightOffset > frameOffsetAndTabWidth;\n }\n if (scrollTargetDetermined) {\n scrollTargetIndex = i;\n break;\n }\n }\n this.scrollToTabAtIndex(scrollTargetIndex);\n };\n MDCTabBarScrollerFoundation.prototype.layout = function () {\n var _this = this;\n cancelAnimationFrame(this.layoutFrame_);\n this.scrollFrameScrollLeft_ = this.adapter_.getScrollLeftForScrollFrame();\n this.layoutFrame_ = requestAnimationFrame(function () {\n return _this.layout_();\n });\n };\n MDCTabBarScrollerFoundation.prototype.scrollToTabAtIndex = function (index) {\n var _this = this;\n var scrollTargetOffsetLeft = this.adapter_.getComputedLeftForTabAtIndex(index);\n var scrollTargetOffsetWidth = this.adapter_.getComputedWidthForTabAtIndex(index);\n this.currentTranslateOffset_ = this.normalizeForRTL_(scrollTargetOffsetLeft, scrollTargetOffsetWidth);\n requestAnimationFrame(function () {\n return _this.shiftFrame_();\n });\n };\n MDCTabBarScrollerFoundation.prototype.layout_ = function () {\n var frameWidth = this.adapter_.getOffsetWidthForScrollFrame();\n var isOverflowing = this.adapter_.getOffsetWidthForTabBar() > frameWidth;\n if (!isOverflowing) {\n this.currentTranslateOffset_ = 0;\n }\n this.shiftFrame_();\n this.updateIndicatorEnabledStates_();\n };\n MDCTabBarScrollerFoundation.prototype.shiftFrame_ = function () {\n var shiftAmount = this.isRTL_() ? this.currentTranslateOffset_ : -this.currentTranslateOffset_;\n this.adapter_.setTransformStyleForTabBar(\"translateX(\" + shiftAmount + \"px)\");\n this.updateIndicatorEnabledStates_();\n };\n MDCTabBarScrollerFoundation.prototype.handlePossibleTabKeyboardFocus_ = function (evt) {\n var target = evt.target;\n if (!this.adapter_.eventTargetHasClass(target, constants_1.cssClasses.TAB) || this.pointerDownRecognized_) {\n return;\n }\n var resetAmt = this.isRTL_() ? this.scrollFrameScrollLeft_ : 0;\n this.adapter_.setScrollLeftForScrollFrame(resetAmt);\n this.focusedTarget_ = target;\n var scrollFrameWidth = this.adapter_.getOffsetWidthForScrollFrame();\n var tabBarWidth = this.adapter_.getOffsetWidthForTabBar();\n var leftEdge = this.adapter_.getOffsetLeftForEventTarget(this.focusedTarget_);\n var rightEdge = leftEdge + this.adapter_.getOffsetWidthForEventTarget(this.focusedTarget_);\n var shouldScrollBack = rightEdge <= this.currentTranslateOffset_;\n var shouldScrollForward = rightEdge > this.currentTranslateOffset_ + scrollFrameWidth;\n if (this.isRTL_()) {\n var normalizedLeftOffset = tabBarWidth - leftEdge;\n shouldScrollBack = leftEdge >= tabBarWidth - this.currentTranslateOffset_;\n shouldScrollForward = normalizedLeftOffset > scrollFrameWidth + this.currentTranslateOffset_;\n }\n if (shouldScrollForward) {\n this.scrollForward();\n } else if (shouldScrollBack) {\n this.scrollBack();\n }\n this.pointerDownRecognized_ = false;\n };\n MDCTabBarScrollerFoundation.prototype.updateIndicatorEnabledStates_ = function () {\n var INDICATOR_ENABLED = constants_1.cssClasses.INDICATOR_ENABLED;\n if (this.currentTranslateOffset_ === 0) {\n this.adapter_.removeClassFromBackIndicator(INDICATOR_ENABLED);\n } else {\n this.adapter_.addClassToBackIndicator(INDICATOR_ENABLED);\n }\n var remainingTabBarWidth = this.adapter_.getOffsetWidthForTabBar() - this.currentTranslateOffset_;\n if (remainingTabBarWidth > this.adapter_.getOffsetWidthForScrollFrame()) {\n this.adapter_.addClassToForwardIndicator(INDICATOR_ENABLED);\n } else {\n this.adapter_.removeClassFromForwardIndicator(INDICATOR_ENABLED);\n }\n };\n MDCTabBarScrollerFoundation.prototype.normalizeForRTL_ = function (left, width) {\n return this.isRTL_() ? this.adapter_.getOffsetWidthForTabBar() - (left + width) : left;\n };\n MDCTabBarScrollerFoundation.prototype.isRTL_ = function () {\n return this.adapter_.isRTL();\n };\n return MDCTabBarScrollerFoundation;\n}(foundation_1.MDCFoundation);\nexports.MDCTabBarScrollerFoundation = MDCTabBarScrollerFoundation;\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexports.default = MDCTabBarScrollerFoundation;\n\n/***/ }),\n\n/***/ 98:\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 INDICATOR_BACK: 'mdc-tab-bar-scroller__indicator--back',\n INDICATOR_ENABLED: 'mdc-tab-bar-scroller__indicator--enabled',\n INDICATOR_FORWARD: 'mdc-tab-bar-scroller__indicator--forward',\n TAB: 'mdc-tab'\n};\nexports.strings = {\n FRAME_SELECTOR: '.mdc-tab-bar-scroller__scroll-frame',\n INDICATOR_BACK_SELECTOR: '.mdc-tab-bar-scroller__indicator--back',\n INDICATOR_FORWARD_SELECTOR: '.mdc-tab-bar-scroller__indicator--forward',\n TABS_SELECTOR: '.mdc-tab-bar-scroller__scroll-frame__tabs',\n TAB_SELECTOR: '.mdc-tab'\n};\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// mdc.tabs.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 = 163);\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 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 {\n CssVendorPropertyMap, JsVendorPropertyMap,\n PrefixedCssPropertyName, PrefixedJsEventType,\n StandardCssPropertyName, StandardJsEventType,\n} from './types';\n\nconst cssPropertyNameMap: CssVendorPropertyMap = {\n animation: {\n prefixed: '-webkit-animation',\n standard: 'animation',\n },\n transform: {\n prefixed: '-webkit-transform',\n standard: 'transform',\n },\n transition: {\n prefixed: '-webkit-transition',\n standard: 'transition',\n },\n};\n\nconst jsEventTypeMap: JsVendorPropertyMap = {\n animationend: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationEnd',\n standard: 'animationend',\n },\n animationiteration: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationIteration',\n standard: 'animationiteration',\n },\n animationstart: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationStart',\n standard: 'animationstart',\n },\n transitionend: {\n cssProperty: 'transition',\n prefixed: 'webkitTransitionEnd',\n standard: 'transitionend',\n },\n};\n\nfunction isWindow(windowObj: Window): boolean {\n return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function';\n}\n\nexport function getCorrectPropertyName(windowObj: Window, cssProperty: StandardCssPropertyName):\n StandardCssPropertyName | PrefixedCssPropertyName {\n if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {\n const el = windowObj.document.createElement('div');\n const {standard, prefixed} = cssPropertyNameMap[cssProperty];\n const isStandard = standard in el.style;\n return isStandard ? standard : prefixed;\n }\n return cssProperty;\n}\n\nexport function getCorrectEventName(windowObj: Window, eventType: StandardJsEventType):\n StandardJsEventType | PrefixedJsEventType {\n if (isWindow(windowObj) && eventType in jsEventTypeMap) {\n const el = windowObj.document.createElement('div');\n const {standard, prefixed, cssProperty} = jsEventTypeMap[eventType];\n const isStandard = cssProperty in el.style;\n return isStandard ? standard : prefixed;\n }\n return eventType;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-animation/util.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 './tab/index';\nexport * from './tab-bar/index';\nexport * from './tab-bar-scroller/index';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/index.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 './foundation';\nexport {cssClasses as tabCssClasses, strings as tabStrings} from './constants';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab/index.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 './foundation';\nexport * from './types';\nexport {cssClasses as tabBarCssClasses, strings as tabBarStrings} from './constants';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar/index.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 './foundation';\nexport {cssClasses as tabBarScrollerCssClasses, strings as tabBarScrollerStrings} from './constants';\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar-scroller/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 {getCorrectPropertyName} from '@material/animation/util';\nimport {MDCComponent} from '@material/base/component';\nimport {MDCTabBar, MDCTabBarFactory} from '../tab-bar/component';\nimport {MDCTabBarScrollerAdapter} from './adapter';\nimport {MDCTabBarScrollerFoundation} from './foundation';\n\nexport class MDCTabBarScroller extends MDCComponent<MDCTabBarScrollerFoundation> {\n static attachTo(root: Element) {\n return new MDCTabBarScroller(root);\n }\n\n get tabBar() {\n return this.tabBar_;\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private tabBar_!: MDCTabBar; // assigned in initialize()\n private scrollFrame_!: HTMLElement; // assigned in initialize()\n private tabBarEl_!: HTMLElement; // assigned in initialize()\n private forwardIndicator_!: HTMLElement; // assigned in initialize()\n private backIndicator_!: HTMLElement; // assigned in initialize()\n\n initialize(tabBarFactory: MDCTabBarFactory = (el) => new MDCTabBar(el)) {\n this.scrollFrame_ =\n this.root_.querySelector<HTMLElement>(MDCTabBarScrollerFoundation.strings.FRAME_SELECTOR)!;\n this.tabBarEl_ =\n this.root_.querySelector<HTMLElement>(MDCTabBarScrollerFoundation.strings.TABS_SELECTOR)!;\n this.forwardIndicator_ =\n this.root_.querySelector<HTMLElement>(MDCTabBarScrollerFoundation.strings.INDICATOR_FORWARD_SELECTOR)!;\n this.backIndicator_ =\n this.root_.querySelector<HTMLElement>(MDCTabBarScrollerFoundation.strings.INDICATOR_BACK_SELECTOR)!;\n\n this.tabBar_ = tabBarFactory(this.tabBarEl_);\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: MDCTabBarScrollerAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n eventTargetHasClass: (target, className) => target.classList.contains(className),\n addClassToForwardIndicator: (className) => this.forwardIndicator_.classList.add(className),\n removeClassFromForwardIndicator: (className) => this.forwardIndicator_.classList.remove(className),\n addClassToBackIndicator: (className) => this.backIndicator_.classList.add(className),\n removeClassFromBackIndicator: (className) => this.backIndicator_.classList.remove(className),\n isRTL: () => getComputedStyle(this.root_).getPropertyValue('direction') === 'rtl',\n registerBackIndicatorClickHandler: (handler) => this.backIndicator_.addEventListener('click', handler),\n deregisterBackIndicatorClickHandler: (handler) => this.backIndicator_.removeEventListener('click', handler),\n registerForwardIndicatorClickHandler: (handler) => this.forwardIndicator_.addEventListener('click', handler),\n deregisterForwardIndicatorClickHandler: (handler) => this.forwardIndicator_.removeEventListener('click', handler),\n registerCapturedInteractionHandler: (evt, handler) => this.root_.addEventListener(evt, handler, true),\n deregisterCapturedInteractionHandler: (evt, handler) => this.root_.removeEventListener(evt, handler, true),\n registerWindowResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterWindowResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getNumberOfTabs: () => this.tabBar.tabs.length,\n getComputedWidthForTabAtIndex: (index) => this.tabBar.tabs[index].computedWidth,\n getComputedLeftForTabAtIndex: (index) => this.tabBar.tabs[index].computedLeft,\n getOffsetWidthForScrollFrame: () => this.scrollFrame_.offsetWidth,\n getScrollLeftForScrollFrame: () => this.scrollFrame_.scrollLeft,\n setScrollLeftForScrollFrame: (scrollLeftAmount) => this.scrollFrame_.scrollLeft = scrollLeftAmount,\n getOffsetWidthForTabBar: () => this.tabBarEl_.offsetWidth,\n setTransformStyleForTabBar: (value) => {\n this.tabBarEl_.style.setProperty(getCorrectPropertyName(window, 'transform'), value);\n },\n getOffsetLeftForEventTarget: (target) => target.offsetLeft,\n getOffsetWidthForEventTarget: (target) => target.offsetWidth,\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabBarScrollerFoundation(adapter);\n }\n\n layout() {\n this.foundation_.layout();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar-scroller/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 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 ACTIVE: 'mdc-tab--active',\n};\n\nexport const strings = {\n SELECTED_EVENT: 'MDCTab:selected',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab/constants.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 {MDCTabAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCTabFoundation extends MDCFoundation<MDCTabAdapter> {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n registerInteractionHandler: () => undefined,\n deregisterInteractionHandler: () => undefined,\n getOffsetWidth: () => 0,\n getOffsetLeft: () => 0,\n notifySelected: () => undefined,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private computedWidth_ = 0;\n private computedLeft_ = 0;\n private isActive_ = false;\n private preventDefaultOnClick_ = false;\n\n private readonly clickHandler_: SpecificEventListener<'click'>;\n private readonly keydownHandler_: SpecificEventListener<'keydown'>;\n\n constructor(adapter?: Partial<MDCTabAdapter>) {\n super({...MDCTabFoundation.defaultAdapter, ...adapter});\n\n this.clickHandler_ = (evt) => {\n if (this.preventDefaultOnClick_) {\n evt.preventDefault();\n }\n this.adapter_.notifySelected();\n };\n\n this.keydownHandler_ = (evt) => {\n if (evt.key === 'Enter' || evt.keyCode === 13) {\n this.adapter_.notifySelected();\n }\n };\n }\n\n init() {\n this.adapter_.registerInteractionHandler('click', this.clickHandler_);\n this.adapter_.registerInteractionHandler('keydown', this.keydownHandler_);\n }\n\n destroy() {\n this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);\n this.adapter_.deregisterInteractionHandler('keydown', this.keydownHandler_);\n }\n\n getComputedWidth() {\n return this.computedWidth_;\n }\n\n getComputedLeft() {\n return this.computedLeft_;\n }\n\n isActive() {\n return this.isActive_;\n }\n\n setActive(isActive: boolean) {\n this.isActive_ = isActive;\n if (this.isActive_) {\n this.adapter_.addClass(cssClasses.ACTIVE);\n } else {\n this.adapter_.removeClass(cssClasses.ACTIVE);\n }\n }\n\n preventsDefaultOnClick() {\n return this.preventDefaultOnClick_;\n }\n\n setPreventDefaultOnClick(preventDefaultOnClick: boolean) {\n this.preventDefaultOnClick_ = preventDefaultOnClick;\n }\n\n measureSelf() {\n this.computedWidth_ = this.adapter_.getOffsetWidth();\n this.computedLeft_ = this.adapter_.getOffsetLeft();\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 MDCTabFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab/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 {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","/**\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 {MDCTabAdapter} from './adapter';\nimport {cssClasses} from './constants';\nimport {MDCTabFoundation} from './foundation';\n\nexport type MDCTabFactory = (el: Element, foundation?: MDCTabFoundation) => MDCTab;\n\nexport interface MDCTabSelectedEventDetail {\n tab: MDCTab;\n}\n\n// Note: CustomEvent<T> is not supported by Closure Compiler.\n\nexport interface MDCTabSelectedEvent extends Event {\n readonly detail: MDCTabSelectedEventDetail;\n}\n\nexport class MDCTab extends MDCComponent<MDCTabFoundation> {\n static attachTo(root: Element) {\n return new MDCTab(root);\n }\n\n get computedWidth() {\n return this.foundation_.getComputedWidth();\n }\n\n get computedLeft() {\n return this.foundation_.getComputedLeft();\n }\n\n get isActive() {\n return this.foundation_.isActive();\n }\n\n set isActive(isActive) {\n this.foundation_.setActive(isActive);\n }\n\n get preventDefaultOnClick() {\n return this.foundation_.preventsDefaultOnClick();\n }\n\n set preventDefaultOnClick(preventDefaultOnClick) {\n this.foundation_.setPreventDefaultOnClick(preventDefaultOnClick);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private ripple_ = MDCRipple.attachTo(this.root_);\n\n destroy() {\n this.ripple_.destroy();\n super.destroy();\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: MDCTabAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n registerInteractionHandler: (type, handler) => this.listen(type, handler),\n deregisterInteractionHandler: (type, handler) => this.unlisten(type, handler),\n getOffsetWidth: () => this.root_.offsetWidth,\n getOffsetLeft: () => this.root_.offsetLeft,\n notifySelected: () =>\n this.emit<MDCTabSelectedEventDetail>(MDCTabFoundation.strings.SELECTED_EVENT, {tab: this}, true),\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabFoundation(adapter);\n }\n\n initialSyncWithDOM() {\n this.isActive = this.root_.classList.contains(cssClasses.ACTIVE);\n }\n\n measureSelf() {\n this.foundation_.measureSelf();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab/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 {MDCComponent} from '@material/base/component';\nimport {MDCTab, MDCTabFactory, MDCTabSelectedEvent} from '../tab/component';\nimport {MDCTabFoundation} from '../tab/foundation';\nimport {MDCTabBarAdapter} from './adapter';\nimport {MDCTabBarFoundation} from './foundation';\nimport {MDCTabBarChangeEventDetail} from './types';\n\nconst {strings} = MDCTabBarFoundation;\n\nexport type MDCTabBarFactory = (el: Element, foundation?: MDCTabBarFoundation) => MDCTabBar;\n\nexport class MDCTabBar extends MDCComponent<MDCTabBarFoundation> {\n static attachTo(root: Element) {\n return new MDCTabBar(root);\n }\n\n get tabs() {\n return this.tabs_;\n }\n\n get activeTab() {\n const activeIndex = this.foundation_.getActiveTabIndex();\n return this.tabs[activeIndex];\n }\n\n set activeTab(tab) {\n this.setActiveTab_(tab, false);\n }\n\n get activeTabIndex() {\n return this.foundation_.getActiveTabIndex();\n }\n\n set activeTabIndex(index) {\n this.setActiveTabIndex_(index, false);\n }\n\n protected root_!: HTMLElement; // assigned in MDCComponent constructor\n\n private tabs_!: MDCTab[]; // assigned in initialize()\n private indicator_!: HTMLElement; // assigned in initialize()\n private tabSelectedHandler_!: (evt: MDCTabSelectedEvent) => void; // assigned in initialize()\n\n initialize(tabFactory: MDCTabFactory = (el) => new MDCTab(el)) {\n this.indicator_ = this.root_.querySelector<HTMLElement>(strings.INDICATOR_SELECTOR)!;\n this.tabs_ = this.gatherTabs_(tabFactory);\n this.tabSelectedHandler_ = ({detail}) => {\n const {tab} = detail;\n this.setActiveTab_(tab, true);\n };\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: MDCTabBarAdapter = {\n addClass: (className) => this.root_.classList.add(className),\n removeClass: (className) => this.root_.classList.remove(className),\n bindOnMDCTabSelectedEvent: () =>\n this.listen(MDCTabFoundation.strings.SELECTED_EVENT, this.tabSelectedHandler_),\n unbindOnMDCTabSelectedEvent: () =>\n this.unlisten(MDCTabFoundation.strings.SELECTED_EVENT, this.tabSelectedHandler_),\n registerResizeHandler: (handler) => window.addEventListener('resize', handler),\n deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler),\n getOffsetWidth: () => this.root_.offsetWidth,\n setStyleForIndicator: (propertyName, value) => this.indicator_.style.setProperty(propertyName, value),\n getOffsetWidthForIndicator: () => this.indicator_.offsetWidth,\n notifyChange: (evtData) => this.emit<MDCTabBarChangeEventDetail>(strings.CHANGE_EVENT, evtData),\n getNumberOfTabs: () => this.tabs.length,\n isTabActiveAtIndex: (index) => this.tabs[index].isActive,\n setTabActiveAtIndex: (index, isActive) => {\n this.tabs[index].isActive = isActive;\n },\n isDefaultPreventedOnClickForTabAtIndex: (index) => this.tabs[index].preventDefaultOnClick,\n setPreventDefaultOnClickForTabAtIndex: (index, preventDefaultOnClick) => {\n this.tabs[index].preventDefaultOnClick = preventDefaultOnClick;\n },\n measureTabAtIndex: (index) => this.tabs[index].measureSelf(),\n getComputedWidthForTabAtIndex: (index) => this.tabs[index].computedWidth,\n getComputedLeftForTabAtIndex: (index) => this.tabs[index].computedLeft,\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTabBarFoundation(adapter);\n }\n\n layout() {\n this.foundation_.layout();\n }\n\n private gatherTabs_(tabFactory: MDCTabFactory): MDCTab[] {\n const tabElements: HTMLElement[] =\n [].slice.call(this.root_.querySelectorAll(strings.TAB_SELECTOR));\n return tabElements.map((el: Element) => tabFactory(el));\n }\n\n private setActiveTabIndex_(activeTabIndex: number, notifyChange: boolean) {\n this.foundation_.switchToTabAtIndex(activeTabIndex, notifyChange);\n }\n\n private setActiveTab_(activeTab: MDCTab, notifyChange: boolean) {\n const indexOfTab = this.tabs.indexOf(activeTab);\n if (indexOfTab < 0) {\n throw new Error('Invalid tab component given as activeTab: Tab not found within this component\\'s tab list');\n }\n this.setActiveTabIndex_(indexOfTab, notifyChange);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar/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 {getCorrectPropertyName} from '@material/animation/util';\nimport {MDCFoundation} from '@material/base/foundation';\nimport {SpecificEventListener} from '@material/base/types';\nimport {MDCTabBarAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\nexport class MDCTabBarFoundation extends MDCFoundation<MDCTabBarAdapter> {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabBarAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n bindOnMDCTabSelectedEvent: () => undefined,\n unbindOnMDCTabSelectedEvent: () => undefined,\n registerResizeHandler: () => undefined,\n deregisterResizeHandler: () => undefined,\n getOffsetWidth: () => 0,\n setStyleForIndicator: () => undefined,\n getOffsetWidthForIndicator: () => 0,\n notifyChange: () => undefined,\n getNumberOfTabs: () => 0,\n isTabActiveAtIndex: () => false,\n setTabActiveAtIndex: () => undefined,\n isDefaultPreventedOnClickForTabAtIndex: () => false,\n setPreventDefaultOnClickForTabAtIndex: () => undefined,\n measureTabAtIndex: () => undefined,\n getComputedWidthForTabAtIndex: () => 0,\n getComputedLeftForTabAtIndex: () => 0,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private isIndicatorShown_ = false;\n private activeTabIndex_ = 0;\n private layoutFrame_ = 0;\n\n private resizeHandler_!: SpecificEventListener<'resize'>; // assigned in init()\n\n constructor(adapter?: Partial<MDCTabBarAdapter>) {\n super({...MDCTabBarFoundation.defaultAdapter, ...adapter});\n }\n\n init() {\n this.resizeHandler_ = () => this.layout();\n this.adapter_.addClass(cssClasses.UPGRADED);\n this.adapter_.bindOnMDCTabSelectedEvent();\n this.adapter_.registerResizeHandler(this.resizeHandler_);\n const activeTabIndex = this.findActiveTabIndex_();\n if (activeTabIndex >= 0) {\n this.activeTabIndex_ = activeTabIndex;\n }\n this.layout();\n }\n\n destroy() {\n this.adapter_.removeClass(cssClasses.UPGRADED);\n this.adapter_.unbindOnMDCTabSelectedEvent();\n this.adapter_.deregisterResizeHandler(this.resizeHandler_);\n }\n\n layout() {\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n\n this.layoutFrame_ = requestAnimationFrame(() => {\n this.layoutInternal_();\n this.layoutFrame_ = 0;\n });\n }\n\n switchToTabAtIndex(index: number, shouldNotify: boolean) {\n if (index === this.activeTabIndex_) {\n return;\n }\n\n if (index < 0 || index >= this.adapter_.getNumberOfTabs()) {\n throw new Error(`Out of bounds index specified for tab: ${index}`);\n }\n\n const prevActiveTabIndex = this.activeTabIndex_;\n this.activeTabIndex_ = index;\n requestAnimationFrame(() => {\n if (prevActiveTabIndex >= 0) {\n this.adapter_.setTabActiveAtIndex(prevActiveTabIndex, false);\n }\n this.adapter_.setTabActiveAtIndex(this.activeTabIndex_, true);\n this.layoutIndicator_();\n if (shouldNotify) {\n this.adapter_.notifyChange({activeTabIndex: this.activeTabIndex_});\n }\n });\n }\n\n getActiveTabIndex() {\n return this.findActiveTabIndex_();\n }\n\n private layoutInternal_() {\n this.forEachTabIndex_((index) => this.adapter_.measureTabAtIndex(index));\n this.layoutIndicator_();\n }\n\n private layoutIndicator_() {\n const isIndicatorFirstRender = !this.isIndicatorShown_;\n\n // Ensure that indicator appears in the right position immediately for correct first render.\n if (isIndicatorFirstRender) {\n this.adapter_.setStyleForIndicator('transition', 'none');\n }\n\n const translateAmtForActiveTabLeft = this.adapter_.getComputedLeftForTabAtIndex(this.activeTabIndex_);\n const scaleAmtForActiveTabWidth =\n this.adapter_.getComputedWidthForTabAtIndex(this.activeTabIndex_) / this.adapter_.getOffsetWidth();\n\n const transformValue = `translateX(${translateAmtForActiveTabLeft}px) scale(${scaleAmtForActiveTabWidth}, 1)`;\n this.adapter_.setStyleForIndicator(getCorrectPropertyName(window, 'transform'), transformValue);\n\n if (isIndicatorFirstRender) {\n // Force layout so that transform styles to take effect.\n this.adapter_.getOffsetWidthForIndicator();\n this.adapter_.setStyleForIndicator('transition', '');\n this.adapter_.setStyleForIndicator('visibility', 'visible');\n this.isIndicatorShown_ = true;\n }\n }\n\n private findActiveTabIndex_() {\n let activeTabIndex = -1;\n this.forEachTabIndex_((index) => {\n if (this.adapter_.isTabActiveAtIndex(index)) {\n activeTabIndex = index;\n return true;\n }\n });\n return activeTabIndex;\n }\n\n private forEachTabIndex_(iterator: (index: number) => boolean | void) {\n const numTabs = this.adapter_.getNumberOfTabs();\n for (let index = 0; index < numTabs; index++) {\n const shouldBreak = iterator(index);\n if (shouldBreak) {\n break;\n }\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 MDCTabBarFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar/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 UPGRADED: 'mdc-tab-bar-upgraded',\n};\n\nexport const strings = {\n CHANGE_EVENT: 'MDCTabBar:change',\n INDICATOR_SELECTOR: '.mdc-tab-bar__indicator',\n TAB_SELECTOR: '.mdc-tab',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar/constants.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 {MDCTabBarScrollerAdapter} from './adapter';\nimport {cssClasses, strings} from './constants';\n\ntype InteractionEventType = 'touchstart' | 'mousedown' | 'focus';\n\nconst INTERACTION_EVENTS: InteractionEventType[] = ['touchstart', 'mousedown', 'focus'];\n\nexport class MDCTabBarScrollerFoundation extends MDCFoundation<MDCTabBarScrollerAdapter> {\n static get cssClasses() {\n return cssClasses;\n }\n\n static get strings() {\n return strings;\n }\n\n static get defaultAdapter(): MDCTabBarScrollerAdapter {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: () => undefined,\n removeClass: () => undefined,\n eventTargetHasClass: () => false,\n addClassToForwardIndicator: () => undefined,\n removeClassFromForwardIndicator: () => undefined,\n addClassToBackIndicator: () => undefined,\n removeClassFromBackIndicator: () => undefined,\n isRTL: () => false,\n registerBackIndicatorClickHandler: () => undefined,\n deregisterBackIndicatorClickHandler: () => undefined,\n registerForwardIndicatorClickHandler: () => undefined,\n deregisterForwardIndicatorClickHandler: () => undefined,\n registerCapturedInteractionHandler: () => undefined,\n deregisterCapturedInteractionHandler: () => undefined,\n registerWindowResizeHandler: () => undefined,\n deregisterWindowResizeHandler: () => undefined,\n getNumberOfTabs: () => 0,\n getComputedWidthForTabAtIndex: () => 0,\n getComputedLeftForTabAtIndex: () => 0,\n getOffsetWidthForScrollFrame: () => 0,\n getScrollLeftForScrollFrame: () => 0,\n setScrollLeftForScrollFrame: () => undefined,\n getOffsetWidthForTabBar: () => 0,\n setTransformStyleForTabBar: () => undefined,\n getOffsetLeftForEventTarget: () => 0,\n getOffsetWidthForEventTarget: () => 0,\n };\n // tslint:enable:object-literal-sort-keys\n }\n\n private pointerDownRecognized_ = false;\n private currentTranslateOffset_ = 0;\n private focusedTarget_: HTMLElement | null = null;\n private layoutFrame_ = 0;\n private scrollFrameScrollLeft_ = 0;\n\n private readonly forwardIndicatorClickHandler_: SpecificEventListener<'click'>;\n private readonly backIndicatorClickHandler_: SpecificEventListener<'click'>;\n private readonly resizeHandler_: SpecificEventListener<'resize'>;\n private readonly interactionHandler_: SpecificEventListener<InteractionEventType>;\n\n constructor(adapter?: Partial<MDCTabBarScrollerAdapter>) {\n super({...MDCTabBarScrollerFoundation.defaultAdapter, ...adapter});\n\n this.forwardIndicatorClickHandler_ = (evt) => this.scrollForward(evt);\n this.backIndicatorClickHandler_ = (evt) => this.scrollBack(evt);\n this.resizeHandler_ = () => this.layout();\n this.interactionHandler_ = (evt) => {\n if (evt.type === 'touchstart' || evt.type === 'mousedown') {\n this.pointerDownRecognized_ = true;\n }\n this.handlePossibleTabKeyboardFocus_(evt);\n if (evt.type === 'focus') {\n this.pointerDownRecognized_ = false;\n }\n };\n }\n\n init() {\n this.adapter_.registerBackIndicatorClickHandler(this.backIndicatorClickHandler_);\n this.adapter_.registerForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_);\n this.adapter_.registerWindowResizeHandler(this.resizeHandler_);\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.registerCapturedInteractionHandler(evtType, this.interactionHandler_);\n });\n this.layout();\n }\n\n destroy() {\n this.adapter_.deregisterBackIndicatorClickHandler(this.backIndicatorClickHandler_);\n this.adapter_.deregisterForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_);\n this.adapter_.deregisterWindowResizeHandler(this.resizeHandler_);\n INTERACTION_EVENTS.forEach((evtType) => {\n this.adapter_.deregisterCapturedInteractionHandler(evtType, this.interactionHandler_);\n });\n }\n\n scrollBack(evt?: MouseEvent) {\n if (evt) {\n evt.preventDefault();\n }\n\n let tabWidthAccumulator = 0;\n let scrollTargetIndex = 0;\n\n for (let i = this.adapter_.getNumberOfTabs() - 1; i > 0; i--) {\n const tabOffsetLeft = this.adapter_.getComputedLeftForTabAtIndex(i);\n const tabBarWidthLessTabOffsetLeft = this.adapter_.getOffsetWidthForTabBar() - tabOffsetLeft;\n\n let tabIsNotOccluded = tabOffsetLeft > this.currentTranslateOffset_;\n if (this.isRTL_()) {\n tabIsNotOccluded = tabBarWidthLessTabOffsetLeft > this.currentTranslateOffset_;\n }\n\n if (tabIsNotOccluded) {\n continue;\n }\n\n tabWidthAccumulator += this.adapter_.getComputedWidthForTabAtIndex(i);\n\n const scrollTargetDetermined = tabWidthAccumulator > this.adapter_.getOffsetWidthForScrollFrame();\n if (scrollTargetDetermined) {\n scrollTargetIndex = this.isRTL_() ? i + 1 : i;\n break;\n }\n }\n\n this.scrollToTabAtIndex(scrollTargetIndex);\n }\n\n scrollForward(evt?: MouseEvent) {\n if (evt) {\n evt.preventDefault();\n }\n\n const scrollFrameOffsetWidth = this.adapter_.getOffsetWidthForScrollFrame() + this.currentTranslateOffset_;\n let scrollTargetIndex = 0;\n\n for (let i = 0; i < this.adapter_.getNumberOfTabs(); i++) {\n const tabOffsetLeftAndWidth =\n this.adapter_.getComputedLeftForTabAtIndex(i) + this.adapter_.getComputedWidthForTabAtIndex(i);\n let scrollTargetDetermined = tabOffsetLeftAndWidth > scrollFrameOffsetWidth;\n\n if (this.isRTL_()) {\n const frameOffsetAndTabWidth =\n scrollFrameOffsetWidth - this.adapter_.getComputedWidthForTabAtIndex(i);\n const tabRightOffset =\n this.adapter_.getOffsetWidthForTabBar() - tabOffsetLeftAndWidth;\n\n scrollTargetDetermined = tabRightOffset > frameOffsetAndTabWidth;\n }\n\n if (scrollTargetDetermined) {\n scrollTargetIndex = i;\n break;\n }\n }\n\n this.scrollToTabAtIndex(scrollTargetIndex);\n }\n\n layout() {\n cancelAnimationFrame(this.layoutFrame_);\n this.scrollFrameScrollLeft_ = this.adapter_.getScrollLeftForScrollFrame();\n this.layoutFrame_ = requestAnimationFrame(() => this.layout_());\n }\n\n scrollToTabAtIndex(index: number) {\n const scrollTargetOffsetLeft = this.adapter_.getComputedLeftForTabAtIndex(index);\n const scrollTargetOffsetWidth = this.adapter_.getComputedWidthForTabAtIndex(index);\n\n this.currentTranslateOffset_ =\n this.normalizeForRTL_(scrollTargetOffsetLeft, scrollTargetOffsetWidth);\n\n requestAnimationFrame(() => this.shiftFrame_());\n }\n\n private layout_() {\n const frameWidth = this.adapter_.getOffsetWidthForScrollFrame();\n const isOverflowing = this.adapter_.getOffsetWidthForTabBar() > frameWidth;\n\n if (!isOverflowing) {\n this.currentTranslateOffset_ = 0;\n }\n\n this.shiftFrame_();\n this.updateIndicatorEnabledStates_();\n }\n\n private shiftFrame_() {\n const shiftAmount = this.isRTL_() ?\n this.currentTranslateOffset_ : -this.currentTranslateOffset_;\n\n this.adapter_.setTransformStyleForTabBar(`translateX(${shiftAmount}px)`);\n this.updateIndicatorEnabledStates_();\n }\n\n private handlePossibleTabKeyboardFocus_(evt: MouseEvent | TouchEvent | FocusEvent) {\n const target = evt.target as HTMLElement;\n\n if (!this.adapter_.eventTargetHasClass(target, cssClasses.TAB) || this.pointerDownRecognized_) {\n return;\n }\n\n const resetAmt = this.isRTL_() ? this.scrollFrameScrollLeft_ : 0;\n this.adapter_.setScrollLeftForScrollFrame(resetAmt);\n\n this.focusedTarget_ = target;\n\n const scrollFrameWidth = this.adapter_.getOffsetWidthForScrollFrame();\n const tabBarWidth = this.adapter_.getOffsetWidthForTabBar();\n const leftEdge = this.adapter_.getOffsetLeftForEventTarget(this.focusedTarget_);\n const rightEdge = leftEdge + this.adapter_.getOffsetWidthForEventTarget(this.focusedTarget_);\n\n let shouldScrollBack = rightEdge <= this.currentTranslateOffset_;\n let shouldScrollForward = rightEdge > this.currentTranslateOffset_ + scrollFrameWidth;\n\n if (this.isRTL_()) {\n const normalizedLeftOffset = tabBarWidth - leftEdge;\n shouldScrollBack = leftEdge >= tabBarWidth - this.currentTranslateOffset_;\n shouldScrollForward = normalizedLeftOffset > scrollFrameWidth + this.currentTranslateOffset_;\n }\n\n if (shouldScrollForward) {\n this.scrollForward();\n } else if (shouldScrollBack) {\n this.scrollBack();\n }\n\n this.pointerDownRecognized_ = false;\n }\n\n private updateIndicatorEnabledStates_() {\n const {INDICATOR_ENABLED} = cssClasses;\n if (this.currentTranslateOffset_ === 0) {\n this.adapter_.removeClassFromBackIndicator(INDICATOR_ENABLED);\n } else {\n this.adapter_.addClassToBackIndicator(INDICATOR_ENABLED);\n }\n\n const remainingTabBarWidth = this.adapter_.getOffsetWidthForTabBar() - this.currentTranslateOffset_;\n if (remainingTabBarWidth > this.adapter_.getOffsetWidthForScrollFrame()) {\n this.adapter_.addClassToForwardIndicator(INDICATOR_ENABLED);\n } else {\n this.adapter_.removeClassFromForwardIndicator(INDICATOR_ENABLED);\n }\n }\n\n private normalizeForRTL_(left: number, width: number) {\n return this.isRTL_() ? this.adapter_.getOffsetWidthForTabBar() - (left + width) : left;\n }\n\n private isRTL_() {\n return this.adapter_.isRTL();\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 MDCTabBarScrollerFoundation;\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar-scroller/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 INDICATOR_BACK: 'mdc-tab-bar-scroller__indicator--back',\n INDICATOR_ENABLED: 'mdc-tab-bar-scroller__indicator--enabled',\n INDICATOR_FORWARD: 'mdc-tab-bar-scroller__indicator--forward',\n TAB: 'mdc-tab',\n};\n\nexport const strings = {\n FRAME_SELECTOR: '.mdc-tab-bar-scroller__scroll-frame',\n INDICATOR_BACK_SELECTOR: '.mdc-tab-bar-scroller__indicator--back',\n INDICATOR_FORWARD_SELECTOR: '.mdc-tab-bar-scroller__indicator--forward',\n TABS_SELECTOR: '.mdc-tab-bar-scroller__scroll-frame__tabs',\n TAB_SELECTOR: '.mdc-tab',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./packages/mdc-tabs/tab-bar-scroller/constants.ts"],"sourceRoot":""}
\No newline at end of file