forked from tholman/elevator.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
elevator.min.js
1 lines (1 loc) · 1.68 KB
/
elevator.min.js
1
var Elevator=function(e){"use strict";var t,n,l,o,a=null,i=null,r=null,u=!1,d=null,c=null,s=0,f=null,p=null,v=!1,m=this;function A(e){d||(d=e);var t,a,u,p,v=e-d,m=(t=v,a=c,u=s-c,p=r,(t/=p/2)<1?u/2*t*t+a:-u/2*(--t*(t-2)-1)+a);f.scrollTop=m,v<r?i=requestAnimationFrame(A):(b(),n&&(n.pause(),n.currentTime=0),l&&l.play(),o&&o())}function b(){d=null,c=null,v=!1}function $(){f&&(s=function e(t){for(var n=0;t&&t!==f;)n+=t.offsetTop||0,t=t.offsetParent;return p&&(n-=p),n}(f))}function E(){v&&(cancelAnimationFrame(i),b(),n&&(n.pause(),n.currentTime=0),$(),f.scrollTop=s)}this.elevate=function(){!v&&(v=!0,c=document.documentElement.scrollTop||a.scrollTop,$(),u||(r=1.5*Math.abs(s-c)),requestAnimationFrame(A),n&&n.play(),t&&t())},!function e(i){if(window.requestAnimationFrame&&window.Audio&&window.addEventListener){if(a=document.body,(i=function e(t,n){for(var l in n)void 0===t[l]&&"function"!=typeof l&&(t[l]=n[l]);return t}(i,{duration:void 0,mainAudio:!1,endAudio:!1,preloadAudio:!0,loopAudio:!0,startCallback:null,endCallback:null})).element){var d;(d=i.element).addEventListener?d.addEventListener("click",m.elevate,!1):d.attachEvent("onclick",function(){$(),document.documentElement.scrollTop=s,document.body.scrollTop=s,window.scroll(0,s)})}i.duration&&(u=!0,r=i.duration),i.targetElement&&(f=i.targetElement),i.verticalPadding&&(p=i.verticalPadding),f.addEventListener("blur",E,!1),i.mainAudio&&((n=new Audio(i.mainAudio)).setAttribute("preload",i.preloadAudio),n.setAttribute("loop",i.loopAudio)),i.endAudio&&(l=new Audio(i.endAudio)).setAttribute("preload","true"),i.endCallback&&(o=i.endCallback),i.startCallback&&(t=i.startCallback)}}(e)};"undefined"!=typeof module&&module.exports&&(module.exports=Elevator);