svg-scroll-draw 2.2.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +7 -7
  2. package/dist/angular/index.cjs +3 -3
  3. package/dist/angular/index.d.mts +194 -9
  4. package/dist/angular/index.d.ts +194 -9
  5. package/dist/angular/index.mjs +3 -3
  6. package/dist/astro/index.cjs +3 -3
  7. package/dist/astro/index.d.mts +78 -1
  8. package/dist/astro/index.d.ts +78 -1
  9. package/dist/astro/index.mjs +3 -3
  10. package/dist/cdn/svg-scroll-draw.global.js +3 -3
  11. package/dist/devtools/index.cjs +1 -1
  12. package/dist/devtools/index.d.mts +12 -0
  13. package/dist/devtools/index.d.ts +12 -0
  14. package/dist/devtools/index.mjs +1 -1
  15. package/dist/group/index.cjs +3 -3
  16. package/dist/group/index.d.mts +88 -1
  17. package/dist/group/index.d.ts +88 -1
  18. package/dist/group/index.mjs +3 -3
  19. package/dist/index.cjs +4 -4
  20. package/dist/index.d.mts +16 -0
  21. package/dist/index.d.ts +16 -0
  22. package/dist/index.mjs +4 -4
  23. package/dist/lenis/index.cjs +1 -0
  24. package/dist/lenis/index.d.mts +51 -0
  25. package/dist/lenis/index.d.ts +51 -0
  26. package/dist/lenis/index.mjs +1 -0
  27. package/dist/nuxt/index.cjs +3 -3
  28. package/dist/nuxt/index.d.mts +286 -5
  29. package/dist/nuxt/index.d.ts +286 -5
  30. package/dist/nuxt/index.mjs +3 -3
  31. package/dist/pin/index.cjs +1 -0
  32. package/dist/pin/index.d.mts +29 -0
  33. package/dist/pin/index.d.ts +29 -0
  34. package/dist/pin/index.mjs +1 -0
  35. package/dist/react/index.cjs +3 -3
  36. package/dist/react/index.d.mts +16 -0
  37. package/dist/react/index.d.ts +16 -0
  38. package/dist/react/index.mjs +3 -3
  39. package/dist/snap/index.cjs +1 -0
  40. package/dist/snap/index.d.mts +30 -0
  41. package/dist/snap/index.d.ts +30 -0
  42. package/dist/snap/index.mjs +1 -0
  43. package/dist/solid/index.cjs +3 -3
  44. package/dist/solid/index.d.mts +171 -1
  45. package/dist/solid/index.d.ts +171 -1
  46. package/dist/solid/index.mjs +3 -3
  47. package/dist/svelte/index.cjs +3 -3
  48. package/dist/svelte/index.d.mts +183 -10
  49. package/dist/svelte/index.d.ts +183 -10
  50. package/dist/svelte/index.mjs +3 -3
  51. package/dist/vue/index.cjs +3 -3
  52. package/dist/vue/index.d.mts +278 -1
  53. package/dist/vue/index.d.ts +278 -1
  54. package/dist/vue/index.mjs +3 -3
  55. package/dist/web-component/index.cjs +3 -3
  56. package/dist/web-component/index.mjs +3 -3
  57. package/package.json +16 -1
