UNPKG

gsap-trial

Version:

*** IMPORTANT *** This package is deprecated in favor of the standard 'gsap' package which now includes all bonus plugins. *** DO NOT DEPLOY THESE FILES *** They only work locally or on domains like codepen.io, codesandbox.io, stackblitz.com and jsfiddle.

11 lines (9 loc) 8.51 kB
/*! * Observer 3.13.0 * https://gsap.com * * @license Copyright 2025, GreenSock. All rights reserved. * Subject to the terms at https://gsap.com/standard-license or for Club GSAP members, the agreement issued with that membership. * @author: Jack Doyle, jack@greensock.com */ let e,t,r,s,n,o,l,i,a,c,u,d,g,h,p=()=>e||"undefined"!=typeof window&&(e=window.gsap)&&e.registerPlugin&&e,v=1,f=[],x=[],m=[],y=Date.now,b=(e,t)=>t,w=(e,t)=>~m.indexOf(e)&&m[m.indexOf(e)+1][t],_=e=>!!~u.indexOf(e),M=(e,t,r,s,n)=>e.addEventListener(t,r,{passive:!1!==s,capture:!!n}),Y=(e,t,r,s)=>e.removeEventListener(t,r,!!s),D=()=>d&&d.isPressed||x.cache++,X=(e,t)=>{let r=n=>{if(n||0===n){v&&(s.history.scrollRestoration="manual");let t=d&&d.isPressed;n=r.v=Math.round(n)||(d&&d.iOS?1:0),e(n),r.cacheID=x.cache,t&&b("ss",n)}else(t||x.cache!==r.cacheID||b("ref"))&&(r.cacheID=x.cache,r.v=e());return r.v+r.offset};return r.offset=0,e&&r},T={s:"scrollLeft",p:"left",p2:"Left",os:"right",os2:"Right",d:"width",d2:"Width",a:"x",sc:X((function(e){return arguments.length?s.scrollTo(e,E.sc()):s.pageXOffset||n.scrollLeft||o.scrollLeft||l.scrollLeft||0}))},E={s:"scrollTop",p:"top",p2:"Top",os:"bottom",os2:"Bottom",d:"height",d2:"Height",a:"y",op:T,sc:X((function(e){return arguments.length?s.scrollTo(T.sc(),e):s.pageYOffset||n.scrollTop||o.scrollTop||l.scrollTop||0}))},P=(t,r)=>(r&&r._ctx&&r._ctx.selector||e.utils.toArray)(t)[0]||("string"==typeof t&&!1!==e.config().nullTargetWarn?console.warn("Element not found:",t):null),O=(t,{s:r,sc:s})=>{_(t)&&(t=n.scrollingElement||o);let l=x.indexOf(t),i=s===E.sc?1:2;!~l&&(l=x.push(t)-1),x[l+i]||M(t,"scroll",D);let a=x[l+i],c=a||(x[l+i]=X(w(t,r),!0)||(_(t)?s:X((function(e){return arguments.length?t[r]=e:t[r]}))));return c.target=t,a||(c.smooth="smooth"===e.getProperty(t,"scrollBehavior")),c},k=(e,t,r)=>{let s=e,n=e,o=y(),l=o,i=t||50,a=Math.max(500,3*i),c=(e,t)=>{let a=y();t||a-o>i?(n=s,s=e,l=o,o=a):r?s+=e:s=n+(e-n)/(a-l)*(o-l)};return{update:c,reset:()=>{n=s=r?0:s,l=o=0},getVelocity:e=>{let t=l,i=n,u=y();return(e||0===e)&&e!==s&&c(e),o===l||u-l>a?0:(s+(r?i:-i))/((r?u:o)-t)*1e3}}},C=(e,t)=>(t&&!e._gsapAllow&&e.preventDefault(),e.changedTouches?e.changedTouches[0]:e),L=e=>{let t=Math.max(...e),r=Math.min(...e);return Math.abs(t)>=Math.abs(r)?t:r},S=()=>{c=e.core.globals().ScrollTrigger,c&&c.core&&(()=>{let e=c.core,t=e.bridge||{},r=e._scrollers,s=e._proxies;r.push(...x),s.push(...m),x=r,m=s,b=(e,r)=>t[e](r)})()},A=c=>(e=c||p(),!t&&e&&"undefined"!=typeof document&&document.body&&(s=window,n=document,o=n.documentElement,l=n.body,u=[s,n,o,l],r=e.utils.clamp,h=e.core.context||function(){},a="onpointerenter"in l?"pointer":"mouse",i=G.isTouch=s.matchMedia&&s.matchMedia("(hover: none), (pointer: coarse)").matches?1:"ontouchstart"in s||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0?2:0,g=G.eventTypes=("ontouchstart"in o?"touchstart,touchmove,touchcancel,touchend":"onpointerdown"in o?"pointerdown,pointermove,pointercancel,pointerup":"mousedown,mousemove,mouseup,mouseup").split(","),setTimeout(()=>v=0,500),S(),t=1),t);T.op=E,x.cache=0;class G{constructor(e){this.init(e)}init(r){t||A(e)||console.warn("Please gsap.registerPlugin(Observer)"),c||S();let{tolerance:u,dragMinimum:p,type:v,target:x,lineHeight:m,debounce:b,preventDefault:w,onStop:X,onStopDelay:G,ignore:H,wheelSpeed:R,event:I,onDragStart:B,onDragEnd:F,onDrag:N,onPress:V,onRelease:W,onRight:q,onLeft:z,onUp:U,onDown:j,onChangeX:J,onChangeY:K,onChange:Q,onToggleX:Z,onToggleY:$,onHover:ee,onHoverEnd:te,onMove:re,ignoreCheck:se,isNormalizer:ne,onGestureStart:oe,onGestureEnd:le,onWheel:ie,onEnable:ae,onDisable:ce,onClick:ue,scrollSpeed:de,capture:ge,allowClicks:he,lockAxis:pe,onLockAxis:ve}=r;this.target=x=P(x)||o,this.vars=r,H&&(H=e.utils.toArray(H)),u=u||1e-9,p=p||0,R=R||1,de=de||1,v=v||"wheel,touch,pointer",b=!1!==b,m||(m=parseFloat(s.getComputedStyle(l).lineHeight)||22);let fe,xe,me,ye,be,we,_e,Me=this,Ye=0,De=0,Xe=r.passive||!w&&!1!==r.passive,Te=O(x,T),Ee=O(x,E),Pe=Te(),Oe=Ee(),ke=~v.indexOf("touch")&&!~v.indexOf("pointer")&&"pointerdown"===g[0],Ce=_(x),Le=x.ownerDocument||n,Se=[0,0,0],Ae=[0,0,0],Ge=0,He=()=>Ge=y(),Re=(e,t)=>(Me.event=e)&&H&&((e,t)=>{let r=t.length;for(;r--;)if(t[r]===e||t[r].contains(e))return!0;return!1})(e.target,H)||t&&ke&&"touch"!==e.pointerType||se&&se(e,t),Ie=()=>{let e=Me.deltaX=L(Se),t=Me.deltaY=L(Ae),r=Math.abs(e)>=u,s=Math.abs(t)>=u;Q&&(r||s)&&Q(Me,e,t,Se,Ae),r&&(q&&Me.deltaX>0&&q(Me),z&&Me.deltaX<0&&z(Me),J&&J(Me),Z&&Me.deltaX<0!=Ye<0&&Z(Me),Ye=Me.deltaX,Se[0]=Se[1]=Se[2]=0),s&&(j&&Me.deltaY>0&&j(Me),U&&Me.deltaY<0&&U(Me),K&&K(Me),$&&Me.deltaY<0!=De<0&&$(Me),De=Me.deltaY,Ae[0]=Ae[1]=Ae[2]=0),(ye||me)&&(re&&re(Me),me&&(B&&1===me&&B(Me),N&&N(Me),me=0),ye=!1),we&&!(we=!1)&&ve&&ve(Me),be&&(ie(Me),be=!1),fe=0},Be=(e,t,r)=>{Se[r]+=e,Ae[r]+=t,Me._vx.update(e),Me._vy.update(t),b?fe||(fe=requestAnimationFrame(Ie)):Ie()},Fe=(e,t)=>{pe&&!_e&&(Me.axis=_e=Math.abs(e)>Math.abs(t)?"x":"y",we=!0),"y"!==_e&&(Se[2]+=e,Me._vx.update(e,!0)),"x"!==_e&&(Ae[2]+=t,Me._vy.update(t,!0)),b?fe||(fe=requestAnimationFrame(Ie)):Ie()},Ne=e=>{if(Re(e,1))return;let t=(e=C(e,w)).clientX,r=e.clientY,s=t-Me.x,n=r-Me.y,o=Me.isDragging;Me.x=t,Me.y=r,(o||(s||n)&&(Math.abs(Me.startX-t)>=p||Math.abs(Me.startY-r)>=p))&&(me=o?2:1,o||(Me.isDragging=!0),Fe(s,n))},Ve=Me.onPress=e=>{Re(e,1)||e&&e.button||(Me.axis=_e=null,xe.pause(),Me.isPressed=!0,e=C(e),Ye=De=0,Me.startX=Me.x=e.clientX,Me.startY=Me.y=e.clientY,Me._vx.reset(),Me._vy.reset(),M(ne?x:Le,g[1],Ne,Xe,!0),Me.deltaX=Me.deltaY=0,V&&V(Me))},We=Me.onRelease=t=>{if(Re(t,1))return;Y(ne?x:Le,g[1],Ne,!0);let r=!isNaN(Me.y-Me.startY),n=Me.isDragging,o=n&&(Math.abs(Me.x-Me.startX)>3||Math.abs(Me.y-Me.startY)>3),l=C(t);!o&&r&&(Me._vx.reset(),Me._vy.reset(),w&&he&&e.delayedCall(.08,()=>{if(y()-Ge>300&&!t.defaultPrevented)if(t.target.click)t.target.click();else if(Le.createEvent){let e=Le.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,s,1,l.screenX,l.screenY,l.clientX,l.clientY,!1,!1,!1,!1,0,null),t.target.dispatchEvent(e)}})),Me.isDragging=Me.isGesturing=Me.isPressed=!1,X&&n&&!ne&&xe.restart(!0),me&&Ie(),F&&n&&F(Me),W&&W(Me,o)},qe=e=>e.touches&&e.touches.length>1&&(Me.isGesturing=!0)&&oe(e,Me.isDragging),ze=()=>(Me.isGesturing=!1)||le(Me),Ue=e=>{if(Re(e))return;let t=Te(),r=Ee();Be((t-Pe)*de,(r-Oe)*de,1),Pe=t,Oe=r,X&&xe.restart(!0)},je=e=>{if(Re(e))return;e=C(e,w),ie&&(be=!0);let t=(1===e.deltaMode?m:2===e.deltaMode?s.innerHeight:1)*R;Be(e.deltaX*t,e.deltaY*t,0),X&&!ne&&xe.restart(!0)},Je=e=>{if(Re(e))return;let t=e.clientX,r=e.clientY,s=t-Me.x,n=r-Me.y;Me.x=t,Me.y=r,ye=!0,X&&xe.restart(!0),(s||n)&&Fe(s,n)},Ke=e=>{Me.event=e,ee(Me)},Qe=e=>{Me.event=e,te(Me)},Ze=e=>Re(e)||C(e,w)&&ue(Me);xe=Me._dc=e.delayedCall(G||.25,()=>{Me._vx.reset(),Me._vy.reset(),xe.pause(),X&&X(Me)}).pause(),Me.deltaX=Me.deltaY=0,Me._vx=k(0,50,!0),Me._vy=k(0,50,!0),Me.scrollX=Te,Me.scrollY=Ee,Me.isDragging=Me.isGesturing=Me.isPressed=!1,h(this),Me.enable=e=>(Me.isEnabled||(M(Ce?Le:x,"scroll",D),v.indexOf("scroll")>=0&&M(Ce?Le:x,"scroll",Ue,Xe,ge),v.indexOf("wheel")>=0&&M(x,"wheel",je,Xe,ge),(v.indexOf("touch")>=0&&i||v.indexOf("pointer")>=0)&&(M(x,g[0],Ve,Xe,ge),M(Le,g[2],We),M(Le,g[3],We),he&&M(x,"click",He,!0,!0),ue&&M(x,"click",Ze),oe&&M(Le,"gesturestart",qe),le&&M(Le,"gestureend",ze),ee&&M(x,a+"enter",Ke),te&&M(x,a+"leave",Qe),re&&M(x,a+"move",Je)),Me.isEnabled=!0,Me.isDragging=Me.isGesturing=Me.isPressed=ye=me=!1,Me._vx.reset(),Me._vy.reset(),Pe=Te(),Oe=Ee(),e&&e.type&&Ve(e),ae&&ae(Me)),Me),Me.disable=()=>{Me.isEnabled&&(f.filter(e=>e!==Me&&_(e.target)).length||Y(Ce?Le:x,"scroll",D),Me.isPressed&&(Me._vx.reset(),Me._vy.reset(),Y(ne?x:Le,g[1],Ne,!0)),Y(Ce?Le:x,"scroll",Ue,ge),Y(x,"wheel",je,ge),Y(x,g[0],Ve,ge),Y(Le,g[2],We),Y(Le,g[3],We),Y(x,"click",He,!0),Y(x,"click",Ze),Y(Le,"gesturestart",qe),Y(Le,"gestureend",ze),Y(x,a+"enter",Ke),Y(x,a+"leave",Qe),Y(x,a+"move",Je),Me.isEnabled=Me.isPressed=Me.isDragging=!1,ce&&ce(Me))},Me.kill=Me.revert=()=>{Me.disable();let e=f.indexOf(Me);e>=0&&f.splice(e,1),d===Me&&(d=0)},f.push(Me),ne&&_(x)&&(d=Me),Me.enable(I)}get velocityX(){return this._vx.getVelocity()}get velocityY(){return this._vy.getVelocity()}}G.version="3.13.0",G.create=e=>new G(e),G.register=A,G.getAll=()=>f.slice(),G.getById=e=>f.filter(t=>t.vars.id===e)[0],p()&&e.registerPlugin(G);export default G;export{G as Observer,w as _getProxyProp,O as _getScrollFunc,P as _getTarget,k as _getVelocityProp,T as _horizontal,_ as _isViewport,m as _proxies,x as _scrollers,E as _vertical};