forked from pbakaus/scroller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
2 lines (2 loc) · 7.6 KB
/
index.js
1
2
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).Scroller=n()}(this,(function(){"use strict";const t="undefined"==typeof window?{}:window,n=1e3;let i={},e=1;const o=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame;function l(t){var n=null!=i[t];return n&&(i[t]=null),n}function r(t,l,r,a,h){var s=Date.now(),u=s,f=0,c=0,_=e++;if(_%20==0){var v={};for(var M in i)v[M]=!0;i=v}var d=function(e){var v=!0!==e,M=Date.now();if(!i[_]||l&&!l(_))return i[_]=null,void(r&&r(60-c/((M-s)/n),_,!1));if(v)for(var p=Math.round((M-u)/16.666666666666668)-1,m=0;m<Math.min(p,4);m++)d(!0),c++;a&&(f=(M-s)/a)>1&&(f=1);var g=h?h(f):f;!1!==t(g,M,v)&&1!==f||!v?v&&(u=M,o(d)):(i[_]=null,r&&r(60-c/((M-s)/n),_,1===f||null==a))};return i[_]=!0,o(d),_}function a(t){return Math.pow(t-1,3)+1}function h(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}const s={scrollingX:!0,scrollingY:!0,animating:!0,animationDuration:250,bouncing:!0,locking:!0,paging:!1,snapping:!1,zooming:!1,minZoom:.5,maxZoom:3,speedMultiplier:1,scrollingComplete:function(){},penetrationDeceleration:.03,penetrationAcceleration:.08,centering:!0};function u(t,n){this.t=t,this.options=Object.assign({},s,n)}return u.prototype={i:!1,o:!1,l:!1,h:!1,u:!1,_:!1,v:!1,M:0,p:0,m:0,g:0,T:0,D:0,S:100,L:100,Z:null,I:!1,P:null,A:null,H:null,V:1,C:0,O:0,R:0,W:0,j:0,k:0,B:0,X:0,Y:0,G:null,q:null,F:null,J:null,K:null,N:null,U:null,$:null,tt:null,nt:null,setDimensions:function(t,n,i,e){var o=this;t===+t&&(o.m=t),n===+n&&(o.g=n),i===+i&&(o.T=i),e===+e&&(o.D=e),o.it(),o.scrollTo(o.C,o.O,!0)},setPosition:function(t,n){this.M=t||0,this.p=n||0},setSnapSize:function(t,n){this.S=t,this.L=n},activatePullToRefresh:function(t,n,i,e){var o=this;o.Z=t,o.P=n,o.A=i,o.H=e},triggerPullToRefresh:function(){this.et(this.C,-this.Z,this.V,!0),this.H&&this.H()},finishPullToRefresh:function(){var t=this;t.I=!1,t.A&&t.A(),t.scrollTo(t.C,t.O,!0)},getValues:function(){var t=this;return{left:t.C-(t.options.centering?t.X:0),top:t.O-(t.options.centering?t.Y:0),zoom:t.V}},getScrollMax:function(){return{left:this.R,top:this.W}},zoomTo:function(t,n,i,e,o){var r=this;if(!r.options.zooming)throw new Error("Zooming is not enabled!");o&&(r.ot=o),r._&&(l(r._),r._=!1);var a=r.V;null==i&&(i=r.m/2),null==e&&(e=r.g/2),t=Math.max(Math.min(t,r.options.maxZoom),r.options.minZoom),r.it(t);var h=(i+r.C)*t/a-i,s=(e+r.O)*t/a-e;h>r.R?h=r.R:h<0&&(h=0),s>r.W?s=r.W:s<0&&(s=0),r.et(h,s,t,n)},zoomBy:function(t,n,i,e,o){this.zoomTo(this.V*t,n,i,e,o)},scrollTo:function(t,n,i,e){var o=this;if(o._&&(l(o._),o._=!1),null!=e&&e!==o.V){if(!o.options.zooming)throw new Error("Zooming is not enabled!");t*=e,n*=e,o.it(e)}else e=o.V;o.options.scrollingX?o.options.paging?t=Math.round(t/o.m)*o.m:o.options.snapping&&(t=Math.round(t/o.S)*o.S):t=o.C,o.options.scrollingY?o.options.paging?n=Math.round(n/o.g)*o.g:o.options.snapping&&(n=Math.round(n/o.L)*o.L):n=o.O,t=Math.max(Math.min(o.R,t),0),n=Math.max(Math.min(o.W,n),0),t===o.C&&n===o.O&&(i=!1),o.o||o.et(t,n,e,i)},scrollToViewportCenter(t,n,i,e){e=null==e?this.V:e,this.zoomTo(e,!1),this.scrollTo(t*e-.5*this.m,n*e-.5*this.g,i)},scrollBy:function(t,n,i){var e=this,o=e.v?e.j:e.C,l=e.v?e.k:e.O;e.scrollTo(o+(t||0),l+(n||0),i)},containsPoint:(t,n)=>!(t<0)&&(!(t>self.T)&&(!(n<0)&&!(n>self.D))),doMouseZoom:function(t,n,i,e){var o=this,l=t>0?.97:1.03;return o.zoomTo(o.V*l,!1,i-o.M,e-o.p)},doTouchStart:function(t,n){if(null==t.length)throw new Error("Invalid touch list: "+t);if(n instanceof Date&&(n=n.valueOf()),"number"!=typeof n)throw new Error("Invalid timestamp value: "+n);var i,e,o=this;o.lt=!0,o._&&(l(o._),o._=!1,o.lt=!0),o.v&&(l(o.v),o.v=!1,o.lt=!0);var r=1===t.length;r?(i=t[0].pageX,e=t[0].pageY):(i=Math.abs(t[0].pageX+t[1].pageX)/2,e=Math.abs(t[0].pageY+t[1].pageY)/2),o.rt=i,o.ht=e,o.st=o.V,o.G=i,o.q=e,o.F=n,o.ut=1,o.ft=!r&&o.options.scrollingX,o.ct=!r&&o.options.scrollingY,o.o=!0,o.l=!1,o.u=!r,o.i=r,o.J=[]},doTouchMove:function(t,n,i){if(null==t.length)throw new Error("Invalid touch list: "+t);if(n instanceof Date&&(n=n.valueOf()),"number"!=typeof n)throw new Error("Invalid timestamp value: "+n);var e=this;if(e.o){var o,l;2===t.length?(o=Math.abs(t[0].pageX+t[1].pageX)/2,l=Math.abs(t[0].pageY+t[1].pageY)/2):(o=t[0].pageX,l=t[0].pageY);var r=e.J;if(e.u){var a=o-e.G,h=l-e.q,s=e.C,u=e.O,f=e.V;if(null!=i&&e.options.zooming){var c=f;if(f=f/e.ut*i,c!==(f=Math.max(Math.min(f,e.options.maxZoom),e.options.minZoom))){var _=o-e.M,v=l-e.p;s=(_+s)*f/c-_,u=(v+u)*f/c-v,e.it(f)}}if(e.ft){s-=a*this.options.speedMultiplier;var M=e.R;(s>M||s<0)&&(e.options.bouncing?s+=a/2*this.options.speedMultiplier:s=s>M?M:0)}if(e.ct){u-=h*this.options.speedMultiplier;var d=e.W;(u>d||u<0)&&(e.options.bouncing?(u+=h/2*this.options.speedMultiplier,e.ft||null==e.Z||(!e.I&&u<=-e.Z?(e.I=!0,e.P&&e.P()):e.I&&u>-e.Z&&(e.I=!1,e.A&&e.A()))):u=u>d?d:0)}r.length>60&&r.splice(0,30),r.push(s,u,n),e.et(s,u,f)}else{var p=e.options.locking?3:0,m=Math.abs(o-e.rt),g=Math.abs(l-e.ht);e.ft=e.options.scrollingX&&m>=p,e.ct=e.options.scrollingY&&g>=p,r.push(e.C,e.O,n),e.u=(e.ft||e.ct)&&(m>=5||g>=5),e.u&&(e.lt=!1)}e.G=o,e.q=l,e.F=n,e.ut=i}},doTouchEnd:function(t){if(t instanceof Date&&(t=t.valueOf()),"number"!=typeof t)throw new Error("Invalid timestamp value: "+t);var n=this;if(n.o){if(n.o=!1,n.u)if(n.u=!1,n.i&&n.options.animating&&t-n.F<=100){for(var i=n.J,e=i.length-1,o=e,l=e;l>0&&i[l]>n.F-100;l-=3)o=l;if(o!==e){var r=i[e]-i[o],a=n.C-i[o-2],h=n.O-i[o-1];n.tt=a/r*(1e3/60),n.nt=h/r*(1e3/60);var s=n.options.paging||n.options.snapping?4:1;Math.abs(n.tt)>s||Math.abs(n.nt)>s?n.I||n._t(t):n.options.scrollingComplete()}else n.options.scrollingComplete()}else t-n.F>100&&n.options.scrollingComplete();n._||(n.I&&n.H?(n.et(n.C,-n.Z,n.V,!0),n.H&&n.H()):((n.lt||n.u)&&n.options.scrollingComplete(),n.scrollTo(n.C,n.O,!0,n.V),n.I&&(n.I=!1,n.A&&n.A()))),n.J.length=0}},et:function(t,n,i,e){var o=this,s=o.v;if(s&&(l(s),o.v=!1),e&&o.options.animating){o.j=t,o.k=n,o.B=i;var u=o.C,f=o.O,c=o.V,_=t-u,v=n-f,M=i-c;o.v=r((function(t,n,i){i&&(o.C=u+_*t,o.O=f+v*t,o.V=c+M*t,o.t&&o.t(o.C-o.X,o.O-o.Y,o.V))}),(function(t){return o.v===t}),(function(t,n,i){n===o.v&&(o.v=!1),(o.l||i)&&o.options.scrollingComplete(),o.options.zooming&&(o.it(),o.ot&&(o.ot(),o.ot=null))}),o.options.animationDuration,s?a:h)}else o.j=o.C=t,o.k=o.O=n,o.B=o.V=i,o.t&&o.t(t-o.X,n-o.Y,i),o.options.zooming&&(o.it(),o.ot&&(o.ot(),o.ot=null))},it:function(t){var n=this;null==t&&(t=n.V),n.R=Math.max(n.T*t-n.m,0),n.W=Math.max(n.D*t-n.g,0);var i=0,e=0;n.options.centering&&(i=n.m>n.T*n.V?(n.m-n.T*n.V)/2:0,e=n.g>n.D*n.V?(n.g-n.D*n.V)/2:0),n.X=i,n.Y=e},_t:function(t){var n=this;if(n.options.paging){var i=Math.max(Math.min(n.C,n.R),0),e=Math.max(Math.min(n.O,n.W),0),o=n.m,l=n.g;n.K=Math.floor(i/o)*o,n.N=Math.floor(e/l)*l,n.U=Math.ceil(i/o)*o,n.$=Math.ceil(e/l)*l}else n.K=0,n.N=0,n.U=n.R,n.$=n.W;var a=n.options.snapping?4:.001;n._=r((function(t,i,e){n.vt(e)}),(function(){var t=Math.abs(n.tt)>=a||Math.abs(n.nt)>=a;return t||(n.l=!0),t}),(function(t,i,e){n._=!1,n.l&&n.options.scrollingComplete(),n.scrollTo(n.C,n.O,n.options.snapping)}))},vt:function(t){var n=this,i=n.C+n.tt,e=n.O+n.nt;if(!n.options.bouncing){var o=Math.max(Math.min(n.U,i),n.K);o!==i&&(i=o,n.tt=0);var l=Math.max(Math.min(n.$,e),n.N);l!==e&&(e=l,n.nt=0)}if(t?n.et(i,e,n.V):(n.C=i,n.O=e),!n.options.paging){n.tt*=.95,n.nt*=.95}if(n.options.bouncing){var r=0,a=0,h=n.options.penetrationDeceleration,s=n.options.penetrationAcceleration;i<n.K?r=n.K-i:i>n.U&&(r=n.U-i),e<n.N?a=n.N-e:e>n.$&&(a=n.$-e),0!==r&&(r*n.tt<=0?n.tt+=r*h:n.tt=r*s),0!==a&&(a*n.nt<=0?n.nt+=a*h:n.nt=a*s)}}},u}));
//# sourceMappingURL=index.js.map