svg-scroll-draw 2.19.0 → 2.20.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.
- package/README.md +6 -6
- package/dist/angular/index.cjs +2 -2
- package/dist/angular/index.d.mts +3 -3
- package/dist/angular/index.d.ts +3 -3
- package/dist/angular/index.mjs +1 -1
- package/dist/astro/index.cjs +2 -2
- package/dist/astro/index.d.mts +3 -3
- package/dist/astro/index.d.ts +3 -3
- package/dist/astro/index.mjs +1 -1
- package/dist/cdn/svg-scroll-draw.dev.global.js +28 -6
- package/dist/cdn/svg-scroll-draw.global.js +2 -2
- package/dist/{chunk-JPK2NJWO.mjs → chunk-6SSA5V7J.mjs} +1 -1
- package/dist/chunk-LQBXJRFY.mjs +3 -0
- package/dist/{chunk-PKHX3HSS.mjs → chunk-VVFGB4RT.mjs} +1 -1
- package/dist/{engine-C9LKls__.d.ts → engine-DQyBzZDl.d.ts} +1 -1
- package/dist/{engine-CvzRSkuk.d.mts → engine-P8u6OK4m.d.mts} +1 -1
- package/dist/group/index.cjs +3 -3
- package/dist/group/index.d.mts +3 -3
- package/dist/group/index.d.ts +3 -3
- package/dist/group/index.mjs +1 -1
- package/dist/horizontal/index.d.mts +1 -1
- package/dist/horizontal/index.d.ts +1 -1
- package/dist/{index-Zxa5HIes.d.mts → index-CMqK0GCT.d.mts} +2 -2
- package/dist/{index-BlIjovDN.d.mts → index-CdaBYn3A.d.mts} +1 -1
- package/dist/{index-DZjvLJcU.d.ts → index-D3o4vT3e.d.ts} +1 -1
- package/dist/{index-G3VfLIN8.d.ts → index-DPqPEnO-.d.ts} +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.mjs +1 -1
- package/dist/nuxt/index.cjs +2 -2
- package/dist/nuxt/index.d.mts +3 -3
- package/dist/nuxt/index.d.ts +3 -3
- package/dist/nuxt/index.mjs +1 -1
- package/dist/pin/index.cjs +1 -1
- package/dist/pin/index.d.mts +8 -2
- package/dist/pin/index.d.ts +8 -2
- package/dist/pin/index.mjs +1 -1
- package/dist/progress/index.d.mts +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.d.mts +7 -8
- package/dist/react/index.d.ts +7 -8
- package/dist/react/index.mjs +1 -1
- package/dist/reveal/index.d.mts +1 -1
- package/dist/reveal/index.d.ts +1 -1
- package/dist/{scroll-draw-B4CadBz0.d.mts → scroll-draw-Dej-GIRP.d.mts} +1 -1
- package/dist/{scroll-draw-Cs6Z5ype.d.ts → scroll-draw-DsBMkwrX.d.ts} +1 -1
- package/dist/snap/index.d.mts +1 -1
- package/dist/snap/index.d.ts +1 -1
- package/dist/solid/index.cjs +3 -3
- package/dist/solid/index.d.mts +3 -3
- package/dist/solid/index.d.ts +3 -3
- package/dist/solid/index.mjs +1 -1
- package/dist/svelte/index.cjs +2 -2
- package/dist/svelte/index.d.mts +3 -3
- package/dist/svelte/index.d.ts +3 -3
- package/dist/svelte/index.mjs +1 -1
- package/dist/text/index.d.mts +1 -1
- package/dist/text/index.d.ts +1 -1
- package/dist/timeline/index.d.mts +1 -1
- package/dist/timeline/index.d.ts +1 -1
- package/dist/{types-B0YM4nQP.d.mts → types-MswK0erX.d.mts} +6 -0
- package/dist/{types-B0YM4nQP.d.ts → types-MswK0erX.d.ts} +6 -0
- package/dist/video/index.d.mts +1 -1
- package/dist/video/index.d.ts +1 -1
- package/dist/vue/index.cjs +2 -2
- package/dist/vue/index.d.mts +3 -3
- package/dist/vue/index.d.ts +3 -3
- package/dist/vue/index.mjs +1 -1
- package/dist/web-component/index.cjs +3 -3
- package/dist/web-component/index.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-WHFRS7IP.mjs +0 -3
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](./LICENSE)
|
|
8
8
|
[](https://github.com/DhruvilChauahan0210/ink-scroll/stargazers)
|
|
9
9
|
|
|
10
|
-
> Draw SVG paths on scroll — plus reveal, pin, snap, parallax, counters, video scrub and text splitting. **11.
|
|
10
|
+
> Draw SVG paths on scroll — plus reveal, pin, snap, parallax, counters, video scrub and text splitting. **11.4 KB gzipped for every API, from 1.4 KB if you import one.** Zero dependencies, MIT, and a native CSS fast path that runs with no per-frame JavaScript. Works in React, Next.js, Vue, Svelte, Solid, Angular, Astro, Nuxt and vanilla JS.
|
|
11
11
|
|
|
12
12
|
**[Live Demo](https://svg-scroll-draw.vercel.app)** · [npm](https://www.npmjs.com/package/svg-scroll-draw) · [Docs](https://svg-scroll-draw.vercel.app/docs) · [Examples](https://svg-scroll-draw.vercel.app/examples) · [Report a bug](https://github.com/DhruvilChauahan0210/ink-scroll/issues)
|
|
13
13
|
|
|
@@ -339,7 +339,7 @@ import { ScrollDraw } from 'svg-scroll-draw/vue';
|
|
|
339
339
|
| `speed` | `number` | `1` | Scale factor relative to scroll distance |
|
|
340
340
|
| `fade` | `boolean` | `false` | Animate `opacity 0 → 1` simultaneously |
|
|
341
341
|
| `easing` | `string \| fn` | `"linear"` | `linear`, `ease-in`, `ease-out`, `ease-in-out`, `spring`, `bounce`, `elastic`, or `(t) => t` |
|
|
342
|
-
| `stagger` | `number` | `0` | Offset between each path starting (fraction of scroll range) |
|
|
342
|
+
| `stagger` | `number` | `0` | Offset between each path starting (fraction of scroll range). The last path ends that much after `trigger.end`; where the page ends first, the stagger tightens so it finishes at the bottom |
|
|
343
343
|
| `direction` | `"forward" \| "reverse"` | `"forward"` | `reverse` erases the path as you scroll |
|
|
344
344
|
| `trigger.start` | `string` | `"top bottom"` | When animation begins |
|
|
345
345
|
| `trigger.end` | `string` | `"bottom top"` | When animation ends |
|
|
@@ -629,9 +629,9 @@ devtools.highlight('#my-element'); // outline for 2 seconds
|
|
|
629
629
|
<!-- size-table:start -->
|
|
630
630
|
| Entry | Gzipped |
|
|
631
631
|
|---|---|
|
|
632
|
-
| `svg-scroll-draw` (main, every core API) | 11.
|
|
633
|
-
| `svg-scroll-draw/react` (includes the engine) | 12.
|
|
634
|
-
| `svg-scroll-draw` + `svg-scroll-draw/react` (together; the engine ships once) | 14.
|
|
632
|
+
| `svg-scroll-draw` (main, every core API) | 11.4 KB |
|
|
633
|
+
| `svg-scroll-draw/react` (includes the engine) | 12.8 KB |
|
|
634
|
+
| `svg-scroll-draw` + `svg-scroll-draw/react` (together; the engine ships once) | 14.3 KB |
|
|
635
635
|
| `svg-scroll-draw/reveal` | 5.5 KB |
|
|
636
636
|
| `svg-scroll-draw/text` | 3.1 KB |
|
|
637
637
|
| `svg-scroll-draw/video` | 2.7 KB |
|
|
@@ -640,7 +640,7 @@ devtools.highlight('#my-element'); // outline for 2 seconds
|
|
|
640
640
|
| `svg-scroll-draw/aos` (styles included) | 3.1 KB |
|
|
641
641
|
| `svg-scroll-draw/snap` | 1.9 KB |
|
|
642
642
|
| `svg-scroll-draw/devtools` | 1.8 KB (dev only) |
|
|
643
|
-
| `svg-scroll-draw/pin` | 1.
|
|
643
|
+
| `svg-scroll-draw/pin` | 1.6 KB |
|
|
644
644
|
<!-- size-table:end -->
|
|
645
645
|
|
|
646
646
|
Measured with `npm run size`: each entry plus the shared chunks it imports, minified, gzip level 9. Entries share their code through those chunks, so importing several costs less than the sum. For comparison, GSAP 3.15.0 core + ScrollTrigger is 45.3 KB gzipped, and 47.5 KB with DrawSVG. GSAP does far more than scroll animation; for the scroll effects this library covers, that is the size difference.
|
package/dist/angular/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';function
|
|
1
|
+
'use strict';function cr({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),s=Math.sqrt(t),i=0,l=[];for(let d=0;d<r;d++){let T=Math.pow(s,d);l.push(T),i+=T;}let u=[0],m=0;for(let d=0;d<r;d++)m+=l[d]/i,u.push(m);return d=>{if(d<=0)return 0;if(d>=1)return 1;for(let T=0;T<r;T++)if(d<=u[T+1]){let H=(d-u[T])/(u[T+1]-u[T]);if(T===0)return H*(2-H);let A=1-Math.pow(t,T);return A+(1-A)*(2*H-1)*(2*H-1)}return 1}}function ur({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),s=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return i=>i<=0?0:i>=1?1:r*Math.pow(2,-10*i)*Math.sin((i-s)*(2*Math.PI)/t)+1}var ce={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:cr(),elastic:ur()};function Mt(e,n,r){return Math.min(r,Math.max(n,e))}function be(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 At(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 Lt(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 te(e,n,r,t){return r===n?0:Mt((e-n)/(r-n)*t,0,1)}function Pe(e,n,r,t,s){let i=At(e.top,e.height,n,t.element)-Lt(t.viewport,r),l=At(e.top,e.height,n,s.element)-Lt(s.viewport,r);return {tStart:i,tEnd:l}}function ot(e,n,r){let t=e.getBoundingClientRect(),s=r==="x"?t.width:t.height;return n?{top:r==="x"?t.left-n.getBoundingClientRect().left+n.scrollLeft:t.top-n.getBoundingClientRect().top+n.scrollTop,height:s,scroll:0}:{top:r==="x"?t.left:t.top,height:s,scroll:r==="x"?window.scrollX:window.scrollY}}function je(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 $t(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 Ue(e,n,r){let t=$t(e),s=$t(n);return !t||!s?e:`rgb(${Math.round(t[0]+(s[0]-t[0])*r)},${Math.round(t[1]+(s[1]-t[1])*r)},${Math.round(t[2]+(s[2]-t[2])*r)})`}var Pt={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}};var Xe=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function we(e,...n){Xe&&console.warn(`[svg-scroll-draw] ${e}`,...n);}var mr="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",fr="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Ct=33;function pr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function dr(e){let n=[];for(let r=0;r<Ct;r++){let t=r/(Ct-1);n.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${n.join(",")})`}function st(e){switch(e){case "linear":return "linear";case "ease-in":return mr;case "ease-out":return fr;case "ease-in-out":return pr()?dr(ce["ease-in-out"]):null;default:return null}}var kt=Symbol.for("svg-scroll-draw.registry");function Ot(){let e=globalThis;return e[kt]||(e[kt]=new Map)}function Oe(e,n){Ot().set(e,n);}function Ie(e){Ot().delete(e);}var Ke,it=new Set,at=new WeakMap,Qe=new Map,It=e=>{let n=e.getBoundingClientRect();return n.width+" "+n.height};function gr(e){let n=new Set;for(let r of e)for(;r&&r!==document.body;r=r.parentElement)for(let t=r;t;t=t.previousElementSibling)n.add(t);return n}function De(e,n){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let r=()=>n();Ke??(Ke=new ResizeObserver(s=>{let i=false;for(let{target:l}of s)at.get(l)!==It(l)&&(i=true),at.set(l,"");i&&it.forEach(l=>l());})),it.add(r);let t=gr(e);return [document.body,document.documentElement].forEach(s=>s&&t.add(s)),t.forEach(s=>{at.has(s)||at.set(s,It(s)),Qe.set(s,(Qe.get(s)??0)+1),Ke.observe(s);}),()=>{it.delete(r)&&(t.forEach(s=>{let i=(Qe.get(s)??1)-1;if(i)return void Qe.set(s,i);Qe.delete(s),Ke?.unobserve(s);}),it.size||(Ke?.disconnect(),Ke=void 0));}}var yr=0;function hr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Ft(e,n){let r="";try{r=getComputedStyle(e).getPropertyValue(n).trim();}catch{}return r||(e.getAttribute(n)??"").trim()}var Dt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function br(e){if(!Xe)return;let n=Ft(e,"stroke");if(!n||n==="none"){we("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!Dt.has(r)&&!Dt.has(Ft(e,"fill"))&&we("Element has a fill \u2014 it may obscure the stroke animation.",e);}function wr(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 s(){let i=r==="x"?window.scrollX:window.scrollY,l=e-i,u=n-i,m=r==="x";t.innerHTML=`
|
|
2
2
|
<div style="position:absolute;${m?`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;${m?`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",s,{passive:true}),s(),{el:t,destroy(){window.removeEventListener("scroll",s),t.remove();}}}var Ot=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,It=/[MmLlHhVvCcSsQqTtAaZz]/g;function gr(e,n,r){if(!je)return;let t=(e.match(It)??[]).join("").toUpperCase(),s=(n.match(It)??[]).join("").toUpperCase(),i=(e.match(Ot)??[]).length,l=(n.match(Ot)??[]).length;if(t!==s){be(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${s||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,r);return}i!==l&&be(`morphTo: coordinate count differs (${i} \u2192 ${l}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function ut(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),s=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,i=>{let l=parseFloat(i),u=t[s++]??l;return String(+(l+(u-l)*r).toFixed(4))})}function Ft(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,s=r?{...Mt[r],...t}:t,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:u=1,fade:m=false,easing:g="linear",trigger:T={},stagger:q=0,direction:A="forward",once:J=false,debug:$e=false,axis:j="y",scrollContainer:ae,autoReverse:ee=false,delay:U=0,strokeColor:D,strokeWidth:P,fillOpacity:k,waypoints:b,velocityScale:C=false,threshold:x=0,rootMargin:M="0px",repeat:E=0,repeatDelay:te=0,morphTo:L,clip:re,autoplay:we=false,duration:ge=1e3,native:ye=true,onProgress:R,onStart:$,onComplete:f,onEnter:p,onLeave:O,onEnterBack:W,onLeaveBack:Ee}=s,w=re===true?"left":typeof re=="string"?re:false,z=typeof g=="function"?g:ie[g]??ie.linear,le=he(T.start??"top bottom"),He=he(T.end??"bottom top"),Se=typeof ae=="string"?document.querySelector(ae):ae??null,Te=Array.isArray(D)?D[0]:null,ce=Array.isArray(D)?D[1]:typeof D=="string"?D:null,Y=Array.isArray(P)?P[0]:null,ne=Array.isArray(P)?P[1]:typeof P=="number"?P:null,oe=Array.isArray(k)?k[0]:null,X=Array.isArray(k)?k[1]:typeof k=="number"?k:null;function Ne(o){let c=o*100;switch(w){case "right":return `inset(0 0 0 ${100-c}%)`;case "top":return `inset(0 0 ${100-c}% 0)`;case "bottom":return `inset(${100-c}% 0 0 0)`;case "center":return `circle(${o*150}% at 50% 50%)`;default:return `inset(0 ${100-c}% 0 0)`}}let B=w?[]:Array.from(e.querySelectorAll(l)),I=[],ue=[],me=0,Pe=0,a=false,d=false,V=0,fe=false,H=-1,se=[],Ce=-1,K=false,N=0,xe=0,Me,st=null;function pt(){st?.destroy(),st=null;}let ze=new Set,dt=NaN,Ve=true,Xe=-1,gt=performance.now(),qe=NaN;function it(){return Se?j==="x"?Se.scrollLeft:Se.scrollTop:j==="x"?window.scrollX:window.scrollY}function yt(){return Se?j==="x"?Se.clientWidth:Se.clientHeight:j==="x"?window.innerWidth:window.innerHeight}function ht(){let o=tt(e,Se,j);return Le(o,o.scroll,yt(),le,He)}function bt(){(({tStart:me,tEnd:Pe}=ht())),$e&&je&&(pt(),st=dr(me,Pe,j));}function at(o,c=ht){Oe(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:c});let v=o.destroy;return o.destroy=()=>{v.call(o),Ie(e);},o}function Jt(o,c){if(e.style.setProperty("--scroll-draw-progress",String(o)),w){let v=c==="reverse"?1-o:o;e.style.clipPath=Ne(v);return}B.forEach((v,pe)=>{v.style.strokeDashoffset=c==="reverse"?`${I[pe]*o}`:`${I[pe]*(1-o)}`,m&&(v.style.opacity=c==="reverse"?`${1-o}`:`${o}`),Te&&ce?v.style.stroke=Be(Te,ce,o):ce&&(v.style.stroke=ce),Y!==null&&ne!==null?v.style.strokeWidth=`${Y+(ne-Y)*o}`:ne!==null&&(v.style.strokeWidth=`${ne}`),oe!==null&&X!==null?v.style.fillOpacity=`${oe+(X-oe)*o}`:X!==null&&(v.style.fillOpacity=`${X}`),L&&v.tagName.toLowerCase()==="path"&&ue[pe]&&v.setAttribute("d",ut(ue[pe],L,o));});}function Ke(){if(e.style.setProperty("--scroll-draw-progress","0"),w){e.style.clipPath=Ne(0);return}B.forEach((o,c)=>{o.style.strokeDasharray=`${I[c]}`,o.style.strokeDashoffset=A==="reverse"?"0":`${I[c]}`,m?o.style.opacity=A==="reverse"?"1":"0":o.style.opacity="",Te&&(o.style.stroke=Te),Y!==null&&(o.style.strokeWidth=`${Y}`),oe!==null&&(o.style.fillOpacity=`${oe}`),L&&o.tagName.toLowerCase()==="path"&&ue[c]&&o.setAttribute("d",ue[c]);});}if(B.forEach(o=>{pr(o);let c=We(o);I.push(c);let v=o.tagName.toLowerCase()==="path";v?ue.push(o.getAttribute("d")??""):ue.push(""),L&&(v?gr(ue[ue.length-1],L,o):be(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),i?(o.style.strokeDasharray=`${c}`,o.style.strokeDashoffset=A==="reverse"?`${c}`:"0",m&&(o.style.opacity="1"),ce&&(o.style.stroke=ce),ne!==null&&(o.style.strokeWidth=`${ne}`),X!==null&&(o.style.fillOpacity=`${X}`),L&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",L)):(o.style.strokeDasharray=`${c}`,o.style.strokeDashoffset=A==="reverse"?"0":`${c}`,m?o.style.opacity=A==="reverse"?"1":"0":o.style.opacity="",Te&&(o.style.stroke=Te),Y!==null&&(o.style.strokeWidth=`${Y}`),oe!==null&&(o.style.fillOpacity=`${oe}`));}),w){if(i)return e.style.clipPath=Ne(1),f?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=Ne(0);}else if(i)return f?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let wt=typeof g=="string"?rt(g):null;function er(){return !(ye===false||!fr()||!B.length||!wt||w||j!=="y"||Se||u!==1||q!==0||J||ee||C!==false||L||b||E||U>0||R||$||f||p||O||W||Ee||D!=null||P!=null||k!=null||(T.start??"top bottom").trim()!=="top bottom"||(T.end??"bottom top").trim()!=="bottom top")}function tr(){let o=++mr,c=`svg-scroll-draw-${o}`,v=`svg-scroll-draw-host-${o}`,pe=`--svg-scroll-draw-${o}`,Re=A==="reverse"?"0":"var(--ssd-len)",Fe=A==="reverse"?"var(--ssd-len)":"0",ke=`stroke-dashoffset:${Re};`,S=`stroke-dashoffset:${Fe};`;m&&(ke+=`opacity:${A==="reverse"?1:0};`,S+=`opacity:${A==="reverse"?0:1};`);let F=document.createElement("style");F.setAttribute("data-svg-scroll-draw",""),F.textContent=`@keyframes ${c}{from{${ke}}to{${S}}}.${v}{view-timeline-name:${pe};view-timeline-axis:block;}.${c}{animation-name:${c};animation-duration:auto;animation-timing-function:${wt};animation-fill-mode:both;animation-timeline:${pe};animation-range:cover 0% cover 100%;}`,document.head.appendChild(F),e.classList.add(v);function de(y,Q){y.style.setProperty("--ssd-len",String(I[Q])),y.style.strokeDasharray=`${I[Q]}`,y.style.strokeDashoffset="",y.style.opacity="",y.style.animationPlayState="",y.classList.add(c);}B.forEach(de);let h=false,_=-1;function G(){if(_>=0)return _;let y=e.getBoundingClientRect(),{tStart:Q,tEnd:Ae}=Le({top:y.top,height:y.height},it(),yt(),le,He);return z(Z(it(),Q,Ae,u))}return {destroy(){e.classList.remove(v),B.forEach(y=>{y.classList.remove(c),y.style.removeProperty("--ssd-len"),y.style.animationPlayState="";}),F.remove();},replay(){h=false,_=-1,B.forEach(de);},pause(){h=true,B.forEach(y=>{y.style.animationPlayState="paused";});},resume(){h&&(h=false,B.forEach(y=>{y.style.animationPlayState="running";}));},seek(y){let Q=Math.min(1,Math.max(0,y));_=Q,h=true,B.forEach((Ae,ve)=>{Ae.classList.remove(c),Ae.style.strokeDashoffset=A==="reverse"?`${I[ve]*Q}`:`${I[ve]*(1-Q)}`,m&&(Ae.style.opacity=A==="reverse"?`${1-Q}`:`${Q}`);});},getProgress(){return G()},refresh(){B.forEach((y,Q)=>{I[Q]=We(y),y.style.setProperty("--ssd-len",String(I[Q])),y.style.strokeDasharray=`${I[Q]}`;});}}}if(er())return at(tr());function rr(){let o=Math.max(1,ge),c=0,v=0,pe=false;function Re(h){let _=true;if(w){let G=Math.min(1,Math.max(0,h/o)),y=z(G);N=y,e.style.setProperty("--scroll-draw-progress",String(y)),e.style.clipPath=Ne(A==="reverse"?1-y:y),R?.(y),G<1&&(_=false);}else B.forEach((G,y)=>{let Q=y*q*o,Ae=Math.min(1,Math.max(0,(h-Q)/o)),ve=z(Ae);G.style.strokeDashoffset=A==="reverse"?`${I[y]*ve}`:`${I[y]*(1-ve)}`,m&&(G.style.opacity=A==="reverse"?`${1-ve}`:`${ve}`),Te&&ce?G.style.stroke=Be(Te,ce,ve):ce&&(G.style.stroke=ce),Y!==null&&ne!==null?G.style.strokeWidth=`${Y+(ne-Y)*ve}`:ne!==null&&(G.style.strokeWidth=`${ne}`),oe!==null&&X!==null?G.style.fillOpacity=`${oe+(X-oe)*ve}`:X!==null&&(G.style.fillOpacity=`${X}`),L&&G.tagName.toLowerCase()==="path"&&ue[y]&&G.setAttribute("d",ut(ue[y],L,ve)),y===0&&(N=ve,R?.(ve),e.style.setProperty("--scroll-draw-progress",String(ve))),Ae<1&&(_=false);});if(b){let G=Math.min(1,Math.max(0,h/o)),y=z(G);for(let Q in b){let Ae=parseFloat(Q);y>=Ae&&!ze.has(Ae)&&(ze.add(Ae),b[Q]?.());}}return _}function Fe(h){if(K)return;let _=h-c;d||(d=true,$?.());let G=Re(_);if(G&&!a){a=true,Re(o*(1+Math.max(0,B.length-1)*q)),f?.(),xe<(E==="infinite"?1/0:E??0)&&(xe++,Me=setTimeout(()=>{c=performance.now(),d=false,a=false,ze.clear(),Ke(),V=requestAnimationFrame(Fe);},te));return}G||(V=requestAnimationFrame(Fe));}function ke(){cancelAnimationFrame(V),clearTimeout(Me),c=performance.now(),v=0,K=false,d=false,a=false,xe=0,pe=true,N=0,ze.clear(),Ke(),V=requestAnimationFrame(Fe);}let S=new IntersectionObserver(h=>{h.forEach(_=>{_.isIntersecting&&!(J&&a)?ke():!_.isIntersecting&&!J&&!a&&(cancelAnimationFrame(V),clearTimeout(Me),pe=false);});},{root:Se??null,threshold:x,rootMargin:M}),F;function de(){clearTimeout(F),F=setTimeout(()=>{B.forEach((h,_)=>{I[_]=We(h),h.style.strokeDasharray=`${I[_]}`;});},150);}return window.addEventListener("resize",de),window.addEventListener("orientationchange",de),U>0?setTimeout(()=>S.observe(e),U):S.observe(e),{destroy(){cancelAnimationFrame(V),clearTimeout(Me),S.disconnect(),window.removeEventListener("resize",de),window.removeEventListener("orientationchange",de),clearTimeout(F);},replay(){xe=0,ke();},pause(){K||!pe||(K=true,v=performance.now()-c,cancelAnimationFrame(V));},resume(){K&&(K=false,pe=true,c=performance.now()-v,V=requestAnimationFrame(Fe));},seek(h){let _=Math.min(1,Math.max(0,h));N=_,K=true,v=_*o,c=performance.now()-v,cancelAnimationFrame(V),Re(v);},getProgress(){return N},refresh(){clearTimeout(F),B.forEach((h,_)=>{I[_]=We(h),h.style.strokeDasharray=`${I[_]}`;});}}}if(we)return at(rr());bt();function Qe(){if(!fe||K)return;let o=performance.now(),c=it();if(!Ve&&C===false&&c===dt){V=requestAnimationFrame(Qe);return}Ve=false,dt=c;let v=u;if(C!==false){let S=o-gt,F=S>0?Math.abs(c-(Xe<0?c:Xe))/S:0;v=u*Math.max(.2,1+F*(typeof C=="number"?C:1)*.04);}Xe=c,gt=o;let pe=ee?Ce===-1||c>=Ce?"forward":"reverse":A;Ce=c;let Re=Pe-me,Fe=true,ke=Re===0?0:(c-me)/Re;if(isNaN(qe)||(qe<=0&&ke>0?p?.():qe>0&&ke<=0&&Ee?.(),qe<1&&ke>=1?O?.():qe>=1&&ke<1&&W?.()),qe=ke,w){let S=z(Z(c,me,Pe,v));J&&!ee&&(H=Math.max(H,S),S=H),N=S,e.style.setProperty("--scroll-draw-progress",String(S));let F=pe==="reverse"?1-S:S;e.style.clipPath=Ne(F),R?.(S),!d&&Z(c,me,Pe,v)>0&&(d=true,$?.()),S>=1&&!a?(a=true,f?.(),xe<(E==="infinite"?1/0:E??0)&&(xe++,Me=setTimeout(()=>{H=-1,d=false,a=false,e.style.clipPath=Ne(0);},te))):S<1&&!J&&(a=false),V=requestAnimationFrame(Qe);return}if(B.forEach((S,F)=>{let de=F*q*Re,h=z(Z(c,me+de,Pe+de,v));J&&!ee&&(h=se[F]=Math.max(se[F]??H,h)),S.style.strokeDashoffset=pe==="reverse"?`${I[F]*h}`:`${I[F]*(1-h)}`,m&&(S.style.opacity=pe==="reverse"?`${1-h}`:`${h}`),Te&&ce?S.style.stroke=Be(Te,ce,h):ce&&(S.style.stroke=ce),Y!==null&&ne!==null?S.style.strokeWidth=`${Y+(ne-Y)*h}`:ne!==null&&(S.style.strokeWidth=`${ne}`),oe!==null&&X!==null?S.style.fillOpacity=`${oe+(X-oe)*h}`:X!==null&&(S.style.fillOpacity=`${X}`),L&&S.tagName.toLowerCase()==="path"&&ue[F]&&S.setAttribute("d",ut(ue[F],L,h)),F===0&&(N=h,R?.(h),e.style.setProperty("--scroll-draw-progress",String(h))),h<1&&(Fe=false);}),b){let S=z(Z(c,me,Pe,v));for(let F in b){let de=parseFloat(F);S>=de&&!ze.has(de)&&(ze.add(de),b[F]?.());}}!d&&Z(c,me,Pe,v)>0&&(d=true,$?.()),Fe&&!a?(a=true,f?.(),xe<(E==="infinite"?1/0:E??0)&&(xe++,Me=setTimeout(()=>{H=-1,se=[],d=false,a=false,ze.clear(),Ke(),Ve=true;},te))):!Fe&&!J&&(a=false),V=requestAnimationFrame(Qe);}let lt=false;function Ze(){lt||(lt=true,V=requestAnimationFrame(function(){Qe();}));}function Je(){lt=false,cancelAnimationFrame(V);}let ct=new IntersectionObserver(o=>{o.forEach(c=>{fe=c.isIntersecting,fe&&!K?(Ve=true,Ze()):Je();});},{root:Se??null,threshold:x,rootMargin:M});function vt(){B.forEach((o,c)=>{I[c]=We(o),o.style.strokeDasharray=`${I[c]}`;}),bt(),Ve=true;}let et;function Ge(){clearTimeout(et),et=setTimeout(vt,150);}window.addEventListener("resize",Ge),window.addEventListener("orientationchange",Ge);let nr=De([e],Ge);return U>0?setTimeout(()=>ct.observe(e),U):ct.observe(e),at({destroy(){cancelAnimationFrame(V),clearTimeout(Me),Je(),ct.disconnect(),nr(),window.removeEventListener("resize",Ge),window.removeEventListener("orientationchange",Ge),clearTimeout(et),pt();},replay(){H=-1,se=[],Ce=-1,Xe=-1,d=false,a=false,xe=0,K=false,N=0,ze.clear(),clearTimeout(Me),Ke(),Ve=true,fe&&Ze();},pause(){K=true,Je();},resume(){K&&(K=false,Ve=true,fe&&Ze());},seek(o){let c=Math.min(1,Math.max(0,o));N=c,H=c,se=[],K=true,Je(),Jt(c,A),Ve=true;},getProgress(){return N},refresh(){clearTimeout(et),vt(),fe&&!K&&Ze();}},()=>({tStart:me,tEnd:Pe}))}var Dt=new WeakMap,yr=0;function mt(e){return JSON.stringify(e,(n,r)=>{if(typeof r=="function")return "\u0192";if(typeof Element<"u"&&r instanceof Element){let t=Dt.get(r);return t===void 0&&Dt.set(r,t=++yr),`el#${t}`}return r})}function Ht(e,n){let r={...e};for(let t of Object.keys(r))typeof r[t]=="function"&&(r[t]=(...s)=>n()[t]?.(...s));return r}function hr(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Nt(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let s=[],i=[],l=t[2].trim();if(l)for(let u of l.split(/[\s,]+/)){let m=u.match(/^([-+]?[\d.eE]+)(.*)$/);s.push(m?parseFloat(m[1]):0),i.push(m?m[2]:"");}n.push({fn:t[1],nums:s,units:i});}return n}function br(e,n,r){let t=Nt(e),s=Nt(n);return t.length===0||t.length!==s.length?r<1?e:n:t.map((i,l)=>{let u=s[l];return i.fn!==u.fn||i.nums.length!==u.nums.length?r<1?`${i.fn}(${i.nums.map((m,g)=>`${m}${i.units[g]}`).join(", ")})`:`${u.fn}(${u.nums.map((m,g)=>`${m}${u.units[g]}`).join(", ")})`:`${i.fn}(${i.nums.map((m,g)=>`${m+(u.nums[g]-m)*r}${i.units[g]}`).join(", ")})`}).join(" ")}function Rt(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),s=String(n);if(hr(t))return Be(t,s,r);if(t.includes("("))return br(t,s,r);let i=t.match(/^([-+]?[\d.]+)(.*)$/),l=s.match(/^([-+]?[\d.]+)(.*)$/);if(i&&l){let u=parseFloat(i[1]),m=parseFloat(l[1]);return `${u+(m-u)*r}${i[2]||l[2]}`}return r<1?t:s}function wr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var vr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Er=0,zt="--scroll-draw-progress";function Sr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function Vt(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:s={},easing:i="ease-out",speed:l=1,once:u=false,axis:m="y",scrollContainer:g,native:T=true,velocityScale:q=false,respectReducedMotion:A=true,triggerElement:J,onProgress:$e,onComplete:j,onEnter:ae,onLeave:ee,onEnterBack:U,onLeaveBack:D}=n,P=A&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,k=typeof i=="function"?i:ie[i]??ie["ease-out"],b=he(s.start??"top bottom"),C=he(s.end??"bottom top"),x=J??e,M=typeof g=="string"?document.querySelector(g):g??null,E=Object.entries(t).map(([a,d])=>({prop:wr(a),from:Array.isArray(d)?d[0]:"",to:Array.isArray(d)?d[1]:d}));function te(){let a=window.getComputedStyle(e);for(let d of E)d.from===""&&(d.from=a.getPropertyValue(d.prop).trim()||"0");}function L(){for(let a of E)e.style.setProperty(a.prop,String(a.to));}let re=new Map;for(let a of [...E.map(d=>d.prop),zt])re.set(a,e.style.getPropertyValue(a));function we(){for(let[a,d]of re)d?e.style.setProperty(a,d):e.style.removeProperty(a);}if(P)return L(),j?.(),{...r,destroy:we,getProgress:()=>1};te();let ge=typeof i=="string"?rt(i):null;function ye(){if(!T||!Sr()||!ge||m!=="y"||M||x!==e||u||l!==1||$e||j||ae||ee||U||D||q!==false||(s.start??"top bottom").trim()!=="top bottom"||(s.end??"bottom top").trim()!=="bottom top")return false;for(let a of E)if(!vr.has(a.prop))return false;return true}function R(){let a=`ssd-a-${++Er}`,d=E.map(N=>`${N.prop}:${N.from}`).join(";"),V=E.map(N=>`${N.prop}:${N.to}`).join(";"),fe=document.createElement("style");fe.setAttribute("data-ssd-animate",""),fe.textContent=`@keyframes ${a}{from{${d}}to{${V}}}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${ge};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(fe),e.classList.add(a);let H=()=>m==="x"?window.scrollX:window.scrollY,se=()=>m==="x"?window.innerWidth:window.innerHeight,Ce=()=>{let N=e.getBoundingClientRect();return Le({top:N.top,height:N.height},H(),se(),b,C)};Oe(e,{type:"animate",getProgress:()=>K.getProgress(),getTrigger:Ce});let K={refresh(){},destroy(){e.classList.remove(a),fe.remove(),e.style.animationPlayState="",we(),Ie(e);},replay(){e.classList.remove(a),e.offsetWidth,e.classList.add(a);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(N){let xe=Math.min(1,Math.max(0,N));e.classList.remove(a);for(let Me of E)e.style.setProperty(Me.prop,Rt(Me.from,Me.to,xe));},getProgress(){let{tStart:N,tEnd:xe}=Ce();return k(Z(H(),N,xe,l))}};return K}if(ye())return R();let $=0,f=0,p=0,O=false,W=false,Ee=-1,w=0,z=false,le=NaN,He=-1,Se=0,Te=()=>M?m==="x"?M.scrollLeft:M.scrollTop:m==="x"?window.scrollX:window.scrollY,ce=()=>M?m==="x"?M.clientWidth:M.clientHeight:m==="x"?window.innerWidth:window.innerHeight,Y=x===e?E:[],ne=false;function oe(){let a=e.style,d=Y.map(se=>a.getPropertyValue(se.prop)),V=a.transition;Y.length&&(a.transition="none"),Y.forEach(se=>a.setProperty(se.prop,re.get(se.prop)??""));let fe=tt(x,M,m);Y.forEach((se,Ce)=>a.setProperty(se.prop,d[Ce])),Y.length&&(e.offsetWidth,a.transition=V);let H=Le(fe,fe.scroll,ce(),b,C);ne&&Math.abs(H.tStart-$)<1&&Math.abs(H.tEnd-f)<1||(ne=true,$=H.tStart,f=H.tEnd);}function X(a){e.style.setProperty(zt,String(a));for(let d of E)e.style.setProperty(d.prop,Rt(d.from,d.to,a));$e?.(a);}function Ne(a){if(isNaN(le)){le=a;return}le<=0&&a>0?ae?.():le>0&&a<=0&&D?.(),le<1&&a>=1?ee?.():le>=1&&a<1&&U?.(),le=a;}function B(){if(!O||W)return;let a=performance.now(),d=Te(),V=l;if(q!==false){let se=a-Se,Ce=se>0?Math.abs(d-(He<0?d:He))/se:0;V=l*Math.max(.2,1+Ce*(typeof q=="number"?q:1)*.04);}He=d,Se=a;let fe=f===$?0:(d-$)/(f-$);Ne(fe);let H=k(Z(d,$,f,V));u&&(Ee=Math.max(Ee,H),H=Ee),w=H,X(H),H>=1&&!z?(z=true,j?.()):H<1&&!u&&(z=false),p=requestAnimationFrame(B);}oe(),f===$&&be("scrollAnimate: the trigger window has zero length (start and end resolve to the same scroll position), so this element will never animate. If the target is inside a position:sticky stage, measure the trigger from the container that holds the scroll room via `triggerElement`.",e);{let a=k(Z(Te(),$,f,l));u&&a>0&&(Ee=a),w=a,X(a);}let I=new IntersectionObserver(a=>{a.forEach(d=>{O=d.isIntersecting,O&&!W?p=requestAnimationFrame(B):cancelAnimationFrame(p);});},{root:M??null}),ue;function me(){clearTimeout(ue),ue=setTimeout(oe,150);}window.addEventListener("resize",me),window.addEventListener("orientationchange",me);let Pe=De([x],me);return I.observe(e),Oe(e,{type:"animate",getProgress:()=>w,getTrigger:()=>({tStart:$,tEnd:f})}),{destroy(){cancelAnimationFrame(p),I.disconnect(),window.removeEventListener("resize",me),window.removeEventListener("orientationchange",me),Pe(),clearTimeout(ue),we(),Ie(e);},replay(){Ee=-1,z=false,w=0,W=false,X(0);},pause(){W=true,cancelAnimationFrame(p);},resume(){W&&(W=false,O&&(p=requestAnimationFrame(B)));},seek(a){let d=Math.min(1,Math.max(0,a));w=d,Ee=d,W=true,cancelAnimationFrame(p),X(d);},getProgress(){return w},refresh(){oe();}}}var ft={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function _t(e,n){if(typeof window>"u")return ft;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return be("scrollCounter: element not found:",e),ft;let t=r,{from:s=0,to:i,format:l,easing:u="ease-out",trigger:m={},once:g=true,decimals:T,onComplete:q}=n,A=T!==void 0?f=>f.toFixed(T):l??(f=>String(Math.round(f))),J=typeof u=="function"?u:ie[u]??ie["ease-out"],$e=he(m.start??"top 80%"),j=he(m.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=A(i),q?.(),ft;let ee=0,U=0,D=false,P=0,k=false,b=false,C=-1,x=0,M=false,E=()=>window.scrollY,te=()=>window.innerHeight;function L(){let f=t.getBoundingClientRect(),p=Le({top:f.top,height:f.height},E(),te(),$e,j);D&&Math.abs(p.tStart-ee)<1&&Math.abs(p.tEnd-U)<1||(D=true,ee=p.tStart,U=p.tEnd);}function re(f){t.textContent=A(s+(i-s)*f),t.style.setProperty("--scroll-draw-progress",String(f));}function we(){if(!k||b)return;let f=J(Z(E(),ee,U,1));g&&(C=Math.max(C,f),f=C),x=f,re(f),f>=1&&!M?(M=true,q?.()):f<1&&!g&&(M=false),P=requestAnimationFrame(we);}L();{let f=J(Z(E(),ee,U,1));g&&f>0&&(C=f),x=f,re(f);}let ge=new IntersectionObserver(f=>{f.forEach(p=>{k=p.isIntersecting,k&&!b?P=requestAnimationFrame(we):cancelAnimationFrame(P);});}),ye;function R(){clearTimeout(ye),ye=setTimeout(L,150);}window.addEventListener("resize",R),window.addEventListener("orientationchange",R);let $=De([t],R);return ge.observe(t),Oe(t,{type:"counter",getProgress:()=>x,getTrigger:()=>({tStart:ee,tEnd:U})}),{destroy(){cancelAnimationFrame(P),ge.disconnect(),window.removeEventListener("resize",R),window.removeEventListener("orientationchange",R),$(),clearTimeout(ye),Ie(t);},replay(){C=-1,M=false,x=0,b=false,re(0);},pause(){b=true,cancelAnimationFrame(P);},resume(){b&&(b=false,k&&(P=requestAnimationFrame(we)));},seek(f){let p=Math.min(1,Math.max(0,f));x=p,C=p,b=true,cancelAnimationFrame(P),re(p);},getProgress(){return x}}}var qt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Wt(e,n={}){if(typeof window>"u")return qt;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return be("scrollVideo: <video> element not found:",e),qt;let t=r,{trigger:s={},easing:i="linear",once:l=false,axis:u="y",preload:m="auto",triggerElement:g,onReady:T,onComplete:q,onProgress:A}=n,J=g??t,$e=window.matchMedia("(prefers-reduced-motion: reduce)").matches,j=typeof i=="function"?i:ie[i]??ie.linear,ae=he(s.start??"top top"),ee=he(s.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=m);let U=n.from??0,D=n.to,P=0,k=0,b=0,C=false,x=false,M=-1,E=0,te=false,L=false,re=()=>u==="x"?window.scrollX:window.scrollY,we=()=>u==="x"?window.innerWidth:window.innerHeight;function ge(){let w=J.getBoundingClientRect(),z=u==="x"?w.left:w.top,le=u==="x"?w.width:w.height,He=Le({top:z,height:le},re(),we(),ae,ee);P=He.tStart,k=He.tEnd,L&&k===P&&be("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t);}let ye=NaN;function R(w){if(!L)return;let z=D??t.duration??0,le=U+(z-U)*w;le!==ye&&(ye=le,t.currentTime=le),t.style.setProperty("--scroll-draw-progress",String(w)),A?.(w);}function $(){if(!C||x||!L||$e)return;let w=j(Z(re(),P,k,1));l&&(M=Math.max(M,w),w=M),E=w,R(w),w>=1&&!te?(te=true,q?.()):w<1&&!l&&(te=false),b=requestAnimationFrame($);}function f(){if(L=true,D===void 0&&(D=t.duration),$e){R(1),T?.();return}ge(),T?.(),C&&!x&&(b=requestAnimationFrame($));}t.readyState>=1?f():t.addEventListener("loadedmetadata",f,{once:true}),L||ge();let p=new IntersectionObserver(w=>{w.forEach(z=>{C=z.isIntersecting,C&&!x&&L?b=requestAnimationFrame($):cancelAnimationFrame(b);});}),O;function W(){clearTimeout(O),O=setTimeout(ge,150);}window.addEventListener("resize",W),window.addEventListener("orientationchange",W);let Ee=De([J],W);return p.observe(t),Oe(t,{type:"video",getProgress:()=>E,getTrigger:()=>({tStart:P,tEnd:k})}),{destroy(){cancelAnimationFrame(b),p.disconnect(),t.removeEventListener("loadedmetadata",f),window.removeEventListener("resize",W),window.removeEventListener("orientationchange",W),Ee(),clearTimeout(O),Ie(t);},replay(){M=-1,te=false,E=0,x=false,ye=NaN,R(0);},pause(){x=true,cancelAnimationFrame(b);},resume(){x&&(x=false,C&&L&&(b=requestAnimationFrame($)));},seek(w){let z=Math.min(1,Math.max(0,w));E=z,M=z,x=true,cancelAnimationFrame(b),ye=NaN,R(z);},getProgress(){return E}}}function jt(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 Tr(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 Bt(e){let n=jt(e),r=new Map;for(let i of n){let l=i.offsetTop;r.has(l)||r.set(l,[]),r.get(l).push(i);}let t=[],s=Array.from(r.keys()).sort((i,l)=>i-l);for(let i of s){let l=r.get(i),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block",l.forEach((m,g)=>{let T=m.nextElementSibling;u.appendChild(m),g<l.length-1&&T&&T.style.whiteSpace==="pre"&&u.appendChild(T);}),t.push(u);}return e.textContent="",t.forEach((i,l)=>{e.appendChild(i),l<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function xr(e,n,r,t){if(r<=1||t===0)return e;let s=(r-1)*t,i=n*t,l=i+(1-s);return l<=i?e>=i?1:0:Math.min(1,Math.max(0,(e-i)/(l-i)))}function Mr(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 Gt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Ut(e,n={}){if(typeof window>"u")return Gt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return be("scrollText: element not found:",e),Gt;let t=r,{split:s="words",stagger:i=.04,easing:l="ease-out",from:u={opacity:0,y:24},trigger:m={},once:g=true,onComplete:T}=n,q=window.matchMedia("(prefers-reduced-motion: reduce)").matches,A=typeof l=="function"?l:ie[l]??ie["ease-out"],J=he(m.start??"top 85%"),$e=he(m.end??"top 40%"),j=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let ae;s==="chars"?ae=Tr(t):s==="lines"?ae=Bt(t):ae=jt(t);let ee=ae.length;function U(p,O){u?.opacity!==void 0&&(p.style.opacity=String(u.opacity+(1-u.opacity)*O));let W=Mr(O,u);W&&(p.style.transform=W);}function D(p){t.style.setProperty("--scroll-draw-progress",String(p)),ae.forEach((O,W)=>{let Ee=A(xr(p,W,ee,i));U(O,Ee);});}if(q)return D(1),T?.(),{destroy(){t.innerHTML=j,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};D(0);let P=0,k=0,b=0,C=false,x=false,M=-1,E=0,te=false,L=()=>window.scrollY,re=()=>window.innerHeight;function we(){let p=t.getBoundingClientRect(),O=Le({top:p.top,height:p.height},L(),re(),J,$e);P=O.tStart,k=O.tEnd;}function ge(){if(!C||x)return;let p=Z(L(),P,k,1);g&&(M=Math.max(M,p),p=M),E=p,D(p),p>=1&&!te?(te=true,T?.()):p<1&&!g&&(te=false),b=requestAnimationFrame(ge);}we();let ye=new IntersectionObserver(p=>{p.forEach(O=>{C=O.isIntersecting,C&&!x?b=requestAnimationFrame(ge):cancelAnimationFrame(b);});}),R;function $(){clearTimeout(R),R=setTimeout(()=>{if(s==="lines"){let p=E;t.innerHTML=j,t.setAttribute("aria-label",t.textContent??""),ae=Bt(t),D(p);}we();},150);}window.addEventListener("resize",$),window.addEventListener("orientationchange",$);let f=De([t],$);return ye.observe(t),Oe(t,{type:"text",getProgress:()=>E,getTrigger:()=>({tStart:P,tEnd:k})}),{destroy(){cancelAnimationFrame(b),ye.disconnect(),window.removeEventListener("resize",$),window.removeEventListener("orientationchange",$),f(),clearTimeout(R),t.innerHTML=j,t.removeAttribute("aria-label"),Ie(t);},replay(){M=-1,te=false,E=0,x=false,D(0);},pause(){x=true,cancelAnimationFrame(b);},resume(){x&&(x=false,C&&(b=requestAnimationFrame(ge)));},seek(p){let O=Math.min(1,Math.max(0,p));E=O,M=O,x=true,cancelAnimationFrame(b),D(O);},getProgress(){return E}}}var _e=class{constructor(n){this.create=n;this.instance=null;this.el=null;this.key="";}init(n,r){return this.destroy(),this.el=n,this.latest=r,this.key=mt(r),this.instance=this.create(n,Ht(r,()=>this.latest)),this}update(n){return this.el?mt(n)!==this.key?this.init(this.el,n):(this.latest=n,this):this}replay(){return this.instance?.replay(),this}pause(){return this.instance?.pause(),this}resume(){return this.instance?.resume(),this}seek(n){return this.instance?.seek(n),this}getProgress(){return this.instance?.getProgress()??0}destroy(){return this.instance?.destroy(),this.instance=this.el=null,this}},Yt=class extends _e{constructor(){super(Ft);}init(n,r={}){return super.init(n,r)}},Xt=class extends _e{constructor(){super(Vt);}},Kt=class extends _e{constructor(){super(_t);}},Qt=class extends _e{constructor(){super(Wt);}init(n,r={}){return super.init(n,r)}},Zt=class extends _e{constructor(){super(Ut);}init(n,r={}){return super.init(n,r)}};exports.EngineRef=_e;exports.ScrollAnimateRef=Xt;exports.ScrollCounterRef=Kt;exports.ScrollDrawRef=Yt;exports.ScrollTextRef=Zt;exports.ScrollVideoRef=Qt;
|
|
3
|
+
<div style="position:absolute;${m?`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",s,{passive:true}),s(),{el:t,destroy(){window.removeEventListener("scroll",s),t.remove();}}}var Ht=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,Nt=/[MmLlHhVvCcSsQqTtAaZz]/g;function vr(e,n,r){if(!Xe)return;let t=(e.match(Nt)??[]).join("").toUpperCase(),s=(n.match(Nt)??[]).join("").toUpperCase(),i=(e.match(Ht)??[]).length,l=(n.match(Ht)??[]).length;if(t!==s){we(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${s||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,r);return}i!==l&&we(`morphTo: coordinate count differs (${i} \u2192 ${l}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function ft(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),s=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,i=>{let l=parseFloat(i),u=t[s++]??l;return String(+(l+(u-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,s=r?{...Pt[r],...t}:t,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:u=1,fade:m=false,easing:d="linear",trigger:T={},stagger:H=0,direction:A="forward",once:re=false,debug:Ce=false,axis:G="y",scrollContainer:ue,autoReverse:ne=false,delay:Y=0,strokeColor:N,strokeWidth:C,fillOpacity:O,waypoints:w,velocityScale:k=false,threshold:x=0,rootMargin:M="0px",repeat:E=0,repeatDelay:oe=0,morphTo:L,clip:se,autoplay:ve=false,duration:ge=1e3,native:ye=true,onProgress:R,onStart:P,onComplete:f,onEnter:p,onLeave:I,onEnterBack:q,onLeaveBack:Me}=s,v=se===true?"left":typeof se=="string"?se:false,z=typeof d=="function"?d:ce[d]??ce.linear,me=be(T.start??"top bottom"),He=be(T.end??"bottom top"),Ee=typeof ue=="string"?document.querySelector(ue):ue??null,Ae=Array.isArray(N)?N[0]:null,fe=Array.isArray(N)?N[1]:typeof N=="string"?N:null,X=Array.isArray(C)?C[0]:null,ie=Array.isArray(C)?C[1]:typeof C=="number"?C:null,ae=Array.isArray(O)?O[0]:null,K=Array.isArray(O)?O[1]:typeof O=="number"?O:null;function Ne(o){let a=o*100;switch(v){case "right":return `inset(0 0 0 ${100-a}%)`;case "top":return `inset(0 0 ${100-a}% 0)`;case "bottom":return `inset(${100-a}% 0 0 0)`;case "center":return `circle(${o*150}% at 50% 50%)`;default:return `inset(0 ${100-a}% 0 0)`}}let V=v?[]:Array.from(e.querySelectorAll(l)),F=[],pe=[],J=0,Se=0,c=H,h=0,_=false,B=false,$=0,ee=false,he=-1,Re=[],le=-1,j=false,Te=0,ze=0,Ve,lt=null;function gt(){lt?.destroy(),lt=null;}let _e=new Set,yt=NaN,We=true,Ze=-1,ht=performance.now(),Be=NaN;function Je(){return Ee?G==="x"?Ee.scrollLeft:Ee.scrollTop:G==="x"?window.scrollX:window.scrollY}function bt(){return Ee?G==="x"?Ee.clientWidth:Ee.clientHeight:G==="x"?window.innerWidth:window.innerHeight}function wt(){let o=ot(e,Ee,G);return Pe(o,o.scroll,bt(),me,He)}function nr(){let o=Se-J,a=V.length-1,y=Ee??document.documentElement,Q=G==="x"?"Width":"Height";if(c=H,H>0&&a>0&&o>0){let Le=y[`scroll${Q}`]-y[`client${Q}`]-1-J-o/u;Le>=0&&(c=Math.min(H,Le/(a*o)));}h=Se+a*c*o;}function vt(){(({tStart:J,tEnd:Se}=wt())),nr(),Ce&&Xe&&(gt(),lt=wr(J,Se,G));}function ct(o,a=wt){Oe(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:a});let y=o.destroy;return o.destroy=()=>{y.call(o),Ie(e);},o}function or(o,a){if(e.style.setProperty("--scroll-draw-progress",String(o)),v){let y=a==="reverse"?1-o:o;e.style.clipPath=Ne(y);return}V.forEach((y,Q)=>{y.style.strokeDashoffset=a==="reverse"?`${F[Q]*o}`:`${F[Q]*(1-o)}`,m&&(y.style.opacity=a==="reverse"?`${1-o}`:`${o}`),Ae&&fe?y.style.stroke=Ue(Ae,fe,o):fe&&(y.style.stroke=fe),X!==null&&ie!==null?y.style.strokeWidth=`${X+(ie-X)*o}`:ie!==null&&(y.style.strokeWidth=`${ie}`),ae!==null&&K!==null?y.style.fillOpacity=`${ae+(K-ae)*o}`:K!==null&&(y.style.fillOpacity=`${K}`),L&&y.tagName.toLowerCase()==="path"&&pe[Q]&&y.setAttribute("d",ft(pe[Q],L,o));});}function et(){if(e.style.setProperty("--scroll-draw-progress","0"),v){e.style.clipPath=Ne(0);return}V.forEach((o,a)=>{o.style.strokeDasharray=`${F[a]}`,o.style.strokeDashoffset=A==="reverse"?"0":`${F[a]}`,m?o.style.opacity=A==="reverse"?"1":"0":o.style.opacity="",Ae&&(o.style.stroke=Ae),X!==null&&(o.style.strokeWidth=`${X}`),ae!==null&&(o.style.fillOpacity=`${ae}`),L&&o.tagName.toLowerCase()==="path"&&pe[a]&&o.setAttribute("d",pe[a]);});}if(V.forEach(o=>{br(o);let a=je(o);F.push(a);let y=o.tagName.toLowerCase()==="path";y?pe.push(o.getAttribute("d")??""):pe.push(""),L&&(y?vr(pe[pe.length-1],L,o):we(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),i?(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=A==="reverse"?`${a}`:"0",m&&(o.style.opacity="1"),fe&&(o.style.stroke=fe),ie!==null&&(o.style.strokeWidth=`${ie}`),K!==null&&(o.style.fillOpacity=`${K}`),L&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",L)):(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=A==="reverse"?"0":`${a}`,m?o.style.opacity=A==="reverse"?"1":"0":o.style.opacity="",Ae&&(o.style.stroke=Ae),X!==null&&(o.style.strokeWidth=`${X}`),ae!==null&&(o.style.fillOpacity=`${ae}`));}),v){if(i)return e.style.clipPath=Ne(1),f?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=Ne(0);}else if(i)return f?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let Et=typeof d=="string"?st(d):null;function sr(){return !(ye===false||!hr()||!V.length||!Et||v||G!=="y"||Ee||u!==1||H!==0||re||ne||k!==false||L||w||E||Y>0||R||P||f||p||I||q||Me||N!=null||C!=null||O!=null||(T.start??"top bottom").trim()!=="top bottom"||(T.end??"bottom top").trim()!=="bottom top")}function ir(){let o=++yr,a=`svg-scroll-draw-${o}`,y=`svg-scroll-draw-host-${o}`,Q=`--svg-scroll-draw-${o}`,Le=A==="reverse"?"0":"var(--ssd-len)",Fe=A==="reverse"?"var(--ssd-len)":"0",ke=`stroke-dashoffset:${Le};`,S=`stroke-dashoffset:${Fe};`;m&&(ke+=`opacity:${A==="reverse"?1:0};`,S+=`opacity:${A==="reverse"?0:1};`);let D=document.createElement("style");D.setAttribute("data-svg-scroll-draw",""),D.textContent=`@keyframes ${a}{from{${ke}}to{${S}}}.${y}{view-timeline-name:${Q};view-timeline-axis:block;}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${Et};animation-fill-mode:both;animation-timeline:${Q};animation-range:cover 0% cover 100%;}`,document.head.appendChild(D),e.classList.add(y);function de(g,Z){g.style.setProperty("--ssd-len",String(F[Z])),g.style.strokeDasharray=`${F[Z]}`,g.style.strokeDashoffset="",g.style.opacity="",g.style.animationPlayState="",g.classList.add(a);}V.forEach(de);let b=false,W=-1;function U(){if(W>=0)return W;let g=e.getBoundingClientRect(),{tStart:Z,tEnd:$e}=Pe({top:g.top,height:g.height},Je(),bt(),me,He);return z(te(Je(),Z,$e,u))}return {destroy(){e.classList.remove(y),V.forEach(g=>{g.classList.remove(a),g.style.removeProperty("--ssd-len"),g.style.animationPlayState="";}),D.remove();},replay(){b=false,W=-1,V.forEach(de);},pause(){b=true,V.forEach(g=>{g.style.animationPlayState="paused";});},resume(){b&&(b=false,V.forEach(g=>{g.style.animationPlayState="running";}));},seek(g){let Z=Math.min(1,Math.max(0,g));W=Z,b=true,V.forEach(($e,xe)=>{$e.classList.remove(a),$e.style.strokeDashoffset=A==="reverse"?`${F[xe]*Z}`:`${F[xe]*(1-Z)}`,m&&($e.style.opacity=A==="reverse"?`${1-Z}`:`${Z}`);});},getProgress(){return U()},refresh(){V.forEach((g,Z)=>{F[Z]=je(g),g.style.setProperty("--ssd-len",String(F[Z])),g.style.strokeDasharray=`${F[Z]}`;});}}}if(sr())return ct(ir());function ar(){let o=Math.max(1,ge),a=0,y=0,Q=false;function Le(b){let W=true;if(v){let U=Math.min(1,Math.max(0,b/o)),g=z(U);Te=g,e.style.setProperty("--scroll-draw-progress",String(g)),e.style.clipPath=Ne(A==="reverse"?1-g:g),R?.(g),U<1&&(W=false);}else V.forEach((U,g)=>{let Z=g*H*o,$e=Math.min(1,Math.max(0,(b-Z)/o)),xe=z($e);U.style.strokeDashoffset=A==="reverse"?`${F[g]*xe}`:`${F[g]*(1-xe)}`,m&&(U.style.opacity=A==="reverse"?`${1-xe}`:`${xe}`),Ae&&fe?U.style.stroke=Ue(Ae,fe,xe):fe&&(U.style.stroke=fe),X!==null&&ie!==null?U.style.strokeWidth=`${X+(ie-X)*xe}`:ie!==null&&(U.style.strokeWidth=`${ie}`),ae!==null&&K!==null?U.style.fillOpacity=`${ae+(K-ae)*xe}`:K!==null&&(U.style.fillOpacity=`${K}`),L&&U.tagName.toLowerCase()==="path"&&pe[g]&&U.setAttribute("d",ft(pe[g],L,xe)),g===0&&(Te=xe,R?.(xe),e.style.setProperty("--scroll-draw-progress",String(xe))),$e<1&&(W=false);});if(w){let U=Math.min(1,Math.max(0,b/o)),g=z(U);for(let Z in w){let $e=parseFloat(Z);g>=$e&&!_e.has($e)&&(_e.add($e),w[Z]?.());}}return W}function Fe(b){if(j)return;let W=b-a;B||(B=true,P?.());let U=Le(W);if(U&&!_){_=true,Le(o*(1+Math.max(0,V.length-1)*H)),f?.(),ze<(E==="infinite"?1/0:E??0)&&(ze++,Ve=setTimeout(()=>{a=performance.now(),B=false,_=false,_e.clear(),et(),$=requestAnimationFrame(Fe);},oe));return}U||($=requestAnimationFrame(Fe));}function ke(){cancelAnimationFrame($),clearTimeout(Ve),a=performance.now(),y=0,j=false,B=false,_=false,ze=0,Q=true,Te=0,_e.clear(),et(),$=requestAnimationFrame(Fe);}let S=new IntersectionObserver(b=>{b.forEach(W=>{W.isIntersecting&&!(re&&_)?ke():!W.isIntersecting&&!re&&!_&&(cancelAnimationFrame($),clearTimeout(Ve),Q=false);});},{root:Ee??null,threshold:x,rootMargin:M}),D;function de(){clearTimeout(D),D=setTimeout(()=>{V.forEach((b,W)=>{F[W]=je(b),b.style.strokeDasharray=`${F[W]}`;});},150);}return window.addEventListener("resize",de),window.addEventListener("orientationchange",de),Y>0?setTimeout(()=>S.observe(e),Y):S.observe(e),{destroy(){cancelAnimationFrame($),clearTimeout(Ve),S.disconnect(),window.removeEventListener("resize",de),window.removeEventListener("orientationchange",de),clearTimeout(D);},replay(){ze=0,ke();},pause(){j||!Q||(j=true,y=performance.now()-a,cancelAnimationFrame($));},resume(){j&&(j=false,Q=true,a=performance.now()-y,$=requestAnimationFrame(Fe));},seek(b){let W=Math.min(1,Math.max(0,b));Te=W,j=true,y=W*o,a=performance.now()-y,cancelAnimationFrame($),Le(y);},getProgress(){return Te},refresh(){clearTimeout(D),V.forEach((b,W)=>{F[W]=je(b),b.style.strokeDasharray=`${F[W]}`;});}}}if(ve)return ct(ar());vt();function St(){if(j||!Ge)return;let o=performance.now(),a=Je();if(!We&&k===false&&a===yt){ut(a);return}We=false,yt=a;let y=u;if(k!==false){let S=o-ht,D=S>0?Math.abs(a-(Ze<0?a:Ze))/S:0;y=u*Math.max(.2,1+D*(typeof k=="number"?k:1)*.04);}Ze=a,ht=o;let Q=ne?le===-1||a>=le?"forward":"reverse":A;le=a;let Le=Se-J,Fe=true,ke=Le===0?0:(a-J)/Le;if(isNaN(Be)||(Be<=0&&ke>0?p?.():Be>0&&ke<=0&&Me?.(),Be<1&&ke>=1?I?.():Be>=1&&ke<1&&q?.()),Be=ke,v){let S=z(te(a,J,Se,y));re&&!ne&&(he=Math.max(he,S),S=he),Te=S,e.style.setProperty("--scroll-draw-progress",String(S));let D=Q==="reverse"?1-S:S;e.style.clipPath=Ne(D),R?.(S),!B&&te(a,J,Se,y)>0&&(B=true,P?.()),S>=1&&!_?(_=true,f?.(),ze<(E==="infinite"?1/0:E??0)&&(ze++,Ve=setTimeout(()=>{he=-1,B=false,_=false,e.style.clipPath=Ne(0);},oe))):S<1&&!re&&(_=false),ut(a);return}if(V.forEach((S,D)=>{let de=D*c*Le,b=z(te(a,J+de,Se+de,y));re&&!ne&&(b=Re[D]=Math.max(Re[D]??he,b)),S.style.strokeDashoffset=Q==="reverse"?`${F[D]*b}`:`${F[D]*(1-b)}`,m&&(S.style.opacity=Q==="reverse"?`${1-b}`:`${b}`),Ae&&fe?S.style.stroke=Ue(Ae,fe,b):fe&&(S.style.stroke=fe),X!==null&&ie!==null?S.style.strokeWidth=`${X+(ie-X)*b}`:ie!==null&&(S.style.strokeWidth=`${ie}`),ae!==null&&K!==null?S.style.fillOpacity=`${ae+(K-ae)*b}`:K!==null&&(S.style.fillOpacity=`${K}`),L&&S.tagName.toLowerCase()==="path"&&pe[D]&&S.setAttribute("d",ft(pe[D],L,b)),D===0&&(Te=b,R?.(b),e.style.setProperty("--scroll-draw-progress",String(b))),b<1&&(Fe=false);}),w){let S=z(te(a,J,Se,y));for(let D in w){let de=parseFloat(D);S>=de&&!_e.has(de)&&(_e.add(de),w[D]?.());}}!B&&te(a,J,Se,y)>0&&(B=true,P?.()),Fe&&!_?(_=true,f?.(),ze<(E==="infinite"?1/0:E??0)&&(ze++,Ve=setTimeout(()=>{he=-1,Re=[],B=false,_=false,_e.clear(),et(),We=true;},oe))):!Fe&&!re&&(_=false),ut(a);}function Tt(o){return o>=Se&&o<h}function ut(o){ee||Tt(o)?$=requestAnimationFrame(St):Ge=false;}let Ge=false;function tt(){Ge||(Ge=true,$=requestAnimationFrame(function(){St();}));}function rt(){Ge=false,cancelAnimationFrame($);}let mt=new IntersectionObserver(o=>{o.forEach(a=>{ee=a.isIntersecting,ee&&!j?(We=true,tt()):Ge&&!j&&Tt(Je())||rt();});},{root:Ee??null,threshold:x,rootMargin:M});function xt(){V.forEach((o,a)=>{F[a]=je(o),o.style.strokeDasharray=`${F[a]}`;}),vt(),We=true;}let nt;function Ye(){clearTimeout(nt),nt=setTimeout(xt,150);}window.addEventListener("resize",Ye),window.addEventListener("orientationchange",Ye);let lr=De([e],Ye);return Y>0?setTimeout(()=>mt.observe(e),Y):mt.observe(e),ct({destroy(){cancelAnimationFrame($),clearTimeout(Ve),rt(),mt.disconnect(),lr(),window.removeEventListener("resize",Ye),window.removeEventListener("orientationchange",Ye),clearTimeout(nt),gt();},replay(){he=-1,Re=[],le=-1,Ze=-1,B=false,_=false,ze=0,j=false,Te=0,_e.clear(),clearTimeout(Ve),et(),We=true,ee&&tt();},pause(){j=true,rt();},resume(){j&&(j=false,We=true,ee&&tt());},seek(o){let a=Math.min(1,Math.max(0,o));Te=a,he=a,Re=[],j=true,rt(),or(a,A),We=true;},getProgress(){return Te},refresh(){clearTimeout(nt),xt(),ee&&!j&&tt();}},()=>({tStart:J,tEnd:Se}))}var zt=new WeakMap,Er=0;function pt(e){return JSON.stringify(e,(n,r)=>{if(typeof r=="function")return "\u0192";if(typeof Element<"u"&&r instanceof Element){let t=zt.get(r);return t===void 0&&zt.set(r,t=++Er),`el#${t}`}return r})}function Vt(e,n){let r={...e};for(let t of Object.keys(r))typeof r[t]=="function"&&(r[t]=(...s)=>n()[t]?.(...s));return r}function Sr(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function _t(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let s=[],i=[],l=t[2].trim();if(l)for(let u of l.split(/[\s,]+/)){let m=u.match(/^([-+]?[\d.eE]+)(.*)$/);s.push(m?parseFloat(m[1]):0),i.push(m?m[2]:"");}n.push({fn:t[1],nums:s,units:i});}return n}function Tr(e,n,r){let t=_t(e),s=_t(n);return t.length===0||t.length!==s.length?r<1?e:n:t.map((i,l)=>{let u=s[l];return i.fn!==u.fn||i.nums.length!==u.nums.length?r<1?`${i.fn}(${i.nums.map((m,d)=>`${m}${i.units[d]}`).join(", ")})`:`${u.fn}(${u.nums.map((m,d)=>`${m}${u.units[d]}`).join(", ")})`:`${i.fn}(${i.nums.map((m,d)=>`${m+(u.nums[d]-m)*r}${i.units[d]}`).join(", ")})`}).join(" ")}function Wt(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),s=String(n);if(Sr(t))return Ue(t,s,r);if(t.includes("("))return Tr(t,s,r);let i=t.match(/^([-+]?[\d.]+)(.*)$/),l=s.match(/^([-+]?[\d.]+)(.*)$/);if(i&&l){let u=parseFloat(i[1]),m=parseFloat(l[1]);return `${u+(m-u)*r}${i[2]||l[2]}`}return r<1?t:s}function xr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var Mr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Ar=0,qt="--scroll-draw-progress";function Lr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function Bt(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:s={},easing:i="ease-out",speed:l=1,once:u=false,axis:m="y",scrollContainer:d,native:T=true,velocityScale:H=false,respectReducedMotion:A=true,triggerElement:re,onProgress:Ce,onComplete:G,onEnter:ue,onLeave:ne,onEnterBack:Y,onLeaveBack:N}=n,C=A&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,O=typeof i=="function"?i:ce[i]??ce["ease-out"],w=be(s.start??"top bottom"),k=be(s.end??"bottom top"),x=re??e,M=typeof d=="string"?document.querySelector(d):d??null,E=Object.entries(t).map(([c,h])=>({prop:xr(c),from:Array.isArray(h)?h[0]:"",to:Array.isArray(h)?h[1]:h}));function oe(){let c=window.getComputedStyle(e);for(let h of E)h.from===""&&(h.from=c.getPropertyValue(h.prop).trim()||"0");}function L(){for(let c of E)e.style.setProperty(c.prop,String(c.to));}let se=new Map;for(let c of [...E.map(h=>h.prop),qt])se.set(c,e.style.getPropertyValue(c));function ve(){for(let[c,h]of se)h?e.style.setProperty(c,h):e.style.removeProperty(c);}if(C)return L(),G?.(),{...r,destroy:ve,getProgress:()=>1};oe();let ge=typeof i=="string"?st(i):null;function ye(){if(!T||!Lr()||!ge||m!=="y"||M||x!==e||u||l!==1||Ce||G||ue||ne||Y||N||H!==false||(s.start??"top bottom").trim()!=="top bottom"||(s.end??"bottom top").trim()!=="bottom top")return false;for(let c of E)if(!Mr.has(c.prop))return false;return true}function R(){let c=`ssd-a-${++Ar}`,h=E.map(le=>`${le.prop}:${le.from}`).join(";"),_=E.map(le=>`${le.prop}:${le.to}`).join(";"),B=document.createElement("style");B.setAttribute("data-ssd-animate",""),B.textContent=`@keyframes ${c}{from{${h}}to{${_}}}.${c}{animation-name:${c};animation-duration:auto;animation-timing-function:${ge};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(B),e.classList.add(c);let $=()=>m==="x"?window.scrollX:window.scrollY,ee=()=>m==="x"?window.innerWidth:window.innerHeight,he=()=>{let le=e.getBoundingClientRect();return Pe({top:le.top,height:le.height},$(),ee(),w,k)};Oe(e,{type:"animate",getProgress:()=>Re.getProgress(),getTrigger:he});let Re={refresh(){},destroy(){e.classList.remove(c),B.remove(),e.style.animationPlayState="",ve(),Ie(e);},replay(){e.classList.remove(c),e.offsetWidth,e.classList.add(c);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(le){let j=Math.min(1,Math.max(0,le));e.classList.remove(c);for(let Te of E)e.style.setProperty(Te.prop,Wt(Te.from,Te.to,j));},getProgress(){let{tStart:le,tEnd:j}=he();return O(te($(),le,j,l))}};return Re}if(ye())return R();let P=0,f=0,p=0,I=false,q=false,Me=-1,v=0,z=false,me=NaN,He=-1,Ee=0,Ae=()=>M?m==="x"?M.scrollLeft:M.scrollTop:m==="x"?window.scrollX:window.scrollY,fe=()=>M?m==="x"?M.clientWidth:M.clientHeight:m==="x"?window.innerWidth:window.innerHeight,X=x===e?E:[],ie=false;function ae(){let c=e.style,h=X.map(ee=>c.getPropertyValue(ee.prop)),_=c.transition;X.length&&(c.transition="none"),X.forEach(ee=>c.setProperty(ee.prop,se.get(ee.prop)??""));let B=ot(x,M,m);X.forEach((ee,he)=>c.setProperty(ee.prop,h[he])),X.length&&(e.offsetWidth,c.transition=_);let $=Pe(B,B.scroll,fe(),w,k);ie&&Math.abs($.tStart-P)<1&&Math.abs($.tEnd-f)<1||(ie=true,P=$.tStart,f=$.tEnd);}function K(c){e.style.setProperty(qt,String(c));for(let h of E)e.style.setProperty(h.prop,Wt(h.from,h.to,c));Ce?.(c);}function Ne(c){if(isNaN(me)){me=c;return}me<=0&&c>0?ue?.():me>0&&c<=0&&N?.(),me<1&&c>=1?ne?.():me>=1&&c<1&&Y?.(),me=c;}function V(){if(!I||q)return;let c=performance.now(),h=Ae(),_=l;if(H!==false){let ee=c-Ee,he=ee>0?Math.abs(h-(He<0?h:He))/ee:0;_=l*Math.max(.2,1+he*(typeof H=="number"?H:1)*.04);}He=h,Ee=c;let B=f===P?0:(h-P)/(f-P);Ne(B);let $=O(te(h,P,f,_));u&&(Me=Math.max(Me,$),$=Me),v=$,K($),$>=1&&!z?(z=true,G?.()):$<1&&!u&&(z=false),p=requestAnimationFrame(V);}ae(),f===P&&we("scrollAnimate: the trigger window has zero length (start and end resolve to the same scroll position), so this element will never animate. If the target is inside a position:sticky stage, measure the trigger from the container that holds the scroll room via `triggerElement`.",e);{let c=O(te(Ae(),P,f,l));u&&c>0&&(Me=c),v=c,K(c);}let F=new IntersectionObserver(c=>{c.forEach(h=>{I=h.isIntersecting,I&&!q?p=requestAnimationFrame(V):cancelAnimationFrame(p);});},{root:M??null}),pe;function J(){clearTimeout(pe),pe=setTimeout(ae,150);}window.addEventListener("resize",J),window.addEventListener("orientationchange",J);let Se=De([x],J);return F.observe(e),Oe(e,{type:"animate",getProgress:()=>v,getTrigger:()=>({tStart:P,tEnd:f})}),{destroy(){cancelAnimationFrame(p),F.disconnect(),window.removeEventListener("resize",J),window.removeEventListener("orientationchange",J),Se(),clearTimeout(pe),ve(),Ie(e);},replay(){Me=-1,z=false,v=0,q=false,K(0);},pause(){q=true,cancelAnimationFrame(p);},resume(){q&&(q=false,I&&(p=requestAnimationFrame(V)));},seek(c){let h=Math.min(1,Math.max(0,c));v=h,Me=h,q=true,cancelAnimationFrame(p),K(h);},getProgress(){return v},refresh(){ae();}}}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)return we("scrollCounter: element not found:",e),dt;let t=r,{from:s=0,to:i,format:l,easing:u="ease-out",trigger:m={},once:d=true,decimals:T,onComplete:H}=n,A=T!==void 0?f=>f.toFixed(T):l??(f=>String(Math.round(f))),re=typeof u=="function"?u:ce[u]??ce["ease-out"],Ce=be(m.start??"top 80%"),G=be(m.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=A(i),H?.(),dt;let ne=0,Y=0,N=false,C=0,O=false,w=false,k=-1,x=0,M=false,E=()=>window.scrollY,oe=()=>window.innerHeight;function L(){let f=t.getBoundingClientRect(),p=Pe({top:f.top,height:f.height},E(),oe(),Ce,G);N&&Math.abs(p.tStart-ne)<1&&Math.abs(p.tEnd-Y)<1||(N=true,ne=p.tStart,Y=p.tEnd);}function se(f){t.textContent=A(s+(i-s)*f),t.style.setProperty("--scroll-draw-progress",String(f));}function ve(){if(!O||w)return;let f=re(te(E(),ne,Y,1));d&&(k=Math.max(k,f),f=k),x=f,se(f),f>=1&&!M?(M=true,H?.()):f<1&&!d&&(M=false),C=requestAnimationFrame(ve);}L();{let f=re(te(E(),ne,Y,1));d&&f>0&&(k=f),x=f,se(f);}let ge=new IntersectionObserver(f=>{f.forEach(p=>{O=p.isIntersecting,O&&!w?C=requestAnimationFrame(ve):cancelAnimationFrame(C);});}),ye;function R(){clearTimeout(ye),ye=setTimeout(L,150);}window.addEventListener("resize",R),window.addEventListener("orientationchange",R);let P=De([t],R);return ge.observe(t),Oe(t,{type:"counter",getProgress:()=>x,getTrigger:()=>({tStart:ne,tEnd:Y})}),{destroy(){cancelAnimationFrame(C),ge.disconnect(),window.removeEventListener("resize",R),window.removeEventListener("orientationchange",R),P(),clearTimeout(ye),Ie(t);},replay(){k=-1,M=false,x=0,w=false,se(0);},pause(){w=true,cancelAnimationFrame(C);},resume(){w&&(w=false,O&&(C=requestAnimationFrame(ve)));},seek(f){let p=Math.min(1,Math.max(0,f));x=p,k=p,w=true,cancelAnimationFrame(C),se(p);},getProgress(){return x}}}var jt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Ut(e,n={}){if(typeof window>"u")return jt;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return we("scrollVideo: <video> element not found:",e),jt;let t=r,{trigger:s={},easing:i="linear",once:l=false,axis:u="y",preload:m="auto",triggerElement:d,onReady:T,onComplete:H,onProgress:A}=n,re=d??t,Ce=window.matchMedia("(prefers-reduced-motion: reduce)").matches,G=typeof i=="function"?i:ce[i]??ce.linear,ue=be(s.start??"top top"),ne=be(s.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=m);let Y=n.from??0,N=n.to,C=0,O=0,w=0,k=false,x=false,M=-1,E=0,oe=false,L=false,se=()=>u==="x"?window.scrollX:window.scrollY,ve=()=>u==="x"?window.innerWidth:window.innerHeight;function ge(){let v=re.getBoundingClientRect(),z=u==="x"?v.left:v.top,me=u==="x"?v.width:v.height,He=Pe({top:z,height:me},se(),ve(),ue,ne);C=He.tStart,O=He.tEnd,L&&O===C&&we("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t);}let ye=NaN;function R(v){if(!L)return;let z=N??t.duration??0,me=Y+(z-Y)*v;me!==ye&&(ye=me,t.currentTime=me),t.style.setProperty("--scroll-draw-progress",String(v)),A?.(v);}function P(){if(!k||x||!L||Ce)return;let v=G(te(se(),C,O,1));l&&(M=Math.max(M,v),v=M),E=v,R(v),v>=1&&!oe?(oe=true,H?.()):v<1&&!l&&(oe=false),w=requestAnimationFrame(P);}function f(){if(L=true,N===void 0&&(N=t.duration),Ce){R(1),T?.();return}ge(),T?.(),k&&!x&&(w=requestAnimationFrame(P));}t.readyState>=1?f():t.addEventListener("loadedmetadata",f,{once:true}),L||ge();let p=new IntersectionObserver(v=>{v.forEach(z=>{k=z.isIntersecting,k&&!x&&L?w=requestAnimationFrame(P):cancelAnimationFrame(w);});}),I;function q(){clearTimeout(I),I=setTimeout(ge,150);}window.addEventListener("resize",q),window.addEventListener("orientationchange",q);let Me=De([re],q);return p.observe(t),Oe(t,{type:"video",getProgress:()=>E,getTrigger:()=>({tStart:C,tEnd:O})}),{destroy(){cancelAnimationFrame(w),p.disconnect(),t.removeEventListener("loadedmetadata",f),window.removeEventListener("resize",q),window.removeEventListener("orientationchange",q),Me(),clearTimeout(I),Ie(t);},replay(){M=-1,oe=false,E=0,x=false,ye=NaN,R(0);},pause(){x=true,cancelAnimationFrame(w);},resume(){x&&(x=false,k&&L&&(w=requestAnimationFrame(P)));},seek(v){let z=Math.min(1,Math.max(0,v));E=z,M=z,x=true,cancelAnimationFrame(w),ye=NaN,R(z);},getProgress(){return E}}}function Kt(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 $r(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=Kt(e),r=new Map;for(let i of n){let l=i.offsetTop;r.has(l)||r.set(l,[]),r.get(l).push(i);}let t=[],s=Array.from(r.keys()).sort((i,l)=>i-l);for(let i of s){let l=r.get(i),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block",l.forEach((m,d)=>{let T=m.nextElementSibling;u.appendChild(m),d<l.length-1&&T&&T.style.whiteSpace==="pre"&&u.appendChild(T);}),t.push(u);}return e.textContent="",t.forEach((i,l)=>{e.appendChild(i),l<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function Pr(e,n,r,t){if(r<=1||t===0)return e;let s=(r-1)*t,i=n*t,l=i+(1-s);return l<=i?e>=i?1:0:Math.min(1,Math.max(0,(e-i)/(l-i)))}function Cr(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 Xt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Qt(e,n={}){if(typeof window>"u")return Xt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return we("scrollText: element not found:",e),Xt;let t=r,{split:s="words",stagger:i=.04,easing:l="ease-out",from:u={opacity:0,y:24},trigger:m={},once:d=true,onComplete:T}=n,H=window.matchMedia("(prefers-reduced-motion: reduce)").matches,A=typeof l=="function"?l:ce[l]??ce["ease-out"],re=be(m.start??"top 85%"),Ce=be(m.end??"top 40%"),G=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let ue;s==="chars"?ue=$r(t):s==="lines"?ue=Yt(t):ue=Kt(t);let ne=ue.length;function Y(p,I){u?.opacity!==void 0&&(p.style.opacity=String(u.opacity+(1-u.opacity)*I));let q=Cr(I,u);q&&(p.style.transform=q);}function N(p){t.style.setProperty("--scroll-draw-progress",String(p)),ue.forEach((I,q)=>{let Me=A(Pr(p,q,ne,i));Y(I,Me);});}if(H)return N(1),T?.(),{destroy(){t.innerHTML=G,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};N(0);let C=0,O=0,w=0,k=false,x=false,M=-1,E=0,oe=false,L=()=>window.scrollY,se=()=>window.innerHeight;function ve(){let p=t.getBoundingClientRect(),I=Pe({top:p.top,height:p.height},L(),se(),re,Ce);C=I.tStart,O=I.tEnd;}function ge(){if(!k||x)return;let p=te(L(),C,O,1);d&&(M=Math.max(M,p),p=M),E=p,N(p),p>=1&&!oe?(oe=true,T?.()):p<1&&!d&&(oe=false),w=requestAnimationFrame(ge);}ve();let ye=new IntersectionObserver(p=>{p.forEach(I=>{k=I.isIntersecting,k&&!x?w=requestAnimationFrame(ge):cancelAnimationFrame(w);});}),R;function P(){clearTimeout(R),R=setTimeout(()=>{if(s==="lines"){let p=E;t.innerHTML=G,t.setAttribute("aria-label",t.textContent??""),ue=Yt(t),N(p);}ve();},150);}window.addEventListener("resize",P),window.addEventListener("orientationchange",P);let f=De([t],P);return ye.observe(t),Oe(t,{type:"text",getProgress:()=>E,getTrigger:()=>({tStart:C,tEnd:O})}),{destroy(){cancelAnimationFrame(w),ye.disconnect(),window.removeEventListener("resize",P),window.removeEventListener("orientationchange",P),f(),clearTimeout(R),t.innerHTML=G,t.removeAttribute("aria-label"),Ie(t);},replay(){M=-1,oe=false,E=0,x=false,N(0);},pause(){x=true,cancelAnimationFrame(w);},resume(){x&&(x=false,k&&(w=requestAnimationFrame(ge)));},seek(p){let I=Math.min(1,Math.max(0,p));E=I,M=I,x=true,cancelAnimationFrame(w),N(I);},getProgress(){return E}}}var qe=class{constructor(n){this.create=n;this.instance=null;this.el=null;this.key="";}init(n,r){return this.destroy(),this.el=n,this.latest=r,this.key=pt(r),this.instance=this.create(n,Vt(r,()=>this.latest)),this}update(n){return this.el?pt(n)!==this.key?this.init(this.el,n):(this.latest=n,this):this}replay(){return this.instance?.replay(),this}pause(){return this.instance?.pause(),this}resume(){return this.instance?.resume(),this}seek(n){return this.instance?.seek(n),this}getProgress(){return this.instance?.getProgress()??0}destroy(){return this.instance?.destroy(),this.instance=this.el=null,this}},Zt=class extends qe{constructor(){super(Rt);}init(n,r={}){return super.init(n,r)}},Jt=class extends qe{constructor(){super(Bt);}},er=class extends qe{constructor(){super(Gt);}},tr=class extends qe{constructor(){super(Ut);}init(n,r={}){return super.init(n,r)}},rr=class extends qe{constructor(){super(Qt);}init(n,r={}){return super.init(n,r)}};exports.EngineRef=qe;exports.ScrollAnimateRef=Jt;exports.ScrollCounterRef=er;exports.ScrollDrawRef=Zt;exports.ScrollTextRef=rr;exports.ScrollVideoRef=tr;
|
package/dist/angular/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-
|
|
2
|
-
import { S as ScrollAnimateOptions } from '../engine-
|
|
3
|
-
import { S as ScrollCounterOptions } from '../index-
|
|
1
|
+
import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-MswK0erX.mjs';
|
|
2
|
+
import { S as ScrollAnimateOptions } from '../engine-P8u6OK4m.mjs';
|
|
3
|
+
import { S as ScrollCounterOptions } from '../index-CdaBYn3A.mjs';
|
|
4
4
|
import { ScrollVideoOptions } from '../video/index.mjs';
|
|
5
5
|
import { ScrollTextOptions } from '../text/index.mjs';
|
|
6
6
|
|
package/dist/angular/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-
|
|
2
|
-
import { S as ScrollAnimateOptions } from '../engine-
|
|
3
|
-
import { S as ScrollCounterOptions } from '../index-
|
|
1
|
+
import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-MswK0erX.js';
|
|
2
|
+
import { S as ScrollAnimateOptions } from '../engine-DQyBzZDl.js';
|
|
3
|
+
import { S as ScrollCounterOptions } from '../index-D3o4vT3e.js';
|
|
4
4
|
import { ScrollVideoOptions } from '../video/index.js';
|
|
5
5
|
import { ScrollTextOptions } from '../text/index.js';
|
|
6
6
|
|
package/dist/angular/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a,b}from'../chunk-XSVTHCLO.mjs';import {a as a$3}from'../chunk-7SBTYJGH.mjs';import {a as a$4}from'../chunk-I45LCJUP.mjs';import {a as a$2}from'../chunk-KHQ7OGQK.mjs';import {a as a$1}from'../chunk-BFX2CSQ3.mjs';import {b as b$1}from'../chunk-
|
|
1
|
+
import {a,b}from'../chunk-XSVTHCLO.mjs';import {a as a$3}from'../chunk-7SBTYJGH.mjs';import {a as a$4}from'../chunk-I45LCJUP.mjs';import {a as a$2}from'../chunk-KHQ7OGQK.mjs';import {a as a$1}from'../chunk-BFX2CSQ3.mjs';import {b as b$1}from'../chunk-LQBXJRFY.mjs';import'../chunk-OJFWQ6CU.mjs';import'../chunk-YWKPTYSG.mjs';import'../chunk-YZV4Z3EQ.mjs';import'../chunk-A4JCC3QQ.mjs';import'../chunk-DM6EDKWH.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-BCV4RAIX.mjs';import'../chunk-LFSU6LR3.mjs';var r=class{constructor(t){this.create=t;this.instance=null;this.el=null;this.key="";}init(t,e){return this.destroy(),this.el=t,this.latest=e,this.key=a(e),this.instance=this.create(t,b(e,()=>this.latest)),this}update(t){return this.el?a(t)!==this.key?this.init(this.el,t):(this.latest=t,this):this}replay(){return this.instance?.replay(),this}pause(){return this.instance?.pause(),this}resume(){return this.instance?.resume(),this}seek(t){return this.instance?.seek(t),this}getProgress(){return this.instance?.getProgress()??0}destroy(){return this.instance?.destroy(),this.instance=this.el=null,this}},u=class extends r{constructor(){super(b$1);}init(t,e={}){return super.init(t,e)}},h=class extends r{constructor(){super(a$1);}},m=class extends r{constructor(){super(a$2);}},O=class extends r{constructor(){super(a$3);}init(t,e={}){return super.init(t,e)}},d=class extends r{constructor(){super(a$4);}init(t,e={}){return super.init(t,e)}};export{r as EngineRef,h as ScrollAnimateRef,m as ScrollCounterRef,u as ScrollDrawRef,d as ScrollTextRef,O as ScrollVideoRef};
|
package/dist/astro/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';function
|
|
1
|
+
'use strict';function nr({bounces:e=3,decay:r=.5}={}){let n=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,r)),s=Math.sqrt(t),i=0,l=[];for(let f=0;f<n;f++){let v=Math.pow(s,f);l.push(v),i+=v;}let m=[0],c=0;for(let f=0;f<n;f++)c+=l[f]/i,m.push(c);return f=>{if(f<=0)return 0;if(f>=1)return 1;for(let v=0;v<n;v++)if(f<=m[v+1]){let $=(f-m[v])/(m[v+1]-m[v]);if(v===0)return $*(2-$);let T=1-Math.pow(t,v);return T+(1-T)*(2*$-1)*(2*$-1)}return 1}}function or({amplitude:e=1,period:r=.4}={}){let n=Math.max(1,e),t=Math.max(.1,r),s=n<=1?t/4:t/(2*Math.PI)*Math.asin(1/n);return i=>i<=0?0:i>=1?1:n*Math.pow(2,-10*i)*Math.sin((i-s)*(2*Math.PI)/t)+1}var he={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:nr(),elastic:or()};function $t(e,r,n){return Math.min(n,Math.max(r,e))}function xe(e="top bottom"){let r=e.trim();if(/^\d+(\.\d+)?%$/.test(r))return {element:"top",viewport:r};let[n="top",t="bottom"]=r.split(/\s+/).filter(Boolean);return {element:n,viewport:t}}function Ct(e,r,n,t){switch(t){case "top":return e+n;case "center":return e+n+r/2;case "bottom":return e+n+r;default:return e+n}}function Pt(e,r){if(/^\d+(\.\d+)?%$/.test(e))return r*(parseFloat(e)/100);switch(e){case "top":return 0;case "center":return r/2;case "bottom":return r;default:return r}}function se(e,r,n,t){return n===r?0:$t((e-r)/(n-r)*t,0,1)}function De(e,r,n,t,s){let i=Ct(e.top,e.height,r,t.element)-Pt(t.viewport,n),l=Ct(e.top,e.height,r,s.element)-Pt(s.viewport,n);return {tStart:i,tEnd:l}}function ot(e,r,n){let t=e.getBoundingClientRect(),s=n==="x"?t.width:t.height;return r?{top:n==="x"?t.left-r.getBoundingClientRect().left+r.scrollLeft:t.top-r.getBoundingClientRect().top+r.scrollTop,height:s,scroll:0}:{top:n==="x"?t.left:t.top,height:s,scroll:n==="x"?window.scrollX:window.scrollY}}function Ge(e){let r=e.tagName.toLowerCase();if(r==="rect"){let n=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(n+t)}if(r==="circle"){let n=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*n}return e.getTotalLength()}function Dt(e){let r=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(r)return [parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16)];let n=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(n)return [parseInt(n[1],16),parseInt(n[2],16),parseInt(n[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 je(e,r,n){let t=Dt(e),s=Dt(r);return !t||!s?e:`rgb(${Math.round(t[0]+(s[0]-t[0])*n)},${Math.round(t[1]+(s[1]-t[1])*n)},${Math.round(t[2]+(s[2]-t[2])*n)})`}var kt={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}};var Ye=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function ee(e,...r){Ye&&console.warn(`[svg-scroll-draw] ${e}`,...r);}var sr="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",ir="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",It=33;function ar(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function lr(e){let r=[];for(let n=0;n<It;n++){let t=n/(It-1);r.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${r.join(",")})`}function st(e){switch(e){case "linear":return "linear";case "ease-in":return sr;case "ease-out":return ir;case "ease-in-out":return ar()?lr(he["ease-in-out"]):null;default:return null}}var Ot=Symbol.for("svg-scroll-draw.registry");function Rt(){let e=globalThis;return e[Ot]||(e[Ot]=new Map)}function Re(e,r){Rt().set(e,r);}function Fe(e){Rt().delete(e);}var Xe,it=new Set,at=new WeakMap,Je=new Map,Ft=e=>{let r=e.getBoundingClientRect();return r.width+" "+r.height};function cr(e){let r=new Set;for(let n of e)for(;n&&n!==document.body;n=n.parentElement)for(let t=n;t;t=t.previousElementSibling)r.add(t);return r}function Ve(e,r){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let n=()=>r();Xe??(Xe=new ResizeObserver(s=>{let i=false;for(let{target:l}of s)at.get(l)!==Ft(l)&&(i=true),at.set(l,"");i&&it.forEach(l=>l());})),it.add(n);let t=cr(e);return [document.body,document.documentElement].forEach(s=>s&&t.add(s)),t.forEach(s=>{at.has(s)||at.set(s,Ft(s)),Je.set(s,(Je.get(s)??0)+1),Xe.observe(s);}),()=>{it.delete(n)&&(t.forEach(s=>{let i=(Je.get(s)??1)-1;if(i)return void Je.set(s,i);Je.delete(s),Xe?.unobserve(s);}),it.size||(Xe?.disconnect(),Xe=void 0));}}var ur=0;function mr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Ht(e,r){let n="";try{n=getComputedStyle(e).getPropertyValue(r).trim();}catch{}return n||(e.getAttribute(r)??"").trim()}var Nt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function fr(e){if(!Ye)return;let r=Ht(e,"stroke");if(!r||r==="none"){ee("Element has no stroke \u2014 path will not be visible.",e);return}let n=(e.getAttribute("fill")??"").trim();n&&!Nt.has(n)&&!Nt.has(Ht(e,"fill"))&&ee("Element has a fill \u2014 it may obscure the stroke animation.",e);}function pr(e,r,n){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 s(){let i=n==="x"?window.scrollX:window.scrollY,l=e-i,m=r-i,c=n==="x";t.innerHTML=`
|
|
2
2
|
<div style="position:absolute;${c?`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;${c?`left:${m}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${m}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",s,{passive:true}),s(),{el:t,destroy(){window.removeEventListener("scroll",s),t.remove();}}}var Rt=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,Ft=/[MmLlHhVvCcSsQqTtAaZz]/g;function cr(e,r,n){if(!Ge)return;let t=(e.match(Ft)??[]).join("").toUpperCase(),s=(r.match(Ft)??[]).join("").toUpperCase(),i=(e.match(Rt)??[]).length,l=(r.match(Rt)??[]).length;if(t!==s){Q(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${s||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,n);return}i!==l&&Q(`morphTo: coordinate count differs (${i} \u2192 ${l}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,n);}function pt(e,r,n){let t=(r.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),s=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,i=>{let l=parseFloat(i),m=t[s++]??l;return String(+(l+(m-l)*n).toFixed(4))})}function st(e,r={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:n,...t}=r,s=n?{...$t[n],...t}:t,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:m=1,fade:c=false,easing:p="linear",trigger:v={},stagger:V=0,direction:S="forward",once:ce=false,debug:Fe=false,axis:j="y",scrollContainer:ue,autoReverse:ie=false,delay:Z=0,strokeColor:F,strokeWidth:I,fillOpacity:H,waypoints:T,velocityScale:N=false,threshold:C=0,rootMargin:A="0px",repeat:E=0,repeatDelay:he=0,morphTo:_,clip:me,autoplay:be=false,duration:Te=1e3,native:$e=true,onProgress:U,onStart:P,onComplete:d,onEnter:g,onLeave:O,onEnterBack:ae,onLeaveBack:xe}=s,le=me===true?"left":typeof me=="string"?me:false,we=typeof p=="function"?p:pe[p]??pe.linear,Ce=Se(v.start??"top bottom"),ze=Se(v.end??"bottom top"),de=typeof ue=="string"?document.querySelector(ue):ue??null,ge=Array.isArray(F)?F[0]:null,K=Array.isArray(F)?F[1]:typeof F=="string"?F:null,q=Array.isArray(I)?I[0]:null,Y=Array.isArray(I)?I[1]:typeof I=="number"?I:null,X=Array.isArray(H)?H[0]:null,W=Array.isArray(H)?H[1]:typeof H=="number"?H:null;function ke(o){let u=o*100;switch(le){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(${o*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let R=le?[]:Array.from(e.querySelectorAll(l)),x=[],ee=[],te=0,Me=0,a=false,f=false,D=0,re=false,L=-1,J=[],Ae=-1,B=false,$=0,ye=0,ve,lt=null;function yt(){lt?.destroy(),lt=null;}let He=new Set,ht=NaN,Ne=true,Xe=-1,bt=performance.now(),Ve=NaN;function ct(){return de?j==="x"?de.scrollLeft:de.scrollTop:j==="x"?window.scrollX:window.scrollY}function wt(){return de?j==="x"?de.clientWidth:de.clientHeight:j==="x"?window.innerWidth:window.innerHeight}function vt(){let o=tt(e,de,j);return De(o,o.scroll,wt(),Ce,ze)}function Et(){(({tStart:te,tEnd:Me}=vt())),Fe&&Ge&&(yt(),lt=lr(te,Me,j));}function ut(o,u=vt){Oe(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:u});let b=o.destroy;return o.destroy=()=>{b.call(o),Re(e);},o}function Ut(o,u){if(e.style.setProperty("--scroll-draw-progress",String(o)),le){let b=u==="reverse"?1-o:o;e.style.clipPath=ke(b);return}R.forEach((b,ne)=>{b.style.strokeDashoffset=u==="reverse"?`${x[ne]*o}`:`${x[ne]*(1-o)}`,c&&(b.style.opacity=u==="reverse"?`${1-o}`:`${o}`),ge&&K?b.style.stroke=We(ge,K,o):K&&(b.style.stroke=K),q!==null&&Y!==null?b.style.strokeWidth=`${q+(Y-q)*o}`:Y!==null&&(b.style.strokeWidth=`${Y}`),X!==null&&W!==null?b.style.fillOpacity=`${X+(W-X)*o}`:W!==null&&(b.style.fillOpacity=`${W}`),_&&b.tagName.toLowerCase()==="path"&&ee[ne]&&b.setAttribute("d",pt(ee[ne],_,o));});}function Je(){if(e.style.setProperty("--scroll-draw-progress","0"),le){e.style.clipPath=ke(0);return}R.forEach((o,u)=>{o.style.strokeDasharray=`${x[u]}`,o.style.strokeDashoffset=S==="reverse"?"0":`${x[u]}`,c?o.style.opacity=S==="reverse"?"1":"0":o.style.opacity="",ge&&(o.style.stroke=ge),q!==null&&(o.style.strokeWidth=`${q}`),X!==null&&(o.style.fillOpacity=`${X}`),_&&o.tagName.toLowerCase()==="path"&&ee[u]&&o.setAttribute("d",ee[u]);});}if(R.forEach(o=>{ar(o);let u=qe(o);x.push(u);let b=o.tagName.toLowerCase()==="path";b?ee.push(o.getAttribute("d")??""):ee.push(""),_&&(b?cr(ee[ee.length-1],_,o):Q(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),i?(o.style.strokeDasharray=`${u}`,o.style.strokeDashoffset=S==="reverse"?`${u}`:"0",c&&(o.style.opacity="1"),K&&(o.style.stroke=K),Y!==null&&(o.style.strokeWidth=`${Y}`),W!==null&&(o.style.fillOpacity=`${W}`),_&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",_)):(o.style.strokeDasharray=`${u}`,o.style.strokeDashoffset=S==="reverse"?"0":`${u}`,c?o.style.opacity=S==="reverse"?"1":"0":o.style.opacity="",ge&&(o.style.stroke=ge),q!==null&&(o.style.strokeWidth=`${q}`),X!==null&&(o.style.fillOpacity=`${X}`));}),le){if(i)return e.style.clipPath=ke(1),d?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=ke(0);}else if(i)return d?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let St=typeof p=="string"?rt(p):null;function Yt(){return !($e===false||!ir()||!R.length||!St||le||j!=="y"||de||m!==1||V!==0||ce||ie||N!==false||_||T||E||Z>0||U||P||d||g||O||ae||xe||F!=null||I!=null||H!=null||(v.start??"top bottom").trim()!=="top bottom"||(v.end??"bottom top").trim()!=="bottom top")}function Xt(){let o=++sr,u=`svg-scroll-draw-${o}`,b=`svg-scroll-draw-host-${o}`,ne=`--svg-scroll-draw-${o}`,Ie=S==="reverse"?"0":"var(--ssd-len)",Pe=S==="reverse"?"var(--ssd-len)":"0",Le=`stroke-dashoffset:${Ie};`,w=`stroke-dashoffset:${Pe};`;c&&(Le+=`opacity:${S==="reverse"?1:0};`,w+=`opacity:${S==="reverse"?0:1};`);let M=document.createElement("style");M.setAttribute("data-svg-scroll-draw",""),M.textContent=`@keyframes ${u}{from{${Le}}to{${w}}}.${b}{view-timeline-name:${ne};view-timeline-axis:block;}.${u}{animation-name:${u};animation-duration:auto;animation-timing-function:${St};animation-fill-mode:both;animation-timeline:${ne};animation-range:cover 0% cover 100%;}`,document.head.appendChild(M),e.classList.add(b);function oe(y,G){y.style.setProperty("--ssd-len",String(x[G])),y.style.strokeDasharray=`${x[G]}`,y.style.strokeDashoffset="",y.style.opacity="",y.style.animationPlayState="",y.classList.add(u);}R.forEach(oe);let h=false,k=-1;function z(){if(k>=0)return k;let y=e.getBoundingClientRect(),{tStart:G,tEnd:Ee}=De({top:y.top,height:y.height},ct(),wt(),Ce,ze);return we(se(ct(),G,Ee,m))}return {destroy(){e.classList.remove(b),R.forEach(y=>{y.classList.remove(u),y.style.removeProperty("--ssd-len"),y.style.animationPlayState="";}),M.remove();},replay(){h=false,k=-1,R.forEach(oe);},pause(){h=true,R.forEach(y=>{y.style.animationPlayState="paused";});},resume(){h&&(h=false,R.forEach(y=>{y.style.animationPlayState="running";}));},seek(y){let G=Math.min(1,Math.max(0,y));k=G,h=true,R.forEach((Ee,fe)=>{Ee.classList.remove(u),Ee.style.strokeDashoffset=S==="reverse"?`${x[fe]*G}`:`${x[fe]*(1-G)}`,c&&(Ee.style.opacity=S==="reverse"?`${1-G}`:`${G}`);});},getProgress(){return z()},refresh(){R.forEach((y,G)=>{x[G]=qe(y),y.style.setProperty("--ssd-len",String(x[G])),y.style.strokeDasharray=`${x[G]}`;});}}}if(Yt())return ut(Xt());function Jt(){let o=Math.max(1,Te),u=0,b=0,ne=false;function Ie(h){let k=true;if(le){let z=Math.min(1,Math.max(0,h/o)),y=we(z);$=y,e.style.setProperty("--scroll-draw-progress",String(y)),e.style.clipPath=ke(S==="reverse"?1-y:y),U?.(y),z<1&&(k=false);}else R.forEach((z,y)=>{let G=y*V*o,Ee=Math.min(1,Math.max(0,(h-G)/o)),fe=we(Ee);z.style.strokeDashoffset=S==="reverse"?`${x[y]*fe}`:`${x[y]*(1-fe)}`,c&&(z.style.opacity=S==="reverse"?`${1-fe}`:`${fe}`),ge&&K?z.style.stroke=We(ge,K,fe):K&&(z.style.stroke=K),q!==null&&Y!==null?z.style.strokeWidth=`${q+(Y-q)*fe}`:Y!==null&&(z.style.strokeWidth=`${Y}`),X!==null&&W!==null?z.style.fillOpacity=`${X+(W-X)*fe}`:W!==null&&(z.style.fillOpacity=`${W}`),_&&z.tagName.toLowerCase()==="path"&&ee[y]&&z.setAttribute("d",pt(ee[y],_,fe)),y===0&&($=fe,U?.(fe),e.style.setProperty("--scroll-draw-progress",String(fe))),Ee<1&&(k=false);});if(T){let z=Math.min(1,Math.max(0,h/o)),y=we(z);for(let G in T){let Ee=parseFloat(G);y>=Ee&&!He.has(Ee)&&(He.add(Ee),T[G]?.());}}return k}function Pe(h){if(B)return;let k=h-u;f||(f=true,P?.());let z=Ie(k);if(z&&!a){a=true,Ie(o*(1+Math.max(0,R.length-1)*V)),d?.(),ye<(E==="infinite"?1/0:E??0)&&(ye++,ve=setTimeout(()=>{u=performance.now(),f=false,a=false,He.clear(),Je(),D=requestAnimationFrame(Pe);},he));return}z||(D=requestAnimationFrame(Pe));}function Le(){cancelAnimationFrame(D),clearTimeout(ve),u=performance.now(),b=0,B=false,f=false,a=false,ye=0,ne=true,$=0,He.clear(),Je(),D=requestAnimationFrame(Pe);}let w=new IntersectionObserver(h=>{h.forEach(k=>{k.isIntersecting&&!(ce&&a)?Le():!k.isIntersecting&&!ce&&!a&&(cancelAnimationFrame(D),clearTimeout(ve),ne=false);});},{root:de??null,threshold:C,rootMargin:A}),M;function oe(){clearTimeout(M),M=setTimeout(()=>{R.forEach((h,k)=>{x[k]=qe(h),h.style.strokeDasharray=`${x[k]}`;});},150);}return window.addEventListener("resize",oe),window.addEventListener("orientationchange",oe),Z>0?setTimeout(()=>w.observe(e),Z):w.observe(e),{destroy(){cancelAnimationFrame(D),clearTimeout(ve),w.disconnect(),window.removeEventListener("resize",oe),window.removeEventListener("orientationchange",oe),clearTimeout(M);},replay(){ye=0,Le();},pause(){B||!ne||(B=true,b=performance.now()-u,cancelAnimationFrame(D));},resume(){B&&(B=false,ne=true,u=performance.now()-b,D=requestAnimationFrame(Pe));},seek(h){let k=Math.min(1,Math.max(0,h));$=k,B=true,b=k*o,u=performance.now()-b,cancelAnimationFrame(D),Ie(b);},getProgress(){return $},refresh(){clearTimeout(M),R.forEach((h,k)=>{x[k]=qe(h),h.style.strokeDasharray=`${x[k]}`;});}}}if(be)return ut(Jt());Et();function Qe(){if(!re||B)return;let o=performance.now(),u=ct();if(!Ne&&N===false&&u===ht){D=requestAnimationFrame(Qe);return}Ne=false,ht=u;let b=m;if(N!==false){let w=o-bt,M=w>0?Math.abs(u-(Xe<0?u:Xe))/w:0;b=m*Math.max(.2,1+M*(typeof N=="number"?N:1)*.04);}Xe=u,bt=o;let ne=ie?Ae===-1||u>=Ae?"forward":"reverse":S;Ae=u;let Ie=Me-te,Pe=true,Le=Ie===0?0:(u-te)/Ie;if(isNaN(Ve)||(Ve<=0&&Le>0?g?.():Ve>0&&Le<=0&&xe?.(),Ve<1&&Le>=1?O?.():Ve>=1&&Le<1&&ae?.()),Ve=Le,le){let w=we(se(u,te,Me,b));ce&&!ie&&(L=Math.max(L,w),w=L),$=w,e.style.setProperty("--scroll-draw-progress",String(w));let M=ne==="reverse"?1-w:w;e.style.clipPath=ke(M),U?.(w),!f&&se(u,te,Me,b)>0&&(f=true,P?.()),w>=1&&!a?(a=true,d?.(),ye<(E==="infinite"?1/0:E??0)&&(ye++,ve=setTimeout(()=>{L=-1,f=false,a=false,e.style.clipPath=ke(0);},he))):w<1&&!ce&&(a=false),D=requestAnimationFrame(Qe);return}if(R.forEach((w,M)=>{let oe=M*V*Ie,h=we(se(u,te+oe,Me+oe,b));ce&&!ie&&(h=J[M]=Math.max(J[M]??L,h)),w.style.strokeDashoffset=ne==="reverse"?`${x[M]*h}`:`${x[M]*(1-h)}`,c&&(w.style.opacity=ne==="reverse"?`${1-h}`:`${h}`),ge&&K?w.style.stroke=We(ge,K,h):K&&(w.style.stroke=K),q!==null&&Y!==null?w.style.strokeWidth=`${q+(Y-q)*h}`:Y!==null&&(w.style.strokeWidth=`${Y}`),X!==null&&W!==null?w.style.fillOpacity=`${X+(W-X)*h}`:W!==null&&(w.style.fillOpacity=`${W}`),_&&w.tagName.toLowerCase()==="path"&&ee[M]&&w.setAttribute("d",pt(ee[M],_,h)),M===0&&($=h,U?.(h),e.style.setProperty("--scroll-draw-progress",String(h))),h<1&&(Pe=false);}),T){let w=we(se(u,te,Me,b));for(let M in T){let oe=parseFloat(M);w>=oe&&!He.has(oe)&&(He.add(oe),T[M]?.());}}!f&&se(u,te,Me,b)>0&&(f=true,P?.()),Pe&&!a?(a=true,d?.(),ye<(E==="infinite"?1/0:E??0)&&(ye++,ve=setTimeout(()=>{L=-1,J=[],f=false,a=false,He.clear(),Je(),Ne=true;},he))):!Pe&&!ce&&(a=false),D=requestAnimationFrame(Qe);}let mt=false;function Ze(){mt||(mt=true,D=requestAnimationFrame(function(){Qe();}));}function Ke(){mt=false,cancelAnimationFrame(D);}let ft=new IntersectionObserver(o=>{o.forEach(u=>{re=u.isIntersecting,re&&!B?(Ne=true,Ze()):Ke();});},{root:de??null,threshold:C,rootMargin:A});function Tt(){R.forEach((o,u)=>{x[u]=qe(o),o.style.strokeDasharray=`${x[u]}`;}),Et(),Ne=true;}let et;function Be(){clearTimeout(et),et=setTimeout(Tt,150);}window.addEventListener("resize",Be),window.addEventListener("orientationchange",Be);let Qt=_e([e],Be);return Z>0?setTimeout(()=>ft.observe(e),Z):ft.observe(e),ut({destroy(){cancelAnimationFrame(D),clearTimeout(ve),Ke(),ft.disconnect(),Qt(),window.removeEventListener("resize",Be),window.removeEventListener("orientationchange",Be),clearTimeout(et),yt();},replay(){L=-1,J=[],Ae=-1,Xe=-1,f=false,a=false,ye=0,B=false,$=0,He.clear(),clearTimeout(ve),Je(),Ne=true,re&&Ze();},pause(){B=true,Ke();},resume(){B&&(B=false,Ne=true,re&&Ze());},seek(o){let u=Math.min(1,Math.max(0,o));$=u,L=u,J=[],B=true,Ke(),Ut(u,S),Ne=true;},getProgress(){return $},refresh(){clearTimeout(et),Tt(),re&&!B&&Ze();}},()=>({tStart:te,tEnd:Me}))}function ur(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Ht(e){let r=[],n=/([\w]+)\(([^)]*)\)/g,t;for(;(t=n.exec(e))!==null;){let s=[],i=[],l=t[2].trim();if(l)for(let m of l.split(/[\s,]+/)){let c=m.match(/^([-+]?[\d.eE]+)(.*)$/);s.push(c?parseFloat(c[1]):0),i.push(c?c[2]:"");}r.push({fn:t[1],nums:s,units:i});}return r}function mr(e,r,n){let t=Ht(e),s=Ht(r);return t.length===0||t.length!==s.length?n<1?e:r:t.map((i,l)=>{let m=s[l];return i.fn!==m.fn||i.nums.length!==m.nums.length?n<1?`${i.fn}(${i.nums.map((c,p)=>`${c}${i.units[p]}`).join(", ")})`:`${m.fn}(${m.nums.map((c,p)=>`${c}${m.units[p]}`).join(", ")})`:`${i.fn}(${i.nums.map((c,p)=>`${c+(m.nums[p]-c)*n}${i.units[p]}`).join(", ")})`}).join(" ")}function Nt(e,r,n){if(typeof e=="number"&&typeof r=="number")return String(e+(r-e)*n);let t=String(e),s=String(r);if(ur(t))return We(t,s,n);if(t.includes("("))return mr(t,s,n);let i=t.match(/^([-+]?[\d.]+)(.*)$/),l=s.match(/^([-+]?[\d.]+)(.*)$/);if(i&&l){let m=parseFloat(i[1]),c=parseFloat(l[1]);return `${m+(c-m)*n}${i[2]||l[2]}`}return n<1?t:s}function fr(e){return e.replace(/([A-Z])/g,r=>`-${r.toLowerCase()}`)}var pr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),dr=0,_t="--scroll-draw-progress";function gr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function zt(e,r){let n={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return n;let{props:t,trigger:s={},easing:i="ease-out",speed:l=1,once:m=false,axis:c="y",scrollContainer:p,native:v=true,velocityScale:V=false,respectReducedMotion:S=true,triggerElement:ce,onProgress:Fe,onComplete:j,onEnter:ue,onLeave:ie,onEnterBack:Z,onLeaveBack:F}=r,I=S&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,H=typeof i=="function"?i:pe[i]??pe["ease-out"],T=Se(s.start??"top bottom"),N=Se(s.end??"bottom top"),C=ce??e,A=typeof p=="string"?document.querySelector(p):p??null,E=Object.entries(t).map(([a,f])=>({prop:fr(a),from:Array.isArray(f)?f[0]:"",to:Array.isArray(f)?f[1]:f}));function he(){let a=window.getComputedStyle(e);for(let f of E)f.from===""&&(f.from=a.getPropertyValue(f.prop).trim()||"0");}function _(){for(let a of E)e.style.setProperty(a.prop,String(a.to));}let me=new Map;for(let a of [...E.map(f=>f.prop),_t])me.set(a,e.style.getPropertyValue(a));function be(){for(let[a,f]of me)f?e.style.setProperty(a,f):e.style.removeProperty(a);}if(I)return _(),j?.(),{...n,destroy:be,getProgress:()=>1};he();let Te=typeof i=="string"?rt(i):null;function $e(){if(!v||!gr()||!Te||c!=="y"||A||C!==e||m||l!==1||Fe||j||ue||ie||Z||F||V!==false||(s.start??"top bottom").trim()!=="top bottom"||(s.end??"bottom top").trim()!=="bottom top")return false;for(let a of E)if(!pr.has(a.prop))return false;return true}function U(){let a=`ssd-a-${++dr}`,f=E.map($=>`${$.prop}:${$.from}`).join(";"),D=E.map($=>`${$.prop}:${$.to}`).join(";"),re=document.createElement("style");re.setAttribute("data-ssd-animate",""),re.textContent=`@keyframes ${a}{from{${f}}to{${D}}}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${Te};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(re),e.classList.add(a);let L=()=>c==="x"?window.scrollX:window.scrollY,J=()=>c==="x"?window.innerWidth:window.innerHeight,Ae=()=>{let $=e.getBoundingClientRect();return De({top:$.top,height:$.height},L(),J(),T,N)};Oe(e,{type:"animate",getProgress:()=>B.getProgress(),getTrigger:Ae});let B={refresh(){},destroy(){e.classList.remove(a),re.remove(),e.style.animationPlayState="",be(),Re(e);},replay(){e.classList.remove(a),e.offsetWidth,e.classList.add(a);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek($){let ye=Math.min(1,Math.max(0,$));e.classList.remove(a);for(let ve of E)e.style.setProperty(ve.prop,Nt(ve.from,ve.to,ye));},getProgress(){let{tStart:$,tEnd:ye}=Ae();return H(se(L(),$,ye,l))}};return B}if($e())return U();let P=0,d=0,g=0,O=false,ae=false,xe=-1,le=0,we=false,Ce=NaN,ze=-1,de=0,ge=()=>A?c==="x"?A.scrollLeft:A.scrollTop:c==="x"?window.scrollX:window.scrollY,K=()=>A?c==="x"?A.clientWidth:A.clientHeight:c==="x"?window.innerWidth:window.innerHeight,q=C===e?E:[],Y=false;function X(){let a=e.style,f=q.map(J=>a.getPropertyValue(J.prop)),D=a.transition;q.length&&(a.transition="none"),q.forEach(J=>a.setProperty(J.prop,me.get(J.prop)??""));let re=tt(C,A,c);q.forEach((J,Ae)=>a.setProperty(J.prop,f[Ae])),q.length&&(e.offsetWidth,a.transition=D);let L=De(re,re.scroll,K(),T,N);Y&&Math.abs(L.tStart-P)<1&&Math.abs(L.tEnd-d)<1||(Y=true,P=L.tStart,d=L.tEnd);}function W(a){e.style.setProperty(_t,String(a));for(let f of E)e.style.setProperty(f.prop,Nt(f.from,f.to,a));Fe?.(a);}function ke(a){if(isNaN(Ce)){Ce=a;return}Ce<=0&&a>0?ue?.():Ce>0&&a<=0&&F?.(),Ce<1&&a>=1?ie?.():Ce>=1&&a<1&&Z?.(),Ce=a;}function R(){if(!O||ae)return;let a=performance.now(),f=ge(),D=l;if(V!==false){let J=a-de,Ae=J>0?Math.abs(f-(ze<0?f:ze))/J:0;D=l*Math.max(.2,1+Ae*(typeof V=="number"?V:1)*.04);}ze=f,de=a;let re=d===P?0:(f-P)/(d-P);ke(re);let L=H(se(f,P,d,D));m&&(xe=Math.max(xe,L),L=xe),le=L,W(L),L>=1&&!we?(we=true,j?.()):L<1&&!m&&(we=false),g=requestAnimationFrame(R);}X(),d===P&&Q("scrollAnimate: the trigger window has zero length (start and end resolve to the same scroll position), so this element will never animate. If the target is inside a position:sticky stage, measure the trigger from the container that holds the scroll room via `triggerElement`.",e);{let a=H(se(ge(),P,d,l));m&&a>0&&(xe=a),le=a,W(a);}let x=new IntersectionObserver(a=>{a.forEach(f=>{O=f.isIntersecting,O&&!ae?g=requestAnimationFrame(R):cancelAnimationFrame(g);});},{root:A??null}),ee;function te(){clearTimeout(ee),ee=setTimeout(X,150);}window.addEventListener("resize",te),window.addEventListener("orientationchange",te);let Me=_e([C],te);return x.observe(e),Oe(e,{type:"animate",getProgress:()=>le,getTrigger:()=>({tStart:P,tEnd:d})}),{destroy(){cancelAnimationFrame(g),x.disconnect(),window.removeEventListener("resize",te),window.removeEventListener("orientationchange",te),Me(),clearTimeout(ee),be(),Re(e);},replay(){xe=-1,we=false,le=0,ae=false,W(0);},pause(){ae=true,cancelAnimationFrame(g);},resume(){ae&&(ae=false,O&&(g=requestAnimationFrame(R)));},seek(a){let f=Math.min(1,Math.max(0,a));le=f,xe=f,ae=true,cancelAnimationFrame(g),W(f);},getProgress(){return le},refresh(){X();}}}var dt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Vt(e,r){if(typeof window>"u")return dt;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return Q("scrollCounter: element not found:",e),dt;let t=n,{from:s=0,to:i,format:l,easing:m="ease-out",trigger:c={},once:p=true,decimals:v,onComplete:V}=r,S=v!==void 0?d=>d.toFixed(v):l??(d=>String(Math.round(d))),ce=typeof m=="function"?m:pe[m]??pe["ease-out"],Fe=Se(c.start??"top 80%"),j=Se(c.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=S(i),V?.(),dt;let ie=0,Z=0,F=false,I=0,H=false,T=false,N=-1,C=0,A=false,E=()=>window.scrollY,he=()=>window.innerHeight;function _(){let d=t.getBoundingClientRect(),g=De({top:d.top,height:d.height},E(),he(),Fe,j);F&&Math.abs(g.tStart-ie)<1&&Math.abs(g.tEnd-Z)<1||(F=true,ie=g.tStart,Z=g.tEnd);}function me(d){t.textContent=S(s+(i-s)*d),t.style.setProperty("--scroll-draw-progress",String(d));}function be(){if(!H||T)return;let d=ce(se(E(),ie,Z,1));p&&(N=Math.max(N,d),d=N),C=d,me(d),d>=1&&!A?(A=true,V?.()):d<1&&!p&&(A=false),I=requestAnimationFrame(be);}_();{let d=ce(se(E(),ie,Z,1));p&&d>0&&(N=d),C=d,me(d);}let Te=new IntersectionObserver(d=>{d.forEach(g=>{H=g.isIntersecting,H&&!T?I=requestAnimationFrame(be):cancelAnimationFrame(I);});}),$e;function U(){clearTimeout($e),$e=setTimeout(_,150);}window.addEventListener("resize",U),window.addEventListener("orientationchange",U);let P=_e([t],U);return Te.observe(t),Oe(t,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:ie,tEnd:Z})}),{destroy(){cancelAnimationFrame(I),Te.disconnect(),window.removeEventListener("resize",U),window.removeEventListener("orientationchange",U),P(),clearTimeout($e),Re(t);},replay(){N=-1,A=false,C=0,T=false,me(0);},pause(){T=true,cancelAnimationFrame(I);},resume(){T&&(T=false,H&&(I=requestAnimationFrame(be)));},seek(d){let g=Math.min(1,Math.max(0,d));C=g,N=g,T=true,cancelAnimationFrame(I),me(g);},getProgress(){return C}}}function Bt(e){let r=e.textContent??"";return e.textContent="",r.split(/(\s+)/).filter(Boolean).map(n=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(n)?(t.textContent=n,t.style.whiteSpace="pre"):(t.textContent=n,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(n)?null:t}).filter(n=>n!==null)}function yr(e){let r=e.textContent??"";return e.textContent="",r.split("").map(n=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=n,n===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),n===" "?null:t}).filter(n=>n!==null)}function qt(e){let r=Bt(e),n=new Map;for(let i of r){let l=i.offsetTop;n.has(l)||n.set(l,[]),n.get(l).push(i);}let t=[],s=Array.from(n.keys()).sort((i,l)=>i-l);for(let i of s){let l=n.get(i),m=document.createElement("span");m.setAttribute("aria-hidden","true"),m.style.display="inline-block",l.forEach((c,p)=>{let v=c.nextElementSibling;m.appendChild(c),p<l.length-1&&v&&v.style.whiteSpace==="pre"&&m.appendChild(v);}),t.push(m);}return e.textContent="",t.forEach((i,l)=>{e.appendChild(i),l<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function hr(e,r,n,t){if(n<=1||t===0)return e;let s=(n-1)*t,i=r*t,l=i+(1-s);return l<=i?e>=i?1:0:Math.min(1,Math.max(0,(e-i)/(l-i)))}function br(e,r){let n=[];if(r?.y!==void 0&&n.push(`translateY(${r.y*(1-e)}px)`),r?.x!==void 0&&n.push(`translateX(${r.x*(1-e)}px)`),r?.rotate!==void 0&&n.push(`rotate(${r.rotate*(1-e)}deg)`),r?.scale!==void 0){let t=r.scale+(1-r.scale)*e;n.push(`scale(${t})`);}return n.join(" ")||""}var Wt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Gt(e,r={}){if(typeof window>"u")return Wt;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return Q("scrollText: element not found:",e),Wt;let t=n,{split:s="words",stagger:i=.04,easing:l="ease-out",from:m={opacity:0,y:24},trigger:c={},once:p=true,onComplete:v}=r,V=window.matchMedia("(prefers-reduced-motion: reduce)").matches,S=typeof l=="function"?l:pe[l]??pe["ease-out"],ce=Se(c.start??"top 85%"),Fe=Se(c.end??"top 40%"),j=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let ue;s==="chars"?ue=yr(t):s==="lines"?ue=qt(t):ue=Bt(t);let ie=ue.length;function Z(g,O){m?.opacity!==void 0&&(g.style.opacity=String(m.opacity+(1-m.opacity)*O));let ae=br(O,m);ae&&(g.style.transform=ae);}function F(g){t.style.setProperty("--scroll-draw-progress",String(g)),ue.forEach((O,ae)=>{let xe=S(hr(g,ae,ie,i));Z(O,xe);});}if(V)return F(1),v?.(),{destroy(){t.innerHTML=j,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};F(0);let I=0,H=0,T=0,N=false,C=false,A=-1,E=0,he=false,_=()=>window.scrollY,me=()=>window.innerHeight;function be(){let g=t.getBoundingClientRect(),O=De({top:g.top,height:g.height},_(),me(),ce,Fe);I=O.tStart,H=O.tEnd;}function Te(){if(!N||C)return;let g=se(_(),I,H,1);p&&(A=Math.max(A,g),g=A),E=g,F(g),g>=1&&!he?(he=true,v?.()):g<1&&!p&&(he=false),T=requestAnimationFrame(Te);}be();let $e=new IntersectionObserver(g=>{g.forEach(O=>{N=O.isIntersecting,N&&!C?T=requestAnimationFrame(Te):cancelAnimationFrame(T);});}),U;function P(){clearTimeout(U),U=setTimeout(()=>{if(s==="lines"){let g=E;t.innerHTML=j,t.setAttribute("aria-label",t.textContent??""),ue=qt(t),F(g);}be();},150);}window.addEventListener("resize",P),window.addEventListener("orientationchange",P);let d=_e([t],P);return $e.observe(t),Oe(t,{type:"text",getProgress:()=>E,getTrigger:()=>({tStart:I,tEnd:H})}),{destroy(){cancelAnimationFrame(T),$e.disconnect(),window.removeEventListener("resize",P),window.removeEventListener("orientationchange",P),d(),clearTimeout(U),t.innerHTML=j,t.removeAttribute("aria-label"),Re(t);},replay(){A=-1,he=false,E=0,C=false,F(0);},pause(){C=true,cancelAnimationFrame(T);},resume(){C&&(C=false,N&&(T=requestAnimationFrame(Te)));},seek(g){let O=Math.min(1,Math.max(0,g));E=O,A=O,C=true,cancelAnimationFrame(T),F(O);},getProgress(){return E}}}function wr(e,r){let n={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return n;let t=typeof e=="string"?document.querySelector(e):e;return t?st(t,r):(Q("Container not found:",e),n)}function Ye(){return typeof document>"u"?null:document}var gt=new WeakMap,jt;function it(e,r,n,t){let s=gt.get(e)??new Map;gt.set(e,s);let i=()=>{let c=n(),p=s.get(r);p&&p.key===c||(p?.inst.destroy(),s.set(r,{inst:t(c),key:c,build:i,users:p?.users??0}));};i(),s.get(r).users++;let l=true;typeof MutationObserver<"u"&&(jt??(jt=new MutationObserver(c=>c.forEach(p=>gt.get(p.target)?.forEach(v=>v.build())))),jt.observe(e,{attributes:true,attributeFilter:["draw","animate","counter","text"].map(c=>`data-scroll-${c}-options`).concat("data-scroll-drawoptions")}));let m=()=>s.get(r)?.inst;return {destroy:()=>{let c=s.get(r);!l||!c||(l=false,!(--c.users>0)&&(c.inst.destroy(),s.delete(r)));},replay:()=>m()?.replay(),pause:()=>m()?.pause(),resume:()=>m()?.resume(),seek:c=>m()?.seek(c),getProgress:()=>m()?.getProgress()??0,refresh:()=>m()?.refresh?.()}}function at(e,r){try{return e?JSON.parse(e):r}catch{return r}}function vr(e=Ye()){return e?Array.from(e.querySelectorAll("[data-scroll-draw]")).map(r=>it(r,"draw",()=>r.dataset.scrollDrawOptions??r.dataset.scrollDrawoptions??"",n=>st(r,at(n,{})))):[]}function Er(e=Ye()){return e?Array.from(e.querySelectorAll("[data-scroll-animate]")).map(r=>it(r,"animate",()=>r.dataset.scrollAnimateOptions??"",n=>zt(r,at(n,{props:{}})))):[]}function Sr(e=Ye()){return e?Array.from(e.querySelectorAll("[data-scroll-counter]")).map(r=>it(r,"counter",()=>r.dataset.scrollCounterOptions??"",n=>{let t=at(n,{});return !t.to&&t.to!==0&&(Q('initScrollCounter: element missing "to" in options JSON:',r),t.to=0),typeof t.format!="function"&&t.format!==void 0&&(Q('initScrollCounter: "format" must be a function, so it cannot come from JSON; use "decimals":',r),delete t.format),Vt(r,t)})):[]}function Tr(e=Ye()){return e?Array.from(e.querySelectorAll("[data-scroll-text]")).map(r=>it(r,"text",()=>r.dataset.scrollTextOptions??"",n=>Gt(r,at(n,{})))):[]}function xn(e=Ye()){return {draw:vr(e),animate:Er(e),counter:Sr(e),text:Tr(e)}}exports.initAll=xn;exports.initScrollAnimate=Er;exports.initScrollCounter=Sr;exports.initScrollDraw=vr;exports.initScrollText=Tr;exports.scrollDraw=wr;
|
|
3
|
+
<div style="position:absolute;${c?`left:${m}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${m}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",s,{passive:true}),s(),{el:t,destroy(){window.removeEventListener("scroll",s),t.remove();}}}var _t=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,zt=/[MmLlHhVvCcSsQqTtAaZz]/g;function dr(e,r,n){if(!Ye)return;let t=(e.match(zt)??[]).join("").toUpperCase(),s=(r.match(zt)??[]).join("").toUpperCase(),i=(e.match(_t)??[]).length,l=(r.match(_t)??[]).length;if(t!==s){ee(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${s||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,n);return}i!==l&&ee(`morphTo: coordinate count differs (${i} \u2192 ${l}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,n);}function gt(e,r,n){let t=(r.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),s=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,i=>{let l=parseFloat(i),m=t[s++]??l;return String(+(l+(m-l)*n).toFixed(4))})}function lt(e,r={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:n,...t}=r,s=n?{...kt[n],...t}:t,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:l="path, polyline, line, polygon, rect, circle",speed:m=1,fade:c=false,easing:f="linear",trigger:v={},stagger:$=0,direction:T="forward",once:ue=false,debug:He=false,axis:U="y",scrollContainer:me,autoReverse:ie=false,delay:te=0,strokeColor:H,strokeWidth:O,fillOpacity:N,waypoints:x,velocityScale:_=false,threshold:C=0,rootMargin:L="0px",repeat:E=0,repeatDelay:we=0,morphTo:z,clip:fe,autoplay:ve=false,duration:Me=1e3,native:$e=true,onProgress:J,onStart:P,onComplete:p,onEnter:d,onLeave:R,onEnterBack:ae,onLeaveBack:Ae}=s,le=fe===true?"left":typeof fe=="string"?fe:false,Ee=typeof f=="function"?f:he[f]??he.linear,Ce=xe(v.start??"top bottom"),We=xe(v.end??"bottom top"),pe=typeof me=="string"?document.querySelector(me):me??null,be=Array.isArray(H)?H[0]:null,re=Array.isArray(H)?H[1]:typeof H=="string"?H:null,q=Array.isArray(O)?O[0]:null,Q=Array.isArray(O)?O[1]:typeof O=="number"?O:null,Z=Array.isArray(N)?N[0]:null,B=Array.isArray(N)?N[1]:typeof N=="number"?N:null;function ke(o){let a=o*100;switch(le){case "right":return `inset(0 0 0 ${100-a}%)`;case "top":return `inset(0 0 ${100-a}% 0)`;case "bottom":return `inset(${100-a}% 0 0 0)`;case "center":return `circle(${o*150}% at 50% 50%)`;default:return `inset(0 ${100-a}% 0 0)`}}let D=le?[]:Array.from(e.querySelectorAll(l)),M=[],ne=[],Y=0,de=0,u=$,h=0,k=false,F=false,S=0,X=false,ce=-1,Ie=[],K=-1,V=false,ge=0,Oe=0,Ne,mt=null;function bt(){mt?.destroy(),mt=null;}let _e=new Set,wt=NaN,ze=true,Ze=-1,vt=performance.now(),qe=NaN;function Ke(){return pe?U==="x"?pe.scrollLeft:pe.scrollTop:U==="x"?window.scrollX:window.scrollY}function Et(){return pe?U==="x"?pe.clientWidth:pe.clientHeight:U==="x"?window.innerWidth:window.innerHeight}function St(){let o=ot(e,pe,U);return De(o,o.scroll,Et(),Ce,We)}function Qt(){let o=de-Y,a=D.length-1,y=pe??document.documentElement,G=U==="x"?"Width":"Height";if(u=$,$>0&&a>0&&o>0){let Se=y[`scroll${G}`]-y[`client${G}`]-1-Y-o/m;Se>=0&&(u=Math.min($,Se/(a*o)));}h=de+a*u*o;}function Tt(){(({tStart:Y,tEnd:de}=St())),Qt(),He&&Ye&&(bt(),mt=pr(Y,de,U));}function ft(o,a=St){Re(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:a});let y=o.destroy;return o.destroy=()=>{y.call(o),Fe(e);},o}function Zt(o,a){if(e.style.setProperty("--scroll-draw-progress",String(o)),le){let y=a==="reverse"?1-o:o;e.style.clipPath=ke(y);return}D.forEach((y,G)=>{y.style.strokeDashoffset=a==="reverse"?`${M[G]*o}`:`${M[G]*(1-o)}`,c&&(y.style.opacity=a==="reverse"?`${1-o}`:`${o}`),be&&re?y.style.stroke=je(be,re,o):re&&(y.style.stroke=re),q!==null&&Q!==null?y.style.strokeWidth=`${q+(Q-q)*o}`:Q!==null&&(y.style.strokeWidth=`${Q}`),Z!==null&&B!==null?y.style.fillOpacity=`${Z+(B-Z)*o}`:B!==null&&(y.style.fillOpacity=`${B}`),z&&y.tagName.toLowerCase()==="path"&&ne[G]&&y.setAttribute("d",gt(ne[G],z,o));});}function et(){if(e.style.setProperty("--scroll-draw-progress","0"),le){e.style.clipPath=ke(0);return}D.forEach((o,a)=>{o.style.strokeDasharray=`${M[a]}`,o.style.strokeDashoffset=T==="reverse"?"0":`${M[a]}`,c?o.style.opacity=T==="reverse"?"1":"0":o.style.opacity="",be&&(o.style.stroke=be),q!==null&&(o.style.strokeWidth=`${q}`),Z!==null&&(o.style.fillOpacity=`${Z}`),z&&o.tagName.toLowerCase()==="path"&&ne[a]&&o.setAttribute("d",ne[a]);});}if(D.forEach(o=>{fr(o);let a=Ge(o);M.push(a);let y=o.tagName.toLowerCase()==="path";y?ne.push(o.getAttribute("d")??""):ne.push(""),z&&(y?dr(ne[ne.length-1],z,o):ee(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),i?(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=T==="reverse"?`${a}`:"0",c&&(o.style.opacity="1"),re&&(o.style.stroke=re),Q!==null&&(o.style.strokeWidth=`${Q}`),B!==null&&(o.style.fillOpacity=`${B}`),z&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",z)):(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=T==="reverse"?"0":`${a}`,c?o.style.opacity=T==="reverse"?"1":"0":o.style.opacity="",be&&(o.style.stroke=be),q!==null&&(o.style.strokeWidth=`${q}`),Z!==null&&(o.style.fillOpacity=`${Z}`));}),le){if(i)return e.style.clipPath=ke(1),p?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=ke(0);}else if(i)return p?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let xt=typeof f=="string"?st(f):null;function Kt(){return !($e===false||!mr()||!D.length||!xt||le||U!=="y"||pe||m!==1||$!==0||ue||ie||_!==false||z||x||E||te>0||J||P||p||d||R||ae||Ae||H!=null||O!=null||N!=null||(v.start??"top bottom").trim()!=="top bottom"||(v.end??"bottom top").trim()!=="bottom top")}function er(){let o=++ur,a=`svg-scroll-draw-${o}`,y=`svg-scroll-draw-host-${o}`,G=`--svg-scroll-draw-${o}`,Se=T==="reverse"?"0":"var(--ssd-len)",Pe=T==="reverse"?"var(--ssd-len)":"0",Le=`stroke-dashoffset:${Se};`,w=`stroke-dashoffset:${Pe};`;c&&(Le+=`opacity:${T==="reverse"?1:0};`,w+=`opacity:${T==="reverse"?0:1};`);let A=document.createElement("style");A.setAttribute("data-svg-scroll-draw",""),A.textContent=`@keyframes ${a}{from{${Le}}to{${w}}}.${y}{view-timeline-name:${G};view-timeline-axis:block;}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${xt};animation-fill-mode:both;animation-timeline:${G};animation-range:cover 0% cover 100%;}`,document.head.appendChild(A),e.classList.add(y);function oe(g,j){g.style.setProperty("--ssd-len",String(M[j])),g.style.strokeDasharray=`${M[j]}`,g.style.strokeDashoffset="",g.style.opacity="",g.style.animationPlayState="",g.classList.add(a);}D.forEach(oe);let b=false,I=-1;function W(){if(I>=0)return I;let g=e.getBoundingClientRect(),{tStart:j,tEnd:Te}=De({top:g.top,height:g.height},Ke(),Et(),Ce,We);return Ee(se(Ke(),j,Te,m))}return {destroy(){e.classList.remove(y),D.forEach(g=>{g.classList.remove(a),g.style.removeProperty("--ssd-len"),g.style.animationPlayState="";}),A.remove();},replay(){b=false,I=-1,D.forEach(oe);},pause(){b=true,D.forEach(g=>{g.style.animationPlayState="paused";});},resume(){b&&(b=false,D.forEach(g=>{g.style.animationPlayState="running";}));},seek(g){let j=Math.min(1,Math.max(0,g));I=j,b=true,D.forEach((Te,ye)=>{Te.classList.remove(a),Te.style.strokeDashoffset=T==="reverse"?`${M[ye]*j}`:`${M[ye]*(1-j)}`,c&&(Te.style.opacity=T==="reverse"?`${1-j}`:`${j}`);});},getProgress(){return W()},refresh(){D.forEach((g,j)=>{M[j]=Ge(g),g.style.setProperty("--ssd-len",String(M[j])),g.style.strokeDasharray=`${M[j]}`;});}}}if(Kt())return ft(er());function tr(){let o=Math.max(1,Me),a=0,y=0,G=false;function Se(b){let I=true;if(le){let W=Math.min(1,Math.max(0,b/o)),g=Ee(W);ge=g,e.style.setProperty("--scroll-draw-progress",String(g)),e.style.clipPath=ke(T==="reverse"?1-g:g),J?.(g),W<1&&(I=false);}else D.forEach((W,g)=>{let j=g*$*o,Te=Math.min(1,Math.max(0,(b-j)/o)),ye=Ee(Te);W.style.strokeDashoffset=T==="reverse"?`${M[g]*ye}`:`${M[g]*(1-ye)}`,c&&(W.style.opacity=T==="reverse"?`${1-ye}`:`${ye}`),be&&re?W.style.stroke=je(be,re,ye):re&&(W.style.stroke=re),q!==null&&Q!==null?W.style.strokeWidth=`${q+(Q-q)*ye}`:Q!==null&&(W.style.strokeWidth=`${Q}`),Z!==null&&B!==null?W.style.fillOpacity=`${Z+(B-Z)*ye}`:B!==null&&(W.style.fillOpacity=`${B}`),z&&W.tagName.toLowerCase()==="path"&&ne[g]&&W.setAttribute("d",gt(ne[g],z,ye)),g===0&&(ge=ye,J?.(ye),e.style.setProperty("--scroll-draw-progress",String(ye))),Te<1&&(I=false);});if(x){let W=Math.min(1,Math.max(0,b/o)),g=Ee(W);for(let j in x){let Te=parseFloat(j);g>=Te&&!_e.has(Te)&&(_e.add(Te),x[j]?.());}}return I}function Pe(b){if(V)return;let I=b-a;F||(F=true,P?.());let W=Se(I);if(W&&!k){k=true,Se(o*(1+Math.max(0,D.length-1)*$)),p?.(),Oe<(E==="infinite"?1/0:E??0)&&(Oe++,Ne=setTimeout(()=>{a=performance.now(),F=false,k=false,_e.clear(),et(),S=requestAnimationFrame(Pe);},we));return}W||(S=requestAnimationFrame(Pe));}function Le(){cancelAnimationFrame(S),clearTimeout(Ne),a=performance.now(),y=0,V=false,F=false,k=false,Oe=0,G=true,ge=0,_e.clear(),et(),S=requestAnimationFrame(Pe);}let w=new IntersectionObserver(b=>{b.forEach(I=>{I.isIntersecting&&!(ue&&k)?Le():!I.isIntersecting&&!ue&&!k&&(cancelAnimationFrame(S),clearTimeout(Ne),G=false);});},{root:pe??null,threshold:C,rootMargin:L}),A;function oe(){clearTimeout(A),A=setTimeout(()=>{D.forEach((b,I)=>{M[I]=Ge(b),b.style.strokeDasharray=`${M[I]}`;});},150);}return window.addEventListener("resize",oe),window.addEventListener("orientationchange",oe),te>0?setTimeout(()=>w.observe(e),te):w.observe(e),{destroy(){cancelAnimationFrame(S),clearTimeout(Ne),w.disconnect(),window.removeEventListener("resize",oe),window.removeEventListener("orientationchange",oe),clearTimeout(A);},replay(){Oe=0,Le();},pause(){V||!G||(V=true,y=performance.now()-a,cancelAnimationFrame(S));},resume(){V&&(V=false,G=true,a=performance.now()-y,S=requestAnimationFrame(Pe));},seek(b){let I=Math.min(1,Math.max(0,b));ge=I,V=true,y=I*o,a=performance.now()-y,cancelAnimationFrame(S),Se(y);},getProgress(){return ge},refresh(){clearTimeout(A),D.forEach((b,I)=>{M[I]=Ge(b),b.style.strokeDasharray=`${M[I]}`;});}}}if(ve)return ft(tr());Tt();function Mt(){if(V||!Be)return;let o=performance.now(),a=Ke();if(!ze&&_===false&&a===wt){pt(a);return}ze=false,wt=a;let y=m;if(_!==false){let w=o-vt,A=w>0?Math.abs(a-(Ze<0?a:Ze))/w:0;y=m*Math.max(.2,1+A*(typeof _=="number"?_:1)*.04);}Ze=a,vt=o;let G=ie?K===-1||a>=K?"forward":"reverse":T;K=a;let Se=de-Y,Pe=true,Le=Se===0?0:(a-Y)/Se;if(isNaN(qe)||(qe<=0&&Le>0?d?.():qe>0&&Le<=0&&Ae?.(),qe<1&&Le>=1?R?.():qe>=1&&Le<1&&ae?.()),qe=Le,le){let w=Ee(se(a,Y,de,y));ue&&!ie&&(ce=Math.max(ce,w),w=ce),ge=w,e.style.setProperty("--scroll-draw-progress",String(w));let A=G==="reverse"?1-w:w;e.style.clipPath=ke(A),J?.(w),!F&&se(a,Y,de,y)>0&&(F=true,P?.()),w>=1&&!k?(k=true,p?.(),Oe<(E==="infinite"?1/0:E??0)&&(Oe++,Ne=setTimeout(()=>{ce=-1,F=false,k=false,e.style.clipPath=ke(0);},we))):w<1&&!ue&&(k=false),pt(a);return}if(D.forEach((w,A)=>{let oe=A*u*Se,b=Ee(se(a,Y+oe,de+oe,y));ue&&!ie&&(b=Ie[A]=Math.max(Ie[A]??ce,b)),w.style.strokeDashoffset=G==="reverse"?`${M[A]*b}`:`${M[A]*(1-b)}`,c&&(w.style.opacity=G==="reverse"?`${1-b}`:`${b}`),be&&re?w.style.stroke=je(be,re,b):re&&(w.style.stroke=re),q!==null&&Q!==null?w.style.strokeWidth=`${q+(Q-q)*b}`:Q!==null&&(w.style.strokeWidth=`${Q}`),Z!==null&&B!==null?w.style.fillOpacity=`${Z+(B-Z)*b}`:B!==null&&(w.style.fillOpacity=`${B}`),z&&w.tagName.toLowerCase()==="path"&&ne[A]&&w.setAttribute("d",gt(ne[A],z,b)),A===0&&(ge=b,J?.(b),e.style.setProperty("--scroll-draw-progress",String(b))),b<1&&(Pe=false);}),x){let w=Ee(se(a,Y,de,y));for(let A in x){let oe=parseFloat(A);w>=oe&&!_e.has(oe)&&(_e.add(oe),x[A]?.());}}!F&&se(a,Y,de,y)>0&&(F=true,P?.()),Pe&&!k?(k=true,p?.(),Oe<(E==="infinite"?1/0:E??0)&&(Oe++,Ne=setTimeout(()=>{ce=-1,Ie=[],F=false,k=false,_e.clear(),et(),ze=true;},we))):!Pe&&!ue&&(k=false),pt(a);}function At(o){return o>=de&&o<h}function pt(o){X||At(o)?S=requestAnimationFrame(Mt):Be=false;}let Be=false;function tt(){Be||(Be=true,S=requestAnimationFrame(function(){Mt();}));}function rt(){Be=false,cancelAnimationFrame(S);}let dt=new IntersectionObserver(o=>{o.forEach(a=>{X=a.isIntersecting,X&&!V?(ze=true,tt()):Be&&!V&&At(Ke())||rt();});},{root:pe??null,threshold:C,rootMargin:L});function Lt(){D.forEach((o,a)=>{M[a]=Ge(o),o.style.strokeDasharray=`${M[a]}`;}),Tt(),ze=true;}let nt;function Ue(){clearTimeout(nt),nt=setTimeout(Lt,150);}window.addEventListener("resize",Ue),window.addEventListener("orientationchange",Ue);let rr=Ve([e],Ue);return te>0?setTimeout(()=>dt.observe(e),te):dt.observe(e),ft({destroy(){cancelAnimationFrame(S),clearTimeout(Ne),rt(),dt.disconnect(),rr(),window.removeEventListener("resize",Ue),window.removeEventListener("orientationchange",Ue),clearTimeout(nt),bt();},replay(){ce=-1,Ie=[],K=-1,Ze=-1,F=false,k=false,Oe=0,V=false,ge=0,_e.clear(),clearTimeout(Ne),et(),ze=true,X&&tt();},pause(){V=true,rt();},resume(){V&&(V=false,ze=true,X&&tt());},seek(o){let a=Math.min(1,Math.max(0,o));ge=a,ce=a,Ie=[],V=true,rt(),Zt(a,T),ze=true;},getProgress(){return ge},refresh(){clearTimeout(nt),Lt(),X&&!V&&tt();}},()=>({tStart:Y,tEnd:de}))}function gr(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Vt(e){let r=[],n=/([\w]+)\(([^)]*)\)/g,t;for(;(t=n.exec(e))!==null;){let s=[],i=[],l=t[2].trim();if(l)for(let m of l.split(/[\s,]+/)){let c=m.match(/^([-+]?[\d.eE]+)(.*)$/);s.push(c?parseFloat(c[1]):0),i.push(c?c[2]:"");}r.push({fn:t[1],nums:s,units:i});}return r}function yr(e,r,n){let t=Vt(e),s=Vt(r);return t.length===0||t.length!==s.length?n<1?e:r:t.map((i,l)=>{let m=s[l];return i.fn!==m.fn||i.nums.length!==m.nums.length?n<1?`${i.fn}(${i.nums.map((c,f)=>`${c}${i.units[f]}`).join(", ")})`:`${m.fn}(${m.nums.map((c,f)=>`${c}${m.units[f]}`).join(", ")})`:`${i.fn}(${i.nums.map((c,f)=>`${c+(m.nums[f]-c)*n}${i.units[f]}`).join(", ")})`}).join(" ")}function Wt(e,r,n){if(typeof e=="number"&&typeof r=="number")return String(e+(r-e)*n);let t=String(e),s=String(r);if(gr(t))return je(t,s,n);if(t.includes("("))return yr(t,s,n);let i=t.match(/^([-+]?[\d.]+)(.*)$/),l=s.match(/^([-+]?[\d.]+)(.*)$/);if(i&&l){let m=parseFloat(i[1]),c=parseFloat(l[1]);return `${m+(c-m)*n}${i[2]||l[2]}`}return n<1?t:s}function hr(e){return e.replace(/([A-Z])/g,r=>`-${r.toLowerCase()}`)}var br=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),wr=0,qt="--scroll-draw-progress";function vr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function Bt(e,r){let n={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return n;let{props:t,trigger:s={},easing:i="ease-out",speed:l=1,once:m=false,axis:c="y",scrollContainer:f,native:v=true,velocityScale:$=false,respectReducedMotion:T=true,triggerElement:ue,onProgress:He,onComplete:U,onEnter:me,onLeave:ie,onEnterBack:te,onLeaveBack:H}=r,O=T&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,N=typeof i=="function"?i:he[i]??he["ease-out"],x=xe(s.start??"top bottom"),_=xe(s.end??"bottom top"),C=ue??e,L=typeof f=="string"?document.querySelector(f):f??null,E=Object.entries(t).map(([u,h])=>({prop:hr(u),from:Array.isArray(h)?h[0]:"",to:Array.isArray(h)?h[1]:h}));function we(){let u=window.getComputedStyle(e);for(let h of E)h.from===""&&(h.from=u.getPropertyValue(h.prop).trim()||"0");}function z(){for(let u of E)e.style.setProperty(u.prop,String(u.to));}let fe=new Map;for(let u of [...E.map(h=>h.prop),qt])fe.set(u,e.style.getPropertyValue(u));function ve(){for(let[u,h]of fe)h?e.style.setProperty(u,h):e.style.removeProperty(u);}if(O)return z(),U?.(),{...n,destroy:ve,getProgress:()=>1};we();let Me=typeof i=="string"?st(i):null;function $e(){if(!v||!vr()||!Me||c!=="y"||L||C!==e||m||l!==1||He||U||me||ie||te||H||$!==false||(s.start??"top bottom").trim()!=="top bottom"||(s.end??"bottom top").trim()!=="bottom top")return false;for(let u of E)if(!br.has(u.prop))return false;return true}function J(){let u=`ssd-a-${++wr}`,h=E.map(K=>`${K.prop}:${K.from}`).join(";"),k=E.map(K=>`${K.prop}:${K.to}`).join(";"),F=document.createElement("style");F.setAttribute("data-ssd-animate",""),F.textContent=`@keyframes ${u}{from{${h}}to{${k}}}.${u}{animation-name:${u};animation-duration:auto;animation-timing-function:${Me};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(F),e.classList.add(u);let S=()=>c==="x"?window.scrollX:window.scrollY,X=()=>c==="x"?window.innerWidth:window.innerHeight,ce=()=>{let K=e.getBoundingClientRect();return De({top:K.top,height:K.height},S(),X(),x,_)};Re(e,{type:"animate",getProgress:()=>Ie.getProgress(),getTrigger:ce});let Ie={refresh(){},destroy(){e.classList.remove(u),F.remove(),e.style.animationPlayState="",ve(),Fe(e);},replay(){e.classList.remove(u),e.offsetWidth,e.classList.add(u);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(K){let V=Math.min(1,Math.max(0,K));e.classList.remove(u);for(let ge of E)e.style.setProperty(ge.prop,Wt(ge.from,ge.to,V));},getProgress(){let{tStart:K,tEnd:V}=ce();return N(se(S(),K,V,l))}};return Ie}if($e())return J();let P=0,p=0,d=0,R=false,ae=false,Ae=-1,le=0,Ee=false,Ce=NaN,We=-1,pe=0,be=()=>L?c==="x"?L.scrollLeft:L.scrollTop:c==="x"?window.scrollX:window.scrollY,re=()=>L?c==="x"?L.clientWidth:L.clientHeight:c==="x"?window.innerWidth:window.innerHeight,q=C===e?E:[],Q=false;function Z(){let u=e.style,h=q.map(X=>u.getPropertyValue(X.prop)),k=u.transition;q.length&&(u.transition="none"),q.forEach(X=>u.setProperty(X.prop,fe.get(X.prop)??""));let F=ot(C,L,c);q.forEach((X,ce)=>u.setProperty(X.prop,h[ce])),q.length&&(e.offsetWidth,u.transition=k);let S=De(F,F.scroll,re(),x,_);Q&&Math.abs(S.tStart-P)<1&&Math.abs(S.tEnd-p)<1||(Q=true,P=S.tStart,p=S.tEnd);}function B(u){e.style.setProperty(qt,String(u));for(let h of E)e.style.setProperty(h.prop,Wt(h.from,h.to,u));He?.(u);}function ke(u){if(isNaN(Ce)){Ce=u;return}Ce<=0&&u>0?me?.():Ce>0&&u<=0&&H?.(),Ce<1&&u>=1?ie?.():Ce>=1&&u<1&&te?.(),Ce=u;}function D(){if(!R||ae)return;let u=performance.now(),h=be(),k=l;if($!==false){let X=u-pe,ce=X>0?Math.abs(h-(We<0?h:We))/X:0;k=l*Math.max(.2,1+ce*(typeof $=="number"?$:1)*.04);}We=h,pe=u;let F=p===P?0:(h-P)/(p-P);ke(F);let S=N(se(h,P,p,k));m&&(Ae=Math.max(Ae,S),S=Ae),le=S,B(S),S>=1&&!Ee?(Ee=true,U?.()):S<1&&!m&&(Ee=false),d=requestAnimationFrame(D);}Z(),p===P&&ee("scrollAnimate: the trigger window has zero length (start and end resolve to the same scroll position), so this element will never animate. If the target is inside a position:sticky stage, measure the trigger from the container that holds the scroll room via `triggerElement`.",e);{let u=N(se(be(),P,p,l));m&&u>0&&(Ae=u),le=u,B(u);}let M=new IntersectionObserver(u=>{u.forEach(h=>{R=h.isIntersecting,R&&!ae?d=requestAnimationFrame(D):cancelAnimationFrame(d);});},{root:L??null}),ne;function Y(){clearTimeout(ne),ne=setTimeout(Z,150);}window.addEventListener("resize",Y),window.addEventListener("orientationchange",Y);let de=Ve([C],Y);return M.observe(e),Re(e,{type:"animate",getProgress:()=>le,getTrigger:()=>({tStart:P,tEnd:p})}),{destroy(){cancelAnimationFrame(d),M.disconnect(),window.removeEventListener("resize",Y),window.removeEventListener("orientationchange",Y),de(),clearTimeout(ne),ve(),Fe(e);},replay(){Ae=-1,Ee=false,le=0,ae=false,B(0);},pause(){ae=true,cancelAnimationFrame(d);},resume(){ae&&(ae=false,R&&(d=requestAnimationFrame(D)));},seek(u){let h=Math.min(1,Math.max(0,u));le=h,Ae=h,ae=true,cancelAnimationFrame(d),B(h);},getProgress(){return le},refresh(){Z();}}}var yt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Gt(e,r){if(typeof window>"u")return yt;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return ee("scrollCounter: element not found:",e),yt;let t=n,{from:s=0,to:i,format:l,easing:m="ease-out",trigger:c={},once:f=true,decimals:v,onComplete:$}=r,T=v!==void 0?p=>p.toFixed(v):l??(p=>String(Math.round(p))),ue=typeof m=="function"?m:he[m]??he["ease-out"],He=xe(c.start??"top 80%"),U=xe(c.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=T(i),$?.(),yt;let ie=0,te=0,H=false,O=0,N=false,x=false,_=-1,C=0,L=false,E=()=>window.scrollY,we=()=>window.innerHeight;function z(){let p=t.getBoundingClientRect(),d=De({top:p.top,height:p.height},E(),we(),He,U);H&&Math.abs(d.tStart-ie)<1&&Math.abs(d.tEnd-te)<1||(H=true,ie=d.tStart,te=d.tEnd);}function fe(p){t.textContent=T(s+(i-s)*p),t.style.setProperty("--scroll-draw-progress",String(p));}function ve(){if(!N||x)return;let p=ue(se(E(),ie,te,1));f&&(_=Math.max(_,p),p=_),C=p,fe(p),p>=1&&!L?(L=true,$?.()):p<1&&!f&&(L=false),O=requestAnimationFrame(ve);}z();{let p=ue(se(E(),ie,te,1));f&&p>0&&(_=p),C=p,fe(p);}let Me=new IntersectionObserver(p=>{p.forEach(d=>{N=d.isIntersecting,N&&!x?O=requestAnimationFrame(ve):cancelAnimationFrame(O);});}),$e;function J(){clearTimeout($e),$e=setTimeout(z,150);}window.addEventListener("resize",J),window.addEventListener("orientationchange",J);let P=Ve([t],J);return Me.observe(t),Re(t,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:ie,tEnd:te})}),{destroy(){cancelAnimationFrame(O),Me.disconnect(),window.removeEventListener("resize",J),window.removeEventListener("orientationchange",J),P(),clearTimeout($e),Fe(t);},replay(){_=-1,L=false,C=0,x=false,fe(0);},pause(){x=true,cancelAnimationFrame(O);},resume(){x&&(x=false,N&&(O=requestAnimationFrame(ve)));},seek(p){let d=Math.min(1,Math.max(0,p));C=d,_=d,x=true,cancelAnimationFrame(O),fe(d);},getProgress(){return C}}}function Yt(e){let r=e.textContent??"";return e.textContent="",r.split(/(\s+)/).filter(Boolean).map(n=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),/^\s+$/.test(n)?(t.textContent=n,t.style.whiteSpace="pre"):(t.textContent=n,t.style.display="inline-block"),e.appendChild(t),/^\s+$/.test(n)?null:t}).filter(n=>n!==null)}function Er(e){let r=e.textContent??"";return e.textContent="",r.split("").map(n=>{let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=n,n===" "?t.style.whiteSpace="pre":t.style.display="inline-block",e.appendChild(t),n===" "?null:t}).filter(n=>n!==null)}function jt(e){let r=Yt(e),n=new Map;for(let i of r){let l=i.offsetTop;n.has(l)||n.set(l,[]),n.get(l).push(i);}let t=[],s=Array.from(n.keys()).sort((i,l)=>i-l);for(let i of s){let l=n.get(i),m=document.createElement("span");m.setAttribute("aria-hidden","true"),m.style.display="inline-block",l.forEach((c,f)=>{let v=c.nextElementSibling;m.appendChild(c),f<l.length-1&&v&&v.style.whiteSpace==="pre"&&m.appendChild(v);}),t.push(m);}return e.textContent="",t.forEach((i,l)=>{e.appendChild(i),l<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function Sr(e,r,n,t){if(n<=1||t===0)return e;let s=(n-1)*t,i=r*t,l=i+(1-s);return l<=i?e>=i?1:0:Math.min(1,Math.max(0,(e-i)/(l-i)))}function Tr(e,r){let n=[];if(r?.y!==void 0&&n.push(`translateY(${r.y*(1-e)}px)`),r?.x!==void 0&&n.push(`translateX(${r.x*(1-e)}px)`),r?.rotate!==void 0&&n.push(`rotate(${r.rotate*(1-e)}deg)`),r?.scale!==void 0){let t=r.scale+(1-r.scale)*e;n.push(`scale(${t})`);}return n.join(" ")||""}var Ut={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Xt(e,r={}){if(typeof window>"u")return Ut;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return ee("scrollText: element not found:",e),Ut;let t=n,{split:s="words",stagger:i=.04,easing:l="ease-out",from:m={opacity:0,y:24},trigger:c={},once:f=true,onComplete:v}=r,$=window.matchMedia("(prefers-reduced-motion: reduce)").matches,T=typeof l=="function"?l:he[l]??he["ease-out"],ue=xe(c.start??"top 85%"),He=xe(c.end??"top 40%"),U=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let me;s==="chars"?me=Er(t):s==="lines"?me=jt(t):me=Yt(t);let ie=me.length;function te(d,R){m?.opacity!==void 0&&(d.style.opacity=String(m.opacity+(1-m.opacity)*R));let ae=Tr(R,m);ae&&(d.style.transform=ae);}function H(d){t.style.setProperty("--scroll-draw-progress",String(d)),me.forEach((R,ae)=>{let Ae=T(Sr(d,ae,ie,i));te(R,Ae);});}if($)return H(1),v?.(),{destroy(){t.innerHTML=U,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};H(0);let O=0,N=0,x=0,_=false,C=false,L=-1,E=0,we=false,z=()=>window.scrollY,fe=()=>window.innerHeight;function ve(){let d=t.getBoundingClientRect(),R=De({top:d.top,height:d.height},z(),fe(),ue,He);O=R.tStart,N=R.tEnd;}function Me(){if(!_||C)return;let d=se(z(),O,N,1);f&&(L=Math.max(L,d),d=L),E=d,H(d),d>=1&&!we?(we=true,v?.()):d<1&&!f&&(we=false),x=requestAnimationFrame(Me);}ve();let $e=new IntersectionObserver(d=>{d.forEach(R=>{_=R.isIntersecting,_&&!C?x=requestAnimationFrame(Me):cancelAnimationFrame(x);});}),J;function P(){clearTimeout(J),J=setTimeout(()=>{if(s==="lines"){let d=E;t.innerHTML=U,t.setAttribute("aria-label",t.textContent??""),me=jt(t),H(d);}ve();},150);}window.addEventListener("resize",P),window.addEventListener("orientationchange",P);let p=Ve([t],P);return $e.observe(t),Re(t,{type:"text",getProgress:()=>E,getTrigger:()=>({tStart:O,tEnd:N})}),{destroy(){cancelAnimationFrame(x),$e.disconnect(),window.removeEventListener("resize",P),window.removeEventListener("orientationchange",P),p(),clearTimeout(J),t.innerHTML=U,t.removeAttribute("aria-label"),Fe(t);},replay(){L=-1,we=false,E=0,C=false,H(0);},pause(){C=true,cancelAnimationFrame(x);},resume(){C&&(C=false,_&&(x=requestAnimationFrame(Me)));},seek(d){let R=Math.min(1,Math.max(0,d));E=R,L=R,C=true,cancelAnimationFrame(x),H(R);},getProgress(){return E}}}function xr(e,r){let n={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return n;let t=typeof e=="string"?document.querySelector(e):e;return t?lt(t,r):(ee("Container not found:",e),n)}function Qe(){return typeof document>"u"?null:document}var ht=new WeakMap,Jt;function ct(e,r,n,t){let s=ht.get(e)??new Map;ht.set(e,s);let i=()=>{let c=n(),f=s.get(r);f&&f.key===c||(f?.inst.destroy(),s.set(r,{inst:t(c),key:c,build:i,users:f?.users??0}));};i(),s.get(r).users++;let l=true;typeof MutationObserver<"u"&&(Jt??(Jt=new MutationObserver(c=>c.forEach(f=>ht.get(f.target)?.forEach(v=>v.build())))),Jt.observe(e,{attributes:true,attributeFilter:["draw","animate","counter","text"].map(c=>`data-scroll-${c}-options`).concat("data-scroll-drawoptions")}));let m=()=>s.get(r)?.inst;return {destroy:()=>{let c=s.get(r);!l||!c||(l=false,!(--c.users>0)&&(c.inst.destroy(),s.delete(r)));},replay:()=>m()?.replay(),pause:()=>m()?.pause(),resume:()=>m()?.resume(),seek:c=>m()?.seek(c),getProgress:()=>m()?.getProgress()??0,refresh:()=>m()?.refresh?.()}}function ut(e,r){try{return e?JSON.parse(e):r}catch{return r}}function Mr(e=Qe()){return e?Array.from(e.querySelectorAll("[data-scroll-draw]")).map(r=>ct(r,"draw",()=>r.dataset.scrollDrawOptions??r.dataset.scrollDrawoptions??"",n=>lt(r,ut(n,{})))):[]}function Ar(e=Qe()){return e?Array.from(e.querySelectorAll("[data-scroll-animate]")).map(r=>ct(r,"animate",()=>r.dataset.scrollAnimateOptions??"",n=>Bt(r,ut(n,{props:{}})))):[]}function Lr(e=Qe()){return e?Array.from(e.querySelectorAll("[data-scroll-counter]")).map(r=>ct(r,"counter",()=>r.dataset.scrollCounterOptions??"",n=>{let t=ut(n,{});return !t.to&&t.to!==0&&(ee('initScrollCounter: element missing "to" in options JSON:',r),t.to=0),typeof t.format!="function"&&t.format!==void 0&&(ee('initScrollCounter: "format" must be a function, so it cannot come from JSON; use "decimals":',r),delete t.format),Gt(r,t)})):[]}function $r(e=Qe()){return e?Array.from(e.querySelectorAll("[data-scroll-text]")).map(r=>ct(r,"text",()=>r.dataset.scrollTextOptions??"",n=>Xt(r,ut(n,{})))):[]}function Cn(e=Qe()){return {draw:Mr(e),animate:Ar(e),counter:Lr(e),text:$r(e)}}exports.initAll=Cn;exports.initScrollAnimate=Ar;exports.initScrollCounter=Lr;exports.initScrollDraw=Mr;exports.initScrollText=$r;exports.scrollDraw=xr;
|
package/dist/astro/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScrollDrawInstance } from '../types-
|
|
2
|
-
export { a as ScrollDrawOptions } from '../types-
|
|
3
|
-
export { s as scrollDraw } from '../scroll-draw-
|
|
1
|
+
import { S as ScrollDrawInstance } from '../types-MswK0erX.mjs';
|
|
2
|
+
export { a as ScrollDrawOptions } from '../types-MswK0erX.mjs';
|
|
3
|
+
export { s as scrollDraw } from '../scroll-draw-Dej-GIRP.mjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Auto-initialises all elements with a [data-scroll-draw] attribute on the page.
|
package/dist/astro/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as ScrollDrawInstance } from '../types-
|
|
2
|
-
export { a as ScrollDrawOptions } from '../types-
|
|
3
|
-
export { s as scrollDraw } from '../scroll-draw-
|
|
1
|
+
import { S as ScrollDrawInstance } from '../types-MswK0erX.js';
|
|
2
|
+
export { a as ScrollDrawOptions } from '../types-MswK0erX.js';
|
|
3
|
+
export { s as scrollDraw } from '../scroll-draw-DsBMkwrX.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Auto-initialises all elements with a [data-scroll-draw] attribute on the page.
|
package/dist/astro/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a as scrollDraw}from'../chunk-
|
|
1
|
+
export{a as scrollDraw}from'../chunk-6SSA5V7J.mjs';import {a as a$2}from'../chunk-I45LCJUP.mjs';import {a as a$1}from'../chunk-KHQ7OGQK.mjs';import {a}from'../chunk-BFX2CSQ3.mjs';import {b}from'../chunk-LQBXJRFY.mjs';import'../chunk-OJFWQ6CU.mjs';import'../chunk-YWKPTYSG.mjs';import'../chunk-YZV4Z3EQ.mjs';import'../chunk-A4JCC3QQ.mjs';import'../chunk-DM6EDKWH.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-BCV4RAIX.mjs';import {b as b$1}from'../chunk-LFSU6LR3.mjs';function i(){return typeof document>"u"?null:document}var p=new WeakMap,g;function c(r,t,n,o){let l=p.get(r)??new Map;p.set(r,l);let f=()=>{let e=n(),s=l.get(t);s&&s.key===e||(s?.inst.destroy(),l.set(t,{inst:o(e),key:e,build:f,users:s?.users??0}));};f(),l.get(t).users++;let S=true;typeof MutationObserver<"u"&&(g??(g=new MutationObserver(e=>e.forEach(s=>p.get(s.target)?.forEach(O=>O.build())))),g.observe(r,{attributes:true,attributeFilter:["draw","animate","counter","text"].map(e=>`data-scroll-${e}-options`).concat("data-scroll-drawoptions")}));let a=()=>l.get(t)?.inst;return {destroy:()=>{let e=l.get(t);!S||!e||(S=false,!(--e.users>0)&&(e.inst.destroy(),l.delete(t)));},replay:()=>a()?.replay(),pause:()=>a()?.pause(),resume:()=>a()?.resume(),seek:e=>a()?.seek(e),getProgress:()=>a()?.getProgress()??0,refresh:()=>a()?.refresh?.()}}function u(r,t){try{return r?JSON.parse(r):t}catch{return t}}function E(r=i()){return r?Array.from(r.querySelectorAll("[data-scroll-draw]")).map(t=>c(t,"draw",()=>t.dataset.scrollDrawOptions??t.dataset.scrollDrawoptions??"",n=>b(t,u(n,{})))):[]}function A(r=i()){return r?Array.from(r.querySelectorAll("[data-scroll-animate]")).map(t=>c(t,"animate",()=>t.dataset.scrollAnimateOptions??"",n=>a(t,u(n,{props:{}})))):[]}function I(r=i()){return r?Array.from(r.querySelectorAll("[data-scroll-counter]")).map(t=>c(t,"counter",()=>t.dataset.scrollCounterOptions??"",n=>{let o=u(n,{});return !o.to&&o.to!==0&&(b$1('initScrollCounter: element missing "to" in options JSON:',t),o.to=0),typeof o.format!="function"&&o.format!==void 0&&(b$1('initScrollCounter: "format" must be a function, so it cannot come from JSON; use "decimals":',t),delete o.format),a$1(t,o)})):[]}function M(r=i()){return r?Array.from(r.querySelectorAll("[data-scroll-text]")).map(t=>c(t,"text",()=>t.dataset.scrollTextOptions??"",n=>a$2(t,u(n,{})))):[]}function H(r=i()){return {draw:E(r),animate:A(r),counter:I(r),text:M(r)}}export{H as initAll,A as initScrollAnimate,I as initScrollCounter,E as initScrollDraw,M as initScrollText};
|
|
@@ -524,6 +524,8 @@ var SvgScrollDraw = (() => {
|
|
|
524
524
|
const originalDs = [];
|
|
525
525
|
let tStart = 0;
|
|
526
526
|
let tEnd = 0;
|
|
527
|
+
let staggerFit = stagger;
|
|
528
|
+
let tLast = 0;
|
|
527
529
|
let completed = false;
|
|
528
530
|
let started = false;
|
|
529
531
|
let rafId = 0;
|
|
@@ -558,8 +560,21 @@ var SvgScrollDraw = (() => {
|
|
|
558
560
|
const frame = measureTriggerFrame(container, scrollEl, axis);
|
|
559
561
|
return computeTriggers(frame, frame.scroll, vpSize(), startConfig, endConfig);
|
|
560
562
|
}
|
|
563
|
+
function fitStagger() {
|
|
564
|
+
const range = tEnd - tStart;
|
|
565
|
+
const gaps = paths.length - 1;
|
|
566
|
+
const s = scrollEl ?? document.documentElement;
|
|
567
|
+
const d = axis === "x" ? "Width" : "Height";
|
|
568
|
+
staggerFit = stagger;
|
|
569
|
+
if (stagger > 0 && gaps > 0 && range > 0) {
|
|
570
|
+
const room = s[`scroll${d}`] - s[`client${d}`] - 1 - tStart - range / speed;
|
|
571
|
+
if (room >= 0) staggerFit = Math.min(stagger, room / (gaps * range));
|
|
572
|
+
}
|
|
573
|
+
tLast = tEnd + gaps * staggerFit * range;
|
|
574
|
+
}
|
|
561
575
|
function cacheTriggers() {
|
|
562
576
|
({ tStart, tEnd } = measureTriggers());
|
|
577
|
+
fitStagger();
|
|
563
578
|
if (debug && IS_DEV) {
|
|
564
579
|
destroyDebugOverlay();
|
|
565
580
|
debugOverlay = createDebugOverlay(tStart, tEnd, axis);
|
|
@@ -971,11 +986,11 @@ var SvgScrollDraw = (() => {
|
|
|
971
986
|
if (autoplay) return tracked(buildAutoplay());
|
|
972
987
|
cacheTriggers();
|
|
973
988
|
function update() {
|
|
974
|
-
if (
|
|
989
|
+
if (paused || !looping) return;
|
|
975
990
|
const now = performance.now();
|
|
976
991
|
const currentScroll = scrollPos();
|
|
977
992
|
if (!dirty && velocityScale === false && currentScroll === lastAppliedScroll) {
|
|
978
|
-
|
|
993
|
+
next(currentScroll);
|
|
979
994
|
return;
|
|
980
995
|
}
|
|
981
996
|
dirty = false;
|
|
@@ -1032,11 +1047,11 @@ var SvgScrollDraw = (() => {
|
|
|
1032
1047
|
} else if (alpha < 1 && !once) {
|
|
1033
1048
|
completed = false;
|
|
1034
1049
|
}
|
|
1035
|
-
|
|
1050
|
+
next(currentScroll);
|
|
1036
1051
|
return;
|
|
1037
1052
|
}
|
|
1038
1053
|
paths.forEach((el, i) => {
|
|
1039
|
-
const offset = i *
|
|
1054
|
+
const offset = i * staggerFit * range;
|
|
1040
1055
|
let alpha = easeFn(computeProgress(currentScroll, tStart + offset, tEnd + offset, effectiveSpeed));
|
|
1041
1056
|
if (once && !autoReverse) {
|
|
1042
1057
|
alpha = frozenPath[i] = Math.max(frozenPath[i] ?? frozenAlpha, alpha);
|
|
@@ -1095,7 +1110,14 @@ var SvgScrollDraw = (() => {
|
|
|
1095
1110
|
} else if (!allComplete && !once) {
|
|
1096
1111
|
completed = false;
|
|
1097
1112
|
}
|
|
1098
|
-
|
|
1113
|
+
next(currentScroll);
|
|
1114
|
+
}
|
|
1115
|
+
function inStaggerTail(scroll) {
|
|
1116
|
+
return scroll >= tEnd && scroll < tLast;
|
|
1117
|
+
}
|
|
1118
|
+
function next(scroll) {
|
|
1119
|
+
if (isVisible || inStaggerTail(scroll)) rafId = requestAnimationFrame(update);
|
|
1120
|
+
else looping = false;
|
|
1099
1121
|
}
|
|
1100
1122
|
let looping = false;
|
|
1101
1123
|
function startLoop() {
|
|
@@ -1116,7 +1138,7 @@ var SvgScrollDraw = (() => {
|
|
|
1116
1138
|
if (isVisible && !paused) {
|
|
1117
1139
|
dirty = true;
|
|
1118
1140
|
startLoop();
|
|
1119
|
-
} else {
|
|
1141
|
+
} else if (!(looping && !paused && inStaggerTail(scrollPos()))) {
|
|
1120
1142
|
stopLoop();
|
|
1121
1143
|
}
|
|
1122
1144
|
});
|