-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathsp-slidemenu-min.js
1 lines (1 loc) · 12.4 KB
/
sp-slidemenu-min.js
1
!function(a,b,c){"use strict";function d(a){return this instanceof d?this.init(a):new d(a)}function e(a){return g(a,function(a){return v.style[a]!==c})}function f(a){return a.charAt(0).toUpperCase()+a.substr(1)}function g(a,b){var c,d;for(c=0,d=a.length;d>c;c++)if(b(a[c],c))return!0;return!1}function h(a,b,d){var e=a.style;return h.cache||(h.cache={}),h.cache[b]!==c?(e[h.cache[b]]=d,void 0):e[b]!==c?(h.cache[b]=b,e[b]=d,void 0):(g(w,function(a){var g=f(a)+f(b);return e[g]!==c?(e[g]=d,!0):void 0}),void 0)}function i(a,b){var c;for(c in b)b.hasOwnProperty(c)&&h(a,c,b[c])}function j(a,b){var d;return a[b]!==c?a[b]:(g(w,function(e){var g=f(e)+f(b);return a[g]!==c?(d=a[g],!0):void 0}),d)}function k(a){var b;return k.cache||(k.cache={}),k.cache[a]!==c?k.cache[a]:v.style[a]!==c?(k.cache[a]=a,a):(g(w,function(d){var e=f(d)+f(a);return v.style[e]!==c?(b="-"+d+"-"+a,!0):void 0}),k.cache[a]=b,b)}function l(a,b){var c,d,e;return c=Function.prototype.bind,d=Array.prototype.slice,a.bind===c&&c?c.apply(a,d.call(arguments,1)):(e=d.call(arguments,2),function(){return a.apply(b,e.concat(d.call(arguments)))})}function m(a){a.preventDefault(),a.stopPropagation()}function n(a){var b,c,d,e;b={},d={position:"absolute",visibility:"hidden",display:"block"};for(c in d)b[c]=a.style[c],a.style[c]=d[c];e={width:a.offsetWidth,height:a.offsetHeight};for(c in d)a.style[c]=b[c];return e}function o(a,b){return a.changedTouches?a.changedTouches[0][b]:a[b]}function p(a,b,c,d){d=d||!1,x.touch?b.addEventListener(z[a].touch,c,d):b.addEventListener(z[a].mouse,c,d)}function q(a,b,c,d){d=d||!1,x.touch?b.removeEventListener(z[a].touch,c,d):b.removeEventListener(z[a].mouse,c,d)}function r(a,b){return b=" "+b+" ",1===a.nodeType&&(" "+a.className+" ").replace(E," ").indexOf(b)>=0?!0:!1}function s(a,b,c,d){var e,f,g,h,i;return e=+new Date,f=parseInt(a.style[b],10),c=parseInt(c,10),g=parseInt(d,10),h=function(a,b){return-(a/=b)*(a-2)},i=setInterval(function(){var d,j,k;d=new Date-e,d>g?(clearInterval(i),k=c):(j=h(d,g),k=j*(c-f)+f),a.style[b]=k+"px"},10)}function t(){return a.innerHeight?a.innerHeight:b.documentElement&&0!==b.documentElement.clientHeight?b.documentElement.clientHeight:b.body?b.body.clientHeight:0}function u(a,b,c){var d,e;return function(){var f=this,g=arguments,h=function(){d=null,c||(e=a.apply(f,g))},i=c&&!d;return clearTimeout(d),d=setTimeout(h,b),i&&(e=a.apply(f,g)),e}}var v,w,x,y,z,A,B,C,D,E,F,G;v=b.createElement("div"),w=["webkit","moz","o","ms"],x=d.support={},x.transform3d=e(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]),x.transform=e(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"]),x.transition=e(["transitionProperty","WebkitTransitionProperty","MozTransitionProperty","OTransitionProperty","msTransitionProperty"]),x.addEventListener="addEventListener"in a,x.msPointer=a.navigator.msPointerEnabled,x.cssAnimation=(x.transform3d||x.transform)&&x.transition,x.touch="ontouchend"in a,z={start:{touch:"touchstart",mouse:"mousedown"},move:{touch:"touchmove",mouse:"mousemove"},end:{touch:"touchend",mouse:"mouseup"}},G={main:"#main",button:".menu-button",slidemenu:".slidemenu",slidemenu_header:".slidemenu-header",slidemenu_body:".slidemenu-body",slidemenu_content:".slidemenu-content",direction:"left"},y=!1,x.addEventListener&&(b.addEventListener("gesturestart",function(){y=!0}),b.addEventListener("gestureend",function(){y=!1})),A={slider:200,scrollOverBack:400},B={close:0,open:1,progress:2},C=10,D=50,E=/[\t\r\n\f]/g,F="menu-item",d.prototype.init=function(b){var d=this;for(var e in G)b.hasOwnProperty(e)||(b[e]=G[e]);if(d.setElement(b),!(d.main&&d.slidemenu&&d.button&&d.slidemenuBody&&d.slidemenuContent))throw new Error("Element not found. Please set correctly.");return d.disableCssAnimation=b.disableCssAnimation===c?!1:b.disableCssAnimation,d.disable3d=b.disable3d===c?!1:b.disable3d,d.direction="left","right"===b.direction&&(d.direction="right"),d.useCssAnimation=x.cssAnimation,d.disableCssAnimation===!0&&(d.useCssAnimation=!1),d.use3d=x.transform3d,d.disable3d===!0&&(d.use3d=!1),d.slideWidth=n(d.slidemenu).width,d.main.SpSlidemenuStatus=B.close,d.htmlOverflowX="",d.bodyOverflowX="",d.scrollCurrentY=0,d.scrollAnimationTimer=!1,d.scrollOverTimer=!1,d.setDefaultStyle(),d.bindMethods(),p("start",d.button,d.buttonTouchStart,!1),p("move",d.button,m,!1),p("end",d.button,d.buttonTouchEnd,!1),p("start",d.slidemenuContent,d.scrollTouchStart,!1),p("move",d.slidemenuContent,d.scrollTouchMove,!1),p("end",d.slidemenuContent,d.scrollTouchEnd,!1),d.slidemenuContent.addEventListener("click",d.itemClick,!1),a.addEventListener("resize",u(d.setHeight,100),!1),d},d.prototype.bindMethods=function(){var a,b;a=this,b=["setHeight","slideOpen","slideOpenEnd","slideClose","slideCloseEnd","buttonTouchStart","buttonTouchEnd","mainTouchStart","scrollTouchStart","scrollTouchMove","scrollTouchEnd","scrollInertiaMove","scrollOverBack","scrollOver","itemClick"],b.forEach(function(b){a[b]=l(a[b],a)})},d.prototype.setElement=function(a){var c=this;for(var d in a)if("string"!=typeof a[d])return!1;c.main=b.querySelector(a.main),c.slidemenu=b.querySelector(a.slidemenu),c.button=b.querySelector(a.button),c.slidemenuBody=b.querySelector(a.slidemenu_body),c.slidemenuContent=b.querySelector(a.slidemenu_content),c.slidemenuHeader=b.querySelector(a.slidemenu_header)},d.prototype.setDefaultStyle=function(){var a=this;x.msPointer&&(a.slidemenuContent.style.msTouchAction="none"),a.setHeight(),a.useCssAnimation?(i(a.main,{transitionProperty:k("transform"),transitionTimingFunction:"ease-in-out",transitionDuration:A.slider+"ms",transitionDelay:"0ms",transform:a.getTranslateX(0)}),i(a.slidemenu,{transitionProperty:"visibility",transitionTimingFunction:"linear",transitionDuration:"0ms",transitionDelay:A.slider+"ms"}),i(a.slidemenuContent,{transitionProperty:k("transform"),transitionTimingFunction:"ease-in-out",transitionDuration:"0ms",transitionDelay:"0ms",transform:a.getTranslateY(0)})):(i(a.main,{position:"relative",left:"0px"}),i(a.slidemenuContent,{top:"0px"}))},d.prototype.setHeight=function(){var a,b;a=this,b=t(),i(a.main,{minHeight:b+"px"}),i(a.slidemenu,{height:b+"px"})},d.prototype.buttonTouchStart=function(a){var b=this;switch(a.preventDefault(),a.stopPropagation(),b.main.SpSlidemenuStatus){case B.progress:break;case B.open:case B.close:b.buttonStartPageX=o(a,"pageX"),b.buttonStartPageY=o(a,"pageY")}},d.prototype.buttonTouchEnd=function(a){var b=this;if(a.preventDefault(),a.stopPropagation(),b.shouldTrigerNext(a))switch(b.main.SpSlidemenuStatus){case B.progress:break;case B.open:b.slideClose(a);break;case B.close:b.slideOpen(a)}},d.prototype.mainTouchStart=function(a){var b=this;a.preventDefault(),a.stopPropagation(),b.slideClose(a)},d.prototype.shouldTrigerNext=function(a){var b=this,c=o(a,"pageX"),d=o(a,"pageY"),e=Math.abs(c-b.buttonStartPageX),f=Math.abs(d-b.buttonStartPageY);return 20>e&&20>f},d.prototype.slideOpen=function(){var a,c=this;a="left"===c.direction?c.slideWidth:-c.slideWidth,c.main.SpSlidemenuStatus=B.progress,p("move",b,m,!1),c.htmlOverflowX=b.documentElement.style.overflowX,c.bodyOverflowX=b.body.style.overflowX,b.documentElement.style.overflowX=b.body.style.overflowX="hidden",c.useCssAnimation?(i(c.main,{transform:c.getTranslateX(a)}),i(c.slidemenu,{transitionProperty:"z-index",visibility:"visible",zIndex:"1"})):(s(c.main,c.direction,a,A.slider),i(c.slidemenu,{visibility:"visible"})),setTimeout(c.slideOpenEnd,A.slider+D)},d.prototype.slideOpenEnd=function(){var a=this;a.main.SpSlidemenuStatus=B.open,a.useCssAnimation||i(a.slidemenu,{zIndex:"1"}),p("start",a.main,a.mainTouchStart,!1)},d.prototype.slideClose=function(){var a=this;a.main.SpSlidemenuStatus=B.progress,q("start",a.main,a.mainTouchStart,!1),a.useCssAnimation?(i(a.slidemenu,{transitionProperty:"visibility",visibility:"hidden",zIndex:"-1"}),setTimeout(function(){i(a.main,{transform:a.getTranslateX(0)})},50)):(s(a.main,a.direction,0,A.slider),i(a.slidemenu,{zIndex:"-1"})),setTimeout(a.slideCloseEnd,A.slider+D)},d.prototype.slideCloseEnd=function(){var a=this;a.main.SpSlidemenuStatus=B.close,b.documentElement.style.overflowX=a.htmlOverflowX,b.body.style.overflowX=a.bodyOverflowX,a.useCssAnimation||i(a.slidemenu,{visibility:"hidden"}),q("move",b,m,!1)},d.prototype.scrollTouchStart=function(a){var b=this;y||(b.scrollOverTimer!==!1&&clearTimeout(b.scrollOverTimer),b.scrollCurrentY=b.getScrollCurrentY(),b.useCssAnimation?i(b.slidemenuContent,{transitionTimingFunction:"ease-in-out",transitionDuration:"0ms",transform:b.getTranslateY(b.scrollCurrentY)}):(b.stopScrollAnimate(),i(b.slidemenuContent,{top:b.scrollCurrentY+"px"})),b.scrollOverTimer=!1,b.scrollAnimationTimer=!1,b.scrollTouchStarted=!0,b.scrollMoveReady=!1,b.scrollMoveEventCnt=0,b.scrollMaxY=b.calcMaxY(),b.scrollStartPageX=o(a,"pageX"),b.scrollStartPageY=o(a,"pageY"),b.scrollBasePageY=b.scrollStartPageY,b.scrollTimeForVelocity=a.timeStamp,b.scrollPageYForVelocity=b.scrollStartPageY,b.slidemenuContent.removeEventListener("click",m,!0))},d.prototype.scrollTouchMove=function(a){var b,c,d,e,f,g,h;b=this,b.scrollTouchStarted&&!y&&(c=o(a,"pageX"),d=o(a,"pageY"),b.scrollMoveReady?(a.preventDefault(),a.stopPropagation(),e=d-b.scrollBasePageY,f=b.scrollCurrentY+e,(f>0||f<b.scrollMaxY)&&(f=Math.round(b.scrollCurrentY+e/3)),b.scrollSetY(f),0===b.scrollMoveEventCnt%C&&(b.scrollPageYForVelocity=d,b.scrollTimeForVelocity=a.timeStamp),b.scrollMoveEventCnt++):(g=Math.abs(c-b.scrollStartPageX),h=Math.abs(d-b.scrollStartPageY),(g>5||h>5)&&(b.scrollMoveReady=!0,b.slidemenuContent.addEventListener("click",m,!0))),b.scrollBasePageY=d)},d.prototype.scrollTouchEnd=function(a){var b,c,d,e;if(b=this,b.scrollTouchStarted){if(b.scrollTouchStarted=!1,b.scrollMaxY=b.calcMaxY(),b.scrollCurrentY>0||b.scrollCurrentY<b.scrollMaxY)return b.scrollOverBack(),void 0;d=o(a,"pageY")-b.scrollPageYForVelocity,e=a.timeStamp-b.scrollTimeForVelocity,c=d/e,Math.abs(c)>=.01&&b.scrollInertia(c)}},d.prototype.scrollInertia=function(a){var b,c,d,e,f,g,h,i,j;b=this,a>0?(c=!0,d=0):(c=!1,d=b.scrollMaxY),e=Math.abs(b.scrollCurrentY-d),a=Math.abs(750*a),a>1e3&&(a=1e3),f=a/500,g=a*f-500*Math.pow(f,2)/2,e>=g?(h=c?b.scrollCurrentY+g:b.scrollCurrentY-g,i=1e3*f,b.scrollInertiaMove(h,i,!1)):(h=d,j=Math.sqrt(1e3*e+Math.pow(a,2)),i=1e3*((j-a)/500),b.scrollInertiaMove(h,i,!0,j,c))},d.prototype.scrollInertiaMove=function(a,b,c,d,e){var f,g,h=this;h.scrollCurrentY=a,h.useCssAnimation?i(h.slidemenuContent,{transitionTimingFunction:"cubic-bezier(0.33, 0.66, 0.66, 1)",transitionDuration:b+"ms",transform:h.getTranslateY(a)}):h.scrollAnimate(a,b),c&&(f=d/7500,g=d*f-7500*Math.pow(f,2)/2,a=e?h.scrollCurrentY+g:h.scrollCurrentY-g,b=1e3*f,h.scrollOver(a,b))},d.prototype.scrollOver=function(a,b){var c;c=this,c.scrollCurrentY=a,c.useCssAnimation?i(c.slidemenuContent,{transitionTimingFunction:"cubic-bezier(0.33, 0.66, 0.66, 1)",transitionDuration:b+"ms",transform:c.getTranslateY(a)}):c.scrollAnimate(a,b),c.scrollOverTimer=setTimeout(c.scrollOverBack,b)},d.prototype.scrollOverBack=function(){var a,b;a=this,b=a.scrollCurrentY>=0?0:a.scrollMaxY,a.scrollCurrentY=b,a.useCssAnimation?i(a.slidemenuContent,{transitionTimingFunction:"ease-out",transitionDuration:A.scrollOverBack+"ms",transform:a.getTranslateY(b)}):a.scrollAnimate(b,A.scrollOverBack)},d.prototype.scrollSetY=function(a){var b=this;b.scrollCurrentY=a,b.useCssAnimation?i(b.slidemenuContent,{transitionTimingFunction:"ease-in-out",transitionDuration:"0ms",transform:b.getTranslateY(a)}):b.slidemenuContent.style.top=a+"px"},d.prototype.scrollAnimate=function(a,b){var c=this;c.stopScrollAnimate(),c.scrollAnimationTimer=s(c.slidemenuContent,"top",a,b)},d.prototype.stopScrollAnimate=function(){var a=this;a.scrollAnimationTimer!==!1&&clearInterval(a.scrollAnimationTimer)},d.prototype.itemClick=function(a){var b=a.target||a.srcElement;r(b,F)&&this.slideClose()},d.prototype.calcMaxY=function(){var a,b,c,d;return a=this,b=a.slidemenuContent.offsetHeight,c=a.slidemenuBody.offsetHeight,d=0,a.slidemenuHeader&&(d=a.slidemenuHeader.offsetHeight),b>c?-(b-c+d):0},d.prototype.getScrollCurrentY=function(){var b=0;if(this.useCssAnimation)j(a.getComputedStyle(this.slidemenuContent,""),"transform").split(",").forEach(function(a){var c=parseInt(a,10);isNaN(c)||0===c||1===c||(b=c)});else{var c=parseInt(j(a.getComputedStyle(this.slidemenuContent,""),"top"),10);isNaN(c)||0===c||1===c||(b=c)}return b},d.prototype.getTranslateX=function(a){var b=this;return b.use3d?"translate3d("+a+"px, 0px, 0px)":"translate("+a+"px, 0px)"},d.prototype.getTranslateY=function(a){var b=this;return b.use3d?"translate3d(0px, "+a+"px, 0px)":"translate(0px, "+a+"px)"},a.SpSlidemenu=d}(window,window.document);