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) 3.63 kB
/*! * ScrollToPlugin 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,l,o,r,s,n,i,p=()=>"undefined"!=typeof window,a=()=>e||p()&&(e=window.gsap)&&e.registerPlugin&&e,c=e=>"string"==typeof e,y=e=>"function"==typeof e,f=(e,t)=>{let s="x"===t?"Width":"Height",n="scroll"+s,i="client"+s;return e===l||e===o||e===r?Math.max(o[n],r[n])-(l["inner"+s]||o[i]||r[i]):e[n]-e["offset"+s]},u=(e,t)=>{let s="scroll"+("x"===t?"Left":"Top");return e===l&&(null!=e.pageXOffset?s="page"+t.toUpperCase()+"Offset":e=null!=o[s]?o:r),()=>e[s]},g=(e,t)=>{if(!(e=s(e)[0])||!e.getBoundingClientRect)return console.warn("scrollTo target doesn't exist. Using 0")||{x:0,y:0};let n=e.getBoundingClientRect(),i=!t||t===l||t===r,p=i?{top:o.clientTop-(l.pageYOffset||o.scrollTop||r.scrollTop||0),left:o.clientLeft-(l.pageXOffset||o.scrollLeft||r.scrollLeft||0)}:t.getBoundingClientRect(),a={x:n.left-p.left,y:n.top-p.top};return!i&&t&&(a.x+=u(t,"x")(),a.y+=u(t,"y")()),a},x=(e,t,l,o,r)=>isNaN(e)||"object"==typeof e?c(e)&&"="===e.charAt(1)?parseFloat(e.substr(2))*("-"===e.charAt(0)?-1:1)+o-r:"max"===e?f(t,l)-r:Math.min(f(t,l),g(e,t)[l]-r):parseFloat(e)-r,d=()=>{e=a(),p()&&e&&"undefined"!=typeof document&&document.body&&(l=window,r=document.body,o=document.documentElement,s=e.utils.toArray,e.config({autoKillThreshold:7}),n=e.config(),t=1)};const T={version:"3.13.0",name:"scrollTo",rawVars:1,register(t){e=t,d()},init(o,r,s,p,a){t||d();let f=this,g=e.getProperty(o,"scrollSnapType");f.isWin=o===l,f.target=o,f.tween=s,r=((e,t,l,o)=>{if(y(e)&&(e=e(t,l,o)),"object"!=typeof e)return c(e)&&"max"!==e&&"="!==e.charAt(1)?{x:e,y:e}:{y:e};if(e.nodeType)return{y:e,x:e};{let r,s={};for(r in e)s[r]="onAutoKill"!==r&&y(e[r])?e[r](t,l,o):e[r];return s}})(r,p,o,a),f.vars=r,f.autoKill=!!("autoKill"in r?r:n).autoKill,f.getX=u(o,"x"),f.getY=u(o,"y"),f.x=f.xPrev=f.getX(),f.y=f.yPrev=f.getY(),i||(i=e.core.globals().ScrollTrigger),"smooth"===e.getProperty(o,"scrollBehavior")&&e.set(o,{scrollBehavior:"auto"}),g&&"none"!==g&&(f.snap=1,f.snapInline=o.style.scrollSnapType,o.style.scrollSnapType="none"),null!=r.x?(f.add(f,"x",f.x,x(r.x,o,"x",f.x,r.offsetX||0),p,a),f._props.push("scrollTo_x")):f.skipX=1,null!=r.y?(f.add(f,"y",f.y,x(r.y,o,"y",f.y,r.offsetY||0),p,a),f._props.push("scrollTo_y")):f.skipY=1},render(e,t){let o,r,s,p,a,c=t._pt,{target:y,tween:u,autoKill:g,xPrev:x,yPrev:d,isWin:T,snap:h,snapInline:k}=t;for(;c;)c.r(e,c.d),c=c._next;o=T||!t.skipX?t.getX():x,r=T||!t.skipY?t.getY():d,s=r-d,p=o-x,a=n.autoKillThreshold,t.x<0&&(t.x=0),t.y<0&&(t.y=0),g&&(!t.skipX&&(p>a||p<-a)&&o<f(y,"x")&&(t.skipX=1),!t.skipY&&(s>a||s<-a)&&r<f(y,"y")&&(t.skipY=1),t.skipX&&t.skipY&&(u.kill(),t.vars.onAutoKill&&t.vars.onAutoKill.apply(u,t.vars.onAutoKillParams||[]))),T?l.scrollTo(t.skipX?o:t.x,t.skipY?r:t.y):(t.skipY||(y.scrollTop=t.y),t.skipX||(y.scrollLeft=t.x)),!h||1!==e&&0!==e||(r=y.scrollTop,o=y.scrollLeft,k?y.style.scrollSnapType=k:y.style.removeProperty("scroll-snap-type"),y.scrollTop=r+1,y.scrollLeft=o+1,y.scrollTop=r,y.scrollLeft=o),t.xPrev=t.x,t.yPrev=t.y,i&&i.update()},kill(e){let t="scrollTo"===e,l=this._props.indexOf(e);return(t||"scrollTo_x"===e)&&(this.skipX=1),(t||"scrollTo_y"===e)&&(this.skipY=1),l>-1&&this._props.splice(l,1),!this._props.length}};T.max=f,T.getOffset=g,T.buildGetter=u,T.config=t=>{n||d()||(n=e.config());for(let e in t)n[e]=t[e]},a()&&e.registerPlugin(T);export default T;export{T as ScrollToPlugin};