/
skimmer.min.js
1 lines (1 loc) · 1.27 KB
/
skimmer.min.js
1
"use strict";!function(e){"function"==typeof define&&define.amd?define(e):"undefined"!=typeof module&&module.exports?module.exports=e():window.skimmer=e.call(this)}(function(){var e=function(e){var t=e.rate,n=void 0===t?500:t,i=e.delay,o=void 0===i?2:i,r=e.multiple,s=void 0===r?!1:r,u=e.trigger,d=void 0===u?function(){}:u,a=e.update,l=void 0===a?function(){}:a,c=1e3,f=!1,m=!1,v={scroll:{previous:0,net:0},time:{previous:0,net:0,start:0}},p=!1,w=window.requestAnimationFrame||function(e){return setTimeout(e,1e3/60)},g=function(e){return+e.toFixed(2)},h=function(){v.scroll.net=0,v.time.net=0,v.time.start=(new Date).getTime(),v.time.previous=(new Date).getTime(),l({rate:0,distance:0,elapsed:0})},M=function(){if(p=!1,m){var e=window.pageYOffset,t=(new Date).getTime(),i=e-v.scroll.previous,r=t-v.time.previous;if(v.scroll.net+=i,v.time.net=t-v.time.start,v.time.previous=t,v.scroll.previous=window.pageYOffset,0>i||r>c/2)return h(),!1;var u=v.time.net/c,a=v.scroll.net/u;a>n&&u>o?(f||d({rate:Math.round(a),distance:Math.round(v.scroll.net),elapsed:g(u)}),s||(f=!0,window.removeEventListener("scroll",T,!1))):l({rate:Math.round(a),distance:Math.round(v.scroll.net),elapsed:g(u)})}else m=!0;return!0},T=function(){p||w(M),p=!0},x=function(){h(),window.addEventListener("scroll",T,!1)};x()};return e});