This repository has been archived by the owner on Jan 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 88
/
coverflow.min.js
3 lines (3 loc) · 7.91 KB
/
coverflow.min.js
1
2
3
/*! CoverflowJS - v2.3.0rc3 - 2013-07-09
* Copyright (c) 2008-2013 Paul Baukus, Addy Osmani, Sebastian Sauer; Licensed MIT */
(function(e){for(var t=document.body||document.documentElement,i=t.style,n=0,s=["ms","moz","webkit","o"],r=s.length,a=0,o=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};r>a&&!window.requestAnimationFrame;a++)requestAnimationFrame=window[s[a]+"RequestAnimationFrame"],cancelAnimationFrame=window[s[a]+"CancelAnimationFrame"]||window[s[a]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||window.cancelAnimationFrame||(requestAnimationFrame=function(e){var t=(new Date).getTime(),i=Math.max(0,16-(t-n)),s=window.setTimeout(function(){e(t+i)},i);return n=t+i,s},cancelAnimationFrame=function(e){clearTimeout(e)}),e.support.transform="transform"in i?"transform":!1,e.support.transition="transition"in i?"transition":!1,e.support.transform&&e.support.transition||e.each(s,function(t,n){return"ms"!==n&&(n=o(n)),e.support.transform||n+"Transform"in i&&(e.support.transform=n+"Transform"),e.support.transition||n+"Transition"in i&&(e.support.transition=n+"Transition"),e.support.transform&&e.support.transition?!1:!0})})(jQuery),function(e){var t={easeInQuad:"cubic-bezier( .55,.085,.68,.53 )",easeInCubic:"cubic-bezier( .550, .055, .675, .190 )",easeInQuart:"cubic-bezier( .895, .03, .685, .22 )",easeInQuint:"cubic-bezier( .755, .05, .855, .06 )",easeInSine:"cubic-bezier( .47, 0, .745, .715 )",easeInExpo:"cubic-bezier( .95, .05, .795, .035 )",easeInCirc:"cubic-bezier( .6, .04, .98, .335 )",easeInBack:"cubic-bezier( .6, -.28, .735, .045 )",easeOutQuad:"cubic-bezier( .25,.46,.45,.94 )",easeOutCubic:"cubic-bezier( .215,.61,.355,1 )",easeOutQuart:"cubic-bezier( .165, .84, .44, 1 )",easeOutQuint:"cubic-bezier( .23, 1, .32, 1 )",easeOutSine:"cubic-bezier( .39, .575, .565, 1 )",easeOutExpo:"cubic-bezier( .19,1,.22,1 )",easeOutCirc:"cubic-bezier( .075, .82, .165, 1 )",easeOutBack:"cubic-bezier( .175, .885, .32, 1.275 )",easeInOutQuad:"cubic-bezier( .455, .03, .515, .955 )",easeInOutCubic:"cubic-bezier( .645, .045, .355, 1 )",easeInOutQuart:"cubic-bezier( .77, 0, .175, 1 )",easeInOutQuint:"cubic-bezier( .86, 0, .07, 1 )",easeInOutSine:"cubic-bezier( .445, .05, .55, .95 )",easeInOutExpo:"cubic-bezier( 1, 0, 0, 1 )",easeInOutCirc:"cubic-bezier( .785, .135, .15, .86 )",easeInOutBack:"cubic-bezier( .68, -.55, .265, 1.55 )"},i={transition:"transitionend",MozTransition:"transitionend",OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",msTransition:"MSTransitionEnd"},n=function(){if(null!=e.browser)return e.browser.msie&&10>~~e.browser.version;var t=/(msie) ([\w.]+)/.exec(navigator.userAgent.toLowerCase());return null!=t&&t[1]&&10>~~t[2]}();e.widget("ui.coverflow",{options:{items:"> *",stacking:.73,active:0,duration:400,easing:"easeOutQuint",trigger:{itemfocus:!0,itemclick:!0,mousewheel:!0,swipe:!0}},isTicking:!1,_create:function(){var t=this.options;this.elementOrigStyle=this.element.attr("style")||"",this.items=this.element.find(t.items).addClass("ui-coverflow-item").prop("tabIndex",0).each(function(){var t=e(this);t.data("coverflowbeforestyle",t.attr("style")||"")}),this.element.addClass("ui-coverflow").parent().addClass("ui-coverflow-wrapper ui-clearfix"),t.trigger.itemfocus&&this._on(this.items,{focus:this._select}),t.trigger.itemclick&&this._on(this.items,{click:this._select}),t.trigger.mousewheel&&this._on({mousewheel:this._onMouseWheel,DOMMouseScroll:this._onMouseWheel}),t.trigger.swipe&&this._on({swipeleft:this.next,swiperight:this.prev}),this.useJqueryAnimate=!(e.support.transition&&e.isFunction(window.requestAnimationFrame)),this.transformItems=!!e.support.transform||n,this.coverflowrafid=0},_init:function(){var t=this.options,i={};t.stacking=parseFloat(t.stacking),t.stacking=t.stacking>0&&1>t.stacking?t.stacking:.73,t.duration=~~t.duration,1>t.duration&&(t.duration=1),this.itemMargin=-Math.floor((1-t.stacking)/2*this.items.innerWidth()),this.currentIndex=this._isValidIndex(t.active,!0)?t.active:0,this.activeItem=this.items.css({marginLeft:this.itemMargin,marginRight:this.itemMargin}).removeClass("ui-state-active").eq(this.currentIndex).addClass("ui-state-active"),this.itemWidth=this.items.width(),this.itemHeight=this.items.height(),this.itemSize=this.items.outerWidth(!0),this.outerWidth=this.element.parent().outerWidth(!1),i.width=this.itemWidth*this.items.length,e.extend(i,this._getCenterPosition()),this.element.css(i),this._refresh(1,this._getFrom(),this.currentIndex),this.initialOffset=parseInt(this.activeItem.css("left"),10),this._trigger("select",null,this._ui())},_getCenterPosition:function(){var e;return e=-this.currentIndex*this.itemSize/2,e+=this.outerWidth/2-this.itemSize/2,e-=parseInt(this.element.css("paddingLeft"),10)||0,e=Math.round(e),{left:e}},_isValidIndex:function(e,t){return t=!!t,e=~~e,(this.currentIndex!==e||t)&&e>-1&&!!this.items.get(e)},_select:function(e){this.select(e.currentTarget)},next:function(){return this.select(this.currentIndex+1)},prev:function(){return this.select(this.currentIndex-1)},_getFrom:function(){return 1>=Math.abs(this.previous-this.currentIndex)?this.previousIndex:this.currentIndex+(this.previousIndex<this.currentIndex?-1:1)},select:function(t){var n,s=this.options,r=isNaN(parseInt(t,10))?this.items.index(t):parseInt(t,10);return this._isValidIndex(r)?!1===this._trigger("beforeselect",null,this._ui(this.items.eq(r),r))?!1:(this.isTicking&&(this.useJqueryAnimate?this.element.stop(!0,!1):(this.coverflowrafid&&cancelAnimationFrame(this.coverflowrafid),this.element.unbind(i[e.support.transition]))),this.isTicking=!0,this.previousIndex=this.currentIndex,this.options.active=this.currentIndex=r,n={coverflow:1},e.extend(n,this._getCenterPosition()),this.useJqueryAnimate?(this._animation(s,n),!0):(e.extend(n,{duration:s.duration,easing:s.easing}),this._transition(n),!0)):!1},_animation:function(t,i){var n=this,s=this._getFrom();e.fx.step.coverflow=function(e){n._refresh(e.now,s,n.currentIndex)},this.element.animate(i,{duration:t.duration,easing:t.easing}).promise().done(function(){n._onAnimationEnd.apply(n)})},_transition:function(n){var s=this,r=new Date,a=this._getFrom(),o=this.currentIndex,u=t[n.easing]||t.easeOutQuint,c=function(){var e=((new Date).getTime()-r.getTime())/n.duration;e>1?s.isTicking=!1:s._refresh(e,a,o),s.isTicking&&(s.coverflowrafid=requestAnimationFrame(c))};this.coverflowrafid=requestAnimationFrame(c),this.element.one(i[e.support.transition],function(){cancelAnimationFrame(s.coverflowrafid),s._refresh(1,a,o),s._onAnimationEnd(s)}).css(e.extend(this._getCenterPosition(),{transition:"left "+n.duration+"ms "+u}))},_onAnimationEnd:function(){this.isTicking=!1,this.activeItem=this.items.removeClass("ui-state-active").eq(this.currentIndex).addClass("ui-state-active"),this._trigger("select",null,this._ui())},_refresh:function(t,i,s){var r=this;this.element.parent().scrollTop(0),this.items.each(function(a){var o,u,c=a===s&&0>i-s||a-s>0?"left":"right",h=a===s?1-t:a===i?t:1,m={zIndex:r.items.length+("left"===c?s-a:a-s)},l=1+.3*(1-h);m.left=-a*(r.itemSize/2)+("right"===c?-r.itemSize/2:r.itemSize/2)*h,r.transformItems&&(o=[l,h*("right"===c?-.2:.2),0,l,0,0],n&&!e.support.transform?(this.filters["DXImageTransform.Microsoft.Matrix"]||(this.style.filter=(this.style.filter?"":" ")+'progid:DXImageTransform.Microsoft.Matrix(sizingMethod="auto expand")'),u=this.filters["DXImageTransform.Microsoft.Matrix"],u.M11=o[0],u.M12=o[2],u.M21=o[1],u.M22=o[3]):m.transform="matrix("+o.join(",")+")"),e(this).css(m)})},_ui:function(e,t){return{active:e||this.activeItem,index:null!=t?t:this.currentIndex}},_onMouseWheel:function(e){var t=e.originalEvent;return e.preventDefault(),t.wheelDelta>0||0>t.detail?(this.prev(),void 0):(this.next(),void 0)},_destroy:function(){this.element.attr("style",this.elementOrigStyle).removeClass("ui-coverflow").parent().removeClass("ui-coverflow-wrapper ui-clearfix"),this.items.removeClass("ui-coverflow-item ui-state-active").each(function(){var t=e(this);t.attr("style",t.data("coverflowbeforestyle")).data("coverflowbeforestyle",null)}),this._super()}})}(jQuery);