mdc.min.js 36 KB

1
  1. "use strict";var _get=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var a=Object.getPrototypeOf(e);return null===a?void 0:t(a,n,r)}if("value"in i)return i.value;var o=i.get;return void 0!==o?o.call(r):void 0},_createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var mdc=function(t){var e=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),this.adapter_=e}return _createClass(t,null,[{key:"cssClasses",get:function(){return{}}},{key:"strings",get:function(){return{}}},{key:"numbers",get:function(){return{}}},{key:"defaultAdapter",get:function(){return{}}}]),_createClass(t,[{key:"init",value:function(){}},{key:"destroy",value:function(){}}]),t}(),n=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;_classCallCheck(this,t),this.root_=e;for(var r=arguments.length,i=Array(r>2?r-2:0),a=2;a<r;a++)i[a-2]=arguments[a];this.initialize.apply(this,i),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return _createClass(t,null,[{key:"attachTo",value:function(n){return new t(n,new e)}}]),_createClass(t,[{key:"initialize",value:function(){}},{key:"getDefaultFoundation",value:function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")}},{key:"initialSyncWithDOM",value:function(){}},{key:"destroy",value:function(){this.foundation_.destroy()}},{key:"listen",value:function(t,e){this.root_.addEventListener(t,e)}},{key:"unlisten",value:function(t,e){this.root_.removeEventListener(t,e)}},{key:"emit",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=void 0;"function"==typeof CustomEvent?r=new CustomEvent(t,{detail:e,bubbles:n}):(r=document.createEvent("CustomEvent")).initCustomEvent(t,n,!1,e),this.root_.dispatchEvent(r)}}]),t}(),r={ROOT:"mdc-ripple-upgraded",UNBOUNDED:"mdc-ripple-upgraded--unbounded",BG_FOCUSED:"mdc-ripple-upgraded--background-focused",FG_ACTIVATION:"mdc-ripple-upgraded--foreground-activation",FG_DEACTIVATION:"mdc-ripple-upgraded--foreground-deactivation"},i={VAR_LEFT:"--mdc-ripple-left",VAR_TOP:"--mdc-ripple-top",VAR_FG_SIZE:"--mdc-ripple-fg-size",VAR_FG_SCALE:"--mdc-ripple-fg-scale",VAR_FG_TRANSLATE_START:"--mdc-ripple-fg-translate-start",VAR_FG_TRANSLATE_END:"--mdc-ripple-fg-translate-end"},a={PADDING:10,INITIAL_ORIGIN_SCALE:.6,DEACTIVATION_TIMEOUT_MS:225,FG_DEACTIVATION_MS:150},o=void 0,s=void 0;function u(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("boolean"==typeof o&&!e)return o;if(t.CSS&&"function"==typeof t.CSS.supports){var n=t.CSS.supports("--css-vars","yes"),r=t.CSS.supports("(--css-vars: yes)")&&t.CSS.supports("color","#00000000");return o=!(!n&&!r)&&!function(t){var e=t.document,n=e.createElement("div");n.className="mdc-ripple-surface--test-edge-var-bug",e.body.appendChild(n);var r=t.getComputedStyle(n),i=null!==r&&"solid"===r.borderTopStyle;return n.remove(),i}(t)}}function c(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(void 0===s||e){var n=!1;try{t.document.addEventListener("test",null,{get passive(){n=!0}})}catch(t){}s=n}return!!s&&{passive:!0}}function d(t){return["webkitMatchesSelector","msMatchesSelector","matches"].filter(function(e){return e in t}).pop()}function l(t,e,n){var r=e.x,i=e.y,a=r+n.left,o=i+n.top,s=void 0,u=void 0;return"touchstart"===t.type?(s=t.changedTouches[0].pageX-a,u=t.changedTouches[0].pageY-o):(s=t.pageX-a,u=t.pageY-o),{x:s,y:u}}var f=Object.freeze({supportsCssVariables:u,applyPassive:c,getMatchesProperty:d,getNormalizedEventCoords:l}),_=["touchstart","pointerdown","mousedown","keydown"],h=["touchend","pointerup","mouseup"],v=function(t){function n(t){_classCallCheck(this,n);var e=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,Object.assign(n.defaultAdapter,t)));return e.layoutFrame_=0,e.frame_={width:0,height:0},e.activationState_=e.defaultActivationState_(),e.xfDuration_=0,e.initialSize_=0,e.maxRadius_=0,e.activateHandler_=function(t){return e.activate_(t)},e.deactivateHandler_=function(t){return e.deactivate_(t)},e.focusHandler_=function(){return requestAnimationFrame(function(){return e.adapter_.addClass(n.cssClasses.BG_FOCUSED)})},e.blurHandler_=function(){return requestAnimationFrame(function(){return e.adapter_.removeClass(n.cssClasses.BG_FOCUSED)})},e.resizeHandler_=function(){return e.layout()},e.unboundedCoords_={left:0,top:0},e.fgScale_=0,e.activationTimer_=0,e.fgDeactivationRemovalTimer_=0,e.activationAnimationHasEnded_=!1,e.activationTimerCallback_=function(){e.activationAnimationHasEnded_=!0,e.runDeactivationUXLogicIfReady_()},e.previousActivationEvent_=null,e}return _inherits(n,e),_createClass(n,null,[{key:"cssClasses",get:function(){return r}},{key:"strings",get:function(){return i}},{key:"numbers",get:function(){return a}},{key:"defaultAdapter",get:function(){return{browserSupportsCssVars:function(){},isUnbounded:function(){},isSurfaceActive:function(){},isSurfaceDisabled:function(){},addClass:function(){},removeClass:function(){},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerDocumentInteractionHandler:function(){},deregisterDocumentInteractionHandler:function(){},registerResizeHandler:function(){},deregisterResizeHandler:function(){},updateCssVariable:function(){},computeBoundingRect:function(){},getWindowPageOffset:function(){}}}}]),_createClass(n,[{key:"isSupported_",value:function(){return this.adapter_.browserSupportsCssVars()}},{key:"defaultActivationState_",value:function(){return{isActivated:!1,hasDeactivationUXRun:!1,wasActivatedByPointer:!1,wasElementMadeActive:!1,activationEvent:null,isProgrammatic:!1}}},{key:"init",value:function(){var t=this;if(this.isSupported_()){this.registerRootHandlers_();var e=n.cssClasses,r=e.ROOT,i=e.UNBOUNDED;requestAnimationFrame(function(){t.adapter_.addClass(r),t.adapter_.isUnbounded()&&t.adapter_.addClass(i),t.layoutInternal_()})}}},{key:"destroy",value:function(){var t=this;if(this.isSupported_()){this.deregisterRootHandlers_(),this.deregisterDeactivationHandlers_();var e=n.cssClasses,r=e.ROOT,i=e.UNBOUNDED;requestAnimationFrame(function(){t.adapter_.removeClass(r),t.adapter_.removeClass(i),t.removeCssVars_()})}}},{key:"registerRootHandlers_",value:function(){var t=this;_.forEach(function(e){t.adapter_.registerInteractionHandler(e,t.activateHandler_)}),this.adapter_.registerInteractionHandler("focus",this.focusHandler_),this.adapter_.registerInteractionHandler("blur",this.blurHandler_),this.adapter_.registerResizeHandler(this.resizeHandler_)}},{key:"registerDeactivationHandlers_",value:function(t){var e=this;"keydown"===t.type?this.adapter_.registerInteractionHandler("keyup",this.deactivateHandler_):h.forEach(function(t){e.adapter_.registerDocumentInteractionHandler(t,e.deactivateHandler_)})}},{key:"deregisterRootHandlers_",value:function(){var t=this;_.forEach(function(e){t.adapter_.deregisterInteractionHandler(e,t.activateHandler_)}),this.adapter_.deregisterInteractionHandler("focus",this.focusHandler_),this.adapter_.deregisterInteractionHandler("blur",this.blurHandler_),this.adapter_.deregisterResizeHandler(this.resizeHandler_)}},{key:"deregisterDeactivationHandlers_",value:function(){var t=this;this.adapter_.deregisterInteractionHandler("keyup",this.deactivateHandler_),h.forEach(function(e){t.adapter_.deregisterDocumentInteractionHandler(e,t.deactivateHandler_)})}},{key:"removeCssVars_",value:function(){var t=this,e=n.strings;Object.keys(e).forEach(function(n){0===n.indexOf("VAR_")&&t.adapter_.updateCssVariable(e[n],null)})}},{key:"activate_",value:function(t){var e=this;if(!this.adapter_.isSurfaceDisabled()){var n=this.activationState_;if(!n.isActivated){var r=this.previousActivationEvent_;r&&t&&r.type!==t.type&&r.clientX===t.clientX&&r.clientY===t.clientY||(n.isActivated=!0,n.isProgrammatic=null===t,n.activationEvent=t,n.wasActivatedByPointer=!n.isProgrammatic&&("mousedown"===t.type||"touchstart"===t.type||"pointerdown"===t.type),t&&this.registerDeactivationHandlers_(t),requestAnimationFrame(function(){n.wasElementMadeActive=!t||"keydown"!==t.type||e.adapter_.isSurfaceActive(),n.wasElementMadeActive?e.animateActivation_():e.activationState_=e.defaultActivationState_()}))}}}},{key:"activate",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.activate_(t)}},{key:"animateActivation_",value:function(){var t=this,e=n.strings,r=e.VAR_FG_TRANSLATE_START,i=e.VAR_FG_TRANSLATE_END,a=n.cssClasses,o=a.FG_DEACTIVATION,s=a.FG_ACTIVATION,u=n.numbers.DEACTIVATION_TIMEOUT_MS,c="",d="";if(!this.adapter_.isUnbounded()){var l=this.getFgTranslationCoordinates_(),f=l.startPoint,_=l.endPoint;c=f.x+"px, "+f.y+"px",d=_.x+"px, "+_.y+"px"}this.adapter_.updateCssVariable(r,c),this.adapter_.updateCssVariable(i,d),clearTimeout(this.activationTimer_),clearTimeout(this.fgDeactivationRemovalTimer_),this.rmBoundedActivationClasses_(),this.adapter_.removeClass(o),this.adapter_.computeBoundingRect(),this.adapter_.addClass(s),this.activationTimer_=setTimeout(function(){return t.activationTimerCallback_()},u)}},{key:"getFgTranslationCoordinates_",value:function(){var t=this.activationState_,e=t.activationEvent,n=void 0;return{startPoint:n={x:(n=t.wasActivatedByPointer?l(e,this.adapter_.getWindowPageOffset(),this.adapter_.computeBoundingRect()):{x:this.frame_.width/2,y:this.frame_.height/2}).x-this.initialSize_/2,y:n.y-this.initialSize_/2},endPoint:{x:this.frame_.width/2-this.initialSize_/2,y:this.frame_.height/2-this.initialSize_/2}}}},{key:"runDeactivationUXLogicIfReady_",value:function(){var t=this,e=n.cssClasses.FG_DEACTIVATION,r=this.activationState_,i=r.hasDeactivationUXRun,o=r.isActivated;(i||!o)&&this.activationAnimationHasEnded_&&(this.rmBoundedActivationClasses_(),this.adapter_.addClass(e),this.fgDeactivationRemovalTimer_=setTimeout(function(){t.adapter_.removeClass(e)},a.FG_DEACTIVATION_MS))}},{key:"rmBoundedActivationClasses_",value:function(){var t=n.cssClasses.FG_ACTIVATION;this.adapter_.removeClass(t),this.activationAnimationHasEnded_=!1,this.adapter_.computeBoundingRect()}},{key:"resetActivationState_",value:function(){var t=this;this.previousActivationEvent_=this.activationState_.activationEvent,this.activationState_=this.defaultActivationState_(),setTimeout(function(){return t.previousActivationEvent_=null},100)}},{key:"deactivate_",value:function(t){var e=this,n=this.activationState_;if(n.isActivated){var r=Object.assign({},n);if(n.isProgrammatic){requestAnimationFrame(function(){return e.animateDeactivation_(null,r)}),this.resetActivationState_()}else this.deregisterDeactivationHandlers_(),requestAnimationFrame(function(){e.activationState_.hasDeactivationUXRun=!0,e.animateDeactivation_(t,r),e.resetActivationState_()})}}},{key:"deactivate",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.deactivate_(t)}},{key:"animateDeactivation_",value:function(t,e){var n=e.wasActivatedByPointer,r=e.wasElementMadeActive;(n||r)&&this.runDeactivationUXLogicIfReady_()}},{key:"layout",value:function(){var t=this;this.layoutFrame_&&cancelAnimationFrame(this.layoutFrame_),this.layoutFrame_=requestAnimationFrame(function(){t.layoutInternal_(),t.layoutFrame_=0})}},{key:"layoutInternal_",value:function(){this.frame_=this.adapter_.computeBoundingRect();var t=Math.max(this.frame_.height,this.frame_.width),e=Math.sqrt(Math.pow(this.frame_.width,2)+Math.pow(this.frame_.height,2));this.initialSize_=t*n.numbers.INITIAL_ORIGIN_SCALE,this.maxRadius_=e+n.numbers.PADDING,this.fgScale_=this.maxRadius_/this.initialSize_,this.xfDuration_=1e3*Math.sqrt(this.maxRadius_/1024),this.updateLayoutCssVars_()}},{key:"updateLayoutCssVars_",value:function(){var t=n.strings,e=t.VAR_FG_SIZE,r=t.VAR_LEFT,i=t.VAR_TOP,a=t.VAR_FG_SCALE;this.adapter_.updateCssVariable(e,this.initialSize_+"px"),this.adapter_.updateCssVariable(a,this.fgScale_),this.adapter_.isUnbounded()&&(this.unboundedCoords_={left:Math.round(this.frame_.width/2-this.initialSize_/2),top:Math.round(this.frame_.height/2-this.initialSize_/2)},this.adapter_.updateCssVariable(r,this.unboundedCoords_.left+"px"),this.adapter_.updateCssVariable(i,this.unboundedCoords_.top+"px"))}},{key:"setUnbounded",value:function(t){var e=n.cssClasses.UNBOUNDED;t?this.adapter_.addClass(e):this.adapter_.removeClass(e)}}]),n}(),p=function(t){function e(){var t;_classCallCheck(this,e);for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=_possibleConstructorReturn(this,(t=e.__proto__||Object.getPrototypeOf(e)).call.apply(t,[this].concat(r)));return a.disabled=!1,a.unbounded_,a}return _inherits(e,n),_createClass(e,[{key:"setUnbounded_",value:function(){this.foundation_.setUnbounded(this.unbounded_)}},{key:"activate",value:function(){this.foundation_.activate()}},{key:"deactivate",value:function(){this.foundation_.deactivate()}},{key:"layout",value:function(){this.foundation_.layout()}},{key:"getDefaultFoundation",value:function(){return new v(e.createAdapter(this))}},{key:"initialSyncWithDOM",value:function(){this.unbounded="mdcRippleIsUnbounded"in this.root_.dataset}},{key:"unbounded",get:function(){return this.unbounded_},set:function(t){this.unbounded_=Boolean(t),this.setUnbounded_()}}],[{key:"attachTo",value:function(t){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).isUnbounded,r=void 0===n?void 0:n,i=new e(t);return void 0!==r&&(i.unbounded=r),i}},{key:"createAdapter",value:function(t){var e=d(HTMLElement.prototype);return{browserSupportsCssVars:function(){return u(window)},isUnbounded:function(){return t.unbounded},isSurfaceActive:function(){return t.root_[e](":active")},isSurfaceDisabled:function(){return t.disabled},addClass:function(e){return t.root_.classList.add(e)},removeClass:function(e){return t.root_.classList.remove(e)},registerInteractionHandler:function(e,n){return t.root_.addEventListener(e,n,c())},deregisterInteractionHandler:function(e,n){return t.root_.removeEventListener(e,n,c())},registerDocumentInteractionHandler:function(t,e){return document.documentElement.addEventListener(t,e,c())},deregisterDocumentInteractionHandler:function(t,e){return document.documentElement.removeEventListener(t,e,c())},registerResizeHandler:function(t){return window.addEventListener("resize",t)},deregisterResizeHandler:function(t){return window.removeEventListener("resize",t)},updateCssVariable:function(e,n){return t.root_.style.setProperty(e,n)},computeBoundingRect:function(){return t.root_.getBoundingClientRect()},getWindowPageOffset:function(){return{x:window.pageXOffset,y:window.pageYOffset}}}}}]),e}(),m=function t(){_classCallCheck(this,t)};m.prototype.root_,m.prototype.unbounded,m.prototype.disabled;var g=Object.freeze({MDCRipple:p,MDCRippleFoundation:v,RippleCapableSurface:m,util:f}),b={ACTIVE:"mdc-tab--active"},y={SELECTED_EVENT:"MDCTab:selected"},C=function(t){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,n);var e=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,Object.assign(n.defaultAdapter,t)));return e.computedWidth_=0,e.computedLeft_=0,e.isActive_=!1,e.preventDefaultOnClick_=!1,e.clickHandler_=function(t){e.preventDefaultOnClick_&&t.preventDefault(),e.adapter_.notifySelected()},e.keydownHandler_=function(t){(t.key&&"Enter"===t.key||13===t.keyCode)&&e.adapter_.notifySelected()},e}return _inherits(n,e),_createClass(n,null,[{key:"cssClasses",get:function(){return b}},{key:"strings",get:function(){return y}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},getOffsetWidth:function(){return 0},getOffsetLeft:function(){return 0},notifySelected:function(){}}}}]),_createClass(n,[{key:"init",value:function(){this.adapter_.registerInteractionHandler("click",this.clickHandler_),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_)}},{key:"destroy",value:function(){this.adapter_.deregisterInteractionHandler("click",this.clickHandler_),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_)}},{key:"getComputedWidth",value:function(){return this.computedWidth_}},{key:"getComputedLeft",value:function(){return this.computedLeft_}},{key:"isActive",value:function(){return this.isActive_}},{key:"setActive",value:function(t){this.isActive_=t,this.isActive_?this.adapter_.addClass(b.ACTIVE):this.adapter_.removeClass(b.ACTIVE)}},{key:"preventsDefaultOnClick",value:function(){return this.preventDefaultOnClick_}},{key:"setPreventDefaultOnClick",value:function(t){this.preventDefaultOnClick_=t}},{key:"measureSelf",value:function(){this.computedWidth_=this.adapter_.getOffsetWidth(),this.computedLeft_=this.adapter_.getOffsetLeft()}}]),n}(),T=function(t){function e(){var t;_classCallCheck(this,e);for(var n=arguments.length,r=Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=_possibleConstructorReturn(this,(t=e.__proto__||Object.getPrototypeOf(e)).call.apply(t,[this].concat(r)));return a.ripple_=p.attachTo(a.root_),a}return _inherits(e,n),_createClass(e,[{key:"computedWidth",get:function(){return this.foundation_.getComputedWidth()}},{key:"computedLeft",get:function(){return this.foundation_.getComputedLeft()}},{key:"isActive",get:function(){return this.foundation_.isActive()},set:function(t){this.foundation_.setActive(t)}},{key:"preventDefaultOnClick",get:function(){return this.foundation_.preventsDefaultOnClick()},set:function(t){this.foundation_.setPreventDefaultOnClick(t)}}],[{key:"attachTo",value:function(t){return new e(t)}}]),_createClass(e,[{key:"destroy",value:function(){this.ripple_.destroy(),_get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}},{key:"getDefaultFoundation",value:function(){var t=this;return new C({addClass:function(e){return t.root_.classList.add(e)},removeClass:function(e){return t.root_.classList.remove(e)},registerInteractionHandler:function(e,n){return t.root_.addEventListener(e,n)},deregisterInteractionHandler:function(e,n){return t.root_.removeEventListener(e,n)},getOffsetWidth:function(){return t.root_.offsetWidth},getOffsetLeft:function(){return t.root_.offsetLeft},notifySelected:function(){return t.emit(C.strings.SELECTED_EVENT,{tab:t},!0)}})}},{key:"initialSyncWithDOM",value:function(){this.isActive=this.root_.classList.contains(b.ACTIVE)}},{key:"measureSelf",value:function(){this.foundation_.measureSelf()}}]),e}(),k={animationstart:{noPrefix:"animationstart",webkitPrefix:"webkitAnimationStart",styleProperty:"animation"},animationend:{noPrefix:"animationend",webkitPrefix:"webkitAnimationEnd",styleProperty:"animation"},animationiteration:{noPrefix:"animationiteration",webkitPrefix:"webkitAnimationIteration",styleProperty:"animation"},transitionend:{noPrefix:"transitionend",webkitPrefix:"webkitTransitionEnd",styleProperty:"transition"}},A={animation:{noPrefix:"animation",webkitPrefix:"-webkit-animation"},transform:{noPrefix:"transform",webkitPrefix:"-webkit-transform"},transition:{noPrefix:"transition",webkitPrefix:"-webkit-transition"}};function I(t,e){if(void 0===(r=t).document||"function"!=typeof r.document.createElement||!((n=e)in k||n in A))return e;var n,r,i,a,o,s=e in k?k:A,u=t.document.createElement("div"),c="";return s===k?(o=u,c=(a=s)[i=e].styleProperty in o.style?a[i].noPrefix:a[i].webkitPrefix):c=s[e].noPrefix in u.style?s[e].noPrefix:s[e].webkitPrefix,c}function E(t,e){return I(t,e)}var O={UPGRADED:"mdc-tab-bar-upgraded"},F={TAB_SELECTOR:".mdc-tab",INDICATOR_SELECTOR:".mdc-tab-bar__indicator",CHANGE_EVENT:"MDCTabBar:change"},S=function(t){function n(t){_classCallCheck(this,n);var e=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,Object.assign(n.defaultAdapter,t)));return e.isIndicatorShown_=!1,e.computedWidth_=0,e.computedLeft_=0,e.activeTabIndex_=0,e.layoutFrame_=0,e.resizeHandler_=function(){return e.layout()},e}return _inherits(n,e),_createClass(n,null,[{key:"cssClasses",get:function(){return O}},{key:"strings",get:function(){return F}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},bindOnMDCTabSelectedEvent:function(){},unbindOnMDCTabSelectedEvent:function(){},registerResizeHandler:function(){},deregisterResizeHandler:function(){},getOffsetWidth:function(){return 0},setStyleForIndicator:function(){},getOffsetWidthForIndicator:function(){return 0},notifyChange:function(){},getNumberOfTabs:function(){return 0},isTabActiveAtIndex:function(){return!1},setTabActiveAtIndex:function(){},isDefaultPreventedOnClickForTabAtIndex:function(){return!1},setPreventDefaultOnClickForTabAtIndex:function(){},measureTabAtIndex:function(){},getComputedWidthForTabAtIndex:function(){return 0},getComputedLeftForTabAtIndex:function(){return 0}}}}]),_createClass(n,[{key:"init",value:function(){this.adapter_.addClass(O.UPGRADED),this.adapter_.bindOnMDCTabSelectedEvent(),this.adapter_.registerResizeHandler(this.resizeHandler_);var t=this.findActiveTabIndex_();t>=0&&(this.activeTabIndex_=t),this.layout()}},{key:"destroy",value:function(){this.adapter_.removeClass(O.UPGRADED),this.adapter_.unbindOnMDCTabSelectedEvent(),this.adapter_.deregisterResizeHandler(this.resizeHandler_)}},{key:"layoutInternal_",value:function(){var t=this;this.forEachTabIndex_(function(e){return t.adapter_.measureTabAtIndex(e)}),this.computedWidth_=this.adapter_.getOffsetWidth(),this.layoutIndicator_()}},{key:"layoutIndicator_",value:function(){var t=!this.isIndicatorShown_;t&&this.adapter_.setStyleForIndicator("transition","none");var e="translateX("+this.adapter_.getComputedLeftForTabAtIndex(this.activeTabIndex_)+"px) scale("+this.adapter_.getComputedWidthForTabAtIndex(this.activeTabIndex_)/this.adapter_.getOffsetWidth()+", 1)";this.adapter_.setStyleForIndicator(E(window,"transform"),e),t&&(this.adapter_.getOffsetWidthForIndicator(),this.adapter_.setStyleForIndicator("transition",""),this.adapter_.setStyleForIndicator("visibility","visible"),this.isIndicatorShown_=!0)}},{key:"findActiveTabIndex_",value:function(){var t=this,e=-1;return this.forEachTabIndex_(function(n){if(t.adapter_.isTabActiveAtIndex(n))return e=n,!0}),e}},{key:"forEachTabIndex_",value:function(t){for(var e=this.adapter_.getNumberOfTabs(),n=0;n<e;n++){if(t(n))break}}},{key:"layout",value:function(){var t=this;this.layoutFrame_&&cancelAnimationFrame(this.layoutFrame_),this.layoutFrame_=requestAnimationFrame(function(){t.layoutInternal_(),t.layoutFrame_=0})}},{key:"switchToTabAtIndex",value:function(t,e){var n=this;if(t!==this.activeTabIndex_){if(t<0||t>=this.adapter_.getNumberOfTabs())throw new Error("Out of bounds index specified for tab: "+t);var r=this.activeTabIndex_;this.activeTabIndex_=t,requestAnimationFrame(function(){r>=0&&n.adapter_.setTabActiveAtIndex(r,!1),n.adapter_.setTabActiveAtIndex(n.activeTabIndex_,!0),n.layoutIndicator_(),e&&n.adapter_.notifyChange({activeTabIndex:n.activeTabIndex_})})}}},{key:"getActiveTabIndex",value:function(){return this.findActiveTabIndex_()}}]),n}(),w=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return _inherits(e,n),_createClass(e,[{key:"initialize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(t){return new T(t)};this.indicator_=this.root_.querySelector(S.strings.INDICATOR_SELECTOR),this.tabs_=this.gatherTabs_(e),this.tabSelectedHandler_=function(e){var n=e.detail.tab;t.setActiveTab_(n,!0)}}},{key:"getDefaultFoundation",value:function(){var t=this;return new S({addClass:function(e){return t.root_.classList.add(e)},removeClass:function(e){return t.root_.classList.remove(e)},bindOnMDCTabSelectedEvent:function(){return t.listen(C.strings.SELECTED_EVENT,t.tabSelectedHandler_)},unbindOnMDCTabSelectedEvent:function(){return t.unlisten(C.strings.SELECTED_EVENT,t.tabSelectedHandler_)},registerResizeHandler:function(t){return window.addEventListener("resize",t)},deregisterResizeHandler:function(t){return window.removeEventListener("resize",t)},getOffsetWidth:function(){return t.root_.offsetWidth},setStyleForIndicator:function(e,n){return t.indicator_.style.setProperty(e,n)},getOffsetWidthForIndicator:function(){return t.indicator_.offsetWidth},notifyChange:function(e){return t.emit(S.strings.CHANGE_EVENT,e)},getNumberOfTabs:function(){return t.tabs.length},isTabActiveAtIndex:function(e){return t.tabs[e].isActive},setTabActiveAtIndex:function(e,n){t.tabs[e].isActive=n},isDefaultPreventedOnClickForTabAtIndex:function(e){return t.tabs[e].preventDefaultOnClick},setPreventDefaultOnClickForTabAtIndex:function(e,n){t.tabs[e].preventDefaultOnClick=n},measureTabAtIndex:function(e){return t.tabs[e].measureSelf()},getComputedWidthForTabAtIndex:function(e){return t.tabs[e].computedWidth},getComputedLeftForTabAtIndex:function(e){return t.tabs[e].computedLeft}})}},{key:"gatherTabs_",value:function(t){return[].slice.call(this.root_.querySelectorAll(S.strings.TAB_SELECTOR)).map(function(e){return t(e)})}},{key:"setActiveTabIndex_",value:function(t,e){this.foundation_.switchToTabAtIndex(t,e)}},{key:"layout",value:function(){this.foundation_.layout()}},{key:"setActiveTab_",value:function(t,e){var n=this.tabs.indexOf(t);if(n<0)throw new Error("Invalid tab component given as activeTab: Tab not found within this component's tab list");this.setActiveTabIndex_(n,e)}},{key:"tabs",get:function(){return this.tabs_}},{key:"activeTab",get:function(){var t=this.foundation_.getActiveTabIndex();return this.tabs[t]},set:function(t){this.setActiveTab_(t,!1)}},{key:"activeTabIndex",get:function(){return this.foundation_.getActiveTabIndex()},set:function(t){this.setActiveTabIndex_(t,!1)}}],[{key:"attachTo",value:function(t){return new e(t)}}]),e}(),R={INDICATOR_FORWARD:"mdc-tab-bar-scroller__indicator--forward",INDICATOR_BACK:"mdc-tab-bar-scroller__indicator--back",INDICATOR_ENABLED:"mdc-tab-bar-scroller__indicator--enabled",TAB:"mdc-tab"},D={FRAME_SELECTOR:".mdc-tab-bar-scroller__scroll-frame",TABS_SELECTOR:".mdc-tab-bar-scroller__scroll-frame__tabs",TAB_SELECTOR:".mdc-tab",INDICATOR_FORWARD_SELECTOR:".mdc-tab-bar-scroller__indicator--forward",INDICATOR_BACK_SELECTOR:".mdc-tab-bar-scroller__indicator--back"},H=function(t){function n(t){_classCallCheck(this,n);var e=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,Object.assign(n.defaultAdapter,t)));return e.pointerDownRecognized_=!1,e.currentTranslateOffset_=0,e.focusedTarget_=null,e.layoutFrame_=0,e.scrollFrameScrollLeft_=0,e.forwardIndicatorClickHandler_=function(t){return e.scrollForward(t)},e.backIndicatorClickHandler_=function(t){return e.scrollBack(t)},e.resizeHandler_=function(){return e.layout()},e.interactionHandler_=function(t){"touchstart"!=t.type&&"mousedown"!=t.type||(e.pointerDownRecognized_=!0),e.handlePossibleTabKeyboardFocus_(t),"focus"==t.type&&(e.pointerDownRecognized_=!1)},e}return _inherits(n,e),_createClass(n,null,[{key:"cssClasses",get:function(){return R}},{key:"strings",get:function(){return D}},{key:"defaultAdapter",get:function(){return{addClass:function(){},removeClass:function(){},eventTargetHasClass:function(){return!1},addClassToForwardIndicator:function(){},removeClassFromForwardIndicator:function(){},addClassToBackIndicator:function(){},removeClassFromBackIndicator:function(){},isRTL:function(){return!1},registerBackIndicatorClickHandler:function(){},deregisterBackIndicatorClickHandler:function(){},registerForwardIndicatorClickHandler:function(){},deregisterForwardIndicatorClickHandler:function(){},registerCapturedInteractionHandler:function(){},deregisterCapturedInteractionHandler:function(){},registerWindowResizeHandler:function(){},deregisterWindowResizeHandler:function(){},getNumberOfTabs:function(){return 0},getComputedWidthForTabAtIndex:function(){return 0},getComputedLeftForTabAtIndex:function(){return 0},getOffsetWidthForScrollFrame:function(){return 0},getScrollLeftForScrollFrame:function(){return 0},setScrollLeftForScrollFrame:function(){},getOffsetWidthForTabBar:function(){return 0},setTransformStyleForTabBar:function(){},getOffsetLeftForEventTarget:function(){return 0},getOffsetWidthForEventTarget:function(){return 0}}}}]),_createClass(n,[{key:"init",value:function(){var t=this;this.adapter_.registerBackIndicatorClickHandler(this.backIndicatorClickHandler_),this.adapter_.registerForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_),this.adapter_.registerWindowResizeHandler(this.resizeHandler_),["touchstart","mousedown","focus"].forEach(function(e){t.adapter_.registerCapturedInteractionHandler(e,t.interactionHandler_)}),this.layout()}},{key:"destroy",value:function(){var t=this;this.adapter_.deregisterBackIndicatorClickHandler(this.backIndicatorClickHandler_),this.adapter_.deregisterForwardIndicatorClickHandler(this.forwardIndicatorClickHandler_),this.adapter_.deregisterWindowResizeHandler(this.resizeHandler_),["touchstart","mousedown","focus"].forEach(function(e){t.adapter_.deregisterCapturedInteractionHandler(e,t.interactionHandler_)})}},{key:"scrollBack",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;t&&t.preventDefault();for(var e=0,n=0,r=this.adapter_.getNumberOfTabs()-1;r>0;r--){var i=this.adapter_.getComputedLeftForTabAtIndex(r),a=this.adapter_.getOffsetWidthForTabBar()-i,o=i>this.currentTranslateOffset_;if(this.isRTL_()&&(o=a>this.currentTranslateOffset_),!o)if((e+=this.adapter_.getComputedWidthForTabAtIndex(r))>this.adapter_.getOffsetWidthForScrollFrame()){n=this.isRTL_()?r+1:r;break}}this.scrollToTabAtIndex(n)}},{key:"scrollForward",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;t&&t.preventDefault();for(var e=this.adapter_.getOffsetWidthForScrollFrame()+this.currentTranslateOffset_,n=0,r=0;r<this.adapter_.getNumberOfTabs();r++){var i=this.adapter_.getComputedLeftForTabAtIndex(r)+this.adapter_.getComputedWidthForTabAtIndex(r)>e;if(this.isRTL_()){var a=e-this.adapter_.getComputedWidthForTabAtIndex(r),o=this.adapter_.getComputedLeftForTabAtIndex(r)+this.adapter_.getComputedWidthForTabAtIndex(r);i=this.adapter_.getOffsetWidthForTabBar()-o>a}if(i){n=r;break}}this.scrollToTabAtIndex(n)}},{key:"layout",value:function(){var t=this;cancelAnimationFrame(this.layoutFrame_),this.scrollFrameScrollLeft_=this.adapter_.getScrollLeftForScrollFrame(),this.layoutFrame_=requestAnimationFrame(function(){return t.layout_()})}},{key:"isRTL_",value:function(){return this.adapter_.isRTL()}},{key:"handlePossibleTabKeyboardFocus_",value:function(t){if(this.adapter_.eventTargetHasClass(t.target,R.TAB)&&!this.pointerDownRecognized_){var e=this.isRTL_()?this.scrollFrameScrollLeft_:0;this.adapter_.setScrollLeftForScrollFrame(e),this.focusedTarget_=t.target;var n=this.adapter_.getOffsetWidthForScrollFrame(),r=this.adapter_.getOffsetWidthForTabBar(),i=this.adapter_.getOffsetLeftForEventTarget(this.focusedTarget_),a=i+this.adapter_.getOffsetWidthForEventTarget(this.focusedTarget_),o=a<=this.currentTranslateOffset_,s=a>this.currentTranslateOffset_+n;if(this.isRTL_()){var u=r-i;o=i>=r-this.currentTranslateOffset_,s=u>n+this.currentTranslateOffset_}s?this.scrollForward():o&&this.scrollBack(),this.pointerDownRecognized_=!1}}},{key:"layout_",value:function(){var t=this.adapter_.getOffsetWidthForScrollFrame();this.adapter_.getOffsetWidthForTabBar()>t||(this.currentTranslateOffset_=0),this.shiftFrame_(),this.updateIndicatorEnabledStates_()}},{key:"scrollToTabAtIndex",value:function(t){var e=this,n=this.adapter_.getComputedLeftForTabAtIndex(t),r=this.adapter_.getComputedWidthForTabAtIndex(t);this.currentTranslateOffset_=this.normalizeForRTL_(n,r),requestAnimationFrame(function(){return e.shiftFrame_()})}},{key:"normalizeForRTL_",value:function(t,e){return this.isRTL_()?this.adapter_.getOffsetWidthForTabBar()-(t+e):t}},{key:"shiftFrame_",value:function(){var t=this.isRTL_()?this.currentTranslateOffset_:-this.currentTranslateOffset_;this.adapter_.setTransformStyleForTabBar("translateX("+t+"px)"),this.updateIndicatorEnabledStates_()}},{key:"updateIndicatorEnabledStates_",value:function(){var t=R.INDICATOR_ENABLED;0===this.currentTranslateOffset_?this.adapter_.removeClassFromBackIndicator(t):this.adapter_.addClassToBackIndicator(t),this.adapter_.getOffsetWidthForTabBar()-this.currentTranslateOffset_>this.adapter_.getOffsetWidthForScrollFrame()?this.adapter_.addClassToForwardIndicator(t):this.adapter_.removeClassFromForwardIndicator(t)}}]),n}(),L=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return _inherits(e,n),_createClass(e,[{key:"initialize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(t){return new w(t)};this.scrollFrame_=this.root_.querySelector(H.strings.FRAME_SELECTOR),this.tabBarEl_=this.root_.querySelector(H.strings.TABS_SELECTOR),this.forwardIndicator_=this.root_.querySelector(H.strings.INDICATOR_FORWARD_SELECTOR),this.backIndicator_=this.root_.querySelector(H.strings.INDICATOR_BACK_SELECTOR),this.tabBar_=t(this.tabBarEl_)}},{key:"getDefaultFoundation",value:function(){var t=this;return new H({addClass:function(e){return t.root_.classList.add(e)},removeClass:function(e){return t.root_.classList.remove(e)},eventTargetHasClass:function(t,e){return t.classList.contains(e)},addClassToForwardIndicator:function(e){return t.forwardIndicator_.classList.add(e)},removeClassFromForwardIndicator:function(e){return t.forwardIndicator_.classList.remove(e)},addClassToBackIndicator:function(e){return t.backIndicator_.classList.add(e)},removeClassFromBackIndicator:function(e){return t.backIndicator_.classList.remove(e)},isRTL:function(){return"rtl"===getComputedStyle(t.root_).getPropertyValue("direction")},registerBackIndicatorClickHandler:function(e){return t.backIndicator_.addEventListener("click",e)},deregisterBackIndicatorClickHandler:function(e){return t.backIndicator_.removeEventListener("click",e)},registerForwardIndicatorClickHandler:function(e){return t.forwardIndicator_.addEventListener("click",e)},deregisterForwardIndicatorClickHandler:function(e){return t.forwardIndicator_.removeEventListener("click",e)},registerCapturedInteractionHandler:function(e,n){return t.root_.addEventListener(e,n,!0)},deregisterCapturedInteractionHandler:function(e,n){return t.root_.removeEventListener(e,n,!0)},registerWindowResizeHandler:function(t){return window.addEventListener("resize",t)},deregisterWindowResizeHandler:function(t){return window.removeEventListener("resize",t)},getNumberOfTabs:function(){return t.tabBar.tabs.length},getComputedWidthForTabAtIndex:function(e){return t.tabBar.tabs[e].computedWidth},getComputedLeftForTabAtIndex:function(e){return t.tabBar.tabs[e].computedLeft},getOffsetWidthForScrollFrame:function(){return t.scrollFrame_.offsetWidth},getScrollLeftForScrollFrame:function(){return t.scrollFrame_.scrollLeft},setScrollLeftForScrollFrame:function(e){return t.scrollFrame_.scrollLeft=e},getOffsetWidthForTabBar:function(){return t.tabBarEl_.offsetWidth},setTransformStyleForTabBar:function(e){t.tabBarEl_.style.setProperty(E(window,"transform"),e)},getOffsetLeftForEventTarget:function(t){return t.offsetLeft},getOffsetWidthForEventTarget:function(t){return t.offsetWidth}})}},{key:"layout",value:function(){this.foundation_.layout()}},{key:"tabBar",get:function(){return this.tabBar_}}],[{key:"attachTo",value:function(t){return new e(t)}}]),e}(),x=Object.freeze({MDCTabFoundation:C,MDCTab:T,MDCTabBarFoundation:S,MDCTabBar:w,MDCTabBarScrollerFoundation:H,MDCTabBarScroller:L});return t.ripple=g,t.tabs=x,t}({});