UNPKG

271 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///mdc.tabs.min.js","webpack:///webpack/bootstrap 74583296950ff8f5c698","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":["root","factory","exports","module","define","amd","tabs","mdc","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","0","value","MDCFoundation","adapter","adapter_","init","destroy","1","__read","Symbol","iterator","r","e","ar","next","done","push","error","return","__spread","arguments","length","concat","foundation_1","MDCComponent","foundation","args","_i","root_","initialize","apply","foundation_","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","document","createEvent","initCustomEvent","dispatchEvent","11","isWindow","windowObj","Boolean","createElement","getCorrectPropertyName","cssProperty","cssPropertyNameMap","el","_a","standard","prefixed","style","getCorrectEventName","eventType","jsEventTypeMap","animation","transform","transition","animationend","animationiteration","animationstart","transitionend","163","__export","164","constants_1","tabCssClasses","cssClasses","tabStrings","strings","165","tabBarCssClasses","tabBarStrings","166","tabBarScrollerCssClasses","tabBarScrollerStrings","167","__extends","_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","getComputedWidthForTabAtIndex","index","computedWidth","getComputedLeftForTabAtIndex","computedLeft","getOffsetWidthForScrollFrame","offsetWidth","getScrollLeftForScrollFrame","scrollLeft","setScrollLeftForScrollFrame","scrollLeftAmount","getOffsetWidthForTabBar","setTransformStyleForTabBar","setProperty","getOffsetLeftForEventTarget","offsetLeft","getOffsetWidthForEventTarget","layout","2","closest","element","selector","matches","parentElement","webkitMatchesSelector","msMatchesSelector","3","detectEdgePseudoVarBug","node","body","appendChild","computedStyle","hasPseudoVarBug","borderTopStyle","parentNode","removeChild","supportsCssVariables","forceRefresh","CSS","supportsCssVars","supportsCssVariables_","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","applyPassive","globalObj","supportsPassive_","isSupported_1","passive","getNormalizedEventCoords","pageOffset","clientRect","x","y","normalizedX","normalizedY","documentX","left","documentY","top","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_","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","FG_DEACTIVATION_MS","TAP_DELAY_MS","state","animateDeactivation_","maxDim","Math","max","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","slice","querySelectorAll","TAB_SELECTOR","map","activeTabIndex","switchToTabAtIndex","activeTab","indexOfTab","95","isIndicatorShown_","activeTabIndex_","UPGRADED","findActiveTabIndex_","shouldNotify","prevActiveTabIndex","layoutIndicator_","forEachTabIndex_","isIndicatorFirstRender","translateAmtForActiveTabLeft","scaleAmtForActiveTabWidth","transformValue","numTabs","96","97","INTERACTION_EVENTS","pointerDownRecognized_","currentTranslateOffset_","focusedTarget_","scrollFrameScrollLeft_","forwardIndicatorClickHandler_","scrollForward","backIndicatorClickHandler_","scrollBack","interactionHandler_","handlePossibleTabKeyboardFocus_","tabWidthAccumulator","scrollTargetIndex","tabOffsetLeft","tabBarWidthLessTabOffsetLeft","tabIsNotOccluded","isRTL_","scrollToTabAtIndex","scrollFrameOffsetWidth","tabOffsetLeftAndWidth","scrollTargetDetermined","frameOffsetAndTabWidth","layout_","scrollTargetOffsetLeft","scrollTargetOffsetWidth","normalizeForRTL_","shiftFrame_","frameWidth","updateIndicatorEnabledStates_","shiftAmount","TAB","resetAmt","scrollFrameWidth","tabBarWidth","leftEdge","rightEdge","shouldScrollBack","shouldScrollForward","normalizedLeftOffset","INDICATOR_ENABLED","98","INDICATOR_BACK","INDICATOR_FORWARD"],"mappings":"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","file":"mdc.tabs.min.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.min.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 74583296950ff8f5c698","/**\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