2015-08-07 16:37:36 +02:00
/ * !
* Angular Material Design
* https : //github.com/angular/material
* @ license MIT
2015-12-04 15:07:07 +01:00
* v1 . 0.0 - rc5 - master - fd33d41
2015-08-07 16:37:36 +02:00
* /
2015-12-04 15:07:07 +01:00
! function ( e , t , n ) { "use strict" ; ! function ( ) { t . module ( "ngMaterial" , [ "ng" , "ngAnimate" , "ngAria" , "material.core" , "material.core.gestures" , "material.core.layout" , "material.core.theming.palette" , "material.core.theming" , "material.core.animate" , "material.components.autocomplete" , "material.components.backdrop" , "material.components.bottomSheet" , "material.components.button" , "material.components.card" , "material.components.checkbox" , "material.components.chips" , "material.components.content" , "material.components.datepicker" , "material.components.dialog" , "material.components.divider" , "material.components.fabActions" , "material.components.fabShared" , "material.components.fabSpeedDial" , "material.components.fabToolbar" , "material.components.fabTrigger" , "material.components.gridList" , "material.components.icon" , "material.components.input" , "material.components.list" , "material.components.menu" , "material.components.menuBar" , "material.components.progressCircular" , "material.components.progressLinear" , "material.components.radioButton" , "material.components.select" , "material.components.showHide" , "material.components.sidenav" , "material.components.slider" , "material.components.sticky" , "material.components.subheader" , "material.components.swipe" , "material.components.switch" , "material.components.tabs" , "material.components.toast" , "material.components.toolbar" , "material.components.tooltip" , "material.components.virtualRepeat" , "material.components.whiteframe" ] ) } ( ) , function ( ) { function e ( e , t ) { e . decorator ( "$$rAF" , [ "$delegate" , n ] ) , t . theme ( "default" ) . primaryPalette ( "indigo" ) . accentPalette ( "pink" ) . warnPalette ( "red" ) . backgroundPalette ( "grey" ) } function n ( e ) { return e . throttle = function ( t ) { var n , o , r , i ; return function ( ) { n = arguments , i = this , r = t , o || ( o = ! 0 , e ( function ( ) { r . apply ( i , Array . prototype . slice . call ( n ) ) , o = ! 1 } ) ) } } , e } t . module ( "material.core" , [ "ngAnimate" , "material.core.animate" , "material.core.layout" , "material.core.gestures" , "material.core.theming" ] ) . config ( e ) , e . $inject = [ "$provide" , "$mdThemingProvider" ] } ( ) , function ( ) { function e ( e ) { function t ( e ) { return n ? "webkit" + e . charAt ( 0 ) . toUpperCase ( ) + e . substring ( 1 ) : e } var n = /webkit/i . test ( e . vendorPrefix ) ; return { KEY _CODE : { COMMA : 188 , ENTER : 13 , ESCAPE : 27 , SPACE : 32 , PAGE _UP : 33 , PAGE _DOWN : 34 , END : 35 , HOME : 36 , LEFT _ARROW : 37 , UP _ARROW : 38 , RIGHT _ARROW : 39 , DOWN _ARROW : 40 , TAB : 9 , BACKSPACE : 8 , DELETE : 46 } , CSS : { TRANSITIONEND : "transitionend" + ( n ? " webkitTransitionEnd" : "" ) , ANIMATIONEND : "animationend" + ( n ? " webkitAnimationEnd" : "" ) , TRANSFORM : t ( "transform" ) , TRANSFORM _ORIGIN : t ( "transformOrigin" ) , TRANSITION : t ( "transition" ) , TRANSITION _DURATION : t ( "transitionDuration" ) , ANIMATION _PLAY _STATE : t ( "animationPlayState" ) , ANIMATION _DURATION : t ( "animationDuration" ) , ANIMATION _NAME : t ( "animationName" ) , ANIMATION _TIMING : t ( "animationTimingFunction" ) , ANIMATION _DIRECTION : t ( "animationDirection" ) } , MEDIA : { xs : "(max-width: 599px)" , "gt-xs" : "(min-width: 600px)" , sm : "(min-width: 600px) and (max-width: 959px)" , "gt-sm" : "(min-width: 960px)" , md : "(min-width: 960px) and (max-width: 1279px)" , "gt-md" : "(min-width: 1280px)" , lg : "(min-width: 1280px) and (max-width: 1919px)" , "gt-lg" : "(min-width: 1920px)" , xl : "(min-width: 1920px)" } , MEDIA _PRIORITY : [ "xl" , "gt-lg" , "lg" , "gt-md" , "md" , "gt-sm" , "sm" , "gt-xs" , "xs" ] } } t . module ( "material.core" ) . factory ( "$mdConstant" , e ) , e . $inject = [ "$sniffer" ] } ( ) , function ( ) { function e ( e , n ) { function o ( ) { return [ ] . concat ( E ) } function r ( ) { return E . length } function i ( e ) { return E . length && e > - 1 && e < E . length } function a ( e ) { return e ? i ( u ( e ) + 1 ) : ! 1 } function d ( e ) { return e ? i ( u ( e ) - 1 ) : ! 1 } function c ( e ) { return i ( e ) ? E [ e ] : null } function s ( e , t ) { return E . filter ( function ( n ) { return n [ e ] === t } ) } function l ( e , n ) { return e ? ( t . isNumber ( n ) || ( n = E . length ) , E . splice ( n , 0 , e ) , u ( e ) ) : - 1 } function m ( e ) { p ( e ) && E . splice ( u ( e ) , 1 ) } function u ( e ) { return E . indexOf ( e ) } function p ( e ) { return e && u ( e ) > - 1 } function h ( ) { return E . length ? E [ 0 ] : null } function f ( ) { return E . length ? E [ E . length - 1 ] : null } function g ( e , o , r , a ) { r = r || b ; for ( var d = u ( o ) ; ; ) { if ( ! i ( d ) ) return null ; var c = d + ( e ? - 1 : 1 ) , s = null ; if ( i ( c ) ? s = E [ c ] : n && ( s = e ? f ( ) : h ( ) , c = u ( s ) ) , null === s || c === a ) return null ; if ( r ( s ) ) return s ; t . isUndefined ( a ) && ( a = c ) , d = c } } var b = function ( ) { return ! 0 } ; e && ! t . isArray ( e ) && ( e = Array . prototype . slice . call ( e ) ) ,
} ( ) } ( ) , function ( ) { function e ( e , n ) { function o ( e ) { return e && "" !== e } var r , i = [ ] , a = { } ; return r = { notFoundError : function ( t ) { e . error ( "No instance found for handle" , t ) } , getInstances : function ( ) { return i } , get : function ( e ) { if ( ! o ( e ) ) return null ; var t , n , r ; for ( t = 0 , n = i . length ; n > t ; t ++ ) if ( r = i [ t ] , r . $$mdHandle === e ) return r ; return null } , register : function ( e , n ) { function o ( ) { var t = i . indexOf ( e ) ; - 1 !== t && i . splice ( t , 1 ) } function r ( ) { var t = a [ n ] ; t && ( t . resolve ( e ) , delete a [ n ] ) } return n ? ( e . $$mdHandle = n , i . push ( e ) , r ( ) , o ) : t . noop } , when : function ( e ) { if ( o ( e ) ) { var t = n . defer ( ) , i = r . get ( e ) ; return i ? t . resolve ( i ) : a [ e ] = t , t . promise } return n . reject ( "Invalid `md-component-id` value." ) } } } t . module ( "material.core" ) . factory ( "$mdComponentRegistry" , e ) , e . $inject = [ "$log" , "$q" ] } ( ) , function ( ) { ! function ( ) { function e ( e ) { function n ( e ) { return e . hasClass ( "md-icon-button" ) ? { isMenuItem : e . hasClass ( "md-menu-item" ) , fitRipple : ! 0 , center : ! 0 } : { isMenuItem : e . hasClass ( "md-menu-item" ) , dimBackground : ! 0 } } return { attach : function ( o , r , i ) { return i = t . extend ( n ( r ) , i ) , e . attach ( o , r , i ) } } } t . module ( "material.core" ) . factory ( "$mdButtonInkRipple" , e ) , e . $inject = [ "$mdInkRipple" ] } ( ) } ( ) , function ( ) { ! function ( ) { function e ( e ) { function n ( n , o , r ) { return e . attach ( n , o , t . extend ( { center : ! 0 , dimBackground : ! 1 , fitRipple : ! 0 } , r ) ) } return { attach : n } } t . module ( "material.core" ) . factory ( "$mdCheckboxInkRipple" , e ) , e . $inject = [ "$mdInkRipple" ] } ( ) } ( ) , function ( ) { ! function ( ) { function e ( e ) { function n ( n , o , r ) { return e . attach ( n , o , t . extend ( { center : ! 1 , dimBackground : ! 0 , outline : ! 1 , rippleSize : "full" } , r ) ) } return { attach : n } } t . module ( "material.core" ) . factory ( "$mdListInkRipple" , e ) , e . $inject = [ "$mdInkRipple" ] } ( ) } ( ) , function ( ) { function e ( e , n ) { return { controller : t . noop , link : function ( t , o , r ) { r . hasOwnProperty ( "mdInkRippleCheckbox" ) ? n . attach ( t , o ) : e . attach ( t , o ) } } } function n ( e ) { function n ( n , r , i ) { return r . controller ( "mdNoInk" ) ? t . noop : e . instantiate ( o , { $scope : n , $element : r , rippleOptions : i } ) } return { attach : n } } function o ( e , n , o , r , i , a ) { this . $window = r , this . $timeout = i , this . $mdUtil = a , this . $scope = e , this . $element = n , this . options = o , this . mousedown = ! 1 , this . ripples = [ ] , this . timeout = null , this . lastRipple = null , a . valueOnUse ( this , "container" , this . createContainer ) , this . $element . addClass ( "md-ink-ripple" ) , ( n . controller ( "mdInkRipple" ) || { } ) . createRipple = t . bind ( this , this . createRipple ) , ( n . controller ( "mdInkRipple" ) || { } ) . setColor = t . bind ( this , this . color ) , this . bindEvents ( ) } function r ( e , n ) { ( e . mousedown || e . lastRipple ) && ( e . mousedown = ! 1 , e . $mdUtil . nextTick ( t . bind ( e , n ) , ! 1 ) ) } function i ( ) { return { controller : t . noop } } t . module ( "material.core" ) . factory ( "$mdInkRipple" , n ) . directive ( "mdInkRipple" , e ) . directive ( "mdNoInk" , i ) . directive ( "mdNoBar" , i ) . directive ( "mdNoStretch" , i ) ; var a = 450 ; e . $inject = [ "$mdButtonInkRipple" , "$mdCheckboxInkRipple" ] , n . $inject = [ "$injector" ] , o . $inject = [ "$scope" , "$element" , "rippleOptions" , "$window" , "$timeout" , "$mdUtil" ] , o . prototype . color = function ( e ) { function n ( ) { var e = o . options && o . options . colorElement ? o . options . colorElement : [ ] , t = e . length ? e [ 0 ] : o . $element [ 0 ] ; return t ? o . $window . getComputedStyle ( t ) . color : "rgb(0,0,0)" } var o = this ; return t . isDefined ( e ) && ( o . _color = o . _parseColor ( e ) ) , o . _color || o . _parseColor ( o . inkRipple ( ) ) || o . _parseColor ( n ( ) ) } , o . prototype . calculateColor = function ( ) { return this . color ( ) } , o . prototype . _parseColor = function ( e , t ) { function n ( e ) { var t = "#" === e [ 0 ] ? e . substr ( 1 ) : e , n = t . length / 3 , o = t . substr ( 0 , n ) , r = t . substr ( n , n ) , i = t . substr ( 2 * n ) ; return 1 === n && ( o += o , r += r , i += i ) , "rgba(" + parseInt ( o , 16 ) + "," + parseInt ( r , 16 ) + "," + parseInt ( i , 16 ) + ",0.1)" } function o ( e ) { return e . replace ( ")" , ", 0.1)" ) . replace ( "(" , "a(" ) } return t = t || 1 , e ? 0 === e . indexOf ( "rgba" ) ? e . replace ( /\d?\.?\d*\s*\)\s*$/ , ( . 1 * t ) . toString ( ) + ")" ) : 0 === e . indexOf ( "rgb" ) ? o ( e ) : 0 === e . indexOf ( "#" ) ? n ( e ) : void 0 : void 0 } , o . prototype . bindEvents = function ( ) { this . $element . on ( "mousedown" , t . bind ( this , this . handleMousedown ) ) , this . $element . on ( "mouseup touchend" , t . bind ( this , this . handleMouseup ) ) , this . $element . on ( "mouseleave" , t . bind ( this , this . handleMouseup ) ) , this . $element . on ( "touchmove" , t . bind ( this , this . handleTouchmove ) ) } , o . prototype . handleMousedown = function ( e ) { this . mousedown || ( e . hasOwnProperty ( "originalEvent" ) && ( e = e . originalEvent ) , this . mousedown = ! 0 , this . options . center ? this . createRipple ( this . conta
this . hasAttribute ( "disabled" ) && e . stopImmediatePropagation ( ) } ) , function ( d , s , l , m ) { function u ( e , t , n ) { l [ e ] && d . $watch ( l [ e ] , function ( e ) { n [ e ] && s . attr ( t , n [ e ] ) } ) } function p ( e ) { var t = e . which || e . keyCode ; ( t === o . KEY _CODE . SPACE || t === o . KEY _CODE . ENTER ) && ( e . preventDefault ( ) , s . hasClass ( "md-focused" ) || s . addClass ( "md-focused" ) , h ( e ) ) } function h ( e ) { s [ 0 ] . hasAttribute ( "disabled" ) || d . $apply ( function ( ) { var t = l . ngChecked ? l . checked : ! m . $viewValue ; m . $setViewValue ( t , e && e . type ) , m . $render ( ) } ) } function f ( ) { m . $viewValue ? s . addClass ( c ) : s . removeClass ( c ) } m = m || i . fakeNgModel ( ) , r ( s ) , l . ngChecked && d . $watch ( d . $eval . bind ( d , l . ngChecked ) , m . $setViewValue . bind ( m ) ) , u ( "ngDisabled" , "tabindex" , { "true" : "-1" , "false" : l . tabindex } ) , n . expectWithText ( s , "aria-label" ) , e . link . pre ( d , { on : t . noop , 0 : { } } , l , [ m ] ) , d . mouseActive = ! 1 , s . on ( "click" , h ) . on ( "keypress" , p ) . on ( "mousedown" , function ( ) { d . mouseActive = ! 0 , a ( function ( ) { d . mouseActive = ! 1 } , 100 ) } ) . on ( "focus" , function ( ) { d . mouseActive === ! 1 && s . addClass ( "md-focused" ) } ) . on ( "blur" , function ( ) { s . removeClass ( "md-focused" ) } ) , m . $render = f } } e = e [ 0 ] ; var c = "md-checked" ; return { restrict : "E" , transclude : ! 0 , require : "?ngModel" , priority : 210 , template : '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>' , compile : d } } t . module ( "material.components.checkbox" , [ "material.core" ] ) . directive ( "mdCheckbox" , e ) , e . $inject = [ "inputDirective" , "$mdAria" , "$mdConstant" , "$mdTheming" , "$mdUtil" , "$timeout" ] } ( ) , function ( ) { t . module ( "material.components.chips" , [ "material.core" , "material.components.autocomplete" ] ) } ( ) , function ( ) { function e ( e ) { function t ( e , t ) { this . $scope = e , this . $element = t } return { restrict : "E" , controller : [ "$scope" , "$element" , t ] , link : function ( t , o , r ) { o [ 0 ] ; e ( o ) , t . $broadcast ( "$mdContentLoaded" , o ) , n ( o [ 0 ] ) } } } function n ( e ) { t . element ( e ) . on ( "$md.pressdown" , function ( t ) { "t" === t . pointer . type && ( t . $materialScrollFixed || ( t . $materialScrollFixed = ! 0 , 0 === e . scrollTop ? e . scrollTop = 1 : e . scrollHeight === e . scrollTop + e . offsetHeight && ( e . scrollTop -= 1 ) ) ) } ) } t . module ( "material.components.content" , [ "material.core" ] ) . directive ( "mdContent" , e ) , e . $inject = [ "$mdTheming" ] } ( ) , function ( ) { ! function ( ) { function e ( ) { return { template : '<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="' + ( r - o ) + '"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody role="rowgroup" md-virtual-repeat="i in ctrl.items" md-calendar-month md-month-offset="$index" class="md-calendar-month" md-start-index="ctrl.getSelectedMonthIndex()" md-item-size="' + o + '"></tbody></table></md-virtual-repeat-container></div>' , scope : { minDate : "=mdMinDate" , maxDate : "=mdMaxDate" , dateFilter : "=mdDateFilter" } , require : [ "ngModel" , "mdCalendar" ] , controller : n , controllerAs : "ctrl" , bindToController : ! 0 , link : function ( e , t , n , o ) { var r = o [ 0 ] , i = o [ 1 ] ; i . configureNgModel ( r ) } } } function n ( e , t , n , o , r , i , a , c , s , l , m ) { if ( a ( e ) , this . items = { length : 2e3 } , this . maxDate && this . minDate ) { var u = c . getMonthDistance ( this . minDate , this . maxDate ) + 1 ; u = Math . max ( u , 1 ) , u += 1 , this . items . length = u } if ( this . $animate = o , this . $q = r , this . $mdInkRipple = l , this . $mdUtil = m , this . keyCode = i . KEY _CODE , this . dateUtil = c , this . dateLocale = s , this . $element = e , this . $scope = n , this . calendarElement = e [ 0 ] . querySelector ( ".md-calendar" ) , this . calendarScroller = e [ 0 ] . querySelector ( ".md-virtual-repeat-scroller" ) , this . today = this . dateUtil . createDateAtMidnight ( ) , this . firstRenderableDate = this . dateUtil . incrementMonths ( this . today , - this . items . length / 2 ) , this . minDate && this . minDate > this . firstRenderableDate ) this . firstRenderableDate = this . minDate ; else if ( this . maxDate ) { this . items . length - 2 ; this . firstRenderableDate = this . dateUtil . incrementMonths ( this . maxDate , - ( this . items . length - 2 ) ) } this . id = d ++ , this . ngModelCtrl = null , this . selectedDate = null , this . displayDate = null , this . focusDate = null , this . isInitialized = ! 1 , this . isMonthTransitionInProgress = ! 1 , t . tabindex || e . attr ( "tabindex" , "-1" ) ; var p = this ; this . cellClickHandler = function ( ) { var e = this ; this . hasAttribute ( "data-timestamp" ) && n . $apply ( function ( ) { var t = Number ( e . getAttribute ( "data-timestamp" ) ) ; p . setNgMod
function e ( e , n , o , r , i , a ) { function d ( ) { _ . direction = _ . direction || "down" , _ . isOpen = _ . isOpen || ! 1 , l ( ) } function c ( ) { var o = [ "click" , "focusin" , "focusout" ] ; t . forEach ( o , function ( e ) { n . on ( e , s ) } ) , e . $on ( "$destroy" , function ( ) { t . forEach ( o , function ( e ) { n . off ( e , s ) } ) , h ( ) } ) } function s ( e ) { "click" == e . type && k ( e ) , "focusout" != e . type || H || ( H = a ( function ( ) { _ . close ( ) } , 100 , ! 1 ) ) , "focusin" == e . type && H && ( a . cancel ( H ) , H = null ) } function l ( ) { _ . currentActionIndex = - 1 } function m ( ) { e . $watch ( "vm.direction" , function ( e , t ) { o . removeClass ( n , "md-" + t ) , o . addClass ( n , "md-" + e ) , l ( ) } ) ; var t , r ; e . $watch ( "vm.isOpen" , function ( e ) { l ( ) , t && r || ( t = x ( ) , r = N ( ) ) , e ? p ( ) : h ( ) ; var i = e ? "md-is-open" : "" , a = e ? "" : "md-is-open" ; t . attr ( "aria-haspopup" , ! 0 ) , t . attr ( "aria-expanded" , e ) , r . attr ( "aria-hidden" , ! e ) , o . setClass ( n , i , a ) } ) } function u ( ) { r . nextTick ( function ( ) { o . addClass ( n , "md-noop" ) } ) } function p ( ) { n . on ( "keydown" , g ) , r . nextTick ( function ( ) { t . element ( document ) . on ( "click touchend" , f ) } ) } function h ( ) { n . off ( "keydown" , g ) , t . element ( document ) . off ( "click touchend" , f ) } function f ( e ) { if ( e . target ) { var t = r . getClosest ( e . target , "md-fab-trigger" ) , n = r . getClosest ( e . target , "md-fab-actions" ) ; t || n || _ . close ( ) } } function g ( e ) { switch ( e . which ) { case i . KEY _CODE . ESCAPE : return _ . close ( ) , e . preventDefault ( ) , ! 1 ; case i . KEY _CODE . LEFT _ARROW : return $ ( e ) , ! 1 ; case i . KEY _CODE . UP _ARROW : return y ( e ) , ! 1 ; case i . KEY _CODE . RIGHT _ARROW : return C ( e ) , ! 1 ; case i . KEY _CODE . DOWN _ARROW : return A ( e ) , ! 1 } } function b ( e ) { v ( e , - 1 ) } function E ( e ) { v ( e , 1 ) } function v ( e , n ) { var o = M ( ) ; _ . currentActionIndex = _ . currentActionIndex + n , _ . currentActionIndex = Math . min ( o . length - 1 , _ . currentActionIndex ) , _ . currentActionIndex = Math . max ( 0 , _ . currentActionIndex ) ; var r = t . element ( o [ _ . currentActionIndex ] ) . children ( ) [ 0 ] ; t . element ( r ) . attr ( "tabindex" , 0 ) , r . focus ( ) , e . preventDefault ( ) , e . stopImmediatePropagation ( ) } function M ( ) { var e = N ( ) [ 0 ] . querySelectorAll ( ".md-fab-action-item" ) ; return t . forEach ( e , function ( e ) { t . element ( t . element ( e ) . children ( ) [ 0 ] ) . attr ( "tabindex" , - 1 ) } ) , e } function $ ( e ) { "left" === _ . direction ? E ( e ) : b ( e ) } function y ( e ) { "down" === _ . direction ? b ( e ) : E ( e ) } function C ( e ) { "left" === _ . direction ? b ( e ) : E ( e ) } function A ( e ) { "up" === _ . direction ? b ( e ) : E ( e ) } function T ( e ) { return r . getClosest ( e , "md-fab-trigger" ) } function w ( e ) { return r . getClosest ( e , "md-fab-actions" ) } function k ( e ) { T ( e . target ) && _ . toggle ( ) , w ( e . target ) && _ . close ( ) } function x ( ) { return n . find ( "md-fab-trigger" ) } function N ( ) { return n . find ( "md-fab-actions" ) } var _ = this ; _ . open = function ( ) { e . $evalAsync ( "vm.isOpen = true" ) } , _ . close = function ( ) { e . $evalAsync ( "vm.isOpen = false" ) , n . find ( "md-fab-trigger" ) [ 0 ] . focus ( ) } , _ . toggle = function ( ) { e . $evalAsync ( "vm.isOpen = !vm.isOpen" ) } , d ( ) , c ( ) , m ( ) , u ( ) ; var H } t . module ( "material.components.fabShared" , [ "material.core" ] ) . controller ( "FabController" , e ) , e . $inject = [ "$scope" , "$element" , "$animate" , "$mdUtil" , "$mdConstant" , "$timeout" ] } ( ) } ( ) , function ( ) { ! function ( ) { function n ( ) { function e ( e , t ) { t . prepend ( '<div class="md-css-variables"></div>' ) } return { restrict : "E" , scope : { direction : "@?mdDirection" , isOpen : "=?mdOpen" } , bindToController : ! 0 , controller : "FabController" , controllerAs : "vm" , link : e } } function o ( n ) { function o ( e ) { n ( e , i , ! 1 ) } function r ( n ) { var o = n [ 0 ] , r = n . controller ( "mdFabSpeedDial" ) , i = o . querySelectorAll ( ".md-fab-action-item" ) , a = o . querySelector ( "md-fab-trigger" ) , d = o . querySelector ( ".md-css-variables" ) , c = parseInt ( e . getComputedStyle ( d ) . zIndex ) ; t . forEach ( i , function ( e , t ) { var n = e . style ; n . transform = n . webkitTransform = "" , n . transitionDelay = "" , n . opacity = 1 , n . zIndex = i . length - t + c } ) , a . style . zIndex = c + i . length + 1 , r . isOpen || t . forEach ( i , function ( e , t ) { var n , o , i = e . style , d = ( a . clientHeight - e . clientHeight ) / 2 , c = ( a . clientWidth - e . clientWidth ) / 2 ; switch ( r . direction ) { case "up" : n = e . scrollHeight * ( t + 1 ) + d , o = "Y" ; break ; case "down" : n = - ( e . scrollHeight * ( t + 1 ) + d ) , o = "Y" ; break ; case "left" : n = e . scrollWidth * ( t + 1 ) + c , o = "X" ; break ; case "right" : n = - ( e . scrollWidth * ( t + 1 ) + c ) , o = "X" } var s = "translate" + o + "(" + n + "px)" ; i . transform = i . webkitTransform = s } ) } return { addClass : function ( e , t , n ) { e . hasClass ( "md-fling" ) && r ( e ) , o ( n ) } , removeClass : function ( e , t , n ) { r ( e ) , o ( n ) } } } function r ( n ) { function o ( e ) { n ( e , i , ! 1 ) } function r ( n ) { var o = n [ 0 ] , r = n . controller ( "mdFabSpeedDial" ) , i = o . querySelectorAll ( ".md-fab-action-item" ) , d = o . querySelector ( " . md - css - variab
n . html ( e ) } , $ . setIsPlaceholder = function ( e ) { e ? ( A . addClass ( "md-select-placeholder" ) , M && M . label && M . label . addClass ( "md-placeholder" ) ) : ( A . removeClass ( "md-select-placeholder" ) , M && M . label && M . label . removeClass ( "md-placeholder" ) ) } , T || c . on ( "focus" , function ( e ) { M && M . element . hasClass ( "md-input-has-value" ) && M . setFocused ( ! 0 ) } ) . on ( "blur" , function ( e ) { M && M . setFocused ( ! 1 ) , h ( ) } ) , $ . triggerClose = function ( ) { d ( s . mdOnClose ) ( a ) } , a . $$postDigest ( function ( ) { m ( ) , u ( ) , p ( ) } ) , a . $watch ( N . selectedLabels , u ) ; var S ; s . $observe ( "ngMultiple" , function ( e ) { S && S ( ) ; var t = d ( e ) ; S = a . $watch ( function ( ) { return t ( a ) } , function ( e , t ) { ( e !== n || t !== n ) && ( e ? c . attr ( "multiple" , "multiple" ) : c . removeAttr ( "multiple" ) , c . attr ( "aria-multiselectable" , e ? "true" : "false" ) , k && ( N . setMultiple ( e ) , H = y . $render , y . $render = function ( ) { H ( ) , u ( ) , p ( ) , h ( ) } , y . $render ( ) ) ) } ) } ) , s . $observe ( "disabled" , function ( e ) { t . isString ( e ) && ( e = ! 0 ) , ( E === n || E !== e ) && ( E = e , e ? ( c . attr ( { tabindex : - 1 , "aria-disabled" : "true" } ) , c . off ( "click" , b ) , c . off ( "keydown" , g ) ) : ( c . attr ( { tabindex : s . tabindex , "aria-disabled" : "false" } ) , c . on ( "click" , b ) , c . on ( "keydown" , g ) ) ) } ) , s . disabled || s . ngDisabled || ( c . attr ( { tabindex : s . tabindex , "aria-disabled" : "false" } ) , c . on ( "click" , b ) , c . on ( "keydown" , g ) ) ; var D = { role : "listbox" , "aria-expanded" : "false" , "aria-multiselectable" : s . multiple === n || s . ngMultiple ? "false" : "true" } ; c [ 0 ] . hasAttribute ( "id" ) || ( D . id = "select_" + o . nextUid ( ) ) , c . attr ( D ) , a . $on ( "$destroy" , function ( ) { e . destroy ( ) [ "finally" ] ( function ( ) { M && ( M . setFocused ( ! 1 ) , M . setHasValue ( ! 1 ) , M . input = null ) } ) } ) } } return { restrict : "E" , require : [ "^?mdInputContainer" , "mdSelect" , "ngModel" , "?^form" ] , compile : c , controller : function ( ) { } } } function o ( e , o , r ) { function i ( e , n , i , a ) { function d ( e ) { ( 13 == e . keyCode || 32 == e . keyCode ) && c ( e ) } function c ( n ) { var r = o . getClosest ( n . target , "md-option" ) , i = r && t . element ( r ) . data ( "$mdOptionController" ) ; if ( r && i ) { if ( r . hasAttribute ( "disabled" ) ) return n . stopImmediatePropagation ( ) , ! 1 ; var a = s . hashGetter ( i . value ) , d = t . isDefined ( s . selected [ a ] ) ; e . $apply ( function ( ) { s . isMultiple ? d ? s . deselect ( a ) : s . select ( a , i . value ) : d || ( s . deselect ( Object . keys ( s . selected ) [ 0 ] ) , s . select ( a , i . value ) ) , s . refreshViewValue ( ) } ) } } var s = a [ 0 ] , l = a [ 1 ] ; r ( n ) , n . on ( "click" , c ) , n . on ( "keypress" , d ) , l && s . init ( l ) } function a ( r , i , a ) { function d ( ) { var e = l . ngModel . $modelValue || l . ngModel . $viewValue || [ ] ; if ( t . isArray ( e ) ) { var n = Object . keys ( l . selected ) , o = e . map ( l . hashGetter ) , r = n . filter ( function ( e ) { return - 1 === o . indexOf ( e ) } ) ; r . forEach ( l . deselect ) , o . forEach ( function ( t , n ) { l . select ( t , e [ n ] ) } ) } } function s ( ) { var e = l . ngModel . $viewValue || l . ngModel . $modelValue ; Object . keys ( l . selected ) . forEach ( l . deselect ) , l . select ( l . hashGetter ( e ) , e ) } var l = this ; l . isMultiple = t . isDefined ( i . multiple ) , l . selected = { } , l . options = { } , r . $watchCollection ( function ( ) { return l . options } , function ( ) { l . ngModel . $render ( ) } ) ; var m , u ; l . setMultiple = function ( e ) { function n ( e , n ) { return t . isArray ( e || n || [ ] ) } var o = l . ngModel ; u = u || o . $isEmpty , l . isMultiple = e , m && m ( ) , l . isMultiple ? ( o . $validators [ "md-multiple" ] = n , o . $render = d , r . $watchCollection ( i . ngModel , function ( e ) { n ( e ) && d ( e ) , l . ngModel . $setPristine ( ) } ) , o . $isEmpty = function ( e ) { return ! e || 0 === e . length } ) : ( delete o . $validators [ "md-multiple" ] , o . $render = s ) } ; var p , h , f , g = "" , b = 300 ; l . optNodeForKeyboardSearch = function ( e ) { p && clearTimeout ( p ) , p = setTimeout ( function ( ) { p = n , g = "" , f = n , h = n } , b ) , g += String . fromCharCode ( e . keyCode ) ; var o = new RegExp ( "^" + g , "i" ) ; h || ( h = a . find ( "md-option" ) , f = new Array ( h . length ) , t . forEach ( h , function ( e , t ) { f [ t ] = e . textContent . trim ( ) } ) ) ; for ( var r = 0 ; r < f . length ; ++ r ) if ( o . test ( f [ r ] ) ) return h [ r ] } , l . init = function ( n ) { if ( l . ngModel = n , n . $options && n . $options . trackBy ) { var o = { } , i = e ( n . $options . trackBy ) ; l . hashGetter = function ( e , t ) { return o . $value = e , i ( t || r , o ) } } else l . hashGetter = function ( e ) { return t . isObject ( e ) ? "object_" + ( e . $$mdSelectId || ( e . $$mdSelectId = ++ c ) ) : e } ; l . setMultiple ( l . isMultiple ) } , l . selectedLabels = function ( e ) { e = e || { } ; var t = e . mode || "html" , n = o . nodesToArray ( a [ 0 ] . querySelectorAll ( "md-option[selected]" ) ) ; if ( n . length ) { var r ; return "html" == t ? r = function ( e ) { return e . innerHTML } : "aria" == t && ( r = function ( e ) { return e . hasAttribute ( "aria-label" ) ? e . getAttribute ( "aria-label" ) : e . textContent } ) , n . map ( r ) . join ( ", " ) } return "" } , l . select = function ( e , t ) { var n = l . options [ e ] ; n && n . setSelected ( ! 0 ) , l . selected [ e ] =
( t || e || r [ 0 ] . activeElement !== T [ 0 ] ) && ( T . off ( "blur mouseleave touchend touchcancel" , l ) , T . triggerHandler ( "blur" ) , M ( ! 1 ) ) , e = ! 1 } ; T . on ( "mousedown" , function ( ) { e = ! 0 } ) , T . on ( "focus mouseenter touchstart" , s ) } function M ( t ) { M . value = ! ! t , M . queued || ( t ? ( M . queued = ! 0 , e ( function ( ) { d . visible = M . value , M . queued = ! 1 } , d . delay ) ) : i . nextTick ( function ( ) { d . visible = ! 1 } ) ) } function $ ( ) { return x . append ( l ) , i . hasComputedStyle ( l , "display" , "none" ) ? ( d . visible = ! 1 , void l . detach ( ) ) : ( C ( ) , void t . forEach ( [ l , w ] , function ( e ) { c . addClass ( e , "md-show" ) } ) ) } function y ( ) { var e = [ ] ; t . forEach ( [ l , w ] , function ( t ) { t . parent ( ) && t . hasClass ( "md-show" ) && e . push ( c . removeClass ( t , "md-show" ) ) } ) , s . all ( e ) . then ( function ( ) { d . visible || l . detach ( ) } ) } function C ( ) { d . visible && ( f ( ) , A ( ) ) } function A ( ) { function e ( e ) { var t = { left : e . left , top : e . top } ; return t . left = Math . min ( t . left , x . prop ( "scrollWidth" ) - n . width - u ) , t . left = Math . max ( t . left , u ) , t . top = Math . min ( t . top , x . prop ( "scrollHeight" ) - n . height - u ) , t . top = Math . max ( t . top , u ) , t } function t ( e ) { return "left" === e ? { left : o . left - n . width - u , top : o . top + o . height / 2 - n . height / 2 } : "right" === e ? { left : o . left + o . width + u , top : o . top + o . height / 2 - n . height / 2 } : "top" === e ? { left : o . left + o . width / 2 - n . width / 2 , top : o . top - n . height - u } : { left : o . left + o . width / 2 - n . width / 2 , top : o . top + o . height + u } } var n = i . offsetRect ( l , x ) , o = i . offsetRect ( T , x ) , r = t ( d . direction ) ; d . direction ? r = e ( r ) : r . top > l . prop ( "offsetParent" ) . scrollHeight - n . height - u && ( r = e ( t ( "top" ) ) ) , l . css ( { left : r . left + "px" , top : r . top + "px" } ) } a ( l ) ; var T = i . getParentWithPointerEvents ( l ) , w = t . element ( l [ 0 ] . getElementsByClassName ( "md-content" ) [ 0 ] ) , k = i . getNearestContentElement ( l ) , x = t . element ( k || document . body ) , N = o . throttle ( function ( ) { C ( ) } ) ; h ( ) , E ( ) , v ( ) , f ( ) , g ( ) , b ( ) } var m = 0 , u = 8 ; return { restrict : "E" , transclude : ! 0 , priority : 210 , template : '<div class="md-content" ng-transclude></div>' , scope : { delay : "=?mdDelay" , visible : "=?mdVisible" , autohide : "=?mdAutohide" , direction : "@?mdDirection" } , link : l } } t . module ( "material.components.tooltip" , [ "material.core" ] ) . directive ( "mdTooltip" , e ) , e . $inject = [ "$timeout" , "$window" , "$$rAF" , "$document" , "$mdUtil" , "$mdTheming" , "$rootElement" , "$animate" , "$q" ] } ( ) , function ( ) { function e ( ) { return { controller : o , template : n , compile : function ( e , t ) { e . addClass ( "md-virtual-repeat-container" ) . addClass ( t . hasOwnProperty ( "mdOrientHorizontal" ) ? "md-orient-horizontal" : "md-orient-vertical" ) } } } function n ( e ) { return '<div class="md-virtual-repeat-scroller"><div class="md-virtual-repeat-sizer"></div><div class="md-virtual-repeat-offsetter">' + e [ 0 ] . innerHTML + "</div></div>" } function o ( e , n , o , r , i , a , d ) { this . $scope = i , this . $element = a , this . $attrs = d , this . size = 0 , this . scrollSize = 0 , this . scrollOffset = 0 , this . horizontal = this . $attrs . hasOwnProperty ( "mdOrientHorizontal" ) , this . repeater = null , this . autoShrink = this . $attrs . hasOwnProperty ( "mdAutoShrink" ) , this . autoShrinkMin = parseInt ( this . $attrs . mdAutoShrinkMin , 10 ) || 0 , this . originalSize = null , this . offsetSize = parseInt ( this . $attrs . mdOffsetSize , 10 ) || 0 , this . $attrs . mdTopIndex ? ( this . bindTopIndex = o ( this . $attrs . mdTopIndex ) , this . topIndex = this . bindTopIndex ( this . $scope ) , t . isDefined ( this . topIndex ) || ( this . topIndex = 0 , this . bindTopIndex . assign ( this . $scope , 0 ) ) , this . $scope . $watch ( this . bindTopIndex , t . bind ( this , function ( e ) { e !== this . topIndex && this . scrollToIndex ( e ) } ) ) ) : this . topIndex = 0 , this . scroller = a [ 0 ] . getElementsByClassName ( "md-virtual-repeat-scroller" ) [ 0 ] , this . sizer = this . scroller . getElementsByClassName ( "md-virtual-repeat-sizer" ) [ 0 ] , this . offsetter = this . scroller . getElementsByClassName ( "md-virtual-repeat-offsetter" ) [ 0 ] ; var c = t . bind ( this , this . updateSize ) ; e ( function ( ) { c ( ) ; var e = n . debounce ( c , 10 , null , ! 1 ) , o = t . element ( r ) ; o . on ( "resize" , e ) , i . $on ( "$destroy" , function ( ) { o . off ( "resize" , e ) } ) , i . $on ( "$md-resize" , c ) } ) } function r ( e ) { return { controller : i , priority : 1e3 , require : [ "mdVirtualRepeat" , "^^mdVirtualRepeatContainer" ] , restrict : "A" , terminal : ! 0 , transclude : "element" , compile : function ( t , n ) { var o = n . mdVirtualRepeat , r = o . match ( /^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/ ) , i = r [ 1 ] , a = e ( r [ 2 ] ) , d = n . mdExtraName && e ( n . mdExtraName ) ; return function ( e , t , n , o , r ) { o [ 0 ] . link _ ( o [ 1 ] , r , i , a , d ) } } } } function i ( e , n , o , r , i , a ) { this . $scope = e , this . $element = n , this . $attrs = o , this . $browser = r , this . $document = i , this . $$rAF = a , this . onDemand = o . hasOwnProperty ( "mdOnDemand" ) , this
$chip : this . items [ this . selectedChip ] } ) ) : this . $log . warn ( "Selected Chip index out of bounds; ignoring." ) } , e . prototype . selectAndFocusChip = function ( e ) { this . selectChip ( e ) , - 1 != e && this . focusChip ( e ) } , e . prototype . focusChip = function ( e ) { this . $element [ 0 ] . querySelector ( 'md-chip[index="' + e + '"] .md-chip-content' ) . focus ( ) } , e . prototype . configureNgModel = function ( e ) { this . ngModelCtrl = e ; var t = this ; e . $render = function ( ) { t . items = t . ngModelCtrl . $viewValue } } , e . prototype . onFocus = function ( ) { var e = this . $element [ 0 ] . querySelector ( "input" ) ; e && e . focus ( ) , this . resetSelectedChip ( ) } , e . prototype . onInputFocus = function ( ) { this . inputHasFocus = ! 0 , this . resetSelectedChip ( ) } , e . prototype . onInputBlur = function ( ) { this . inputHasFocus = ! 1 } , e . prototype . configureUserInput = function ( e ) { this . userInputElement = e ; var n = e . controller ( "ngModel" ) ; n != this . ngModelCtrl && ( this . userInputNgModelCtrl = n ) ; var o = this . $scope , r = this , i = function ( e , n ) { o . $evalAsync ( t . bind ( r , n , e ) ) } ; e . attr ( { tabindex : 0 } ) . on ( "keydown" , function ( e ) { i ( e , r . inputKeydown ) } ) . on ( "focus" , function ( e ) { i ( e , r . onInputFocus ) } ) . on ( "blur" , function ( e ) { i ( e , r . onInputBlur ) } ) } , e . prototype . configureAutocomplete = function ( e ) { e && ( this . hasAutocomplete = ! 0 , e . registerSelectedItemWatcher ( t . bind ( this , function ( e ) { e && ( this . appendChip ( e ) , this . resetChipBuffer ( ) ) } ) ) , this . $element . find ( "input" ) . on ( "focus" , t . bind ( this , this . onInputFocus ) ) . on ( "blur" , t . bind ( this , this . onInputBlur ) ) ) } , e . prototype . hasFocus = function ( ) { return this . inputHasFocus || this . selectedChip >= 0 } } ( ) , function ( ) { function e ( e , t , a , d , c ) { function s ( n , o ) { function r ( e ) { if ( o . ngModel ) { var t = i [ 0 ] . querySelector ( e ) ; return t && t . outerHTML } } var i = o . $mdUserTemplate ; o . $mdUserTemplate = null ; var s = r ( "md-chips>*[md-chip-remove]" ) || m . remove , l = r ( "md-chips>md-chip-template" ) || m [ "default" ] , u = r ( "md-chips>md-autocomplete" ) || r ( "md-chips>input" ) || m . input , p = i . find ( "md-chip" ) ; return i [ 0 ] . querySelector ( "md-chip-template>*[md-chip-remove]" ) && d . warn ( "invalid placement of md-chip-remove within md-chip-template." ) , function ( n , r , i , d ) { t . initOptionalProperties ( n , o ) , e ( r ) ; var h = d [ 0 ] ; if ( h . chipContentsTemplate = l , h . chipRemoveTemplate = s , h . chipInputTemplate = u , r . attr ( { "aria-hidden" : ! 0 , tabindex : - 1 } ) . on ( "focus" , function ( ) { h . onFocus ( ) } ) , o . ngModel && ( h . configureNgModel ( r . controller ( "ngModel" ) ) , i . mdTransformChip && h . useTransformChipExpression ( ) , i . mdOnAppend && h . useOnAppendExpression ( ) , i . mdOnAdd && h . useOnAddExpression ( ) , i . mdOnRemove && h . useOnRemoveExpression ( ) , i . mdOnSelect && h . useOnSelectExpression ( ) , u != m . input && n . $watch ( "$mdChipsCtrl.readonly" , function ( e ) { e || t . nextTick ( function ( ) { 0 === u . indexOf ( "<md-autocomplete" ) && h . configureAutocomplete ( r . find ( "md-autocomplete" ) . controller ( "mdAutocomplete" ) ) , h . configureUserInput ( r . find ( "input" ) ) } ) } ) , t . nextTick ( function ( ) { var e = r . find ( "input" ) ; e && e . toggleClass ( "md-input" , ! 0 ) } ) ) , p . length > 0 ) { var f = a ( p . clone ( ) ) ( n . $parent ) ; c ( function ( ) { r . find ( "md-chips-wrap" ) . prepend ( f ) } ) } } } function l ( ) { return { chips : t . processTemplate ( n ) , input : t . processTemplate ( o ) , "default" : t . processTemplate ( r ) , remove : t . processTemplate ( i ) } } var m = l ( ) ; return { template : function ( e , t ) { return t . $mdUserTemplate = e . clone ( ) , m . chips } , require : [ "mdChips" ] , restrict : "E" , controller : "MdChipsCtrl" , controllerAs : "$mdChipsCtrl" , bindToController : ! 0 , compile : s , scope : { readonly : "=readonly" , placeholder : "@" , secondaryPlaceholder : "@" , transformChip : "&mdTransformChip" , onAppend : "&mdOnAppend" , onAdd : "&mdOnAdd" , onRemove : "&mdOnRemove" , onSelect : "&mdOnSelect" , deleteHint : "@" , deleteButtonLabel : "@" , separatorKeys : "=?mdSeparatorKeys" , requireMatch : "=?mdRequireMatch" } } } t . module ( "material.components.chips" ) . directive ( "mdChips" , e ) ; var n = ' <md-chips-wrap ng-if="!$mdChipsCtrl.readonly || $mdChipsCtrl.items.length > 0" ng-keydown="$mdChipsCtrl.chipKeydown($event)" ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus(), \'md-readonly\': !$mdChipsCtrl.ngModelCtrl }" class="md-chips"> <md-chip ng-repeat="$chip in $mdChipsCtrl.items" index="{{$index}}" ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index, \'md-readonly\' : $mdChipsCtrl . readonly } "> <div class=" md - chip - content " tabindex=" - 1 " aria-hidden=" true "
} ) , e . $watch ( "disabled" , function ( ) { i . refreshIndex ( ) } ) , e . $watch ( function ( ) { return i . getTabElementIndex ( o ) } , function ( e ) { s . index = e , i . updateTabOrder ( ) } ) , e . $on ( "$destroy" , function ( ) { i . removeTab ( s ) } ) } } function n ( e , n ) { for ( var o = e [ 0 ] . children , r = 0 , i = o . length ; i > r ; r ++ ) { var a = o [ r ] ; if ( a . tagName === n . toUpperCase ( ) ) return t . element ( a ) } return t . element ( ) } return { require : "^?mdTabs" , terminal : ! 0 , compile : function ( o , r ) { var i = n ( o , "md-tab-label" ) , a = n ( o , "md-tab-body" ) ; if ( 0 == i . length && ( i = t . element ( "<md-tab-label></md-tab-label>" ) , r . label ? i . text ( r . label ) : i . append ( o . contents ( ) ) , 0 == a . length ) ) { var d = o . contents ( ) . detach ( ) ; a = t . element ( "<md-tab-body></md-tab-body>" ) , a . append ( d ) } return o . append ( i ) , a . html ( ) && o . append ( a ) , e } , scope : { active : "=?mdActive" , disabled : "=?ngDisabled" , select : "&?mdOnSelect" , deselect : "&?mdOnDeselect" } } } t . module ( "material.components.tabs" ) . directive ( "mdTab" , e ) } ( ) , function ( ) { function e ( ) { return { require : "^?mdTabs" , link : function ( e , t , n , o ) { o && o . attachRipple ( e , t ) } } } t . module ( "material.components.tabs" ) . directive ( "mdTabItem" , e ) } ( ) , function ( ) { function e ( ) { return { terminal : ! 0 } } t . module ( "material.components.tabs" ) . directive ( "mdTabLabel" , e ) } ( ) , function ( ) { function e ( e ) { return { restrict : "A" , compile : function ( t , n ) { var o = e ( n . mdTabScroll , null , ! 0 ) ; return function ( e , t ) { t . on ( "mousewheel" , function ( t ) { e . $apply ( function ( ) { o ( e , { $event : t } ) } ) } ) } } } } t . module ( "material.components.tabs" ) . directive ( "mdTabScroll" , e ) , e . $inject = [ "$parse" ] } ( ) , function ( ) { function e ( e , o , r , i , a , d , c , s , l , m ) { function u ( ) { ce . selectedIndex = ce . selectedIndex || 0 , p ( ) , f ( ) , h ( ) , m ( o ) , d . nextTick ( function ( ) { oe ( ) , J ( ) , re ( ) , ce . tabs [ ce . selectedIndex ] && ce . tabs [ ce . selectedIndex ] . scope . select ( ) , pe = ! 0 , Y ( ) } ) } function p ( ) { var e = s . $mdTabsTemplate , n = t . element ( le . data ) ; n . html ( e ) , l ( n . contents ( ) ) ( ce . parent ) , delete s . $mdTabsTemplate } function h ( ) { t . element ( r ) . on ( "resize" , O ) , e . $on ( "$destroy" , E ) } function f ( ) { e . $watch ( "$mdTabsCtrl.selectedIndex" , w ) } function g ( e , t ) { var n = s . $normalize ( "md-" + e ) ; t && W ( e , t ) , s . $observe ( n , function ( t ) { ce [ e ] = t } ) } function b ( e , t ) { function n ( t ) { ce [ e ] = "false" !== t } var o = s . $normalize ( "md-" + e ) ; t && W ( e , t ) , s . hasOwnProperty ( o ) && n ( s [ o ] ) , s . $observe ( o , n ) } function E ( ) { ue = ! 0 , t . element ( r ) . off ( "resize" , O ) } function v ( e ) { t . element ( le . wrapper ) . toggleClass ( "md-stretch-tabs" , z ( ) ) , re ( ) } function M ( e ) { ce . shouldCenterTabs = q ( ) } function $ ( e , t ) { e !== t && d . nextTick ( ce . updateInkBarStyles ) } function y ( e , t ) { e !== t && ( ce . maxTabWidth = G ( ) , ce . shouldCenterTabs = q ( ) , d . nextTick ( function ( ) { ce . maxTabWidth = G ( ) , J ( ce . selectedIndex ) } ) ) } function C ( e ) { o [ e ? "removeClass" : "addClass" ] ( "md-no-tab-content" ) } function A ( n ) { var o = ce . shouldCenterTabs ? "" : "-" + n + "px" ; t . element ( le . paging ) . css ( i . CSS . TRANSFORM , "translate3d(" + o + ", 0, 0)" ) , e . $broadcast ( "$mdTabsPaginationChanged" ) } function T ( e , t ) { e !== t && le . tabs [ e ] && ( J ( ) , Z ( ) ) } function w ( t , n ) { t !== n && ( ce . selectedIndex = V ( t ) , ce . lastSelectedIndex = n , ce . updateInkBarStyles ( ) , oe ( ) , J ( t ) , e . $broadcast ( "$mdTabsChanged" ) , ce . tabs [ n ] && ce . tabs [ n ] . scope . deselect ( ) , ce . tabs [ t ] && ce . tabs [ t ] . scope . select ( ) ) } function k ( e ) { var t = o [ 0 ] . getElementsByTagName ( "md-tab" ) ; return Array . prototype . indexOf . call ( t , e [ 0 ] ) } function x ( ) { x . watcher || ( x . watcher = e . $watch ( function ( ) { d . nextTick ( function ( ) { x . watcher && o . prop ( "offsetParent" ) && ( x . watcher ( ) , x . watcher = null , O ( ) ) } , ! 1 ) } ) ) } function N ( e ) { switch ( e . keyCode ) { case i . KEY _CODE . LEFT _ARROW : e . preventDefault ( ) , Q ( - 1 , ! 0 ) ; break ; case i . KEY _CODE . RIGHT _ARROW : e . preventDefault ( ) , Q ( 1 , ! 0 ) ; break ; case i . KEY _CODE . SPACE : case i . KEY _CODE . ENTER : e . preventDefault ( ) , se || ( ce . selectedIndex = ce . focusIndex ) } ce . lastClick = ! 1 } function _ ( e ) { se || ( ce . focusIndex = ce . selectedIndex = e ) , ce . lastClick = ! 0 , d . nextTick ( function ( ) { ce . tabs [ e ] . element . triggerHandler ( "click" ) } , ! 1 ) } function H ( e ) { ce . shouldPaginate && ( e . preventDefault ( ) , ce . offsetLeft = ae ( ce . offsetLeft - e . wheelDelta ) ) } function S ( ) { var e , t , n = le . canvas . clientWidth , o = n + ce . offsetLeft ; for ( e = 0 ; e < le . tabs . length && ( t = le . tabs [ e ] , ! ( t . offsetLeft + t . offsetWidth > o ) ) ; e ++ ) ; ce . offsetLeft = ae ( t . offsetLeft ) } function D ( ) { var e , t ; for ( e = 0 ; e < le . tabs . length && ( t = le . tabs [ e ] , ! ( t . offsetLeft + t . offsetWidth >= ce . offsetLeft ) ) ; e ++ ) ; ce . offsetLeft = ae ( t . offsetLeft + t . offsetWidth - le . canvas . clientWidth ) } function O ( ) { ce . lastSelectedIndex = ce . selectedIndex , ce . o
} ( ) } ( window , window . angular ) , window . ngMaterial = { version : { full : "1.0.0-rc5-master-fd33d41" } } ;