svg-scroll-draw 2.18.1 → 2.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +11 -11
  2. package/dist/angular/index.cjs +3 -3
  3. package/dist/angular/index.d.mts +3 -3
  4. package/dist/angular/index.d.ts +3 -3
  5. package/dist/angular/index.mjs +1 -1
  6. package/dist/astro/index.cjs +3 -3
  7. package/dist/astro/index.d.mts +6 -5
  8. package/dist/astro/index.d.ts +6 -5
  9. package/dist/astro/index.mjs +1 -1
  10. package/dist/cdn/svg-scroll-draw.dev.global.js +161 -37
  11. package/dist/cdn/svg-scroll-draw.global.js +3 -3
  12. package/dist/{chunk-DIMNQPW5.mjs → chunk-6SSA5V7J.mjs} +1 -1
  13. package/dist/chunk-7SBTYJGH.mjs +1 -0
  14. package/dist/chunk-A4JCC3QQ.mjs +1 -0
  15. package/dist/chunk-BFX2CSQ3.mjs +1 -0
  16. package/dist/chunk-I45LCJUP.mjs +1 -0
  17. package/dist/chunk-KHQ7OGQK.mjs +1 -0
  18. package/dist/chunk-LQBXJRFY.mjs +3 -0
  19. package/dist/chunk-MTEGM4RR.mjs +1 -0
  20. package/dist/chunk-VVFGB4RT.mjs +1 -0
  21. package/dist/{engine-6AXEX8CL.d.ts → engine-DQyBzZDl.d.ts} +1 -1
  22. package/dist/{engine-Ci08nM91.d.mts → engine-P8u6OK4m.d.mts} +1 -1
  23. package/dist/group/index.cjs +3 -3
  24. package/dist/group/index.d.mts +3 -3
  25. package/dist/group/index.d.ts +3 -3
  26. package/dist/group/index.mjs +1 -1
  27. package/dist/horizontal/index.cjs +1 -1
  28. package/dist/horizontal/index.d.mts +1 -1
  29. package/dist/horizontal/index.d.ts +1 -1
  30. package/dist/horizontal/index.mjs +1 -1
  31. package/dist/{index-CGR7pSOR.d.mts → index-CMqK0GCT.d.mts} +2 -2
  32. package/dist/{index-BDGQEK6X.d.mts → index-CdaBYn3A.d.mts} +1 -1
  33. package/dist/{index-DxjUOIbK.d.ts → index-D3o4vT3e.d.ts} +1 -1
  34. package/dist/{index-BVuNgQSd.d.ts → index-DPqPEnO-.d.ts} +2 -2
  35. package/dist/index.cjs +4 -4
  36. package/dist/index.d.mts +6 -6
  37. package/dist/index.d.ts +6 -6
  38. package/dist/index.mjs +1 -1
  39. package/dist/nuxt/index.cjs +3 -3
  40. package/dist/nuxt/index.d.mts +3 -3
  41. package/dist/nuxt/index.d.ts +3 -3
  42. package/dist/nuxt/index.mjs +1 -1
  43. package/dist/pin/index.cjs +1 -1
  44. package/dist/pin/index.mjs +1 -1
  45. package/dist/progress/index.cjs +1 -1
  46. package/dist/progress/index.d.mts +1 -1
  47. package/dist/progress/index.d.ts +1 -1
  48. package/dist/progress/index.mjs +1 -1
  49. package/dist/react/index.cjs +3 -3
  50. package/dist/react/index.d.mts +16 -13
  51. package/dist/react/index.d.ts +16 -13
  52. package/dist/react/index.mjs +1 -1
  53. package/dist/reveal/index.cjs +1 -1
  54. package/dist/reveal/index.d.mts +1 -1
  55. package/dist/reveal/index.d.ts +1 -1
  56. package/dist/reveal/index.mjs +1 -1
  57. package/dist/{scroll-draw-CNlq4Z_L.d.mts → scroll-draw-Dej-GIRP.d.mts} +1 -1
  58. package/dist/{scroll-draw-BlJfbTDv.d.ts → scroll-draw-DsBMkwrX.d.ts} +1 -1
  59. package/dist/snap/index.d.mts +1 -1
  60. package/dist/snap/index.d.ts +1 -1
  61. package/dist/solid/index.cjs +3 -3
  62. package/dist/solid/index.d.mts +3 -3
  63. package/dist/solid/index.d.ts +3 -3
  64. package/dist/solid/index.mjs +1 -1
  65. package/dist/svelte/index.cjs +2 -2
  66. package/dist/svelte/index.d.mts +3 -3
  67. package/dist/svelte/index.d.ts +3 -3
  68. package/dist/svelte/index.mjs +1 -1
  69. package/dist/text/index.cjs +1 -1
  70. package/dist/text/index.d.mts +1 -1
  71. package/dist/text/index.d.ts +1 -1
  72. package/dist/text/index.mjs +1 -1
  73. package/dist/timeline/index.cjs +11 -11
  74. package/dist/timeline/index.d.mts +1 -1
  75. package/dist/timeline/index.d.ts +1 -1
  76. package/dist/timeline/index.mjs +4 -4
  77. package/dist/{types-DHU1zNEw.d.mts → types-MswK0erX.d.mts} +12 -1
  78. package/dist/{types-DHU1zNEw.d.ts → types-MswK0erX.d.ts} +12 -1
  79. package/dist/video/index.cjs +1 -1
  80. package/dist/video/index.d.mts +1 -1
  81. package/dist/video/index.d.ts +1 -1
  82. package/dist/video/index.mjs +1 -1
  83. package/dist/vue/index.cjs +3 -3
  84. package/dist/vue/index.d.mts +5 -83
  85. package/dist/vue/index.d.ts +5 -83
  86. package/dist/vue/index.mjs +1 -1
  87. package/dist/web-component/index.cjs +3 -3
  88. package/dist/web-component/index.mjs +1 -1
  89. package/package.json +2 -2
  90. package/dist/chunk-4MH5SQTH.mjs +0 -1
  91. package/dist/chunk-CTVQDBD3.mjs +0 -1
  92. package/dist/chunk-KBFWDHF4.mjs +0 -1
  93. package/dist/chunk-LINFV2GK.mjs +0 -3
  94. package/dist/chunk-PEFR3ZB7.mjs +0 -1
  95. package/dist/chunk-QJ4H2HW3.mjs +0 -1
  96. package/dist/chunk-SNCRC6BA.mjs +0 -1
  97. package/dist/chunk-TIRZOSQ4.mjs +0 -1
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![license](https://img.shields.io/npm/l/svg-scroll-draw)](./LICENSE)
8
8
  [![GitHub stars](https://img.shields.io/github/stars/DhruvilChauahan0210/ink-scroll?style=flat)](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. **10.7 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.
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
 
@@ -28,7 +28,7 @@
28
28
  | `scrollParallax` | `svg-scroll-draw` | Move any element at a different rate than scroll. Speed multiplier, reverse direction. |
29
29
  | `scrollDraw` | `svg-scroll-draw` | The original — scroll-driven SVG path drawing via `stroke-dashoffset`. |
30
30
  | `scrollVideo` | `svg-scroll-draw/video` | Tie `<video>.currentTime` to scroll. The Apple/Stripe product-page pattern. |
31
- | `scrollText` | `svg-scroll-draw/text` | Split text into chars/words/lines and stagger-animate each on scroll. 2.8 KB, nothing else to load. |
31
+ | `scrollText` | `svg-scroll-draw/text` | Split text into chars/words/lines and stagger-animate each on scroll. 3.1 KB, nothing else to load. |
32
32
  | `devtools` | `svg-scroll-draw/devtools` | Visual overlay showing every active animation's triggers and progress. Dev-only. |
33
33
  | `AOS` | `svg-scroll-draw/aos` | Drop-in replacement for AOS: same `AOS.init()`, same `data-aos` markup, no `aos.css`. |
34
34
  | `ScrollReveal` | `svg-scroll-draw/scrollreveal` | Drop-in replacement for ScrollReveal.js 4, MIT instead of GPL-3.0. |
@@ -110,7 +110,7 @@ import { ScrollAnimate } from 'svg-scroll-draw/react';
110
110
  | `once` | `boolean` | `false` | Freeze at max progress — doesn't reverse on scroll back |
111
111
  | `axis` | `"x" \| "y"` | `"y"` | Scroll axis |
112
112
  | `native` | `boolean` | `true` | Use CSS `animation-timeline: view()` fast path when eligible |
113
- | `onProgress` | `(n: number) => void` | — | Called every frame with alpha 0–1 |
113
+ | `onProgress` | `(n: number) => void` | — | Called as the scroll moves, with alpha 0–1 (the first path’s, under `stagger`) |
114
114
  | `onComplete` | `() => void` | — | Fires when alpha reaches 1 |
115
115
 
116
116
  ---
@@ -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 |
@@ -362,7 +362,7 @@ import { ScrollDraw } from 'svg-scroll-draw/vue';
362
362
  | `duration` | `number` | `1000` | Duration in ms for `autoplay` mode |
363
363
  | `native` | `boolean` | `true` | Use CSS `animation-timeline: view()` when eligible |
364
364
  | `preset` | `"sketch" \| "reveal" \| "typewriter" \| "cinematic" \| "spring"` | — | Apply a named option preset as the base config |
365
- | `onProgress` | `(alpha: number) => void` | — | Called every frame with draw progress (0–1) |
365
+ | `onProgress` | `(alpha: number) => void` | — | Called as the scroll moves, with draw progress (0–1); under `stagger`, the first path’s, as `getProgress()` |
366
366
  | `onStart` | `() => void` | — | Fires on the first frame |
367
367
  | `onComplete` | `() => void` | — | Fires when all paths reach 100% |
368
368
 
@@ -629,12 +629,12 @@ 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) | 10.7 KB |
633
- | `svg-scroll-draw/react` (includes the engine) | 12.1 KB |
634
- | `svg-scroll-draw` + `svg-scroll-draw/react` (together; the engine ships once) | 13.5 KB |
635
- | `svg-scroll-draw/reveal` | 5.0 KB |
636
- | `svg-scroll-draw/text` | 2.8 KB |
637
- | `svg-scroll-draw/video` | 2.3 KB |
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
+ | `svg-scroll-draw/reveal` | 5.5 KB |
636
+ | `svg-scroll-draw/text` | 3.1 KB |
637
+ | `svg-scroll-draw/video` | 2.7 KB |
638
638
  | `svg-scroll-draw/scrollreveal` | 4.5 KB |
639
639
  | `svg-scroll-draw/vivus` | 4.0 KB |
640
640
  | `svg-scroll-draw/aos` (styles included) | 3.1 KB |
@@ -1,3 +1,3 @@
1
- 'use strict';function Zt({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),l=Math.sqrt(t),s=0,c=[];for(let d=0;d<r;d++){let S=Math.pow(l,d);c.push(S),s+=S;}let u=[0],m=0;for(let d=0;d<r;d++)m+=c[d]/s,u.push(m);return d=>{if(d<=0)return 0;if(d>=1)return 1;for(let S=0;S<r;S++)if(d<=u[S+1]){let z=(d-u[S])/(u[S+1]-u[S]);if(S===0)return z*(2-z);let L=1-Math.pow(t,S);return L+(1-L)*(2*z-1)*(2*z-1)}return 1}}function Jt({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),l=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return s=>s<=0?0:s>=1?1:r*Math.pow(2,-10*s)*Math.sin((s-l)*(2*Math.PI)/t)+1}var te={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:e=>1-Math.cos(e*Math.PI*2.5)*Math.pow(1-e,2.2),bounce:Zt(),elastic:Jt()};function ht(e,n,r){return Math.min(r,Math.max(n,e))}function de(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 bt(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 wt(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 J(e,n,r,t){return r===n?0:ht((e-n)/(r-n)*t,0,1)}function xe(e,n,r,t,l){let s=bt(e.top,e.height,n,t.element)-wt(t.viewport,r),c=bt(e.top,e.height,n,l.element)-wt(l.viewport,r);return {tStart:s,tEnd:c}}function Je(e,n,r){let t=e.getBoundingClientRect(),l=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:l,scroll:0}:{top:r==="x"?t.left:t.top,height:l,scroll:r==="x"?window.scrollX:window.scrollY}}function qe(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 vt(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 We(e,n,r){let t=vt(e),l=vt(n);return !t||!l?e:`rgb(${Math.round(t[0]+(l[0]-t[0])*r)},${Math.round(t[1]+(l[1]-t[1])*r)},${Math.round(t[2]+(l[2]-t[2])*r)})`}var Et={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 je=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function ge(e,...n){je&&console.warn(`[svg-scroll-draw] ${e}`,...n);}var er="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",tr="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",St=33;function rr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function nr(e){let n=[];for(let r=0;r<St;r++){let t=r/(St-1);n.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${n.join(",")})`}function et(e){switch(e){case "linear":return "linear";case "ease-in":return er;case "ease-out":return tr;case "ease-in-out":return rr()?nr(te["ease-in-out"]):null;default:return null}}var Tt=Symbol.for("svg-scroll-draw.registry");function xt(){let e=globalThis;return e[Tt]||(e[Tt]=new Map)}function $e(e,n){xt().set(e,n);}function Pe(e){xt().delete(e);}var or=0;function sr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Mt(e,n){let r="";try{r=getComputedStyle(e).getPropertyValue(n).trim();}catch{}return r||(e.getAttribute(n)??"").trim()}var At=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function ir(e){if(!je)return;let n=Mt(e,"stroke");if(!n||n==="none"){ge("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!At.has(r)&&!At.has(Mt(e,"fill"))&&ge("Element has a fill \u2014 it may obscure the stroke animation.",e);}function ar(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 l(){let s=r==="x"?window.scrollX:window.scrollY,c=e-s,u=n-s,m=r==="x";t.innerHTML=`
2
- <div style="position:absolute;${m?`left:${c}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${c}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
- <div style="position:absolute;${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",l,{passive:true}),l(),{el:t,destroy(){window.removeEventListener("scroll",l),t.remove();}}}var Lt=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,$t=/[MmLlHhVvCcSsQqTtAaZz]/g;function lr(e,n,r){if(!je)return;let t=(e.match($t)??[]).join("").toUpperCase(),l=(n.match($t)??[]).join("").toUpperCase(),s=(e.match(Lt)??[]).length,c=(n.match(Lt)??[]).length;if(t!==l){ge(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${l||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,r);return}s!==c&&ge(`morphTo: coordinate count differs (${s} \u2192 ${c}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function it(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),l=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let c=parseFloat(s),u=t[l++]??c;return String(+(c+(u-c)*r).toFixed(4))})}function Pt(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,l=r?{...Et[r],...t}:t,s=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:c="path, polyline, line, polygon, rect, circle",speed:u=1,fade:m=false,easing:d="linear",trigger:S={},stagger:z=0,direction:L="forward",once:re=false,debug:Me=false,axis:B="y",scrollContainer:ne,autoReverse:oe=false,delay:Y=0,strokeColor:M,strokeWidth:N,fillOpacity:$,waypoints:w,velocityScale:I=false,threshold:C=0,rootMargin:P="0px",repeat:T=0,repeatDelay:X=0,morphTo:x,clip:fe,autoplay:be=false,duration:se=1e3,native:ie=true,onProgress:p,onStart:E,onComplete:g,onEnter:k,onLeave:ae,onEnterBack:ee,onLeaveBack:A}=l,F=fe===true?"left":typeof fe=="string"?fe:false,K=typeof d=="function"?d:te[d]??te.linear,we=de(S.start??"top bottom"),Ve=de(S.end??"bottom top"),ve=typeof ne=="string"?document.querySelector(ne):ne??null,Ee=Array.isArray(M)?M[0]:null,le=Array.isArray(M)?M[1]:typeof M=="string"?M:null,ce=Array.isArray(N)?N[0]:null,G=Array.isArray(N)?N[1]:typeof N=="number"?N:null,pe=Array.isArray($)?$[0]:null,Q=Array.isArray($)?$[1]:typeof $=="number"?$:null;function Ce(o){let a=o*100;switch(F){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=F?[]:Array.from(e.querySelectorAll(c)),O=[],i=[],f=0,ye=0,R=false,_=false,q=0,Ae=false,Se=-1,Z=[],De=-1,j=false,ke=0,Ie=0,Ne,tt=null;function ct(){tt?.destroy(),tt=null;}let Re=new Set,ut=NaN,He=true,Ue=-1,mt=performance.now(),_e=NaN;function rt(){return ve?B==="x"?ve.scrollLeft:ve.scrollTop:B==="x"?window.scrollX:window.scrollY}function ft(){return ve?B==="x"?ve.clientWidth:ve.clientHeight:B==="x"?window.innerWidth:window.innerHeight}function pt(){let o=Je(e,ve,B);return xe(o,o.scroll,ft(),we,Ve)}function dt(){(({tStart:f,tEnd:ye}=pt())),Me&&je&&(ct(),tt=ar(f,ye,B));}function nt(o,a=pt){$e(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:a});let b=o.destroy;return o.destroy=()=>{b.call(o),Pe(e);},o}function Yt(o,a){if(e.style.setProperty("--scroll-draw-progress",String(o)),F){let b=a==="reverse"?1-o:o;e.style.clipPath=Ce(b);return}V.forEach((b,ue)=>{b.style.strokeDashoffset=a==="reverse"?`${O[ue]*o}`:`${O[ue]*(1-o)}`,m&&(b.style.opacity=a==="reverse"?`${1-o}`:`${o}`),Ee&&le?b.style.stroke=We(Ee,le,o):le&&(b.style.stroke=le),ce!==null&&G!==null?b.style.strokeWidth=`${ce+(G-ce)*o}`:G!==null&&(b.style.strokeWidth=`${G}`),pe!==null&&Q!==null?b.style.fillOpacity=`${pe+(Q-pe)*o}`:Q!==null&&(b.style.fillOpacity=`${Q}`),x&&b.tagName.toLowerCase()==="path"&&i[ue]&&b.setAttribute("d",it(i[ue],x,o));});}function Ye(){if(e.style.setProperty("--scroll-draw-progress","0"),F){e.style.clipPath=Ce(0);return}V.forEach((o,a)=>{o.style.strokeDasharray=`${O[a]}`,o.style.strokeDashoffset=L==="reverse"?"0":`${O[a]}`,m?o.style.opacity=L==="reverse"?"1":"0":o.style.opacity="",Ee&&(o.style.stroke=Ee),ce!==null&&(o.style.strokeWidth=`${ce}`),pe!==null&&(o.style.fillOpacity=`${pe}`),x&&o.tagName.toLowerCase()==="path"&&i[a]&&o.setAttribute("d",i[a]);});}if(V.forEach(o=>{ir(o);let a=qe(o);O.push(a);let b=o.tagName.toLowerCase()==="path";b?i.push(o.getAttribute("d")??""):i.push(""),x&&(b?lr(i[i.length-1],x,o):ge(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),s?(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=L==="reverse"?`${a}`:"0",m&&(o.style.opacity="1"),le&&(o.style.stroke=le),G!==null&&(o.style.strokeWidth=`${G}`),Q!==null&&(o.style.fillOpacity=`${Q}`),x&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",x)):(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=L==="reverse"?"0":`${a}`,m?o.style.opacity=L==="reverse"?"1":"0":o.style.opacity="",Ee&&(o.style.stroke=Ee),ce!==null&&(o.style.strokeWidth=`${ce}`),pe!==null&&(o.style.fillOpacity=`${pe}`));}),F){if(s)return e.style.clipPath=Ce(1),g?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=Ce(0);}else if(s)return g?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let gt=typeof d=="string"?et(d):null;function Xt(){return !(ie===false||!sr()||!V.length||!gt||F||B!=="y"||ve||u!==1||z!==0||re||oe||I!==false||x||w||T||Y>0||p||E||g||k||ae||ee||A||M!=null||N!=null||$!=null||(S.start??"top bottom").trim()!=="top bottom"||(S.end??"bottom top").trim()!=="bottom top")}function Kt(){let o=++or,a=`svg-scroll-draw-${o}`,b=`svg-scroll-draw-host-${o}`,ue=`--svg-scroll-draw-${o}`,Fe=L==="reverse"?"0":"var(--ssd-len)",Oe=L==="reverse"?"var(--ssd-len)":"0",Le=`stroke-dashoffset:${Fe};`,v=`stroke-dashoffset:${Oe};`;m&&(Le+=`opacity:${L==="reverse"?1:0};`,v+=`opacity:${L==="reverse"?0:1};`);let D=document.createElement("style");D.setAttribute("data-svg-scroll-draw",""),D.textContent=`@keyframes ${a}{from{${Le}}to{${v}}}.${b}{view-timeline-name:${ue};view-timeline-axis:block;}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${gt};animation-fill-mode:both;animation-timeline:${ue};animation-range:cover 0% cover 100%;}`,document.head.appendChild(D),e.classList.add(b);function me(y,U){y.style.setProperty("--ssd-len",String(O[U])),y.style.strokeDasharray=`${O[U]}`,y.style.strokeDashoffset="",y.style.opacity="",y.style.animationPlayState="",y.classList.add(a);}V.forEach(me);let h=false,H=-1;function W(){if(H>=0)return H;let y=e.getBoundingClientRect(),{tStart:U,tEnd:Te}=xe({top:y.top,height:y.height},rt(),ft(),we,Ve);return K(J(rt(),U,Te,u))}return {destroy(){e.classList.remove(b),V.forEach(y=>{y.classList.remove(a),y.style.removeProperty("--ssd-len"),y.style.animationPlayState="";}),D.remove();},replay(){h=false,H=-1,V.forEach(me);},pause(){h=true,V.forEach(y=>{y.style.animationPlayState="paused";});},resume(){h&&(h=false,V.forEach(y=>{y.style.animationPlayState="running";}));},seek(y){let U=Math.min(1,Math.max(0,y));H=U,h=true,V.forEach((Te,he)=>{Te.classList.remove(a),Te.style.strokeDashoffset=L==="reverse"?`${O[he]*U}`:`${O[he]*(1-U)}`,m&&(Te.style.opacity=L==="reverse"?`${1-U}`:`${U}`);});},getProgress(){return W()},refresh(){V.forEach((y,U)=>{O[U]=qe(y),y.style.setProperty("--ssd-len",String(O[U])),y.style.strokeDasharray=`${O[U]}`;});}}}if(Xt())return nt(Kt());function Qt(){let o=Math.max(1,se),a=0,b=0,ue=false;function Fe(h){let H=true;if(F){let W=Math.min(1,Math.max(0,h/o)),y=K(W);ke=y,e.style.setProperty("--scroll-draw-progress",String(y)),e.style.clipPath=Ce(L==="reverse"?1-y:y),p?.(y),W<1&&(H=false);}else V.forEach((W,y)=>{let U=y*z*o,Te=Math.min(1,Math.max(0,(h-U)/o)),he=K(Te);W.style.strokeDashoffset=L==="reverse"?`${O[y]*he}`:`${O[y]*(1-he)}`,m&&(W.style.opacity=L==="reverse"?`${1-he}`:`${he}`),Ee&&le?W.style.stroke=We(Ee,le,he):le&&(W.style.stroke=le),ce!==null&&G!==null?W.style.strokeWidth=`${ce+(G-ce)*he}`:G!==null&&(W.style.strokeWidth=`${G}`),pe!==null&&Q!==null?W.style.fillOpacity=`${pe+(Q-pe)*he}`:Q!==null&&(W.style.fillOpacity=`${Q}`),x&&W.tagName.toLowerCase()==="path"&&i[y]&&W.setAttribute("d",it(i[y],x,he)),y===0&&(ke=he,p?.(he),e.style.setProperty("--scroll-draw-progress",String(he))),Te<1&&(H=false);});if(w){let W=Math.min(1,Math.max(0,h/o)),y=K(W);for(let U in w){let Te=parseFloat(U);y>=Te&&!Re.has(Te)&&(Re.add(Te),w[U]?.());}}return H}function Oe(h){if(j)return;let H=h-a;_||(_=true,E?.());let W=Fe(H);if(W&&!R){R=true,Fe(o*(1+Math.max(0,V.length-1)*z)),g?.(),Ie<(T==="infinite"?1/0:T??0)&&(Ie++,Ne=setTimeout(()=>{a=performance.now(),_=false,R=false,Re.clear(),Ye(),q=requestAnimationFrame(Oe);},X));return}W||(q=requestAnimationFrame(Oe));}function Le(){cancelAnimationFrame(q),clearTimeout(Ne),a=performance.now(),b=0,j=false,_=false,R=false,Ie=0,ue=true,ke=0,Re.clear(),Ye(),q=requestAnimationFrame(Oe);}let v=new IntersectionObserver(h=>{h.forEach(H=>{H.isIntersecting&&!(re&&R)?Le():!H.isIntersecting&&!re&&!R&&(cancelAnimationFrame(q),clearTimeout(Ne),ue=false);});},{root:ve??null,threshold:C,rootMargin:P}),D;function me(){clearTimeout(D),D=setTimeout(()=>{V.forEach((h,H)=>{O[H]=qe(h),h.style.strokeDasharray=`${O[H]}`;});},150);}return window.addEventListener("resize",me),window.addEventListener("orientationchange",me),Y>0?setTimeout(()=>v.observe(e),Y):v.observe(e),{destroy(){cancelAnimationFrame(q),clearTimeout(Ne),v.disconnect(),window.removeEventListener("resize",me),window.removeEventListener("orientationchange",me),clearTimeout(D);},replay(){Ie=0,Le();},pause(){j||!ue||(j=true,b=performance.now()-a,cancelAnimationFrame(q));},resume(){j&&(j=false,ue=true,a=performance.now()-b,q=requestAnimationFrame(Oe));},seek(h){let H=Math.min(1,Math.max(0,h));ke=H,j=true,b=H*o,a=performance.now()-b,cancelAnimationFrame(q),Fe(b);},getProgress(){return ke},refresh(){clearTimeout(D),V.forEach((h,H)=>{O[H]=qe(h),h.style.strokeDasharray=`${O[H]}`;});}}}if(be)return nt(Qt());dt();function Xe(){if(!Ae||j)return;let o=performance.now(),a=rt();if(!He&&I===false&&a===ut){q=requestAnimationFrame(Xe);return}He=false,ut=a;let b=u;if(I!==false){let v=o-mt,D=v>0?Math.abs(a-(Ue<0?a:Ue))/v:0;b=u*Math.max(.2,1+D*(typeof I=="number"?I:1)*.04);}Ue=a,mt=o;let ue=oe?De===-1||a>=De?"forward":"reverse":L;De=a;let Fe=ye-f,Oe=true,Le=Fe===0?0:(a-f)/Fe;if(isNaN(_e)||(_e<=0&&Le>0?k?.():_e>0&&Le<=0&&A?.(),_e<1&&Le>=1?ae?.():_e>=1&&Le<1&&ee?.()),_e=Le,F){let v=K(J(a,f,ye,b));re&&!oe&&(Se=Math.max(Se,v),v=Se),ke=v,e.style.setProperty("--scroll-draw-progress",String(v));let D=ue==="reverse"?1-v:v;e.style.clipPath=Ce(D),p?.(v),!_&&J(a,f,ye,b)>0&&(_=true,E?.()),v>=1&&!R?(R=true,g?.(),Ie<(T==="infinite"?1/0:T??0)&&(Ie++,Ne=setTimeout(()=>{Se=-1,_=false,R=false,e.style.clipPath=Ce(0);},X))):v<1&&!re&&(R=false),q=requestAnimationFrame(Xe);return}if(V.forEach((v,D)=>{let me=D*z*Fe,h=K(J(a,f+me,ye+me,b));re&&!oe&&(h=Z[D]=Math.max(Z[D]??Se,h)),ke=h,v.style.strokeDashoffset=ue==="reverse"?`${O[D]*h}`:`${O[D]*(1-h)}`,m&&(v.style.opacity=ue==="reverse"?`${1-h}`:`${h}`),Ee&&le?v.style.stroke=We(Ee,le,h):le&&(v.style.stroke=le),ce!==null&&G!==null?v.style.strokeWidth=`${ce+(G-ce)*h}`:G!==null&&(v.style.strokeWidth=`${G}`),pe!==null&&Q!==null?v.style.fillOpacity=`${pe+(Q-pe)*h}`:Q!==null&&(v.style.fillOpacity=`${Q}`),x&&v.tagName.toLowerCase()==="path"&&i[D]&&v.setAttribute("d",it(i[D],x,h)),D===0&&(p?.(h),e.style.setProperty("--scroll-draw-progress",String(h))),h<1&&(Oe=false);}),w){let v=K(J(a,f,ye,b));for(let D in w){let me=parseFloat(D);v>=me&&!Re.has(me)&&(Re.add(me),w[D]?.());}}!_&&J(a,f,ye,b)>0&&(_=true,E?.()),Oe&&!R?(R=true,g?.(),Ie<(T==="infinite"?1/0:T??0)&&(Ie++,Ne=setTimeout(()=>{Se=-1,Z=[],_=false,R=false,Re.clear(),Ye(),He=true;},X))):!Oe&&!re&&(R=false),q=requestAnimationFrame(Xe);}let ot=false;function Ke(){ot||(ot=true,q=requestAnimationFrame(function(){Xe();}));}function Qe(){ot=false,cancelAnimationFrame(q);}let st=new IntersectionObserver(o=>{o.forEach(a=>{Ae=a.isIntersecting,Ae&&!j?(He=true,Ke()):Qe();});},{root:ve??null,threshold:C,rootMargin:P});function yt(){V.forEach((o,a)=>{O[a]=qe(o),o.style.strokeDasharray=`${O[a]}`;}),dt(),He=true;}let Ze;function Be(){clearTimeout(Ze),Ze=setTimeout(yt,150);}window.addEventListener("resize",Be),window.addEventListener("orientationchange",Be);let Ge;return typeof ResizeObserver<"u"&&(Ge=new ResizeObserver(()=>Be()),Ge.observe(document.body),Ge.observe(document.documentElement),Ge.observe(e)),Y>0?setTimeout(()=>st.observe(e),Y):st.observe(e),nt({destroy(){cancelAnimationFrame(q),clearTimeout(Ne),Qe(),st.disconnect(),Ge?.disconnect(),window.removeEventListener("resize",Be),window.removeEventListener("orientationchange",Be),clearTimeout(Ze),ct();},replay(){Se=-1,Z=[],De=-1,Ue=-1,_=false,R=false,Ie=0,j=false,ke=0,Re.clear(),clearTimeout(Ne),Ye(),He=true,Ae&&Ke();},pause(){j=true,Qe();},resume(){j&&(j=false,He=true,Ae&&Ke());},seek(o){let a=Math.min(1,Math.max(0,o));ke=a,Se=a,Z=[],j=true,Qe(),Yt(a,L),He=true;},getProgress(){return ke},refresh(){clearTimeout(Ze),yt(),Ae&&!j&&Ke();}},()=>({tStart:f,tEnd:ye}))}var Ct=new WeakMap,cr=0;function at(e){return JSON.stringify(e,(n,r)=>{if(typeof r=="function")return "\u0192";if(typeof Element<"u"&&r instanceof Element){let t=Ct.get(r);return t===void 0&&Ct.set(r,t=++cr),`el#${t}`}return r})}function kt(e,n){let r={...e};for(let t of Object.keys(r))typeof r[t]=="function"&&(r[t]=(...l)=>n()[t]?.(...l));return r}function ur(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Ot(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let l=[],s=[],c=t[2].trim();if(c)for(let u of c.split(/[\s,]+/)){let m=u.match(/^([-+]?[\d.eE]+)(.*)$/);l.push(m?parseFloat(m[1]):0),s.push(m?m[2]:"");}n.push({fn:t[1],nums:l,units:s});}return n}function mr(e,n,r){let t=Ot(e),l=Ot(n);return t.length===0||t.length!==l.length?r<1?e:n:t.map((s,c)=>{let u=l[c];return s.fn!==u.fn||s.nums.length!==u.nums.length?r<1?`${s.fn}(${s.nums.map((m,d)=>`${m}${s.units[d]}`).join(", ")})`:`${u.fn}(${u.nums.map((m,d)=>`${m}${u.units[d]}`).join(", ")})`:`${s.fn}(${s.nums.map((m,d)=>`${m+(u.nums[d]-m)*r}${s.units[d]}`).join(", ")})`}).join(" ")}function It(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),l=String(n);if(ur(t))return We(t,l,r);if(t.includes("("))return mr(t,l,r);let s=t.match(/^([-+]?[\d.]+)(.*)$/),c=l.match(/^([-+]?[\d.]+)(.*)$/);if(s&&c){let u=parseFloat(s[1]),m=parseFloat(c[1]);return `${u+(m-u)*r}${s[2]||c[2]}`}return r<1?t:l}function fr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var pr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),dr=0,Ft="--scroll-draw-progress";function gr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function Dt(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:l={},easing:s="ease-out",speed:c=1,once:u=false,axis:m="y",scrollContainer:d,native:S=true,velocityScale:z=false,respectReducedMotion:L=true,triggerElement:re,onProgress:Me,onComplete:B,onEnter:ne,onLeave:oe,onEnterBack:Y,onLeaveBack:M}=n,N=L&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,$=typeof s=="function"?s:te[s]??te["ease-out"],w=de(l.start??"top bottom"),I=de(l.end??"bottom top"),C=re??e,P=typeof d=="string"?document.querySelector(d):d??null,T=Object.entries(t).map(([i,f])=>({prop:fr(i),from:Array.isArray(f)?f[0]:"",to:Array.isArray(f)?f[1]:f}));function X(){let i=window.getComputedStyle(e);for(let f of T)f.from===""&&(f.from=i.getPropertyValue(f.prop).trim()||"0");}function x(){for(let i of T)e.style.setProperty(i.prop,String(i.to));}let fe=new Map;for(let i of [...T.map(f=>f.prop),Ft])fe.set(i,e.style.getPropertyValue(i));function be(){for(let[i,f]of fe)f?e.style.setProperty(i,f):e.style.removeProperty(i);}if(N)return x(),B?.(),{...r,destroy:be,getProgress:()=>1};X();let se=typeof s=="string"?et(s):null;function ie(){if(!S||!gr()||!se||m!=="y"||P||C!==e||u||c!==1||Me||B||ne||oe||Y||M||z!==false||(l.start??"top bottom").trim()!=="top bottom"||(l.end??"bottom top").trim()!=="bottom top")return false;for(let i of T)if(!pr.has(i.prop))return false;return true}function p(){let i=`ssd-a-${++dr}`,f=T.map(Z=>`${Z.prop}:${Z.from}`).join(";"),ye=T.map(Z=>`${Z.prop}:${Z.to}`).join(";"),R=document.createElement("style");R.setAttribute("data-ssd-animate",""),R.textContent=`@keyframes ${i}{from{${f}}to{${ye}}}.${i}{animation-name:${i};animation-duration:auto;animation-timing-function:${se};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(R),e.classList.add(i);let _=()=>m==="x"?window.scrollX:window.scrollY,q=()=>m==="x"?window.innerWidth:window.innerHeight,Ae=()=>{let Z=e.getBoundingClientRect();return xe({top:Z.top,height:Z.height},_(),q(),w,I)};$e(e,{type:"animate",getProgress:()=>Se.getProgress(),getTrigger:Ae});let Se={destroy(){e.classList.remove(i),R.remove(),e.style.animationPlayState="",be(),Pe(e);},replay(){e.classList.remove(i),e.offsetWidth,e.classList.add(i);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(Z){let De=Math.min(1,Math.max(0,Z));e.classList.remove(i);for(let j of T)e.style.setProperty(j.prop,It(j.from,j.to,De));},getProgress(){let{tStart:Z,tEnd:De}=Ae();return $(J(_(),Z,De,c))}};return Se}if(ie())return p();let E=0,g=0,k=0,ae=false,ee=false,A=-1,F=0,K=false,we=NaN,Ve=-1,ve=0,Ee=()=>P?m==="x"?P.scrollLeft:P.scrollTop:m==="x"?window.scrollX:window.scrollY,le=()=>P?m==="x"?P.clientWidth:P.clientHeight:m==="x"?window.innerWidth:window.innerHeight;function ce(){let i=Je(C,P,m),f=xe(i,i.scroll,le(),w,I);E=f.tStart,g=f.tEnd;}function G(i){e.style.setProperty(Ft,String(i));for(let f of T)e.style.setProperty(f.prop,It(f.from,f.to,i));Me?.(i);}function pe(i){if(isNaN(we)){we=i;return}we<=0&&i>0?ne?.():we>0&&i<=0&&M?.(),we<1&&i>=1?oe?.():we>=1&&i<1&&Y?.(),we=i;}function Q(){if(!ae||ee)return;let i=performance.now(),f=Ee(),ye=c;if(z!==false){let q=i-ve,Ae=q>0?Math.abs(f-(Ve<0?f:Ve))/q:0;ye=c*Math.max(.2,1+Ae*(typeof z=="number"?z:1)*.04);}Ve=f,ve=i;let R=g===E?0:(f-E)/(g-E);pe(R);let _=$(J(f,E,g,ye));u&&(A=Math.max(A,_),_=A),F=_,G(_),_>=1&&!K?(K=true,B?.()):_<1&&!u&&(K=false),k=requestAnimationFrame(Q);}ce(),g===E&&ge("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 i=$(J(Ee(),E,g,c));u&&i>0&&(A=i),F=i,G(i);}let Ce=new IntersectionObserver(i=>{i.forEach(f=>{ae=f.isIntersecting,ae&&!ee?k=requestAnimationFrame(Q):cancelAnimationFrame(k);});},{root:P??null}),V;function O(){clearTimeout(V),V=setTimeout(ce,150);}return window.addEventListener("resize",O),window.addEventListener("orientationchange",O),Ce.observe(e),$e(e,{type:"animate",getProgress:()=>F,getTrigger:()=>({tStart:E,tEnd:g})}),{destroy(){cancelAnimationFrame(k),Ce.disconnect(),window.removeEventListener("resize",O),window.removeEventListener("orientationchange",O),clearTimeout(V),be(),Pe(e);},replay(){A=-1,K=false,F=0,ee=false,G(0);},pause(){ee=true,cancelAnimationFrame(k);},resume(){ee&&(ee=false,ae&&(k=requestAnimationFrame(Q)));},seek(i){let f=Math.min(1,Math.max(0,i));F=f,A=f,ee=true,cancelAnimationFrame(k),G(f);},getProgress(){return F}}}var lt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Nt(e,n){if(typeof window>"u")return lt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return ge("scrollCounter: element not found:",e),lt;let t=r,{from:l=0,to:s,format:c,easing:u="ease-out",trigger:m={},once:d=true,decimals:S,onComplete:z}=n,L=S!==void 0?p=>p.toFixed(S):c??(p=>String(Math.round(p))),re=typeof u=="function"?u:te[u]??te["ease-out"],Me=de(m.start??"top 80%"),B=de(m.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=L(s),z?.(),lt;let oe=0,Y=0,M=0,N=false,$=false,w=-1,I=0,C=false,P=()=>window.scrollY,T=()=>window.innerHeight;function X(){let p=t.getBoundingClientRect(),E=xe({top:p.top,height:p.height},P(),T(),Me,B);oe=E.tStart,Y=E.tEnd;}function x(p){t.textContent=L(l+(s-l)*p),t.style.setProperty("--scroll-draw-progress",String(p));}function fe(){if(!N||$)return;let p=re(J(P(),oe,Y,1));d&&(w=Math.max(w,p),p=w),I=p,x(p),p>=1&&!C?(C=true,z?.()):p<1&&!d&&(C=false),M=requestAnimationFrame(fe);}X();{let p=re(J(P(),oe,Y,1));d&&p>0&&(w=p),I=p,x(p);}let be=new IntersectionObserver(p=>{p.forEach(E=>{N=E.isIntersecting,N&&!$?M=requestAnimationFrame(fe):cancelAnimationFrame(M);});}),se;function ie(){clearTimeout(se),se=setTimeout(X,150);}return window.addEventListener("resize",ie),window.addEventListener("orientationchange",ie),be.observe(t),$e(t,{type:"counter",getProgress:()=>I,getTrigger:()=>({tStart:oe,tEnd:Y})}),{destroy(){cancelAnimationFrame(M),be.disconnect(),window.removeEventListener("resize",ie),window.removeEventListener("orientationchange",ie),clearTimeout(se),Pe(t);},replay(){w=-1,C=false,I=0,$=false,x(0);},pause(){$=true,cancelAnimationFrame(M);},resume(){$&&($=false,N&&(M=requestAnimationFrame(fe)));},seek(p){let E=Math.min(1,Math.max(0,p));I=E,w=E,$=true,cancelAnimationFrame(M),x(E);},getProgress(){return I}}}var Rt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Ht(e,n={}){if(typeof window>"u")return Rt;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return ge("scrollVideo: <video> element not found:",e),Rt;let t=r,{trigger:l={},easing:s="linear",once:c=false,axis:u="y",preload:m="auto",triggerElement:d,onReady:S,onComplete:z,onProgress:L}=n,re=d??t,Me=window.matchMedia("(prefers-reduced-motion: reduce)").matches,B=typeof s=="function"?s:te[s]??te.linear,ne=de(l.start??"top top"),oe=de(l.end??"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=m);let Y=n.from??0,M=n.to,N=0,$=0,w=0,I=false,C=false,P=-1,T=0,X=false,x=false,fe=()=>u==="x"?window.scrollX:window.scrollY,be=()=>u==="x"?window.innerWidth:window.innerHeight;function se(){let A=re.getBoundingClientRect(),F=u==="x"?A.left:A.top,K=u==="x"?A.width:A.height,we=xe({top:F,height:K},fe(),be(),ne,oe);N=we.tStart,$=we.tEnd,x&&$===N&&ge("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t);}let ie=NaN;function p(A){if(!x)return;let F=M??t.duration??0,K=Y+(F-Y)*A;K!==ie&&(ie=K,t.currentTime=K),t.style.setProperty("--scroll-draw-progress",String(A)),L?.(A);}function E(){if(!I||C||!x||Me)return;let A=B(J(fe(),N,$,1));c&&(P=Math.max(P,A),A=P),T=A,p(A),A>=1&&!X?(X=true,z?.()):A<1&&!c&&(X=false),w=requestAnimationFrame(E);}function g(){if(x=true,M===void 0&&(M=t.duration),Me){p(1),S?.();return}se(),S?.(),I&&!C&&(w=requestAnimationFrame(E));}t.readyState>=1?g():t.addEventListener("loadedmetadata",g,{once:true}),x||se();let k=new IntersectionObserver(A=>{A.forEach(F=>{I=F.isIntersecting,I&&!C&&x?w=requestAnimationFrame(E):cancelAnimationFrame(w);});}),ae;function ee(){clearTimeout(ae),ae=setTimeout(se,150);}return window.addEventListener("resize",ee),window.addEventListener("orientationchange",ee),k.observe(t),$e(t,{type:"video",getProgress:()=>T,getTrigger:()=>({tStart:N,tEnd:$})}),{destroy(){cancelAnimationFrame(w),k.disconnect(),t.removeEventListener("loadedmetadata",g),window.removeEventListener("resize",ee),window.removeEventListener("orientationchange",ee),clearTimeout(ae),Pe(t);},replay(){P=-1,X=false,T=0,C=false,ie=NaN,p(0);},pause(){C=true,cancelAnimationFrame(w);},resume(){C&&(C=false,I&&x&&(w=requestAnimationFrame(E)));},seek(A){let F=Math.min(1,Math.max(0,A));T=F,P=F,C=true,cancelAnimationFrame(w),ie=NaN,p(F);},getProgress(){return T}}}function _t(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 yr(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 zt(e){let n=_t(e),r=new Map;for(let s of n){let c=s.offsetTop;r.has(c)||r.set(c,[]),r.get(c).push(s);}let t=[],l=Array.from(r.keys()).sort((s,c)=>s-c);for(let s of l){let c=r.get(s),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block",c.forEach((m,d)=>{let S=m.nextElementSibling;u.appendChild(m),d<c.length-1&&S&&S.style.whiteSpace==="pre"&&u.appendChild(S);}),t.push(u);}return e.textContent="",t.forEach((s,c)=>{e.appendChild(s),c<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function hr(e,n,r,t){if(r<=1||t===0)return e;let l=(r-1)*t,s=n*t,c=s+(1-l);return c<=s?e>=s?1:0:Math.min(1,Math.max(0,(e-s)/(c-s)))}function br(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 Vt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function qt(e,n={}){if(typeof window>"u")return Vt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return ge("scrollText: element not found:",e),Vt;let t=r,{split:l="words",stagger:s=.04,easing:c="ease-out",from:u={opacity:0,y:24},trigger:m={},once:d=true,onComplete:S}=n,z=window.matchMedia("(prefers-reduced-motion: reduce)").matches,L=typeof c=="function"?c:te[c]??te["ease-out"],re=de(m.start??"top 85%"),Me=de(m.end??"top 40%"),B=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let ne;l==="chars"?ne=yr(t):l==="lines"?ne=zt(t):ne=_t(t);let oe=ne.length;function Y(g,k){u?.opacity!==void 0&&(g.style.opacity=String(u.opacity+(1-u.opacity)*k));let ae=br(k,u);ae&&(g.style.transform=ae);}function M(g){t.style.setProperty("--scroll-draw-progress",String(g)),ne.forEach((k,ae)=>{let ee=L(hr(g,ae,oe,s));Y(k,ee);});}if(z)return M(1),S?.(),{destroy(){t.innerHTML=B,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};M(0);let N=0,$=0,w=0,I=false,C=false,P=-1,T=0,X=false,x=()=>window.scrollY,fe=()=>window.innerHeight;function be(){let g=t.getBoundingClientRect(),k=xe({top:g.top,height:g.height},x(),fe(),re,Me);N=k.tStart,$=k.tEnd;}function se(){if(!I||C)return;let g=J(x(),N,$,1);d&&(P=Math.max(P,g),g=P),T=g,M(g),g>=1&&!X?(X=true,S?.()):g<1&&!d&&(X=false),w=requestAnimationFrame(se);}be();let ie=new IntersectionObserver(g=>{g.forEach(k=>{I=k.isIntersecting,I&&!C?w=requestAnimationFrame(se):cancelAnimationFrame(w);});}),p;function E(){clearTimeout(p),p=setTimeout(()=>{if(l==="lines"){let g=T;t.innerHTML=B,t.setAttribute("aria-label",t.textContent??""),ne=zt(t),M(g);}be();},150);}return window.addEventListener("resize",E),window.addEventListener("orientationchange",E),ie.observe(t),$e(t,{type:"text",getProgress:()=>T,getTrigger:()=>({tStart:N,tEnd:$})}),{destroy(){cancelAnimationFrame(w),ie.disconnect(),window.removeEventListener("resize",E),window.removeEventListener("orientationchange",E),clearTimeout(p),t.innerHTML=B,t.removeAttribute("aria-label"),Pe(t);},replay(){P=-1,X=false,T=0,C=false,M(0);},pause(){C=true,cancelAnimationFrame(w);},resume(){C&&(C=false,I&&(w=requestAnimationFrame(se)));},seek(g){let k=Math.min(1,Math.max(0,g));T=k,P=k,C=true,cancelAnimationFrame(w),M(k);},getProgress(){return T}}}var ze=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=at(r),this.instance=this.create(n,kt(r,()=>this.latest)),this}update(n){return this.el?at(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}},Wt=class extends ze{constructor(){super(Pt);}init(n,r={}){return super.init(n,r)}},Bt=class extends ze{constructor(){super(Dt);}},Gt=class extends ze{constructor(){super(Nt);}},jt=class extends ze{constructor(){super(Ht);}init(n,r={}){return super.init(n,r)}},Ut=class extends ze{constructor(){super(qt);}init(n,r={}){return super.init(n,r)}};exports.EngineRef=ze;exports.ScrollAnimateRef=Bt;exports.ScrollCounterRef=Gt;exports.ScrollDrawRef=Wt;exports.ScrollTextRef=Ut;exports.ScrollVideoRef=jt;
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
+ <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 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;
@@ -1,6 +1,6 @@
1
- import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-DHU1zNEw.mjs';
2
- import { S as ScrollAnimateOptions } from '../engine-Ci08nM91.mjs';
3
- import { S as ScrollCounterOptions } from '../index-BDGQEK6X.mjs';
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
 
@@ -1,6 +1,6 @@
1
- import { S as ScrollDrawInstance, a as ScrollDrawOptions } from '../types-DHU1zNEw.js';
2
- import { S as ScrollAnimateOptions } from '../engine-6AXEX8CL.js';
3
- import { S as ScrollCounterOptions } from '../index-DxjUOIbK.js';
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
 
@@ -1 +1 @@
1
- import {a,b}from'../chunk-XSVTHCLO.mjs';import {a as a$3}from'../chunk-TIRZOSQ4.mjs';import {a as a$4}from'../chunk-SNCRC6BA.mjs';import {a as a$2}from'../chunk-4MH5SQTH.mjs';import {a as a$1}from'../chunk-QJ4H2HW3.mjs';import {b as b$1}from'../chunk-LINFV2GK.mjs';import'../chunk-OJFWQ6CU.mjs';import'../chunk-YWKPTYSG.mjs';import'../chunk-YZV4Z3EQ.mjs';import'../chunk-PEFR3ZB7.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};
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};
@@ -1,3 +1,3 @@
1
- 'use strict';function qt({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),l=Math.sqrt(t),s=0,c=[];for(let d=0;d<r;d++){let v=Math.pow(l,d);c.push(v),s+=v;}let u=[0],m=0;for(let d=0;d<r;d++)m+=c[d]/s,u.push(m);return d=>{if(d<=0)return 0;if(d>=1)return 1;for(let v=0;v<r;v++)if(d<=u[v+1]){let _=(d-u[v])/(u[v+1]-u[v]);if(v===0)return _*(2-_);let T=1-Math.pow(t,v);return T+(1-T)*(2*_-1)*(2*_-1)}return 1}}function Wt({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),l=r<=1?t/4:t/(2*Math.PI)*Math.asin(1/r);return s=>s<=0?0:s>=1?1:r*Math.pow(2,-10*s)*Math.sin((s-l)*(2*Math.PI)/t)+1}var le={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:qt(),elastic:Wt()};function ht(e,n,r){return Math.min(r,Math.max(n,e))}function we(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 bt(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 wt(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 Z(e,n,r,t){return r===n?0:ht((e-n)/(r-n)*t,0,1)}function Le(e,n,r,t,l){let s=bt(e.top,e.height,n,t.element)-wt(t.viewport,r),c=bt(e.top,e.height,n,l.element)-wt(l.viewport,r);return {tStart:s,tEnd:c}}function Ke(e,n,r){let t=e.getBoundingClientRect(),l=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:l,scroll:0}:{top:r==="x"?t.left:t.top,height:l,scroll:r==="x"?window.scrollX:window.scrollY}}function Ve(e){let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),t=parseFloat(e.getAttribute("height")??"0");return 2*(r+t)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function vt(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 qe(e,n,r){let t=vt(e),l=vt(n);return !t||!l?e:`rgb(${Math.round(t[0]+(l[0]-t[0])*r)},${Math.round(t[1]+(l[1]-t[1])*r)},${Math.round(t[2]+(l[2]-t[2])*r)})`}var St={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 Ge=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function K(e,...n){Ge&&console.warn(`[svg-scroll-draw] ${e}`,...n);}var Bt="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Gt="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Et=33;function jt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function Ut(e){let n=[];for(let r=0;r<Et;r++){let t=r/(Et-1);n.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${n.join(",")})`}function et(e){switch(e){case "linear":return "linear";case "ease-in":return Bt;case "ease-out":return Gt;case "ease-in-out":return jt()?Ut(le["ease-in-out"]):null;default:return null}}var Tt=Symbol.for("svg-scroll-draw.registry");function xt(){let e=globalThis;return e[Tt]||(e[Tt]=new Map)}function ke(e,n){xt().set(e,n);}function Ie(e){xt().delete(e);}var Yt=0;function Xt(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function At(e,n){let r="";try{r=getComputedStyle(e).getPropertyValue(n).trim();}catch{}return r||(e.getAttribute(n)??"").trim()}var Mt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function Jt(e){if(!Ge)return;let n=At(e,"stroke");if(!n||n==="none"){K("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!Mt.has(r)&&!Mt.has(At(e,"fill"))&&K("Element has a fill \u2014 it may obscure the stroke animation.",e);}function Qt(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 l(){let s=r==="x"?window.scrollX:window.scrollY,c=e-s,u=n-s,m=r==="x";t.innerHTML=`
2
- <div style="position:absolute;${m?`left:${c}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${c}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
3
- <div style="position:absolute;${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",l,{passive:true}),l(),{el:t,destroy(){window.removeEventListener("scroll",l),t.remove();}}}var $t=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,Lt=/[MmLlHhVvCcSsQqTtAaZz]/g;function Zt(e,n,r){if(!Ge)return;let t=(e.match(Lt)??[]).join("").toUpperCase(),l=(n.match(Lt)??[]).join("").toUpperCase(),s=(e.match($t)??[]).length,c=(n.match($t)??[]).length;if(t!==l){K(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${l||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,r);return}s!==c&&K(`morphTo: coordinate count differs (${s} \u2192 ${c}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function at(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),l=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let c=parseFloat(s),u=t[l++]??c;return String(+(c+(u-c)*r).toFixed(4))})}function tt(e,n={}){if(typeof window>"u")return {destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};let{preset:r,...t}=n,l=r?{...St[r],...t}:t,s=window.matchMedia("(prefers-reduced-motion: reduce)").matches,{selector:c="path, polyline, line, polygon, rect, circle",speed:u=1,fade:m=false,easing:d="linear",trigger:v={},stagger:_=0,direction:T="forward",once:ne=false,debug:Oe=false,axis:U="y",scrollContainer:oe,autoReverse:se=false,delay:ee=0,strokeColor:x,strokeWidth:W,fillOpacity:C,waypoints:A,velocityScale:R=false,threshold:B=0,rootMargin:P="0px",repeat:M=0,repeatDelay:ce=0,morphTo:D,clip:fe,autoplay:ve=false,duration:pe=1e3,native:Se=true,onProgress:g,onStart:S,onComplete:y,onEnter:L,onLeave:de,onEnterBack:ge,onLeaveBack:Ce}=l,te=fe===true?"left":typeof fe=="string"?fe:false,ye=typeof d=="function"?d:le[d]??le.linear,xe=we(v.start??"top bottom"),_e=we(v.end??"bottom top"),ue=typeof oe=="string"?document.querySelector(oe):oe??null,me=Array.isArray(x)?x[0]:null,Y=Array.isArray(x)?x[1]:typeof x=="string"?x:null,X=Array.isArray(W)?W[0]:null,z=Array.isArray(W)?W[1]:typeof W=="number"?W:null,re=Array.isArray(C)?C[0]:null,G=Array.isArray(C)?C[1]:typeof C=="number"?C:null;function Ae(o){let a=o*100;switch(te){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 O=te?[]:Array.from(e.querySelectorAll(c)),E=[],i=[],f=0,ie=0,k=false,F=false,N=0,Ee=false,he=-1,j=[],Fe=-1,V=false,Me=0,Pe=0,Re,rt=null;function ct(){rt?.destroy(),rt=null;}let Ne=new Set,ut=NaN,He=true,Ue=-1,mt=performance.now(),ze=NaN;function nt(){return ue?U==="x"?ue.scrollLeft:ue.scrollTop:U==="x"?window.scrollX:window.scrollY}function ft(){return ue?U==="x"?ue.clientWidth:ue.clientHeight:U==="x"?window.innerWidth:window.innerHeight}function pt(){let o=Ke(e,ue,U);return Le(o,o.scroll,ft(),xe,_e)}function dt(){(({tStart:f,tEnd:ie}=pt())),Oe&&Ge&&(ct(),rt=Qt(f,ie,U));}function ot(o,a=pt){ke(e,{type:"draw",getProgress:()=>o.getProgress(),getTrigger:a});let b=o.destroy;return o.destroy=()=>{b.call(o),Ie(e);},o}function Ht(o,a){if(e.style.setProperty("--scroll-draw-progress",String(o)),te){let b=a==="reverse"?1-o:o;e.style.clipPath=Ae(b);return}O.forEach((b,J)=>{b.style.strokeDashoffset=a==="reverse"?`${E[J]*o}`:`${E[J]*(1-o)}`,m&&(b.style.opacity=a==="reverse"?`${1-o}`:`${o}`),me&&Y?b.style.stroke=qe(me,Y,o):Y&&(b.style.stroke=Y),X!==null&&z!==null?b.style.strokeWidth=`${X+(z-X)*o}`:z!==null&&(b.style.strokeWidth=`${z}`),re!==null&&G!==null?b.style.fillOpacity=`${re+(G-re)*o}`:G!==null&&(b.style.fillOpacity=`${G}`),D&&b.tagName.toLowerCase()==="path"&&i[J]&&b.setAttribute("d",at(i[J],D,o));});}function Ye(){if(e.style.setProperty("--scroll-draw-progress","0"),te){e.style.clipPath=Ae(0);return}O.forEach((o,a)=>{o.style.strokeDasharray=`${E[a]}`,o.style.strokeDashoffset=T==="reverse"?"0":`${E[a]}`,m?o.style.opacity=T==="reverse"?"1":"0":o.style.opacity="",me&&(o.style.stroke=me),X!==null&&(o.style.strokeWidth=`${X}`),re!==null&&(o.style.fillOpacity=`${re}`),D&&o.tagName.toLowerCase()==="path"&&i[a]&&o.setAttribute("d",i[a]);});}if(O.forEach(o=>{Jt(o);let a=Ve(o);E.push(a);let b=o.tagName.toLowerCase()==="path";b?i.push(o.getAttribute("d")??""):i.push(""),D&&(b?Zt(i[i.length-1],D,o):K(`morphTo only applies to <path> elements \u2014 ignored on <${o.tagName}>.`,o)),s?(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=T==="reverse"?`${a}`:"0",m&&(o.style.opacity="1"),Y&&(o.style.stroke=Y),z!==null&&(o.style.strokeWidth=`${z}`),G!==null&&(o.style.fillOpacity=`${G}`),D&&o.tagName.toLowerCase()==="path"&&o.setAttribute("d",D)):(o.style.strokeDasharray=`${a}`,o.style.strokeDashoffset=T==="reverse"?"0":`${a}`,m?o.style.opacity=T==="reverse"?"1":"0":o.style.opacity="",me&&(o.style.stroke=me),X!==null&&(o.style.strokeWidth=`${X}`),re!==null&&(o.style.fillOpacity=`${re}`));}),te){if(s)return e.style.clipPath=Ae(1),y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};e.style.clipPath=Ae(0);}else if(s)return y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};let gt=typeof d=="string"?et(d):null;function _t(){return !(Se===false||!Xt()||!O.length||!gt||te||U!=="y"||ue||u!==1||_!==0||ne||se||R!==false||D||A||M||ee>0||g||S||y||L||de||ge||Ce||x!=null||W!=null||C!=null||(v.start??"top bottom").trim()!=="top bottom"||(v.end??"bottom top").trim()!=="bottom top")}function zt(){let o=++Yt,a=`svg-scroll-draw-${o}`,b=`svg-scroll-draw-host-${o}`,J=`--svg-scroll-draw-${o}`,De=T==="reverse"?"0":"var(--ssd-len)",$e=T==="reverse"?"var(--ssd-len)":"0",Te=`stroke-dashoffset:${De};`,w=`stroke-dashoffset:${$e};`;m&&(Te+=`opacity:${T==="reverse"?1:0};`,w+=`opacity:${T==="reverse"?0:1};`);let $=document.createElement("style");$.setAttribute("data-svg-scroll-draw",""),$.textContent=`@keyframes ${a}{from{${Te}}to{${w}}}.${b}{view-timeline-name:${J};view-timeline-axis:block;}.${a}{animation-name:${a};animation-duration:auto;animation-timing-function:${gt};animation-fill-mode:both;animation-timeline:${J};animation-range:cover 0% cover 100%;}`,document.head.appendChild($),e.classList.add(b);function Q(p,q){p.style.setProperty("--ssd-len",String(E[q])),p.style.strokeDasharray=`${E[q]}`,p.style.strokeDashoffset="",p.style.opacity="",p.style.animationPlayState="",p.classList.add(a);}O.forEach(Q);let h=false,I=-1;function H(){if(I>=0)return I;let p=e.getBoundingClientRect(),{tStart:q,tEnd:be}=Le({top:p.top,height:p.height},nt(),ft(),xe,_e);return ye(Z(nt(),q,be,u))}return {destroy(){e.classList.remove(b),O.forEach(p=>{p.classList.remove(a),p.style.removeProperty("--ssd-len"),p.style.animationPlayState="";}),$.remove();},replay(){h=false,I=-1,O.forEach(Q);},pause(){h=true,O.forEach(p=>{p.style.animationPlayState="paused";});},resume(){h&&(h=false,O.forEach(p=>{p.style.animationPlayState="running";}));},seek(p){let q=Math.min(1,Math.max(0,p));I=q,h=true,O.forEach((be,ae)=>{be.classList.remove(a),be.style.strokeDashoffset=T==="reverse"?`${E[ae]*q}`:`${E[ae]*(1-q)}`,m&&(be.style.opacity=T==="reverse"?`${1-q}`:`${q}`);});},getProgress(){return H()},refresh(){O.forEach((p,q)=>{E[q]=Ve(p),p.style.setProperty("--ssd-len",String(E[q])),p.style.strokeDasharray=`${E[q]}`;});}}}if(_t())return ot(zt());function Vt(){let o=Math.max(1,pe),a=0,b=0,J=false;function De(h){let I=true;if(te){let H=Math.min(1,Math.max(0,h/o)),p=ye(H);Me=p,e.style.setProperty("--scroll-draw-progress",String(p)),e.style.clipPath=Ae(T==="reverse"?1-p:p),g?.(p),H<1&&(I=false);}else O.forEach((H,p)=>{let q=p*_*o,be=Math.min(1,Math.max(0,(h-q)/o)),ae=ye(be);H.style.strokeDashoffset=T==="reverse"?`${E[p]*ae}`:`${E[p]*(1-ae)}`,m&&(H.style.opacity=T==="reverse"?`${1-ae}`:`${ae}`),me&&Y?H.style.stroke=qe(me,Y,ae):Y&&(H.style.stroke=Y),X!==null&&z!==null?H.style.strokeWidth=`${X+(z-X)*ae}`:z!==null&&(H.style.strokeWidth=`${z}`),re!==null&&G!==null?H.style.fillOpacity=`${re+(G-re)*ae}`:G!==null&&(H.style.fillOpacity=`${G}`),D&&H.tagName.toLowerCase()==="path"&&i[p]&&H.setAttribute("d",at(i[p],D,ae)),p===0&&(Me=ae,g?.(ae),e.style.setProperty("--scroll-draw-progress",String(ae))),be<1&&(I=false);});if(A){let H=Math.min(1,Math.max(0,h/o)),p=ye(H);for(let q in A){let be=parseFloat(q);p>=be&&!Ne.has(be)&&(Ne.add(be),A[q]?.());}}return I}function $e(h){if(V)return;let I=h-a;F||(F=true,S?.());let H=De(I);if(H&&!k){k=true,De(o*(1+Math.max(0,O.length-1)*_)),y?.(),Pe<(M==="infinite"?1/0:M??0)&&(Pe++,Re=setTimeout(()=>{a=performance.now(),F=false,k=false,Ne.clear(),Ye(),N=requestAnimationFrame($e);},ce));return}H||(N=requestAnimationFrame($e));}function Te(){cancelAnimationFrame(N),clearTimeout(Re),a=performance.now(),b=0,V=false,F=false,k=false,Pe=0,J=true,Me=0,Ne.clear(),Ye(),N=requestAnimationFrame($e);}let w=new IntersectionObserver(h=>{h.forEach(I=>{I.isIntersecting&&!(ne&&k)?Te():!I.isIntersecting&&!ne&&!k&&(cancelAnimationFrame(N),clearTimeout(Re),J=false);});},{root:ue??null,threshold:B,rootMargin:P}),$;function Q(){clearTimeout($),$=setTimeout(()=>{O.forEach((h,I)=>{E[I]=Ve(h),h.style.strokeDasharray=`${E[I]}`;});},150);}return window.addEventListener("resize",Q),window.addEventListener("orientationchange",Q),ee>0?setTimeout(()=>w.observe(e),ee):w.observe(e),{destroy(){cancelAnimationFrame(N),clearTimeout(Re),w.disconnect(),window.removeEventListener("resize",Q),window.removeEventListener("orientationchange",Q),clearTimeout($);},replay(){Pe=0,Te();},pause(){V||!J||(V=true,b=performance.now()-a,cancelAnimationFrame(N));},resume(){V&&(V=false,J=true,a=performance.now()-b,N=requestAnimationFrame($e));},seek(h){let I=Math.min(1,Math.max(0,h));Me=I,V=true,b=I*o,a=performance.now()-b,cancelAnimationFrame(N),De(b);},getProgress(){return Me},refresh(){clearTimeout($),O.forEach((h,I)=>{E[I]=Ve(h),h.style.strokeDasharray=`${E[I]}`;});}}}if(ve)return ot(Vt());dt();function Xe(){if(!Ee||V)return;let o=performance.now(),a=nt();if(!He&&R===false&&a===ut){N=requestAnimationFrame(Xe);return}He=false,ut=a;let b=u;if(R!==false){let w=o-mt,$=w>0?Math.abs(a-(Ue<0?a:Ue))/w:0;b=u*Math.max(.2,1+$*(typeof R=="number"?R:1)*.04);}Ue=a,mt=o;let J=se?Fe===-1||a>=Fe?"forward":"reverse":T;Fe=a;let De=ie-f,$e=true,Te=De===0?0:(a-f)/De;if(isNaN(ze)||(ze<=0&&Te>0?L?.():ze>0&&Te<=0&&Ce?.(),ze<1&&Te>=1?de?.():ze>=1&&Te<1&&ge?.()),ze=Te,te){let w=ye(Z(a,f,ie,b));ne&&!se&&(he=Math.max(he,w),w=he),Me=w,e.style.setProperty("--scroll-draw-progress",String(w));let $=J==="reverse"?1-w:w;e.style.clipPath=Ae($),g?.(w),!F&&Z(a,f,ie,b)>0&&(F=true,S?.()),w>=1&&!k?(k=true,y?.(),Pe<(M==="infinite"?1/0:M??0)&&(Pe++,Re=setTimeout(()=>{he=-1,F=false,k=false,e.style.clipPath=Ae(0);},ce))):w<1&&!ne&&(k=false),N=requestAnimationFrame(Xe);return}if(O.forEach((w,$)=>{let Q=$*_*De,h=ye(Z(a,f+Q,ie+Q,b));ne&&!se&&(h=j[$]=Math.max(j[$]??he,h)),Me=h,w.style.strokeDashoffset=J==="reverse"?`${E[$]*h}`:`${E[$]*(1-h)}`,m&&(w.style.opacity=J==="reverse"?`${1-h}`:`${h}`),me&&Y?w.style.stroke=qe(me,Y,h):Y&&(w.style.stroke=Y),X!==null&&z!==null?w.style.strokeWidth=`${X+(z-X)*h}`:z!==null&&(w.style.strokeWidth=`${z}`),re!==null&&G!==null?w.style.fillOpacity=`${re+(G-re)*h}`:G!==null&&(w.style.fillOpacity=`${G}`),D&&w.tagName.toLowerCase()==="path"&&i[$]&&w.setAttribute("d",at(i[$],D,h)),$===0&&(g?.(h),e.style.setProperty("--scroll-draw-progress",String(h))),h<1&&($e=false);}),A){let w=ye(Z(a,f,ie,b));for(let $ in A){let Q=parseFloat($);w>=Q&&!Ne.has(Q)&&(Ne.add(Q),A[$]?.());}}!F&&Z(a,f,ie,b)>0&&(F=true,S?.()),$e&&!k?(k=true,y?.(),Pe<(M==="infinite"?1/0:M??0)&&(Pe++,Re=setTimeout(()=>{he=-1,j=[],F=false,k=false,Ne.clear(),Ye(),He=true;},ce))):!$e&&!ne&&(k=false),N=requestAnimationFrame(Xe);}let st=false;function Je(){st||(st=true,N=requestAnimationFrame(function(){Xe();}));}function Qe(){st=false,cancelAnimationFrame(N);}let it=new IntersectionObserver(o=>{o.forEach(a=>{Ee=a.isIntersecting,Ee&&!V?(He=true,Je()):Qe();});},{root:ue??null,threshold:B,rootMargin:P});function yt(){O.forEach((o,a)=>{E[a]=Ve(o),o.style.strokeDasharray=`${E[a]}`;}),dt(),He=true;}let Ze;function We(){clearTimeout(Ze),Ze=setTimeout(yt,150);}window.addEventListener("resize",We),window.addEventListener("orientationchange",We);let Be;return typeof ResizeObserver<"u"&&(Be=new ResizeObserver(()=>We()),Be.observe(document.body),Be.observe(document.documentElement),Be.observe(e)),ee>0?setTimeout(()=>it.observe(e),ee):it.observe(e),ot({destroy(){cancelAnimationFrame(N),clearTimeout(Re),Qe(),it.disconnect(),Be?.disconnect(),window.removeEventListener("resize",We),window.removeEventListener("orientationchange",We),clearTimeout(Ze),ct();},replay(){he=-1,j=[],Fe=-1,Ue=-1,F=false,k=false,Pe=0,V=false,Me=0,Ne.clear(),clearTimeout(Re),Ye(),He=true,Ee&&Je();},pause(){V=true,Qe();},resume(){V&&(V=false,He=true,Ee&&Je());},seek(o){let a=Math.min(1,Math.max(0,o));Me=a,he=a,j=[],V=true,Qe(),Ht(a,T),He=true;},getProgress(){return Me},refresh(){clearTimeout(Ze),yt(),Ee&&!V&&Je();}},()=>({tStart:f,tEnd:ie}))}function Kt(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Ct(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let l=[],s=[],c=t[2].trim();if(c)for(let u of c.split(/[\s,]+/)){let m=u.match(/^([-+]?[\d.eE]+)(.*)$/);l.push(m?parseFloat(m[1]):0),s.push(m?m[2]:"");}n.push({fn:t[1],nums:l,units:s});}return n}function er(e,n,r){let t=Ct(e),l=Ct(n);return t.length===0||t.length!==l.length?r<1?e:n:t.map((s,c)=>{let u=l[c];return s.fn!==u.fn||s.nums.length!==u.nums.length?r<1?`${s.fn}(${s.nums.map((m,d)=>`${m}${s.units[d]}`).join(", ")})`:`${u.fn}(${u.nums.map((m,d)=>`${m}${u.units[d]}`).join(", ")})`:`${s.fn}(${s.nums.map((m,d)=>`${m+(u.nums[d]-m)*r}${s.units[d]}`).join(", ")})`}).join(" ")}function Pt(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),l=String(n);if(Kt(t))return qe(t,l,r);if(t.includes("("))return er(t,l,r);let s=t.match(/^([-+]?[\d.]+)(.*)$/),c=l.match(/^([-+]?[\d.]+)(.*)$/);if(s&&c){let u=parseFloat(s[1]),m=parseFloat(c[1]);return `${u+(m-u)*r}${s[2]||c[2]}`}return r<1?t:l}function tr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var rr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),nr=0,Dt="--scroll-draw-progress";function or(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}function kt(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let{props:t,trigger:l={},easing:s="ease-out",speed:c=1,once:u=false,axis:m="y",scrollContainer:d,native:v=true,velocityScale:_=false,respectReducedMotion:T=true,triggerElement:ne,onProgress:Oe,onComplete:U,onEnter:oe,onLeave:se,onEnterBack:ee,onLeaveBack:x}=n,W=T&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,C=typeof s=="function"?s:le[s]??le["ease-out"],A=we(l.start??"top bottom"),R=we(l.end??"bottom top"),B=ne??e,P=typeof d=="string"?document.querySelector(d):d??null,M=Object.entries(t).map(([i,f])=>({prop:tr(i),from:Array.isArray(f)?f[0]:"",to:Array.isArray(f)?f[1]:f}));function ce(){let i=window.getComputedStyle(e);for(let f of M)f.from===""&&(f.from=i.getPropertyValue(f.prop).trim()||"0");}function D(){for(let i of M)e.style.setProperty(i.prop,String(i.to));}let fe=new Map;for(let i of [...M.map(f=>f.prop),Dt])fe.set(i,e.style.getPropertyValue(i));function ve(){for(let[i,f]of fe)f?e.style.setProperty(i,f):e.style.removeProperty(i);}if(W)return D(),U?.(),{...r,destroy:ve,getProgress:()=>1};ce();let pe=typeof s=="string"?et(s):null;function Se(){if(!v||!or()||!pe||m!=="y"||P||B!==e||u||c!==1||Oe||U||oe||se||ee||x||_!==false||(l.start??"top bottom").trim()!=="top bottom"||(l.end??"bottom top").trim()!=="bottom top")return false;for(let i of M)if(!rr.has(i.prop))return false;return true}function g(){let i=`ssd-a-${++nr}`,f=M.map(j=>`${j.prop}:${j.from}`).join(";"),ie=M.map(j=>`${j.prop}:${j.to}`).join(";"),k=document.createElement("style");k.setAttribute("data-ssd-animate",""),k.textContent=`@keyframes ${i}{from{${f}}to{${ie}}}.${i}{animation-name:${i};animation-duration:auto;animation-timing-function:${pe};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(k),e.classList.add(i);let F=()=>m==="x"?window.scrollX:window.scrollY,N=()=>m==="x"?window.innerWidth:window.innerHeight,Ee=()=>{let j=e.getBoundingClientRect();return Le({top:j.top,height:j.height},F(),N(),A,R)};ke(e,{type:"animate",getProgress:()=>he.getProgress(),getTrigger:Ee});let he={destroy(){e.classList.remove(i),k.remove(),e.style.animationPlayState="",ve(),Ie(e);},replay(){e.classList.remove(i),e.offsetWidth,e.classList.add(i);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(j){let Fe=Math.min(1,Math.max(0,j));e.classList.remove(i);for(let V of M)e.style.setProperty(V.prop,Pt(V.from,V.to,Fe));},getProgress(){let{tStart:j,tEnd:Fe}=Ee();return C(Z(F(),j,Fe,c))}};return he}if(Se())return g();let S=0,y=0,L=0,de=false,ge=false,Ce=-1,te=0,ye=false,xe=NaN,_e=-1,ue=0,me=()=>P?m==="x"?P.scrollLeft:P.scrollTop:m==="x"?window.scrollX:window.scrollY,Y=()=>P?m==="x"?P.clientWidth:P.clientHeight:m==="x"?window.innerWidth:window.innerHeight;function X(){let i=Ke(B,P,m),f=Le(i,i.scroll,Y(),A,R);S=f.tStart,y=f.tEnd;}function z(i){e.style.setProperty(Dt,String(i));for(let f of M)e.style.setProperty(f.prop,Pt(f.from,f.to,i));Oe?.(i);}function re(i){if(isNaN(xe)){xe=i;return}xe<=0&&i>0?oe?.():xe>0&&i<=0&&x?.(),xe<1&&i>=1?se?.():xe>=1&&i<1&&ee?.(),xe=i;}function G(){if(!de||ge)return;let i=performance.now(),f=me(),ie=c;if(_!==false){let N=i-ue,Ee=N>0?Math.abs(f-(_e<0?f:_e))/N:0;ie=c*Math.max(.2,1+Ee*(typeof _=="number"?_:1)*.04);}_e=f,ue=i;let k=y===S?0:(f-S)/(y-S);re(k);let F=C(Z(f,S,y,ie));u&&(Ce=Math.max(Ce,F),F=Ce),te=F,z(F),F>=1&&!ye?(ye=true,U?.()):F<1&&!u&&(ye=false),L=requestAnimationFrame(G);}X(),y===S&&K("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 i=C(Z(me(),S,y,c));u&&i>0&&(Ce=i),te=i,z(i);}let Ae=new IntersectionObserver(i=>{i.forEach(f=>{de=f.isIntersecting,de&&!ge?L=requestAnimationFrame(G):cancelAnimationFrame(L);});},{root:P??null}),O;function E(){clearTimeout(O),O=setTimeout(X,150);}return window.addEventListener("resize",E),window.addEventListener("orientationchange",E),Ae.observe(e),ke(e,{type:"animate",getProgress:()=>te,getTrigger:()=>({tStart:S,tEnd:y})}),{destroy(){cancelAnimationFrame(L),Ae.disconnect(),window.removeEventListener("resize",E),window.removeEventListener("orientationchange",E),clearTimeout(O),ve(),Ie(e);},replay(){Ce=-1,ye=false,te=0,ge=false,z(0);},pause(){ge=true,cancelAnimationFrame(L);},resume(){ge&&(ge=false,de&&(L=requestAnimationFrame(G)));},seek(i){let f=Math.min(1,Math.max(0,i));te=f,Ce=f,ge=true,cancelAnimationFrame(L),z(f);},getProgress(){return te}}}var lt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function It(e,n){if(typeof window>"u")return lt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return K("scrollCounter: element not found:",e),lt;let t=r,{from:l=0,to:s,format:c,easing:u="ease-out",trigger:m={},once:d=true,decimals:v,onComplete:_}=n,T=v!==void 0?g=>g.toFixed(v):c??(g=>String(Math.round(g))),ne=typeof u=="function"?u:le[u]??le["ease-out"],Oe=we(m.start??"top 80%"),U=we(m.end??"top 20%");if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t.textContent=T(s),_?.(),lt;let se=0,ee=0,x=0,W=false,C=false,A=-1,R=0,B=false,P=()=>window.scrollY,M=()=>window.innerHeight;function ce(){let g=t.getBoundingClientRect(),S=Le({top:g.top,height:g.height},P(),M(),Oe,U);se=S.tStart,ee=S.tEnd;}function D(g){t.textContent=T(l+(s-l)*g),t.style.setProperty("--scroll-draw-progress",String(g));}function fe(){if(!W||C)return;let g=ne(Z(P(),se,ee,1));d&&(A=Math.max(A,g),g=A),R=g,D(g),g>=1&&!B?(B=true,_?.()):g<1&&!d&&(B=false),x=requestAnimationFrame(fe);}ce();{let g=ne(Z(P(),se,ee,1));d&&g>0&&(A=g),R=g,D(g);}let ve=new IntersectionObserver(g=>{g.forEach(S=>{W=S.isIntersecting,W&&!C?x=requestAnimationFrame(fe):cancelAnimationFrame(x);});}),pe;function Se(){clearTimeout(pe),pe=setTimeout(ce,150);}return window.addEventListener("resize",Se),window.addEventListener("orientationchange",Se),ve.observe(t),ke(t,{type:"counter",getProgress:()=>R,getTrigger:()=>({tStart:se,tEnd:ee})}),{destroy(){cancelAnimationFrame(x),ve.disconnect(),window.removeEventListener("resize",Se),window.removeEventListener("orientationchange",Se),clearTimeout(pe),Ie(t);},replay(){A=-1,B=false,R=0,C=false,D(0);},pause(){C=true,cancelAnimationFrame(x);},resume(){C&&(C=false,W&&(x=requestAnimationFrame(fe)));},seek(g){let S=Math.min(1,Math.max(0,g));R=S,A=S,C=true,cancelAnimationFrame(x),D(S);},getProgress(){return R}}}function Rt(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 sr(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 Ot(e){let n=Rt(e),r=new Map;for(let s of n){let c=s.offsetTop;r.has(c)||r.set(c,[]),r.get(c).push(s);}let t=[],l=Array.from(r.keys()).sort((s,c)=>s-c);for(let s of l){let c=r.get(s),u=document.createElement("span");u.setAttribute("aria-hidden","true"),u.style.display="inline-block",c.forEach((m,d)=>{let v=m.nextElementSibling;u.appendChild(m),d<c.length-1&&v&&v.style.whiteSpace==="pre"&&u.appendChild(v);}),t.push(u);}return e.textContent="",t.forEach((s,c)=>{e.appendChild(s),c<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function ir(e,n,r,t){if(r<=1||t===0)return e;let l=(r-1)*t,s=n*t,c=s+(1-l);return c<=s?e>=s?1:0:Math.min(1,Math.max(0,(e-s)/(c-s)))}function ar(e,n){let r=[];if(n?.y!==void 0&&r.push(`translateY(${n.y*(1-e)}px)`),n?.x!==void 0&&r.push(`translateX(${n.x*(1-e)}px)`),n?.rotate!==void 0&&r.push(`rotate(${n.rotate*(1-e)}deg)`),n?.scale!==void 0){let t=n.scale+(1-n.scale)*e;r.push(`scale(${t})`);}return r.join(" ")||""}var Ft={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Nt(e,n={}){if(typeof window>"u")return Ft;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return K("scrollText: element not found:",e),Ft;let t=r,{split:l="words",stagger:s=.04,easing:c="ease-out",from:u={opacity:0,y:24},trigger:m={},once:d=true,onComplete:v}=n,_=window.matchMedia("(prefers-reduced-motion: reduce)").matches,T=typeof c=="function"?c:le[c]??le["ease-out"],ne=we(m.start??"top 85%"),Oe=we(m.end??"top 40%"),U=t.innerHTML;t.setAttribute("aria-label",t.textContent??"");let oe;l==="chars"?oe=sr(t):l==="lines"?oe=Ot(t):oe=Rt(t);let se=oe.length;function ee(y,L){u?.opacity!==void 0&&(y.style.opacity=String(u.opacity+(1-u.opacity)*L));let de=ar(L,u);de&&(y.style.transform=de);}function x(y){t.style.setProperty("--scroll-draw-progress",String(y)),oe.forEach((L,de)=>{let ge=T(ir(y,de,se,s));ee(L,ge);});}if(_)return x(1),v?.(),{destroy(){t.innerHTML=U,t.removeAttribute("aria-label");},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};x(0);let W=0,C=0,A=0,R=false,B=false,P=-1,M=0,ce=false,D=()=>window.scrollY,fe=()=>window.innerHeight;function ve(){let y=t.getBoundingClientRect(),L=Le({top:y.top,height:y.height},D(),fe(),ne,Oe);W=L.tStart,C=L.tEnd;}function pe(){if(!R||B)return;let y=Z(D(),W,C,1);d&&(P=Math.max(P,y),y=P),M=y,x(y),y>=1&&!ce?(ce=true,v?.()):y<1&&!d&&(ce=false),A=requestAnimationFrame(pe);}ve();let Se=new IntersectionObserver(y=>{y.forEach(L=>{R=L.isIntersecting,R&&!B?A=requestAnimationFrame(pe):cancelAnimationFrame(A);});}),g;function S(){clearTimeout(g),g=setTimeout(()=>{if(l==="lines"){let y=M;t.innerHTML=U,t.setAttribute("aria-label",t.textContent??""),oe=Ot(t),x(y);}ve();},150);}return window.addEventListener("resize",S),window.addEventListener("orientationchange",S),Se.observe(t),ke(t,{type:"text",getProgress:()=>M,getTrigger:()=>({tStart:W,tEnd:C})}),{destroy(){cancelAnimationFrame(A),Se.disconnect(),window.removeEventListener("resize",S),window.removeEventListener("orientationchange",S),clearTimeout(g),t.innerHTML=U,t.removeAttribute("aria-label"),Ie(t);},replay(){P=-1,ce=false,M=0,B=false,x(0);},pause(){B=true,cancelAnimationFrame(A);},resume(){B&&(B=false,R&&(A=requestAnimationFrame(pe)));},seek(y){let L=Math.min(1,Math.max(0,y));M=L,P=L,B=true,cancelAnimationFrame(A),x(L);},getProgress(){return M}}}function lr(e,n){let r={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};if(typeof window>"u")return r;let t=typeof e=="string"?document.querySelector(e):e;return t?tt(t,n):(K("Container not found:",e),r)}function je(){return typeof document>"u"?null:document}function cr(e=je()){return e?Array.from(e.querySelectorAll("[data-scroll-draw]")).map(n=>{let r={};try{let t=n.dataset.scrollDrawOptions??n.dataset.scrollDrawoptions??"";t&&(r=JSON.parse(t));}catch{}return tt(n,r)}):[]}function ur(e=je()){return e?Array.from(e.querySelectorAll("[data-scroll-animate]")).map(n=>{let r={props:{}};try{let t=n.dataset.scrollAnimateOptions??"";t&&(r=JSON.parse(t));}catch{}return kt(n,r)}):[]}function mr(e=je()){return e?Array.from(e.querySelectorAll("[data-scroll-counter]")).map(n=>{let r={};try{let t=n.dataset.scrollCounterOptions??"";t&&(r=JSON.parse(t));}catch{}return !r.to&&r.to!==0&&(K('initScrollCounter: element missing "to" in options JSON:',n),r.to=0),It(n,r)}):[]}function fr(e=je()){return e?Array.from(e.querySelectorAll("[data-scroll-text]")).map(n=>{let r={};try{let t=n.dataset.scrollTextOptions??"";t&&(r=JSON.parse(t));}catch{}return Nt(n,r)}):[]}function ln(e=je()){return {draw:cr(e),animate:ur(e),counter:mr(e),text:fr(e)}}exports.initAll=ln;exports.initScrollAnimate=ur;exports.initScrollCounter=mr;exports.initScrollDraw=cr;exports.initScrollText=fr;exports.scrollDraw=lr;
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
+ <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 _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;
@@ -1,6 +1,6 @@
1
- import { S as ScrollDrawInstance } from '../types-DHU1zNEw.mjs';
2
- export { a as ScrollDrawOptions } from '../types-DHU1zNEw.mjs';
3
- export { s as scrollDraw } from '../scroll-draw-CNlq4Z_L.mjs';
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.
@@ -39,12 +39,13 @@ declare function initScrollAnimate(root?: Element | Document | null): ScrollDraw
39
39
  /**
40
40
  * Auto-initialises all [data-scroll-counter] elements on the page.
41
41
  * Options are read from the data-scroll-counter-options JSON attribute.
42
- * The `to` value is required — pass it via JSON options.
42
+ * The `to` value is required — pass it via JSON options. `format` is a function,
43
+ * so it cannot come from JSON: use `decimals`, or call scrollCounter() yourself.
43
44
  *
44
45
  * @example
45
46
  * <span
46
47
  * data-scroll-counter
47
- * data-scroll-counter-options='{"to":1250000,"format":"$%d","once":true}'
48
+ * data-scroll-counter-options='{"to":1250000,"decimals":0,"once":true}'
48
49
  * />
49
50
  *
50
51
  * <script>
@@ -1,6 +1,6 @@
1
- import { S as ScrollDrawInstance } from '../types-DHU1zNEw.js';
2
- export { a as ScrollDrawOptions } from '../types-DHU1zNEw.js';
3
- export { s as scrollDraw } from '../scroll-draw-BlJfbTDv.js';
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.
@@ -39,12 +39,13 @@ declare function initScrollAnimate(root?: Element | Document | null): ScrollDraw
39
39
  /**
40
40
  * Auto-initialises all [data-scroll-counter] elements on the page.
41
41
  * Options are read from the data-scroll-counter-options JSON attribute.
42
- * The `to` value is required — pass it via JSON options.
42
+ * The `to` value is required — pass it via JSON options. `format` is a function,
43
+ * so it cannot come from JSON: use `decimals`, or call scrollCounter() yourself.
43
44
  *
44
45
  * @example
45
46
  * <span
46
47
  * data-scroll-counter
47
- * data-scroll-counter-options='{"to":1250000,"format":"$%d","once":true}'
48
+ * data-scroll-counter-options='{"to":1250000,"decimals":0,"once":true}'
48
49
  * />
49
50
  *
50
51
  * <script>
@@ -1 +1 @@
1
- export{a as scrollDraw}from'../chunk-DIMNQPW5.mjs';import {a as a$2}from'../chunk-SNCRC6BA.mjs';import {a as a$1}from'../chunk-4MH5SQTH.mjs';import {a}from'../chunk-QJ4H2HW3.mjs';import {b}from'../chunk-LINFV2GK.mjs';import'../chunk-OJFWQ6CU.mjs';import'../chunk-YWKPTYSG.mjs';import'../chunk-YZV4Z3EQ.mjs';import'../chunk-PEFR3ZB7.mjs';import'../chunk-DM6EDKWH.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-BCV4RAIX.mjs';import {b as b$1}from'../chunk-LFSU6LR3.mjs';function o(){return typeof document>"u"?null:document}function p(t=o()){return t?Array.from(t.querySelectorAll("[data-scroll-draw]")).map(n=>{let r={};try{let e=n.dataset.scrollDrawOptions??n.dataset.scrollDrawoptions??"";e&&(r=JSON.parse(e));}catch{}return b(n,r)}):[]}function u(t=o()){return t?Array.from(t.querySelectorAll("[data-scroll-animate]")).map(n=>{let r={props:{}};try{let e=n.dataset.scrollAnimateOptions??"";e&&(r=JSON.parse(e));}catch{}return a(n,r)}):[]}function S(t=o()){return t?Array.from(t.querySelectorAll("[data-scroll-counter]")).map(n=>{let r={};try{let e=n.dataset.scrollCounterOptions??"";e&&(r=JSON.parse(e));}catch{}return !r.to&&r.to!==0&&(b$1('initScrollCounter: element missing "to" in options JSON:',n),r.to=0),a$1(n,r)}):[]}function f(t=o()){return t?Array.from(t.querySelectorAll("[data-scroll-text]")).map(n=>{let r={};try{let e=n.dataset.scrollTextOptions??"";e&&(r=JSON.parse(e));}catch{}return a$2(n,r)}):[]}function x(t=o()){return {draw:p(t),animate:u(t),counter:S(t),text:f(t)}}export{x as initAll,u as initScrollAnimate,S as initScrollCounter,p as initScrollDraw,f as initScrollText};
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};