@@ -1,3 +1,3 @@
1
- 'use strict';var zt=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var zt__default=/*#__PURE__*/_interopDefault(zt);function vt({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),i=Math.sqrt(t),o=0,l=[];for(let p=0;p<r;p++){let I=Math.pow(i,p);l.push(I),o+=I;}let c=[0],a=0;for(let p=0;p<r;p++)a+=l[p]/o,c.push(a);return p=>{if(p<=0)return 0;if(p>=1)return 1;for(let I=0;I<r;I++)if(p<=c[I+1]){let k=(p-c[I])/(c[I+1]-c[I]);if(I===0)return k*(2-k);let E=1-Math.pow(t,I);return E+(1-E)*(2*k-1)*(2*k-1)}return 1}}function Et({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),i=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return o=>o<=0?0:o>=1?1:r*Math.pow(2,-10*o)*Math.sin((o-i)*(2*Math.PI)/t)+1}var te={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:vt(),elastic:Et()};function re(e="top bottom"){let n=e.trim();if(/^\d+(\.\d+)?%$/.test(n))return {element:"top",viewport:n};let[r="top",t="bottom"]=n.split(/\s+/).filter(Boolean);return {element:r,viewport:t}}function Je(e,n,r,t){switch(t){case "top":return e+r;case "center":return e+r+n/2;case "bottom":return e+r+n;default:return e+r}}function Ze(e,n){if(/^\d+(\.\d+)?%$/.test(e))return n*(parseFloat(e)/100);switch(e){case "top":return 0;case "center":return n/2;case "bottom":return n;default:return n}}function Ve(e){let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(r+t)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function St(e,n,r){return Math.min(r,Math.max(n,e))}function Y(e,n,r,t){return r===n?0:St((e-n)/(r-n)*t,0,1)}function fe(e,n,r,t,i){let o=Je(e.top,e.height,n,t.element)-Ze(t.viewport,r),l=Je(e.top,e.height,n,i.element)-Ze(i.viewport,r);return {tStart:o,tEnd:l}}function Ke(e){let n=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(n)return [parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16)];let r=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(r)return [parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)];let t=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return t?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}function Le(e,n,r){let t=Ke(e),i=Ke(n);return !t||!i?e:`rgb(${Math.round(t[0]+(i[0]-t[0])*r)},${Math.round(t[1]+(i[1]-t[1])*r)},${Math.round(t[2]+(i[2]-t[2])*r)})`}var Qe={sketch:{easing:"ease-in",stagger:.1,speed:.9,fade:false},reveal:{easing:"ease-out",fade:true,speed:1.2,once:true},typewriter:{easing:"linear",stagger:.05,speed:1.5},cinematic:{easing:"ease-in-out",fade:true,speed:.75},spring:{easing:"spring",speed:1.1}};function et(e,n){process.env.NODE_ENV!=="production"&&console.warn(`[svg-scroll-draw] ${e}`,n);}var tt={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},xt=0;function Tt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function At(e){let n=e.getAttribute("stroke"),r=e.getAttribute("fill");!n||n==="none"?et("Element has no stroke \u2014 path will not be visible.",e):r&&r!=="none"&&r!=="transparent"&&et("Element has a fill \u2014 it may obscure the stroke animation.",e);}function Mt(e,n,r){let t=document.createElement("div");t.setAttribute("data-svg-scroll-draw-debug",""),t.style.cssText="position:fixed;pointer-events:none;z-index:9999;font-family:monospace;font-size:11px;top:0;left:0;right:0;bottom:0;";function i(){let o=r==="x"?window.scrollX:window.scrollY,l=e-o,c=n-o,a=r==="x";t.innerHTML=`
2
- <div style="position:absolute;${a?`left:${l}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${l}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
- <div style="position:absolute;${a?`left:${c}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${c}px;left:0;right:0;border-top:2px dashed #ef4444;`}padding:2px 6px;color:#ef4444;background:rgba(0,0,0,.6)">\u25A0 end</div>`;}return document.body.appendChild(t),window.addEventListener("scroll",i,{passive:true}),i(),t}function Ge(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),i=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,o=>{let l=parseFloat(o),c=t[i++]??l;return String(+(l+(c-l)*r).toFixed(4))})}function rt(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,i=r?{...Qe[r],...t}:t,o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:c=1,fade:a=false,easing:p="linear",trigger:I={},stagger:k=0,direction:E="forward",once:Z=false,debug:ce=false,axis:V="y",scrollContainer:B,autoReverse:S=false,delay:R=0,strokeColor:C,strokeWidth:$,fillOpacity:L,waypoints:h,velocityScale:A=false,threshold:M=0,rootMargin:w="0px",repeat:b=0,repeatDelay:D=0,morphTo:P,clip:z,autoplay:G=false,duration:K=1e3,native:ae=true,onProgress:d,onStart:N,onComplete:y}=i,f=z===true?"left":typeof z=="string"?z:false,H=typeof p=="function"?p:te[p]??te.linear,ge=re(I.start??"top bottom"),m=re(I.end??"bottom top"),g=typeof B=="string"?document.querySelector(B):B??null,se=Array.isArray(C)?C[0]:null,_=Array.isArray(C)?C[1]:typeof C=="string"?C:null,Q=Array.isArray($)?$[0]:null,ie=Array.isArray($)?$[1]:typeof $=="number"?$:null,q=Array.isArray(L)?L[0]:null,j=Array.isArray(L)?L[1]:typeof L=="number"?L:null;function pe(s){let u=s*100;switch(f){case "right":return `inset(0 0 0 ${100-u}%)`;case "top":return `inset(0 0 ${100-u}% 0)`;case "bottom":return `inset(${100-u}% 0 0 0)`;case "center":return `circle(${s*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let ne=f?[]:Array.from(e.querySelectorAll(l)),U=[],he=[],Ee=0,Se=0,le=false,ye=false,oe=0,ke=false,be=-1,Re=-1,ue=false,Pe=0,ve=0,xe,We=null,Te=new Set,Ne=-1,Ye=performance.now();function Ie(){return g?V==="x"?g.scrollLeft:g.scrollTop:V==="x"?window.scrollX:window.scrollY}function je(){return g?V==="x"?g.clientWidth:g.clientHeight:V==="x"?window.innerWidth:window.innerHeight}function Ue(){let s=e.getBoundingClientRect(),u,T,J;if(g){let me=g.getBoundingClientRect();u=V==="x"?s.left-me.left+g.scrollLeft:s.top-me.top+g.scrollTop,T=V==="x"?s.width:s.height,J=Ie();}else u=V==="x"?s.left:s.top,T=V==="x"?s.width:s.height,J=Ie();let de=fe({top:u,height:T},J,je(),ge,m);Ee=de.tStart,Se=de.tEnd,ce&&process.env.NODE_ENV!=="production"&&(We?.remove(),We=Mt(Ee,Se,V));}function yt(s,u){if(e.style.setProperty("--scroll-draw-progress",String(s)),f){let T=u==="reverse"?1-s:s;e.style.clipPath=pe(T);return}ne.forEach((T,J)=>{T.style.strokeDashoffset=u==="reverse"?`${U[J]*s}`:`${U[J]*(1-s)}`,a&&(T.style.opacity=u==="reverse"?`${1-s}`:`${s}`),se&&_?T.style.stroke=Le(se,_,s):_&&(T.style.stroke=_),Q!==null&&ie!==null?T.style.strokeWidth=`${Q+(ie-Q)*s}`:ie!==null&&(T.style.strokeWidth=`${ie}`),q!==null&&j!==null?T.style.fillOpacity=`${q+(j-q)*s}`:j!==null&&(T.style.fillOpacity=`${j}`),P&&T.tagName.toLowerCase()==="path"&&he[J]&&T.setAttribute("d",Ge(he[J],P,s));});}function De(){if(e.style.setProperty("--scroll-draw-progress","0"),f){e.style.clipPath=pe(0);return}ne.forEach((s,u)=>{s.style.strokeDasharray=`${U[u]}`,s.style.strokeDashoffset=E==="reverse"?"0":`${U[u]}`,a?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",se&&(s.style.stroke=se),Q!==null&&(s.style.strokeWidth=`${Q}`),q!==null&&(s.style.fillOpacity=`${q}`),P&&s.tagName.toLowerCase()==="path"&&he[u]&&s.setAttribute("d",he[u]);});}if(ne.forEach(s=>{At(s);let u=Ve(s);U.push(u),s.tagName.toLowerCase()==="path"?he.push(s.getAttribute("d")??""):he.push(""),o?(s.style.strokeDasharray=`${u}`,s.style.strokeDashoffset=E==="reverse"?`${u}`:"0",a&&(s.style.opacity="1"),_&&(s.style.stroke=_),ie!==null&&(s.style.strokeWidth=`${ie}`),j!==null&&(s.style.fillOpacity=`${j}`),P&&s.tagName.toLowerCase()==="path"&&s.setAttribute("d",P)):(s.style.strokeDasharray=`${u}`,s.style.strokeDashoffset=E==="reverse"?"0":`${u}`,a?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",se&&(s.style.stroke=se),Q!==null&&(s.style.strokeWidth=`${Q}`),q!==null&&(s.style.fillOpacity=`${q}`));}),f){if(o)return e.style.clipPath=pe(1),y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=pe(0);}else if(o)return y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};function ht(){return !(ae===false||!Tt()||!ne.length||typeof p!="string"||!(p in tt)||f||V!=="y"||g||c!==1||k!==0||Z||S||A!==false||P||h||b||R>0||d||N||y||C!=null||$!=null||L!=null||(I.start??"top bottom").trim()!=="top bottom"||(I.end??"bottom top").trim()!=="bottom top")}function bt(){let s=`svg-scroll-draw-${++xt}`,u=E==="reverse"?"0":"var(--ssd-len)",T=E==="reverse"?"var(--ssd-len)":"0",J=`stroke-dashoffset:${u};`,de=`stroke-dashoffset:${T};`;a&&(J+=`opacity:${E==="reverse"?1:0};`,de+=`opacity:${E==="reverse"?0:1};`);let me=document.createElement("style");me.setAttribute("data-svg-scroll-draw",""),me.textContent=`@keyframes ${s}{from{${J}}to{${de}}}.${s}{animation-name:${s};animation-duration:auto;animation-timing-function:${tt[p]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(me);function x(v,F){v.style.setProperty("--ssd-len",String(U[F])),v.style.strokeDasharray=`${U[F]}`,v.style.strokeDashoffset="",v.style.opacity="",v.style.animationPlayState="",v.classList.add(s);}ne.forEach(x);let W=false,ee=-1;function O(){if(ee>=0)return ee;let v=e.getBoundingClientRect(),{tStart:F,tEnd:X}=fe({top:v.top,height:v.height},Ie(),je(),ge,m);return H(Y(Ie(),F,X,c))}return {destroy(){ne.forEach(v=>{v.classList.remove(s),v.style.removeProperty("--ssd-len"),v.style.animationPlayState="";}),me.remove();},replay(){W=false,ee=-1,ne.forEach(x);},pause(){W=true,ne.forEach(v=>{v.style.animationPlayState="paused";});},resume(){W&&(W=false,ne.forEach(v=>{v.style.animationPlayState="running";}));},seek(v){let F=Math.min(1,Math.max(0,v));ee=F,W=true,ne.forEach((X,Ce)=>{X.classList.remove(s),X.style.strokeDashoffset=E==="reverse"?`${U[Ce]*F}`:`${U[Ce]*(1-F)}`,a&&(X.style.opacity=E==="reverse"?`${1-F}`:`${F}`);});},getProgress(){return O()}}}if(ht())return bt();function wt(){let s=Math.max(1,K),u=0,T=0;function J(O){let v=true;if(f){let F=Math.min(1,Math.max(0,O/s)),X=H(F);Pe=X,e.style.setProperty("--scroll-draw-progress",String(X)),e.style.clipPath=pe(E==="reverse"?1-X:X),d?.(X),F<1&&(v=false);}else ne.forEach((F,X)=>{let Ce=X*k*s,$e=Math.min(1,Math.max(0,(O-Ce)/s)),we=H($e);F.style.strokeDashoffset=E==="reverse"?`${U[X]*we}`:`${U[X]*(1-we)}`,a&&(F.style.opacity=E==="reverse"?`${1-we}`:`${we}`),se&&_?F.style.stroke=Le(se,_,we):_&&(F.style.stroke=_),Q!==null&&ie!==null?F.style.strokeWidth=`${Q+(ie-Q)*we}`:ie!==null&&(F.style.strokeWidth=`${ie}`),q!==null&&j!==null?F.style.fillOpacity=`${q+(j-q)*we}`:j!==null&&(F.style.fillOpacity=`${j}`),P&&F.tagName.toLowerCase()==="path"&&he[X]&&F.setAttribute("d",Ge(he[X],P,we)),X===0&&(d?.(we),e.style.setProperty("--scroll-draw-progress",String(we))),$e<1&&(v=false);});if(h){let F=Math.min(1,Math.max(0,O/s)),X=H(F);for(let Ce in h){let $e=parseFloat(Ce);X>=$e&&!Te.has($e)&&(Te.add($e),h[Ce]?.());}}return v}function de(O){if(ue)return;let v=O-u;ye||(ye=true,N?.());let F=J(v);if(F&&!le){le=true,J(s*(1+Math.max(0,ne.length-1)*k)),y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{u=performance.now(),ye=false,le=false,Te.clear(),De(),oe=requestAnimationFrame(de);},D));return}F||(oe=requestAnimationFrame(de));}function me(){cancelAnimationFrame(oe),clearTimeout(xe),u=performance.now(),T=0,ue=false,ye=false,le=false,ve=0,Te.clear(),De(),oe=requestAnimationFrame(de);}let x=new IntersectionObserver(O=>{O.forEach(v=>{v.isIntersecting&&!(Z&&le)?me():!v.isIntersecting&&!Z&&!le&&(cancelAnimationFrame(oe),clearTimeout(xe),u=null);});},{root:g??null,threshold:M,rootMargin:w}),W;function ee(){clearTimeout(W),W=setTimeout(()=>{ne.forEach((O,v)=>{U[v]=Ve(O),O.style.strokeDasharray=`${U[v]}`;});},150);}return window.addEventListener("resize",ee),window.addEventListener("orientationchange",ee),R>0?setTimeout(()=>x.observe(e),R):x.observe(e),{destroy(){cancelAnimationFrame(oe),clearTimeout(xe),x.disconnect(),window.removeEventListener("resize",ee),window.removeEventListener("orientationchange",ee),clearTimeout(W);},replay(){ve=0,me();},pause(){ue||(ue=true,T=performance.now()-u,cancelAnimationFrame(oe));},resume(){ue&&(ue=false,u=performance.now()-T,oe=requestAnimationFrame(de));},seek(O){let v=Math.min(1,Math.max(0,O));Pe=v,ue=true,T=v*s,u=performance.now()-T,cancelAnimationFrame(oe),J(T);},getProgress(){return Pe}}}if(G)return wt();Ue();function He(){if(!ke||ue)return;let s=performance.now(),u=Ie(),T=c;if(A!==false){let x=s-Ye,W=x>0?Math.abs(u-(Ne<0?u:Ne))/x:0;T=c*Math.max(.2,1+W*(typeof A=="number"?A:1)*.04);}Ne=u,Ye=s;let J=S?Re===-1||u>=Re?"forward":"reverse":E;Re=u;let de=Se-Ee,me=true;if(f){let x=H(Y(u,Ee,Se,T));Z&&!S&&(be=Math.max(be,x),x=be),Pe=x,e.style.setProperty("--scroll-draw-progress",String(x));let W=J==="reverse"?1-x:x;e.style.clipPath=pe(W),d?.(x),!ye&&Y(u,Ee,Se,T)>0&&(ye=true,N?.()),x>=1&&!le?(le=true,y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{be=-1,ye=false,le=false,e.style.clipPath=pe(0);},D))):x<1&&!Z&&(le=false),oe=requestAnimationFrame(He);return}if(ne.forEach((x,W)=>{let ee=W*k*de,O=H(Y(u,Ee+ee,Se+ee,T));Z&&!S&&(be=Math.max(be,O),O=be),Pe=O,x.style.strokeDashoffset=J==="reverse"?`${U[W]*O}`:`${U[W]*(1-O)}`,a&&(x.style.opacity=J==="reverse"?`${1-O}`:`${O}`),se&&_?x.style.stroke=Le(se,_,O):_&&(x.style.stroke=_),Q!==null&&ie!==null?x.style.strokeWidth=`${Q+(ie-Q)*O}`:ie!==null&&(x.style.strokeWidth=`${ie}`),q!==null&&j!==null?x.style.fillOpacity=`${q+(j-q)*O}`:j!==null&&(x.style.fillOpacity=`${j}`),P&&x.tagName.toLowerCase()==="path"&&he[W]&&x.setAttribute("d",Ge(he[W],P,O)),W===0&&(d?.(O),e.style.setProperty("--scroll-draw-progress",String(O))),O<1&&(me=false);}),h){let x=H(Y(u,Ee,Se,T));for(let W in h){let ee=parseFloat(W);x>=ee&&!Te.has(ee)&&(Te.add(ee),h[W]?.());}}!ye&&Y(u,Ee,Se,T)>0&&(ye=true,N?.()),me&&!le?(le=true,y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{be=-1,ye=false,le=false,Te.clear(),De();},D))):!me&&!Z&&(le=false),oe=requestAnimationFrame(He);}let _e=new IntersectionObserver(s=>{s.forEach(u=>{ke=u.isIntersecting,ke&&!ue?oe=requestAnimationFrame(He):cancelAnimationFrame(oe);});},{root:g??null,threshold:M,rootMargin:w}),Be;function ze(){clearTimeout(Be),Be=setTimeout(()=>{ne.forEach((s,u)=>{U[u]=Ve(s),s.style.strokeDasharray=`${U[u]}`;}),Ue();},150);}return window.addEventListener("resize",ze),window.addEventListener("orientationchange",ze),R>0?setTimeout(()=>_e.observe(e),R):_e.observe(e),{destroy(){cancelAnimationFrame(oe),clearTimeout(xe),_e.disconnect(),window.removeEventListener("resize",ze),window.removeEventListener("orientationchange",ze),clearTimeout(Be),We?.remove();},replay(){be=-1,Re=-1,Ne=-1,ye=false,le=false,ve=0,ue=false,Te.clear(),clearTimeout(xe),De();},pause(){ue=true,cancelAnimationFrame(oe);},resume(){ue&&(ue=false,ke&&(oe=requestAnimationFrame(He)));},seek(s){let u=Math.min(1,Math.max(0,s));Pe=u,be=u,ue=true,cancelAnimationFrame(oe),yt(u,E);},getProgress(){return Pe}}}var nt=new Map;function Ae(e,n){nt.set(e,n);}function Me(e){nt.delete(e);}function Pt(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function ot(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let i=[],o=[],l=t[2].trim();if(l)for(let c of l.split(/[\s,]+/)){let a=c.match(/^([-+]?[\d.eE]+)(.*)$/);i.push(a?parseFloat(a[1]):0),o.push(a?a[2]:"");}n.push({fn:t[1],nums:i,units:o});}return n}function Ct(e,n,r){let t=ot(e),i=ot(n);return t.length===0||t.length!==i.length?r<1?e:n:t.map((o,l)=>{let c=i[l];return o.fn!==c.fn||o.nums.length!==c.nums.length?r<1?`${o.fn}(${o.nums.map((a,p)=>`${a}${o.units[p]}`).join(", ")})`:`${c.fn}(${c.nums.map((a,p)=>`${a}${c.units[p]}`).join(", ")})`:`${o.fn}(${o.nums.map((a,p)=>`${a+(c.nums[p]-a)*r}${o.units[p]}`).join(", ")})`}).join(" ")}function st(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),i=String(n);if(Pt(t))return Le(t,i,r);if(t.includes("("))return Ct(t,i,r);let o=t.match(/^([-+]?[\d.]+)(.*)$/),l=i.match(/^([-+]?[\d.]+)(.*)$/);if(o&&l){let c=parseFloat(o[1]),a=parseFloat(l[1]);return `${c+(a-c)*r}${o[2]||l[2]}`}return r<1?t:i}function $t(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var it={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Lt=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),It=0;function Ot(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function at(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:i={},easing:o="ease-out",speed:l=1,once:c=false,axis:a="y",scrollContainer:p,native:I=true,onProgress:k,onComplete:E}=n,Z=window.matchMedia("(prefers-reduced-motion: reduce)").matches,ce=typeof o=="function"?o:te[o]??te["ease-out"],V=re(i.start??"top bottom"),B=re(i.end??"bottom top"),S=typeof p=="string"?document.querySelector(p):p??null,R=Object.entries(t).map(([m,g])=>({prop:$t(m),from:Array.isArray(g)?g[0]:"",to:Array.isArray(g)?g[1]:g}));function C(){let m=window.getComputedStyle(e);for(let g of R)g.from===""&&(g.from=m.getPropertyValue(g.prop).trim()||"0");}function $(){for(let m of R)e.style.setProperty(m.prop,String(m.to));}if(Z)return $(),E?.(),r;C();function L(){if(!I||!Ot()||typeof o!="string"||!(o in it)||a!=="y"||S||c||l!==1||k||E||(i.start??"top bottom").trim()!=="top bottom"||(i.end??"bottom top").trim()!=="bottom top")return false;for(let m of R)if(!Lt.has(m.prop))return false;return true}function h(){let m=`ssd-a-${++It}`,g=R.map(q=>`${q.prop}:${q.from}`).join(";"),se=R.map(q=>`${q.prop}:${q.to}`).join(";"),_=document.createElement("style");_.setAttribute("data-ssd-animate",""),_.textContent=`@keyframes ${m}{from{${g}}to{${se}}}.${m}{animation-name:${m};animation-duration:auto;animation-timing-function:${it[o]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(_),e.classList.add(m);let Q=()=>a==="x"?window.scrollX:window.scrollY,ie=()=>a==="x"?window.innerWidth:window.innerHeight;return {destroy(){e.classList.remove(m),_.remove();},replay(){e.classList.remove(m),e.offsetWidth,e.classList.add(m);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(q){let j=Math.min(1,Math.max(0,q));e.classList.remove(m);for(let pe of R)e.style.setProperty(pe.prop,st(pe.from,pe.to,j));},getProgress(){let q=e.getBoundingClientRect(),j=Q(),pe=ie(),{tStart:ne,tEnd:U}=fe({top:q.top,height:q.height},j,pe,V,B);return ce(Y(j,ne,U,l))}}}if(L())return h();let A=0,M=0,w=0,b=false,D=false,P=-1,z=0,G=false,K=()=>S?a==="x"?S.scrollLeft:S.scrollTop:a==="x"?window.scrollX:window.scrollY,ae=()=>S?a==="x"?S.clientWidth:S.clientHeight:a==="x"?window.innerWidth:window.innerHeight;function d(){let m=e.getBoundingClientRect(),g,se;if(S){let Q=S.getBoundingClientRect();g=a==="x"?m.left-Q.left+S.scrollLeft:m.top-Q.top+S.scrollTop,se=a==="x"?m.width:m.height;}else g=a==="x"?m.left:m.top,se=a==="x"?m.width:m.height;let _=fe({top:g,height:se},K(),ae(),V,B);A=_.tStart,M=_.tEnd;}function N(m){e.style.setProperty("--scroll-draw-progress",String(m));for(let g of R)e.style.setProperty(g.prop,st(g.from,g.to,m));k?.(m);}function y(){if(!b||D)return;let m=ce(Y(K(),A,M,l));c&&(P=Math.max(P,m),m=P),z=m,N(m),m>=1&&!G?(G=true,E?.()):m<1&&!c&&(G=false),w=requestAnimationFrame(y);}d();{let m=ce(Y(K(),A,M,l));c&&m>0&&(P=m),z=m,N(m);}let f=new IntersectionObserver(m=>{m.forEach(g=>{b=g.isIntersecting,b&&!D?w=requestAnimationFrame(y):cancelAnimationFrame(w);});},{root:S??null}),H;function ge(){clearTimeout(H),H=setTimeout(d,150);}return window.addEventListener("resize",ge),window.addEventListener("orientationchange",ge),f.observe(e),Ae(e,{type:"animate",getProgress:()=>z,getTrigger:()=>({tStart:A,tEnd:M})}),{destroy(){cancelAnimationFrame(w),f.disconnect(),window.removeEventListener("resize",ge),window.removeEventListener("orientationchange",ge),clearTimeout(H),Me(e);},replay(){P=-1,G=false,z=0,D=false,N(0);},pause(){D=true,cancelAnimationFrame(w);},resume(){D&&(D=false,b&&(w=requestAnimationFrame(y)));},seek(m){let g=Math.min(1,Math.max(0,m));z=g,P=g,D=true,cancelAnimationFrame(w),N(g);},getProgress(){return z}}}var Xe={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function lt(e,n){if(typeof window>"u")return Xe;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollCounter: element not found:",e),Xe;let t=r,{from:i=0,to:o,format:l,easing:c="ease-out",trigger:a={},once:p=true,decimals:I,onComplete:k}=n,E=I!==void 0?d=>d.toFixed(I):l??(d=>String(Math.round(d))),Z=typeof c=="function"?c:te[c]??te["ease-out"],ce=re(a.start??"top 80%"),V=re(a.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=E(o),k?.(),Xe;t.textContent=E(i);let S=0,R=0,C=0,$=false,L=false,h=-1,A=0,M=false,w=()=>window.scrollY,b=()=>window.innerHeight;function D(){let d=t.getBoundingClientRect(),N=fe({top:d.top,height:d.height},w(),b(),ce,V);S=N.tStart,R=N.tEnd;}function P(d){t.textContent=E(i+(o-i)*d),t.style.setProperty("--scroll-draw-progress",String(d));}function z(){if(!$||L)return;let d=Z(Y(w(),S,R,1));p&&(h=Math.max(h,d),d=h),A=d,P(d),d>=1&&!M?(M=true,k?.()):d<1&&!p&&(M=false),C=requestAnimationFrame(z);}D();{let d=Z(Y(w(),S,R,1));p&&d>0&&(h=d),A=d,P(d);}let G=new IntersectionObserver(d=>{d.forEach(N=>{$=N.isIntersecting,$&&!L?C=requestAnimationFrame(z):cancelAnimationFrame(C);});}),K;function ae(){clearTimeout(K),K=setTimeout(D,150);}return window.addEventListener("resize",ae),window.addEventListener("orientationchange",ae),G.observe(t),Ae(t,{type:"counter",getProgress:()=>A,getTrigger:()=>({tStart:S,tEnd:R})}),{destroy(){cancelAnimationFrame(C),G.disconnect(),window.removeEventListener("resize",ae),window.removeEventListener("orientationchange",ae),clearTimeout(K),Me(t);},replay(){h=-1,M=false,A=0,L=false,P(0);},pause(){L=true,cancelAnimationFrame(C);},resume(){L&&(L=false,$&&(C=requestAnimationFrame(z)));},seek(d){let N=Math.min(1,Math.max(0,d));A=N,h=N,L=true,cancelAnimationFrame(C),P(N);},getProgress(){return A}}}var ct={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function ut(e,n={}){if(typeof window>"u")return ct;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollVideo: <video> element not found:",e),ct;let t=r,{trigger:i={},easing:o="linear",once:l=false,axis:c="y",preload:a="auto",onReady:p,onComplete:I,onProgress:k}=n,E=window.matchMedia("(prefers-reduced-motion: reduce)").matches,Z=typeof o=="function"?o:te[o]??te.linear,ce=re(i.start??"top top"),V=re(i.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=a);let B=n.from??0,S=n.to,R=0,C=0,$=0,L=false,h=false,A=-1,M=0,w=false,b=false,D=()=>c==="x"?window.scrollX:window.scrollY,P=()=>c==="x"?window.innerWidth:window.innerHeight;function z(){let f=t.getBoundingClientRect(),H=c==="x"?f.left:f.top,ge=c==="x"?f.width:f.height,m=fe({top:H,height:ge},D(),P(),ce,V);R=m.tStart,C=m.tEnd;}function G(f){if(!b)return;let H=S??t.duration??0;t.currentTime=B+(H-B)*f,t.style.setProperty("--scroll-draw-progress",String(f)),k?.(f);}function K(){if(!L||h||!b)return;let f=Z(Y(D(),R,C,1));l&&(A=Math.max(A,f),f=A),M=f,G(f),f>=1&&!w?(w=true,I?.()):f<1&&!l&&(w=false),$=requestAnimationFrame(K);}function ae(){if(b=true,S===void 0&&(S=t.duration),E){G(1),p?.();return}z(),p?.(),L&&!h&&($=requestAnimationFrame(K));}t.readyState>=1?ae():t.addEventListener("loadedmetadata",ae,{once:true}),b||z();let d=new IntersectionObserver(f=>{f.forEach(H=>{L=H.isIntersecting,L&&!h&&b?$=requestAnimationFrame(K):cancelAnimationFrame($);});}),N;function y(){clearTimeout(N),N=setTimeout(z,150);}return window.addEventListener("resize",y),window.addEventListener("orientationchange",y),d.observe(t),Ae(t,{type:"video",getProgress:()=>M,getTrigger:()=>({tStart:R,tEnd:C})}),{destroy(){cancelAnimationFrame($),d.disconnect(),t.removeEventListener("loadedmetadata",ae),window.removeEventListener("resize",y),window.removeEventListener("orientationchange",y),clearTimeout(N),Me(t);},replay(){A=-1,w=false,M=0,h=false,G(0);},pause(){h=true,cancelAnimationFrame($);},resume(){h&&(h=false,L&&b&&($=requestAnimationFrame(K)));},seek(f){let H=Math.min(1,Math.max(0,f));M=H,A=H,h=true,cancelAnimationFrame($),G(H);},getProgress(){return M}}}function pt(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(r)?(t.textContent=r,t.style.whiteSpace="pre"):(t.textContent=r,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(r)?null:t}).filter(r=>r!==null)}function Ft(e){let n=e.textContent??"";return e.textContent="",n.split("").map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=r,r===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),r===" "?null:t}).filter(r=>r!==null)}function mt(e){let n=pt(e),r=new Map;for(let o of n){let l=o.offsetTop;r.has(l)||r.set(l,[]),r.get(l).push(o);}let t=[],i=Array.from(r.keys()).sort((o,l)=>o-l);for(let o of i){let l=r.get(o),c=document.createElement("span");c.setAttribute("aria-hidden","true"),c.style.display="inline-block";for(let a of l)c.appendChild(a);t.push(c);}e.textContent="";for(let o of t)e.appendChild(o),e.appendChild(document.createTextNode(" "));return t}function kt(e,n,r,t){if(r<=1||t===0)return e;let i=(r-1)*t,o=n*t,l=o+(1-i);return l<=o?e>=o?1:0:Math.min(1,Math.max(0,(e-o)/(l-o)))}function Rt(e,n){let r=[];if(n?.y!==void 0&&r.push(`translateY(${n.y*(1-e)}px)`),n?.x!==void 0&&r.push(`translateX(${n.x*(1-e)}px)`),n?.rotate!==void 0&&r.push(`rotate(${n.rotate*(1-e)}deg)`),n?.scale!==void 0){let t=n.scale+(1-n.scale)*e;r.push(`scale(${t})`);}return r.join(" ")||""}var ft={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function dt(e,n={}){if(typeof window>"u")return ft;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollText: element not found:",e),ft;let t=r,{split:i="words",stagger:o=.04,easing:l="ease-out",from:c={opacity:0,y:24},trigger:a={},once:p=true,onComplete:I}=n,k=window.matchMedia("(prefers-reduced-motion: reduce)").matches,E=typeof l=="function"?l:te[l]??te["ease-out"],Z=re(a.start??"top 85%"),ce=re(a.end??"top 40%"),V=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let B;i==="chars"?B=Ft(t):i==="lines"?B=mt(t):B=pt(t);let S=B.length;function R(y,f){c?.opacity!==void 0&&(y.style.opacity=String(c.opacity+(1-c.opacity)*f));let H=Rt(f,c);H&&(y.style.transform=H);}function C(y){t.style.setProperty("--scroll-draw-progress",String(y)),B.forEach((f,H)=>{let ge=E(kt(y,H,S,o));R(f,ge);});}if(k)return C(1),I?.(),{destroy(){t.innerHTML=V,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};C(0);let $=0,L=0,h=0,A=false,M=false,w=-1,b=0,D=false,P=()=>window.scrollY,z=()=>window.innerHeight;function G(){let y=t.getBoundingClientRect(),f=fe({top:y.top,height:y.height},P(),z(),Z,ce);$=f.tStart,L=f.tEnd;}function K(){if(!A||M)return;let y=Y(P(),$,L,1);p&&(w=Math.max(w,y),y=w),b=y,C(y),y>=1&&!D?(D=true,I?.()):y<1&&!p&&(D=false),h=requestAnimationFrame(K);}G();let ae=new IntersectionObserver(y=>{y.forEach(f=>{A=f.isIntersecting,A&&!M?h=requestAnimationFrame(K):cancelAnimationFrame(h);});}),d;function N(){clearTimeout(d),d=setTimeout(()=>{if(i==="lines"){let y=b;t.innerHTML=V,t.setAttribute("aria-label",t.textContent??""),B=mt(t),C(y);}G();},150);}return window.addEventListener("resize",N),window.addEventListener("orientationchange",N),ae.observe(t),Ae(t,{type:"text",getProgress:()=>b,getTrigger:()=>({tStart:$,tEnd:L})}),{destroy(){cancelAnimationFrame(h),ae.disconnect(),window.removeEventListener("resize",N),window.removeEventListener("orientationchange",N),clearTimeout(d),t.innerHTML=V,t.removeAttribute("aria-label"),Me(t);},replay(){w=-1,D=false,b=0,M=false,C(0);},pause(){M=true,cancelAnimationFrame(h);},resume(){M&&(M=false,A&&(h=requestAnimationFrame(K)));},seek(y){let f=Math.min(1,Math.max(0,y));b=f,w=f,M=true,cancelAnimationFrame(h),C(f);},getProgress(){return b}}}function Ht(e,n={}){let[r,t]=zt.useState(0),i=zt.useRef(n);i.current=n;let o=zt.useRef(-1);return zt.useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let l=typeof e=="string"?document.querySelector(e):e.current;if(!l)return;let c=l,{axis:a="y",scrollContainer:p,trigger:I={}}=i.current,k=typeof p=="string"?document.querySelector(p):p??null,E=re(I.start??"top bottom"),Z=re(I.end??"bottom top"),ce=0,V=0,B=false,S=0;function R(){return k?a==="x"?k.scrollLeft:k.scrollTop:a==="x"?window.scrollX:window.scrollY}function C(){return k?a==="x"?k.clientWidth:k.clientHeight:a==="x"?window.innerWidth:window.innerHeight}function $(){let w=c.getBoundingClientRect(),b=R(),D=a==="x"?w.left:w.top,P=a==="x"?w.width:w.height,z=fe({top:D,height:P},b,C(),E,Z);ce=z.tStart,V=z.tEnd;}function L(){if(!B)return;let{speed:w=1,easing:b="linear",once:D=false}=i.current,P=typeof b=="function"?b:te[b]??te.linear,z=Y(R(),ce,V,w),G=P(z);D&&(o.current=Math.max(o.current,G),G=o.current),t(G),S=requestAnimationFrame(L);}let h=new IntersectionObserver(w=>{w.forEach(b=>{B=b.isIntersecting,B?S=requestAnimationFrame(L):cancelAnimationFrame(S);});},{root:k??null,threshold:0});$(),h.observe(c);let A;function M(){clearTimeout(A),A=setTimeout($,150);}return window.addEventListener("resize",M),window.addEventListener("orientationchange",M),()=>{cancelAnimationFrame(S),clearTimeout(A),h.disconnect(),window.removeEventListener("resize",M),window.removeEventListener("orientationchange",M);}},[]),r}function pr({children:e,className:n,style:r,...t}){let i=zt.useRef(null);return zt.useEffect(()=>{if(!i.current)return;let o=rt(i.current,t);return ()=>o.destroy()},[]),jsxRuntime.jsx("div",{ref:i,className:n,style:r,children:e})}function dr({children:e,className:n,style:r,...t}){let i=zt.useRef(null);return zt.useEffect(()=>{if(!i.current)return;let o=at(i.current,t);return ()=>o.destroy()},[]),jsxRuntime.jsx("div",{ref:i,className:n,style:r,children:e})}function gr({className:e,style:n,...r}){let t=zt.useRef(null);return zt.useEffect(()=>{if(!t.current)return;let i=lt(t.current,r);return ()=>i.destroy()},[]),jsxRuntime.jsx("span",{ref:t,className:e,style:n})}function yr({src:e,className:n,style:r,muted:t=true,playsInline:i=true,...o}){let l=zt.useRef(null);return zt.useEffect(()=>{if(!l.current)return;let c=ut(l.current,o);return ()=>c.destroy()},[]),jsxRuntime.jsx("video",{ref:l,src:e,className:n,style:r,muted:t,playsInline:i,preload:"auto"})}function hr({children:e,as:n="p",className:r,style:t,...i}){let o=zt.useRef(null);return zt.useEffect(()=>{if(!o.current)return;let l=dt(o.current,i);return ()=>l.destroy()},[]),zt__default.default.createElement(n,{ref:o,className:r,style:t},e)}exports.ScrollAnimate=dr;exports.ScrollCounter=gr;exports.ScrollDraw=pr;exports.ScrollText=hr;exports.ScrollVideo=yr;exports.useScrollDrawProgress=Ht;
1
+ 'use strict';var _t=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var _t__default=/*#__PURE__*/_interopDefault(_t);function At({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),i=Math.sqrt(t),o=0,c=[];for(let g=0;g<r;g++){let P=Math.pow(i,g);c.push(P),o+=P;}let u=[0],l=0;for(let g=0;g<r;g++)l+=c[g]/o,u.push(l);return g=>{if(g<=0)return 0;if(g>=1)return 1;for(let P=0;P<r;P++)if(g<=u[P+1]){let N=(g-u[P])/(u[P+1]-u[P]);if(P===0)return N*(2-N);let E=1-Math.pow(t,P);return E+(1-E)*(2*N-1)*(2*N-1)}return 1}}function Mt({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),i=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return o=>o<=0?0:o>=1?1:r*Math.pow(2,-10*o)*Math.sin((o-i)*(2*Math.PI)/t)+1}var ne={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:At(),elastic:Mt()};function oe(e="top bottom"){let n=e.trim();if(/^\d+(\.\d+)?%$/.test(n))return {element:"top",viewport:n};let[r="top",t="bottom"]=n.split(/\s+/).filter(Boolean);return {element:r,viewport:t}}function tt(e,n,r,t){switch(t){case "top":return e+r;case "center":return e+r+n/2;case "bottom":return e+r+n;default:return e+r}}function rt(e,n){if(/^\d+(\.\d+)?%$/.test(e))return n*(parseFloat(e)/100);switch(e){case "top":return 0;case "center":return n/2;case "bottom":return n;default:return n}}function Ge(e){let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(r+t)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function Pt(e,n,r){return Math.min(r,Math.max(n,e))}function U(e,n,r,t){return r===n?0:Pt((e-n)/(r-n)*t,0,1)}function me(e,n,r,t,i){let o=tt(e.top,e.height,n,t.element)-rt(t.viewport,r),c=tt(e.top,e.height,n,i.element)-rt(i.viewport,r);return {tStart:o,tEnd:c}}function nt(e){let n=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(n)return [parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16)];let r=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(r)return [parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)];let t=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return t?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}function Oe(e,n,r){let t=nt(e),i=nt(n);return !t||!i?e:`rgb(${Math.round(t[0]+(i[0]-t[0])*r)},${Math.round(t[1]+(i[1]-t[1])*r)},${Math.round(t[2]+(i[2]-t[2])*r)})`}var ot={sketch:{easing:"ease-in",stagger:.1,speed:.9,fade:false},reveal:{easing:"ease-out",fade:true,speed:1.2,once:true},typewriter:{easing:"linear",stagger:.05,speed:1.5},cinematic:{easing:"ease-in-out",fade:true,speed:.75},spring:{easing:"spring",speed:1.1}};function st(e,n){process.env.NODE_ENV!=="production"&&console.warn(`[svg-scroll-draw] ${e}`,n);}var it={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Lt=0;function Ct(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function $t(e){let n=e.getAttribute("stroke"),r=e.getAttribute("fill");!n||n==="none"?st("Element has no stroke \u2014 path will not be visible.",e):r&&r!=="none"&&r!=="transparent"&&st("Element has a fill \u2014 it may obscure the stroke animation.",e);}function kt(e,n,r){let t=document.createElement("div");t.setAttribute("data-svg-scroll-draw-debug",""),t.style.cssText="position:fixed;pointer-events:none;z-index:9999;font-family:monospace;font-size:11px;top:0;left:0;right:0;bottom:0;";function i(){let o=r==="x"?window.scrollX:window.scrollY,c=e-o,u=n-o,l=r==="x";t.innerHTML=`
2
+ <div style="position:absolute;${l?`left:${c}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${c}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
+ <div style="position:absolute;${l?`left:${u}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${u}px;left:0;right:0;border-top:2px dashed #ef4444;`}padding:2px 6px;color:#ef4444;background:rgba(0,0,0,.6)">\u25A0 end</div>`;}return document.body.appendChild(t),window.addEventListener("scroll",i,{passive:true}),i(),t}function Je(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),i=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,o=>{let c=parseFloat(o),u=t[i++]??c;return String(+(c+(u-c)*r).toFixed(4))})}function at(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,i=r?{...ot[r],...t}:t,o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:c="path, polyline, line, polygon, rect, circle",speed:u=1,fade:l=false,easing:g="linear",trigger:P={},stagger:N=0,direction:E="forward",once:J=false,debug:fe=false,axis:F="y",scrollContainer:_,autoReverse:q=false,delay:D=0,strokeColor:T,strokeWidth:A,fillOpacity:h,waypoints:y,velocityScale:C=false,threshold:$=0,rootMargin:k="0px",repeat:S=0,repeatDelay:O=0,morphTo:M,clip:R,autoplay:G=false,duration:W=1e3,native:Y=true,onProgress:d,onStart:I,onComplete:b,onEnter:w,onLeave:Z,onEnterBack:Se,onLeaveBack:be}=i,we=R===true?"left":typeof R=="string"?R:false,ge=typeof g=="function"?g:ne[g]??ne.linear,Re=oe(P.start??"top bottom"),ke=oe(P.end??"bottom top"),ee=typeof _=="string"?document.querySelector(_):_??null,a=Array.isArray(T)?T[0]:null,p=Array.isArray(T)?T[1]:typeof T=="string"?T:null,K=Array.isArray(A)?A[0]:null,B=Array.isArray(A)?A[1]:typeof A=="number"?A:null,te=Array.isArray(h)?h[0]:null,ie=Array.isArray(h)?h[1]:typeof h=="number"?h:null;function re(s){let m=s*100;switch(we){case "right":return `inset(0 0 0 ${100-m}%)`;case "top":return `inset(0 0 ${100-m}% 0)`;case "bottom":return `inset(${100-m}% 0 0 0)`;case "center":return `circle(${s*150}% at 50% 50%)`;default:return `inset(0 ${100-m}% 0 0)`}}let j=we?[]:Array.from(e.querySelectorAll(c)),H=[],pe=[],ye=0,Te=0,ae=false,he=false,se=0,ze=false,ve=-1,Ve=-1,le=false,Ce=0,xe=0,Ae,Ye=null,Me=new Set,qe=-1,Ke=performance.now(),Ne=NaN;function Fe(){return ee?F==="x"?ee.scrollLeft:ee.scrollTop:F==="x"?window.scrollX:window.scrollY}function Qe(){return ee?F==="x"?ee.clientWidth:ee.clientHeight:F==="x"?window.innerWidth:window.innerHeight}function et(){let s=e.getBoundingClientRect(),m,x,Q;if(ee){let ue=ee.getBoundingClientRect();m=F==="x"?s.left-ue.left+ee.scrollLeft:s.top-ue.top+ee.scrollTop,x=F==="x"?s.width:s.height,Q=Fe();}else m=F==="x"?s.left:s.top,x=F==="x"?s.width:s.height,Q=Fe();let ce=me({top:m,height:x},Q,Qe(),Re,ke);ye=ce.tStart,Te=ce.tEnd,fe&&process.env.NODE_ENV!=="production"&&(Ye?.remove(),Ye=kt(ye,Te,F));}function Et(s,m){if(e.style.setProperty("--scroll-draw-progress",String(s)),we){let x=m==="reverse"?1-s:s;e.style.clipPath=re(x);return}j.forEach((x,Q)=>{x.style.strokeDashoffset=m==="reverse"?`${H[Q]*s}`:`${H[Q]*(1-s)}`,l&&(x.style.opacity=m==="reverse"?`${1-s}`:`${s}`),a&&p?x.style.stroke=Oe(a,p,s):p&&(x.style.stroke=p),K!==null&&B!==null?x.style.strokeWidth=`${K+(B-K)*s}`:B!==null&&(x.style.strokeWidth=`${B}`),te!==null&&ie!==null?x.style.fillOpacity=`${te+(ie-te)*s}`:ie!==null&&(x.style.fillOpacity=`${ie}`),M&&x.tagName.toLowerCase()==="path"&&pe[Q]&&x.setAttribute("d",Je(pe[Q],M,s));});}function We(){if(e.style.setProperty("--scroll-draw-progress","0"),we){e.style.clipPath=re(0);return}j.forEach((s,m)=>{s.style.strokeDasharray=`${H[m]}`,s.style.strokeDashoffset=E==="reverse"?"0":`${H[m]}`,l?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",a&&(s.style.stroke=a),K!==null&&(s.style.strokeWidth=`${K}`),te!==null&&(s.style.fillOpacity=`${te}`),M&&s.tagName.toLowerCase()==="path"&&pe[m]&&s.setAttribute("d",pe[m]);});}if(j.forEach(s=>{$t(s);let m=Ge(s);H.push(m),s.tagName.toLowerCase()==="path"?pe.push(s.getAttribute("d")??""):pe.push(""),o?(s.style.strokeDasharray=`${m}`,s.style.strokeDashoffset=E==="reverse"?`${m}`:"0",l&&(s.style.opacity="1"),p&&(s.style.stroke=p),B!==null&&(s.style.strokeWidth=`${B}`),ie!==null&&(s.style.fillOpacity=`${ie}`),M&&s.tagName.toLowerCase()==="path"&&s.setAttribute("d",M)):(s.style.strokeDasharray=`${m}`,s.style.strokeDashoffset=E==="reverse"?"0":`${m}`,l?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",a&&(s.style.stroke=a),K!==null&&(s.style.strokeWidth=`${K}`),te!==null&&(s.style.fillOpacity=`${te}`));}),we){if(o)return e.style.clipPath=re(1),b?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=re(0);}else if(o)return b?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};function St(){return !(Y===false||!Ct()||!j.length||typeof g!="string"||!(g in it)||we||F!=="y"||ee||u!==1||N!==0||J||q||C!==false||M||y||S||D>0||d||I||b||w||Z||Se||be||T!=null||A!=null||h!=null||(P.start??"top bottom").trim()!=="top bottom"||(P.end??"bottom top").trim()!=="bottom top")}function xt(){let s=`svg-scroll-draw-${++Lt}`,m=E==="reverse"?"0":"var(--ssd-len)",x=E==="reverse"?"var(--ssd-len)":"0",Q=`stroke-dashoffset:${m};`,ce=`stroke-dashoffset:${x};`;l&&(Q+=`opacity:${E==="reverse"?1:0};`,ce+=`opacity:${E==="reverse"?0:1};`);let ue=document.createElement("style");ue.setAttribute("data-svg-scroll-draw",""),ue.textContent=`@keyframes ${s}{from{${Q}}to{${ce}}}.${s}{animation-name:${s};animation-duration:auto;animation-timing-function:${it[g]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(ue);function de(f,L){f.style.setProperty("--ssd-len",String(H[L])),f.style.strokeDasharray=`${H[L]}`,f.style.strokeDashoffset="",f.style.opacity="",f.style.animationPlayState="",f.classList.add(s);}j.forEach(de);let v=false,z=-1;function V(){if(z>=0)return z;let f=e.getBoundingClientRect(),{tStart:L,tEnd:X}=me({top:f.top,height:f.height},Fe(),Qe(),Re,ke);return ge(U(Fe(),L,X,u))}return {destroy(){j.forEach(f=>{f.classList.remove(s),f.style.removeProperty("--ssd-len"),f.style.animationPlayState="";}),ue.remove();},replay(){v=false,z=-1,j.forEach(de);},pause(){v=true,j.forEach(f=>{f.style.animationPlayState="paused";});},resume(){v&&(v=false,j.forEach(f=>{f.style.animationPlayState="running";}));},seek(f){let L=Math.min(1,Math.max(0,f));z=L,v=true,j.forEach((X,$e)=>{X.classList.remove(s),X.style.strokeDashoffset=E==="reverse"?`${H[$e]*L}`:`${H[$e]*(1-L)}`,l&&(X.style.opacity=E==="reverse"?`${1-L}`:`${L}`);});},getProgress(){return V()}}}if(St())return xt();function Tt(){let s=Math.max(1,W),m=0,x=0;function Q(V){let f=true;if(we){let L=Math.min(1,Math.max(0,V/s)),X=ge(L);Ce=X,e.style.setProperty("--scroll-draw-progress",String(X)),e.style.clipPath=re(E==="reverse"?1-X:X),d?.(X),L<1&&(f=false);}else j.forEach((L,X)=>{let $e=X*N*s,Ie=Math.min(1,Math.max(0,(V-$e)/s)),Ee=ge(Ie);L.style.strokeDashoffset=E==="reverse"?`${H[X]*Ee}`:`${H[X]*(1-Ee)}`,l&&(L.style.opacity=E==="reverse"?`${1-Ee}`:`${Ee}`),a&&p?L.style.stroke=Oe(a,p,Ee):p&&(L.style.stroke=p),K!==null&&B!==null?L.style.strokeWidth=`${K+(B-K)*Ee}`:B!==null&&(L.style.strokeWidth=`${B}`),te!==null&&ie!==null?L.style.fillOpacity=`${te+(ie-te)*Ee}`:ie!==null&&(L.style.fillOpacity=`${ie}`),M&&L.tagName.toLowerCase()==="path"&&pe[X]&&L.setAttribute("d",Je(pe[X],M,Ee)),X===0&&(d?.(Ee),e.style.setProperty("--scroll-draw-progress",String(Ee))),Ie<1&&(f=false);});if(y){let L=Math.min(1,Math.max(0,V/s)),X=ge(L);for(let $e in y){let Ie=parseFloat($e);X>=Ie&&!Me.has(Ie)&&(Me.add(Ie),y[$e]?.());}}return f}function ce(V){if(le)return;let f=V-m;he||(he=true,I?.());let L=Q(f);if(L&&!ae){ae=true,Q(s*(1+Math.max(0,j.length-1)*N)),b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{m=performance.now(),he=false,ae=false,Me.clear(),We(),se=requestAnimationFrame(ce);},O));return}L||(se=requestAnimationFrame(ce));}function ue(){cancelAnimationFrame(se),clearTimeout(Ae),m=performance.now(),x=0,le=false,he=false,ae=false,xe=0,Me.clear(),We(),se=requestAnimationFrame(ce);}let de=new IntersectionObserver(V=>{V.forEach(f=>{f.isIntersecting&&!(J&&ae)?ue():!f.isIntersecting&&!J&&!ae&&(cancelAnimationFrame(se),clearTimeout(Ae),m=null);});},{root:ee??null,threshold:$,rootMargin:k}),v;function z(){clearTimeout(v),v=setTimeout(()=>{j.forEach((V,f)=>{H[f]=Ge(V),V.style.strokeDasharray=`${H[f]}`;});},150);}return window.addEventListener("resize",z),window.addEventListener("orientationchange",z),D>0?setTimeout(()=>de.observe(e),D):de.observe(e),{destroy(){cancelAnimationFrame(se),clearTimeout(Ae),de.disconnect(),window.removeEventListener("resize",z),window.removeEventListener("orientationchange",z),clearTimeout(v);},replay(){xe=0,ue();},pause(){le||(le=true,x=performance.now()-m,cancelAnimationFrame(se));},resume(){le&&(le=false,m=performance.now()-x,se=requestAnimationFrame(ce));},seek(V){let f=Math.min(1,Math.max(0,V));Ce=f,le=true,x=f*s,m=performance.now()-x,cancelAnimationFrame(se),Q(x);},getProgress(){return Ce}}}if(G)return Tt();et();function Be(){if(!ze||le)return;let s=performance.now(),m=Fe(),x=u;if(C!==false){let v=s-Ke,z=v>0?Math.abs(m-(qe<0?m:qe))/v:0;x=u*Math.max(.2,1+z*(typeof C=="number"?C:1)*.04);}qe=m,Ke=s;let Q=q?Ve===-1||m>=Ve?"forward":"reverse":E;Ve=m;let ce=Te-ye,ue=true,de=ce===0?0:(m-ye)/ce;if(isNaN(Ne)||(Ne<=0&&de>0?w?.():Ne>0&&de<=0&&be?.(),Ne<1&&de>=1?Z?.():Ne>=1&&de<1&&Se?.()),Ne=de,we){let v=ge(U(m,ye,Te,x));J&&!q&&(ve=Math.max(ve,v),v=ve),Ce=v,e.style.setProperty("--scroll-draw-progress",String(v));let z=Q==="reverse"?1-v:v;e.style.clipPath=re(z),d?.(v),!he&&U(m,ye,Te,x)>0&&(he=true,I?.()),v>=1&&!ae?(ae=true,b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{ve=-1,he=false,ae=false,e.style.clipPath=re(0);},O))):v<1&&!J&&(ae=false),se=requestAnimationFrame(Be);return}if(j.forEach((v,z)=>{let V=z*N*ce,f=ge(U(m,ye+V,Te+V,x));J&&!q&&(ve=Math.max(ve,f),f=ve),Ce=f,v.style.strokeDashoffset=Q==="reverse"?`${H[z]*f}`:`${H[z]*(1-f)}`,l&&(v.style.opacity=Q==="reverse"?`${1-f}`:`${f}`),a&&p?v.style.stroke=Oe(a,p,f):p&&(v.style.stroke=p),K!==null&&B!==null?v.style.strokeWidth=`${K+(B-K)*f}`:B!==null&&(v.style.strokeWidth=`${B}`),te!==null&&ie!==null?v.style.fillOpacity=`${te+(ie-te)*f}`:ie!==null&&(v.style.fillOpacity=`${ie}`),M&&v.tagName.toLowerCase()==="path"&&pe[z]&&v.setAttribute("d",Je(pe[z],M,f)),z===0&&(d?.(f),e.style.setProperty("--scroll-draw-progress",String(f))),f<1&&(ue=false);}),y){let v=ge(U(m,ye,Te,x));for(let z in y){let V=parseFloat(z);v>=V&&!Me.has(V)&&(Me.add(V),y[z]?.());}}!he&&U(m,ye,Te,x)>0&&(he=true,I?.()),ue&&!ae?(ae=true,b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{ve=-1,he=false,ae=false,Me.clear(),We();},O))):!ue&&!J&&(ae=false),se=requestAnimationFrame(Be);}let je=new IntersectionObserver(s=>{s.forEach(m=>{ze=m.isIntersecting,ze&&!le?se=requestAnimationFrame(Be):cancelAnimationFrame(se);});},{root:ee??null,threshold:$,rootMargin:k}),Ue;function _e(){clearTimeout(Ue),Ue=setTimeout(()=>{j.forEach((s,m)=>{H[m]=Ge(s),s.style.strokeDasharray=`${H[m]}`;}),et();},150);}return window.addEventListener("resize",_e),window.addEventListener("orientationchange",_e),D>0?setTimeout(()=>je.observe(e),D):je.observe(e),{destroy(){cancelAnimationFrame(se),clearTimeout(Ae),je.disconnect(),window.removeEventListener("resize",_e),window.removeEventListener("orientationchange",_e),clearTimeout(Ue),Ye?.remove();},replay(){ve=-1,Ve=-1,qe=-1,he=false,ae=false,xe=0,le=false,Me.clear(),clearTimeout(Ae),We();},pause(){le=true,cancelAnimationFrame(se);},resume(){le&&(le=false,ze&&(se=requestAnimationFrame(Be)));},seek(s){let m=Math.min(1,Math.max(0,s));Ce=m,ve=m,le=true,cancelAnimationFrame(se),Et(m,E);},getProgress(){return Ce}}}var lt=new Map;function Pe(e,n){lt.set(e,n);}function Le(e){lt.delete(e);}function Nt(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function ct(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let i=[],o=[],c=t[2].trim();if(c)for(let u of c.split(/[\s,]+/)){let l=u.match(/^([-+]?[\d.eE]+)(.*)$/);i.push(l?parseFloat(l[1]):0),o.push(l?l[2]:"");}n.push({fn:t[1],nums:i,units:o});}return n}function It(e,n,r){let t=ct(e),i=ct(n);return t.length===0||t.length!==i.length?r<1?e:n:t.map((o,c)=>{let u=i[c];return o.fn!==u.fn||o.nums.length!==u.nums.length?r<1?`${o.fn}(${o.nums.map((l,g)=>`${l}${o.units[g]}`).join(", ")})`:`${u.fn}(${u.nums.map((l,g)=>`${l}${u.units[g]}`).join(", ")})`:`${o.fn}(${o.nums.map((l,g)=>`${l+(u.nums[g]-l)*r}${o.units[g]}`).join(", ")})`}).join(" ")}function ut(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),i=String(n);if(Nt(t))return Oe(t,i,r);if(t.includes("("))return It(t,i,r);let o=t.match(/^([-+]?[\d.]+)(.*)$/),c=i.match(/^([-+]?[\d.]+)(.*)$/);if(o&&c){let u=parseFloat(o[1]),l=parseFloat(c[1]);return `${u+(l-u)*r}${o[2]||c[2]}`}return r<1?t:i}function Ot(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var mt={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Rt=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Ft=0;function Dt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function ft(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:i={},easing:o="ease-out",speed:c=1,once:u=false,axis:l="y",scrollContainer:g,native:P=true,onProgress:N,onComplete:E,onEnter:J,onLeave:fe,onEnterBack:F,onLeaveBack:_}=n,q=window.matchMedia("(prefers-reduced-motion: reduce)").matches,D=typeof o=="function"?o:ne[o]??ne["ease-out"],T=oe(i.start??"top bottom"),A=oe(i.end??"bottom top"),h=typeof g=="string"?document.querySelector(g):g??null,y=Object.entries(t).map(([a,p])=>({prop:Ot(a),from:Array.isArray(p)?p[0]:"",to:Array.isArray(p)?p[1]:p}));function C(){let a=window.getComputedStyle(e);for(let p of y)p.from===""&&(p.from=a.getPropertyValue(p.prop).trim()||"0");}function $(){for(let a of y)e.style.setProperty(a.prop,String(a.to));}if(q)return $(),E?.(),r;C();function k(){if(!P||!Dt()||typeof o!="string"||!(o in mt)||l!=="y"||h||u||c!==1||N||E||J||fe||F||_||(i.start??"top bottom").trim()!=="top bottom"||(i.end??"bottom top").trim()!=="bottom top")return false;for(let a of y)if(!Rt.has(a.prop))return false;return true}function S(){let a=`ssd-a-${++Ft}`,p=y.map(re=>`${re.prop}:${re.from}`).join(";"),K=y.map(re=>`${re.prop}:${re.to}`).join(";"),B=document.createElement("style");B.setAttribute("data-ssd-animate",""),B.textContent=`@keyframes ${a}{from{${p}}to{${K}}}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${mt[o]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(B),e.classList.add(a);let te=()=>l==="x"?window.scrollX:window.scrollY,ie=()=>l==="x"?window.innerWidth:window.innerHeight;return {destroy(){e.classList.remove(a),B.remove();},replay(){e.classList.remove(a),e.offsetWidth,e.classList.add(a);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(re){let j=Math.min(1,Math.max(0,re));e.classList.remove(a);for(let H of y)e.style.setProperty(H.prop,ut(H.from,H.to,j));},getProgress(){let re=e.getBoundingClientRect(),j=te(),H=ie(),{tStart:pe,tEnd:ye}=me({top:re.top,height:re.height},j,H,T,A);return D(U(j,pe,ye,c))}}}if(k())return S();let O=0,M=0,R=0,G=false,W=false,Y=-1,d=0,I=false,b=NaN,w=()=>h?l==="x"?h.scrollLeft:h.scrollTop:l==="x"?window.scrollX:window.scrollY,Z=()=>h?l==="x"?h.clientWidth:h.clientHeight:l==="x"?window.innerWidth:window.innerHeight;function Se(){let a=e.getBoundingClientRect(),p,K;if(h){let te=h.getBoundingClientRect();p=l==="x"?a.left-te.left+h.scrollLeft:a.top-te.top+h.scrollTop,K=l==="x"?a.width:a.height;}else p=l==="x"?a.left:a.top,K=l==="x"?a.width:a.height;let B=me({top:p,height:K},w(),Z(),T,A);O=B.tStart,M=B.tEnd;}function be(a){e.style.setProperty("--scroll-draw-progress",String(a));for(let p of y)e.style.setProperty(p.prop,ut(p.from,p.to,a));N?.(a);}function we(a){if(isNaN(b)){b=a;return}b<=0&&a>0?J?.():b>0&&a<=0&&_?.(),b<1&&a>=1?fe?.():b>=1&&a<1&&F?.(),b=a;}function ge(){if(!G||W)return;let a=M===O?0:(w()-O)/(M-O);we(a);let p=D(U(w(),O,M,c));u&&(Y=Math.max(Y,p),p=Y),d=p,be(p),p>=1&&!I?(I=true,E?.()):p<1&&!u&&(I=false),R=requestAnimationFrame(ge);}Se();{let a=D(U(w(),O,M,c));u&&a>0&&(Y=a),d=a,be(a);}let Re=new IntersectionObserver(a=>{a.forEach(p=>{G=p.isIntersecting,G&&!W?R=requestAnimationFrame(ge):cancelAnimationFrame(R);});},{root:h??null}),ke;function ee(){clearTimeout(ke),ke=setTimeout(Se,150);}return window.addEventListener("resize",ee),window.addEventListener("orientationchange",ee),Re.observe(e),Pe(e,{type:"animate",getProgress:()=>d,getTrigger:()=>({tStart:O,tEnd:M})}),{destroy(){cancelAnimationFrame(R),Re.disconnect(),window.removeEventListener("resize",ee),window.removeEventListener("orientationchange",ee),clearTimeout(ke),Le(e);},replay(){Y=-1,I=false,d=0,W=false,be(0);},pause(){W=true,cancelAnimationFrame(R);},resume(){W&&(W=false,G&&(R=requestAnimationFrame(ge)));},seek(a){let p=Math.min(1,Math.max(0,a));d=p,Y=p,W=true,cancelAnimationFrame(R),be(p);},getProgress(){return d}}}var Ze={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function pt(e,n){if(typeof window>"u")return Ze;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollCounter: element not found:",e),Ze;let t=r,{from:i=0,to:o,format:c,easing:u="ease-out",trigger:l={},once:g=true,decimals:P,onComplete:N}=n,E=P!==void 0?d=>d.toFixed(P):c??(d=>String(Math.round(d))),J=typeof u=="function"?u:ne[u]??ne["ease-out"],fe=oe(l.start??"top 80%"),F=oe(l.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=E(o),N?.(),Ze;t.textContent=E(i);let q=0,D=0,T=0,A=false,h=false,y=-1,C=0,$=false,k=()=>window.scrollY,S=()=>window.innerHeight;function O(){let d=t.getBoundingClientRect(),I=me({top:d.top,height:d.height},k(),S(),fe,F);q=I.tStart,D=I.tEnd;}function M(d){t.textContent=E(i+(o-i)*d),t.style.setProperty("--scroll-draw-progress",String(d));}function R(){if(!A||h)return;let d=J(U(k(),q,D,1));g&&(y=Math.max(y,d),d=y),C=d,M(d),d>=1&&!$?($=true,N?.()):d<1&&!g&&($=false),T=requestAnimationFrame(R);}O();{let d=J(U(k(),q,D,1));g&&d>0&&(y=d),C=d,M(d);}let G=new IntersectionObserver(d=>{d.forEach(I=>{A=I.isIntersecting,A&&!h?T=requestAnimationFrame(R):cancelAnimationFrame(T);});}),W;function Y(){clearTimeout(W),W=setTimeout(O,150);}return window.addEventListener("resize",Y),window.addEventListener("orientationchange",Y),G.observe(t),Pe(t,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:q,tEnd:D})}),{destroy(){cancelAnimationFrame(T),G.disconnect(),window.removeEventListener("resize",Y),window.removeEventListener("orientationchange",Y),clearTimeout(W),Le(t);},replay(){y=-1,$=false,C=0,h=false,M(0);},pause(){h=true,cancelAnimationFrame(T);},resume(){h&&(h=false,A&&(T=requestAnimationFrame(R)));},seek(d){let I=Math.min(1,Math.max(0,d));C=I,y=I,h=true,cancelAnimationFrame(T),M(I);},getProgress(){return C}}}var dt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function gt(e,n={}){if(typeof window>"u")return dt;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollVideo: <video> element not found:",e),dt;let t=r,{trigger:i={},easing:o="linear",once:c=false,axis:u="y",preload:l="auto",onReady:g,onComplete:P,onProgress:N}=n,E=window.matchMedia("(prefers-reduced-motion: reduce)").matches,J=typeof o=="function"?o:ne[o]??ne.linear,fe=oe(i.start??"top top"),F=oe(i.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=l);let _=n.from??0,q=n.to,D=0,T=0,A=0,h=false,y=false,C=-1,$=0,k=false,S=false,O=()=>u==="x"?window.scrollX:window.scrollY,M=()=>u==="x"?window.innerWidth:window.innerHeight;function R(){let w=t.getBoundingClientRect(),Z=u==="x"?w.left:w.top,Se=u==="x"?w.width:w.height,be=me({top:Z,height:Se},O(),M(),fe,F);D=be.tStart,T=be.tEnd;}function G(w){if(!S)return;let Z=q??t.duration??0;t.currentTime=_+(Z-_)*w,t.style.setProperty("--scroll-draw-progress",String(w)),N?.(w);}function W(){if(!h||y||!S)return;let w=J(U(O(),D,T,1));c&&(C=Math.max(C,w),w=C),$=w,G(w),w>=1&&!k?(k=true,P?.()):w<1&&!c&&(k=false),A=requestAnimationFrame(W);}function Y(){if(S=true,q===void 0&&(q=t.duration),E){G(1),g?.();return}R(),g?.(),h&&!y&&(A=requestAnimationFrame(W));}t.readyState>=1?Y():t.addEventListener("loadedmetadata",Y,{once:true}),S||R();let d=new IntersectionObserver(w=>{w.forEach(Z=>{h=Z.isIntersecting,h&&!y&&S?A=requestAnimationFrame(W):cancelAnimationFrame(A);});}),I;function b(){clearTimeout(I),I=setTimeout(R,150);}return window.addEventListener("resize",b),window.addEventListener("orientationchange",b),d.observe(t),Pe(t,{type:"video",getProgress:()=>$,getTrigger:()=>({tStart:D,tEnd:T})}),{destroy(){cancelAnimationFrame(A),d.disconnect(),t.removeEventListener("loadedmetadata",Y),window.removeEventListener("resize",b),window.removeEventListener("orientationchange",b),clearTimeout(I),Le(t);},replay(){C=-1,k=false,$=0,y=false,G(0);},pause(){y=true,cancelAnimationFrame(A);},resume(){y&&(y=false,h&&S&&(A=requestAnimationFrame(W)));},seek(w){let Z=Math.min(1,Math.max(0,w));$=Z,C=Z,y=true,cancelAnimationFrame(A),G(Z);},getProgress(){return $}}}function bt(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(r)?(t.textContent=r,t.style.whiteSpace="pre"):(t.textContent=r,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(r)?null:t}).filter(r=>r!==null)}function Ht(e){let n=e.textContent??"";return e.textContent="",n.split("").map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=r,r===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),r===" "?null:t}).filter(r=>r!==null)}function yt(e){let n=bt(e),r=new Map;for(let o of n){let c=o.offsetTop;r.has(c)||r.set(c,[]),r.get(c).push(o);}let t=[],i=Array.from(r.keys()).sort((o,c)=>o-c);for(let o of i){let c=r.get(o),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block";for(let l of c)u.appendChild(l);t.push(u);}e.textContent="";for(let o of t)e.appendChild(o),e.appendChild(document.createTextNode(" "));return t}function zt(e,n,r,t){if(r<=1||t===0)return e;let i=(r-1)*t,o=n*t,c=o+(1-i);return c<=o?e>=o?1:0:Math.min(1,Math.max(0,(e-o)/(c-o)))}function Vt(e,n){let r=[];if(n?.y!==void 0&&r.push(`translateY(${n.y*(1-e)}px)`),n?.x!==void 0&&r.push(`translateX(${n.x*(1-e)}px)`),n?.rotate!==void 0&&r.push(`rotate(${n.rotate*(1-e)}deg)`),n?.scale!==void 0){let t=n.scale+(1-n.scale)*e;r.push(`scale(${t})`);}return r.join(" ")||""}var ht={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function wt(e,n={}){if(typeof window>"u")return ht;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollText: element not found:",e),ht;let t=r,{split:i="words",stagger:o=.04,easing:c="ease-out",from:u={opacity:0,y:24},trigger:l={},once:g=true,onComplete:P}=n,N=window.matchMedia("(prefers-reduced-motion: reduce)").matches,E=typeof c=="function"?c:ne[c]??ne["ease-out"],J=oe(l.start??"top 85%"),fe=oe(l.end??"top 40%"),F=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let _;i==="chars"?_=Ht(t):i==="lines"?_=yt(t):_=bt(t);let q=_.length;function D(b,w){u?.opacity!==void 0&&(b.style.opacity=String(u.opacity+(1-u.opacity)*w));let Z=Vt(w,u);Z&&(b.style.transform=Z);}function T(b){t.style.setProperty("--scroll-draw-progress",String(b)),_.forEach((w,Z)=>{let Se=E(zt(b,Z,q,o));D(w,Se);});}if(N)return T(1),P?.(),{destroy(){t.innerHTML=F,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};T(0);let A=0,h=0,y=0,C=false,$=false,k=-1,S=0,O=false,M=()=>window.scrollY,R=()=>window.innerHeight;function G(){let b=t.getBoundingClientRect(),w=me({top:b.top,height:b.height},M(),R(),J,fe);A=w.tStart,h=w.tEnd;}function W(){if(!C||$)return;let b=U(M(),A,h,1);g&&(k=Math.max(k,b),b=k),S=b,T(b),b>=1&&!O?(O=true,P?.()):b<1&&!g&&(O=false),y=requestAnimationFrame(W);}G();let Y=new IntersectionObserver(b=>{b.forEach(w=>{C=w.isIntersecting,C&&!$?y=requestAnimationFrame(W):cancelAnimationFrame(y);});}),d;function I(){clearTimeout(d),d=setTimeout(()=>{if(i==="lines"){let b=S;t.innerHTML=F,t.setAttribute("aria-label",t.textContent??""),_=yt(t),T(b);}G();},150);}return window.addEventListener("resize",I),window.addEventListener("orientationchange",I),Y.observe(t),Pe(t,{type:"text",getProgress:()=>S,getTrigger:()=>({tStart:A,tEnd:h})}),{destroy(){cancelAnimationFrame(y),Y.disconnect(),window.removeEventListener("resize",I),window.removeEventListener("orientationchange",I),clearTimeout(d),t.innerHTML=F,t.removeAttribute("aria-label"),Le(t);},replay(){k=-1,O=false,S=0,$=false,T(0);},pause(){$=true,cancelAnimationFrame(y);},resume(){$&&($=false,C&&(y=requestAnimationFrame(W)));},seek(b){let w=Math.min(1,Math.max(0,b));S=w,k=w,$=true,cancelAnimationFrame(y),T(w);},getProgress(){return S}}}function Bt(e,n={}){let[r,t]=_t.useState(0),i=_t.useRef(n);i.current=n;let o=_t.useRef(-1);return _t.useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let c=typeof e=="string"?document.querySelector(e):e.current;if(!c)return;let u=c,{axis:l="y",scrollContainer:g,trigger:P={}}=i.current,N=typeof g=="string"?document.querySelector(g):g??null,E=oe(P.start??"top bottom"),J=oe(P.end??"bottom top"),fe=0,F=0,_=false,q=0;function D(){return N?l==="x"?N.scrollLeft:N.scrollTop:l==="x"?window.scrollX:window.scrollY}function T(){return N?l==="x"?N.clientWidth:N.clientHeight:l==="x"?window.innerWidth:window.innerHeight}function A(){let k=u.getBoundingClientRect(),S=D(),O=l==="x"?k.left:k.top,M=l==="x"?k.width:k.height,R=me({top:O,height:M},S,T(),E,J);fe=R.tStart,F=R.tEnd;}function h(){if(!_)return;let{speed:k=1,easing:S="linear",once:O=false}=i.current,M=typeof S=="function"?S:ne[S]??ne.linear,R=U(D(),fe,F,k),G=M(R);O&&(o.current=Math.max(o.current,G),G=o.current),t(G),q=requestAnimationFrame(h);}let y=new IntersectionObserver(k=>{k.forEach(S=>{_=S.isIntersecting,_?q=requestAnimationFrame(h):cancelAnimationFrame(q);});},{root:N??null,threshold:0});A(),y.observe(u);let C;function $(){clearTimeout(C),C=setTimeout(A,150);}return window.addEventListener("resize",$),window.addEventListener("orientationchange",$),()=>{cancelAnimationFrame(q),clearTimeout(C),y.disconnect(),window.removeEventListener("resize",$),window.removeEventListener("orientationchange",$);}},[]),r}function br({children:e,className:n,style:r,...t}){let i=_t.useRef(null);return _t.useEffect(()=>{if(!i.current)return;let o=at(i.current,t);return ()=>o.destroy()},[]),jsxRuntime.jsx("div",{ref:i,className:n,style:r,children:e})}function wr({children:e,className:n,style:r,...t}){let i=_t.useRef(null);return _t.useEffect(()=>{if(!i.current)return;let o=ft(i.current,t);return ()=>o.destroy()},[]),jsxRuntime.jsx("div",{ref:i,className:n,style:r,children:e})}function vr({className:e,style:n,...r}){let t=_t.useRef(null);return _t.useEffect(()=>{if(!t.current)return;let i=pt(t.current,r);return ()=>i.destroy()},[]),jsxRuntime.jsx("span",{ref:t,className:e,style:n})}function Er({src:e,className:n,style:r,muted:t=true,playsInline:i=true,...o}){let c=_t.useRef(null);return _t.useEffect(()=>{if(!c.current)return;let u=gt(c.current,o);return ()=>u.destroy()},[]),jsxRuntime.jsx("video",{ref:c,src:e,className:n,style:r,muted:t,playsInline:i,preload:"auto"})}function Sr({children:e,as:n="p",className:r,style:t,...i}){let o=_t.useRef(null);return _t.useEffect(()=>{if(!o.current)return;let c=wt(o.current,i);return ()=>c.destroy()},[]),_t__default.default.createElement(n,{ref:o,className:r,style:t},e)}exports.ScrollAnimate=wr;exports.ScrollCounter=vr;exports.ScrollDraw=br;exports.ScrollText=Sr;exports.ScrollVideo=Er;exports.useScrollDrawProgress=Bt;
@@ -74,6 +74,14 @@ interface ScrollDrawOptions {
74
74
  onProgress?: (alpha: number) => void;
75
75
  onStart?: () => void;
76
76
  onComplete?: () => void;
77
+ /** Fires when scroll position enters the trigger zone (scrolling forward). */
78
+ onEnter?: () => void;
79
+ /** Fires when scroll position exits the trigger zone at the end (scrolling forward). */
80
+ onLeave?: () => void;
81
+ /** Fires when scroll position re-enters the trigger zone from the end (scrolling back). */
82
+ onEnterBack?: () => void;
83
+ /** Fires when scroll position exits the trigger zone at the start (scrolling back). */
84
+ onLeaveBack?: () => void;
77
85
  /**
78
86
  * Trigger the animation when the element enters the viewport instead of
79
87
  * tying it to scroll position. The draw runs over `duration` milliseconds,
@@ -120,6 +128,14 @@ interface ScrollAnimateOptions {
120
128
  native?: boolean;
121
129
  onProgress?: (alpha: number) => void;
122
130
  onComplete?: () => void;
131
+ /** Fires when scroll enters the trigger zone (scrolling forward). */
132
+ onEnter?: () => void;
133
+ /** Fires when scroll exits the trigger zone at the end (scrolling forward). */
134
+ onLeave?: () => void;
135
+ /** Fires when scroll re-enters the trigger zone from the end (scrolling back). */
136
+ onEnterBack?: () => void;
137
+ /** Fires when scroll exits the trigger zone at the start (scrolling back). */
138
+ onLeaveBack?: () => void;
123
139
  }
124
140
 
125
141
  interface ScrollCounterOptions {
@@ -74,6 +74,14 @@ interface ScrollDrawOptions {
74
74
  onProgress?: (alpha: number) => void;
75
75
  onStart?: () => void;
76
76
  onComplete?: () => void;
77
+ /** Fires when scroll position enters the trigger zone (scrolling forward). */
78
+ onEnter?: () => void;
79
+ /** Fires when scroll position exits the trigger zone at the end (scrolling forward). */
80
+ onLeave?: () => void;
81
+ /** Fires when scroll position re-enters the trigger zone from the end (scrolling back). */
82
+ onEnterBack?: () => void;
83
+ /** Fires when scroll position exits the trigger zone at the start (scrolling back). */
84
+ onLeaveBack?: () => void;
77
85
  /**
78
86
  * Trigger the animation when the element enters the viewport instead of
79
87
  * tying it to scroll position. The draw runs over `duration` milliseconds,
@@ -120,6 +128,14 @@ interface ScrollAnimateOptions {
120
128
  native?: boolean;
121
129
  onProgress?: (alpha: number) => void;
122
130
  onComplete?: () => void;
131
+ /** Fires when scroll enters the trigger zone (scrolling forward). */
132
+ onEnter?: () => void;
133
+ /** Fires when scroll exits the trigger zone at the end (scrolling forward). */
134
+ onLeave?: () => void;
135
+ /** Fires when scroll re-enters the trigger zone from the end (scrolling back). */
136
+ onEnterBack?: () => void;
137
+ /** Fires when scroll exits the trigger zone at the start (scrolling back). */
138
+ onLeaveBack?: () => void;
123
139
  }
124
140
 
125
141
  interface ScrollCounterOptions {
@@ -1,3 +1,3 @@
1
- import zt,{useState,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';function vt({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),i=Math.sqrt(t),o=0,l=[];for(let p=0;p<r;p++){let I=Math.pow(i,p);l.push(I),o+=I;}let c=[0],a=0;for(let p=0;p<r;p++)a+=l[p]/o,c.push(a);return p=>{if(p<=0)return 0;if(p>=1)return 1;for(let I=0;I<r;I++)if(p<=c[I+1]){let k=(p-c[I])/(c[I+1]-c[I]);if(I===0)return k*(2-k);let E=1-Math.pow(t,I);return E+(1-E)*(2*k-1)*(2*k-1)}return 1}}function Et({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),i=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return o=>o<=0?0:o>=1?1:r*Math.pow(2,-10*o)*Math.sin((o-i)*(2*Math.PI)/t)+1}var te={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:vt(),elastic:Et()};function re(e="top bottom"){let n=e.trim();if(/^\d+(\.\d+)?%$/.test(n))return {element:"top",viewport:n};let[r="top",t="bottom"]=n.split(/\s+/).filter(Boolean);return {element:r,viewport:t}}function Je(e,n,r,t){switch(t){case "top":return e+r;case "center":return e+r+n/2;case "bottom":return e+r+n;default:return e+r}}function Ze(e,n){if(/^\d+(\.\d+)?%$/.test(e))return n*(parseFloat(e)/100);switch(e){case "top":return 0;case "center":return n/2;case "bottom":return n;default:return n}}function Ve(e){let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(r+t)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function St(e,n,r){return Math.min(r,Math.max(n,e))}function Y(e,n,r,t){return r===n?0:St((e-n)/(r-n)*t,0,1)}function fe(e,n,r,t,i){let o=Je(e.top,e.height,n,t.element)-Ze(t.viewport,r),l=Je(e.top,e.height,n,i.element)-Ze(i.viewport,r);return {tStart:o,tEnd:l}}function Ke(e){let n=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(n)return [parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16)];let r=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(r)return [parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)];let t=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return t?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}function Le(e,n,r){let t=Ke(e),i=Ke(n);return !t||!i?e:`rgb(${Math.round(t[0]+(i[0]-t[0])*r)},${Math.round(t[1]+(i[1]-t[1])*r)},${Math.round(t[2]+(i[2]-t[2])*r)})`}var Qe={sketch:{easing:"ease-in",stagger:.1,speed:.9,fade:false},reveal:{easing:"ease-out",fade:true,speed:1.2,once:true},typewriter:{easing:"linear",stagger:.05,speed:1.5},cinematic:{easing:"ease-in-out",fade:true,speed:.75},spring:{easing:"spring",speed:1.1}};function et(e,n){process.env.NODE_ENV!=="production"&&console.warn(`[svg-scroll-draw] ${e}`,n);}var tt={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},xt=0;function Tt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function At(e){let n=e.getAttribute("stroke"),r=e.getAttribute("fill");!n||n==="none"?et("Element has no stroke \u2014 path will not be visible.",e):r&&r!=="none"&&r!=="transparent"&&et("Element has a fill \u2014 it may obscure the stroke animation.",e);}function Mt(e,n,r){let t=document.createElement("div");t.setAttribute("data-svg-scroll-draw-debug",""),t.style.cssText="position:fixed;pointer-events:none;z-index:9999;font-family:monospace;font-size:11px;top:0;left:0;right:0;bottom:0;";function i(){let o=r==="x"?window.scrollX:window.scrollY,l=e-o,c=n-o,a=r==="x";t.innerHTML=`
2
- <div style="position:absolute;${a?`left:${l}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${l}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
- <div style="position:absolute;${a?`left:${c}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${c}px;left:0;right:0;border-top:2px dashed #ef4444;`}padding:2px 6px;color:#ef4444;background:rgba(0,0,0,.6)">\u25A0 end</div>`;}return document.body.appendChild(t),window.addEventListener("scroll",i,{passive:true}),i(),t}function Ge(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),i=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,o=>{let l=parseFloat(o),c=t[i++]??l;return String(+(l+(c-l)*r).toFixed(4))})}function rt(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,i=r?{...Qe[r],...t}:t,o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:c=1,fade:a=false,easing:p="linear",trigger:I={},stagger:k=0,direction:E="forward",once:Z=false,debug:ce=false,axis:V="y",scrollContainer:B,autoReverse:S=false,delay:R=0,strokeColor:C,strokeWidth:$,fillOpacity:L,waypoints:h,velocityScale:A=false,threshold:M=0,rootMargin:w="0px",repeat:b=0,repeatDelay:D=0,morphTo:P,clip:z,autoplay:G=false,duration:K=1e3,native:ae=true,onProgress:d,onStart:N,onComplete:y}=i,f=z===true?"left":typeof z=="string"?z:false,H=typeof p=="function"?p:te[p]??te.linear,ge=re(I.start??"top bottom"),m=re(I.end??"bottom top"),g=typeof B=="string"?document.querySelector(B):B??null,se=Array.isArray(C)?C[0]:null,_=Array.isArray(C)?C[1]:typeof C=="string"?C:null,Q=Array.isArray($)?$[0]:null,ie=Array.isArray($)?$[1]:typeof $=="number"?$:null,q=Array.isArray(L)?L[0]:null,j=Array.isArray(L)?L[1]:typeof L=="number"?L:null;function pe(s){let u=s*100;switch(f){case "right":return `inset(0 0 0 ${100-u}%)`;case "top":return `inset(0 0 ${100-u}% 0)`;case "bottom":return `inset(${100-u}% 0 0 0)`;case "center":return `circle(${s*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let ne=f?[]:Array.from(e.querySelectorAll(l)),U=[],he=[],Ee=0,Se=0,le=false,ye=false,oe=0,ke=false,be=-1,Re=-1,ue=false,Pe=0,ve=0,xe,We=null,Te=new Set,Ne=-1,Ye=performance.now();function Ie(){return g?V==="x"?g.scrollLeft:g.scrollTop:V==="x"?window.scrollX:window.scrollY}function je(){return g?V==="x"?g.clientWidth:g.clientHeight:V==="x"?window.innerWidth:window.innerHeight}function Ue(){let s=e.getBoundingClientRect(),u,T,J;if(g){let me=g.getBoundingClientRect();u=V==="x"?s.left-me.left+g.scrollLeft:s.top-me.top+g.scrollTop,T=V==="x"?s.width:s.height,J=Ie();}else u=V==="x"?s.left:s.top,T=V==="x"?s.width:s.height,J=Ie();let de=fe({top:u,height:T},J,je(),ge,m);Ee=de.tStart,Se=de.tEnd,ce&&process.env.NODE_ENV!=="production"&&(We?.remove(),We=Mt(Ee,Se,V));}function yt(s,u){if(e.style.setProperty("--scroll-draw-progress",String(s)),f){let T=u==="reverse"?1-s:s;e.style.clipPath=pe(T);return}ne.forEach((T,J)=>{T.style.strokeDashoffset=u==="reverse"?`${U[J]*s}`:`${U[J]*(1-s)}`,a&&(T.style.opacity=u==="reverse"?`${1-s}`:`${s}`),se&&_?T.style.stroke=Le(se,_,s):_&&(T.style.stroke=_),Q!==null&&ie!==null?T.style.strokeWidth=`${Q+(ie-Q)*s}`:ie!==null&&(T.style.strokeWidth=`${ie}`),q!==null&&j!==null?T.style.fillOpacity=`${q+(j-q)*s}`:j!==null&&(T.style.fillOpacity=`${j}`),P&&T.tagName.toLowerCase()==="path"&&he[J]&&T.setAttribute("d",Ge(he[J],P,s));});}function De(){if(e.style.setProperty("--scroll-draw-progress","0"),f){e.style.clipPath=pe(0);return}ne.forEach((s,u)=>{s.style.strokeDasharray=`${U[u]}`,s.style.strokeDashoffset=E==="reverse"?"0":`${U[u]}`,a?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",se&&(s.style.stroke=se),Q!==null&&(s.style.strokeWidth=`${Q}`),q!==null&&(s.style.fillOpacity=`${q}`),P&&s.tagName.toLowerCase()==="path"&&he[u]&&s.setAttribute("d",he[u]);});}if(ne.forEach(s=>{At(s);let u=Ve(s);U.push(u),s.tagName.toLowerCase()==="path"?he.push(s.getAttribute("d")??""):he.push(""),o?(s.style.strokeDasharray=`${u}`,s.style.strokeDashoffset=E==="reverse"?`${u}`:"0",a&&(s.style.opacity="1"),_&&(s.style.stroke=_),ie!==null&&(s.style.strokeWidth=`${ie}`),j!==null&&(s.style.fillOpacity=`${j}`),P&&s.tagName.toLowerCase()==="path"&&s.setAttribute("d",P)):(s.style.strokeDasharray=`${u}`,s.style.strokeDashoffset=E==="reverse"?"0":`${u}`,a?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",se&&(s.style.stroke=se),Q!==null&&(s.style.strokeWidth=`${Q}`),q!==null&&(s.style.fillOpacity=`${q}`));}),f){if(o)return e.style.clipPath=pe(1),y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=pe(0);}else if(o)return y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};function ht(){return !(ae===false||!Tt()||!ne.length||typeof p!="string"||!(p in tt)||f||V!=="y"||g||c!==1||k!==0||Z||S||A!==false||P||h||b||R>0||d||N||y||C!=null||$!=null||L!=null||(I.start??"top bottom").trim()!=="top bottom"||(I.end??"bottom top").trim()!=="bottom top")}function bt(){let s=`svg-scroll-draw-${++xt}`,u=E==="reverse"?"0":"var(--ssd-len)",T=E==="reverse"?"var(--ssd-len)":"0",J=`stroke-dashoffset:${u};`,de=`stroke-dashoffset:${T};`;a&&(J+=`opacity:${E==="reverse"?1:0};`,de+=`opacity:${E==="reverse"?0:1};`);let me=document.createElement("style");me.setAttribute("data-svg-scroll-draw",""),me.textContent=`@keyframes ${s}{from{${J}}to{${de}}}.${s}{animation-name:${s};animation-duration:auto;animation-timing-function:${tt[p]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(me);function x(v,F){v.style.setProperty("--ssd-len",String(U[F])),v.style.strokeDasharray=`${U[F]}`,v.style.strokeDashoffset="",v.style.opacity="",v.style.animationPlayState="",v.classList.add(s);}ne.forEach(x);let W=false,ee=-1;function O(){if(ee>=0)return ee;let v=e.getBoundingClientRect(),{tStart:F,tEnd:X}=fe({top:v.top,height:v.height},Ie(),je(),ge,m);return H(Y(Ie(),F,X,c))}return {destroy(){ne.forEach(v=>{v.classList.remove(s),v.style.removeProperty("--ssd-len"),v.style.animationPlayState="";}),me.remove();},replay(){W=false,ee=-1,ne.forEach(x);},pause(){W=true,ne.forEach(v=>{v.style.animationPlayState="paused";});},resume(){W&&(W=false,ne.forEach(v=>{v.style.animationPlayState="running";}));},seek(v){let F=Math.min(1,Math.max(0,v));ee=F,W=true,ne.forEach((X,Ce)=>{X.classList.remove(s),X.style.strokeDashoffset=E==="reverse"?`${U[Ce]*F}`:`${U[Ce]*(1-F)}`,a&&(X.style.opacity=E==="reverse"?`${1-F}`:`${F}`);});},getProgress(){return O()}}}if(ht())return bt();function wt(){let s=Math.max(1,K),u=0,T=0;function J(O){let v=true;if(f){let F=Math.min(1,Math.max(0,O/s)),X=H(F);Pe=X,e.style.setProperty("--scroll-draw-progress",String(X)),e.style.clipPath=pe(E==="reverse"?1-X:X),d?.(X),F<1&&(v=false);}else ne.forEach((F,X)=>{let Ce=X*k*s,$e=Math.min(1,Math.max(0,(O-Ce)/s)),we=H($e);F.style.strokeDashoffset=E==="reverse"?`${U[X]*we}`:`${U[X]*(1-we)}`,a&&(F.style.opacity=E==="reverse"?`${1-we}`:`${we}`),se&&_?F.style.stroke=Le(se,_,we):_&&(F.style.stroke=_),Q!==null&&ie!==null?F.style.strokeWidth=`${Q+(ie-Q)*we}`:ie!==null&&(F.style.strokeWidth=`${ie}`),q!==null&&j!==null?F.style.fillOpacity=`${q+(j-q)*we}`:j!==null&&(F.style.fillOpacity=`${j}`),P&&F.tagName.toLowerCase()==="path"&&he[X]&&F.setAttribute("d",Ge(he[X],P,we)),X===0&&(d?.(we),e.style.setProperty("--scroll-draw-progress",String(we))),$e<1&&(v=false);});if(h){let F=Math.min(1,Math.max(0,O/s)),X=H(F);for(let Ce in h){let $e=parseFloat(Ce);X>=$e&&!Te.has($e)&&(Te.add($e),h[Ce]?.());}}return v}function de(O){if(ue)return;let v=O-u;ye||(ye=true,N?.());let F=J(v);if(F&&!le){le=true,J(s*(1+Math.max(0,ne.length-1)*k)),y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{u=performance.now(),ye=false,le=false,Te.clear(),De(),oe=requestAnimationFrame(de);},D));return}F||(oe=requestAnimationFrame(de));}function me(){cancelAnimationFrame(oe),clearTimeout(xe),u=performance.now(),T=0,ue=false,ye=false,le=false,ve=0,Te.clear(),De(),oe=requestAnimationFrame(de);}let x=new IntersectionObserver(O=>{O.forEach(v=>{v.isIntersecting&&!(Z&&le)?me():!v.isIntersecting&&!Z&&!le&&(cancelAnimationFrame(oe),clearTimeout(xe),u=null);});},{root:g??null,threshold:M,rootMargin:w}),W;function ee(){clearTimeout(W),W=setTimeout(()=>{ne.forEach((O,v)=>{U[v]=Ve(O),O.style.strokeDasharray=`${U[v]}`;});},150);}return window.addEventListener("resize",ee),window.addEventListener("orientationchange",ee),R>0?setTimeout(()=>x.observe(e),R):x.observe(e),{destroy(){cancelAnimationFrame(oe),clearTimeout(xe),x.disconnect(),window.removeEventListener("resize",ee),window.removeEventListener("orientationchange",ee),clearTimeout(W);},replay(){ve=0,me();},pause(){ue||(ue=true,T=performance.now()-u,cancelAnimationFrame(oe));},resume(){ue&&(ue=false,u=performance.now()-T,oe=requestAnimationFrame(de));},seek(O){let v=Math.min(1,Math.max(0,O));Pe=v,ue=true,T=v*s,u=performance.now()-T,cancelAnimationFrame(oe),J(T);},getProgress(){return Pe}}}if(G)return wt();Ue();function He(){if(!ke||ue)return;let s=performance.now(),u=Ie(),T=c;if(A!==false){let x=s-Ye,W=x>0?Math.abs(u-(Ne<0?u:Ne))/x:0;T=c*Math.max(.2,1+W*(typeof A=="number"?A:1)*.04);}Ne=u,Ye=s;let J=S?Re===-1||u>=Re?"forward":"reverse":E;Re=u;let de=Se-Ee,me=true;if(f){let x=H(Y(u,Ee,Se,T));Z&&!S&&(be=Math.max(be,x),x=be),Pe=x,e.style.setProperty("--scroll-draw-progress",String(x));let W=J==="reverse"?1-x:x;e.style.clipPath=pe(W),d?.(x),!ye&&Y(u,Ee,Se,T)>0&&(ye=true,N?.()),x>=1&&!le?(le=true,y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{be=-1,ye=false,le=false,e.style.clipPath=pe(0);},D))):x<1&&!Z&&(le=false),oe=requestAnimationFrame(He);return}if(ne.forEach((x,W)=>{let ee=W*k*de,O=H(Y(u,Ee+ee,Se+ee,T));Z&&!S&&(be=Math.max(be,O),O=be),Pe=O,x.style.strokeDashoffset=J==="reverse"?`${U[W]*O}`:`${U[W]*(1-O)}`,a&&(x.style.opacity=J==="reverse"?`${1-O}`:`${O}`),se&&_?x.style.stroke=Le(se,_,O):_&&(x.style.stroke=_),Q!==null&&ie!==null?x.style.strokeWidth=`${Q+(ie-Q)*O}`:ie!==null&&(x.style.strokeWidth=`${ie}`),q!==null&&j!==null?x.style.fillOpacity=`${q+(j-q)*O}`:j!==null&&(x.style.fillOpacity=`${j}`),P&&x.tagName.toLowerCase()==="path"&&he[W]&&x.setAttribute("d",Ge(he[W],P,O)),W===0&&(d?.(O),e.style.setProperty("--scroll-draw-progress",String(O))),O<1&&(me=false);}),h){let x=H(Y(u,Ee,Se,T));for(let W in h){let ee=parseFloat(W);x>=ee&&!Te.has(ee)&&(Te.add(ee),h[W]?.());}}!ye&&Y(u,Ee,Se,T)>0&&(ye=true,N?.()),me&&!le?(le=true,y?.(),ve<(b==="infinite"?1/0:b??0)&&(ve++,xe=setTimeout(()=>{be=-1,ye=false,le=false,Te.clear(),De();},D))):!me&&!Z&&(le=false),oe=requestAnimationFrame(He);}let _e=new IntersectionObserver(s=>{s.forEach(u=>{ke=u.isIntersecting,ke&&!ue?oe=requestAnimationFrame(He):cancelAnimationFrame(oe);});},{root:g??null,threshold:M,rootMargin:w}),Be;function ze(){clearTimeout(Be),Be=setTimeout(()=>{ne.forEach((s,u)=>{U[u]=Ve(s),s.style.strokeDasharray=`${U[u]}`;}),Ue();},150);}return window.addEventListener("resize",ze),window.addEventListener("orientationchange",ze),R>0?setTimeout(()=>_e.observe(e),R):_e.observe(e),{destroy(){cancelAnimationFrame(oe),clearTimeout(xe),_e.disconnect(),window.removeEventListener("resize",ze),window.removeEventListener("orientationchange",ze),clearTimeout(Be),We?.remove();},replay(){be=-1,Re=-1,Ne=-1,ye=false,le=false,ve=0,ue=false,Te.clear(),clearTimeout(xe),De();},pause(){ue=true,cancelAnimationFrame(oe);},resume(){ue&&(ue=false,ke&&(oe=requestAnimationFrame(He)));},seek(s){let u=Math.min(1,Math.max(0,s));Pe=u,be=u,ue=true,cancelAnimationFrame(oe),yt(u,E);},getProgress(){return Pe}}}var nt=new Map;function Ae(e,n){nt.set(e,n);}function Me(e){nt.delete(e);}function Pt(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function ot(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let i=[],o=[],l=t[2].trim();if(l)for(let c of l.split(/[\s,]+/)){let a=c.match(/^([-+]?[\d.eE]+)(.*)$/);i.push(a?parseFloat(a[1]):0),o.push(a?a[2]:"");}n.push({fn:t[1],nums:i,units:o});}return n}function Ct(e,n,r){let t=ot(e),i=ot(n);return t.length===0||t.length!==i.length?r<1?e:n:t.map((o,l)=>{let c=i[l];return o.fn!==c.fn||o.nums.length!==c.nums.length?r<1?`${o.fn}(${o.nums.map((a,p)=>`${a}${o.units[p]}`).join(", ")})`:`${c.fn}(${c.nums.map((a,p)=>`${a}${c.units[p]}`).join(", ")})`:`${o.fn}(${o.nums.map((a,p)=>`${a+(c.nums[p]-a)*r}${o.units[p]}`).join(", ")})`}).join(" ")}function st(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),i=String(n);if(Pt(t))return Le(t,i,r);if(t.includes("("))return Ct(t,i,r);let o=t.match(/^([-+]?[\d.]+)(.*)$/),l=i.match(/^([-+]?[\d.]+)(.*)$/);if(o&&l){let c=parseFloat(o[1]),a=parseFloat(l[1]);return `${c+(a-c)*r}${o[2]||l[2]}`}return r<1?t:i}function $t(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var it={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Lt=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),It=0;function Ot(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function at(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:i={},easing:o="ease-out",speed:l=1,once:c=false,axis:a="y",scrollContainer:p,native:I=true,onProgress:k,onComplete:E}=n,Z=window.matchMedia("(prefers-reduced-motion: reduce)").matches,ce=typeof o=="function"?o:te[o]??te["ease-out"],V=re(i.start??"top bottom"),B=re(i.end??"bottom top"),S=typeof p=="string"?document.querySelector(p):p??null,R=Object.entries(t).map(([m,g])=>({prop:$t(m),from:Array.isArray(g)?g[0]:"",to:Array.isArray(g)?g[1]:g}));function C(){let m=window.getComputedStyle(e);for(let g of R)g.from===""&&(g.from=m.getPropertyValue(g.prop).trim()||"0");}function $(){for(let m of R)e.style.setProperty(m.prop,String(m.to));}if(Z)return $(),E?.(),r;C();function L(){if(!I||!Ot()||typeof o!="string"||!(o in it)||a!=="y"||S||c||l!==1||k||E||(i.start??"top bottom").trim()!=="top bottom"||(i.end??"bottom top").trim()!=="bottom top")return false;for(let m of R)if(!Lt.has(m.prop))return false;return true}function h(){let m=`ssd-a-${++It}`,g=R.map(q=>`${q.prop}:${q.from}`).join(";"),se=R.map(q=>`${q.prop}:${q.to}`).join(";"),_=document.createElement("style");_.setAttribute("data-ssd-animate",""),_.textContent=`@keyframes ${m}{from{${g}}to{${se}}}.${m}{animation-name:${m};animation-duration:auto;animation-timing-function:${it[o]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(_),e.classList.add(m);let Q=()=>a==="x"?window.scrollX:window.scrollY,ie=()=>a==="x"?window.innerWidth:window.innerHeight;return {destroy(){e.classList.remove(m),_.remove();},replay(){e.classList.remove(m),e.offsetWidth,e.classList.add(m);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(q){let j=Math.min(1,Math.max(0,q));e.classList.remove(m);for(let pe of R)e.style.setProperty(pe.prop,st(pe.from,pe.to,j));},getProgress(){let q=e.getBoundingClientRect(),j=Q(),pe=ie(),{tStart:ne,tEnd:U}=fe({top:q.top,height:q.height},j,pe,V,B);return ce(Y(j,ne,U,l))}}}if(L())return h();let A=0,M=0,w=0,b=false,D=false,P=-1,z=0,G=false,K=()=>S?a==="x"?S.scrollLeft:S.scrollTop:a==="x"?window.scrollX:window.scrollY,ae=()=>S?a==="x"?S.clientWidth:S.clientHeight:a==="x"?window.innerWidth:window.innerHeight;function d(){let m=e.getBoundingClientRect(),g,se;if(S){let Q=S.getBoundingClientRect();g=a==="x"?m.left-Q.left+S.scrollLeft:m.top-Q.top+S.scrollTop,se=a==="x"?m.width:m.height;}else g=a==="x"?m.left:m.top,se=a==="x"?m.width:m.height;let _=fe({top:g,height:se},K(),ae(),V,B);A=_.tStart,M=_.tEnd;}function N(m){e.style.setProperty("--scroll-draw-progress",String(m));for(let g of R)e.style.setProperty(g.prop,st(g.from,g.to,m));k?.(m);}function y(){if(!b||D)return;let m=ce(Y(K(),A,M,l));c&&(P=Math.max(P,m),m=P),z=m,N(m),m>=1&&!G?(G=true,E?.()):m<1&&!c&&(G=false),w=requestAnimationFrame(y);}d();{let m=ce(Y(K(),A,M,l));c&&m>0&&(P=m),z=m,N(m);}let f=new IntersectionObserver(m=>{m.forEach(g=>{b=g.isIntersecting,b&&!D?w=requestAnimationFrame(y):cancelAnimationFrame(w);});},{root:S??null}),H;function ge(){clearTimeout(H),H=setTimeout(d,150);}return window.addEventListener("resize",ge),window.addEventListener("orientationchange",ge),f.observe(e),Ae(e,{type:"animate",getProgress:()=>z,getTrigger:()=>({tStart:A,tEnd:M})}),{destroy(){cancelAnimationFrame(w),f.disconnect(),window.removeEventListener("resize",ge),window.removeEventListener("orientationchange",ge),clearTimeout(H),Me(e);},replay(){P=-1,G=false,z=0,D=false,N(0);},pause(){D=true,cancelAnimationFrame(w);},resume(){D&&(D=false,b&&(w=requestAnimationFrame(y)));},seek(m){let g=Math.min(1,Math.max(0,m));z=g,P=g,D=true,cancelAnimationFrame(w),N(g);},getProgress(){return z}}}var Xe={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function lt(e,n){if(typeof window>"u")return Xe;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollCounter: element not found:",e),Xe;let t=r,{from:i=0,to:o,format:l,easing:c="ease-out",trigger:a={},once:p=true,decimals:I,onComplete:k}=n,E=I!==void 0?d=>d.toFixed(I):l??(d=>String(Math.round(d))),Z=typeof c=="function"?c:te[c]??te["ease-out"],ce=re(a.start??"top 80%"),V=re(a.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=E(o),k?.(),Xe;t.textContent=E(i);let S=0,R=0,C=0,$=false,L=false,h=-1,A=0,M=false,w=()=>window.scrollY,b=()=>window.innerHeight;function D(){let d=t.getBoundingClientRect(),N=fe({top:d.top,height:d.height},w(),b(),ce,V);S=N.tStart,R=N.tEnd;}function P(d){t.textContent=E(i+(o-i)*d),t.style.setProperty("--scroll-draw-progress",String(d));}function z(){if(!$||L)return;let d=Z(Y(w(),S,R,1));p&&(h=Math.max(h,d),d=h),A=d,P(d),d>=1&&!M?(M=true,k?.()):d<1&&!p&&(M=false),C=requestAnimationFrame(z);}D();{let d=Z(Y(w(),S,R,1));p&&d>0&&(h=d),A=d,P(d);}let G=new IntersectionObserver(d=>{d.forEach(N=>{$=N.isIntersecting,$&&!L?C=requestAnimationFrame(z):cancelAnimationFrame(C);});}),K;function ae(){clearTimeout(K),K=setTimeout(D,150);}return window.addEventListener("resize",ae),window.addEventListener("orientationchange",ae),G.observe(t),Ae(t,{type:"counter",getProgress:()=>A,getTrigger:()=>({tStart:S,tEnd:R})}),{destroy(){cancelAnimationFrame(C),G.disconnect(),window.removeEventListener("resize",ae),window.removeEventListener("orientationchange",ae),clearTimeout(K),Me(t);},replay(){h=-1,M=false,A=0,L=false,P(0);},pause(){L=true,cancelAnimationFrame(C);},resume(){L&&(L=false,$&&(C=requestAnimationFrame(z)));},seek(d){let N=Math.min(1,Math.max(0,d));A=N,h=N,L=true,cancelAnimationFrame(C),P(N);},getProgress(){return A}}}var ct={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function ut(e,n={}){if(typeof window>"u")return ct;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollVideo: <video> element not found:",e),ct;let t=r,{trigger:i={},easing:o="linear",once:l=false,axis:c="y",preload:a="auto",onReady:p,onComplete:I,onProgress:k}=n,E=window.matchMedia("(prefers-reduced-motion: reduce)").matches,Z=typeof o=="function"?o:te[o]??te.linear,ce=re(i.start??"top top"),V=re(i.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=a);let B=n.from??0,S=n.to,R=0,C=0,$=0,L=false,h=false,A=-1,M=0,w=false,b=false,D=()=>c==="x"?window.scrollX:window.scrollY,P=()=>c==="x"?window.innerWidth:window.innerHeight;function z(){let f=t.getBoundingClientRect(),H=c==="x"?f.left:f.top,ge=c==="x"?f.width:f.height,m=fe({top:H,height:ge},D(),P(),ce,V);R=m.tStart,C=m.tEnd;}function G(f){if(!b)return;let H=S??t.duration??0;t.currentTime=B+(H-B)*f,t.style.setProperty("--scroll-draw-progress",String(f)),k?.(f);}function K(){if(!L||h||!b)return;let f=Z(Y(D(),R,C,1));l&&(A=Math.max(A,f),f=A),M=f,G(f),f>=1&&!w?(w=true,I?.()):f<1&&!l&&(w=false),$=requestAnimationFrame(K);}function ae(){if(b=true,S===void 0&&(S=t.duration),E){G(1),p?.();return}z(),p?.(),L&&!h&&($=requestAnimationFrame(K));}t.readyState>=1?ae():t.addEventListener("loadedmetadata",ae,{once:true}),b||z();let d=new IntersectionObserver(f=>{f.forEach(H=>{L=H.isIntersecting,L&&!h&&b?$=requestAnimationFrame(K):cancelAnimationFrame($);});}),N;function y(){clearTimeout(N),N=setTimeout(z,150);}return window.addEventListener("resize",y),window.addEventListener("orientationchange",y),d.observe(t),Ae(t,{type:"video",getProgress:()=>M,getTrigger:()=>({tStart:R,tEnd:C})}),{destroy(){cancelAnimationFrame($),d.disconnect(),t.removeEventListener("loadedmetadata",ae),window.removeEventListener("resize",y),window.removeEventListener("orientationchange",y),clearTimeout(N),Me(t);},replay(){A=-1,w=false,M=0,h=false,G(0);},pause(){h=true,cancelAnimationFrame($);},resume(){h&&(h=false,L&&b&&($=requestAnimationFrame(K)));},seek(f){let H=Math.min(1,Math.max(0,f));M=H,A=H,h=true,cancelAnimationFrame($),G(H);},getProgress(){return M}}}function pt(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(r)?(t.textContent=r,t.style.whiteSpace="pre"):(t.textContent=r,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(r)?null:t}).filter(r=>r!==null)}function Ft(e){let n=e.textContent??"";return e.textContent="",n.split("").map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=r,r===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),r===" "?null:t}).filter(r=>r!==null)}function mt(e){let n=pt(e),r=new Map;for(let o of n){let l=o.offsetTop;r.has(l)||r.set(l,[]),r.get(l).push(o);}let t=[],i=Array.from(r.keys()).sort((o,l)=>o-l);for(let o of i){let l=r.get(o),c=document.createElement("span");c.setAttribute("aria-hidden","true"),c.style.display="inline-block";for(let a of l)c.appendChild(a);t.push(c);}e.textContent="";for(let o of t)e.appendChild(o),e.appendChild(document.createTextNode(" "));return t}function kt(e,n,r,t){if(r<=1||t===0)return e;let i=(r-1)*t,o=n*t,l=o+(1-i);return l<=o?e>=o?1:0:Math.min(1,Math.max(0,(e-o)/(l-o)))}function Rt(e,n){let r=[];if(n?.y!==void 0&&r.push(`translateY(${n.y*(1-e)}px)`),n?.x!==void 0&&r.push(`translateX(${n.x*(1-e)}px)`),n?.rotate!==void 0&&r.push(`rotate(${n.rotate*(1-e)}deg)`),n?.scale!==void 0){let t=n.scale+(1-n.scale)*e;r.push(`scale(${t})`);}return r.join(" ")||""}var ft={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function dt(e,n={}){if(typeof window>"u")return ft;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollText: element not found:",e),ft;let t=r,{split:i="words",stagger:o=.04,easing:l="ease-out",from:c={opacity:0,y:24},trigger:a={},once:p=true,onComplete:I}=n,k=window.matchMedia("(prefers-reduced-motion: reduce)").matches,E=typeof l=="function"?l:te[l]??te["ease-out"],Z=re(a.start??"top 85%"),ce=re(a.end??"top 40%"),V=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let B;i==="chars"?B=Ft(t):i==="lines"?B=mt(t):B=pt(t);let S=B.length;function R(y,f){c?.opacity!==void 0&&(y.style.opacity=String(c.opacity+(1-c.opacity)*f));let H=Rt(f,c);H&&(y.style.transform=H);}function C(y){t.style.setProperty("--scroll-draw-progress",String(y)),B.forEach((f,H)=>{let ge=E(kt(y,H,S,o));R(f,ge);});}if(k)return C(1),I?.(),{destroy(){t.innerHTML=V,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};C(0);let $=0,L=0,h=0,A=false,M=false,w=-1,b=0,D=false,P=()=>window.scrollY,z=()=>window.innerHeight;function G(){let y=t.getBoundingClientRect(),f=fe({top:y.top,height:y.height},P(),z(),Z,ce);$=f.tStart,L=f.tEnd;}function K(){if(!A||M)return;let y=Y(P(),$,L,1);p&&(w=Math.max(w,y),y=w),b=y,C(y),y>=1&&!D?(D=true,I?.()):y<1&&!p&&(D=false),h=requestAnimationFrame(K);}G();let ae=new IntersectionObserver(y=>{y.forEach(f=>{A=f.isIntersecting,A&&!M?h=requestAnimationFrame(K):cancelAnimationFrame(h);});}),d;function N(){clearTimeout(d),d=setTimeout(()=>{if(i==="lines"){let y=b;t.innerHTML=V,t.setAttribute("aria-label",t.textContent??""),B=mt(t),C(y);}G();},150);}return window.addEventListener("resize",N),window.addEventListener("orientationchange",N),ae.observe(t),Ae(t,{type:"text",getProgress:()=>b,getTrigger:()=>({tStart:$,tEnd:L})}),{destroy(){cancelAnimationFrame(h),ae.disconnect(),window.removeEventListener("resize",N),window.removeEventListener("orientationchange",N),clearTimeout(d),t.innerHTML=V,t.removeAttribute("aria-label"),Me(t);},replay(){w=-1,D=false,b=0,M=false,C(0);},pause(){M=true,cancelAnimationFrame(h);},resume(){M&&(M=false,A&&(h=requestAnimationFrame(K)));},seek(y){let f=Math.min(1,Math.max(0,y));b=f,w=f,M=true,cancelAnimationFrame(h),C(f);},getProgress(){return b}}}function Ht(e,n={}){let[r,t]=useState(0),i=useRef(n);i.current=n;let o=useRef(-1);return useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let l=typeof e=="string"?document.querySelector(e):e.current;if(!l)return;let c=l,{axis:a="y",scrollContainer:p,trigger:I={}}=i.current,k=typeof p=="string"?document.querySelector(p):p??null,E=re(I.start??"top bottom"),Z=re(I.end??"bottom top"),ce=0,V=0,B=false,S=0;function R(){return k?a==="x"?k.scrollLeft:k.scrollTop:a==="x"?window.scrollX:window.scrollY}function C(){return k?a==="x"?k.clientWidth:k.clientHeight:a==="x"?window.innerWidth:window.innerHeight}function $(){let w=c.getBoundingClientRect(),b=R(),D=a==="x"?w.left:w.top,P=a==="x"?w.width:w.height,z=fe({top:D,height:P},b,C(),E,Z);ce=z.tStart,V=z.tEnd;}function L(){if(!B)return;let{speed:w=1,easing:b="linear",once:D=false}=i.current,P=typeof b=="function"?b:te[b]??te.linear,z=Y(R(),ce,V,w),G=P(z);D&&(o.current=Math.max(o.current,G),G=o.current),t(G),S=requestAnimationFrame(L);}let h=new IntersectionObserver(w=>{w.forEach(b=>{B=b.isIntersecting,B?S=requestAnimationFrame(L):cancelAnimationFrame(S);});},{root:k??null,threshold:0});$(),h.observe(c);let A;function M(){clearTimeout(A),A=setTimeout($,150);}return window.addEventListener("resize",M),window.addEventListener("orientationchange",M),()=>{cancelAnimationFrame(S),clearTimeout(A),h.disconnect(),window.removeEventListener("resize",M),window.removeEventListener("orientationchange",M);}},[]),r}function pr({children:e,className:n,style:r,...t}){let i=useRef(null);return useEffect(()=>{if(!i.current)return;let o=rt(i.current,t);return ()=>o.destroy()},[]),jsx("div",{ref:i,className:n,style:r,children:e})}function dr({children:e,className:n,style:r,...t}){let i=useRef(null);return useEffect(()=>{if(!i.current)return;let o=at(i.current,t);return ()=>o.destroy()},[]),jsx("div",{ref:i,className:n,style:r,children:e})}function gr({className:e,style:n,...r}){let t=useRef(null);return useEffect(()=>{if(!t.current)return;let i=lt(t.current,r);return ()=>i.destroy()},[]),jsx("span",{ref:t,className:e,style:n})}function yr({src:e,className:n,style:r,muted:t=true,playsInline:i=true,...o}){let l=useRef(null);return useEffect(()=>{if(!l.current)return;let c=ut(l.current,o);return ()=>c.destroy()},[]),jsx("video",{ref:l,src:e,className:n,style:r,muted:t,playsInline:i,preload:"auto"})}function hr({children:e,as:n="p",className:r,style:t,...i}){let o=useRef(null);return useEffect(()=>{if(!o.current)return;let l=dt(o.current,i);return ()=>l.destroy()},[]),zt.createElement(n,{ref:o,className:r,style:t},e)}export{dr as ScrollAnimate,gr as ScrollCounter,pr as ScrollDraw,hr as ScrollText,yr as ScrollVideo,Ht as useScrollDrawProgress};
1
+ import _t,{useState,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';function At({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),i=Math.sqrt(t),o=0,c=[];for(let g=0;g<r;g++){let P=Math.pow(i,g);c.push(P),o+=P;}let u=[0],l=0;for(let g=0;g<r;g++)l+=c[g]/o,u.push(l);return g=>{if(g<=0)return 0;if(g>=1)return 1;for(let P=0;P<r;P++)if(g<=u[P+1]){let N=(g-u[P])/(u[P+1]-u[P]);if(P===0)return N*(2-N);let E=1-Math.pow(t,P);return E+(1-E)*(2*N-1)*(2*N-1)}return 1}}function Mt({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),i=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return o=>o<=0?0:o>=1?1:r*Math.pow(2,-10*o)*Math.sin((o-i)*(2*Math.PI)/t)+1}var ne={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:At(),elastic:Mt()};function oe(e="top bottom"){let n=e.trim();if(/^\d+(\.\d+)?%$/.test(n))return {element:"top",viewport:n};let[r="top",t="bottom"]=n.split(/\s+/).filter(Boolean);return {element:r,viewport:t}}function tt(e,n,r,t){switch(t){case "top":return e+r;case "center":return e+r+n/2;case "bottom":return e+r+n;default:return e+r}}function rt(e,n){if(/^\d+(\.\d+)?%$/.test(e))return n*(parseFloat(e)/100);switch(e){case "top":return 0;case "center":return n/2;case "bottom":return n;default:return n}}function Ge(e){let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(r+t)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function Pt(e,n,r){return Math.min(r,Math.max(n,e))}function U(e,n,r,t){return r===n?0:Pt((e-n)/(r-n)*t,0,1)}function me(e,n,r,t,i){let o=tt(e.top,e.height,n,t.element)-rt(t.viewport,r),c=tt(e.top,e.height,n,i.element)-rt(i.viewport,r);return {tStart:o,tEnd:c}}function nt(e){let n=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(n)return [parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16)];let r=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(r)return [parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)];let t=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return t?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}function Oe(e,n,r){let t=nt(e),i=nt(n);return !t||!i?e:`rgb(${Math.round(t[0]+(i[0]-t[0])*r)},${Math.round(t[1]+(i[1]-t[1])*r)},${Math.round(t[2]+(i[2]-t[2])*r)})`}var ot={sketch:{easing:"ease-in",stagger:.1,speed:.9,fade:false},reveal:{easing:"ease-out",fade:true,speed:1.2,once:true},typewriter:{easing:"linear",stagger:.05,speed:1.5},cinematic:{easing:"ease-in-out",fade:true,speed:.75},spring:{easing:"spring",speed:1.1}};function st(e,n){process.env.NODE_ENV!=="production"&&console.warn(`[svg-scroll-draw] ${e}`,n);}var it={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Lt=0;function Ct(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function $t(e){let n=e.getAttribute("stroke"),r=e.getAttribute("fill");!n||n==="none"?st("Element has no stroke \u2014 path will not be visible.",e):r&&r!=="none"&&r!=="transparent"&&st("Element has a fill \u2014 it may obscure the stroke animation.",e);}function kt(e,n,r){let t=document.createElement("div");t.setAttribute("data-svg-scroll-draw-debug",""),t.style.cssText="position:fixed;pointer-events:none;z-index:9999;font-family:monospace;font-size:11px;top:0;left:0;right:0;bottom:0;";function i(){let o=r==="x"?window.scrollX:window.scrollY,c=e-o,u=n-o,l=r==="x";t.innerHTML=`
2
+ <div style="position:absolute;${l?`left:${c}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${c}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
+ <div style="position:absolute;${l?`left:${u}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${u}px;left:0;right:0;border-top:2px dashed #ef4444;`}padding:2px 6px;color:#ef4444;background:rgba(0,0,0,.6)">\u25A0 end</div>`;}return document.body.appendChild(t),window.addEventListener("scroll",i,{passive:true}),i(),t}function Je(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),i=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,o=>{let c=parseFloat(o),u=t[i++]??c;return String(+(c+(u-c)*r).toFixed(4))})}function at(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,i=r?{...ot[r],...t}:t,o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:c="path, polyline, line, polygon, rect, circle",speed:u=1,fade:l=false,easing:g="linear",trigger:P={},stagger:N=0,direction:E="forward",once:J=false,debug:fe=false,axis:F="y",scrollContainer:_,autoReverse:q=false,delay:D=0,strokeColor:T,strokeWidth:A,fillOpacity:h,waypoints:y,velocityScale:C=false,threshold:$=0,rootMargin:k="0px",repeat:S=0,repeatDelay:O=0,morphTo:M,clip:R,autoplay:G=false,duration:W=1e3,native:Y=true,onProgress:d,onStart:I,onComplete:b,onEnter:w,onLeave:Z,onEnterBack:Se,onLeaveBack:be}=i,we=R===true?"left":typeof R=="string"?R:false,ge=typeof g=="function"?g:ne[g]??ne.linear,Re=oe(P.start??"top bottom"),ke=oe(P.end??"bottom top"),ee=typeof _=="string"?document.querySelector(_):_??null,a=Array.isArray(T)?T[0]:null,p=Array.isArray(T)?T[1]:typeof T=="string"?T:null,K=Array.isArray(A)?A[0]:null,B=Array.isArray(A)?A[1]:typeof A=="number"?A:null,te=Array.isArray(h)?h[0]:null,ie=Array.isArray(h)?h[1]:typeof h=="number"?h:null;function re(s){let m=s*100;switch(we){case "right":return `inset(0 0 0 ${100-m}%)`;case "top":return `inset(0 0 ${100-m}% 0)`;case "bottom":return `inset(${100-m}% 0 0 0)`;case "center":return `circle(${s*150}% at 50% 50%)`;default:return `inset(0 ${100-m}% 0 0)`}}let j=we?[]:Array.from(e.querySelectorAll(c)),H=[],pe=[],ye=0,Te=0,ae=false,he=false,se=0,ze=false,ve=-1,Ve=-1,le=false,Ce=0,xe=0,Ae,Ye=null,Me=new Set,qe=-1,Ke=performance.now(),Ne=NaN;function Fe(){return ee?F==="x"?ee.scrollLeft:ee.scrollTop:F==="x"?window.scrollX:window.scrollY}function Qe(){return ee?F==="x"?ee.clientWidth:ee.clientHeight:F==="x"?window.innerWidth:window.innerHeight}function et(){let s=e.getBoundingClientRect(),m,x,Q;if(ee){let ue=ee.getBoundingClientRect();m=F==="x"?s.left-ue.left+ee.scrollLeft:s.top-ue.top+ee.scrollTop,x=F==="x"?s.width:s.height,Q=Fe();}else m=F==="x"?s.left:s.top,x=F==="x"?s.width:s.height,Q=Fe();let ce=me({top:m,height:x},Q,Qe(),Re,ke);ye=ce.tStart,Te=ce.tEnd,fe&&process.env.NODE_ENV!=="production"&&(Ye?.remove(),Ye=kt(ye,Te,F));}function Et(s,m){if(e.style.setProperty("--scroll-draw-progress",String(s)),we){let x=m==="reverse"?1-s:s;e.style.clipPath=re(x);return}j.forEach((x,Q)=>{x.style.strokeDashoffset=m==="reverse"?`${H[Q]*s}`:`${H[Q]*(1-s)}`,l&&(x.style.opacity=m==="reverse"?`${1-s}`:`${s}`),a&&p?x.style.stroke=Oe(a,p,s):p&&(x.style.stroke=p),K!==null&&B!==null?x.style.strokeWidth=`${K+(B-K)*s}`:B!==null&&(x.style.strokeWidth=`${B}`),te!==null&&ie!==null?x.style.fillOpacity=`${te+(ie-te)*s}`:ie!==null&&(x.style.fillOpacity=`${ie}`),M&&x.tagName.toLowerCase()==="path"&&pe[Q]&&x.setAttribute("d",Je(pe[Q],M,s));});}function We(){if(e.style.setProperty("--scroll-draw-progress","0"),we){e.style.clipPath=re(0);return}j.forEach((s,m)=>{s.style.strokeDasharray=`${H[m]}`,s.style.strokeDashoffset=E==="reverse"?"0":`${H[m]}`,l?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",a&&(s.style.stroke=a),K!==null&&(s.style.strokeWidth=`${K}`),te!==null&&(s.style.fillOpacity=`${te}`),M&&s.tagName.toLowerCase()==="path"&&pe[m]&&s.setAttribute("d",pe[m]);});}if(j.forEach(s=>{$t(s);let m=Ge(s);H.push(m),s.tagName.toLowerCase()==="path"?pe.push(s.getAttribute("d")??""):pe.push(""),o?(s.style.strokeDasharray=`${m}`,s.style.strokeDashoffset=E==="reverse"?`${m}`:"0",l&&(s.style.opacity="1"),p&&(s.style.stroke=p),B!==null&&(s.style.strokeWidth=`${B}`),ie!==null&&(s.style.fillOpacity=`${ie}`),M&&s.tagName.toLowerCase()==="path"&&s.setAttribute("d",M)):(s.style.strokeDasharray=`${m}`,s.style.strokeDashoffset=E==="reverse"?"0":`${m}`,l?s.style.opacity=E==="reverse"?"1":"0":s.style.opacity="",a&&(s.style.stroke=a),K!==null&&(s.style.strokeWidth=`${K}`),te!==null&&(s.style.fillOpacity=`${te}`));}),we){if(o)return e.style.clipPath=re(1),b?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=re(0);}else if(o)return b?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};function St(){return !(Y===false||!Ct()||!j.length||typeof g!="string"||!(g in it)||we||F!=="y"||ee||u!==1||N!==0||J||q||C!==false||M||y||S||D>0||d||I||b||w||Z||Se||be||T!=null||A!=null||h!=null||(P.start??"top bottom").trim()!=="top bottom"||(P.end??"bottom top").trim()!=="bottom top")}function xt(){let s=`svg-scroll-draw-${++Lt}`,m=E==="reverse"?"0":"var(--ssd-len)",x=E==="reverse"?"var(--ssd-len)":"0",Q=`stroke-dashoffset:${m};`,ce=`stroke-dashoffset:${x};`;l&&(Q+=`opacity:${E==="reverse"?1:0};`,ce+=`opacity:${E==="reverse"?0:1};`);let ue=document.createElement("style");ue.setAttribute("data-svg-scroll-draw",""),ue.textContent=`@keyframes ${s}{from{${Q}}to{${ce}}}.${s}{animation-name:${s};animation-duration:auto;animation-timing-function:${it[g]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(ue);function de(f,L){f.style.setProperty("--ssd-len",String(H[L])),f.style.strokeDasharray=`${H[L]}`,f.style.strokeDashoffset="",f.style.opacity="",f.style.animationPlayState="",f.classList.add(s);}j.forEach(de);let v=false,z=-1;function V(){if(z>=0)return z;let f=e.getBoundingClientRect(),{tStart:L,tEnd:X}=me({top:f.top,height:f.height},Fe(),Qe(),Re,ke);return ge(U(Fe(),L,X,u))}return {destroy(){j.forEach(f=>{f.classList.remove(s),f.style.removeProperty("--ssd-len"),f.style.animationPlayState="";}),ue.remove();},replay(){v=false,z=-1,j.forEach(de);},pause(){v=true,j.forEach(f=>{f.style.animationPlayState="paused";});},resume(){v&&(v=false,j.forEach(f=>{f.style.animationPlayState="running";}));},seek(f){let L=Math.min(1,Math.max(0,f));z=L,v=true,j.forEach((X,$e)=>{X.classList.remove(s),X.style.strokeDashoffset=E==="reverse"?`${H[$e]*L}`:`${H[$e]*(1-L)}`,l&&(X.style.opacity=E==="reverse"?`${1-L}`:`${L}`);});},getProgress(){return V()}}}if(St())return xt();function Tt(){let s=Math.max(1,W),m=0,x=0;function Q(V){let f=true;if(we){let L=Math.min(1,Math.max(0,V/s)),X=ge(L);Ce=X,e.style.setProperty("--scroll-draw-progress",String(X)),e.style.clipPath=re(E==="reverse"?1-X:X),d?.(X),L<1&&(f=false);}else j.forEach((L,X)=>{let $e=X*N*s,Ie=Math.min(1,Math.max(0,(V-$e)/s)),Ee=ge(Ie);L.style.strokeDashoffset=E==="reverse"?`${H[X]*Ee}`:`${H[X]*(1-Ee)}`,l&&(L.style.opacity=E==="reverse"?`${1-Ee}`:`${Ee}`),a&&p?L.style.stroke=Oe(a,p,Ee):p&&(L.style.stroke=p),K!==null&&B!==null?L.style.strokeWidth=`${K+(B-K)*Ee}`:B!==null&&(L.style.strokeWidth=`${B}`),te!==null&&ie!==null?L.style.fillOpacity=`${te+(ie-te)*Ee}`:ie!==null&&(L.style.fillOpacity=`${ie}`),M&&L.tagName.toLowerCase()==="path"&&pe[X]&&L.setAttribute("d",Je(pe[X],M,Ee)),X===0&&(d?.(Ee),e.style.setProperty("--scroll-draw-progress",String(Ee))),Ie<1&&(f=false);});if(y){let L=Math.min(1,Math.max(0,V/s)),X=ge(L);for(let $e in y){let Ie=parseFloat($e);X>=Ie&&!Me.has(Ie)&&(Me.add(Ie),y[$e]?.());}}return f}function ce(V){if(le)return;let f=V-m;he||(he=true,I?.());let L=Q(f);if(L&&!ae){ae=true,Q(s*(1+Math.max(0,j.length-1)*N)),b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{m=performance.now(),he=false,ae=false,Me.clear(),We(),se=requestAnimationFrame(ce);},O));return}L||(se=requestAnimationFrame(ce));}function ue(){cancelAnimationFrame(se),clearTimeout(Ae),m=performance.now(),x=0,le=false,he=false,ae=false,xe=0,Me.clear(),We(),se=requestAnimationFrame(ce);}let de=new IntersectionObserver(V=>{V.forEach(f=>{f.isIntersecting&&!(J&&ae)?ue():!f.isIntersecting&&!J&&!ae&&(cancelAnimationFrame(se),clearTimeout(Ae),m=null);});},{root:ee??null,threshold:$,rootMargin:k}),v;function z(){clearTimeout(v),v=setTimeout(()=>{j.forEach((V,f)=>{H[f]=Ge(V),V.style.strokeDasharray=`${H[f]}`;});},150);}return window.addEventListener("resize",z),window.addEventListener("orientationchange",z),D>0?setTimeout(()=>de.observe(e),D):de.observe(e),{destroy(){cancelAnimationFrame(se),clearTimeout(Ae),de.disconnect(),window.removeEventListener("resize",z),window.removeEventListener("orientationchange",z),clearTimeout(v);},replay(){xe=0,ue();},pause(){le||(le=true,x=performance.now()-m,cancelAnimationFrame(se));},resume(){le&&(le=false,m=performance.now()-x,se=requestAnimationFrame(ce));},seek(V){let f=Math.min(1,Math.max(0,V));Ce=f,le=true,x=f*s,m=performance.now()-x,cancelAnimationFrame(se),Q(x);},getProgress(){return Ce}}}if(G)return Tt();et();function Be(){if(!ze||le)return;let s=performance.now(),m=Fe(),x=u;if(C!==false){let v=s-Ke,z=v>0?Math.abs(m-(qe<0?m:qe))/v:0;x=u*Math.max(.2,1+z*(typeof C=="number"?C:1)*.04);}qe=m,Ke=s;let Q=q?Ve===-1||m>=Ve?"forward":"reverse":E;Ve=m;let ce=Te-ye,ue=true,de=ce===0?0:(m-ye)/ce;if(isNaN(Ne)||(Ne<=0&&de>0?w?.():Ne>0&&de<=0&&be?.(),Ne<1&&de>=1?Z?.():Ne>=1&&de<1&&Se?.()),Ne=de,we){let v=ge(U(m,ye,Te,x));J&&!q&&(ve=Math.max(ve,v),v=ve),Ce=v,e.style.setProperty("--scroll-draw-progress",String(v));let z=Q==="reverse"?1-v:v;e.style.clipPath=re(z),d?.(v),!he&&U(m,ye,Te,x)>0&&(he=true,I?.()),v>=1&&!ae?(ae=true,b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{ve=-1,he=false,ae=false,e.style.clipPath=re(0);},O))):v<1&&!J&&(ae=false),se=requestAnimationFrame(Be);return}if(j.forEach((v,z)=>{let V=z*N*ce,f=ge(U(m,ye+V,Te+V,x));J&&!q&&(ve=Math.max(ve,f),f=ve),Ce=f,v.style.strokeDashoffset=Q==="reverse"?`${H[z]*f}`:`${H[z]*(1-f)}`,l&&(v.style.opacity=Q==="reverse"?`${1-f}`:`${f}`),a&&p?v.style.stroke=Oe(a,p,f):p&&(v.style.stroke=p),K!==null&&B!==null?v.style.strokeWidth=`${K+(B-K)*f}`:B!==null&&(v.style.strokeWidth=`${B}`),te!==null&&ie!==null?v.style.fillOpacity=`${te+(ie-te)*f}`:ie!==null&&(v.style.fillOpacity=`${ie}`),M&&v.tagName.toLowerCase()==="path"&&pe[z]&&v.setAttribute("d",Je(pe[z],M,f)),z===0&&(d?.(f),e.style.setProperty("--scroll-draw-progress",String(f))),f<1&&(ue=false);}),y){let v=ge(U(m,ye,Te,x));for(let z in y){let V=parseFloat(z);v>=V&&!Me.has(V)&&(Me.add(V),y[z]?.());}}!he&&U(m,ye,Te,x)>0&&(he=true,I?.()),ue&&!ae?(ae=true,b?.(),xe<(S==="infinite"?1/0:S??0)&&(xe++,Ae=setTimeout(()=>{ve=-1,he=false,ae=false,Me.clear(),We();},O))):!ue&&!J&&(ae=false),se=requestAnimationFrame(Be);}let je=new IntersectionObserver(s=>{s.forEach(m=>{ze=m.isIntersecting,ze&&!le?se=requestAnimationFrame(Be):cancelAnimationFrame(se);});},{root:ee??null,threshold:$,rootMargin:k}),Ue;function _e(){clearTimeout(Ue),Ue=setTimeout(()=>{j.forEach((s,m)=>{H[m]=Ge(s),s.style.strokeDasharray=`${H[m]}`;}),et();},150);}return window.addEventListener("resize",_e),window.addEventListener("orientationchange",_e),D>0?setTimeout(()=>je.observe(e),D):je.observe(e),{destroy(){cancelAnimationFrame(se),clearTimeout(Ae),je.disconnect(),window.removeEventListener("resize",_e),window.removeEventListener("orientationchange",_e),clearTimeout(Ue),Ye?.remove();},replay(){ve=-1,Ve=-1,qe=-1,he=false,ae=false,xe=0,le=false,Me.clear(),clearTimeout(Ae),We();},pause(){le=true,cancelAnimationFrame(se);},resume(){le&&(le=false,ze&&(se=requestAnimationFrame(Be)));},seek(s){let m=Math.min(1,Math.max(0,s));Ce=m,ve=m,le=true,cancelAnimationFrame(se),Et(m,E);},getProgress(){return Ce}}}var lt=new Map;function Pe(e,n){lt.set(e,n);}function Le(e){lt.delete(e);}function Nt(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function ct(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let i=[],o=[],c=t[2].trim();if(c)for(let u of c.split(/[\s,]+/)){let l=u.match(/^([-+]?[\d.eE]+)(.*)$/);i.push(l?parseFloat(l[1]):0),o.push(l?l[2]:"");}n.push({fn:t[1],nums:i,units:o});}return n}function It(e,n,r){let t=ct(e),i=ct(n);return t.length===0||t.length!==i.length?r<1?e:n:t.map((o,c)=>{let u=i[c];return o.fn!==u.fn||o.nums.length!==u.nums.length?r<1?`${o.fn}(${o.nums.map((l,g)=>`${l}${o.units[g]}`).join(", ")})`:`${u.fn}(${u.nums.map((l,g)=>`${l}${u.units[g]}`).join(", ")})`:`${o.fn}(${o.nums.map((l,g)=>`${l+(u.nums[g]-l)*r}${o.units[g]}`).join(", ")})`}).join(" ")}function ut(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),i=String(n);if(Nt(t))return Oe(t,i,r);if(t.includes("("))return It(t,i,r);let o=t.match(/^([-+]?[\d.]+)(.*)$/),c=i.match(/^([-+]?[\d.]+)(.*)$/);if(o&&c){let u=parseFloat(o[1]),l=parseFloat(c[1]);return `${u+(l-u)*r}${o[2]||c[2]}`}return r<1?t:i}function Ot(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var mt={linear:"linear","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out"},Rt=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Ft=0;function Dt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function ft(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:i={},easing:o="ease-out",speed:c=1,once:u=false,axis:l="y",scrollContainer:g,native:P=true,onProgress:N,onComplete:E,onEnter:J,onLeave:fe,onEnterBack:F,onLeaveBack:_}=n,q=window.matchMedia("(prefers-reduced-motion: reduce)").matches,D=typeof o=="function"?o:ne[o]??ne["ease-out"],T=oe(i.start??"top bottom"),A=oe(i.end??"bottom top"),h=typeof g=="string"?document.querySelector(g):g??null,y=Object.entries(t).map(([a,p])=>({prop:Ot(a),from:Array.isArray(p)?p[0]:"",to:Array.isArray(p)?p[1]:p}));function C(){let a=window.getComputedStyle(e);for(let p of y)p.from===""&&(p.from=a.getPropertyValue(p.prop).trim()||"0");}function $(){for(let a of y)e.style.setProperty(a.prop,String(a.to));}if(q)return $(),E?.(),r;C();function k(){if(!P||!Dt()||typeof o!="string"||!(o in mt)||l!=="y"||h||u||c!==1||N||E||J||fe||F||_||(i.start??"top bottom").trim()!=="top bottom"||(i.end??"bottom top").trim()!=="bottom top")return false;for(let a of y)if(!Rt.has(a.prop))return false;return true}function S(){let a=`ssd-a-${++Ft}`,p=y.map(re=>`${re.prop}:${re.from}`).join(";"),K=y.map(re=>`${re.prop}:${re.to}`).join(";"),B=document.createElement("style");B.setAttribute("data-ssd-animate",""),B.textContent=`@keyframes ${a}{from{${p}}to{${K}}}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${mt[o]};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(B),e.classList.add(a);let te=()=>l==="x"?window.scrollX:window.scrollY,ie=()=>l==="x"?window.innerWidth:window.innerHeight;return {destroy(){e.classList.remove(a),B.remove();},replay(){e.classList.remove(a),e.offsetWidth,e.classList.add(a);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(re){let j=Math.min(1,Math.max(0,re));e.classList.remove(a);for(let H of y)e.style.setProperty(H.prop,ut(H.from,H.to,j));},getProgress(){let re=e.getBoundingClientRect(),j=te(),H=ie(),{tStart:pe,tEnd:ye}=me({top:re.top,height:re.height},j,H,T,A);return D(U(j,pe,ye,c))}}}if(k())return S();let O=0,M=0,R=0,G=false,W=false,Y=-1,d=0,I=false,b=NaN,w=()=>h?l==="x"?h.scrollLeft:h.scrollTop:l==="x"?window.scrollX:window.scrollY,Z=()=>h?l==="x"?h.clientWidth:h.clientHeight:l==="x"?window.innerWidth:window.innerHeight;function Se(){let a=e.getBoundingClientRect(),p,K;if(h){let te=h.getBoundingClientRect();p=l==="x"?a.left-te.left+h.scrollLeft:a.top-te.top+h.scrollTop,K=l==="x"?a.width:a.height;}else p=l==="x"?a.left:a.top,K=l==="x"?a.width:a.height;let B=me({top:p,height:K},w(),Z(),T,A);O=B.tStart,M=B.tEnd;}function be(a){e.style.setProperty("--scroll-draw-progress",String(a));for(let p of y)e.style.setProperty(p.prop,ut(p.from,p.to,a));N?.(a);}function we(a){if(isNaN(b)){b=a;return}b<=0&&a>0?J?.():b>0&&a<=0&&_?.(),b<1&&a>=1?fe?.():b>=1&&a<1&&F?.(),b=a;}function ge(){if(!G||W)return;let a=M===O?0:(w()-O)/(M-O);we(a);let p=D(U(w(),O,M,c));u&&(Y=Math.max(Y,p),p=Y),d=p,be(p),p>=1&&!I?(I=true,E?.()):p<1&&!u&&(I=false),R=requestAnimationFrame(ge);}Se();{let a=D(U(w(),O,M,c));u&&a>0&&(Y=a),d=a,be(a);}let Re=new IntersectionObserver(a=>{a.forEach(p=>{G=p.isIntersecting,G&&!W?R=requestAnimationFrame(ge):cancelAnimationFrame(R);});},{root:h??null}),ke;function ee(){clearTimeout(ke),ke=setTimeout(Se,150);}return window.addEventListener("resize",ee),window.addEventListener("orientationchange",ee),Re.observe(e),Pe(e,{type:"animate",getProgress:()=>d,getTrigger:()=>({tStart:O,tEnd:M})}),{destroy(){cancelAnimationFrame(R),Re.disconnect(),window.removeEventListener("resize",ee),window.removeEventListener("orientationchange",ee),clearTimeout(ke),Le(e);},replay(){Y=-1,I=false,d=0,W=false,be(0);},pause(){W=true,cancelAnimationFrame(R);},resume(){W&&(W=false,G&&(R=requestAnimationFrame(ge)));},seek(a){let p=Math.min(1,Math.max(0,a));d=p,Y=p,W=true,cancelAnimationFrame(R),be(p);},getProgress(){return d}}}var Ze={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function pt(e,n){if(typeof window>"u")return Ze;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollCounter: element not found:",e),Ze;let t=r,{from:i=0,to:o,format:c,easing:u="ease-out",trigger:l={},once:g=true,decimals:P,onComplete:N}=n,E=P!==void 0?d=>d.toFixed(P):c??(d=>String(Math.round(d))),J=typeof u=="function"?u:ne[u]??ne["ease-out"],fe=oe(l.start??"top 80%"),F=oe(l.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=E(o),N?.(),Ze;t.textContent=E(i);let q=0,D=0,T=0,A=false,h=false,y=-1,C=0,$=false,k=()=>window.scrollY,S=()=>window.innerHeight;function O(){let d=t.getBoundingClientRect(),I=me({top:d.top,height:d.height},k(),S(),fe,F);q=I.tStart,D=I.tEnd;}function M(d){t.textContent=E(i+(o-i)*d),t.style.setProperty("--scroll-draw-progress",String(d));}function R(){if(!A||h)return;let d=J(U(k(),q,D,1));g&&(y=Math.max(y,d),d=y),C=d,M(d),d>=1&&!$?($=true,N?.()):d<1&&!g&&($=false),T=requestAnimationFrame(R);}O();{let d=J(U(k(),q,D,1));g&&d>0&&(y=d),C=d,M(d);}let G=new IntersectionObserver(d=>{d.forEach(I=>{A=I.isIntersecting,A&&!h?T=requestAnimationFrame(R):cancelAnimationFrame(T);});}),W;function Y(){clearTimeout(W),W=setTimeout(O,150);}return window.addEventListener("resize",Y),window.addEventListener("orientationchange",Y),G.observe(t),Pe(t,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:q,tEnd:D})}),{destroy(){cancelAnimationFrame(T),G.disconnect(),window.removeEventListener("resize",Y),window.removeEventListener("orientationchange",Y),clearTimeout(W),Le(t);},replay(){y=-1,$=false,C=0,h=false,M(0);},pause(){h=true,cancelAnimationFrame(T);},resume(){h&&(h=false,A&&(T=requestAnimationFrame(R)));},seek(d){let I=Math.min(1,Math.max(0,d));C=I,y=I,h=true,cancelAnimationFrame(T),M(I);},getProgress(){return C}}}var dt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function gt(e,n={}){if(typeof window>"u")return dt;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollVideo: <video> element not found:",e),dt;let t=r,{trigger:i={},easing:o="linear",once:c=false,axis:u="y",preload:l="auto",onReady:g,onComplete:P,onProgress:N}=n,E=window.matchMedia("(prefers-reduced-motion: reduce)").matches,J=typeof o=="function"?o:ne[o]??ne.linear,fe=oe(i.start??"top top"),F=oe(i.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=l);let _=n.from??0,q=n.to,D=0,T=0,A=0,h=false,y=false,C=-1,$=0,k=false,S=false,O=()=>u==="x"?window.scrollX:window.scrollY,M=()=>u==="x"?window.innerWidth:window.innerHeight;function R(){let w=t.getBoundingClientRect(),Z=u==="x"?w.left:w.top,Se=u==="x"?w.width:w.height,be=me({top:Z,height:Se},O(),M(),fe,F);D=be.tStart,T=be.tEnd;}function G(w){if(!S)return;let Z=q??t.duration??0;t.currentTime=_+(Z-_)*w,t.style.setProperty("--scroll-draw-progress",String(w)),N?.(w);}function W(){if(!h||y||!S)return;let w=J(U(O(),D,T,1));c&&(C=Math.max(C,w),w=C),$=w,G(w),w>=1&&!k?(k=true,P?.()):w<1&&!c&&(k=false),A=requestAnimationFrame(W);}function Y(){if(S=true,q===void 0&&(q=t.duration),E){G(1),g?.();return}R(),g?.(),h&&!y&&(A=requestAnimationFrame(W));}t.readyState>=1?Y():t.addEventListener("loadedmetadata",Y,{once:true}),S||R();let d=new IntersectionObserver(w=>{w.forEach(Z=>{h=Z.isIntersecting,h&&!y&&S?A=requestAnimationFrame(W):cancelAnimationFrame(A);});}),I;function b(){clearTimeout(I),I=setTimeout(R,150);}return window.addEventListener("resize",b),window.addEventListener("orientationchange",b),d.observe(t),Pe(t,{type:"video",getProgress:()=>$,getTrigger:()=>({tStart:D,tEnd:T})}),{destroy(){cancelAnimationFrame(A),d.disconnect(),t.removeEventListener("loadedmetadata",Y),window.removeEventListener("resize",b),window.removeEventListener("orientationchange",b),clearTimeout(I),Le(t);},replay(){C=-1,k=false,$=0,y=false,G(0);},pause(){y=true,cancelAnimationFrame(A);},resume(){y&&(y=false,h&&S&&(A=requestAnimationFrame(W)));},seek(w){let Z=Math.min(1,Math.max(0,w));$=Z,C=Z,y=true,cancelAnimationFrame(A),G(Z);},getProgress(){return $}}}function bt(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(r)?(t.textContent=r,t.style.whiteSpace="pre"):(t.textContent=r,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(r)?null:t}).filter(r=>r!==null)}function Ht(e){let n=e.textContent??"";return e.textContent="",n.split("").map(r=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=r,r===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),r===" "?null:t}).filter(r=>r!==null)}function yt(e){let n=bt(e),r=new Map;for(let o of n){let c=o.offsetTop;r.has(c)||r.set(c,[]),r.get(c).push(o);}let t=[],i=Array.from(r.keys()).sort((o,c)=>o-c);for(let o of i){let c=r.get(o),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block";for(let l of c)u.appendChild(l);t.push(u);}e.textContent="";for(let o of t)e.appendChild(o),e.appendChild(document.createTextNode(" "));return t}function zt(e,n,r,t){if(r<=1||t===0)return e;let i=(r-1)*t,o=n*t,c=o+(1-i);return c<=o?e>=o?1:0:Math.min(1,Math.max(0,(e-o)/(c-o)))}function Vt(e,n){let r=[];if(n?.y!==void 0&&r.push(`translateY(${n.y*(1-e)}px)`),n?.x!==void 0&&r.push(`translateX(${n.x*(1-e)}px)`),n?.rotate!==void 0&&r.push(`rotate(${n.rotate*(1-e)}deg)`),n?.scale!==void 0){let t=n.scale+(1-n.scale)*e;r.push(`scale(${t})`);}return r.join(" ")||""}var ht={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function wt(e,n={}){if(typeof window>"u")return ht;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollText: element not found:",e),ht;let t=r,{split:i="words",stagger:o=.04,easing:c="ease-out",from:u={opacity:0,y:24},trigger:l={},once:g=true,onComplete:P}=n,N=window.matchMedia("(prefers-reduced-motion: reduce)").matches,E=typeof c=="function"?c:ne[c]??ne["ease-out"],J=oe(l.start??"top 85%"),fe=oe(l.end??"top 40%"),F=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let _;i==="chars"?_=Ht(t):i==="lines"?_=yt(t):_=bt(t);let q=_.length;function D(b,w){u?.opacity!==void 0&&(b.style.opacity=String(u.opacity+(1-u.opacity)*w));let Z=Vt(w,u);Z&&(b.style.transform=Z);}function T(b){t.style.setProperty("--scroll-draw-progress",String(b)),_.forEach((w,Z)=>{let Se=E(zt(b,Z,q,o));D(w,Se);});}if(N)return T(1),P?.(),{destroy(){t.innerHTML=F,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};T(0);let A=0,h=0,y=0,C=false,$=false,k=-1,S=0,O=false,M=()=>window.scrollY,R=()=>window.innerHeight;function G(){let b=t.getBoundingClientRect(),w=me({top:b.top,height:b.height},M(),R(),J,fe);A=w.tStart,h=w.tEnd;}function W(){if(!C||$)return;let b=U(M(),A,h,1);g&&(k=Math.max(k,b),b=k),S=b,T(b),b>=1&&!O?(O=true,P?.()):b<1&&!g&&(O=false),y=requestAnimationFrame(W);}G();let Y=new IntersectionObserver(b=>{b.forEach(w=>{C=w.isIntersecting,C&&!$?y=requestAnimationFrame(W):cancelAnimationFrame(y);});}),d;function I(){clearTimeout(d),d=setTimeout(()=>{if(i==="lines"){let b=S;t.innerHTML=F,t.setAttribute("aria-label",t.textContent??""),_=yt(t),T(b);}G();},150);}return window.addEventListener("resize",I),window.addEventListener("orientationchange",I),Y.observe(t),Pe(t,{type:"text",getProgress:()=>S,getTrigger:()=>({tStart:A,tEnd:h})}),{destroy(){cancelAnimationFrame(y),Y.disconnect(),window.removeEventListener("resize",I),window.removeEventListener("orientationchange",I),clearTimeout(d),t.innerHTML=F,t.removeAttribute("aria-label"),Le(t);},replay(){k=-1,O=false,S=0,$=false,T(0);},pause(){$=true,cancelAnimationFrame(y);},resume(){$&&($=false,C&&(y=requestAnimationFrame(W)));},seek(b){let w=Math.min(1,Math.max(0,b));S=w,k=w,$=true,cancelAnimationFrame(y),T(w);},getProgress(){return S}}}function Bt(e,n={}){let[r,t]=useState(0),i=useRef(n);i.current=n;let o=useRef(-1);return useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let c=typeof e=="string"?document.querySelector(e):e.current;if(!c)return;let u=c,{axis:l="y",scrollContainer:g,trigger:P={}}=i.current,N=typeof g=="string"?document.querySelector(g):g??null,E=oe(P.start??"top bottom"),J=oe(P.end??"bottom top"),fe=0,F=0,_=false,q=0;function D(){return N?l==="x"?N.scrollLeft:N.scrollTop:l==="x"?window.scrollX:window.scrollY}function T(){return N?l==="x"?N.clientWidth:N.clientHeight:l==="x"?window.innerWidth:window.innerHeight}function A(){let k=u.getBoundingClientRect(),S=D(),O=l==="x"?k.left:k.top,M=l==="x"?k.width:k.height,R=me({top:O,height:M},S,T(),E,J);fe=R.tStart,F=R.tEnd;}function h(){if(!_)return;let{speed:k=1,easing:S="linear",once:O=false}=i.current,M=typeof S=="function"?S:ne[S]??ne.linear,R=U(D(),fe,F,k),G=M(R);O&&(o.current=Math.max(o.current,G),G=o.current),t(G),q=requestAnimationFrame(h);}let y=new IntersectionObserver(k=>{k.forEach(S=>{_=S.isIntersecting,_?q=requestAnimationFrame(h):cancelAnimationFrame(q);});},{root:N??null,threshold:0});A(),y.observe(u);let C;function $(){clearTimeout(C),C=setTimeout(A,150);}return window.addEventListener("resize",$),window.addEventListener("orientationchange",$),()=>{cancelAnimationFrame(q),clearTimeout(C),y.disconnect(),window.removeEventListener("resize",$),window.removeEventListener("orientationchange",$);}},[]),r}function br({children:e,className:n,style:r,...t}){let i=useRef(null);return useEffect(()=>{if(!i.current)return;let o=at(i.current,t);return ()=>o.destroy()},[]),jsx("div",{ref:i,className:n,style:r,children:e})}function wr({children:e,className:n,style:r,...t}){let i=useRef(null);return useEffect(()=>{if(!i.current)return;let o=ft(i.current,t);return ()=>o.destroy()},[]),jsx("div",{ref:i,className:n,style:r,children:e})}function vr({className:e,style:n,...r}){let t=useRef(null);return useEffect(()=>{if(!t.current)return;let i=pt(t.current,r);return ()=>i.destroy()},[]),jsx("span",{ref:t,className:e,style:n})}function Er({src:e,className:n,style:r,muted:t=true,playsInline:i=true,...o}){let c=useRef(null);return useEffect(()=>{if(!c.current)return;let u=gt(c.current,o);return ()=>u.destroy()},[]),jsx("video",{ref:c,src:e,className:n,style:r,muted:t,playsInline:i,preload:"auto"})}function Sr({children:e,as:n="p",className:r,style:t,...i}){let o=useRef(null);return useEffect(()=>{if(!o.current)return;let c=wt(o.current,i);return ()=>c.destroy()},[]),_t.createElement(n,{ref:o,className:r,style:t},e)}export{wr as ScrollAnimate,vr as ScrollCounter,br as ScrollDraw,Sr as ScrollText,Er as ScrollVideo,Bt as useScrollDrawProgress};
@@ -0,0 +1 @@
1
+ 'use strict';function q({bounces:e=3,decay:m=.5}={}){let n=Math.max(1,Math.round(e)),l=Math.max(.01,Math.min(.99,m)),b=Math.sqrt(l),u=0,g=[];for(let s=0;s<n;s++){let t=Math.pow(b,s);g.push(t),u+=t;}let c=[0],h=0;for(let s=0;s<n;s++)h+=g[s]/u,c.push(h);return s=>{if(s<=0)return 0;if(s>=1)return 1;for(let t=0;t<n;t++)if(s<=c[t+1]){let r=(s-c[t])/(c[t+1]-c[t]);if(t===0)return r*(2-r);let o=1-Math.pow(l,t);return o+(1-o)*(2*r-1)*(2*r-1)}return 1}}function O({amplitude:e=1,period:m=.4}={}){let n=Math.max(1,e),l=Math.max(.1,m),b=n<=1?l/4:l/(2*Math.PI)*Math.asin(1/n);return u=>u<=0?0:u>=1?1:n*Math.pow(2,-10*u)*Math.sin((u-b)*(2*Math.PI)/l)+1}var v={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:q(),elastic:O()};function A(e,m,n){return Math.min(n,Math.max(m,e))}var $={destroy:()=>{},snapTo:()=>{},getCurrentIndex:()=>0};function G(e){return typeof e=="string"?Array.from(document.querySelectorAll(e)):e instanceof NodeList?Array.from(e):e}function B(e,m={}){if(typeof window>"u")return $;let n=G(e);if(!n.length)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollSnap: no sections found"),$;let{direction:l="vertical",duration:b=600,easing:u="ease-in-out",threshold:g=.3,scrollContainer:c,onSnap:h}=m,s=typeof u=="function"?u:v[u]??v["ease-in-out"],t=l==="horizontal",r=typeof c=="string"?document.querySelector(c):c??null,o=0,f=false,x=0;function L(){return r?t?r.scrollLeft:r.scrollTop:t?window.scrollX:window.scrollY}function P(a){r?t?r.scrollLeft=a:r.scrollTop=a:window.scrollTo(t?{left:a}:{top:a});}function N(){return n.map(a=>{let i=a.getBoundingClientRect();if(r){let p=r.getBoundingClientRect();return t?i.left-p.left+r.scrollLeft:i.top-p.top+r.scrollTop}return t?i.left+window.scrollX:i.top+window.scrollY})}function S(a){let i=A(a,0,n.length-1);f&&(cancelAnimationFrame(x),f=false),f=true;let p=N(),d=L(),w=p[i];if(Math.abs(d-w)<1){f=false,o=i,h?.(i);return}let I=performance.now();function E(y){let M=A((y-I)/b,0,1);P(d+(w-d)*s(M)),M<1?x=requestAnimationFrame(E):(f=false,o=i,h?.(i));}x=requestAnimationFrame(E);}let T;function F(){f||(clearTimeout(T),T=setTimeout(()=>{let a=L(),i=N();i.forEach((E,y)=>{});let w=t?n[o].offsetWidth:n[o].offsetHeight,I=a-i[o];I>w*g&&o<n.length-1?S(o+1):I<-(w*g)&&o>0?S(o-1):S(o);},100));}let C=r??window;return C.addEventListener("scroll",F,{passive:true}),{destroy(){cancelAnimationFrame(x),clearTimeout(T),C.removeEventListener("scroll",F);},snapTo:S,getCurrentIndex(){return o}}}exports.scrollSnap=B;
@@ -0,0 +1,30 @@
1
+ type EasingName = 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'spring' | 'bounce' | 'elastic';
2
+
3
+ interface ScrollSnapOptions {
4
+ /** Scroll axis. Default: 'vertical'. */
5
+ direction?: 'vertical' | 'horizontal';
6
+ /** Snap animation duration in ms. Default: 600. */
7
+ duration?: number;
8
+ /** Easing for the snap scroll animation. Default: 'ease-in-out'. */
9
+ easing?: EasingName | ((t: number) => number);
10
+ /**
11
+ * Fraction of a section's size the user must scroll past before it snaps
12
+ * forward instead of snapping back. Range 0–1. Default: 0.3.
13
+ */
14
+ threshold?: number;
15
+ /** Custom scroll container. Default: window. */
16
+ scrollContainer?: string | Element;
17
+ /** Fires after each snap with the target section index. */
18
+ onSnap?: (index: number) => void;
19
+ }
20
+ interface ScrollSnapInstance {
21
+ /** Remove snap behaviour and all listeners. */
22
+ destroy: () => void;
23
+ /** Programmatically snap to a section by zero-based index. */
24
+ snapTo: (index: number) => void;
25
+ /** Returns the index of the currently snapped section. */
26
+ getCurrentIndex: () => number;
27
+ }
28
+ declare function scrollSnap(sections: string | NodeList | Element[], options?: ScrollSnapOptions): ScrollSnapInstance;
29
+
30
+ export { type ScrollSnapInstance, type ScrollSnapOptions, scrollSnap };
@@ -0,0 +1,30 @@
1
+ type EasingName = 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'spring' | 'bounce' | 'elastic';
2
+
3
+ interface ScrollSnapOptions {
4
+ /** Scroll axis. Default: 'vertical'. */
5
+ direction?: 'vertical' | 'horizontal';
6
+ /** Snap animation duration in ms. Default: 600. */
7
+ duration?: number;
8
+ /** Easing for the snap scroll animation. Default: 'ease-in-out'. */
9
+ easing?: EasingName | ((t: number) => number);
10
+ /**
11
+ * Fraction of a section's size the user must scroll past before it snaps
12
+ * forward instead of snapping back. Range 0–1. Default: 0.3.
13
+ */
14
+ threshold?: number;
15
+ /** Custom scroll container. Default: window. */
16
+ scrollContainer?: string | Element;
17
+ /** Fires after each snap with the target section index. */
18
+ onSnap?: (index: number) => void;
19
+ }
20
+ interface ScrollSnapInstance {
21
+ /** Remove snap behaviour and all listeners. */
22
+ destroy: () => void;
23
+ /** Programmatically snap to a section by zero-based index. */
24
+ snapTo: (index: number) => void;
25
+ /** Returns the index of the currently snapped section. */
26
+ getCurrentIndex: () => number;
27
+ }
28
+ declare function scrollSnap(sections: string | NodeList | Element[], options?: ScrollSnapOptions): ScrollSnapInstance;
29
+
30
+ export { type ScrollSnapInstance, type ScrollSnapOptions, scrollSnap };
@@ -0,0 +1 @@
1
+ function q({bounces:e=3,decay:m=.5}={}){let n=Math.max(1,Math.round(e)),l=Math.max(.01,Math.min(.99,m)),b=Math.sqrt(l),u=0,g=[];for(let s=0;s<n;s++){let t=Math.pow(b,s);g.push(t),u+=t;}let c=[0],h=0;for(let s=0;s<n;s++)h+=g[s]/u,c.push(h);return s=>{if(s<=0)return 0;if(s>=1)return 1;for(let t=0;t<n;t++)if(s<=c[t+1]){let r=(s-c[t])/(c[t+1]-c[t]);if(t===0)return r*(2-r);let o=1-Math.pow(l,t);return o+(1-o)*(2*r-1)*(2*r-1)}return 1}}function O({amplitude:e=1,period:m=.4}={}){let n=Math.max(1,e),l=Math.max(.1,m),b=n<=1?l/4:l/(2*Math.PI)*Math.asin(1/n);return u=>u<=0?0:u>=1?1:n*Math.pow(2,-10*u)*Math.sin((u-b)*(2*Math.PI)/l)+1}var v={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:q(),elastic:O()};function A(e,m,n){return Math.min(n,Math.max(m,e))}var $={destroy:()=>{},snapTo:()=>{},getCurrentIndex:()=>0};function G(e){return typeof e=="string"?Array.from(document.querySelectorAll(e)):e instanceof NodeList?Array.from(e):e}function B(e,m={}){if(typeof window>"u")return $;let n=G(e);if(!n.length)return process.env.NODE_ENV!=="production"&&console.warn("[svg-scroll-draw] scrollSnap: no sections found"),$;let{direction:l="vertical",duration:b=600,easing:u="ease-in-out",threshold:g=.3,scrollContainer:c,onSnap:h}=m,s=typeof u=="function"?u:v[u]??v["ease-in-out"],t=l==="horizontal",r=typeof c=="string"?document.querySelector(c):c??null,o=0,f=false,x=0;function L(){return r?t?r.scrollLeft:r.scrollTop:t?window.scrollX:window.scrollY}function P(a){r?t?r.scrollLeft=a:r.scrollTop=a:window.scrollTo(t?{left:a}:{top:a});}function N(){return n.map(a=>{let i=a.getBoundingClientRect();if(r){let p=r.getBoundingClientRect();return t?i.left-p.left+r.scrollLeft:i.top-p.top+r.scrollTop}return t?i.left+window.scrollX:i.top+window.scrollY})}function S(a){let i=A(a,0,n.length-1);f&&(cancelAnimationFrame(x),f=false),f=true;let p=N(),d=L(),w=p[i];if(Math.abs(d-w)<1){f=false,o=i,h?.(i);return}let I=performance.now();function E(y){let M=A((y-I)/b,0,1);P(d+(w-d)*s(M)),M<1?x=requestAnimationFrame(E):(f=false,o=i,h?.(i));}x=requestAnimationFrame(E);}let T;function F(){f||(clearTimeout(T),T=setTimeout(()=>{let a=L(),i=N();i.forEach((E,y)=>{});let w=t?n[o].offsetWidth:n[o].offsetHeight,I=a-i[o];I>w*g&&o<n.length-1?S(o+1):I<-(w*g)&&o>0?S(o-1):S(o);},100));}let C=r??window;return C.addEventListener("scroll",F,{passive:true}),{destroy(){cancelAnimationFrame(x),clearTimeout(T),C.removeEventListener("scroll",F);},snapTo:S,getCurrentIndex(){return o}}}export{B as scrollSnap};