svg-scroll-draw 2.24.0 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -284,25 +284,68 @@ For the pinned-film pattern, put the canvas in a `position: sticky` stage and po
284
284
 
285
285
  #### React
286
286
 
287
- There is no component; call it from an effect and return its `destroy`:
288
-
289
287
  ```tsx
290
- import { useEffect, useRef } from 'react';
291
- import { scrollFrames } from 'svg-scroll-draw/frames';
288
+ 'use client';
289
+ import { useRef } from 'react';
290
+ import { ScrollFrames } from 'svg-scroll-draw/react';
292
291
 
293
292
  export function Film() {
294
- const ref = useRef<HTMLCanvasElement>(null);
295
- useEffect(() => {
296
- const film = scrollFrames(ref.current!, {
297
- frames: (i) => `/film/${String(i + 1).padStart(4, '0')}.jpg`,
298
- count: 120,
299
- });
300
- return () => film.destroy();
301
- }, []);
302
- return <canvas ref={ref} role="img" aria-label="The headphones turning" style={{ width: '100%', height: '100vh' }} />;
293
+ const track = useRef<HTMLElement>(null);
294
+ return (
295
+ <section ref={track} style={{ height: '400vh' }}>
296
+ <div style={{ position: 'sticky', top: 0, height: '100vh' }}>
297
+ <ScrollFrames
298
+ frames={(i) => `/film/${String(i + 1).padStart(4, '0')}.jpg`}
299
+ count={120}
300
+ triggerElement={track}
301
+ trigger={{ start: 'top top', end: 'bottom bottom' }}
302
+ aria-label="The headphones turning"
303
+ style={{ width: '100%', height: '100%' }}
304
+ />
305
+ </div>
306
+ </section>
307
+ );
303
308
  }
304
309
  ```
305
310
 
311
+ `<ScrollFrames>` renders a `<canvas role="img">`. Every scrollFrames option is a prop, and `className`, `style`, `id`, `role`, `title` and `aria-*` / `data-*` go on the canvas. Pass an `aria-label` saying what the film shows (it warns in development without one, unless the canvas is `aria-hidden` or `role="presentation"`). `triggerElement` takes an element or a ref, read when the film starts, so the track can be an ancestor in the same component. The 'use client' line is only needed because `frames` is a function; the entry itself is marked `"use client"`.
312
+
313
+ The film is rebuilt only when an option that needs it changes: a `frames` function is compared by the URLs it gives, so an inline `frames={(i) => …}` re-created on every render keeps the film and its loaded images, and new URLs (or a new `count`, `fit`, `trigger`…) start a new one. Callbacks are read live: a new `onProgress` takes effect without a rebuild. A `style` prop leaves alone the inline size the library holds on a canvas sized by its attributes, as React writes only the style keys that changed.
314
+
315
+ #### Vue
316
+
317
+ ```vue
318
+ <script setup>
319
+ import { ScrollFrames } from 'svg-scroll-draw/vue';
320
+ </script>
321
+
322
+ <template>
323
+ <section id="track" style="height: 400vh">
324
+ <div style="position: sticky; top: 0; height: 100vh">
325
+ <ScrollFrames
326
+ :frames="(i) => `/film/${String(i + 1).padStart(4, '0')}.jpg`"
327
+ :count="120"
328
+ trigger-element="#track"
329
+ :trigger="{ start: 'top top', end: 'bottom bottom' }"
330
+ aria-label="The headphones turning"
331
+ :style="{ width: '100%', height: '100%' }"
332
+ />
333
+ </div>
334
+ </section>
335
+ </template>
336
+ ```
337
+
338
+ The same component as React's, with the same rebuild and live-callback rules: every option is a prop, `class`, `style` and `aria-label` fall through to the `<canvas role="img">`, and `trigger-element` also takes a selector, looked up when the film starts. Pass a `style` that changes as an object: Vue rewrites a changed style string whole. The composable binds to a canvas of your own, its options a getter or a ref to keep them live:
339
+
340
+ ```ts
341
+ import { useScrollFrames } from 'svg-scroll-draw/vue';
342
+
343
+ const film = useScrollFrames(() => ({ frames: (i) => `/film/${i + 1}.jpg`, count: count.value }));
344
+ // <canvas :ref="film" role="img" aria-label="The headphones turning" />
345
+ ```
346
+
347
+ Nuxt exports both, and `createScrollDrawPlugin()` registers `<ScrollFrames>` globally.
348
+
306
349
  #### scrollFrames options
307
350
 
308
351
  | Option | Type | Default | Description |
@@ -701,8 +744,8 @@ devtools.highlight('#my-element'); // outline for 2 seconds
701
744
  | Import | Contents |
702
745
  |---|---|
703
746
  | `svg-scroll-draw` | `scrollDraw`, `scrollAnimate`, `scrollCounter`, `scrollParallax`, `PRESETS`, easing factories |
704
- | `svg-scroll-draw/react` | `ScrollDraw`, `ScrollAnimate`, `ScrollCounter`, `ScrollVideo`, `ScrollText`, `useScrollDrawProgress` |
705
- | `svg-scroll-draw/vue` | `ScrollDraw`, `useScrollDraw` · **v2:** `ScrollAnimate`, `ScrollCounter`, `ScrollVideo`, `ScrollText`, `useScrollAnimate`, `useScrollCounter`, `useScrollVideo`, `useScrollText` |
747
+ | `svg-scroll-draw/react` | `ScrollDraw`, `ScrollAnimate`, `ScrollCounter`, `ScrollVideo`, `ScrollFrames`, `ScrollText`, `useScrollDrawProgress` |
748
+ | `svg-scroll-draw/vue` | `ScrollDraw`, `useScrollDraw` · **v2:** `ScrollAnimate`, `ScrollCounter`, `ScrollVideo`, `ScrollFrames`, `ScrollText`, `useScrollAnimate`, `useScrollCounter`, `useScrollVideo`, `useScrollFrames`, `useScrollText` |
706
749
  | `svg-scroll-draw/svelte` | `scrollDraw` action, `createScrollDraw` · **v2:** `scrollAnimate`, `scrollCounterAction`, `scrollVideoAction`, `scrollTextAction`, `createScrollAnimate`, `createScrollCounter`, `createScrollVideo`, `createScrollText` |
707
750
  | `svg-scroll-draw/solid` | `useScrollDraw`, `createScrollDraw` · **v2:** `useScrollAnimate`, `useScrollCounter`, `useScrollVideo`, `useScrollText`, `createScrollAnimate`, `createScrollCounter`, `createScrollVideo`, `createScrollText` |
708
751
  | `svg-scroll-draw/angular` | `ScrollDrawRef` · **v2:** `ScrollAnimateRef`, `ScrollCounterRef`, `ScrollVideoRef`, `ScrollTextRef` |
@@ -730,8 +773,8 @@ devtools.highlight('#my-element'); // outline for 2 seconds
730
773
  | Entry | Gzipped |
731
774
  |---|---|
732
775
  | `svg-scroll-draw` (main, every core API) | 11.5 KB |
733
- | `svg-scroll-draw/react` (includes the engine) | 12.8 KB |
734
- | `svg-scroll-draw` + `svg-scroll-draw/react` (together; the engine ships once) | 14.4 KB |
776
+ | `svg-scroll-draw/react` (includes the engine) | 14.9 KB |
777
+ | `svg-scroll-draw` + `svg-scroll-draw/react` (together; the engine ships once) | 16.6 KB |
735
778
  | `svg-scroll-draw/reveal` | 5.7 KB |
736
779
  | `svg-scroll-draw/text` | 3.5 KB |
737
780
  | `svg-scroll-draw/video` | 2.9 KB |
@@ -0,0 +1 @@
1
+ import {a}from'./chunk-XSVTHCLO.mjs';import {b}from'./chunk-LFSU6LR3.mjs';var u=1e4;function h(t){let{frames:r,count:n}=t;if(typeof r!="function")return a(t);let a$1=Number.isFinite(n)?Math.min(Math.max(Math.floor(n),0),u):0,e;try{e=Array.from({length:a$1},(f,l)=>r(l));}catch{e=["throws"];}return a({...t,frames:e})}function c(t){if(!t||t.getAttribute("aria-hidden")==="true")return;let r=t.getAttribute("role");r==="presentation"||r==="none"||t.getAttribute("aria-label")||t.getAttribute("aria-labelledby")||b('<ScrollFrames>: the canvas has no aria-label. Say what the frames show, or set aria-hidden="true" if they are decoration.',t);}export{h as a,c as b};
@@ -0,0 +1 @@
1
+ import {a,e,c,b as b$2}from'./chunk-NV6YTPHI.mjs';import {d}from'./chunk-THPTANES.mjs';import {a as a$1}from'./chunk-5PJEKEEP.mjs';import {a as a$2,b as b$1}from'./chunk-EBU6E26L.mjs';import {b}from'./chunk-LFSU6LR3.mjs';var k={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Oe(c){let f=c>1?[0,c-1]:[0],d=[[0,c-1]];for(let r=0;r<d.length;r++){let[l,h]=d[r];if(h-l<2)continue;let m=l+h>>1;f.push(m),d.push([l,m],[m,h]);}return f}function $e(c$1,f){if(typeof window>"u")return k;let d$1=typeof c$1=="string"?document.querySelector(c$1):c$1;if(!d$1||d$1.tagName.toLowerCase()!=="canvas")return b("scrollFrames: <canvas> element not found:",c$1),k;let r=d$1,{frames:l,trigger:h={},easing:m="linear",once:J=false,axis:A="y",fit:be="cover",triggerElement:ye,onReady:ve,onLoad:Me,onComplete:xe,onProgress:Ee}=f||{},p=Array.isArray(l)?l:null,K=f?.count,w=Math.floor(p?Math.min(K??p.length,p.length):K??NaN);if(!(p||typeof l=="function")||!Number.isFinite(w)||w<1)return b("scrollFrames: no frames. Pass `frames` as an array of URLs, or a function with a finite `count` of 1 or more.",r),k;let b$3=f.concurrency??6;(!Number.isFinite(b$3)||b$3<1)&&(b("scrollFrames: `concurrency` must be a finite number of 1 or more; using 6.",f.concurrency),b$3=6),b$3=Math.floor(b$3);let H=r.getContext("2d");if(!H)return b("scrollFrames: the canvas has no 2D context.",r),k;let y=w-1,Q=ye??r,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,Fe=typeof m=="function"?m:d[m]??d.linear,V=e=>{let t=Fe(e);return t===t?t:0},Se=a(h.start||"top top"),Re=a(h.end||"bottom top"),C=0,P=0,E=false,W=-1,T=0,v=0,L=false,a$3=false,Z=false,ee=false,$=0,D=-1,O=new Array(w),U=new Uint8Array(w),F=new Set,M=i?[y]:Oe(w),q=0,G=0,te=false,z=(e,...t)=>{if(e)try{e(...t);}catch(n){typeof reportError=="function"?reportError(n):setTimeout(()=>{throw n});}},ne=false,Ae=e=>{let t;try{t=p?p[e]:l(e);}catch(n){t=n;}return typeof t=="string"&&t?t:(ne||(ne=true,b(`scrollFrames: no URL for frame ${e}; it is skipped for its nearest neighbour.`,t)),null)},re=()=>A==="x"?window.scrollX:window.scrollY,Ce=()=>A==="x"?window.innerWidth:window.innerHeight;function _(){!te&&G===M.length&&(te=true,z(Me));}function B(){for(;!a$3&&F.size<b$3&&q<M.length;){let e=M[q++];U[e]||Pe(e);}}function Pe(e){U[e]=1;let t=Ae(e);if(t===null){G++,queueMicrotask(()=>{a$3||_();});return}let n=new Image,o=false,s=g=>{o||a$3||(o=true,n.onload=n.onerror=null,F.delete(n),g?O[e]=n:b("scrollFrames: a frame failed to load; its nearest neighbour shows instead:",t),G++,B(),I(),_());};F.add(n),n.decoding="async",n.onerror=()=>s(false),n.src=t,typeof n.decode=="function"?n.decode().then(()=>s(true),()=>{n.complete?s(n.naturalWidth>0):n.onload=()=>s(true);}):n.onload=()=>s(true);}function Te(e){for(let t=0;t<=y;t++){if(O[e-t])return e-t;if(O[e+t])return e+t}return -1}function X(){let e=r.clientWidth,t=r.clientHeight;if(!e||!t)return;let n=Math.min(window.devicePixelRatio||1,2),o=Math.round(e*n),s=Math.round(t*n);if(Math.abs(r.width-o)<=1&&Math.abs(r.height-s)<=1)return;r.width=o,r.height=s,D=-1;let g=r.clientWidth,R=r.clientHeight;if(g!==e||R!==t){let x=r.style;g!==e&&R!==t?(x.width=`${e}px`,x.height=`${t}px`):x.aspectRatio=`${e} / ${t}`;}}function I(){let e=Te($);if(e<0||e===D)return;let t=O[e],n=r.width,o=r.height,s=t.naturalWidth||n,g=t.naturalHeight||o,R=(be==="contain"?Math.min:Math.max)(n/s,o/g),x=s*R,fe=g*R;H.clearRect(0,0,n,o),H.drawImage(t,(n-x)/2,(o-fe)/2,x,fe),D=e,Z||(Z=true,z(ve));}function N(e){$=Math.min(y,Math.max(0,Math.round(e*y))),r.style.setProperty("--scroll-draw-progress",String(e)),I(),z(Ee,e,$);}function oe(){let e=Q.getBoundingClientRect(),t=A==="x"?e.left:e.top,n=A==="x"?e.width:e.height,o=c({top:t,height:n},re(),Ce(),Se,Re);C=o.tStart,P=o.tEnd,P===C&&n>0&&!i&&!ee&&(ee=true,b("scrollFrames: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r));}let se=()=>b$2(re(),C,P,1);function Le(){if(i)return;let e=se(),t=J?Math.max(W,V(T=Math.max(T,e))):V(e);v=t,N(t),t>=1&&!L?(L=true,z(xe)):t<1&&!J&&(L=false);}function ie(){v=1,N(1);}X(),i||oe();let S=e(window,[Q],se,Le,()=>{X(),i||oe(),I();}),ae=()=>S.hold(E||i);ae(),i&&ie(),B();let ce=typeof ResizeObserver=="function"?new ResizeObserver(()=>{X(),I();}):null;ce?.observe(r);let le=i?()=>{}:a$1(e=>{e&&(le(),i=true,S.hold(true),M=M.slice(0,q),U[y]||M.push(y),_(),ie(),B());});a$2(r,{type:"frames",getProgress:()=>v,getTrigger:()=>({tStart:C,tEnd:P})});function ue(){a$3||!E||(E=false,ae());}return {destroy(){if(!a$3){a$3=true,S.off(),ce?.disconnect(),le();for(let e of F)e.onload=e.onerror=null,e.src="";F.clear(),b$1(r);}},replay(){a$3||(W=-1,T=0,L=false,v=0,N(0),ue());},pause(){a$3||(E=true,S.hold(true));},resume:ue,seek(e){if(a$3)return;let t=Math.min(1,Math.max(0,e===e?e:0));v=t,W=t,T=0,E=true,S.hold(true),N(t);},getProgress(){return v}}}export{$e as a};
@@ -0,0 +1 @@
1
+ import {b,a as a$4}from'./chunk-22P4KBPG.mjs';import {a as a$6}from'./chunk-D2BHE4F2.mjs';import {a,b as b$1}from'./chunk-XSVTHCLO.mjs';import {a as a$3}from'./chunk-BRV2B2YW.mjs';import {a as a$5}from'./chunk-32ZCSGFZ.mjs';import {a as a$2}from'./chunk-U5TKLHGW.mjs';import {a as a$1}from'./chunk-7USW2XFB.mjs';import {b as b$2}from'./chunk-7XOFQCQE.mjs';import {b as b$3}from'./chunk-LFSU6LR3.mjs';import {defineComponent,ref,h,onMounted,watch,onUnmounted,unref}from'vue';var u=e=>typeof e=="function"?e():unref(e);function l(e,t,n,s=a){let o=null,i=t(),O=()=>{o?.destroy(),o=e.value?n(e.value,b$1(i,()=>i),i):null;};onMounted(O),watch(()=>s(i=t()),O),onUnmounted(()=>{o?.destroy(),o=null;});}function K(e={}){let t=ref(null);return l(t,()=>u(e),b$2),t}var C={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},H=[null,Boolean,[Boolean,String],[Boolean,Number]],y=e=>({type:e,default:void 0}),P=defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(C).map(([e,t])=>[e,t?y(H[t]):null])),setup(e,{slots:t}){let n=ref(null);return l(n,()=>{let s={};for(let o in C){let i=e[o];i!=null&&(s[o]=i);}return s},b$2),()=>h("div",{ref:n},t.default?.())}});function Y(e){let t=ref(null);return l(t,()=>u(e),a$1),t}var _=defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let n=ref(null);return l(n,()=>e.options,a$1),()=>h("div",{ref:n},t.default?.())}});function W(e){let t=ref(null);return l(t,()=>u(e),a$2),t}var U=defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:y(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=ref(null);return l(t,()=>{let n={to:e.to};return e.from!=null&&(n.from=e.from),e.format!=null&&(n.format=e.format),e.easing!=null&&(n.easing=e.easing),e.trigger!=null&&(n.trigger=e.trigger),e.once!=null&&(n.once=e.once),e.decimals!=null&&(n.decimals=e.decimals),e.onComplete!=null&&(n.onComplete=e.onComplete),n},a$2),()=>h("span",{ref:t})}});function $(e={}){let t=ref(null);return l(t,()=>u(e),a$3),t}var z=defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=ref(null);return l(t,()=>e.options??{},a$3),()=>h("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}}),F=(e,{triggerElement:t,...n},s)=>{let o=typeof t=="string"?document.querySelector(t):t;return typeof t=="string"&&!o&&b$3(`<ScrollFrames>: triggerElement "${t}" matches nothing; measuring the canvas.`),a$6(e,{...n,frames:s.frames,triggerElement:o??void 0})};function J(e){let t=ref(null);return l(t,()=>u(e),F,a$4),t}var M={frames:0,count:0,trigger:0,easing:0,once:1,axis:0,triggerElement:0,fit:0,concurrency:0,onReady:0,onLoad:0,onComplete:0,onProgress:0},Q=defineComponent({name:"ScrollFrames",props:Object.fromEntries(Object.entries(M).map(([e,t])=>[e,t?y(Boolean):e==="frames"?{required:true}:null])),setup(e){let t=ref(null);return l(t,()=>{let n={};for(let s in M){let o=e[s];o!=null&&(n[s]=o);}return n},F,a$4),onMounted(()=>b(t.value)),()=>h("canvas",{ref:t,role:"img"})}});function X(e={}){let t=ref(null);return l(t,()=>u(e),a$5),t}var Z=defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let n=ref(null);return l(n,()=>e.options??{},a$5),()=>h(e.tag,{ref:n},t.default?.())}});export{K as a,P as b,Y as c,_ as d,W as e,U as f,$ as g,z as h,J as i,Q as j,X as k,Z as l};
@@ -1 +1 @@
1
- import {a,e,c,b as b$2}from'../chunk-NV6YTPHI.mjs';import {d}from'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import {a as a$1}from'../chunk-5PJEKEEP.mjs';import {a as a$2,b as b$1}from'../chunk-EBU6E26L.mjs';import {b}from'../chunk-LFSU6LR3.mjs';var k={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Oe(c){let f=c>1?[0,c-1]:[0],d=[[0,c-1]];for(let r=0;r<d.length;r++){let[l,h]=d[r];if(h-l<2)continue;let m=l+h>>1;f.push(m),d.push([l,m],[m,h]);}return f}function $e(c$1,f){if(typeof window>"u")return k;let d$1=typeof c$1=="string"?document.querySelector(c$1):c$1;if(!d$1||d$1.tagName.toLowerCase()!=="canvas")return b("scrollFrames: <canvas> element not found:",c$1),k;let r=d$1,{frames:l,trigger:h={},easing:m="linear",once:J=false,axis:A="y",fit:be="cover",triggerElement:ye,onReady:ve,onLoad:Me,onComplete:xe,onProgress:Ee}=f||{},p=Array.isArray(l)?l:null,K=f?.count,w=Math.floor(p?Math.min(K??p.length,p.length):K??NaN);if(!(p||typeof l=="function")||!Number.isFinite(w)||w<1)return b("scrollFrames: no frames. Pass `frames` as an array of URLs, or a function with a finite `count` of 1 or more.",r),k;let b$3=f.concurrency??6;(!Number.isFinite(b$3)||b$3<1)&&(b("scrollFrames: `concurrency` must be a finite number of 1 or more; using 6.",f.concurrency),b$3=6),b$3=Math.floor(b$3);let H=r.getContext("2d");if(!H)return b("scrollFrames: the canvas has no 2D context.",r),k;let y=w-1,Q=ye??r,i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,Fe=typeof m=="function"?m:d[m]??d.linear,V=e=>{let t=Fe(e);return t===t?t:0},Se=a(h.start||"top top"),Re=a(h.end||"bottom top"),C=0,P=0,E=false,W=-1,T=0,v=0,L=false,a$3=false,Z=false,ee=false,$=0,D=-1,O=new Array(w),U=new Uint8Array(w),F=new Set,M=i?[y]:Oe(w),q=0,G=0,te=false,z=(e,...t)=>{if(e)try{e(...t);}catch(n){typeof reportError=="function"?reportError(n):setTimeout(()=>{throw n});}},ne=false,Ae=e=>{let t;try{t=p?p[e]:l(e);}catch(n){t=n;}return typeof t=="string"&&t?t:(ne||(ne=true,b(`scrollFrames: no URL for frame ${e}; it is skipped for its nearest neighbour.`,t)),null)},re=()=>A==="x"?window.scrollX:window.scrollY,Ce=()=>A==="x"?window.innerWidth:window.innerHeight;function _(){!te&&G===M.length&&(te=true,z(Me));}function B(){for(;!a$3&&F.size<b$3&&q<M.length;){let e=M[q++];U[e]||Pe(e);}}function Pe(e){U[e]=1;let t=Ae(e);if(t===null){G++,queueMicrotask(()=>{a$3||_();});return}let n=new Image,o=false,s=g=>{o||a$3||(o=true,n.onload=n.onerror=null,F.delete(n),g?O[e]=n:b("scrollFrames: a frame failed to load; its nearest neighbour shows instead:",t),G++,B(),I(),_());};F.add(n),n.decoding="async",n.onerror=()=>s(false),n.src=t,typeof n.decode=="function"?n.decode().then(()=>s(true),()=>{n.complete?s(n.naturalWidth>0):n.onload=()=>s(true);}):n.onload=()=>s(true);}function Te(e){for(let t=0;t<=y;t++){if(O[e-t])return e-t;if(O[e+t])return e+t}return -1}function X(){let e=r.clientWidth,t=r.clientHeight;if(!e||!t)return;let n=Math.min(window.devicePixelRatio||1,2),o=Math.round(e*n),s=Math.round(t*n);if(Math.abs(r.width-o)<=1&&Math.abs(r.height-s)<=1)return;r.width=o,r.height=s,D=-1;let g=r.clientWidth,R=r.clientHeight;if(g!==e||R!==t){let x=r.style;g!==e&&R!==t?(x.width=`${e}px`,x.height=`${t}px`):x.aspectRatio=`${e} / ${t}`;}}function I(){let e=Te($);if(e<0||e===D)return;let t=O[e],n=r.width,o=r.height,s=t.naturalWidth||n,g=t.naturalHeight||o,R=(be==="contain"?Math.min:Math.max)(n/s,o/g),x=s*R,fe=g*R;H.clearRect(0,0,n,o),H.drawImage(t,(n-x)/2,(o-fe)/2,x,fe),D=e,Z||(Z=true,z(ve));}function N(e){$=Math.min(y,Math.max(0,Math.round(e*y))),r.style.setProperty("--scroll-draw-progress",String(e)),I(),z(Ee,e,$);}function oe(){let e=Q.getBoundingClientRect(),t=A==="x"?e.left:e.top,n=A==="x"?e.width:e.height,o=c({top:t,height:n},re(),Ce(),Se,Re);C=o.tStart,P=o.tEnd,P===C&&n>0&&!i&&!ee&&(ee=true,b("scrollFrames: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r));}let se=()=>b$2(re(),C,P,1);function Le(){if(i)return;let e=se(),t=J?Math.max(W,V(T=Math.max(T,e))):V(e);v=t,N(t),t>=1&&!L?(L=true,z(xe)):t<1&&!J&&(L=false);}function ie(){v=1,N(1);}X(),i||oe();let S=e(window,[Q],se,Le,()=>{X(),i||oe(),I();}),ae=()=>S.hold(E||i);ae(),i&&ie(),B();let ce=typeof ResizeObserver=="function"?new ResizeObserver(()=>{X(),I();}):null;ce?.observe(r);let le=i?()=>{}:a$1(e=>{e&&(le(),i=true,S.hold(true),M=M.slice(0,q),U[y]||M.push(y),_(),ie(),B());});a$2(r,{type:"frames",getProgress:()=>v,getTrigger:()=>({tStart:C,tEnd:P})});function ue(){a$3||!E||(E=false,ae());}return {destroy(){if(!a$3){a$3=true,S.off(),ce?.disconnect(),le();for(let e of F)e.onload=e.onerror=null,e.src="";F.clear(),b$1(r);}},replay(){a$3||(W=-1,T=0,L=false,v=0,N(0),ue());},pause(){a$3||(E=true,S.hold(true));},resume:ue,seek(e){if(a$3)return;let t=Math.min(1,Math.max(0,e===e?e:0));v=t,W=t,T=0,E=true,S.hold(true),N(t);},getProgress(){return v}}}export{$e as scrollFrames};
1
+ export{a as scrollFrames}from'../chunk-D2BHE4F2.mjs';import'../chunk-NV6YTPHI.mjs';import'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';
@@ -1,3 +1,3 @@
1
- 'use strict';var vue=require('vue');function Ln({tension:e=2.5,friction:t=2.2}={}){return n=>1-Math.cos(n*Math.PI*e)*Math.pow(1-n,t)}function Cn({bounces:e=3,decay:t=.5}={}){let n=Math.max(1,Math.round(e)),r=Math.max(.01,Math.min(.99,t)),o=Math.sqrt(r),s=0,a=[];for(let p=0;p<n;p++){let g=Math.pow(o,p);a.push(g),s+=g;}let u=[0],f=0;for(let p=0;p<n;p++)f+=a[p]/s,u.push(f);return p=>{if(p<=0)return 0;if(p>=1)return 1;for(let g=0;g<n;g++)if(p<=u[g+1]){let x=(p-u[g])/(u[g+1]-u[g]);if(g===0)return x*(2-x);let y=1-Math.pow(r,g);return y+(1-y)*(2*x-1)*(2*x-1)}return 1}}function An({amplitude:e=1,period:t=.4}={}){let n=Math.max(1,e),r=Math.max(.1,t),o=n<=1?r/4:r/(2*Math.PI)*Math.asin(1/n);return s=>s<=0?0:s>=1?1:n*Math.pow(2,-10*s)*Math.sin((s-o)*(2*Math.PI)/r)+1}var ee={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:Ln(),bounce:Cn(),elastic:An()};function Qe(e,t,n){return Math.min(n,Math.max(t,e))}function ie(e="top bottom"){let t=e.trim();if(/^\d+(\.\d+)?%$/.test(t))return {element:"top",viewport:t};let[n="top",r="bottom"]=t.split(/\s+/).filter(Boolean);return {element:n,viewport:r}}var qt=(e,t)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:t;function zt(e,t,n,r){return e+n+t*qt(r,0)}function jt(e,t){return t*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:qt(e,1))}function z(e,t,n,r){return n===t?0:Qe((e-t)/(n-t)*r,0,1)}function we(e,t,n,r,o){let s=zt(e.top,e.height,t,r.element)-jt(r.viewport,n),a=zt(e.top,e.height,t,o.element)-jt(o.viewport,n);return {tStart:s,tEnd:a}}function ot(e,t,n){let r=e.getBoundingClientRect(),o=n==="x"?r.width:r.height;return t?{top:n==="x"?r.left-t.getBoundingClientRect().left-t.clientLeft+t.scrollLeft:r.top-t.getBoundingClientRect().top-t.clientTop+t.scrollTop,height:o,scroll:0}:{top:n==="x"?r.left:r.top,height:o,scroll:n==="x"?window.scrollX:window.scrollY}}function st(e){let t=parseFloat(e.getAttribute("pathLength")??"");if(t>0)return t;let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(r+o)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function Yt(e){let t=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(t)return [parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[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 r=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return r?[parseInt(r[1]),parseInt(r[2]),parseInt(r[3])]:null}function it(e,t,n){let r=Yt(e),o=Yt(t);return !r||!o?e:`rgb(${Math.round(r[0]+(o[0]-r[0])*n)},${Math.round(r[1]+(o[1]-r[1])*n)},${Math.round(r[2]+(o[2]-r[2])*n)})`}var Qt={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 ze=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function ae(e,...t){ze&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var Pn="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",On="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Ut=33;function kn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function $n(e){let t=[];for(let n=0;n<Ut;n++){let r=n/(Ut-1);t.push(String(Math.round(e(r)*1e5)/1e5));}return `linear(${t.join(",")})`}function at(e){switch(e){case "linear":return "linear";case "ease-in":return Pn;case "ease-out":return On;case "ease-in-out":return kn()?$n(ee["ease-in-out"]):null;default:return null}}var Xt=Symbol.for("svg-scroll-draw.registry");function Kt(){let e=globalThis;return e[Xt]||(e[Xt]=new Map)}function Se(e,t){Kt().set(e,t);}function ve(e){Kt().delete(e);}function lt(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let t=window.matchMedia("(prefers-reduced-motion: reduce)"),n=o=>e(!!o.matches);if(typeof t.addEventListener=="function")return t.addEventListener("change",n),()=>t.removeEventListener("change",n);let r=t;return r.addListener?.(n),()=>r.removeListener?.(n)}function Ve(e,t){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t(e,true);let n=t(e,false),r=lt(s=>{if(!s)return;r();let a=(n.getProgress?.()??0)>=1;n.destroy(),n=t(a?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(n))o[s]=(...a)=>n[s]?.(...a);return o.destroy=()=>{r(),n.destroy();},o}var Ue,ct=new Set,ut=new WeakMap,Xe=new Map,Zt=e=>{let t=e.getBoundingClientRect();return t.width+" "+t.height};function Rn(e){let t=new Set;for(let n of e)for(;n&&n!==document.body;n=n.parentElement)for(let r=n;r;r=r.previousElementSibling)t.add(r);return t}function Jt(e,t){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let n=()=>t();Ue??(Ue=new ResizeObserver(o=>{let s=false;for(let{target:a}of o)ut.get(a)!==Zt(a)&&(s=true),ut.set(a,"");s&&ct.forEach(a=>a());})),ct.add(n);let r=Rn(e);return [document.body,document.documentElement].forEach(o=>o&&r.add(o)),r.forEach(o=>{ut.has(o)||ut.set(o,Zt(o)),Xe.set(o,(Xe.get(o)??0)+1),Ue.observe(o);}),()=>{ct.delete(n)&&(r.forEach(o=>{let s=(Xe.get(o)??1)-1;if(s)return void Xe.set(o,s);Xe.delete(o),Ue?.unobserve(o);}),ct.size||(Ue?.disconnect(),Ue=void 0));}}function Me(e,t,n,r,o){let s,a=NaN,u,f,p=()=>{s=0,r(),!u&&!s&&(a=n())>0&&a<1&&(s=requestAnimationFrame(p));},g=()=>{!s&&!u&&n()!==a&&(s=requestAnimationFrame(p));},x=D=>{u=D,cancelAnimationFrame(s),s=a=NaN,g();},y=()=>{clearTimeout(f),o(),g();},R=()=>{clearTimeout(f),f=setTimeout(y,150);},j=Jt(t,R),w=D=>{e[D]("scroll",g,{passive:true}),window[D]("resize",R),window[D]("orientationchange",R);};return w("addEventListener"),g(),{hold:x,remeasure:y,off(){x(true),w("removeEventListener"),j(),clearTimeout(f);}}}var Dn=0;function Hn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function en(e,t){let n="";try{n=getComputedStyle(e).getPropertyValue(t).trim();}catch{}return n||(e.getAttribute(t)??"").trim()}var tn=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function Nn(e){if(!ze)return;let t=en(e,"stroke");if(!t||t==="none"){ae("Element has no stroke \u2014 path will not be visible.",e);return}let n=(e.getAttribute("fill")??"").trim();n&&!tn.has(n)&&!tn.has(en(e,"fill"))&&ae("Element has a fill \u2014 it may obscure the stroke animation.",e);}function In(e,t,n){let r=document.createElement("div");r.setAttribute("data-svg-scroll-draw-debug",""),r.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 o(){let s=n==="x"?window.scrollX:window.scrollY,a=e-s,u=t-s,f=n==="x";r.innerHTML=`
2
- <div style="position:absolute;${f?`left:${a}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${a}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;${f?`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(r),window.addEventListener("scroll",o,{passive:true}),o(),{el:r,destroy(){window.removeEventListener("scroll",o),r.remove();}}}var nn=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,rn=/[MmLlHhVvCcSsQqTtAaZz]/g;function Vn(e,t,n){if(!ze)return;let r=(e.match(rn)??[]).join("").toUpperCase(),o=(t.match(rn)??[]).join("").toUpperCase(),s=(e.match(nn)??[]).length,a=(t.match(nn)??[]).length;if(r!==o){ae(`morphTo: command sequence differs (${r||"\u2205"} \u2192 ${o||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,n);return}s!==a&&ae(`morphTo: coordinate count differs (${s} \u2192 ${a}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,n);}function Fn(e,t,n){let r=(t.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let a=parseFloat(s),u=r[o++]??a;return String(+(a+(u-a)*n).toFixed(4))})}function wt(e,t={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:Ve(t,(n,r)=>_n(e,n,r))}function _n(e,t,n){let{preset:r,...o}=t,s=r?{...Qt[r],...o}:o,{selector:a="path, polyline, line, polygon, rect, circle",speed:u=1,fade:f=false,easing:p="linear",trigger:g={},stagger:x=0,direction:y="forward",once:R=false,debug:j=false,axis:w="y",scrollContainer:D,autoReverse:ue=false,delay:H=0,strokeColor:M,strokeWidth:C,fillOpacity:O,waypoints:S,velocityScale:A=false,threshold:N=0,rootMargin:te="0px",repeat:q=0,repeatDelay:V=0,morphTo:I,clip:v,autoplay:Q=false,duration:h=1e3,native:P=true,onProgress:Ee,onStart:U,onComplete:_,onEnter:fe,onLeave:Te,onEnterBack:ge,onLeaveBack:me}=s,b=v===true?"left":typeof v=="string"?v:false,E=typeof p=="function"?p:ee[p]??ee.linear,ye=ie(g.start||"top bottom"),He=ie(g.end||"bottom top"),X=typeof D=="string"?document.querySelector(D):D??null,Ae=Array.isArray(M)?M[0]:null,Pe=Array.isArray(M)?M[1]:typeof M=="string"?M:null,he=Array.isArray(C)?C[0]:null,Ne=Array.isArray(C)?C[1]:typeof C=="number"?C:null,Oe=Array.isArray(O)?O[0]:null,be=Array.isArray(O)?O[1]:typeof O=="number"?O:null;function ke(i){let c=i*100;switch(b){case "right":return `inset(0 0 0 ${100-c}%)`;case "top":return `inset(0 0 ${100-c}% 0)`;case "bottom":return `inset(${100-c}% 0 0 0)`;case "center":return `circle(${i*150}% at 50% 50%)`;default:return `inset(0 ${100-c}% 0 0)`}}let l=b?[]:Array.from(e.querySelectorAll(a)),m=[],K=[],k=0,F=0,Y=x,G=0,Ie=0,Z=false,$e=false,Re=0,mt=-1,et=[],tt=-1,pe=false,xe=0,Fe=0,_e,pt=false,dt=null;function kt(){dt?.destroy(),dt=null;}let Ge=new Set,$t=NaN,We=true,nt=-1,Rt=performance.now(),Be=NaN;function rt(){return X?w==="x"?X.scrollLeft:X.scrollTop:w==="x"?window.scrollX:window.scrollY}function Dt(){return X?w==="x"?X.clientWidth:X.clientHeight:w==="x"?window.innerWidth:window.innerHeight}function Ht(){let i=ot(e,X,w);return we(i,i.scroll,Dt(),ye,He)}function wn(){let i=F-k,c=l.length-1,d=X??document.documentElement,L=w==="x"?"Width":"Height";if(Y=x,x>0&&c>0&&i>0){let ne=d[`scroll${L}`]-d[`client${L}`]-1-k-i/u;ne>=0&&(Y=Math.min(x,ne/(c*i)));}let J=Math.max(0,c)*Y*i,le=i/Math.min(u,1);G=k+Math.min(0,J,le,J+le),Ie=k+Math.max(0,J,le,J+le);}function Nt(){(({tStart:k,tEnd:F}=Ht())),wn(),j&&ze&&(kt(),dt=In(k,F,w));}function gt(i,c=Ht){Se(e,{type:"draw",getProgress:()=>i.getProgress(),getTrigger:c});let d=i.destroy;return i.destroy=()=>{d.call(i),ve(e);},i}function It(i,c){return R&&!ue?Math.max(mt,E(et[i]=Math.max(et[i]??0,c))):E(c)}function Sn(i,c){if(e.style.setProperty("--scroll-draw-progress",String(i)),b){let d=c==="reverse"?1-i:i;e.style.clipPath=ke(d);return}l.forEach((d,L)=>yt(d,L,i,c));}function yt(i,c,d,L){i.style.strokeDashoffset=L==="reverse"?`${m[c]*d}`:`${m[c]*(1-d)}`,f&&(i.style.opacity=L==="reverse"?`${1-d}`:`${d}`),Ae&&Pe?i.style.stroke=it(Ae,Pe,d):Pe&&(i.style.stroke=Pe),he!==null&&Ne!==null?i.style.strokeWidth=`${he+(Ne-he)*d}`:Ne!==null&&(i.style.strokeWidth=`${Ne}`),Oe!==null&&be!==null?i.style.fillOpacity=`${Oe+(be-Oe)*d}`:be!==null&&(i.style.fillOpacity=`${be}`),I&&i.tagName.toLowerCase()==="path"&&K[c]&&i.setAttribute("d",Fn(K[c],I,d));}function ht(){if(e.style.setProperty("--scroll-draw-progress","0"),b){e.style.clipPath=ke(y==="reverse"?1:0);return}l.forEach((i,c)=>{i.style.strokeDasharray=`${m[c]}`,i.style.strokeDashoffset=y==="reverse"?"0":`${m[c]}`,f?i.style.opacity=y==="reverse"?"1":"0":i.style.opacity="",Ae&&(i.style.stroke=Ae),he!==null&&(i.style.strokeWidth=`${he}`),Oe!==null&&(i.style.fillOpacity=`${Oe}`),I&&i.tagName.toLowerCase()==="path"&&K[c]&&i.setAttribute("d",K[c]);});}function je(i,c){let d=i.getAttribute("d"),L=st(i);if(I&&K[c]){i.setAttribute("d",I);let J=st(i);i.setAttribute("d",K[c]),L=Math.max(st(i),J),i.setAttribute("d",d);}m[c]=L,i.style.strokeDasharray=`${L}`;}if(l.forEach((i,c)=>{Nn(i);let d=i.tagName.toLowerCase()==="path";d?K.push(i.getAttribute("d")??""):K.push(""),je(i,c);let L=m[c];I&&(d?Vn(K[K.length-1],I,i):ae(`morphTo only applies to <path> elements \u2014 ignored on <${i.tagName}>.`,i)),n?(i.style.strokeDashoffset=y==="reverse"?`${L}`:"0",f&&(i.style.opacity="1"),Pe&&(i.style.stroke=Pe),Ne!==null&&(i.style.strokeWidth=`${Ne}`),be!==null&&(i.style.fillOpacity=`${be}`),I&&i.tagName.toLowerCase()==="path"&&i.setAttribute("d",I)):(i.style.strokeDashoffset=y==="reverse"?"0":`${L}`,f?i.style.opacity=y==="reverse"?"1":"0":i.style.opacity="",Ae&&(i.style.stroke=Ae),he!==null&&(i.style.strokeWidth=`${he}`),Oe!==null&&(i.style.fillOpacity=`${Oe}`));}),n)return b&&(e.style.clipPath=ke(1)),_?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};b&&(e.style.clipPath=ke(y==="reverse"?1:0));let Vt=typeof p=="string"?at(p):null;function vn(){return !(P===false||Q||j&&ze||!Hn()||!l.length||!Vt||b||w!=="y"||X||u!==1||x!==0||R||ue||A!==false||I||S||q||H>0||Ee||U||_||fe||Te||ge||me||M!=null||C!=null||O!=null||(g.start||"top bottom").trim()!=="top bottom"||(g.end||"bottom top").trim()!=="bottom top")}function En(){let i=++Dn,c=`svg-scroll-draw-${i}`,d=`svg-scroll-draw-host-${i}`,L=`--svg-scroll-draw-${i}`,J=y==="reverse"?"0":"var(--ssd-len)",le=y==="reverse"?"var(--ssd-len)":"0",ne=`stroke-dashoffset:${J};`,W=`stroke-dashoffset:${le};`;f&&(ne+=`opacity:${y==="reverse"?1:0};`,W+=`opacity:${y==="reverse"?0:1};`);let B=document.createElement("style");B.setAttribute("data-svg-scroll-draw",""),B.textContent=`@keyframes ${c}{from{${ne}}to{${W}}}.${d}{view-timeline-name:${L};view-timeline-axis:block;}.${c}{animation-name:${c};animation-duration:auto;animation-timing-function:${Vt};animation-fill-mode:both;animation-timeline:${L};animation-range:cover 0% cover 100%;}`,document.head.appendChild(B),e.classList.add(d);function se(T,$){T.style.setProperty("--ssd-len",String(m[$])),T.style.strokeDasharray=`${m[$]}`,T.style.strokeDashoffset="",T.style.opacity="",T.style.animationPlayState="",T.classList.add(c);}l.forEach(se);let re=false,ce=-1;function de(){if(ce>=0)return ce;let T=e.getBoundingClientRect(),{tStart:$,tEnd:oe}=we({top:T.top,height:T.height},rt(),Dt(),ye,He);return E(z(rt(),$,oe,u))}return {destroy(){e.classList.remove(d),l.forEach(T=>{T.classList.remove(c),T.style.removeProperty("--ssd-len"),T.style.animationPlayState="";}),B.remove();},replay(){re=false,ce=-1,l.forEach(se);},pause(){re=true,l.forEach(T=>{T.style.animationPlayState="paused";});},resume(){re&&(re=false,l.forEach(T=>{T.style.animationPlayState="running";}));},seek(T){let $=Math.min(1,Math.max(0,T));ce=$,re=true,l.forEach((oe,De)=>{oe.classList.remove(c),oe.style.strokeDashoffset=y==="reverse"?`${m[De]*$}`:`${m[De]*(1-$)}`,f&&(oe.style.opacity=y==="reverse"?`${1-$}`:`${$}`);});},getProgress(){return de()},refresh(){l.forEach((T,$)=>{je(T,$),T.style.setProperty("--ssd-len",String(m[$]));});}}}if(vn())return gt(En());function Tn(){let i=Math.max(1,h),c=b?i:i*(1+Math.max(0,l.length-1)*x),d=0,L=0,J=false;function le(ce){let de=true,T=Math.min(1,Math.max(0,ce/c));if(b){let $=Math.min(1,Math.max(0,ce/i)),oe=E($);xe=oe,e.style.setProperty("--scroll-draw-progress",String(oe)),e.style.clipPath=ke(y==="reverse"?1-oe:oe),Ee?.(oe),$<1&&(de=false);}else {l.forEach((oe,De)=>{let Mn=De*x*i,Bt=Math.min(1,Math.max(0,(ce-Mn)/i));yt(oe,De,E(Bt),y),Bt<1&&(de=false);});let $=E(T);xe=$,Ee?.($),e.style.setProperty("--scroll-draw-progress",String($));}if(S){let $=E(T);for(let oe in S){let De=parseFloat(oe);$>=De&&!Ge.has(De)&&(Ge.add(De),S[oe]?.());}}return de}function ne(ce){if(pe)return;let de=ce-d;$e||($e=true,U?.());let T=le(de);if(T&&!Z){Z=true,le(c),_?.(),Fe<(q==="infinite"?1/0:q??0)&&(Fe++,_e=setTimeout(()=>{d=performance.now(),$e=false,Z=false,Ge.clear(),ht(),Re=requestAnimationFrame(ne);},V));return}T||(Re=requestAnimationFrame(ne));}function W(){cancelAnimationFrame(Re),clearTimeout(_e),d=performance.now(),L=0,pe=false,$e=false,Z=false,Fe=0,J=true,xe=0,Ge.clear(),ht(),Re=requestAnimationFrame(ne);}let B=new IntersectionObserver(ce=>{ce.forEach(de=>{de.isIntersecting&&!(R&&Z)?W():!de.isIntersecting&&!R&&!Z&&(cancelAnimationFrame(Re),clearTimeout(_e),J=false);});},{root:X??null,threshold:N,rootMargin:te}),se;function re(){clearTimeout(se),se=setTimeout(()=>l.forEach(je),150);}return window.addEventListener("resize",re),window.addEventListener("orientationchange",re),H>0?setTimeout(()=>B.observe(e),H):B.observe(e),{destroy(){cancelAnimationFrame(Re),clearTimeout(_e),B.disconnect(),window.removeEventListener("resize",re),window.removeEventListener("orientationchange",re),clearTimeout(se);},replay(){Fe=0,W();},pause(){pe||!J||(pe=true,L=performance.now()-d,cancelAnimationFrame(Re));},resume(){pe&&(pe=false,J=true,d=performance.now()-L,Re=requestAnimationFrame(ne));},seek(ce){let de=Math.min(1,Math.max(0,ce));xe=de,pe=true,L=de*c,d=performance.now()-L,cancelAnimationFrame(Re),le(L);},getProgress(){return xe},refresh(){clearTimeout(se),l.forEach(je);}}}if(Q)return gt(Tn());Nt();let Ft=()=>z(rt(),G,Ie,1);function _t(){Z=true,_?.(),Fe<(q==="infinite"?1/0:q)&&(Fe++,_e=setTimeout(()=>{pt=true;},V));}function Gt(){mt=-1,et=[],$e=false,Z=false,pt=false,Ge.clear(),ht(),We=true;}function xn(){let i=performance.now(),c=rt();if(pt&&Ft()%1&&Gt(),!We&&A===false&&c===$t)return;We=false,$t=c;let d=u;if(A!==false){let W=i-Rt,B=W>0?Math.abs(c-(nt<0?c:nt))/W:0;d=u*Math.max(.2,1+B*(typeof A=="number"?A:1)*.04);}nt=c,Rt=i;let L=ue?tt===-1||c>=tt?"forward":"reverse":y;tt=c;let J=F-k,le=true,ne=J===0?0:(c-k)/J;if(isNaN(Be)||(Be<=0&&ne>0&&fe?.(),Be<1&&ne>=1&&Te?.(),Be>=1&&ne<1&&ge?.(),Be>0&&ne<=0&&me?.()),Be=ne,b){let W=It(0,z(c,k,F,d));xe=W,e.style.setProperty("--scroll-draw-progress",String(W));let B=L==="reverse"?1-W:W;e.style.clipPath=ke(B),Ee?.(W),!$e&&z(c,k,F,d)>0&&($e=true,U?.()),W>=1&&!Z?_t():W<1&&!R&&(Z=false);return}if(l.forEach((W,B)=>{let se=B*Y*J,re=It(B,z(c,k+se,F+se,d));yt(W,B,re,L),B===0&&(xe=re,Ee?.(re),e.style.setProperty("--scroll-draw-progress",String(re))),re<1&&(le=false);}),S){let W=E(z(c,k,F,d));for(let B in S){let se=parseFloat(B);W>=se&&!Ge.has(se)&&(Ge.add(se),S[B]?.());}}!$e&&z(c,k,F,d)>0&&($e=true,U?.()),le&&!Z?_t():!le&&!R&&(Z=false);}let qe=Me(X??window,[e],Ft,xn,()=>{let i=m.join();l.forEach(je),Nt(),We=true,m.join()!==i&&Ye();}),bt=H>0;function Ye(){qe.hold(pe||bt);}let Wt;return bt&&(Wt=setTimeout(()=>{bt=false,Ye();},H)),Ye(),gt({destroy(){clearTimeout(_e),clearTimeout(Wt),qe.off(),kt();},replay(){Gt(),tt=-1,nt=-1,Fe=0,pe=false,xe=0,clearTimeout(_e),Ye();},pause(){pe=true,qe.hold(true);},resume(){pe&&(pe=false,We=true,Ye());},seek(i){let c=Math.min(1,Math.max(0,i));xe=c,mt=c,et=[],pe=true,qe.hold(true),Sn(c,y),We=true;},getProgress(){return xe},refresh:qe.remeasure},()=>({tStart:k,tEnd:F}))}var on=new WeakMap,Gn=0;function sn(e){return JSON.stringify(e,(t,n)=>{if(typeof n=="function")return "\u0192";if(typeof Element<"u"&&n instanceof Element){let r=on.get(n);return r===void 0&&on.set(n,r=++Gn),`el#${r}`}return n})}function an(e,t){let n={...e};for(let r of Object.keys(n))typeof n[r]=="function"&&(n[r]=(...o)=>t()[r]?.(...o));return n}function Wn(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function ln(e){let t=[],n=/([\w]+)\(([^)]*)\)/g,r;for(;(r=n.exec(e))!==null;){let o=[],s=[],a=r[2].trim();if(a)for(let u of a.split(/[\s,]+/)){let f=u.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(f?parseFloat(f[1]):0),s.push(f?f[2]:"");}t.push({fn:r[1],nums:o,units:s});}return t}function Bn(e,t,n){let r=ln(e),o=ln(t);return r.length===0||r.length!==o.length?n<1?e:t:r.map((s,a)=>{let u=o[a];return s.fn!==u.fn||s.nums.length!==u.nums.length?n<1?`${s.fn}(${s.nums.map((f,p)=>`${f}${s.units[p]}`).join(", ")})`:`${u.fn}(${u.nums.map((f,p)=>`${f}${u.units[p]}`).join(", ")})`:`${s.fn}(${s.nums.map((f,p)=>`${f+(u.nums[p]-f)*n}${s.units[p]}`).join(", ")})`}).join(" ")}function cn(e,t,n){if(typeof e=="number"&&typeof t=="number")return String(e+(t-e)*n);let r=String(e),o=String(t);if(Wn(r))return it(r,o,n);if(r.includes("("))return Bn(r,o,n);let s=r.match(/^([-+]?[\d.]+)(.*)$/),a=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&a){let u=parseFloat(s[1]),f=parseFloat(a[1]);return `${u+(f-u)*n}${s[2]||a[2]}`}return n<1?r:o}function zn(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}var jn=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),qn=0,un="--scroll-draw-progress";function Yn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var mn={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function St(e,t){return typeof window>"u"?mn:t.respectReducedMotion===false?fn(e,t,false):Ve(t,(n,r)=>fn(e,n,r))}function fn(e,t,n){let{props:r,trigger:o={},easing:s="ease-out",speed:a=1,once:u=false,axis:f="y",scrollContainer:p,native:g=true,velocityScale:x=false,triggerElement:y,onProgress:R,onComplete:j,onEnter:w,onLeave:D,onEnterBack:ue,onLeaveBack:H}=t,M=typeof s=="function"?s:ee[s]??ee["ease-out"],C=ie(o.start||"top bottom"),O=ie(o.end||"bottom top"),S=y??e,A=typeof p=="string"?document.querySelector(p):p??null,N=Object.entries(r).map(([l,m])=>({prop:zn(l),from:Array.isArray(m)?m[0]:"",to:Array.isArray(m)?m[1]:m}));function te(){let l=window.getComputedStyle(e);for(let m of N)m.from===""&&(m.from=l.getPropertyValue(m.prop).trim()||"0");}function q(){for(let l of N)e.style.setProperty(l.prop,String(l.to));}let V=new Map;for(let l of [...N.map(m=>m.prop),un])V.set(l,e.style.getPropertyValue(l));function I(){for(let[l,m]of V)m?e.style.setProperty(l,m):e.style.removeProperty(l);}if(n)return q(),j?.(),{...mn,destroy:I,getProgress:()=>1};te();let v=()=>A?f==="x"?A.scrollLeft:A.scrollTop:f==="x"?window.scrollX:window.scrollY,Q=()=>A?f==="x"?A.clientWidth:A.clientHeight:f==="x"?window.innerWidth:window.innerHeight,h=typeof s=="string"?at(s):null;function P(){if(!g||!Yn()||!h||f!=="y"||A||S!==e||u||a!==1||R||j||w||D||ue||H||x!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of N)if(!jn.has(l.prop))return false;return true}function Ee(){let l=`ssd-a-${++qn}`,m=N.map(G=>`${G.prop}:${G.from}`).join(";"),K=N.map(G=>`${G.prop}:${G.to}`).join(";"),k=document.createElement("style");k.setAttribute("data-ssd-animate",""),k.textContent=`@keyframes ${l}{from{${m}}to{${K}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${h};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(k),e.classList.add(l);let F=()=>{let G=e.getBoundingClientRect();return we({top:G.top,height:G.height},v(),Q(),C,O)};Se(e,{type:"animate",getProgress:()=>Y.getProgress(),getTrigger:F});let Y={refresh(){},destroy(){e.classList.remove(l),k.remove(),e.style.animationPlayState="",I(),ve(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(G){let Ie=Math.min(1,Math.max(0,G));e.classList.remove(l);for(let Z of N)e.style.setProperty(Z.prop,cn(Z.from,Z.to,Ie));},getProgress(){let{tStart:G,tEnd:Ie}=F();return M(z(v(),G,Ie,a))}};return Y}if(P())return Ee();let U=0,_=0,fe=false,Te=-1,ge=0,me=0,b=false,E=NaN,ye=-1,He=0,X=S===e?N:[],Ae=false;function Pe(){let l=e.style,m=X.map(Y=>l.getPropertyValue(Y.prop)),K=l.transition;X.length&&(l.transition="none"),X.forEach(Y=>l.setProperty(Y.prop,V.get(Y.prop)??""));let k=ot(S,A,f);X.forEach((Y,G)=>l.setProperty(Y.prop,m[G])),X.length&&(e.offsetWidth,l.transition=K);let F=we(k,k.scroll,Q(),C,O);Ae&&Math.abs(F.tStart-U)<1&&Math.abs(F.tEnd-_)<1||(Ae=true,U=F.tStart,_=F.tEnd);}function he(l){e.style.setProperty(un,String(l));for(let m of N)e.style.setProperty(m.prop,cn(m.from,m.to,l));R?.(l);}function Ne(l){if(isNaN(E)){E=l;return}E<=0&&l>0&&w?.(),E<1&&l>=1&&D?.(),E>=1&&l<1&&ue?.(),E>0&&l<=0&&H?.(),E=l;}function Oe(){if(fe)return;let l=performance.now(),m=v(),K=a;if(x!==false){let G=l-He,Ie=G>0?Math.abs(m-(ye<0?m:ye))/G:0;K=a*Math.max(.2,1+Ie*(typeof x=="number"?x:1)*.04);}ye=m,He=l;let k=_===U?0:(m-U)/(_-U);Ne(k);let F=z(m,U,_,K),Y=u?Math.max(Te,M(ge=Math.max(ge,F))):M(F);me=Y,he(Y),Y>=1&&!b?(b=true,j?.()):Y<1&&!u&&(b=false);}let be=Me(A??window,[S],()=>z(v(),U,_,Math.min(a,1)),Oe,Pe);Pe(),_===U&&ae("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),ge=z(v(),U,_,a),me=M(ge),he(me),Se(e,{type:"animate",getProgress:()=>me,getTrigger:()=>({tStart:U,tEnd:_})});function ke(){fe=true,be.hold(true);}return {destroy(){fe=true,be.off(),I(),ve(e);},replay(){Te=-1,ge=0,b=false,me=0,fe=false,he(0),be.hold(false);},pause:ke,resume(){fe&&(fe=false,be.hold(false));},seek(l){let m=Math.min(1,Math.max(0,l));me=m,Te=m,ge=0,ke(),he(m);},getProgress(){return me},refresh:be.remeasure}}var vt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Et(e,t){if(typeof window>"u")return vt;let n=typeof e=="string"?document.querySelector(e):e;return n?Ve(t,(r,o)=>Qn(n,r,o)):(ae("scrollCounter: element not found:",e),vt)}function Qn(e,t,n){let{from:r=0,to:o,format:s,easing:a="ease-out",trigger:u={},once:f=true,decimals:p,onComplete:g}=t,x=p!==void 0?h=>h.toFixed(p):s??(h=>String(Math.round(h))),y=typeof a=="function"?a:ee[a]??ee["ease-out"],R=ie(u.start||"top 80%"),j=ie(u.end||"top 20%");if(n)return e.textContent=x(o),g?.(),{...vt,getProgress:()=>1};let w=0,D=0,ue=false,H=-1,M=0,C=0,O=false,S=()=>window.scrollY,A=()=>window.innerHeight;function N(){let h=e.getBoundingClientRect(),P=we({top:h.top,height:h.height},S(),A(),R,j);ue&&Math.abs(P.tStart-w)<1&&Math.abs(P.tEnd-D)<1||(ue=true,w=P.tStart,D=P.tEnd);}let te=e.style.getPropertyValue("--scroll-draw-progress");function q(h){e.textContent=x(r+(o-r)*h),e.style.setProperty("--scroll-draw-progress",String(h));}let V=()=>z(S(),w,D,1);function I(){let h=V(),P=f?Math.max(H,y(M=Math.max(M,h))):y(h);C=P,q(P),P>=1&&!O?(O=true,g?.()):P<1&&!f&&(O=false);}N();{M=z(S(),w,D,1);let h=y(M);C=h,q(h);}let v=Me(window,[e],V,I,N);Se(e,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:w,tEnd:D})});let Q=()=>v.hold(false);return {destroy(){v.off(),e.style.setProperty("--scroll-draw-progress",te),ve(e);},replay(){H=-1,M=0,O=false,C=0,q(0),Q();},pause:()=>v.hold(true),resume:Q,seek(h){let P=Math.min(1,Math.max(0,h));C=P,H=P,M=0,v.hold(true),q(P);},getProgress(){return C}}}var pn={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Tt(e,t={}){if(typeof window>"u")return pn;let n=typeof e=="string"?document.querySelector(e):e;if(!n||n.tagName.toLowerCase()!=="video")return ae("scrollVideo: <video> element not found:",e),pn;let r=n,{trigger:o={},easing:s="linear",once:a=false,axis:u="y",preload:f="auto",triggerElement:p,onReady:g,onComplete:x,onProgress:y}=t,R=p??r,j=window.matchMedia("(prefers-reduced-motion: reduce)").matches,w=typeof s=="function"?s:ee[s]??ee.linear,D=ie(o.start||"top top"),ue=ie(o.end||"bottom top");r.pause(),r.hasAttribute("preload")||(r.preload=f);let H=t.from??0,M=t.to,C=0,O=0,S=false,A=-1,N=0,te=0,q=false,V=false,I=()=>u==="x"?window.scrollX:window.scrollY,v=()=>u==="x"?window.innerWidth:window.innerHeight;function Q(){let b=R.getBoundingClientRect(),E=u==="x"?b.left:b.top,ye=u==="x"?b.width:b.height,He=we({top:E,height:ye},I(),v(),D,ue);C=He.tStart,O=He.tEnd,V&&O===C&&ae("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r);}let h=NaN;function P(b){if(!V)return;let E=M??r.duration??0,ye=H+(E-H)*b;ye!==h&&(h=ye,r.currentTime=ye),r.style.setProperty("--scroll-draw-progress",String(b)),y?.(b);}let Ee=()=>z(I(),C,O,1);function U(){if(!V||j)return;let b=Ee(),E=a?Math.max(A,w(N=Math.max(N,b))):w(b);te=E,P(E),E>=1&&!q?(q=true,x?.()):E<1&&!a&&(q=false);}let _=Me(window,[R],Ee,U,Q),fe=()=>_.hold(S||!V||j);fe();function Te(){if(V=true,M===void 0&&(M=r.duration),j){P(1),g?.();return}Q(),g?.(),S?P(te):fe();}r.readyState>=1?Te():r.addEventListener("loadedmetadata",Te,{once:true}),V||Q();let ge=j?()=>{}:lt(b=>{b&&(ge(),j=true,_.hold(true),P(1));});Se(r,{type:"video",getProgress:()=>te,getTrigger:()=>({tStart:C,tEnd:O})});function me(){S&&(S=false,fe());}return {destroy(){_.off(),r.removeEventListener("loadedmetadata",Te),ge(),ve(r);},replay(){A=-1,N=0,q=false,te=0,h=NaN,P(0),me();},pause(){S=true,_.hold(true);},resume:me,seek(b){let E=Math.min(1,Math.max(0,b));te=E,A=E,N=0,S=true,_.hold(true),h=NaN,P(E);},getProgress(){return te}}}function dn(e,t){let n=document.createElement("span");n.textContent=t,n.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(n);}function ft(e=""){let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=e,t}function yn(e){let t=e.textContent??"";return e.textContent="",t.split(/(\s+)/).filter(Boolean).map(n=>{let r=e.appendChild(ft(n)),o=/^\s+$/.test(n);return o?r.style.whiteSpace="pre":r.style.display="inline-block",o?null:r}).filter(n=>n!==null)}function Un(e){let t=e.textContent??"";e.textContent="";let n=[],r=null;for(let o of t){let s=ft(o),a=o===" ";a?s.style.whiteSpace="pre":(s.style.display="inline-block",n.push(s)),a||o>"\u0DFF"?r=null:r||(r=e.appendChild(ft()),r.style.cssText="display:inline-block;white-space:nowrap"),(r??e).appendChild(s);}return n}function gn(e){let t=yn(e),n=new Map;for(let s of t){let a=s.offsetTop;n.has(a)||n.set(a,[]),n.get(a).push(s);}let r=[],o=Array.from(n.keys()).sort((s,a)=>s-a);for(let s of o){let a=n.get(s),u=ft();u.style.display="inline-block",a.forEach((f,p)=>{let g=f.nextElementSibling;u.appendChild(f),p<a.length-1&&g&&g.style.whiteSpace==="pre"&&u.appendChild(g);}),r.push(u);}return e.textContent="",r.forEach((s,a)=>{e.appendChild(s),a<r.length-1&&e.appendChild(document.createTextNode(" "));}),r}function Xn(e,t,n,r){if(n<=1||r===0)return e;r=Math.min(r,1/n);let o=(n-1)*r,s=t*r,a=s+(1-o);return a<=s?e>=s?1:0:Qe((e-s)/(a-s),0,1)}function Kn(e,t){let n=[];if(t?.y!==void 0&&n.push(`translateY(${t.y*(1-e)}px)`),t?.x!==void 0&&n.push(`translateX(${t.x*(1-e)}px)`),t?.rotate!==void 0&&n.push(`rotate(${t.rotate*(1-e)}deg)`),t?.scale!==void 0){let r=t.scale+(1-t.scale)*e;n.push(`scale(${r})`);}return n.join(" ")}var xt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Mt(e,t={}){if(typeof window>"u")return xt;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return ae("scrollText: element not found:",e),xt;let r=n;return Ve(t,(o,s)=>Zn(r,o,s))}function Zn(e,t,n){let{split:r="words",stagger:o=.04,easing:s="ease-out",from:a={opacity:0,y:24},trigger:u={},once:f=true,onComplete:p}=t,g=typeof s=="function"?s:ee[s]??ee["ease-out"],x=ie(u.start||"top 85%"),y=ie(u.end||"top 40%"),R=e.innerHTML,j=e.textContent??"",w;r==="chars"?w=Un(e):r==="lines"?w=gn(e):w=yn(e),dn(e,j);let D=w.length;function ue(v,Q){a?.opacity!==void 0&&(v.style.opacity=String(a.opacity+(1-a.opacity)*Q));let h=Kn(Q,a);h&&(v.style.transform=h);}function H(v){e.style.setProperty("--scroll-draw-progress",String(v)),w.forEach((Q,h)=>{let P=g(Xn(v,h,D,o));ue(Q,P);});}if(n)return H(1),p?.(),{...xt,destroy:()=>{e.innerHTML=R;},getProgress:()=>1};H(0);let M=0,C=0,O=-1,S=0,A=false;function N(){({tStart:M,tEnd:C}=we(e.getBoundingClientRect(),window.scrollY,window.innerHeight,x,y));}let te=()=>z(window.scrollY,M,C,1);function q(){let v=f?O=Math.max(O,te()):te();S=v,H(v),v>=1&&!A?(A=true,p?.()):v<1&&!f&&(A=false);}N();let V=Me(window,[e],te,q,()=>{r==="lines"&&(e.innerHTML=R,w=gn(e),dn(e,j),H(S)),N();});Se(e,{type:"text",getProgress:()=>S,getTrigger:()=>({tStart:M,tEnd:C})});let I=()=>V.hold(false);return {destroy(){V.off(),e.innerHTML=R,ve(e);},replay(){O=-1,A=false,S=0,H(0),I();},pause:()=>V.hold(true),resume:I,seek(v){V.hold(true),H(S=O=Qe(v,0,1));},getProgress(){return S}}}var Je=e=>typeof e=="function"?e():vue.unref(e);function Ce(e,t,n){let r=null,o=t(),s=()=>{r?.destroy(),r=e.value?n(e.value,an(o,()=>o)):null;};vue.onMounted(s),vue.watch(()=>sn(o=t()),s),vue.onUnmounted(()=>{r?.destroy(),r=null;});}function rr(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),wt),t}var hn={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},or=[null,Boolean,[Boolean,String],[Boolean,Number]],bn=e=>({type:e,default:void 0}),Lt=vue.defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(hn).map(([e,t])=>[e,t?bn(or[t]):null])),setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>{let r={};for(let o in hn){let s=e[o];s!=null&&(r[o]=s);}return r},wt),()=>vue.h("div",{ref:n},t.default?.())}});function sr(e){let t=vue.ref(null);return Ce(t,()=>Je(e),St),t}var Ct=vue.defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>e.options,St),()=>vue.h("div",{ref:n},t.default?.())}});function ir(e){let t=vue.ref(null);return Ce(t,()=>Je(e),Et),t}var At=vue.defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:bn(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=vue.ref(null);return Ce(t,()=>{let n={to:e.to};return e.from!=null&&(n.from=e.from),e.format!=null&&(n.format=e.format),e.easing!=null&&(n.easing=e.easing),e.trigger!=null&&(n.trigger=e.trigger),e.once!=null&&(n.once=e.once),e.decimals!=null&&(n.decimals=e.decimals),e.onComplete!=null&&(n.onComplete=e.onComplete),n},Et),()=>vue.h("span",{ref:t})}});function ar(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),Tt),t}var Pt=vue.defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=vue.ref(null);return Ce(t,()=>e.options??{},Tt),()=>vue.h("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}});function lr(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),Mt),t}var Ot=vue.defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>e.options??{},Mt),()=>vue.h(e.tag,{ref:n},t.default?.())}});function Ao(){return {install(e){e.component("ScrollDraw",Lt),e.component("ScrollAnimate",Ct),e.component("ScrollCounter",At),e.component("ScrollVideo",Pt),e.component("ScrollText",Ot);}}}exports.ScrollAnimate=Ct;exports.ScrollCounter=At;exports.ScrollDraw=Lt;exports.ScrollText=Ot;exports.ScrollVideo=Pt;exports.createScrollDrawPlugin=Ao;exports.useScrollAnimate=sr;exports.useScrollCounter=ir;exports.useScrollDraw=rr;exports.useScrollText=lr;exports.useScrollVideo=ar;
1
+ 'use strict';var vue=require('vue');function $r({tension:e=2.5,friction:t=2.2}={}){return r=>1-Math.cos(r*Math.PI*e)*Math.pow(1-r,t)}function Fr({bounces:e=3,decay:t=.5}={}){let r=Math.max(1,Math.round(e)),n=Math.max(.01,Math.min(.99,t)),o=Math.sqrt(n),s=0,a=[];for(let g=0;g<r;g++){let w=Math.pow(o,g);a.push(w),s+=w;}let f=[0],m=0;for(let g=0;g<r;g++)m+=a[g]/s,f.push(m);return g=>{if(g<=0)return 0;if(g>=1)return 1;for(let w=0;w<r;w++)if(g<=f[w+1]){let O=(g-f[w])/(f[w+1]-f[w]);if(w===0)return O*(2-O);let E=1-Math.pow(n,w);return E+(1-E)*(2*O-1)*(2*O-1)}return 1}}function Hr({amplitude:e=1,period:t=.4}={}){let r=Math.max(1,e),n=Math.max(.1,t),o=r<=1?n/4:n/(2*Math.PI)*Math.asin(1/r);return s=>s<=0?0:s>=1?1:r*Math.pow(2,-10*s)*Math.sin((s-o)*(2*Math.PI)/n)+1}var re={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:$r(),bounce:Fr(),elastic:Hr()};function st(e,t,r){return Math.min(r,Math.max(t,e))}function le(e="top bottom"){let t=e.trim();if(/^\d+(\.\d+)?%$/.test(t))return {element:"top",viewport:t};let[r="top",n="bottom"]=t.split(/\s+/).filter(Boolean);return {element:r,viewport:n}}var Xt=(e,t)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:t;function Qt(e,t,r,n){return e+r+t*Xt(n,0)}function Kt(e,t){return t*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:Xt(e,1))}function U(e,t,r,n){return r===t?0:st((e-t)/(r-t)*n,0,1)}function Ce(e,t,r,n,o){let s=Qt(e.top,e.height,t,n.element)-Kt(n.viewport,r),a=Qt(e.top,e.height,t,o.element)-Kt(o.viewport,r);return {tStart:s,tEnd:a}}function ft(e,t,r){let n=e.getBoundingClientRect(),o=r==="x"?n.width:n.height;return t?{top:r==="x"?n.left-t.getBoundingClientRect().left-t.clientLeft+t.scrollLeft:n.top-t.getBoundingClientRect().top-t.clientTop+t.scrollTop,height:o,scroll:0}:{top:r==="x"?n.left:n.top,height:o,scroll:r==="x"?window.scrollX:window.scrollY}}function mt(e){let t=parseFloat(e.getAttribute("pathLength")??"");if(t>0)return t;let r=e.tagName.toLowerCase();if(r==="rect"){let n=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(n+o)}if(r==="circle"){let n=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*n}return e.getTotalLength()}function Zt(e){let t=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(t)return [parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[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 n=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return n?[parseInt(n[1]),parseInt(n[2]),parseInt(n[3])]:null}function pt(e,t,r){let n=Zt(e),o=Zt(t);return !n||!o?e:`rgb(${Math.round(n[0]+(o[0]-n[0])*r)},${Math.round(n[1]+(o[1]-n[1])*r)},${Math.round(n[2]+(o[2]-n[2])*r)})`}var Jt={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 D(e,...t){Xe&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var Ir="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Nr="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",er=33;function Dr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function Vr(e){let t=[];for(let r=0;r<er;r++){let n=r/(er-1);t.push(String(Math.round(e(n)*1e5)/1e5));}return `linear(${t.join(",")})`}function dt(e){switch(e){case "linear":return "linear";case "ease-in":return Ir;case "ease-out":return Nr;case "ease-in-out":return Dr()?Vr(re["ease-in-out"]):null;default:return null}}var tr=Symbol.for("svg-scroll-draw.registry");function rr(){let e=globalThis;return e[tr]||(e[tr]=new Map)}function ke(e,t){rr().set(e,t);}function Re(e){rr().delete(e);}function Ze(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let t=window.matchMedia("(prefers-reduced-motion: reduce)"),r=o=>e(!!o.matches);if(typeof t.addEventListener=="function")return t.addEventListener("change",r),()=>t.removeEventListener("change",r);let n=t;return n.addListener?.(r),()=>n.removeListener?.(r)}function qe(e,t){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t(e,true);let r=t(e,false),n=Ze(s=>{if(!s)return;n();let a=(r.getProgress?.()??0)>=1;r.destroy(),r=t(a?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(r))o[s]=(...a)=>r[s]?.(...a);return o.destroy=()=>{n(),r.destroy();},o}var it,gt=new Set,yt=new WeakMap,at=new Map,nr=e=>{let t=e.getBoundingClientRect();return t.width+" "+t.height};function _r(e){let t=new Set;for(let r of e)for(;r&&r!==document.body;r=r.parentElement)for(let n=r;n;n=n.previousElementSibling)t.add(n);return t}function or(e,t){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let r=()=>t();it??(it=new ResizeObserver(o=>{let s=false;for(let{target:a}of o)yt.get(a)!==nr(a)&&(s=true),yt.set(a,"");s&&gt.forEach(a=>a());})),gt.add(r);let n=_r(e);return [document.body,document.documentElement].forEach(o=>o&&n.add(o)),n.forEach(o=>{yt.has(o)||yt.set(o,nr(o)),at.set(o,(at.get(o)??0)+1),it.observe(o);}),()=>{gt.delete(r)&&(n.forEach(o=>{let s=(at.get(o)??1)-1;if(s)return void at.set(o,s);at.delete(o),it?.unobserve(o);}),gt.size||(it?.disconnect(),it=void 0));}}function Ne(e,t,r,n,o){let s,a=NaN,f,m,g=()=>{s=0,n(),!f&&!s&&(a=r())>0&&a<1&&(s=requestAnimationFrame(g));},w=()=>{!s&&!f&&r()!==a&&(s=requestAnimationFrame(g));},O=z=>{f=z,cancelAnimationFrame(s),s=a=NaN,w();},E=()=>{clearTimeout(m),o(),w();},W=()=>{clearTimeout(m),m=setTimeout(E,150);},Q=or(t,W),S=z=>{e[z]("scroll",w,{passive:true}),window[z]("resize",W),window[z]("orientationchange",W);};return S("addEventListener"),w(),{hold:O,remeasure:E,off(){O(true),S("removeEventListener"),Q(),clearTimeout(m);}}}var zr=0;function Gr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function sr(e,t){let r="";try{r=getComputedStyle(e).getPropertyValue(t).trim();}catch{}return r||(e.getAttribute(t)??"").trim()}var ir=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function Wr(e){if(!Xe)return;let t=sr(e,"stroke");if(!t||t==="none"){D("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!ir.has(r)&&!ir.has(sr(e,"fill"))&&D("Element has a fill \u2014 it may obscure the stroke animation.",e);}function Br(e,t,r){let n=document.createElement("div");n.setAttribute("data-svg-scroll-draw-debug",""),n.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 o(){let s=r==="x"?window.scrollX:window.scrollY,a=e-s,f=t-s,m=r==="x";n.innerHTML=`
2
+ <div style="position:absolute;${m?`left:${a}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${a}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:${f}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${f}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(n),window.addEventListener("scroll",o,{passive:true}),o(),{el:n,destroy(){window.removeEventListener("scroll",o),n.remove();}}}var ar=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,lr=/[MmLlHhVvCcSsQqTtAaZz]/g;function jr(e,t,r){if(!Xe)return;let n=(e.match(lr)??[]).join("").toUpperCase(),o=(t.match(lr)??[]).join("").toUpperCase(),s=(e.match(ar)??[]).length,a=(t.match(ar)??[]).length;if(n!==o){D(`morphTo: command sequence differs (${n||"\u2205"} \u2192 ${o||"\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!==a&&D(`morphTo: coordinate count differs (${s} \u2192 ${a}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function qr(e,t,r){let n=(t.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let a=parseFloat(s),f=n[o++]??a;return String(+(a+(f-a)*r).toFixed(4))})}function xt(e,t={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:qe(t,(r,n)=>Yr(e,r,n))}function Yr(e,t,r){let{preset:n,...o}=t,s=n?{...Jt[n],...o}:o,{selector:a="path, polyline, line, polygon, rect, circle",speed:f=1,fade:m=false,easing:g="linear",trigger:w={},stagger:O=0,direction:E="forward",once:W=false,debug:Q=false,axis:S="y",scrollContainer:z,autoReverse:J=false,delay:P=0,strokeColor:A,strokeWidth:L,fillOpacity:k,waypoints:y,velocityScale:R=false,threshold:G=0,rootMargin:ie="0px",repeat:K=0,repeatDelay:V=0,morphTo:H,clip:x,autoplay:X=false,duration:v=1e3,native:C=true,onProgress:he,onStart:I,onComplete:j,onEnter:fe,onLeave:Ee,onEnterBack:me,onLeaveBack:ae}=s,T=x===true?"left":typeof x=="string"?x:false,M=typeof g=="function"?g:re[g]??re.linear,ne=le(w.start||"top bottom"),$e=le(w.end||"bottom top"),Z=typeof z=="string"?document.querySelector(z):z??null,Fe=Array.isArray(A)?A[0]:null,xe=Array.isArray(A)?A[1]:typeof A=="string"?A:null,be=Array.isArray(L)?L[0]:null,ze=Array.isArray(L)?L[1]:typeof L=="number"?L:null,He=Array.isArray(k)?k[0]:null,Te=Array.isArray(k)?k[1]:typeof k=="number"?k:null;function Ae(i){let u=i*100;switch(T){case "right":return `inset(0 0 0 ${100-u}%)`;case "top":return `inset(0 0 ${100-u}% 0)`;case "bottom":return `inset(${100-u}% 0 0 0)`;case "center":return `circle(${i*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let l=T?[]:Array.from(e.querySelectorAll(a)),d=[],oe=[],$=0,_=0,B=O,q=0,_e=0,se=false,Ie=false,we=0,Qe=-1,Ye=[],Ue=-1,pe=false,c=0,p=0,b,ce=false,Se=null;function Ge(){Se?.destroy(),Se=null;}let Oe=new Set,We=NaN,Be=true,ct=-1,Dt=performance.now(),Ke=NaN;function ut(){return Z?S==="x"?Z.scrollLeft:Z.scrollTop:S==="x"?window.scrollX:window.scrollY}function Vt(){return Z?S==="x"?Z.clientWidth:Z.clientHeight:S==="x"?window.innerWidth:window.innerHeight}function _t(){let i=ft(e,Z,S);return Ce(i,i.scroll,Vt(),ne,$e)}function Lr(){let i=_-$,u=l.length-1,h=Z??document.documentElement,N=S==="x"?"Width":"Height";if(B=O,O>0&&u>0&&i>0){let de=h[`scroll${N}`]-h[`client${N}`]-1-$-i/f;de>=0&&(B=Math.min(O,de/(u*i)));}let ue=Math.max(0,u)*B*i,Me=i/Math.min(f,1);q=$+Math.min(0,ue,Me,ue+Me),_e=$+Math.max(0,ue,Me,ue+Me);}function zt(){(({tStart:$,tEnd:_}=_t())),Lr(),Q&&Xe&&(Ge(),Se=Br($,_,S));}function wt(i,u=_t){ke(e,{type:"draw",getProgress:()=>i.getProgress(),getTrigger:u});let h=i.destroy;return i.destroy=()=>{h.call(i),Re(e);},i}function Gt(i,u){return W&&!J?Math.max(Qe,M(Ye[i]=Math.max(Ye[i]??0,u))):M(u)}function Cr(i,u){if(e.style.setProperty("--scroll-draw-progress",String(i)),T){let h=u==="reverse"?1-i:i;e.style.clipPath=Ae(h);return}l.forEach((h,N)=>St(h,N,i,u));}function St(i,u,h,N){i.style.strokeDashoffset=N==="reverse"?`${d[u]*h}`:`${d[u]*(1-h)}`,m&&(i.style.opacity=N==="reverse"?`${1-h}`:`${h}`),Fe&&xe?i.style.stroke=pt(Fe,xe,h):xe&&(i.style.stroke=xe),be!==null&&ze!==null?i.style.strokeWidth=`${be+(ze-be)*h}`:ze!==null&&(i.style.strokeWidth=`${ze}`),He!==null&&Te!==null?i.style.fillOpacity=`${He+(Te-He)*h}`:Te!==null&&(i.style.fillOpacity=`${Te}`),H&&i.tagName.toLowerCase()==="path"&&oe[u]&&i.setAttribute("d",qr(oe[u],H,h));}function vt(){if(e.style.setProperty("--scroll-draw-progress","0"),T){e.style.clipPath=Ae(E==="reverse"?1:0);return}l.forEach((i,u)=>{i.style.strokeDasharray=`${d[u]}`,i.style.strokeDashoffset=E==="reverse"?"0":`${d[u]}`,m?i.style.opacity=E==="reverse"?"1":"0":i.style.opacity="",Fe&&(i.style.stroke=Fe),be!==null&&(i.style.strokeWidth=`${be}`),He!==null&&(i.style.fillOpacity=`${He}`),H&&i.tagName.toLowerCase()==="path"&&oe[u]&&i.setAttribute("d",oe[u]);});}function rt(i,u){let h=i.getAttribute("d"),N=mt(i);if(H&&oe[u]){i.setAttribute("d",H);let ue=mt(i);i.setAttribute("d",oe[u]),N=Math.max(mt(i),ue),i.setAttribute("d",h);}d[u]=N,i.style.strokeDasharray=`${N}`;}if(l.forEach((i,u)=>{Wr(i);let h=i.tagName.toLowerCase()==="path";h?oe.push(i.getAttribute("d")??""):oe.push(""),rt(i,u);let N=d[u];H&&(h?jr(oe[oe.length-1],H,i):D(`morphTo only applies to <path> elements \u2014 ignored on <${i.tagName}>.`,i)),r?(i.style.strokeDashoffset=E==="reverse"?`${N}`:"0",m&&(i.style.opacity="1"),xe&&(i.style.stroke=xe),ze!==null&&(i.style.strokeWidth=`${ze}`),Te!==null&&(i.style.fillOpacity=`${Te}`),H&&i.tagName.toLowerCase()==="path"&&i.setAttribute("d",H)):(i.style.strokeDashoffset=E==="reverse"?"0":`${N}`,m?i.style.opacity=E==="reverse"?"1":"0":i.style.opacity="",Fe&&(i.style.stroke=Fe),be!==null&&(i.style.strokeWidth=`${be}`),He!==null&&(i.style.fillOpacity=`${He}`));}),r)return T&&(e.style.clipPath=Ae(1)),j?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};T&&(e.style.clipPath=Ae(E==="reverse"?1:0));let Wt=typeof g=="string"?dt(g):null;function Ar(){return !(C===false||X||Q&&Xe||!Gr()||!l.length||!Wt||T||S!=="y"||Z||f!==1||O!==0||W||J||R!==false||H||y||K||P>0||he||I||j||fe||Ee||me||ae||A!=null||L!=null||k!=null||(w.start||"top bottom").trim()!=="top bottom"||(w.end||"bottom top").trim()!=="bottom top")}function Or(){let i=++zr,u=`svg-scroll-draw-${i}`,h=`svg-scroll-draw-host-${i}`,N=`--svg-scroll-draw-${i}`,ue=E==="reverse"?"0":"var(--ssd-len)",Me=E==="reverse"?"var(--ssd-len)":"0",de=`stroke-dashoffset:${ue};`,ee=`stroke-dashoffset:${Me};`;m&&(de+=`opacity:${E==="reverse"?1:0};`,ee+=`opacity:${E==="reverse"?0:1};`);let te=document.createElement("style");te.setAttribute("data-svg-scroll-draw",""),te.textContent=`@keyframes ${u}{from{${de}}to{${ee}}}.${h}{view-timeline-name:${N};view-timeline-axis:block;}.${u}{animation-name:${u};animation-duration:auto;animation-timing-function:${Wt};animation-fill-mode:both;animation-timeline:${N};animation-range:cover 0% cover 100%;}`,document.head.appendChild(te),e.classList.add(h);function ve(F,Y){F.style.setProperty("--ssd-len",String(d[Y])),F.style.strokeDasharray=`${d[Y]}`,F.style.strokeDashoffset="",F.style.opacity="",F.style.animationPlayState="",F.classList.add(u);}l.forEach(ve);let ge=false,Le=-1;function Pe(){if(Le>=0)return Le;let F=e.getBoundingClientRect(),{tStart:Y,tEnd:ye}=Ce({top:F.top,height:F.height},ut(),Vt(),ne,$e);return M(U(ut(),Y,ye,f))}return {destroy(){e.classList.remove(h),l.forEach(F=>{F.classList.remove(u),F.style.removeProperty("--ssd-len"),F.style.animationPlayState="";}),te.remove();},replay(){ge=false,Le=-1,l.forEach(ve);},pause(){ge=true,l.forEach(F=>{F.style.animationPlayState="paused";});},resume(){ge&&(ge=false,l.forEach(F=>{F.style.animationPlayState="running";}));},seek(F){let Y=Math.min(1,Math.max(0,F));Le=Y,ge=true,l.forEach((ye,je)=>{ye.classList.remove(u),ye.style.strokeDashoffset=E==="reverse"?`${d[je]*Y}`:`${d[je]*(1-Y)}`,m&&(ye.style.opacity=E==="reverse"?`${1-Y}`:`${Y}`);});},getProgress(){return Pe()},refresh(){l.forEach((F,Y)=>{rt(F,Y),F.style.setProperty("--ssd-len",String(d[Y]));});}}}if(Ar())return wt(Or());function Pr(){let i=Math.max(1,v),u=T?i:i*(1+Math.max(0,l.length-1)*O),h=0,N=0,ue=false;function Me(Le){let Pe=true,F=Math.min(1,Math.max(0,Le/u));if(T){let Y=Math.min(1,Math.max(0,Le/i)),ye=M(Y);c=ye,e.style.setProperty("--scroll-draw-progress",String(ye)),e.style.clipPath=Ae(E==="reverse"?1-ye:ye),he?.(ye),Y<1&&(Pe=false);}else {l.forEach((ye,je)=>{let Rr=je*O*i,Ut=Math.min(1,Math.max(0,(Le-Rr)/i));St(ye,je,M(Ut),E),Ut<1&&(Pe=false);});let Y=M(F);c=Y,he?.(Y),e.style.setProperty("--scroll-draw-progress",String(Y));}if(y){let Y=M(F);for(let ye in y){let je=parseFloat(ye);Y>=je&&!Oe.has(je)&&(Oe.add(je),y[ye]?.());}}return Pe}function de(Le){if(pe)return;let Pe=Le-h;Ie||(Ie=true,I?.());let F=Me(Pe);if(F&&!se){se=true,Me(u),j?.(),p<(K==="infinite"?1/0:K??0)&&(p++,b=setTimeout(()=>{h=performance.now(),Ie=false,se=false,Oe.clear(),vt(),we=requestAnimationFrame(de);},V));return}F||(we=requestAnimationFrame(de));}function ee(){cancelAnimationFrame(we),clearTimeout(b),h=performance.now(),N=0,pe=false,Ie=false,se=false,p=0,ue=true,c=0,Oe.clear(),vt(),we=requestAnimationFrame(de);}let te=new IntersectionObserver(Le=>{Le.forEach(Pe=>{Pe.isIntersecting&&!(W&&se)?ee():!Pe.isIntersecting&&!W&&!se&&(cancelAnimationFrame(we),clearTimeout(b),ue=false);});},{root:Z??null,threshold:G,rootMargin:ie}),ve;function ge(){clearTimeout(ve),ve=setTimeout(()=>l.forEach(rt),150);}return window.addEventListener("resize",ge),window.addEventListener("orientationchange",ge),P>0?setTimeout(()=>te.observe(e),P):te.observe(e),{destroy(){cancelAnimationFrame(we),clearTimeout(b),te.disconnect(),window.removeEventListener("resize",ge),window.removeEventListener("orientationchange",ge),clearTimeout(ve);},replay(){p=0,ee();},pause(){pe||!ue||(pe=true,N=performance.now()-h,cancelAnimationFrame(we));},resume(){pe&&(pe=false,ue=true,h=performance.now()-N,we=requestAnimationFrame(de));},seek(Le){let Pe=Math.min(1,Math.max(0,Le));c=Pe,pe=true,N=Pe*u,h=performance.now()-N,cancelAnimationFrame(we),Me(N);},getProgress(){return c},refresh(){clearTimeout(ve),l.forEach(rt);}}}if(X)return wt(Pr());zt();let Bt=()=>U(ut(),q,_e,1);function jt(){se=true,j?.(),p<(K==="infinite"?1/0:K)&&(p++,b=setTimeout(()=>{ce=true;},V));}function qt(){Qe=-1,Ye=[],Ie=false,se=false,ce=false,Oe.clear(),vt(),Be=true;}function kr(){let i=performance.now(),u=ut();if(ce&&Bt()%1&&qt(),!Be&&R===false&&u===We)return;Be=false,We=u;let h=f;if(R!==false){let ee=i-Dt,te=ee>0?Math.abs(u-(ct<0?u:ct))/ee:0;h=f*Math.max(.2,1+te*(typeof R=="number"?R:1)*.04);}ct=u,Dt=i;let N=J?Ue===-1||u>=Ue?"forward":"reverse":E;Ue=u;let ue=_-$,Me=true,de=ue===0?0:(u-$)/ue;if(isNaN(Ke)||(Ke<=0&&de>0&&fe?.(),Ke<1&&de>=1&&Ee?.(),Ke>=1&&de<1&&me?.(),Ke>0&&de<=0&&ae?.()),Ke=de,T){let ee=Gt(0,U(u,$,_,h));c=ee,e.style.setProperty("--scroll-draw-progress",String(ee));let te=N==="reverse"?1-ee:ee;e.style.clipPath=Ae(te),he?.(ee),!Ie&&U(u,$,_,h)>0&&(Ie=true,I?.()),ee>=1&&!se?jt():ee<1&&!W&&(se=false);return}if(l.forEach((ee,te)=>{let ve=te*B*ue,ge=Gt(te,U(u,$+ve,_+ve,h));St(ee,te,ge,N),te===0&&(c=ge,he?.(ge),e.style.setProperty("--scroll-draw-progress",String(ge))),ge<1&&(Me=false);}),y){let ee=M(U(u,$,_,h));for(let te in y){let ve=parseFloat(te);ee>=ve&&!Oe.has(ve)&&(Oe.add(ve),y[te]?.());}}!Ie&&U(u,$,_,h)>0&&(Ie=true,I?.()),Me&&!se?jt():!Me&&!W&&(se=false);}let nt=Ne(Z??window,[e],Bt,kr,()=>{let i=d.join();l.forEach(rt),zt(),Be=true,d.join()!==i&&ot();}),Et=P>0;function ot(){nt.hold(pe||Et);}let Yt;return Et&&(Yt=setTimeout(()=>{Et=false,ot();},P)),ot(),wt({destroy(){clearTimeout(b),clearTimeout(Yt),nt.off(),Ge();},replay(){qt(),Ue=-1,ct=-1,p=0,pe=false,c=0,clearTimeout(b),ot();},pause(){pe=true,nt.hold(true);},resume(){pe&&(pe=false,Be=true,ot());},seek(i){let u=Math.min(1,Math.max(0,i));c=u,Qe=u,Ye=[],pe=true,nt.hold(true),Cr(u,E),Be=true;},getProgress(){return c},refresh:nt.remeasure},()=>({tStart:$,tEnd:_}))}var cr=new WeakMap,Ur=0;function lt(e){return JSON.stringify(e,(t,r)=>{if(typeof r=="function")return "\u0192";if(typeof Element<"u"&&r instanceof Element){let n=cr.get(r);return n===void 0&&cr.set(r,n=++Ur),`el#${n}`}return r})}function ur(e,t){let r={...e};for(let n of Object.keys(r))typeof r[n]=="function"&&(r[n]=(...o)=>t()[n]?.(...o));return r}function Qr(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function fr(e){let t=[],r=/([\w]+)\(([^)]*)\)/g,n;for(;(n=r.exec(e))!==null;){let o=[],s=[],a=n[2].trim();if(a)for(let f of a.split(/[\s,]+/)){let m=f.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(m?parseFloat(m[1]):0),s.push(m?m[2]:"");}t.push({fn:n[1],nums:o,units:s});}return t}function Kr(e,t,r){let n=fr(e),o=fr(t);return n.length===0||n.length!==o.length?r<1?e:t:n.map((s,a)=>{let f=o[a];return s.fn!==f.fn||s.nums.length!==f.nums.length?r<1?`${s.fn}(${s.nums.map((m,g)=>`${m}${s.units[g]}`).join(", ")})`:`${f.fn}(${f.nums.map((m,g)=>`${m}${f.units[g]}`).join(", ")})`:`${s.fn}(${s.nums.map((m,g)=>`${m+(f.nums[g]-m)*r}${s.units[g]}`).join(", ")})`}).join(" ")}function mr(e,t,r){if(typeof e=="number"&&typeof t=="number")return String(e+(t-e)*r);let n=String(e),o=String(t);if(Qr(n))return pt(n,o,r);if(n.includes("("))return Kr(n,o,r);let s=n.match(/^([-+]?[\d.]+)(.*)$/),a=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&a){let f=parseFloat(s[1]),m=parseFloat(a[1]);return `${f+(m-f)*r}${s[2]||a[2]}`}return r<1?n:o}function Xr(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}var Zr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Jr=0,pr="--scroll-draw-progress";function en(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var gr={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Tt(e,t){return typeof window>"u"?gr:t.respectReducedMotion===false?dr(e,t,false):qe(t,(r,n)=>dr(e,r,n))}function dr(e,t,r){let{props:n,trigger:o={},easing:s="ease-out",speed:a=1,once:f=false,axis:m="y",scrollContainer:g,native:w=true,velocityScale:O=false,triggerElement:E,onProgress:W,onComplete:Q,onEnter:S,onLeave:z,onEnterBack:J,onLeaveBack:P}=t,A=typeof s=="function"?s:re[s]??re["ease-out"],L=le(o.start||"top bottom"),k=le(o.end||"bottom top"),y=E??e,R=typeof g=="string"?document.querySelector(g):g??null,G=Object.entries(n).map(([l,d])=>({prop:Xr(l),from:Array.isArray(d)?d[0]:"",to:Array.isArray(d)?d[1]:d}));function ie(){let l=window.getComputedStyle(e);for(let d of G)d.from===""&&(d.from=l.getPropertyValue(d.prop).trim()||"0");}function K(){for(let l of G)e.style.setProperty(l.prop,String(l.to));}let V=new Map;for(let l of [...G.map(d=>d.prop),pr])V.set(l,e.style.getPropertyValue(l));function H(){for(let[l,d]of V)d?e.style.setProperty(l,d):e.style.removeProperty(l);}if(r)return K(),Q?.(),{...gr,destroy:H,getProgress:()=>1};ie();let x=()=>R?m==="x"?R.scrollLeft:R.scrollTop:m==="x"?window.scrollX:window.scrollY,X=()=>R?m==="x"?R.clientWidth:R.clientHeight:m==="x"?window.innerWidth:window.innerHeight,v=typeof s=="string"?dt(s):null;function C(){if(!w||!en()||!v||m!=="y"||R||y!==e||f||a!==1||W||Q||S||z||J||P||O!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of G)if(!Zr.has(l.prop))return false;return true}function he(){let l=`ssd-a-${++Jr}`,d=G.map(q=>`${q.prop}:${q.from}`).join(";"),oe=G.map(q=>`${q.prop}:${q.to}`).join(";"),$=document.createElement("style");$.setAttribute("data-ssd-animate",""),$.textContent=`@keyframes ${l}{from{${d}}to{${oe}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${v};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild($),e.classList.add(l);let _=()=>{let q=e.getBoundingClientRect();return Ce({top:q.top,height:q.height},x(),X(),L,k)};ke(e,{type:"animate",getProgress:()=>B.getProgress(),getTrigger:_});let B={refresh(){},destroy(){e.classList.remove(l),$.remove(),e.style.animationPlayState="",H(),Re(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(q){let _e=Math.min(1,Math.max(0,q));e.classList.remove(l);for(let se of G)e.style.setProperty(se.prop,mr(se.from,se.to,_e));},getProgress(){let{tStart:q,tEnd:_e}=_();return A(U(x(),q,_e,a))}};return B}if(C())return he();let I=0,j=0,fe=false,Ee=-1,me=0,ae=0,T=false,M=NaN,ne=-1,$e=0,Z=y===e?G:[],Fe=false;function xe(){let l=e.style,d=Z.map(B=>l.getPropertyValue(B.prop)),oe=l.transition;Z.length&&(l.transition="none"),Z.forEach(B=>l.setProperty(B.prop,V.get(B.prop)??""));let $=ft(y,R,m);Z.forEach((B,q)=>l.setProperty(B.prop,d[q])),Z.length&&(e.offsetWidth,l.transition=oe);let _=Ce($,$.scroll,X(),L,k);Fe&&Math.abs(_.tStart-I)<1&&Math.abs(_.tEnd-j)<1||(Fe=true,I=_.tStart,j=_.tEnd);}function be(l){e.style.setProperty(pr,String(l));for(let d of G)e.style.setProperty(d.prop,mr(d.from,d.to,l));W?.(l);}function ze(l){if(isNaN(M)){M=l;return}M<=0&&l>0&&S?.(),M<1&&l>=1&&z?.(),M>=1&&l<1&&J?.(),M>0&&l<=0&&P?.(),M=l;}function He(){if(fe)return;let l=performance.now(),d=x(),oe=a;if(O!==false){let q=l-$e,_e=q>0?Math.abs(d-(ne<0?d:ne))/q:0;oe=a*Math.max(.2,1+_e*(typeof O=="number"?O:1)*.04);}ne=d,$e=l;let $=j===I?0:(d-I)/(j-I);ze($);let _=U(d,I,j,oe),B=f?Math.max(Ee,A(me=Math.max(me,_))):A(_);ae=B,be(B),B>=1&&!T?(T=true,Q?.()):B<1&&!f&&(T=false);}let Te=Ne(R??window,[y],()=>U(x(),I,j,Math.min(a,1)),He,xe);xe(),j===I&&D("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),me=U(x(),I,j,a),ae=A(me),be(ae),ke(e,{type:"animate",getProgress:()=>ae,getTrigger:()=>({tStart:I,tEnd:j})});function Ae(){fe=true,Te.hold(true);}return {destroy(){fe=true,Te.off(),H(),Re(e);},replay(){Ee=-1,me=0,T=false,ae=0,fe=false,be(0),Te.hold(false);},pause:Ae,resume(){fe&&(fe=false,Te.hold(false));},seek(l){let d=Math.min(1,Math.max(0,l));ae=d,Ee=d,me=0,Ae(),be(d);},getProgress(){return ae},refresh:Te.remeasure}}var Mt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Lt(e,t){if(typeof window>"u")return Mt;let r=typeof e=="string"?document.querySelector(e):e;return r?qe(t,(n,o)=>tn(r,n,o)):(D("scrollCounter: element not found:",e),Mt)}function tn(e,t,r){let{from:n=0,to:o,format:s,easing:a="ease-out",trigger:f={},once:m=true,decimals:g,onComplete:w}=t,O=g!==void 0?v=>v.toFixed(g):s??(v=>String(Math.round(v))),E=typeof a=="function"?a:re[a]??re["ease-out"],W=le(f.start||"top 80%"),Q=le(f.end||"top 20%");if(r)return e.textContent=O(o),w?.(),{...Mt,getProgress:()=>1};let S=0,z=0,J=false,P=-1,A=0,L=0,k=false,y=()=>window.scrollY,R=()=>window.innerHeight;function G(){let v=e.getBoundingClientRect(),C=Ce({top:v.top,height:v.height},y(),R(),W,Q);J&&Math.abs(C.tStart-S)<1&&Math.abs(C.tEnd-z)<1||(J=true,S=C.tStart,z=C.tEnd);}let ie=e.style.getPropertyValue("--scroll-draw-progress");function K(v){e.textContent=O(n+(o-n)*v),e.style.setProperty("--scroll-draw-progress",String(v));}let V=()=>U(y(),S,z,1);function H(){let v=V(),C=m?Math.max(P,E(A=Math.max(A,v))):E(v);L=C,K(C),C>=1&&!k?(k=true,w?.()):C<1&&!m&&(k=false);}G();{A=U(y(),S,z,1);let v=E(A);L=v,K(v);}let x=Ne(window,[e],V,H,G);ke(e,{type:"counter",getProgress:()=>L,getTrigger:()=>({tStart:S,tEnd:z})});let X=()=>x.hold(false);return {destroy(){x.off(),e.style.setProperty("--scroll-draw-progress",ie),Re(e);},replay(){P=-1,A=0,k=false,L=0,K(0),X();},pause:()=>x.hold(true),resume:X,seek(v){let C=Math.min(1,Math.max(0,v));L=C,P=C,A=0,x.hold(true),K(C);},getProgress(){return L}}}var yr={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Ct(e,t={}){if(typeof window>"u")return yr;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return D("scrollVideo: <video> element not found:",e),yr;let n=r,{trigger:o={},easing:s="linear",once:a=false,axis:f="y",preload:m="auto",triggerElement:g,onReady:w,onComplete:O,onProgress:E}=t,W=g??n,Q=window.matchMedia("(prefers-reduced-motion: reduce)").matches,S=typeof s=="function"?s:re[s]??re.linear,z=le(o.start||"top top"),J=le(o.end||"bottom top");n.pause(),n.hasAttribute("preload")||(n.preload=m);let P=t.from??0,A=t.to,L=0,k=0,y=false,R=-1,G=0,ie=0,K=false,V=false,H=()=>f==="x"?window.scrollX:window.scrollY,x=()=>f==="x"?window.innerWidth:window.innerHeight;function X(){let T=W.getBoundingClientRect(),M=f==="x"?T.left:T.top,ne=f==="x"?T.width:T.height,$e=Ce({top:M,height:ne},H(),x(),z,J);L=$e.tStart,k=$e.tEnd,V&&k===L&&D("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",n);}let v=NaN;function C(T){if(!V)return;let M=A??n.duration??0,ne=P+(M-P)*T;ne!==v&&(v=ne,n.currentTime=ne),n.style.setProperty("--scroll-draw-progress",String(T)),E?.(T);}let he=()=>U(H(),L,k,1);function I(){if(!V||Q)return;let T=he(),M=a?Math.max(R,S(G=Math.max(G,T))):S(T);ie=M,C(M),M>=1&&!K?(K=true,O?.()):M<1&&!a&&(K=false);}let j=Ne(window,[W],he,I,X),fe=()=>j.hold(y||!V||Q);fe();function Ee(){if(V=true,A===void 0&&(A=n.duration),Q){C(1),w?.();return}X(),w?.(),y?C(ie):fe();}n.readyState>=1?Ee():n.addEventListener("loadedmetadata",Ee,{once:true}),V||X();let me=Q?()=>{}:Ze(T=>{T&&(me(),Q=true,j.hold(true),C(1));});ke(n,{type:"video",getProgress:()=>ie,getTrigger:()=>({tStart:L,tEnd:k})});function ae(){y&&(y=false,fe());}return {destroy(){j.off(),n.removeEventListener("loadedmetadata",Ee),me(),Re(n);},replay(){R=-1,G=0,K=false,ie=0,v=NaN,C(0),ae();},pause(){y=true,j.hold(true);},resume:ae,seek(T){let M=Math.min(1,Math.max(0,T));ie=M,R=M,G=0,y=true,j.hold(true),v=NaN,C(M);},getProgress(){return ie}}}var ht={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function rn(e){let t=e>1?[0,e-1]:[0],r=[[0,e-1]];for(let n=0;n<r.length;n++){let[o,s]=r[n];if(s-o<2)continue;let a=o+s>>1;t.push(a),r.push([o,a],[a,s]);}return t}function hr(e,t){if(typeof window>"u")return ht;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="canvas")return D("scrollFrames: <canvas> element not found:",e),ht;let n=r,{frames:o,trigger:s={},easing:a="linear",once:f=false,axis:m="y",fit:g="cover",triggerElement:w,onReady:O,onLoad:E,onComplete:W,onProgress:Q}=t||{},S=Array.isArray(o)?o:null,z=t?.count,J=Math.floor(S?Math.min(z??S.length,S.length):z??NaN);if(!(S||typeof o=="function")||!Number.isFinite(J)||J<1)return D("scrollFrames: no frames. Pass `frames` as an array of URLs, or a function with a finite `count` of 1 or more.",n),ht;let P=t.concurrency??6;(!Number.isFinite(P)||P<1)&&(D("scrollFrames: `concurrency` must be a finite number of 1 or more; using 6.",t.concurrency),P=6),P=Math.floor(P);let A=n.getContext("2d");if(!A)return D("scrollFrames: the canvas has no 2D context.",n),ht;let L=J-1,k=w??n,y=window.matchMedia("(prefers-reduced-motion: reduce)").matches,R=typeof a=="function"?a:re[a]??re.linear,G=c=>{let p=R(c);return p===p?p:0},ie=le(s.start||"top top"),K=le(s.end||"bottom top"),V=0,H=0,x=false,X=-1,v=0,C=0,he=false,I=false,j=false,fe=false,Ee=0,me=-1,ae=new Array(J),T=new Uint8Array(J),M=new Set,ne=y?[L]:rn(J),$e=0,Z=0,Fe=false,xe=(c,...p)=>{if(c)try{c(...p);}catch(b){typeof reportError=="function"?reportError(b):setTimeout(()=>{throw b});}},be=false,ze=c=>{let p;try{p=S?S[c]:o(c);}catch(b){p=b;}return typeof p=="string"&&p?p:(be||(be=true,D(`scrollFrames: no URL for frame ${c}; it is skipped for its nearest neighbour.`,p)),null)},He=()=>m==="x"?window.scrollX:window.scrollY,Te=()=>m==="x"?window.innerWidth:window.innerHeight;function Ae(){!Fe&&Z===ne.length&&(Fe=true,xe(E));}function l(){for(;!I&&M.size<P&&$e<ne.length;){let c=ne[$e++];T[c]||d(c);}}function d(c){T[c]=1;let p=ze(c);if(p===null){Z++,queueMicrotask(()=>{I||Ae();});return}let b=new Image,ce=false,Se=Ge=>{ce||I||(ce=true,b.onload=b.onerror=null,M.delete(b),Ge?ae[c]=b:D("scrollFrames: a frame failed to load; its nearest neighbour shows instead:",p),Z++,l(),_(),Ae());};M.add(b),b.decoding="async",b.onerror=()=>Se(false),b.src=p,typeof b.decode=="function"?b.decode().then(()=>Se(true),()=>{b.complete?Se(b.naturalWidth>0):b.onload=()=>Se(true);}):b.onload=()=>Se(true);}function oe(c){for(let p=0;p<=L;p++){if(ae[c-p])return c-p;if(ae[c+p])return c+p}return -1}function $(){let c=n.clientWidth,p=n.clientHeight;if(!c||!p)return;let b=Math.min(window.devicePixelRatio||1,2),ce=Math.round(c*b),Se=Math.round(p*b);if(Math.abs(n.width-ce)<=1&&Math.abs(n.height-Se)<=1)return;n.width=ce,n.height=Se,me=-1;let Ge=n.clientWidth,Oe=n.clientHeight;if(Ge!==c||Oe!==p){let We=n.style;Ge!==c&&Oe!==p?(We.width=`${c}px`,We.height=`${p}px`):We.aspectRatio=`${c} / ${p}`;}}function _(){let c=oe(Ee);if(c<0||c===me)return;let p=ae[c],b=n.width,ce=n.height,Se=p.naturalWidth||b,Ge=p.naturalHeight||ce,Oe=(g==="contain"?Math.min:Math.max)(b/Se,ce/Ge),We=Se*Oe,Be=Ge*Oe;A.clearRect(0,0,b,ce),A.drawImage(p,(b-We)/2,(ce-Be)/2,We,Be),me=c,j||(j=true,xe(O));}function B(c){Ee=Math.min(L,Math.max(0,Math.round(c*L))),n.style.setProperty("--scroll-draw-progress",String(c)),_(),xe(Q,c,Ee);}function q(){let c=k.getBoundingClientRect(),p=m==="x"?c.left:c.top,b=m==="x"?c.width:c.height,ce=Ce({top:p,height:b},He(),Te(),ie,K);V=ce.tStart,H=ce.tEnd,H===V&&b>0&&!y&&!fe&&(fe=true,D("scrollFrames: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",n));}let _e=()=>U(He(),V,H,1);function se(){if(y)return;let c=_e(),p=f?Math.max(X,G(v=Math.max(v,c))):G(c);C=p,B(p),p>=1&&!he?(he=true,xe(W)):p<1&&!f&&(he=false);}function Ie(){C=1,B(1);}$(),y||q();let we=Ne(window,[k],_e,se,()=>{$(),y||q(),_();}),Qe=()=>we.hold(x||y);Qe(),y&&Ie(),l();let Ye=typeof ResizeObserver=="function"?new ResizeObserver(()=>{$(),_();}):null;Ye?.observe(n);let Ue=y?()=>{}:Ze(c=>{c&&(Ue(),y=true,we.hold(true),ne=ne.slice(0,$e),T[L]||ne.push(L),Ae(),Ie(),l());});ke(n,{type:"frames",getProgress:()=>C,getTrigger:()=>({tStart:V,tEnd:H})});function pe(){I||!x||(x=false,Qe());}return {destroy(){if(!I){I=true,we.off(),Ye?.disconnect(),Ue();for(let c of M)c.onload=c.onerror=null,c.src="";M.clear(),Re(n);}},replay(){I||(X=-1,v=0,he=false,C=0,B(0),pe());},pause(){I||(x=true,we.hold(true));},resume:pe,seek(c){if(I)return;let p=Math.min(1,Math.max(0,c===c?c:0));C=p,X=p,v=0,x=true,we.hold(true),B(p);},getProgress(){return C}}}var nn=1e4;function At(e){let{frames:t,count:r}=e;if(typeof t!="function")return lt(e);let n=Number.isFinite(r)?Math.min(Math.max(Math.floor(r),0),nn):0,o;try{o=Array.from({length:n},(s,a)=>t(a));}catch{o=["throws"];}return lt({...e,frames:o})}function br(e){if(!e||e.getAttribute("aria-hidden")==="true")return;let t=e.getAttribute("role");t==="presentation"||t==="none"||e.getAttribute("aria-label")||e.getAttribute("aria-labelledby")||D('<ScrollFrames>: the canvas has no aria-label. Say what the frames show, or set aria-hidden="true" if they are decoration.',e);}function wr(e,t){let r=document.createElement("span");r.textContent=t,r.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(r);}function bt(e=""){let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=e,t}function vr(e){let t=e.textContent??"";return e.textContent="",t.split(/(\s+)/).filter(Boolean).map(r=>{let n=e.appendChild(bt(r)),o=/^\s+$/.test(r);return o?n.style.whiteSpace="pre":n.style.display="inline-block",o?null:n}).filter(r=>r!==null)}function on(e){let t=e.textContent??"";e.textContent="";let r=[],n=null;for(let o of t){let s=bt(o),a=o===" ";a?s.style.whiteSpace="pre":(s.style.display="inline-block",r.push(s)),a||o>"\u0DFF"?n=null:n||(n=e.appendChild(bt()),n.style.cssText="display:inline-block;white-space:nowrap"),(n??e).appendChild(s);}return r}function Sr(e){let t=vr(e),r=new Map;for(let s of t){let a=s.offsetTop;r.has(a)||r.set(a,[]),r.get(a).push(s);}let n=[],o=Array.from(r.keys()).sort((s,a)=>s-a);for(let s of o){let a=r.get(s),f=bt();f.style.display="inline-block",a.forEach((m,g)=>{let w=m.nextElementSibling;f.appendChild(m),g<a.length-1&&w&&w.style.whiteSpace==="pre"&&f.appendChild(w);}),n.push(f);}return e.textContent="",n.forEach((s,a)=>{e.appendChild(s),a<n.length-1&&e.appendChild(document.createTextNode(" "));}),n}function sn(e,t,r,n){if(r<=1||n===0)return e;n=Math.min(n,1/r);let o=(r-1)*n,s=t*n,a=s+(1-o);return a<=s?e>=s?1:0:st((e-s)/(a-s),0,1)}function an(e,t){let r=[];if(t?.y!==void 0&&r.push(`translateY(${t.y*(1-e)}px)`),t?.x!==void 0&&r.push(`translateX(${t.x*(1-e)}px)`),t?.rotate!==void 0&&r.push(`rotate(${t.rotate*(1-e)}deg)`),t?.scale!==void 0){let n=t.scale+(1-t.scale)*e;r.push(`scale(${n})`);}return r.join(" ")}var Ot={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Pt(e,t={}){if(typeof window>"u")return Ot;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return D("scrollText: element not found:",e),Ot;let n=r;return qe(t,(o,s)=>ln(n,o,s))}function ln(e,t,r){let{split:n="words",stagger:o=.04,easing:s="ease-out",from:a={opacity:0,y:24},trigger:f={},once:m=true,onComplete:g}=t,w=typeof s=="function"?s:re[s]??re["ease-out"],O=le(f.start||"top 85%"),E=le(f.end||"top 40%"),W=e.innerHTML,Q=e.textContent??"",S;n==="chars"?S=on(e):n==="lines"?S=Sr(e):S=vr(e),wr(e,Q);let z=S.length;function J(x,X){a?.opacity!==void 0&&(x.style.opacity=String(a.opacity+(1-a.opacity)*X));let v=an(X,a);v&&(x.style.transform=v);}function P(x){e.style.setProperty("--scroll-draw-progress",String(x)),S.forEach((X,v)=>{let C=w(sn(x,v,z,o));J(X,C);});}if(r)return P(1),g?.(),{...Ot,destroy:()=>{e.innerHTML=W;},getProgress:()=>1};P(0);let A=0,L=0,k=-1,y=0,R=false;function G(){({tStart:A,tEnd:L}=Ce(e.getBoundingClientRect(),window.scrollY,window.innerHeight,O,E));}let ie=()=>U(window.scrollY,A,L,1);function K(){let x=m?k=Math.max(k,ie()):ie();y=x,P(x),x>=1&&!R?(R=true,g?.()):x<1&&!m&&(R=false);}G();let V=Ne(window,[e],ie,K,()=>{n==="lines"&&(e.innerHTML=W,S=Sr(e),wr(e,Q),P(y)),G();});ke(e,{type:"text",getProgress:()=>y,getTrigger:()=>({tStart:A,tEnd:L})});let H=()=>V.hold(false);return {destroy(){V.off(),e.innerHTML=W,Re(e);},replay(){k=-1,R=false,y=0,P(0),H();},pause:()=>V.hold(true),resume:H,seek(x){V.hold(true),P(y=k=st(x,0,1));},getProgress(){return y}}}var tt=e=>typeof e=="function"?e():vue.unref(e);function Ve(e,t,r,n=lt){let o=null,s=t(),a=()=>{o?.destroy(),o=e.value?r(e.value,ur(s,()=>s),s):null;};vue.onMounted(a),vue.watch(()=>n(s=t()),a),vue.onUnmounted(()=>{o?.destroy(),o=null;});}function mn(e={}){let t=vue.ref(null);return Ve(t,()=>tt(e),xt),t}var Er={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},pn=[null,Boolean,[Boolean,String],[Boolean,Number]],kt=e=>({type:e,default:void 0}),Rt=vue.defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(Er).map(([e,t])=>[e,t?kt(pn[t]):null])),setup(e,{slots:t}){let r=vue.ref(null);return Ve(r,()=>{let n={};for(let o in Er){let s=e[o];s!=null&&(n[o]=s);}return n},xt),()=>vue.h("div",{ref:r},t.default?.())}});function dn(e){let t=vue.ref(null);return Ve(t,()=>tt(e),Tt),t}var $t=vue.defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let r=vue.ref(null);return Ve(r,()=>e.options,Tt),()=>vue.h("div",{ref:r},t.default?.())}});function gn(e){let t=vue.ref(null);return Ve(t,()=>tt(e),Lt),t}var Ft=vue.defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:kt(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=vue.ref(null);return Ve(t,()=>{let r={to:e.to};return e.from!=null&&(r.from=e.from),e.format!=null&&(r.format=e.format),e.easing!=null&&(r.easing=e.easing),e.trigger!=null&&(r.trigger=e.trigger),e.once!=null&&(r.once=e.once),e.decimals!=null&&(r.decimals=e.decimals),e.onComplete!=null&&(r.onComplete=e.onComplete),r},Lt),()=>vue.h("span",{ref:t})}});function yn(e={}){let t=vue.ref(null);return Ve(t,()=>tt(e),Ct),t}var Ht=vue.defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=vue.ref(null);return Ve(t,()=>e.options??{},Ct),()=>vue.h("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}}),Mr=(e,{triggerElement:t,...r},n)=>{let o=typeof t=="string"?document.querySelector(t):t;return typeof t=="string"&&!o&&D(`<ScrollFrames>: triggerElement "${t}" matches nothing; measuring the canvas.`),hr(e,{...r,frames:n.frames,triggerElement:o??void 0})};function hn(e){let t=vue.ref(null);return Ve(t,()=>tt(e),Mr,At),t}var xr={frames:0,count:0,trigger:0,easing:0,once:1,axis:0,triggerElement:0,fit:0,concurrency:0,onReady:0,onLoad:0,onComplete:0,onProgress:0},It=vue.defineComponent({name:"ScrollFrames",props:Object.fromEntries(Object.entries(xr).map(([e,t])=>[e,t?kt(Boolean):e==="frames"?{required:true}:null])),setup(e){let t=vue.ref(null);return Ve(t,()=>{let r={};for(let n in xr){let o=e[n];o!=null&&(r[n]=o);}return r},Mr,At),vue.onMounted(()=>br(t.value)),()=>vue.h("canvas",{ref:t,role:"img"})}});function bn(e={}){let t=vue.ref(null);return Ve(t,()=>tt(e),Pt),t}var Nt=vue.defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let r=vue.ref(null);return Ve(r,()=>e.options??{},Pt),()=>vue.h(e.tag,{ref:r},t.default?.())}});function Xo(){return {install(e){e.component("ScrollDraw",Rt),e.component("ScrollAnimate",$t),e.component("ScrollCounter",Ft),e.component("ScrollVideo",Ht),e.component("ScrollFrames",It),e.component("ScrollText",Nt);}}}exports.ScrollAnimate=$t;exports.ScrollCounter=Ft;exports.ScrollDraw=Rt;exports.ScrollFrames=It;exports.ScrollText=Nt;exports.ScrollVideo=Ht;exports.createScrollDrawPlugin=Xo;exports.useScrollAnimate=dn;exports.useScrollCounter=gn;exports.useScrollDraw=mn;exports.useScrollFrames=hn;exports.useScrollText=bn;exports.useScrollVideo=yn;
@@ -1,8 +1,9 @@
1
- export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollText, ScrollVideo, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollText, useScrollVideo } from '../vue/index.mjs';
1
+ export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollFrames, ScrollText, ScrollVideo, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollFrames, useScrollText, useScrollVideo } from '../vue/index.mjs';
2
2
  export { a as ScrollDrawOptions } from '../types-9bcJdVcg.mjs';
3
3
  import { App } from 'vue';
4
4
  export { S as ScrollAnimateOptions } from '../engine-BLWKCfxC.mjs';
5
5
  export { S as ScrollCounterOptions } from '../index-DVjblK_4.mjs';
6
+ export { ScrollFramesOptions } from '../frames/index.mjs';
6
7
  export { ScrollTextOptions } from '../text/index.mjs';
7
8
  export { ScrollVideoOptions } from '../video/index.mjs';
8
9
 
@@ -17,6 +18,7 @@ export { ScrollVideoOptions } from '../video/index.mjs';
17
18
  * import { useScrollDraw, ScrollDraw } from 'svg-scroll-draw/nuxt';
18
19
  * import { useScrollAnimate, ScrollAnimate } from 'svg-scroll-draw/nuxt';
19
20
  * import { useScrollText, useScrollCounter } from 'svg-scroll-draw/nuxt';
21
+ * import { useScrollFrames, ScrollFrames } from 'svg-scroll-draw/nuxt';
20
22
  * ```
21
23
  *
22
24
  * ## Option B — Global auto-registration via Nuxt plugin
@@ -35,7 +37,7 @@ export { ScrollVideoOptions } from '../video/index.mjs';
35
37
  * Vue plugin that globally registers all svg-scroll-draw components.
36
38
  * Pass to nuxtApp.vueApp.use() inside a Nuxt plugin.
37
39
  *
38
- * Registers: <ScrollDraw>, <ScrollAnimate>, <ScrollCounter>, <ScrollVideo>, <ScrollText>
40
+ * Registers: <ScrollDraw>, <ScrollAnimate>, <ScrollCounter>, <ScrollVideo>, <ScrollFrames>, <ScrollText>
39
41
  */
40
42
  declare function createScrollDrawPlugin(): {
41
43
  install(app: App): void;
@@ -1,8 +1,9 @@
1
- export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollText, ScrollVideo, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollText, useScrollVideo } from '../vue/index.js';
1
+ export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollFrames, ScrollText, ScrollVideo, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollFrames, useScrollText, useScrollVideo } from '../vue/index.js';
2
2
  export { a as ScrollDrawOptions } from '../types-9bcJdVcg.js';
3
3
  import { App } from 'vue';
4
4
  export { S as ScrollAnimateOptions } from '../engine-6VsjEwzb.js';
5
5
  export { S as ScrollCounterOptions } from '../index-BN8yKeQ3.js';
6
+ export { ScrollFramesOptions } from '../frames/index.js';
6
7
  export { ScrollTextOptions } from '../text/index.js';
7
8
  export { ScrollVideoOptions } from '../video/index.js';
8
9
 
@@ -17,6 +18,7 @@ export { ScrollVideoOptions } from '../video/index.js';
17
18
  * import { useScrollDraw, ScrollDraw } from 'svg-scroll-draw/nuxt';
18
19
  * import { useScrollAnimate, ScrollAnimate } from 'svg-scroll-draw/nuxt';
19
20
  * import { useScrollText, useScrollCounter } from 'svg-scroll-draw/nuxt';
21
+ * import { useScrollFrames, ScrollFrames } from 'svg-scroll-draw/nuxt';
20
22
  * ```
21
23
  *
22
24
  * ## Option B — Global auto-registration via Nuxt plugin
@@ -35,7 +37,7 @@ export { ScrollVideoOptions } from '../video/index.js';
35
37
  * Vue plugin that globally registers all svg-scroll-draw components.
36
38
  * Pass to nuxtApp.vueApp.use() inside a Nuxt plugin.
37
39
  *
38
- * Registers: <ScrollDraw>, <ScrollAnimate>, <ScrollCounter>, <ScrollVideo>, <ScrollText>
40
+ * Registers: <ScrollDraw>, <ScrollAnimate>, <ScrollCounter>, <ScrollVideo>, <ScrollFrames>, <ScrollText>
39
41
  */
40
42
  declare function createScrollDrawPlugin(): {
41
43
  install(app: App): void;
@@ -1 +1 @@
1
- import {b,d,f,h,j}from'../chunk-5SKWSPQT.mjs';export{d as ScrollAnimate,f as ScrollCounter,b as ScrollDraw,j as ScrollText,h as ScrollVideo,c as useScrollAnimate,e as useScrollCounter,a as useScrollDraw,i as useScrollText,g as useScrollVideo}from'../chunk-5SKWSPQT.mjs';import'../chunk-XSVTHCLO.mjs';import'../chunk-BRV2B2YW.mjs';import'../chunk-32ZCSGFZ.mjs';import'../chunk-U5TKLHGW.mjs';import'../chunk-7USW2XFB.mjs';import'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import'../chunk-NV6YTPHI.mjs';import'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';function s(){return {install(o){o.component("ScrollDraw",b),o.component("ScrollAnimate",d),o.component("ScrollCounter",f),o.component("ScrollVideo",h),o.component("ScrollText",j);}}}export{s as createScrollDrawPlugin};
1
+ import {b,d,f,h,j,l}from'../chunk-WKOT2MND.mjs';export{d as ScrollAnimate,f as ScrollCounter,b as ScrollDraw,j as ScrollFrames,l as ScrollText,h as ScrollVideo,c as useScrollAnimate,e as useScrollCounter,a as useScrollDraw,i as useScrollFrames,k as useScrollText,g as useScrollVideo}from'../chunk-WKOT2MND.mjs';import'../chunk-22P4KBPG.mjs';import'../chunk-D2BHE4F2.mjs';import'../chunk-XSVTHCLO.mjs';import'../chunk-BRV2B2YW.mjs';import'../chunk-32ZCSGFZ.mjs';import'../chunk-U5TKLHGW.mjs';import'../chunk-7USW2XFB.mjs';import'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import'../chunk-NV6YTPHI.mjs';import'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';function x(){return {install(o){o.component("ScrollDraw",b),o.component("ScrollAnimate",d),o.component("ScrollCounter",f),o.component("ScrollVideo",h),o.component("ScrollFrames",j),o.component("ScrollText",l);}}}export{x as createScrollDrawPlugin};
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- 'use strict';var Ur=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Ur__default=/*#__PURE__*/_interopDefault(Ur);function br({tension:e=2.5,friction:n=2.2}={}){return r=>1-Math.cos(r*Math.PI*e)*Math.pow(1-r,n)}function wr({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),o=Math.sqrt(t),s=0,a=[];for(let m=0;m<r;m++){let g=Math.pow(o,m);a.push(g),s+=g;}let u=[0],f=0;for(let m=0;m<r;m++)f+=a[m]/s,u.push(f);return m=>{if(m<=0)return 0;if(m>=1)return 1;for(let g=0;g<r;g++)if(m<=u[g+1]){let h=(m-u[g])/(u[g+1]-u[g]);if(g===0)return h*(2-h);let b=1-Math.pow(t,g);return b+(1-b)*(2*h-1)*(2*h-1)}return 1}}function vr({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),o=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-o)*(2*Math.PI)/t)+1}var Q={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:br(),bounce:wr(),elastic:vr()};function Ye(e,n,r){return Math.min(r,Math.max(n,e))}function X(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}}var Dt=(e,n)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:n;function Ot(e,n,r,t){return e+r+n*Dt(t,0)}function Nt(e,n){return n*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:Dt(e,1))}function V(e,n,r,t){return r===n?0:Ye((e-n)/(r-n)*t,0,1)}function fe(e,n,r,t,o){let s=Ot(e.top,e.height,n,t.element)-Nt(t.viewport,r),a=Ot(e.top,e.height,n,o.element)-Nt(o.viewport,r);return {tStart:s,tEnd:a}}function ze(e,n,r){let t=e.getBoundingClientRect(),o=r==="x"?t.width:t.height;return n?{top:r==="x"?t.left-n.getBoundingClientRect().left-n.clientLeft+n.scrollLeft:t.top-n.getBoundingClientRect().top-n.clientTop+n.scrollTop,height:o,scroll:0}:{top:r==="x"?t.left:t.top,height:o,scroll:r==="x"?window.scrollX:window.scrollY}}function ot(e){let n=parseFloat(e.getAttribute("pathLength")??"");if(n>0)return n;let r=e.tagName.toLowerCase();if(r==="rect"){let t=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(t+o)}if(r==="circle"){let t=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*t}return e.getTotalLength()}function Ht(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 st(e,n,r){let t=Ht(e),o=Ht(n);return !t||!o?e:`rgb(${Math.round(t[0]+(o[0]-t[0])*r)},${Math.round(t[1]+(o[1]-t[1])*r)},${Math.round(t[2]+(o[2]-t[2])*r)})`}var It={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 le(e,...n){Ge&&console.warn(`[svg-scroll-draw] ${e}`,...n);}var Er="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Sr="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Ft=33;function Tr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function xr(e){let n=[];for(let r=0;r<Ft;r++){let t=r/(Ft-1);n.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${n.join(",")})`}function it(e){switch(e){case "linear":return "linear";case "ease-in":return Er;case "ease-out":return Sr;case "ease-in-out":return Tr()?xr(Q["ease-in-out"]):null;default:return null}}var Vt=Symbol.for("svg-scroll-draw.registry");function _t(){let e=globalThis;return e[Vt]||(e[Vt]=new Map)}function Ee(e,n){_t().set(e,n);}function Se(e){_t().delete(e);}function je(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let n=window.matchMedia("(prefers-reduced-motion: reduce)"),r=o=>e(!!o.matches);if(typeof n.addEventListener=="function")return n.addEventListener("change",r),()=>n.removeEventListener("change",r);let t=n;return t.addListener?.(r),()=>t.removeListener?.(r)}function He(e,n){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return n(e,true);let r=n(e,false),t=je(s=>{if(!s)return;t();let a=(r.getProgress?.()??0)>=1;r.destroy(),r=n(a?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(r))o[s]=(...a)=>r[s]?.(...a);return o.destroy=()=>{t(),r.destroy();},o}var Xe,at=new Set,lt=new WeakMap,Ke=new Map,Wt=e=>{let n=e.getBoundingClientRect();return n.width+" "+n.height};function Mr(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 zt(e,n){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let r=()=>n();Xe??(Xe=new ResizeObserver(o=>{let s=false;for(let{target:a}of o)lt.get(a)!==Wt(a)&&(s=true),lt.set(a,"");s&&at.forEach(a=>a());})),at.add(r);let t=Mr(e);return [document.body,document.documentElement].forEach(o=>o&&t.add(o)),t.forEach(o=>{lt.has(o)||lt.set(o,Wt(o)),Ke.set(o,(Ke.get(o)??0)+1),Xe.observe(o);}),()=>{at.delete(r)&&(t.forEach(o=>{let s=(Ke.get(o)??1)-1;if(s)return void Ke.set(o,s);Ke.delete(o),Xe?.unobserve(o);}),at.size||(Xe?.disconnect(),Xe=void 0));}}function ve(e,n,r,t,o){let s,a=NaN,u,f,m=()=>{s=0,t(),!u&&!s&&(a=r())>0&&a<1&&(s=requestAnimationFrame(m));},g=()=>{!s&&!u&&r()!==a&&(s=requestAnimationFrame(m));},h=k=>{u=k,cancelAnimationFrame(s),s=a=NaN,g();},b=()=>{clearTimeout(f),o(),g();},O=()=>{clearTimeout(f),f=setTimeout(b,150);},H=zt(n,O),w=k=>{e[k]("scroll",g,{passive:true}),window[k]("resize",O),window[k]("orientationchange",O);};return w("addEventListener"),g(),{hold:h,remeasure:b,off(){h(true),w("removeEventListener"),H(),clearTimeout(f);}}}var Pr=0;function Lr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Gt(e,n){let r="";try{r=getComputedStyle(e).getPropertyValue(n).trim();}catch{}return r||(e.getAttribute(n)??"").trim()}var jt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function Cr(e){if(!Ge)return;let n=Gt(e,"stroke");if(!n||n==="none"){le("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!jt.has(r)&&!jt.has(Gt(e,"fill"))&&le("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 o(){let s=r==="x"?window.scrollX:window.scrollY,a=e-s,u=n-s,f=r==="x";t.innerHTML=`
3
- <div style="position:absolute;${f?`left:${a}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${a}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
4
- <div style="position:absolute;${f?`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",o,{passive:true}),o(),{el:t,destroy(){window.removeEventListener("scroll",o),t.remove();}}}var Bt=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,qt=/[MmLlHhVvCcSsQqTtAaZz]/g;function $r(e,n,r){if(!Ge)return;let t=(e.match(qt)??[]).join("").toUpperCase(),o=(n.match(qt)??[]).join("").toUpperCase(),s=(e.match(Bt)??[]).length,a=(n.match(Bt)??[]).length;if(t!==o){le(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${o||"\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!==a&&le(`morphTo: coordinate count differs (${s} \u2192 ${a}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function kr(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let a=parseFloat(s),u=t[o++]??a;return String(+(a+(u-a)*r).toFixed(4))})}function Qt(e,n={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:He(n,(r,t)=>Rr(e,r,t))}function Rr(e,n,r){let{preset:t,...o}=n,s=t?{...It[t],...o}:o,{selector:a="path, polyline, line, polygon, rect, circle",speed:u=1,fade:f=false,easing:m="linear",trigger:g={},stagger:h=0,direction:b="forward",once:O=false,debug:H=false,axis:w="y",scrollContainer:k,autoReverse:ie=false,delay:R=0,strokeColor:T,strokeWidth:x,fillOpacity:L,waypoints:y,velocityScale:S=false,threshold:N=0,rootMargin:Y="0px",repeat:_=0,repeatDelay:I=0,morphTo:W,clip:M,autoplay:K=false,duration:v=1e3,native:$=true,onProgress:Te,onStart:J,onComplete:G,onEnter:me,onLeave:xe,onEnterBack:ye,onLeaveBack:pe}=s,E=M===true?"left":typeof M=="string"?M:false,P=typeof m=="function"?m:Q[m]??Q.linear,he=X(g.start||"top bottom"),Oe=X(g.end||"bottom top"),Z=typeof k=="string"?document.querySelector(k):k??null,Pe=Array.isArray(T)?T[0]:null,Le=Array.isArray(T)?T[1]:typeof T=="string"?T:null,be=Array.isArray(x)?x[0]:null,Ne=Array.isArray(x)?x[1]:typeof x=="number"?x:null,Ce=Array.isArray(L)?L[0]:null,we=Array.isArray(L)?L[1]:typeof L=="number"?L:null;function Ae(i){let c=i*100;switch(E){case "right":return `inset(0 0 0 ${100-c}%)`;case "top":return `inset(0 0 ${100-c}% 0)`;case "bottom":return `inset(${100-c}% 0 0 0)`;case "center":return `circle(${i*150}% at 50% 50%)`;default:return `inset(0 ${100-c}% 0 0)`}}let l=E?[]:Array.from(e.querySelectorAll(a)),p=[],ee=[],D=0,z=0,U=h,j=0,De=0,te=false,$e=false,ke=0,ft=-1,et=[],tt=-1,de=false,Me=0,Ie=0,Fe,mt=false,pt=null;function vt(){pt?.destroy(),pt=null;}let Ve=new Set,Et=NaN,_e=true,rt=-1,St=performance.now(),We=NaN;function nt(){return Z?w==="x"?Z.scrollLeft:Z.scrollTop:w==="x"?window.scrollX:window.scrollY}function Tt(){return Z?w==="x"?Z.clientWidth:Z.clientHeight:w==="x"?window.innerWidth:window.innerHeight}function xt(){let i=ze(e,Z,w);return fe(i,i.scroll,Tt(),he,Oe)}function fr(){let i=z-D,c=l.length-1,d=Z??document.documentElement,A=w==="x"?"Width":"Height";if(U=h,h>0&&c>0&&i>0){let ne=d[`scroll${A}`]-d[`client${A}`]-1-D-i/u;ne>=0&&(U=Math.min(h,ne/(c*i)));}let re=Math.max(0,c)*U*i,ce=i/Math.min(u,1);j=D+Math.min(0,re,ce,re+ce),De=D+Math.max(0,re,ce,re+ce);}function Mt(){(({tStart:D,tEnd:z}=xt())),fr(),H&&Ge&&(vt(),pt=Ar(D,z,w));}function dt(i,c=xt){Ee(e,{type:"draw",getProgress:()=>i.getProgress(),getTrigger:c});let d=i.destroy;return i.destroy=()=>{d.call(i),Se(e);},i}function Pt(i,c){return O&&!ie?Math.max(ft,P(et[i]=Math.max(et[i]??0,c))):P(c)}function mr(i,c){if(e.style.setProperty("--scroll-draw-progress",String(i)),E){let d=c==="reverse"?1-i:i;e.style.clipPath=Ae(d);return}l.forEach((d,A)=>gt(d,A,i,c));}function gt(i,c,d,A){i.style.strokeDashoffset=A==="reverse"?`${p[c]*d}`:`${p[c]*(1-d)}`,f&&(i.style.opacity=A==="reverse"?`${1-d}`:`${d}`),Pe&&Le?i.style.stroke=st(Pe,Le,d):Le&&(i.style.stroke=Le),be!==null&&Ne!==null?i.style.strokeWidth=`${be+(Ne-be)*d}`:Ne!==null&&(i.style.strokeWidth=`${Ne}`),Ce!==null&&we!==null?i.style.fillOpacity=`${Ce+(we-Ce)*d}`:we!==null&&(i.style.fillOpacity=`${we}`),W&&i.tagName.toLowerCase()==="path"&&ee[c]&&i.setAttribute("d",kr(ee[c],W,d));}function yt(){if(e.style.setProperty("--scroll-draw-progress","0"),E){e.style.clipPath=Ae(b==="reverse"?1:0);return}l.forEach((i,c)=>{i.style.strokeDasharray=`${p[c]}`,i.style.strokeDashoffset=b==="reverse"?"0":`${p[c]}`,f?i.style.opacity=b==="reverse"?"1":"0":i.style.opacity="",Pe&&(i.style.stroke=Pe),be!==null&&(i.style.strokeWidth=`${be}`),Ce!==null&&(i.style.fillOpacity=`${Ce}`),W&&i.tagName.toLowerCase()==="path"&&ee[c]&&i.setAttribute("d",ee[c]);});}function qe(i,c){let d=i.getAttribute("d"),A=ot(i);if(W&&ee[c]){i.setAttribute("d",W);let re=ot(i);i.setAttribute("d",ee[c]),A=Math.max(ot(i),re),i.setAttribute("d",d);}p[c]=A,i.style.strokeDasharray=`${A}`;}if(l.forEach((i,c)=>{Cr(i);let d=i.tagName.toLowerCase()==="path";d?ee.push(i.getAttribute("d")??""):ee.push(""),qe(i,c);let A=p[c];W&&(d?$r(ee[ee.length-1],W,i):le(`morphTo only applies to <path> elements \u2014 ignored on <${i.tagName}>.`,i)),r?(i.style.strokeDashoffset=b==="reverse"?`${A}`:"0",f&&(i.style.opacity="1"),Le&&(i.style.stroke=Le),Ne!==null&&(i.style.strokeWidth=`${Ne}`),we!==null&&(i.style.fillOpacity=`${we}`),W&&i.tagName.toLowerCase()==="path"&&i.setAttribute("d",W)):(i.style.strokeDashoffset=b==="reverse"?"0":`${A}`,f?i.style.opacity=b==="reverse"?"1":"0":i.style.opacity="",Pe&&(i.style.stroke=Pe),be!==null&&(i.style.strokeWidth=`${be}`),Ce!==null&&(i.style.fillOpacity=`${Ce}`));}),r)return E&&(e.style.clipPath=Ae(1)),G?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};E&&(e.style.clipPath=Ae(b==="reverse"?1:0));let Lt=typeof m=="string"?it(m):null;function pr(){return !($===false||K||H&&Ge||!Lr()||!l.length||!Lt||E||w!=="y"||Z||u!==1||h!==0||O||ie||S!==false||W||y||_||R>0||Te||J||G||me||xe||ye||pe||T!=null||x!=null||L!=null||(g.start||"top bottom").trim()!=="top bottom"||(g.end||"bottom top").trim()!=="bottom top")}function dr(){let i=++Pr,c=`svg-scroll-draw-${i}`,d=`svg-scroll-draw-host-${i}`,A=`--svg-scroll-draw-${i}`,re=b==="reverse"?"0":"var(--ssd-len)",ce=b==="reverse"?"var(--ssd-len)":"0",ne=`stroke-dashoffset:${re};`,B=`stroke-dashoffset:${ce};`;f&&(ne+=`opacity:${b==="reverse"?1:0};`,B+=`opacity:${b==="reverse"?0:1};`);let q=document.createElement("style");q.setAttribute("data-svg-scroll-draw",""),q.textContent=`@keyframes ${c}{from{${ne}}to{${B}}}.${d}{view-timeline-name:${A};view-timeline-axis:block;}.${c}{animation-name:${c};animation-duration:auto;animation-timing-function:${Lt};animation-fill-mode:both;animation-timeline:${A};animation-range:cover 0% cover 100%;}`,document.head.appendChild(q),e.classList.add(d);function ae(C,F){C.style.setProperty("--ssd-len",String(p[F])),C.style.strokeDasharray=`${p[F]}`,C.style.strokeDashoffset="",C.style.opacity="",C.style.animationPlayState="",C.classList.add(c);}l.forEach(ae);let oe=false,ue=-1;function ge(){if(ue>=0)return ue;let C=e.getBoundingClientRect(),{tStart:F,tEnd:se}=fe({top:C.top,height:C.height},nt(),Tt(),he,Oe);return P(V(nt(),F,se,u))}return {destroy(){e.classList.remove(d),l.forEach(C=>{C.classList.remove(c),C.style.removeProperty("--ssd-len"),C.style.animationPlayState="";}),q.remove();},replay(){oe=false,ue=-1,l.forEach(ae);},pause(){oe=true,l.forEach(C=>{C.style.animationPlayState="paused";});},resume(){oe&&(oe=false,l.forEach(C=>{C.style.animationPlayState="running";}));},seek(C){let F=Math.min(1,Math.max(0,C));ue=F,oe=true,l.forEach((se,Re)=>{se.classList.remove(c),se.style.strokeDashoffset=b==="reverse"?`${p[Re]*F}`:`${p[Re]*(1-F)}`,f&&(se.style.opacity=b==="reverse"?`${1-F}`:`${F}`);});},getProgress(){return ge()},refresh(){l.forEach((C,F)=>{qe(C,F),C.style.setProperty("--ssd-len",String(p[F]));});}}}if(pr())return dt(dr());function gr(){let i=Math.max(1,v),c=E?i:i*(1+Math.max(0,l.length-1)*h),d=0,A=0,re=false;function ce(ue){let ge=true,C=Math.min(1,Math.max(0,ue/c));if(E){let F=Math.min(1,Math.max(0,ue/i)),se=P(F);Me=se,e.style.setProperty("--scroll-draw-progress",String(se)),e.style.clipPath=Ae(b==="reverse"?1-se:se),Te?.(se),F<1&&(ge=false);}else {l.forEach((se,Re)=>{let hr=Re*h*i,Rt=Math.min(1,Math.max(0,(ue-hr)/i));gt(se,Re,P(Rt),b),Rt<1&&(ge=false);});let F=P(C);Me=F,Te?.(F),e.style.setProperty("--scroll-draw-progress",String(F));}if(y){let F=P(C);for(let se in y){let Re=parseFloat(se);F>=Re&&!Ve.has(Re)&&(Ve.add(Re),y[se]?.());}}return ge}function ne(ue){if(de)return;let ge=ue-d;$e||($e=true,J?.());let C=ce(ge);if(C&&!te){te=true,ce(c),G?.(),Ie<(_==="infinite"?1/0:_??0)&&(Ie++,Fe=setTimeout(()=>{d=performance.now(),$e=false,te=false,Ve.clear(),yt(),ke=requestAnimationFrame(ne);},I));return}C||(ke=requestAnimationFrame(ne));}function B(){cancelAnimationFrame(ke),clearTimeout(Fe),d=performance.now(),A=0,de=false,$e=false,te=false,Ie=0,re=true,Me=0,Ve.clear(),yt(),ke=requestAnimationFrame(ne);}let q=new IntersectionObserver(ue=>{ue.forEach(ge=>{ge.isIntersecting&&!(O&&te)?B():!ge.isIntersecting&&!O&&!te&&(cancelAnimationFrame(ke),clearTimeout(Fe),re=false);});},{root:Z??null,threshold:N,rootMargin:Y}),ae;function oe(){clearTimeout(ae),ae=setTimeout(()=>l.forEach(qe),150);}return window.addEventListener("resize",oe),window.addEventListener("orientationchange",oe),R>0?setTimeout(()=>q.observe(e),R):q.observe(e),{destroy(){cancelAnimationFrame(ke),clearTimeout(Fe),q.disconnect(),window.removeEventListener("resize",oe),window.removeEventListener("orientationchange",oe),clearTimeout(ae);},replay(){Ie=0,B();},pause(){de||!re||(de=true,A=performance.now()-d,cancelAnimationFrame(ke));},resume(){de&&(de=false,re=true,d=performance.now()-A,ke=requestAnimationFrame(ne));},seek(ue){let ge=Math.min(1,Math.max(0,ue));Me=ge,de=true,A=ge*c,d=performance.now()-A,cancelAnimationFrame(ke),ce(A);},getProgress(){return Me},refresh(){clearTimeout(ae),l.forEach(qe);}}}if(K)return dt(gr());Mt();let Ct=()=>V(nt(),j,De,1);function At(){te=true,G?.(),Ie<(_==="infinite"?1/0:_)&&(Ie++,Fe=setTimeout(()=>{mt=true;},I));}function $t(){ft=-1,et=[],$e=false,te=false,mt=false,Ve.clear(),yt(),_e=true;}function yr(){let i=performance.now(),c=nt();if(mt&&Ct()%1&&$t(),!_e&&S===false&&c===Et)return;_e=false,Et=c;let d=u;if(S!==false){let B=i-St,q=B>0?Math.abs(c-(rt<0?c:rt))/B:0;d=u*Math.max(.2,1+q*(typeof S=="number"?S:1)*.04);}rt=c,St=i;let A=ie?tt===-1||c>=tt?"forward":"reverse":b;tt=c;let re=z-D,ce=true,ne=re===0?0:(c-D)/re;if(isNaN(We)||(We<=0&&ne>0&&me?.(),We<1&&ne>=1&&xe?.(),We>=1&&ne<1&&ye?.(),We>0&&ne<=0&&pe?.()),We=ne,E){let B=Pt(0,V(c,D,z,d));Me=B,e.style.setProperty("--scroll-draw-progress",String(B));let q=A==="reverse"?1-B:B;e.style.clipPath=Ae(q),Te?.(B),!$e&&V(c,D,z,d)>0&&($e=true,J?.()),B>=1&&!te?At():B<1&&!O&&(te=false);return}if(l.forEach((B,q)=>{let ae=q*U*re,oe=Pt(q,V(c,D+ae,z+ae,d));gt(B,q,oe,A),q===0&&(Me=oe,Te?.(oe),e.style.setProperty("--scroll-draw-progress",String(oe))),oe<1&&(ce=false);}),y){let B=P(V(c,D,z,d));for(let q in y){let ae=parseFloat(q);B>=ae&&!Ve.has(ae)&&(Ve.add(ae),y[q]?.());}}!$e&&V(c,D,z,d)>0&&($e=true,J?.()),ce&&!te?At():!ce&&!O&&(te=false);}let Qe=ve(Z??window,[e],Ct,yr,()=>{let i=p.join();l.forEach(qe),Mt(),_e=true,p.join()!==i&&Ue();}),ht=R>0;function Ue(){Qe.hold(de||ht);}let kt;return ht&&(kt=setTimeout(()=>{ht=false,Ue();},R)),Ue(),dt({destroy(){clearTimeout(Fe),clearTimeout(kt),Qe.off(),vt();},replay(){$t(),tt=-1,rt=-1,Ie=0,de=false,Me=0,clearTimeout(Fe),Ue();},pause(){de=true,Qe.hold(true);},resume(){de&&(de=false,_e=true,Ue());},seek(i){let c=Math.min(1,Math.max(0,i));Me=c,ft=c,et=[],de=true,Qe.hold(true),mr(c,b),_e=true;},getProgress(){return Me},refresh:Qe.remeasure},()=>({tStart:D,tEnd:z}))}var Ut=new WeakMap,Or=0;function Yt(e){return JSON.stringify(e,(n,r)=>{if(typeof r=="function")return "\u0192";if(typeof Element<"u"&&r instanceof Element){let t=Ut.get(r);return t===void 0&&Ut.set(r,t=++Or),`el#${t}`}return r})}function Xt(e,n){let r={...e};for(let t of Object.keys(r))typeof r[t]=="function"&&(r[t]=(...o)=>n()[t]?.(...o));return r}function Nr(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Kt(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let o=[],s=[],a=t[2].trim();if(a)for(let u of a.split(/[\s,]+/)){let f=u.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(f?parseFloat(f[1]):0),s.push(f?f[2]:"");}n.push({fn:t[1],nums:o,units:s});}return n}function Dr(e,n,r){let t=Kt(e),o=Kt(n);return t.length===0||t.length!==o.length?r<1?e:n:t.map((s,a)=>{let u=o[a];return s.fn!==u.fn||s.nums.length!==u.nums.length?r<1?`${s.fn}(${s.nums.map((f,m)=>`${f}${s.units[m]}`).join(", ")})`:`${u.fn}(${u.nums.map((f,m)=>`${f}${u.units[m]}`).join(", ")})`:`${s.fn}(${s.nums.map((f,m)=>`${f+(u.nums[m]-f)*r}${s.units[m]}`).join(", ")})`}).join(" ")}function Jt(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),o=String(n);if(Nr(t))return st(t,o,r);if(t.includes("("))return Dr(t,o,r);let s=t.match(/^([-+]?[\d.]+)(.*)$/),a=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&a){let u=parseFloat(s[1]),f=parseFloat(a[1]);return `${u+(f-u)*r}${s[2]||a[2]}`}return r<1?t:o}function Hr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var Ir=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Fr=0,Zt="--scroll-draw-progress";function Vr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var tr={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function rr(e,n){return typeof window>"u"?tr:n.respectReducedMotion===false?er(e,n,false):He(n,(r,t)=>er(e,r,t))}function er(e,n,r){let{props:t,trigger:o={},easing:s="ease-out",speed:a=1,once:u=false,axis:f="y",scrollContainer:m,native:g=true,velocityScale:h=false,triggerElement:b,onProgress:O,onComplete:H,onEnter:w,onLeave:k,onEnterBack:ie,onLeaveBack:R}=n,T=typeof s=="function"?s:Q[s]??Q["ease-out"],x=X(o.start||"top bottom"),L=X(o.end||"bottom top"),y=b??e,S=typeof m=="string"?document.querySelector(m):m??null,N=Object.entries(t).map(([l,p])=>({prop:Hr(l),from:Array.isArray(p)?p[0]:"",to:Array.isArray(p)?p[1]:p}));function Y(){let l=window.getComputedStyle(e);for(let p of N)p.from===""&&(p.from=l.getPropertyValue(p.prop).trim()||"0");}function _(){for(let l of N)e.style.setProperty(l.prop,String(l.to));}let I=new Map;for(let l of [...N.map(p=>p.prop),Zt])I.set(l,e.style.getPropertyValue(l));function W(){for(let[l,p]of I)p?e.style.setProperty(l,p):e.style.removeProperty(l);}if(r)return _(),H?.(),{...tr,destroy:W,getProgress:()=>1};Y();let M=()=>S?f==="x"?S.scrollLeft:S.scrollTop:f==="x"?window.scrollX:window.scrollY,K=()=>S?f==="x"?S.clientWidth:S.clientHeight:f==="x"?window.innerWidth:window.innerHeight,v=typeof s=="string"?it(s):null;function $(){if(!g||!Vr()||!v||f!=="y"||S||y!==e||u||a!==1||O||H||w||k||ie||R||h!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of N)if(!Ir.has(l.prop))return false;return true}function Te(){let l=`ssd-a-${++Fr}`,p=N.map(j=>`${j.prop}:${j.from}`).join(";"),ee=N.map(j=>`${j.prop}:${j.to}`).join(";"),D=document.createElement("style");D.setAttribute("data-ssd-animate",""),D.textContent=`@keyframes ${l}{from{${p}}to{${ee}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${v};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(D),e.classList.add(l);let z=()=>{let j=e.getBoundingClientRect();return fe({top:j.top,height:j.height},M(),K(),x,L)};Ee(e,{type:"animate",getProgress:()=>U.getProgress(),getTrigger:z});let U={refresh(){},destroy(){e.classList.remove(l),D.remove(),e.style.animationPlayState="",W(),Se(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(j){let De=Math.min(1,Math.max(0,j));e.classList.remove(l);for(let te of N)e.style.setProperty(te.prop,Jt(te.from,te.to,De));},getProgress(){let{tStart:j,tEnd:De}=z();return T(V(M(),j,De,a))}};return U}if($())return Te();let J=0,G=0,me=false,xe=-1,ye=0,pe=0,E=false,P=NaN,he=-1,Oe=0,Z=y===e?N:[],Pe=false;function Le(){let l=e.style,p=Z.map(U=>l.getPropertyValue(U.prop)),ee=l.transition;Z.length&&(l.transition="none"),Z.forEach(U=>l.setProperty(U.prop,I.get(U.prop)??""));let D=ze(y,S,f);Z.forEach((U,j)=>l.setProperty(U.prop,p[j])),Z.length&&(e.offsetWidth,l.transition=ee);let z=fe(D,D.scroll,K(),x,L);Pe&&Math.abs(z.tStart-J)<1&&Math.abs(z.tEnd-G)<1||(Pe=true,J=z.tStart,G=z.tEnd);}function be(l){e.style.setProperty(Zt,String(l));for(let p of N)e.style.setProperty(p.prop,Jt(p.from,p.to,l));O?.(l);}function Ne(l){if(isNaN(P)){P=l;return}P<=0&&l>0&&w?.(),P<1&&l>=1&&k?.(),P>=1&&l<1&&ie?.(),P>0&&l<=0&&R?.(),P=l;}function Ce(){if(me)return;let l=performance.now(),p=M(),ee=a;if(h!==false){let j=l-Oe,De=j>0?Math.abs(p-(he<0?p:he))/j:0;ee=a*Math.max(.2,1+De*(typeof h=="number"?h:1)*.04);}he=p,Oe=l;let D=G===J?0:(p-J)/(G-J);Ne(D);let z=V(p,J,G,ee),U=u?Math.max(xe,T(ye=Math.max(ye,z))):T(z);pe=U,be(U),U>=1&&!E?(E=true,H?.()):U<1&&!u&&(E=false);}let we=ve(S??window,[y],()=>V(M(),J,G,Math.min(a,1)),Ce,Le);Le(),G===J&&le("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),ye=V(M(),J,G,a),pe=T(ye),be(pe),Ee(e,{type:"animate",getProgress:()=>pe,getTrigger:()=>({tStart:J,tEnd:G})});function Ae(){me=true,we.hold(true);}return {destroy(){me=true,we.off(),W(),Se(e);},replay(){xe=-1,ye=0,E=false,pe=0,me=false,be(0),we.hold(false);},pause:Ae,resume(){me&&(me=false,we.hold(false));},seek(l){let p=Math.min(1,Math.max(0,l));pe=p,xe=p,ye=0,Ae(),be(p);},getProgress(){return pe},refresh:we.remeasure}}var bt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function nr(e,n){if(typeof window>"u")return bt;let r=typeof e=="string"?document.querySelector(e):e;return r?He(n,(t,o)=>_r(r,t,o)):(le("scrollCounter: element not found:",e),bt)}function _r(e,n,r){let{from:t=0,to:o,format:s,easing:a="ease-out",trigger:u={},once:f=true,decimals:m,onComplete:g}=n,h=m!==void 0?v=>v.toFixed(m):s??(v=>String(Math.round(v))),b=typeof a=="function"?a:Q[a]??Q["ease-out"],O=X(u.start||"top 80%"),H=X(u.end||"top 20%");if(r)return e.textContent=h(o),g?.(),{...bt,getProgress:()=>1};let w=0,k=0,ie=false,R=-1,T=0,x=0,L=false,y=()=>window.scrollY,S=()=>window.innerHeight;function N(){let v=e.getBoundingClientRect(),$=fe({top:v.top,height:v.height},y(),S(),O,H);ie&&Math.abs($.tStart-w)<1&&Math.abs($.tEnd-k)<1||(ie=true,w=$.tStart,k=$.tEnd);}let Y=e.style.getPropertyValue("--scroll-draw-progress");function _(v){e.textContent=h(t+(o-t)*v),e.style.setProperty("--scroll-draw-progress",String(v));}let I=()=>V(y(),w,k,1);function W(){let v=I(),$=f?Math.max(R,b(T=Math.max(T,v))):b(v);x=$,_($),$>=1&&!L?(L=true,g?.()):$<1&&!f&&(L=false);}N();{T=V(y(),w,k,1);let v=b(T);x=v,_(v);}let M=ve(window,[e],I,W,N);Ee(e,{type:"counter",getProgress:()=>x,getTrigger:()=>({tStart:w,tEnd:k})});let K=()=>M.hold(false);return {destroy(){M.off(),e.style.setProperty("--scroll-draw-progress",Y),Se(e);},replay(){R=-1,T=0,L=false,x=0,_(0),K();},pause:()=>M.hold(true),resume:K,seek(v){let $=Math.min(1,Math.max(0,v));x=$,R=$,T=0,M.hold(true),_($);},getProgress(){return x}}}var or={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function sr(e,n={}){if(typeof window>"u")return or;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return le("scrollVideo: <video> element not found:",e),or;let t=r,{trigger:o={},easing:s="linear",once:a=false,axis:u="y",preload:f="auto",triggerElement:m,onReady:g,onComplete:h,onProgress:b}=n,O=m??t,H=window.matchMedia("(prefers-reduced-motion: reduce)").matches,w=typeof s=="function"?s:Q[s]??Q.linear,k=X(o.start||"top top"),ie=X(o.end||"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=f);let R=n.from??0,T=n.to,x=0,L=0,y=false,S=-1,N=0,Y=0,_=false,I=false,W=()=>u==="x"?window.scrollX:window.scrollY,M=()=>u==="x"?window.innerWidth:window.innerHeight;function K(){let E=O.getBoundingClientRect(),P=u==="x"?E.left:E.top,he=u==="x"?E.width:E.height,Oe=fe({top:P,height:he},W(),M(),k,ie);x=Oe.tStart,L=Oe.tEnd,I&&L===x&&le("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t);}let v=NaN;function $(E){if(!I)return;let P=T??t.duration??0,he=R+(P-R)*E;he!==v&&(v=he,t.currentTime=he),t.style.setProperty("--scroll-draw-progress",String(E)),b?.(E);}let Te=()=>V(W(),x,L,1);function J(){if(!I||H)return;let E=Te(),P=a?Math.max(S,w(N=Math.max(N,E))):w(E);Y=P,$(P),P>=1&&!_?(_=true,h?.()):P<1&&!a&&(_=false);}let G=ve(window,[O],Te,J,K),me=()=>G.hold(y||!I||H);me();function xe(){if(I=true,T===void 0&&(T=t.duration),H){$(1),g?.();return}K(),g?.(),y?$(Y):me();}t.readyState>=1?xe():t.addEventListener("loadedmetadata",xe,{once:true}),I||K();let ye=H?()=>{}:je(E=>{E&&(ye(),H=true,G.hold(true),$(1));});Ee(t,{type:"video",getProgress:()=>Y,getTrigger:()=>({tStart:x,tEnd:L})});function pe(){y&&(y=false,me());}return {destroy(){G.off(),t.removeEventListener("loadedmetadata",xe),ye(),Se(t);},replay(){S=-1,N=0,_=false,Y=0,v=NaN,$(0),pe();},pause(){y=true,G.hold(true);},resume:pe,seek(E){let P=Math.min(1,Math.max(0,E));Y=P,S=P,N=0,y=true,G.hold(true),v=NaN,$(P);},getProgress(){return Y}}}function ir(e,n){let r=document.createElement("span");r.textContent=n,r.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(r);}function ct(e=""){let n=document.createElement("span");return n.setAttribute("aria-hidden","true"),n.textContent=e,n}function lr(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=e.appendChild(ct(r)),o=/^\s+$/.test(r);return o?t.style.whiteSpace="pre":t.style.display="inline-block",o?null:t}).filter(r=>r!==null)}function Wr(e){let n=e.textContent??"";e.textContent="";let r=[],t=null;for(let o of n){let s=ct(o),a=o===" ";a?s.style.whiteSpace="pre":(s.style.display="inline-block",r.push(s)),a||o>"\u0DFF"?t=null:t||(t=e.appendChild(ct()),t.style.cssText="display:inline-block;white-space:nowrap"),(t??e).appendChild(s);}return r}function ar(e){let n=lr(e),r=new Map;for(let s of n){let a=s.offsetTop;r.has(a)||r.set(a,[]),r.get(a).push(s);}let t=[],o=Array.from(r.keys()).sort((s,a)=>s-a);for(let s of o){let a=r.get(s),u=ct();u.style.display="inline-block",a.forEach((f,m)=>{let g=f.nextElementSibling;u.appendChild(f),m<a.length-1&&g&&g.style.whiteSpace==="pre"&&u.appendChild(g);}),t.push(u);}return e.textContent="",t.forEach((s,a)=>{e.appendChild(s),a<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function zr(e,n,r,t){if(r<=1||t===0)return e;t=Math.min(t,1/r);let o=(r-1)*t,s=n*t,a=s+(1-o);return a<=s?e>=s?1:0:Ye((e-s)/(a-s),0,1)}function Gr(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 wt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function cr(e,n={}){if(typeof window>"u")return wt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return le("scrollText: element not found:",e),wt;let t=r;return He(n,(o,s)=>jr(t,o,s))}function jr(e,n,r){let{split:t="words",stagger:o=.04,easing:s="ease-out",from:a={opacity:0,y:24},trigger:u={},once:f=true,onComplete:m}=n,g=typeof s=="function"?s:Q[s]??Q["ease-out"],h=X(u.start||"top 85%"),b=X(u.end||"top 40%"),O=e.innerHTML,H=e.textContent??"",w;t==="chars"?w=Wr(e):t==="lines"?w=ar(e):w=lr(e),ir(e,H);let k=w.length;function ie(M,K){a?.opacity!==void 0&&(M.style.opacity=String(a.opacity+(1-a.opacity)*K));let v=Gr(K,a);v&&(M.style.transform=v);}function R(M){e.style.setProperty("--scroll-draw-progress",String(M)),w.forEach((K,v)=>{let $=g(zr(M,v,k,o));ie(K,$);});}if(r)return R(1),m?.(),{...wt,destroy:()=>{e.innerHTML=O;},getProgress:()=>1};R(0);let T=0,x=0,L=-1,y=0,S=false;function N(){({tStart:T,tEnd:x}=fe(e.getBoundingClientRect(),window.scrollY,window.innerHeight,h,b));}let Y=()=>V(window.scrollY,T,x,1);function _(){let M=f?L=Math.max(L,Y()):Y();y=M,R(M),M>=1&&!S?(S=true,m?.()):M<1&&!f&&(S=false);}N();let I=ve(window,[e],Y,_,()=>{t==="lines"&&(e.innerHTML=O,w=ar(e),ir(e,H),R(y)),N();});Ee(e,{type:"text",getProgress:()=>y,getTrigger:()=>({tStart:T,tEnd:x})});let W=()=>I.hold(false);return {destroy(){I.off(),e.innerHTML=O,Se(e);},replay(){L=-1,S=false,y=0,R(0),W();},pause:()=>I.hold(true),resume:W,seek(M){I.hold(true),R(y=L=Ye(M,0,1));},getProgress(){return y}}}function Qr(e,n={}){let[r,t]=Ur.useState(0),o=Ur.useRef(n);o.current=n;let s=Ur.useRef(0);return Ur.useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let a=typeof e=="string"?document.querySelector(e):e.current;if(!a)return;let u=a,{axis:f="y",scrollContainer:m,trigger:g={}}=o.current,h=typeof m=="string"?document.querySelector(m):m??null,b=X(g.start||"top bottom"),O=X(g.end||"bottom top"),H=0,w=0;function k(){return h?f==="x"?h.scrollLeft:h.scrollTop:f==="x"?window.scrollX:window.scrollY}function ie(){return h?f==="x"?h.clientWidth:h.clientHeight:f==="x"?window.innerWidth:window.innerHeight}function R(){let y=ze(u,h,f);({tStart:H,tEnd:w}=fe(y,y.scroll,ie(),b,O));}function T(){let{speed:y=1,easing:S="linear",once:N=false}=o.current,Y=typeof S=="function"?S:Q[S]??Q.linear,_=V(k(),H,w,y),I=Y(N?s.current=Math.max(s.current,_):_);t(I);}R();let x=ve(h??window,[u],()=>V(k(),H,w,Math.min(o.current.speed??1,1)),T,R),L=je(y=>{y&&(L(),x.off(),t(1));});return ()=>{L(),x.off();}},[]),r}function Je(e,n,r){let t=Ur.useRef(n);t.current=n;let o=Yt(n);Ur.useEffect(()=>{if(!e.current)return;let s=r(e.current,Xt(t.current,()=>t.current));return ()=>s.destroy()},[o]);}var Xr=/^(data-|aria-)|^(id|role|title|tabIndex|lang|dir|hidden)$/;function Ze(e){let n={},r={};for(let[t,o]of Object.entries(e))(Xr.test(t)?r:n)[t]=o;return [n,r]}function So({children:e,className:n,style:r,...t}){let o=Ur.useRef(null),[s,a]=Ze(t);return Je(o,s,Qt),jsxRuntime.jsx("div",{ref:o,className:n,style:r,...a,children:e})}function To({children:e,className:n,style:r,...t}){let o=Ur.useRef(null),[s,a]=Ze(t);return Je(o,s,rr),jsxRuntime.jsx("div",{ref:o,className:n,style:r,...a,children:e})}function xo({className:e,style:n,...r}){let t=Ur.useRef(null),[o,s]=Ze(r);return Je(t,o,nr),jsxRuntime.jsx("span",{ref:t,className:e,style:n,...s})}function Mo({src:e,poster:n,className:r,style:t,muted:o=true,playsInline:s=true,...a}){let u=Ur.useRef(null),[f,m]=Ze(a);return Je(u,f,sr),jsxRuntime.jsx("video",{...m,ref:u,src:e,poster:n,className:r,style:t,muted:o,playsInline:s,preload:f.preload??"auto"})}function Po({children:e,as:n="p",className:r,style:t,...o}){let s=Ur.useRef(null),[a,u]=Ze(o);return Je(s,a,cr),Ur__default.default.createElement(n,{...u,ref:s,className:r,style:t},e)}exports.ScrollAnimate=To;exports.ScrollCounter=xo;exports.ScrollDraw=So;exports.ScrollText=Po;exports.ScrollVideo=Mo;exports.useScrollDrawProgress=Qr;
2
+ 'use strict';var tn=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var tn__default=/*#__PURE__*/_interopDefault(tn);function xr({tension:e=2.5,friction:n=2.2}={}){return r=>1-Math.cos(r*Math.PI*e)*Math.pow(1-r,n)}function Tr({bounces:e=3,decay:n=.5}={}){let r=Math.max(1,Math.round(e)),t=Math.max(.01,Math.min(.99,n)),o=Math.sqrt(t),s=0,i=[];for(let d=0;d<r;d++){let y=Math.pow(o,d);i.push(y),s+=y;}let u=[0],c=0;for(let d=0;d<r;d++)c+=i[d]/s,u.push(c);return d=>{if(d<=0)return 0;if(d>=1)return 1;for(let y=0;y<r;y++)if(d<=u[y+1]){let v=(d-u[y])/(u[y+1]-u[y]);if(y===0)return v*(2-v);let S=1-Math.pow(t,y);return S+(1-S)*(2*v-1)*(2*v-1)}return 1}}function Mr({amplitude:e=1,period:n=.4}={}){let r=Math.max(1,e),t=Math.max(.1,n),o=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-o)*(2*Math.PI)/t)+1}var K={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:xr(),bounce:Tr(),elastic:Mr()};function ot(e,n,r){return Math.min(r,Math.max(n,e))}function te(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}}var Dt=(e,n)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:n;function Ht(e,n,r,t){return e+r+n*Dt(t,0)}function It(e,n){return n*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:Dt(e,1))}function j(e,n,r,t){return r===n?0:ot((e-n)/(r-n)*t,0,1)}function ye(e,n,r,t,o){let s=Ht(e.top,e.height,n,t.element)-It(t.viewport,r),i=Ht(e.top,e.height,n,o.element)-It(o.viewport,r);return {tStart:s,tEnd:i}}function Ke(e,n,r){let t=e.getBoundingClientRect(),o=r==="x"?t.width:t.height;return n?{top:r==="x"?t.left-n.getBoundingClientRect().left-n.clientLeft+n.scrollLeft:t.top-n.getBoundingClientRect().top-n.clientTop+n.scrollTop,height:o,scroll:0}:{top:r==="x"?t.left:t.top,height:o,scroll:r==="x"?window.scrollX:window.scrollY}}function ft(e){let n=parseFloat(e.getAttribute("pathLength")??"");if(n>0)return n;let r=e.tagName.toLowerCase();if(r==="rect"){let t=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(t+o)}if(r==="circle"){let t=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*t}return e.getTotalLength()}function Ft(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 mt(e,n,r){let t=Ft(e),o=Ft(n);return !t||!o?e:`rgb(${Math.round(t[0]+(o[0]-t[0])*r)},${Math.round(t[1]+(o[1]-t[1])*r)},${Math.round(t[2]+(o[2]-t[2])*r)})`}var _t={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 B(e,...n){Je&&console.warn(`[svg-scroll-draw] ${e}`,...n);}var Pr="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Lr="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Vt=33;function Ar(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function Cr(e){let n=[];for(let r=0;r<Vt;r++){let t=r/(Vt-1);n.push(String(Math.round(e(t)*1e5)/1e5));}return `linear(${n.join(",")})`}function pt(e){switch(e){case "linear":return "linear";case "ease-in":return Pr;case "ease-out":return Lr;case "ease-in-out":return Ar()?Cr(K["ease-in-out"]):null;default:return null}}var zt=Symbol.for("svg-scroll-draw.registry");function Wt(){let e=globalThis;return e[zt]||(e[zt]=new Map)}function Oe(e,n){Wt().set(e,n);}function $e(e){Wt().delete(e);}function je(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let n=window.matchMedia("(prefers-reduced-motion: reduce)"),r=o=>e(!!o.matches);if(typeof n.addEventListener=="function")return n.addEventListener("change",r),()=>n.removeEventListener("change",r);let t=n;return t.addListener?.(r),()=>t.removeListener?.(r)}function Be(e,n){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return n(e,true);let r=n(e,false),t=je(s=>{if(!s)return;t();let i=(r.getProgress?.()??0)>=1;r.destroy(),r=n(i?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(r))o[s]=(...i)=>r[s]?.(...i);return o.destroy=()=>{t(),r.destroy();},o}var st,dt=new Set,gt=new WeakMap,it=new Map,Gt=e=>{let n=e.getBoundingClientRect();return n.width+" "+n.height};function kr(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 jt(e,n){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let r=()=>n();st??(st=new ResizeObserver(o=>{let s=false;for(let{target:i}of o)gt.get(i)!==Gt(i)&&(s=true),gt.set(i,"");s&&dt.forEach(i=>i());})),dt.add(r);let t=kr(e);return [document.body,document.documentElement].forEach(o=>o&&t.add(o)),t.forEach(o=>{gt.has(o)||gt.set(o,Gt(o)),it.set(o,(it.get(o)??0)+1),st.observe(o);}),()=>{dt.delete(r)&&(t.forEach(o=>{let s=(it.get(o)??1)-1;if(s)return void it.set(o,s);it.delete(o),st?.unobserve(o);}),dt.size||(st?.disconnect(),st=void 0));}}function Ae(e,n,r,t,o){let s,i=NaN,u,c,d=()=>{s=0,t(),!u&&!s&&(i=r())>0&&i<1&&(s=requestAnimationFrame(d));},y=()=>{!s&&!u&&r()!==i&&(s=requestAnimationFrame(d));},v=$=>{u=$,cancelAnimationFrame(s),s=i=NaN,y();},S=()=>{clearTimeout(c),o(),y();},z=()=>{clearTimeout(c),c=setTimeout(S,150);},G=jt(n,z),b=$=>{e[$]("scroll",y,{passive:true}),window[$]("resize",z),window[$]("orientationchange",z);};return b("addEventListener"),y(),{hold:v,remeasure:S,off(){v(true),b("removeEventListener"),G(),clearTimeout(c);}}}var Rr=0;function Or(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Bt(e,n){let r="";try{r=getComputedStyle(e).getPropertyValue(n).trim();}catch{}return r||(e.getAttribute(n)??"").trim()}var qt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function $r(e){if(!Je)return;let n=Bt(e,"stroke");if(!n||n==="none"){B("Element has no stroke \u2014 path will not be visible.",e);return}let r=(e.getAttribute("fill")??"").trim();r&&!qt.has(r)&&!qt.has(Bt(e,"fill"))&&B("Element has a fill \u2014 it may obscure the stroke animation.",e);}function Nr(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 o(){let s=r==="x"?window.scrollX:window.scrollY,i=e-s,u=n-s,c=r==="x";t.innerHTML=`
3
+ <div style="position:absolute;${c?`left:${i}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${i}px;left:0;right:0;border-top:2px dashed #22c55e;`}padding:2px 6px;color:#22c55e;background:rgba(0,0,0,.6)">\u25B6 start</div>
4
+ <div style="position:absolute;${c?`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",o,{passive:true}),o(),{el:t,destroy(){window.removeEventListener("scroll",o),t.remove();}}}var Ut=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,Yt=/[MmLlHhVvCcSsQqTtAaZz]/g;function Hr(e,n,r){if(!Je)return;let t=(e.match(Yt)??[]).join("").toUpperCase(),o=(n.match(Yt)??[]).join("").toUpperCase(),s=(e.match(Ut)??[]).length,i=(n.match(Ut)??[]).length;if(t!==o){B(`morphTo: command sequence differs (${t||"\u2205"} \u2192 ${o||"\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!==i&&B(`morphTo: coordinate count differs (${s} \u2192 ${i}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,r);}function Ir(e,n,r){let t=(n.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let i=parseFloat(s),u=t[o++]??i;return String(+(i+(u-i)*r).toFixed(4))})}function Qt(e,n={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:Be(n,(r,t)=>Dr(e,r,t))}function Dr(e,n,r){let{preset:t,...o}=n,s=t?{..._t[t],...o}:o,{selector:i="path, polyline, line, polygon, rect, circle",speed:u=1,fade:c=false,easing:d="linear",trigger:y={},stagger:v=0,direction:S="forward",once:z=false,debug:G=false,axis:b="y",scrollContainer:$,autoReverse:J=false,delay:k=0,strokeColor:A,strokeWidth:T,fillOpacity:O,waypoints:h,velocityScale:R=false,threshold:D=0,rootMargin:re="0px",repeat:q=0,repeatDelay:N=0,morphTo:F,clip:M,autoplay:Z=false,duration:x=1e3,native:C=true,onProgress:be,onStart:_,onComplete:Y,onEnter:fe,onLeave:xe,onEnterBack:me,onLeaveBack:le}=s,P=M===true?"left":typeof M=="string"?M:false,L=typeof d=="function"?d:K[d]??K.linear,se=te(y.start||"top bottom"),Ne=te(y.end||"bottom top"),ee=typeof $=="string"?document.querySelector($):$??null,He=Array.isArray(A)?A[0]:null,Te=Array.isArray(A)?A[1]:typeof A=="string"?A:null,we=Array.isArray(T)?T[0]:null,_e=Array.isArray(T)?T[1]:typeof T=="number"?T:null,Ie=Array.isArray(O)?O[0]:null,Me=Array.isArray(O)?O[1]:typeof O=="number"?O:null;function Ce(a){let m=a*100;switch(P){case "right":return `inset(0 0 0 ${100-m}%)`;case "top":return `inset(0 0 ${100-m}% 0)`;case "bottom":return `inset(${100-m}% 0 0 0)`;case "center":return `circle(${a*150}% at 50% 50%)`;default:return `inset(0 ${100-m}% 0 0)`}}let l=P?[]:Array.from(e.querySelectorAll(i)),g=[],ie=[],H=0,W=0,U=v,Q=0,Fe=0,ae=false,De=false,ve=0,Qe=-1,qe=[],Ue=-1,pe=false,f=0,p=0,E,ce=false,Ee=null;function Ve(){Ee?.destroy(),Ee=null;}let ke=new Set,ze=NaN,We=true,ct=-1,Tt=performance.now(),Xe=NaN;function ut(){return ee?b==="x"?ee.scrollLeft:ee.scrollTop:b==="x"?window.scrollX:window.scrollY}function Mt(){return ee?b==="x"?ee.clientWidth:ee.clientHeight:b==="x"?window.innerWidth:window.innerHeight}function Pt(){let a=Ke(e,ee,b);return ye(a,a.scroll,Mt(),se,Ne)}function hr(){let a=W-H,m=l.length-1,w=ee??document.documentElement,V=b==="x"?"Width":"Height";if(U=v,v>0&&m>0&&a>0){let de=w[`scroll${V}`]-w[`client${V}`]-1-H-a/u;de>=0&&(U=Math.min(v,de/(m*a)));}let ue=Math.max(0,m)*U*a,Pe=a/Math.min(u,1);Q=H+Math.min(0,ue,Pe,ue+Pe),Fe=H+Math.max(0,ue,Pe,ue+Pe);}function Lt(){(({tStart:H,tEnd:W}=Pt())),hr(),G&&Je&&(Ve(),Ee=Nr(H,W,b));}function bt(a,m=Pt){Oe(e,{type:"draw",getProgress:()=>a.getProgress(),getTrigger:m});let w=a.destroy;return a.destroy=()=>{w.call(a),$e(e);},a}function At(a,m){return z&&!J?Math.max(Qe,L(qe[a]=Math.max(qe[a]??0,m))):L(m)}function yr(a,m){if(e.style.setProperty("--scroll-draw-progress",String(a)),P){let w=m==="reverse"?1-a:a;e.style.clipPath=Ce(w);return}l.forEach((w,V)=>wt(w,V,a,m));}function wt(a,m,w,V){a.style.strokeDashoffset=V==="reverse"?`${g[m]*w}`:`${g[m]*(1-w)}`,c&&(a.style.opacity=V==="reverse"?`${1-w}`:`${w}`),He&&Te?a.style.stroke=mt(He,Te,w):Te&&(a.style.stroke=Te),we!==null&&_e!==null?a.style.strokeWidth=`${we+(_e-we)*w}`:_e!==null&&(a.style.strokeWidth=`${_e}`),Ie!==null&&Me!==null?a.style.fillOpacity=`${Ie+(Me-Ie)*w}`:Me!==null&&(a.style.fillOpacity=`${Me}`),F&&a.tagName.toLowerCase()==="path"&&ie[m]&&a.setAttribute("d",Ir(ie[m],F,w));}function vt(){if(e.style.setProperty("--scroll-draw-progress","0"),P){e.style.clipPath=Ce(S==="reverse"?1:0);return}l.forEach((a,m)=>{a.style.strokeDasharray=`${g[m]}`,a.style.strokeDashoffset=S==="reverse"?"0":`${g[m]}`,c?a.style.opacity=S==="reverse"?"1":"0":a.style.opacity="",He&&(a.style.stroke=He),we!==null&&(a.style.strokeWidth=`${we}`),Ie!==null&&(a.style.fillOpacity=`${Ie}`),F&&a.tagName.toLowerCase()==="path"&&ie[m]&&a.setAttribute("d",ie[m]);});}function tt(a,m){let w=a.getAttribute("d"),V=ft(a);if(F&&ie[m]){a.setAttribute("d",F);let ue=ft(a);a.setAttribute("d",ie[m]),V=Math.max(ft(a),ue),a.setAttribute("d",w);}g[m]=V,a.style.strokeDasharray=`${V}`;}if(l.forEach((a,m)=>{$r(a);let w=a.tagName.toLowerCase()==="path";w?ie.push(a.getAttribute("d")??""):ie.push(""),tt(a,m);let V=g[m];F&&(w?Hr(ie[ie.length-1],F,a):B(`morphTo only applies to <path> elements \u2014 ignored on <${a.tagName}>.`,a)),r?(a.style.strokeDashoffset=S==="reverse"?`${V}`:"0",c&&(a.style.opacity="1"),Te&&(a.style.stroke=Te),_e!==null&&(a.style.strokeWidth=`${_e}`),Me!==null&&(a.style.fillOpacity=`${Me}`),F&&a.tagName.toLowerCase()==="path"&&a.setAttribute("d",F)):(a.style.strokeDashoffset=S==="reverse"?"0":`${V}`,c?a.style.opacity=S==="reverse"?"1":"0":a.style.opacity="",He&&(a.style.stroke=He),we!==null&&(a.style.strokeWidth=`${we}`),Ie!==null&&(a.style.fillOpacity=`${Ie}`));}),r)return P&&(e.style.clipPath=Ce(1)),Y?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};P&&(e.style.clipPath=Ce(S==="reverse"?1:0));let Ct=typeof d=="string"?pt(d):null;function br(){return !(C===false||Z||G&&Je||!Or()||!l.length||!Ct||P||b!=="y"||ee||u!==1||v!==0||z||J||R!==false||F||h||q||k>0||be||_||Y||fe||xe||me||le||A!=null||T!=null||O!=null||(y.start||"top bottom").trim()!=="top bottom"||(y.end||"bottom top").trim()!=="bottom top")}function wr(){let a=++Rr,m=`svg-scroll-draw-${a}`,w=`svg-scroll-draw-host-${a}`,V=`--svg-scroll-draw-${a}`,ue=S==="reverse"?"0":"var(--ssd-len)",Pe=S==="reverse"?"var(--ssd-len)":"0",de=`stroke-dashoffset:${ue};`,ne=`stroke-dashoffset:${Pe};`;c&&(de+=`opacity:${S==="reverse"?1:0};`,ne+=`opacity:${S==="reverse"?0:1};`);let oe=document.createElement("style");oe.setAttribute("data-svg-scroll-draw",""),oe.textContent=`@keyframes ${m}{from{${de}}to{${ne}}}.${w}{view-timeline-name:${V};view-timeline-axis:block;}.${m}{animation-name:${m};animation-duration:auto;animation-timing-function:${Ct};animation-fill-mode:both;animation-timeline:${V};animation-range:cover 0% cover 100%;}`,document.head.appendChild(oe),e.classList.add(w);function Se(I,X){I.style.setProperty("--ssd-len",String(g[X])),I.style.strokeDasharray=`${g[X]}`,I.style.strokeDashoffset="",I.style.opacity="",I.style.animationPlayState="",I.classList.add(m);}l.forEach(Se);let ge=false,Le=-1;function Re(){if(Le>=0)return Le;let I=e.getBoundingClientRect(),{tStart:X,tEnd:he}=ye({top:I.top,height:I.height},ut(),Mt(),se,Ne);return L(j(ut(),X,he,u))}return {destroy(){e.classList.remove(w),l.forEach(I=>{I.classList.remove(m),I.style.removeProperty("--ssd-len"),I.style.animationPlayState="";}),oe.remove();},replay(){ge=false,Le=-1,l.forEach(Se);},pause(){ge=true,l.forEach(I=>{I.style.animationPlayState="paused";});},resume(){ge&&(ge=false,l.forEach(I=>{I.style.animationPlayState="running";}));},seek(I){let X=Math.min(1,Math.max(0,I));Le=X,ge=true,l.forEach((he,Ge)=>{he.classList.remove(m),he.style.strokeDashoffset=S==="reverse"?`${g[Ge]*X}`:`${g[Ge]*(1-X)}`,c&&(he.style.opacity=S==="reverse"?`${1-X}`:`${X}`);});},getProgress(){return Re()},refresh(){l.forEach((I,X)=>{tt(I,X),I.style.setProperty("--ssd-len",String(g[X]));});}}}if(br())return bt(wr());function vr(){let a=Math.max(1,x),m=P?a:a*(1+Math.max(0,l.length-1)*v),w=0,V=0,ue=false;function Pe(Le){let Re=true,I=Math.min(1,Math.max(0,Le/m));if(P){let X=Math.min(1,Math.max(0,Le/a)),he=L(X);f=he,e.style.setProperty("--scroll-draw-progress",String(he)),e.style.clipPath=Ce(S==="reverse"?1-he:he),be?.(he),X<1&&(Re=false);}else {l.forEach((he,Ge)=>{let Sr=Ge*v*a,Nt=Math.min(1,Math.max(0,(Le-Sr)/a));wt(he,Ge,L(Nt),S),Nt<1&&(Re=false);});let X=L(I);f=X,be?.(X),e.style.setProperty("--scroll-draw-progress",String(X));}if(h){let X=L(I);for(let he in h){let Ge=parseFloat(he);X>=Ge&&!ke.has(Ge)&&(ke.add(Ge),h[he]?.());}}return Re}function de(Le){if(pe)return;let Re=Le-w;De||(De=true,_?.());let I=Pe(Re);if(I&&!ae){ae=true,Pe(m),Y?.(),p<(q==="infinite"?1/0:q??0)&&(p++,E=setTimeout(()=>{w=performance.now(),De=false,ae=false,ke.clear(),vt(),ve=requestAnimationFrame(de);},N));return}I||(ve=requestAnimationFrame(de));}function ne(){cancelAnimationFrame(ve),clearTimeout(E),w=performance.now(),V=0,pe=false,De=false,ae=false,p=0,ue=true,f=0,ke.clear(),vt(),ve=requestAnimationFrame(de);}let oe=new IntersectionObserver(Le=>{Le.forEach(Re=>{Re.isIntersecting&&!(z&&ae)?ne():!Re.isIntersecting&&!z&&!ae&&(cancelAnimationFrame(ve),clearTimeout(E),ue=false);});},{root:ee??null,threshold:D,rootMargin:re}),Se;function ge(){clearTimeout(Se),Se=setTimeout(()=>l.forEach(tt),150);}return window.addEventListener("resize",ge),window.addEventListener("orientationchange",ge),k>0?setTimeout(()=>oe.observe(e),k):oe.observe(e),{destroy(){cancelAnimationFrame(ve),clearTimeout(E),oe.disconnect(),window.removeEventListener("resize",ge),window.removeEventListener("orientationchange",ge),clearTimeout(Se);},replay(){p=0,ne();},pause(){pe||!ue||(pe=true,V=performance.now()-w,cancelAnimationFrame(ve));},resume(){pe&&(pe=false,ue=true,w=performance.now()-V,ve=requestAnimationFrame(de));},seek(Le){let Re=Math.min(1,Math.max(0,Le));f=Re,pe=true,V=Re*m,w=performance.now()-V,cancelAnimationFrame(ve),Pe(V);},getProgress(){return f},refresh(){clearTimeout(Se),l.forEach(tt);}}}if(Z)return bt(vr());Lt();let kt=()=>j(ut(),Q,Fe,1);function Rt(){ae=true,Y?.(),p<(q==="infinite"?1/0:q)&&(p++,E=setTimeout(()=>{ce=true;},N));}function Ot(){Qe=-1,qe=[],De=false,ae=false,ce=false,ke.clear(),vt(),We=true;}function Er(){let a=performance.now(),m=ut();if(ce&&kt()%1&&Ot(),!We&&R===false&&m===ze)return;We=false,ze=m;let w=u;if(R!==false){let ne=a-Tt,oe=ne>0?Math.abs(m-(ct<0?m:ct))/ne:0;w=u*Math.max(.2,1+oe*(typeof R=="number"?R:1)*.04);}ct=m,Tt=a;let V=J?Ue===-1||m>=Ue?"forward":"reverse":S;Ue=m;let ue=W-H,Pe=true,de=ue===0?0:(m-H)/ue;if(isNaN(Xe)||(Xe<=0&&de>0&&fe?.(),Xe<1&&de>=1&&xe?.(),Xe>=1&&de<1&&me?.(),Xe>0&&de<=0&&le?.()),Xe=de,P){let ne=At(0,j(m,H,W,w));f=ne,e.style.setProperty("--scroll-draw-progress",String(ne));let oe=V==="reverse"?1-ne:ne;e.style.clipPath=Ce(oe),be?.(ne),!De&&j(m,H,W,w)>0&&(De=true,_?.()),ne>=1&&!ae?Rt():ne<1&&!z&&(ae=false);return}if(l.forEach((ne,oe)=>{let Se=oe*U*ue,ge=At(oe,j(m,H+Se,W+Se,w));wt(ne,oe,ge,V),oe===0&&(f=ge,be?.(ge),e.style.setProperty("--scroll-draw-progress",String(ge))),ge<1&&(Pe=false);}),h){let ne=L(j(m,H,W,w));for(let oe in h){let Se=parseFloat(oe);ne>=Se&&!ke.has(Se)&&(ke.add(Se),h[oe]?.());}}!De&&j(m,H,W,w)>0&&(De=true,_?.()),Pe&&!ae?Rt():!Pe&&!z&&(ae=false);}let rt=Ae(ee??window,[e],kt,Er,()=>{let a=g.join();l.forEach(tt),Lt(),We=true,g.join()!==a&&nt();}),Et=k>0;function nt(){rt.hold(pe||Et);}let $t;return Et&&($t=setTimeout(()=>{Et=false,nt();},k)),nt(),bt({destroy(){clearTimeout(E),clearTimeout($t),rt.off(),Ve();},replay(){Ot(),Ue=-1,ct=-1,p=0,pe=false,f=0,clearTimeout(E),nt();},pause(){pe=true,rt.hold(true);},resume(){pe&&(pe=false,We=true,nt());},seek(a){let m=Math.min(1,Math.max(0,a));f=m,Qe=m,qe=[],pe=true,rt.hold(true),yr(m,S),We=true;},getProgress(){return f},refresh:rt.remeasure},()=>({tStart:H,tEnd:W}))}var Xt=new WeakMap,Fr=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=Xt.get(r);return t===void 0&&Xt.set(r,t=++Fr),`el#${t}`}return r})}function Kt(e,n){let r={...e};for(let t of Object.keys(r))typeof r[t]=="function"&&(r[t]=(...o)=>n()[t]?.(...o));return r}function _r(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function Jt(e){let n=[],r=/([\w]+)\(([^)]*)\)/g,t;for(;(t=r.exec(e))!==null;){let o=[],s=[],i=t[2].trim();if(i)for(let u of i.split(/[\s,]+/)){let c=u.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(c?parseFloat(c[1]):0),s.push(c?c[2]:"");}n.push({fn:t[1],nums:o,units:s});}return n}function Vr(e,n,r){let t=Jt(e),o=Jt(n);return t.length===0||t.length!==o.length?r<1?e:n:t.map((s,i)=>{let u=o[i];return s.fn!==u.fn||s.nums.length!==u.nums.length?r<1?`${s.fn}(${s.nums.map((c,d)=>`${c}${s.units[d]}`).join(", ")})`:`${u.fn}(${u.nums.map((c,d)=>`${c}${u.units[d]}`).join(", ")})`:`${s.fn}(${s.nums.map((c,d)=>`${c+(u.nums[d]-c)*r}${s.units[d]}`).join(", ")})`}).join(" ")}function Zt(e,n,r){if(typeof e=="number"&&typeof n=="number")return String(e+(n-e)*r);let t=String(e),o=String(n);if(_r(t))return mt(t,o,r);if(t.includes("("))return Vr(t,o,r);let s=t.match(/^([-+]?[\d.]+)(.*)$/),i=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&i){let u=parseFloat(s[1]),c=parseFloat(i[1]);return `${u+(c-u)*r}${s[2]||i[2]}`}return r<1?t:o}function zr(e){return e.replace(/([A-Z])/g,n=>`-${n.toLowerCase()}`)}var Wr=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Gr=0,er="--scroll-draw-progress";function jr(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var rr={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function nr(e,n){return typeof window>"u"?rr:n.respectReducedMotion===false?tr(e,n,false):Be(n,(r,t)=>tr(e,r,t))}function tr(e,n,r){let{props:t,trigger:o={},easing:s="ease-out",speed:i=1,once:u=false,axis:c="y",scrollContainer:d,native:y=true,velocityScale:v=false,triggerElement:S,onProgress:z,onComplete:G,onEnter:b,onLeave:$,onEnterBack:J,onLeaveBack:k}=n,A=typeof s=="function"?s:K[s]??K["ease-out"],T=te(o.start||"top bottom"),O=te(o.end||"bottom top"),h=S??e,R=typeof d=="string"?document.querySelector(d):d??null,D=Object.entries(t).map(([l,g])=>({prop:zr(l),from:Array.isArray(g)?g[0]:"",to:Array.isArray(g)?g[1]:g}));function re(){let l=window.getComputedStyle(e);for(let g of D)g.from===""&&(g.from=l.getPropertyValue(g.prop).trim()||"0");}function q(){for(let l of D)e.style.setProperty(l.prop,String(l.to));}let N=new Map;for(let l of [...D.map(g=>g.prop),er])N.set(l,e.style.getPropertyValue(l));function F(){for(let[l,g]of N)g?e.style.setProperty(l,g):e.style.removeProperty(l);}if(r)return q(),G?.(),{...rr,destroy:F,getProgress:()=>1};re();let M=()=>R?c==="x"?R.scrollLeft:R.scrollTop:c==="x"?window.scrollX:window.scrollY,Z=()=>R?c==="x"?R.clientWidth:R.clientHeight:c==="x"?window.innerWidth:window.innerHeight,x=typeof s=="string"?pt(s):null;function C(){if(!y||!jr()||!x||c!=="y"||R||h!==e||u||i!==1||z||G||b||$||J||k||v!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of D)if(!Wr.has(l.prop))return false;return true}function be(){let l=`ssd-a-${++Gr}`,g=D.map(Q=>`${Q.prop}:${Q.from}`).join(";"),ie=D.map(Q=>`${Q.prop}:${Q.to}`).join(";"),H=document.createElement("style");H.setAttribute("data-ssd-animate",""),H.textContent=`@keyframes ${l}{from{${g}}to{${ie}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${x};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(H),e.classList.add(l);let W=()=>{let Q=e.getBoundingClientRect();return ye({top:Q.top,height:Q.height},M(),Z(),T,O)};Oe(e,{type:"animate",getProgress:()=>U.getProgress(),getTrigger:W});let U={refresh(){},destroy(){e.classList.remove(l),H.remove(),e.style.animationPlayState="",F(),$e(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(Q){let Fe=Math.min(1,Math.max(0,Q));e.classList.remove(l);for(let ae of D)e.style.setProperty(ae.prop,Zt(ae.from,ae.to,Fe));},getProgress(){let{tStart:Q,tEnd:Fe}=W();return A(j(M(),Q,Fe,i))}};return U}if(C())return be();let _=0,Y=0,fe=false,xe=-1,me=0,le=0,P=false,L=NaN,se=-1,Ne=0,ee=h===e?D:[],He=false;function Te(){let l=e.style,g=ee.map(U=>l.getPropertyValue(U.prop)),ie=l.transition;ee.length&&(l.transition="none"),ee.forEach(U=>l.setProperty(U.prop,N.get(U.prop)??""));let H=Ke(h,R,c);ee.forEach((U,Q)=>l.setProperty(U.prop,g[Q])),ee.length&&(e.offsetWidth,l.transition=ie);let W=ye(H,H.scroll,Z(),T,O);He&&Math.abs(W.tStart-_)<1&&Math.abs(W.tEnd-Y)<1||(He=true,_=W.tStart,Y=W.tEnd);}function we(l){e.style.setProperty(er,String(l));for(let g of D)e.style.setProperty(g.prop,Zt(g.from,g.to,l));z?.(l);}function _e(l){if(isNaN(L)){L=l;return}L<=0&&l>0&&b?.(),L<1&&l>=1&&$?.(),L>=1&&l<1&&J?.(),L>0&&l<=0&&k?.(),L=l;}function Ie(){if(fe)return;let l=performance.now(),g=M(),ie=i;if(v!==false){let Q=l-Ne,Fe=Q>0?Math.abs(g-(se<0?g:se))/Q:0;ie=i*Math.max(.2,1+Fe*(typeof v=="number"?v:1)*.04);}se=g,Ne=l;let H=Y===_?0:(g-_)/(Y-_);_e(H);let W=j(g,_,Y,ie),U=u?Math.max(xe,A(me=Math.max(me,W))):A(W);le=U,we(U),U>=1&&!P?(P=true,G?.()):U<1&&!u&&(P=false);}let Me=Ae(R??window,[h],()=>j(M(),_,Y,Math.min(i,1)),Ie,Te);Te(),Y===_&&B("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),me=j(M(),_,Y,i),le=A(me),we(le),Oe(e,{type:"animate",getProgress:()=>le,getTrigger:()=>({tStart:_,tEnd:Y})});function Ce(){fe=true,Me.hold(true);}return {destroy(){fe=true,Me.off(),F(),$e(e);},replay(){xe=-1,me=0,P=false,le=0,fe=false,we(0),Me.hold(false);},pause:Ce,resume(){fe&&(fe=false,Me.hold(false));},seek(l){let g=Math.min(1,Math.max(0,l));le=g,xe=g,me=0,Ce(),we(g);},getProgress(){return le},refresh:Me.remeasure}}var St={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function or(e,n){if(typeof window>"u")return St;let r=typeof e=="string"?document.querySelector(e):e;return r?Be(n,(t,o)=>Br(r,t,o)):(B("scrollCounter: element not found:",e),St)}function Br(e,n,r){let{from:t=0,to:o,format:s,easing:i="ease-out",trigger:u={},once:c=true,decimals:d,onComplete:y}=n,v=d!==void 0?x=>x.toFixed(d):s??(x=>String(Math.round(x))),S=typeof i=="function"?i:K[i]??K["ease-out"],z=te(u.start||"top 80%"),G=te(u.end||"top 20%");if(r)return e.textContent=v(o),y?.(),{...St,getProgress:()=>1};let b=0,$=0,J=false,k=-1,A=0,T=0,O=false,h=()=>window.scrollY,R=()=>window.innerHeight;function D(){let x=e.getBoundingClientRect(),C=ye({top:x.top,height:x.height},h(),R(),z,G);J&&Math.abs(C.tStart-b)<1&&Math.abs(C.tEnd-$)<1||(J=true,b=C.tStart,$=C.tEnd);}let re=e.style.getPropertyValue("--scroll-draw-progress");function q(x){e.textContent=v(t+(o-t)*x),e.style.setProperty("--scroll-draw-progress",String(x));}let N=()=>j(h(),b,$,1);function F(){let x=N(),C=c?Math.max(k,S(A=Math.max(A,x))):S(x);T=C,q(C),C>=1&&!O?(O=true,y?.()):C<1&&!c&&(O=false);}D();{A=j(h(),b,$,1);let x=S(A);T=x,q(x);}let M=Ae(window,[e],N,F,D);Oe(e,{type:"counter",getProgress:()=>T,getTrigger:()=>({tStart:b,tEnd:$})});let Z=()=>M.hold(false);return {destroy(){M.off(),e.style.setProperty("--scroll-draw-progress",re),$e(e);},replay(){k=-1,A=0,O=false,T=0,q(0),Z();},pause:()=>M.hold(true),resume:Z,seek(x){let C=Math.min(1,Math.max(0,x));T=C,k=C,A=0,M.hold(true),q(C);},getProgress(){return T}}}var sr={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function ir(e,n={}){if(typeof window>"u")return sr;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="video")return B("scrollVideo: <video> element not found:",e),sr;let t=r,{trigger:o={},easing:s="linear",once:i=false,axis:u="y",preload:c="auto",triggerElement:d,onReady:y,onComplete:v,onProgress:S}=n,z=d??t,G=window.matchMedia("(prefers-reduced-motion: reduce)").matches,b=typeof s=="function"?s:K[s]??K.linear,$=te(o.start||"top top"),J=te(o.end||"bottom top");t.pause(),t.hasAttribute("preload")||(t.preload=c);let k=n.from??0,A=n.to,T=0,O=0,h=false,R=-1,D=0,re=0,q=false,N=false,F=()=>u==="x"?window.scrollX:window.scrollY,M=()=>u==="x"?window.innerWidth:window.innerHeight;function Z(){let P=z.getBoundingClientRect(),L=u==="x"?P.left:P.top,se=u==="x"?P.width:P.height,Ne=ye({top:L,height:se},F(),M(),$,J);T=Ne.tStart,O=Ne.tEnd,N&&O===T&&B("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t);}let x=NaN;function C(P){if(!N)return;let L=A??t.duration??0,se=k+(L-k)*P;se!==x&&(x=se,t.currentTime=se),t.style.setProperty("--scroll-draw-progress",String(P)),S?.(P);}let be=()=>j(F(),T,O,1);function _(){if(!N||G)return;let P=be(),L=i?Math.max(R,b(D=Math.max(D,P))):b(P);re=L,C(L),L>=1&&!q?(q=true,v?.()):L<1&&!i&&(q=false);}let Y=Ae(window,[z],be,_,Z),fe=()=>Y.hold(h||!N||G);fe();function xe(){if(N=true,A===void 0&&(A=t.duration),G){C(1),y?.();return}Z(),y?.(),h?C(re):fe();}t.readyState>=1?xe():t.addEventListener("loadedmetadata",xe,{once:true}),N||Z();let me=G?()=>{}:je(P=>{P&&(me(),G=true,Y.hold(true),C(1));});Oe(t,{type:"video",getProgress:()=>re,getTrigger:()=>({tStart:T,tEnd:O})});function le(){h&&(h=false,fe());}return {destroy(){Y.off(),t.removeEventListener("loadedmetadata",xe),me(),$e(t);},replay(){R=-1,D=0,q=false,re=0,x=NaN,C(0),le();},pause(){h=true,Y.hold(true);},resume:le,seek(P){let L=Math.min(1,Math.max(0,P));re=L,R=L,D=0,h=true,Y.hold(true),x=NaN,C(L);},getProgress(){return re}}}var ht={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function qr(e){let n=e>1?[0,e-1]:[0],r=[[0,e-1]];for(let t=0;t<r.length;t++){let[o,s]=r[t];if(s-o<2)continue;let i=o+s>>1;n.push(i),r.push([o,i],[i,s]);}return n}function ar(e,n){if(typeof window>"u")return ht;let r=typeof e=="string"?document.querySelector(e):e;if(!r||r.tagName.toLowerCase()!=="canvas")return B("scrollFrames: <canvas> element not found:",e),ht;let t=r,{frames:o,trigger:s={},easing:i="linear",once:u=false,axis:c="y",fit:d="cover",triggerElement:y,onReady:v,onLoad:S,onComplete:z,onProgress:G}=n||{},b=Array.isArray(o)?o:null,$=n?.count,J=Math.floor(b?Math.min($??b.length,b.length):$??NaN);if(!(b||typeof o=="function")||!Number.isFinite(J)||J<1)return B("scrollFrames: no frames. Pass `frames` as an array of URLs, or a function with a finite `count` of 1 or more.",t),ht;let k=n.concurrency??6;(!Number.isFinite(k)||k<1)&&(B("scrollFrames: `concurrency` must be a finite number of 1 or more; using 6.",n.concurrency),k=6),k=Math.floor(k);let A=t.getContext("2d");if(!A)return B("scrollFrames: the canvas has no 2D context.",t),ht;let T=J-1,O=y??t,h=window.matchMedia("(prefers-reduced-motion: reduce)").matches,R=typeof i=="function"?i:K[i]??K.linear,D=f=>{let p=R(f);return p===p?p:0},re=te(s.start||"top top"),q=te(s.end||"bottom top"),N=0,F=0,M=false,Z=-1,x=0,C=0,be=false,_=false,Y=false,fe=false,xe=0,me=-1,le=new Array(J),P=new Uint8Array(J),L=new Set,se=h?[T]:qr(J),Ne=0,ee=0,He=false,Te=(f,...p)=>{if(f)try{f(...p);}catch(E){typeof reportError=="function"?reportError(E):setTimeout(()=>{throw E});}},we=false,_e=f=>{let p;try{p=b?b[f]:o(f);}catch(E){p=E;}return typeof p=="string"&&p?p:(we||(we=true,B(`scrollFrames: no URL for frame ${f}; it is skipped for its nearest neighbour.`,p)),null)},Ie=()=>c==="x"?window.scrollX:window.scrollY,Me=()=>c==="x"?window.innerWidth:window.innerHeight;function Ce(){!He&&ee===se.length&&(He=true,Te(S));}function l(){for(;!_&&L.size<k&&Ne<se.length;){let f=se[Ne++];P[f]||g(f);}}function g(f){P[f]=1;let p=_e(f);if(p===null){ee++,queueMicrotask(()=>{_||Ce();});return}let E=new Image,ce=false,Ee=Ve=>{ce||_||(ce=true,E.onload=E.onerror=null,L.delete(E),Ve?le[f]=E:B("scrollFrames: a frame failed to load; its nearest neighbour shows instead:",p),ee++,l(),W(),Ce());};L.add(E),E.decoding="async",E.onerror=()=>Ee(false),E.src=p,typeof E.decode=="function"?E.decode().then(()=>Ee(true),()=>{E.complete?Ee(E.naturalWidth>0):E.onload=()=>Ee(true);}):E.onload=()=>Ee(true);}function ie(f){for(let p=0;p<=T;p++){if(le[f-p])return f-p;if(le[f+p])return f+p}return -1}function H(){let f=t.clientWidth,p=t.clientHeight;if(!f||!p)return;let E=Math.min(window.devicePixelRatio||1,2),ce=Math.round(f*E),Ee=Math.round(p*E);if(Math.abs(t.width-ce)<=1&&Math.abs(t.height-Ee)<=1)return;t.width=ce,t.height=Ee,me=-1;let Ve=t.clientWidth,ke=t.clientHeight;if(Ve!==f||ke!==p){let ze=t.style;Ve!==f&&ke!==p?(ze.width=`${f}px`,ze.height=`${p}px`):ze.aspectRatio=`${f} / ${p}`;}}function W(){let f=ie(xe);if(f<0||f===me)return;let p=le[f],E=t.width,ce=t.height,Ee=p.naturalWidth||E,Ve=p.naturalHeight||ce,ke=(d==="contain"?Math.min:Math.max)(E/Ee,ce/Ve),ze=Ee*ke,We=Ve*ke;A.clearRect(0,0,E,ce),A.drawImage(p,(E-ze)/2,(ce-We)/2,ze,We),me=f,Y||(Y=true,Te(v));}function U(f){xe=Math.min(T,Math.max(0,Math.round(f*T))),t.style.setProperty("--scroll-draw-progress",String(f)),W(),Te(G,f,xe);}function Q(){let f=O.getBoundingClientRect(),p=c==="x"?f.left:f.top,E=c==="x"?f.width:f.height,ce=ye({top:p,height:E},Ie(),Me(),re,q);N=ce.tStart,F=ce.tEnd,F===N&&E>0&&!h&&!fe&&(fe=true,B("scrollFrames: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",t));}let Fe=()=>j(Ie(),N,F,1);function ae(){if(h)return;let f=Fe(),p=u?Math.max(Z,D(x=Math.max(x,f))):D(f);C=p,U(p),p>=1&&!be?(be=true,Te(z)):p<1&&!u&&(be=false);}function De(){C=1,U(1);}H(),h||Q();let ve=Ae(window,[O],Fe,ae,()=>{H(),h||Q(),W();}),Qe=()=>ve.hold(M||h);Qe(),h&&De(),l();let qe=typeof ResizeObserver=="function"?new ResizeObserver(()=>{H(),W();}):null;qe?.observe(t);let Ue=h?()=>{}:je(f=>{f&&(Ue(),h=true,ve.hold(true),se=se.slice(0,Ne),P[T]||se.push(T),Ce(),De(),l());});Oe(t,{type:"frames",getProgress:()=>C,getTrigger:()=>({tStart:N,tEnd:F})});function pe(){_||!M||(M=false,Qe());}return {destroy(){if(!_){_=true,ve.off(),qe?.disconnect(),Ue();for(let f of L)f.onload=f.onerror=null,f.src="";L.clear(),$e(t);}},replay(){_||(Z=-1,x=0,be=false,C=0,U(0),pe());},pause(){_||(M=true,ve.hold(true));},resume:pe,seek(f){if(_)return;let p=Math.min(1,Math.max(0,f===f?f:0));C=p,Z=p,x=0,M=true,ve.hold(true),U(p);},getProgress(){return C}}}var Ur=1e4;function lr(e){let{frames:n,count:r}=e;if(typeof n!="function")return at(e);let t=Number.isFinite(r)?Math.min(Math.max(Math.floor(r),0),Ur):0,o;try{o=Array.from({length:t},(s,i)=>n(i));}catch{o=["throws"];}return at({...e,frames:o})}function cr(e){if(!e||e.getAttribute("aria-hidden")==="true")return;let n=e.getAttribute("role");n==="presentation"||n==="none"||e.getAttribute("aria-label")||e.getAttribute("aria-labelledby")||B('<ScrollFrames>: the canvas has no aria-label. Say what the frames show, or set aria-hidden="true" if they are decoration.',e);}function ur(e,n){let r=document.createElement("span");r.textContent=n,r.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(r);}function yt(e=""){let n=document.createElement("span");return n.setAttribute("aria-hidden","true"),n.textContent=e,n}function mr(e){let n=e.textContent??"";return e.textContent="",n.split(/(\s+)/).filter(Boolean).map(r=>{let t=e.appendChild(yt(r)),o=/^\s+$/.test(r);return o?t.style.whiteSpace="pre":t.style.display="inline-block",o?null:t}).filter(r=>r!==null)}function Yr(e){let n=e.textContent??"";e.textContent="";let r=[],t=null;for(let o of n){let s=yt(o),i=o===" ";i?s.style.whiteSpace="pre":(s.style.display="inline-block",r.push(s)),i||o>"\u0DFF"?t=null:t||(t=e.appendChild(yt()),t.style.cssText="display:inline-block;white-space:nowrap"),(t??e).appendChild(s);}return r}function fr(e){let n=mr(e),r=new Map;for(let s of n){let i=s.offsetTop;r.has(i)||r.set(i,[]),r.get(i).push(s);}let t=[],o=Array.from(r.keys()).sort((s,i)=>s-i);for(let s of o){let i=r.get(s),u=yt();u.style.display="inline-block",i.forEach((c,d)=>{let y=c.nextElementSibling;u.appendChild(c),d<i.length-1&&y&&y.style.whiteSpace==="pre"&&u.appendChild(y);}),t.push(u);}return e.textContent="",t.forEach((s,i)=>{e.appendChild(s),i<t.length-1&&e.appendChild(document.createTextNode(" "));}),t}function Qr(e,n,r,t){if(r<=1||t===0)return e;t=Math.min(t,1/r);let o=(r-1)*t,s=n*t,i=s+(1-o);return i<=s?e>=s?1:0:ot((e-s)/(i-s),0,1)}function Xr(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 pr(e,n={}){if(typeof window>"u")return xt;let r=typeof e=="string"?document.querySelector(e):e;if(!r)return B("scrollText: element not found:",e),xt;let t=r;return Be(n,(o,s)=>Kr(t,o,s))}function Kr(e,n,r){let{split:t="words",stagger:o=.04,easing:s="ease-out",from:i={opacity:0,y:24},trigger:u={},once:c=true,onComplete:d}=n,y=typeof s=="function"?s:K[s]??K["ease-out"],v=te(u.start||"top 85%"),S=te(u.end||"top 40%"),z=e.innerHTML,G=e.textContent??"",b;t==="chars"?b=Yr(e):t==="lines"?b=fr(e):b=mr(e),ur(e,G);let $=b.length;function J(M,Z){i?.opacity!==void 0&&(M.style.opacity=String(i.opacity+(1-i.opacity)*Z));let x=Xr(Z,i);x&&(M.style.transform=x);}function k(M){e.style.setProperty("--scroll-draw-progress",String(M)),b.forEach((Z,x)=>{let C=y(Qr(M,x,$,o));J(Z,C);});}if(r)return k(1),d?.(),{...xt,destroy:()=>{e.innerHTML=z;},getProgress:()=>1};k(0);let A=0,T=0,O=-1,h=0,R=false;function D(){({tStart:A,tEnd:T}=ye(e.getBoundingClientRect(),window.scrollY,window.innerHeight,v,S));}let re=()=>j(window.scrollY,A,T,1);function q(){let M=c?O=Math.max(O,re()):re();h=M,k(M),M>=1&&!R?(R=true,d?.()):M<1&&!c&&(R=false);}D();let N=Ae(window,[e],re,q,()=>{t==="lines"&&(e.innerHTML=z,b=fr(e),ur(e,G),k(h)),D();});Oe(e,{type:"text",getProgress:()=>h,getTrigger:()=>({tStart:A,tEnd:T})});let F=()=>N.hold(false);return {destroy(){N.off(),e.innerHTML=z,$e(e);},replay(){O=-1,R=false,h=0,k(0),F();},pause:()=>N.hold(true),resume:F,seek(M){N.hold(true),k(h=O=ot(M,0,1));},getProgress(){return h}}}function en(e,n={}){let[r,t]=tn.useState(0),o=tn.useRef(n);o.current=n;let s=tn.useRef(0);return tn.useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){t(1);return}let i=typeof e=="string"?document.querySelector(e):e.current;if(!i)return;let u=i,{axis:c="y",scrollContainer:d,trigger:y={}}=o.current,v=typeof d=="string"?document.querySelector(d):d??null,S=te(y.start||"top bottom"),z=te(y.end||"bottom top"),G=0,b=0;function $(){return v?c==="x"?v.scrollLeft:v.scrollTop:c==="x"?window.scrollX:window.scrollY}function J(){return v?c==="x"?v.clientWidth:v.clientHeight:c==="x"?window.innerWidth:window.innerHeight}function k(){let h=Ke(u,v,c);({tStart:G,tEnd:b}=ye(h,h.scroll,J(),S,z));}function A(){let{speed:h=1,easing:R="linear",once:D=false}=o.current,re=typeof R=="function"?R:K[R]??K.linear,q=j($(),G,b,h),N=re(D?s.current=Math.max(s.current,q):q);t(N);}k();let T=Ae(v??window,[u],()=>j($(),G,b,Math.min(o.current.speed??1,1)),A,k),O=je(h=>{h&&(O(),T.off(),t(1));});return ()=>{O(),T.off();}},[]),r}function Ze(e,n,r,t=at(n)){let o=tn.useRef(n);o.current=n,tn.useEffect(()=>{if(!e.current)return;let s=r(e.current,Kt(o.current,()=>o.current));return ()=>s.destroy()},[t]);}var rn=/^(data-|aria-)|^(id|role|title|tabIndex|lang|dir|hidden)$/;function et(e){let n={},r={};for(let[t,o]of Object.entries(e))(rn.test(t)?r:n)[t]=o;return [n,r]}function Vo({children:e,className:n,style:r,...t}){let o=tn.useRef(null),[s,i]=et(t);return Ze(o,s,Qt),jsxRuntime.jsx("div",{ref:o,className:n,style:r,...i,children:e})}function zo({children:e,className:n,style:r,...t}){let o=tn.useRef(null),[s,i]=et(t);return Ze(o,s,nr),jsxRuntime.jsx("div",{ref:o,className:n,style:r,...i,children:e})}function Wo({className:e,style:n,...r}){let t=tn.useRef(null),[o,s]=et(r);return Ze(t,o,or),jsxRuntime.jsx("span",{ref:t,className:e,style:n,...s})}function Go({src:e,poster:n,className:r,style:t,muted:o=true,playsInline:s=true,...i}){let u=tn.useRef(null),[c,d]=et(i);return Ze(u,c,ir),jsxRuntime.jsx("video",{...d,ref:u,src:e,poster:n,className:r,style:t,muted:o,playsInline:s,preload:c.preload??"auto"})}function jo({className:e,style:n,role:r="img",triggerElement:t,...o}){let s=tn.useRef(null),[i,u]=et(o),c=t&&"current"in t?t:null;return !c&&t&&(i.triggerElement=t),Ze(s,i,(d,y)=>ar(d,{...y,frames:i.frames,...c&&{triggerElement:c.current??void 0}}),lr(i)+(c?"+ref":"")),tn.useEffect(()=>cr(s.current),[]),jsxRuntime.jsx("canvas",{...u,ref:s,role:r,className:e,style:n})}function Bo({children:e,as:n="p",className:r,style:t,...o}){let s=tn.useRef(null),[i,u]=et(o);return Ze(s,i,pr),tn__default.default.createElement(n,{...u,ref:s,className:r,style:t},e)}exports.ScrollAnimate=zo;exports.ScrollCounter=Wo;exports.ScrollDraw=Vo;exports.ScrollFrames=jo;exports.ScrollText=Bo;exports.ScrollVideo=Go;exports.useScrollDrawProgress=en;
@@ -3,6 +3,7 @@ import { E as EasingName, T as TriggerConfig, a as ScrollDrawOptions } from '../
3
3
  import { S as ScrollAnimateOptions } from '../engine-BLWKCfxC.mjs';
4
4
  import { S as ScrollCounterOptions } from '../index-DVjblK_4.mjs';
5
5
  import { ScrollVideoOptions } from '../video/index.mjs';
6
+ import { ScrollFramesOptions } from '../frames/index.mjs';
6
7
  import { ScrollTextOptions } from '../text/index.mjs';
7
8
 
8
9
  interface UseScrollDrawProgressOptions {
@@ -61,6 +62,21 @@ type ScrollVideoProps = ScrollVideoOptions & ElementAttrs & {
61
62
  playsInline?: boolean;
62
63
  };
63
64
  declare function ScrollVideo({ src, poster, className, style, muted, playsInline, ...rest }: ScrollVideoProps): React.JSX.Element;
65
+ type ScrollFramesProps = Omit<ScrollFramesOptions, 'triggerElement'> & ElementAttrs & {
66
+ /**
67
+ * The tall track behind a sticky stage: an element, or a ref to one. A ref is
68
+ * read when the film starts, after React has attached it, so the track can
69
+ * be an ancestor rendered by the same component.
70
+ */
71
+ triggerElement?: Element | RefObject<Element | null> | null;
72
+ className?: string;
73
+ style?: React.CSSProperties;
74
+ };
75
+ /**
76
+ * A <canvas> that scrubs an image sequence with the scroll (scrollFrames). It
77
+ * renders role="img": pass an aria-label saying what the frames show.
78
+ */
79
+ declare function ScrollFrames({ className, style, role, triggerElement, ...rest }: ScrollFramesProps): React.JSX.Element;
64
80
  type ScrollTextProps = ScrollTextOptions & ElementAttrs & {
65
81
  children: string;
66
82
  as?: keyof React.JSX.IntrinsicElements;
@@ -73,4 +89,4 @@ declare function ScrollText({ children, as: Tag, className, style, ...rest }: Sc
73
89
  style: React.CSSProperties | undefined;
74
90
  }, string | React.JSXElementConstructor<any>>;
75
91
 
76
- export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollText, ScrollVideo, type UseScrollDrawProgressOptions, useScrollDrawProgress };
92
+ export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollFrames, ScrollText, ScrollVideo, type UseScrollDrawProgressOptions, useScrollDrawProgress };
@@ -3,6 +3,7 @@ import { E as EasingName, T as TriggerConfig, a as ScrollDrawOptions } from '../
3
3
  import { S as ScrollAnimateOptions } from '../engine-6VsjEwzb.js';
4
4
  import { S as ScrollCounterOptions } from '../index-BN8yKeQ3.js';
5
5
  import { ScrollVideoOptions } from '../video/index.js';
6
+ import { ScrollFramesOptions } from '../frames/index.js';
6
7
  import { ScrollTextOptions } from '../text/index.js';
7
8
 
8
9
  interface UseScrollDrawProgressOptions {
@@ -61,6 +62,21 @@ type ScrollVideoProps = ScrollVideoOptions & ElementAttrs & {
61
62
  playsInline?: boolean;
62
63
  };
63
64
  declare function ScrollVideo({ src, poster, className, style, muted, playsInline, ...rest }: ScrollVideoProps): React.JSX.Element;
65
+ type ScrollFramesProps = Omit<ScrollFramesOptions, 'triggerElement'> & ElementAttrs & {
66
+ /**
67
+ * The tall track behind a sticky stage: an element, or a ref to one. A ref is
68
+ * read when the film starts, after React has attached it, so the track can
69
+ * be an ancestor rendered by the same component.
70
+ */
71
+ triggerElement?: Element | RefObject<Element | null> | null;
72
+ className?: string;
73
+ style?: React.CSSProperties;
74
+ };
75
+ /**
76
+ * A <canvas> that scrubs an image sequence with the scroll (scrollFrames). It
77
+ * renders role="img": pass an aria-label saying what the frames show.
78
+ */
79
+ declare function ScrollFrames({ className, style, role, triggerElement, ...rest }: ScrollFramesProps): React.JSX.Element;
64
80
  type ScrollTextProps = ScrollTextOptions & ElementAttrs & {
65
81
  children: string;
66
82
  as?: keyof React.JSX.IntrinsicElements;
@@ -73,4 +89,4 @@ declare function ScrollText({ children, as: Tag, className, style, ...rest }: Sc
73
89
  style: React.CSSProperties | undefined;
74
90
  }, string | React.JSXElementConstructor<any>>;
75
91
 
76
- export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollText, ScrollVideo, type UseScrollDrawProgressOptions, useScrollDrawProgress };
92
+ export { ScrollAnimate, ScrollCounter, ScrollDraw, ScrollFrames, ScrollText, ScrollVideo, type UseScrollDrawProgressOptions, useScrollDrawProgress };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import {a as a$3,b as b$1}from'../chunk-XSVTHCLO.mjs';import {a as a$6}from'../chunk-BRV2B2YW.mjs';import {a as a$7}from'../chunk-32ZCSGFZ.mjs';import {a as a$5}from'../chunk-U5TKLHGW.mjs';import {a as a$4}from'../chunk-7USW2XFB.mjs';import {b as b$2}from'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import {a as a$2}from'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import {a,e,b,c}from'../chunk-NV6YTPHI.mjs';import {d as d$1}from'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import {a as a$1}from'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';import B,{useState,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';function Y(o,r={}){let[n,e$1]=useState(0),t=useRef(r);t.current=r;let s=useRef(0);return useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){e$1(1);return}let l=typeof o=="string"?document.querySelector(o):o.current;if(!l)return;let a$3=l,{axis:i="y",scrollContainer:u,trigger:R={}}=t.current,c$1=typeof u=="string"?document.querySelector(u):u??null,U=a(R.start||"top bottom"),q=a(R.end||"bottom top"),S=0,y=0;function b$1(){return c$1?i==="x"?c$1.scrollLeft:c$1.scrollTop:i==="x"?window.scrollX:window.scrollY}function z(){return c$1?i==="x"?c$1.clientWidth:c$1.clientHeight:i==="x"?window.innerWidth:window.innerHeight}function P(){let p=a$2(a$3,c$1,i);({tStart:S,tEnd:y}=c(p,p.scroll,z(),U,q));}function G(){let{speed:p=1,easing:w="linear",once:W=false}=t.current,X=typeof w=="function"?w:d$1[w]??d$1.linear,C=b(b$1(),S,y,p),$=X(W?s.current=Math.max(s.current,C):C);e$1($);}P();let T=e(c$1??window,[a$3],()=>b(b$1(),S,y,Math.min(t.current.speed??1,1)),G,P),A=a$1(p=>{p&&(A(),T.off(),e$1(1));});return ()=>{A(),T.off();}},[]),n}function f(o,r,n){let e=useRef(r);e.current=r;let t=a$3(r);useEffect(()=>{if(!o.current)return;let s=n(o.current,b$1(e.current,()=>e.current));return ()=>s.destroy()},[t]);}var Z=/^(data-|aria-)|^(id|role|title|tabIndex|lang|dir|hidden)$/;function d(o){let r={},n={};for(let[e,t]of Object.entries(o))(Z.test(e)?n:r)[e]=t;return [r,n]}function fe({children:o,className:r,style:n,...e}){let t=useRef(null),[s,l]=d(e);return f(t,s,b$2),jsx("div",{ref:t,className:r,style:n,...l,children:o})}function de({children:o,className:r,style:n,...e}){let t=useRef(null),[s,l]=d(e);return f(t,s,a$4),jsx("div",{ref:t,className:r,style:n,...l,children:o})}function ge({className:o,style:r,...n}){let e=useRef(null),[t,s]=d(n);return f(e,t,a$5),jsx("span",{ref:e,className:o,style:r,...s})}function Se({src:o,poster:r,className:n,style:e,muted:t=true,playsInline:s=true,...l}){let a=useRef(null),[i,u]=d(l);return f(a,i,a$6),jsx("video",{...u,ref:a,src:o,poster:r,className:n,style:e,muted:t,playsInline:s,preload:i.preload??"auto"})}function ye({children:o,as:r="p",className:n,style:e,...t}){let s=useRef(null),[l,a]=d(t);return f(s,l,a$7),B.createElement(r,{...a,ref:s,className:n,style:e},o)}export{de as ScrollAnimate,ge as ScrollCounter,fe as ScrollDraw,ye as ScrollText,Se as ScrollVideo,Y as useScrollDrawProgress};
2
+ import {a as a$2,b as b$1}from'../chunk-22P4KBPG.mjs';import {a as a$3}from'../chunk-D2BHE4F2.mjs';import {b as b$2,a as a$5}from'../chunk-XSVTHCLO.mjs';import {a as a$8}from'../chunk-BRV2B2YW.mjs';import {a as a$9}from'../chunk-32ZCSGFZ.mjs';import {a as a$7}from'../chunk-U5TKLHGW.mjs';import {a as a$6}from'../chunk-7USW2XFB.mjs';import {b as b$3}from'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import {a as a$4}from'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import {a,e,b,c}from'../chunk-NV6YTPHI.mjs';import {d as d$1}from'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import {a as a$1}from'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';import ee,{useState,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';function _(o,r={}){let[s,e$1]=useState(0),t=useRef(r);t.current=r;let n=useRef(0);return useEffect(()=>{if(typeof window>"u")return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){e$1(1);return}let l=typeof o=="string"?document.querySelector(o):o.current;if(!l)return;let c$1=l,{axis:i="y",scrollContainer:m,trigger:g={}}=t.current,a$2=typeof m=="string"?document.querySelector(m):m??null,K=a(g.start||"top bottom"),W=a(g.end||"bottom top"),y=0,E=0;function P(){return a$2?i==="x"?a$2.scrollLeft:a$2.scrollTop:i==="x"?window.scrollX:window.scrollY}function X(){return a$2?i==="x"?a$2.clientWidth:a$2.clientHeight:i==="x"?window.innerWidth:window.innerHeight}function b$1(){let u=a$4(c$1,a$2,i);({tStart:y,tEnd:E}=c(u,u.scroll,X(),K,W));}function $(){let{speed:u=1,easing:O="linear",once:J=false}=t.current,Y=typeof O=="function"?O:d$1[O]??d$1.linear,v=b(P(),y,E,u),B=Y(J?n.current=Math.max(n.current,v):v);e$1(B);}b$1();let T=e(a$2??window,[c$1],()=>b(P(),y,E,Math.min(t.current.speed??1,1)),$,b$1),C=a$1(u=>{u&&(C(),T.off(),e$1(1));});return ()=>{C(),T.off();}},[]),s}function f(o,r,s,e=a$5(r)){let t=useRef(r);t.current=r,useEffect(()=>{if(!o.current)return;let n=s(o.current,b$2(t.current,()=>t.current));return ()=>n.destroy()},[e]);}var te=/^(data-|aria-)|^(id|role|title|tabIndex|lang|dir|hidden)$/;function d(o){let r={},s={};for(let[e,t]of Object.entries(o))(te.test(e)?s:r)[e]=t;return [r,s]}function Ee({children:o,className:r,style:s,...e}){let t=useRef(null),[n,l]=d(e);return f(t,n,b$3),jsx("div",{ref:t,className:r,style:s,...l,children:o})}function Oe({children:o,className:r,style:s,...e}){let t=useRef(null),[n,l]=d(e);return f(t,n,a$6),jsx("div",{ref:t,className:r,style:s,...l,children:o})}function we({className:o,style:r,...s}){let e=useRef(null),[t,n]=d(s);return f(e,t,a$7),jsx("span",{ref:e,className:o,style:r,...n})}function Re({src:o,poster:r,className:s,style:e,muted:t=true,playsInline:n=true,...l}){let c=useRef(null),[i,m]=d(l);return f(c,i,a$8),jsx("video",{...m,ref:c,src:o,poster:r,className:s,style:e,muted:t,playsInline:n,preload:i.preload??"auto"})}function xe({className:o,style:r,role:s="img",triggerElement:e,...t}){let n=useRef(null),[l,c]=d(t),i=e&&"current"in e?e:null;return !i&&e&&(l.triggerElement=e),f(n,l,(m,g)=>a$3(m,{...g,frames:l.frames,...i&&{triggerElement:i.current??void 0}}),a$2(l)+(i?"+ref":"")),useEffect(()=>b$1(n.current),[]),jsx("canvas",{...c,ref:n,role:s,className:o,style:r})}function Pe({children:o,as:r="p",className:s,style:e,...t}){let n=useRef(null),[l,c]=d(t);return f(n,l,a$9),ee.createElement(r,{...c,ref:n,className:s,style:e},o)}export{Oe as ScrollAnimate,we as ScrollCounter,Ee as ScrollDraw,xe as ScrollFrames,Pe as ScrollText,Re as ScrollVideo,_ as useScrollDrawProgress};
@@ -1,3 +1,3 @@
1
- 'use strict';var vue=require('vue');function En({tension:e=2.5,friction:t=2.2}={}){return n=>1-Math.cos(n*Math.PI*e)*Math.pow(1-n,t)}function Sn({bounces:e=3,decay:t=.5}={}){let n=Math.max(1,Math.round(e)),r=Math.max(.01,Math.min(.99,t)),o=Math.sqrt(r),s=0,a=[];for(let p=0;p<n;p++){let g=Math.pow(o,p);a.push(g),s+=g;}let c=[0],f=0;for(let p=0;p<n;p++)f+=a[p]/s,c.push(f);return p=>{if(p<=0)return 0;if(p>=1)return 1;for(let g=0;g<n;g++)if(p<=c[g+1]){let x=(p-c[g])/(c[g+1]-c[g]);if(g===0)return x*(2-x);let y=1-Math.pow(r,g);return y+(1-y)*(2*x-1)*(2*x-1)}return 1}}function Tn({amplitude:e=1,period:t=.4}={}){let n=Math.max(1,e),r=Math.max(.1,t),o=n<=1?r/4:r/(2*Math.PI)*Math.asin(1/n);return s=>s<=0?0:s>=1?1:n*Math.pow(2,-10*s)*Math.sin((s-o)*(2*Math.PI)/r)+1}var ee={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:En(),bounce:Sn(),elastic:Tn()};function Qe(e,t,n){return Math.min(n,Math.max(t,e))}function ie(e="top bottom"){let t=e.trim();if(/^\d+(\.\d+)?%$/.test(t))return {element:"top",viewport:t};let[n="top",r="bottom"]=t.split(/\s+/).filter(Boolean);return {element:n,viewport:r}}var Gt=(e,t)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:t;function Vt(e,t,n,r){return e+n+t*Gt(r,0)}function _t(e,t){return t*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:Gt(e,1))}function z(e,t,n,r){return n===t?0:Qe((e-t)/(n-t)*r,0,1)}function we(e,t,n,r,o){let s=Vt(e.top,e.height,t,r.element)-_t(r.viewport,n),a=Vt(e.top,e.height,t,o.element)-_t(o.viewport,n);return {tStart:s,tEnd:a}}function ot(e,t,n){let r=e.getBoundingClientRect(),o=n==="x"?r.width:r.height;return t?{top:n==="x"?r.left-t.getBoundingClientRect().left-t.clientLeft+t.scrollLeft:r.top-t.getBoundingClientRect().top-t.clientTop+t.scrollTop,height:o,scroll:0}:{top:n==="x"?r.left:r.top,height:o,scroll:n==="x"?window.scrollX:window.scrollY}}function st(e){let t=parseFloat(e.getAttribute("pathLength")??"");if(t>0)return t;let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(r+o)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function Wt(e){let t=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(t)return [parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[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 r=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return r?[parseInt(r[1]),parseInt(r[2]),parseInt(r[3])]:null}function it(e,t,n){let r=Wt(e),o=Wt(t);return !r||!o?e:`rgb(${Math.round(r[0]+(o[0]-r[0])*n)},${Math.round(r[1]+(o[1]-r[1])*n)},${Math.round(r[2]+(o[2]-r[2])*n)})`}var Bt={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 ze=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function ae(e,...t){ze&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var xn="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Mn="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",zt=33;function Ln(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function Cn(e){let t=[];for(let n=0;n<zt;n++){let r=n/(zt-1);t.push(String(Math.round(e(r)*1e5)/1e5));}return `linear(${t.join(",")})`}function at(e){switch(e){case "linear":return "linear";case "ease-in":return xn;case "ease-out":return Mn;case "ease-in-out":return Ln()?Cn(ee["ease-in-out"]):null;default:return null}}var jt=Symbol.for("svg-scroll-draw.registry");function qt(){let e=globalThis;return e[jt]||(e[jt]=new Map)}function ve(e,t){qt().set(e,t);}function Ee(e){qt().delete(e);}function lt(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let t=window.matchMedia("(prefers-reduced-motion: reduce)"),n=o=>e(!!o.matches);if(typeof t.addEventListener=="function")return t.addEventListener("change",n),()=>t.removeEventListener("change",n);let r=t;return r.addListener?.(n),()=>r.removeListener?.(n)}function Fe(e,t){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t(e,true);let n=t(e,false),r=lt(s=>{if(!s)return;r();let a=(n.getProgress?.()??0)>=1;n.destroy(),n=t(a?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(n))o[s]=(...a)=>n[s]?.(...a);return o.destroy=()=>{r(),n.destroy();},o}var Ue,ut=new Set,ct=new WeakMap,Xe=new Map,Yt=e=>{let t=e.getBoundingClientRect();return t.width+" "+t.height};function An(e){let t=new Set;for(let n of e)for(;n&&n!==document.body;n=n.parentElement)for(let r=n;r;r=r.previousElementSibling)t.add(r);return t}function Qt(e,t){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let n=()=>t();Ue??(Ue=new ResizeObserver(o=>{let s=false;for(let{target:a}of o)ct.get(a)!==Yt(a)&&(s=true),ct.set(a,"");s&&ut.forEach(a=>a());})),ut.add(n);let r=An(e);return [document.body,document.documentElement].forEach(o=>o&&r.add(o)),r.forEach(o=>{ct.has(o)||ct.set(o,Yt(o)),Xe.set(o,(Xe.get(o)??0)+1),Ue.observe(o);}),()=>{ut.delete(n)&&(r.forEach(o=>{let s=(Xe.get(o)??1)-1;if(s)return void Xe.set(o,s);Xe.delete(o),Ue?.unobserve(o);}),ut.size||(Ue?.disconnect(),Ue=void 0));}}function Me(e,t,n,r,o){let s,a=NaN,c,f,p=()=>{s=0,r(),!c&&!s&&(a=n())>0&&a<1&&(s=requestAnimationFrame(p));},g=()=>{!s&&!c&&n()!==a&&(s=requestAnimationFrame(p));},x=H=>{c=H,cancelAnimationFrame(s),s=a=NaN,g();},y=()=>{clearTimeout(f),o(),g();},R=()=>{clearTimeout(f),f=setTimeout(y,150);},j=Qt(t,R),w=H=>{e[H]("scroll",g,{passive:true}),window[H]("resize",R),window[H]("orientationchange",R);};return w("addEventListener"),g(),{hold:x,remeasure:y,off(){x(true),w("removeEventListener"),j(),clearTimeout(f);}}}var Pn=0;function On(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Ut(e,t){let n="";try{n=getComputedStyle(e).getPropertyValue(t).trim();}catch{}return n||(e.getAttribute(t)??"").trim()}var Xt=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function kn(e){if(!ze)return;let t=Ut(e,"stroke");if(!t||t==="none"){ae("Element has no stroke \u2014 path will not be visible.",e);return}let n=(e.getAttribute("fill")??"").trim();n&&!Xt.has(n)&&!Xt.has(Ut(e,"fill"))&&ae("Element has a fill \u2014 it may obscure the stroke animation.",e);}function $n(e,t,n){let r=document.createElement("div");r.setAttribute("data-svg-scroll-draw-debug",""),r.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 o(){let s=n==="x"?window.scrollX:window.scrollY,a=e-s,c=t-s,f=n==="x";r.innerHTML=`
2
- <div style="position:absolute;${f?`left:${a}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${a}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;${f?`left:${c}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${c}px;left:0;right:0;border-top:2px dashed #ef4444;`}padding:2px 6px;color:#ef4444;background:rgba(0,0,0,.6)">\u25A0 end</div>`;}return document.body.appendChild(r),window.addEventListener("scroll",o,{passive:true}),o(),{el:r,destroy(){window.removeEventListener("scroll",o),r.remove();}}}var Kt=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,Zt=/[MmLlHhVvCcSsQqTtAaZz]/g;function Rn(e,t,n){if(!ze)return;let r=(e.match(Zt)??[]).join("").toUpperCase(),o=(t.match(Zt)??[]).join("").toUpperCase(),s=(e.match(Kt)??[]).length,a=(t.match(Kt)??[]).length;if(r!==o){ae(`morphTo: command sequence differs (${r||"\u2205"} \u2192 ${o||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,n);return}s!==a&&ae(`morphTo: coordinate count differs (${s} \u2192 ${a}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,n);}function Hn(e,t,n){let r=(t.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let a=parseFloat(s),c=r[o++]??a;return String(+(a+(c-a)*n).toFixed(4))})}function wt(e,t={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:Fe(t,(n,r)=>Nn(e,n,r))}function Nn(e,t,n){let{preset:r,...o}=t,s=r?{...Bt[r],...o}:o,{selector:a="path, polyline, line, polygon, rect, circle",speed:c=1,fade:f=false,easing:p="linear",trigger:g={},stagger:x=0,direction:y="forward",once:R=false,debug:j=false,axis:w="y",scrollContainer:H,autoReverse:ce=false,delay:N=0,strokeColor:M,strokeWidth:C,fillOpacity:O,waypoints:v,velocityScale:A=false,threshold:D=0,rootMargin:te="0px",repeat:q=0,repeatDelay:F=0,morphTo:I,clip:E,autoplay:Q=false,duration:h=1e3,native:P=true,onProgress:Se,onStart:U,onComplete:_,onEnter:fe,onLeave:Te,onEnterBack:ge,onLeaveBack:me}=s,b=E===true?"left":typeof E=="string"?E:false,S=typeof p=="function"?p:ee[p]??ee.linear,ye=ie(g.start||"top bottom"),Ne=ie(g.end||"bottom top"),X=typeof H=="string"?document.querySelector(H):H??null,Ae=Array.isArray(M)?M[0]:null,Pe=Array.isArray(M)?M[1]:typeof M=="string"?M:null,he=Array.isArray(C)?C[0]:null,De=Array.isArray(C)?C[1]:typeof C=="number"?C:null,Oe=Array.isArray(O)?O[0]:null,be=Array.isArray(O)?O[1]:typeof O=="number"?O:null;function ke(i){let u=i*100;switch(b){case "right":return `inset(0 0 0 ${100-u}%)`;case "top":return `inset(0 0 ${100-u}% 0)`;case "bottom":return `inset(${100-u}% 0 0 0)`;case "center":return `circle(${i*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let l=b?[]:Array.from(e.querySelectorAll(a)),m=[],K=[],k=0,V=0,Y=x,G=0,Ie=0,Z=false,$e=false,Re=0,mt=-1,et=[],tt=-1,pe=false,xe=0,Ve=0,_e,pt=false,dt=null;function Lt(){dt?.destroy(),dt=null;}let Ge=new Set,Ct=NaN,We=true,nt=-1,At=performance.now(),Be=NaN;function rt(){return X?w==="x"?X.scrollLeft:X.scrollTop:w==="x"?window.scrollX:window.scrollY}function Pt(){return X?w==="x"?X.clientWidth:X.clientHeight:w==="x"?window.innerWidth:window.innerHeight}function Ot(){let i=ot(e,X,w);return we(i,i.scroll,Pt(),ye,Ne)}function dn(){let i=V-k,u=l.length-1,d=X??document.documentElement,L=w==="x"?"Width":"Height";if(Y=x,x>0&&u>0&&i>0){let ne=d[`scroll${L}`]-d[`client${L}`]-1-k-i/c;ne>=0&&(Y=Math.min(x,ne/(u*i)));}let J=Math.max(0,u)*Y*i,le=i/Math.min(c,1);G=k+Math.min(0,J,le,J+le),Ie=k+Math.max(0,J,le,J+le);}function kt(){(({tStart:k,tEnd:V}=Ot())),dn(),j&&ze&&(Lt(),dt=$n(k,V,w));}function gt(i,u=Ot){ve(e,{type:"draw",getProgress:()=>i.getProgress(),getTrigger:u});let d=i.destroy;return i.destroy=()=>{d.call(i),Ee(e);},i}function $t(i,u){return R&&!ce?Math.max(mt,S(et[i]=Math.max(et[i]??0,u))):S(u)}function gn(i,u){if(e.style.setProperty("--scroll-draw-progress",String(i)),b){let d=u==="reverse"?1-i:i;e.style.clipPath=ke(d);return}l.forEach((d,L)=>yt(d,L,i,u));}function yt(i,u,d,L){i.style.strokeDashoffset=L==="reverse"?`${m[u]*d}`:`${m[u]*(1-d)}`,f&&(i.style.opacity=L==="reverse"?`${1-d}`:`${d}`),Ae&&Pe?i.style.stroke=it(Ae,Pe,d):Pe&&(i.style.stroke=Pe),he!==null&&De!==null?i.style.strokeWidth=`${he+(De-he)*d}`:De!==null&&(i.style.strokeWidth=`${De}`),Oe!==null&&be!==null?i.style.fillOpacity=`${Oe+(be-Oe)*d}`:be!==null&&(i.style.fillOpacity=`${be}`),I&&i.tagName.toLowerCase()==="path"&&K[u]&&i.setAttribute("d",Hn(K[u],I,d));}function ht(){if(e.style.setProperty("--scroll-draw-progress","0"),b){e.style.clipPath=ke(y==="reverse"?1:0);return}l.forEach((i,u)=>{i.style.strokeDasharray=`${m[u]}`,i.style.strokeDashoffset=y==="reverse"?"0":`${m[u]}`,f?i.style.opacity=y==="reverse"?"1":"0":i.style.opacity="",Ae&&(i.style.stroke=Ae),he!==null&&(i.style.strokeWidth=`${he}`),Oe!==null&&(i.style.fillOpacity=`${Oe}`),I&&i.tagName.toLowerCase()==="path"&&K[u]&&i.setAttribute("d",K[u]);});}function je(i,u){let d=i.getAttribute("d"),L=st(i);if(I&&K[u]){i.setAttribute("d",I);let J=st(i);i.setAttribute("d",K[u]),L=Math.max(st(i),J),i.setAttribute("d",d);}m[u]=L,i.style.strokeDasharray=`${L}`;}if(l.forEach((i,u)=>{kn(i);let d=i.tagName.toLowerCase()==="path";d?K.push(i.getAttribute("d")??""):K.push(""),je(i,u);let L=m[u];I&&(d?Rn(K[K.length-1],I,i):ae(`morphTo only applies to <path> elements \u2014 ignored on <${i.tagName}>.`,i)),n?(i.style.strokeDashoffset=y==="reverse"?`${L}`:"0",f&&(i.style.opacity="1"),Pe&&(i.style.stroke=Pe),De!==null&&(i.style.strokeWidth=`${De}`),be!==null&&(i.style.fillOpacity=`${be}`),I&&i.tagName.toLowerCase()==="path"&&i.setAttribute("d",I)):(i.style.strokeDashoffset=y==="reverse"?"0":`${L}`,f?i.style.opacity=y==="reverse"?"1":"0":i.style.opacity="",Ae&&(i.style.stroke=Ae),he!==null&&(i.style.strokeWidth=`${he}`),Oe!==null&&(i.style.fillOpacity=`${Oe}`));}),n)return b&&(e.style.clipPath=ke(1)),_?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};b&&(e.style.clipPath=ke(y==="reverse"?1:0));let Rt=typeof p=="string"?at(p):null;function yn(){return !(P===false||Q||j&&ze||!On()||!l.length||!Rt||b||w!=="y"||X||c!==1||x!==0||R||ce||A!==false||I||v||q||N>0||Se||U||_||fe||Te||ge||me||M!=null||C!=null||O!=null||(g.start||"top bottom").trim()!=="top bottom"||(g.end||"bottom top").trim()!=="bottom top")}function hn(){let i=++Pn,u=`svg-scroll-draw-${i}`,d=`svg-scroll-draw-host-${i}`,L=`--svg-scroll-draw-${i}`,J=y==="reverse"?"0":"var(--ssd-len)",le=y==="reverse"?"var(--ssd-len)":"0",ne=`stroke-dashoffset:${J};`,W=`stroke-dashoffset:${le};`;f&&(ne+=`opacity:${y==="reverse"?1:0};`,W+=`opacity:${y==="reverse"?0:1};`);let B=document.createElement("style");B.setAttribute("data-svg-scroll-draw",""),B.textContent=`@keyframes ${u}{from{${ne}}to{${W}}}.${d}{view-timeline-name:${L};view-timeline-axis:block;}.${u}{animation-name:${u};animation-duration:auto;animation-timing-function:${Rt};animation-fill-mode:both;animation-timeline:${L};animation-range:cover 0% cover 100%;}`,document.head.appendChild(B),e.classList.add(d);function se(T,$){T.style.setProperty("--ssd-len",String(m[$])),T.style.strokeDasharray=`${m[$]}`,T.style.strokeDashoffset="",T.style.opacity="",T.style.animationPlayState="",T.classList.add(u);}l.forEach(se);let re=false,ue=-1;function de(){if(ue>=0)return ue;let T=e.getBoundingClientRect(),{tStart:$,tEnd:oe}=we({top:T.top,height:T.height},rt(),Pt(),ye,Ne);return S(z(rt(),$,oe,c))}return {destroy(){e.classList.remove(d),l.forEach(T=>{T.classList.remove(u),T.style.removeProperty("--ssd-len"),T.style.animationPlayState="";}),B.remove();},replay(){re=false,ue=-1,l.forEach(se);},pause(){re=true,l.forEach(T=>{T.style.animationPlayState="paused";});},resume(){re&&(re=false,l.forEach(T=>{T.style.animationPlayState="running";}));},seek(T){let $=Math.min(1,Math.max(0,T));ue=$,re=true,l.forEach((oe,He)=>{oe.classList.remove(u),oe.style.strokeDashoffset=y==="reverse"?`${m[He]*$}`:`${m[He]*(1-$)}`,f&&(oe.style.opacity=y==="reverse"?`${1-$}`:`${$}`);});},getProgress(){return de()},refresh(){l.forEach((T,$)=>{je(T,$),T.style.setProperty("--ssd-len",String(m[$]));});}}}if(yn())return gt(hn());function bn(){let i=Math.max(1,h),u=b?i:i*(1+Math.max(0,l.length-1)*x),d=0,L=0,J=false;function le(ue){let de=true,T=Math.min(1,Math.max(0,ue/u));if(b){let $=Math.min(1,Math.max(0,ue/i)),oe=S($);xe=oe,e.style.setProperty("--scroll-draw-progress",String(oe)),e.style.clipPath=ke(y==="reverse"?1-oe:oe),Se?.(oe),$<1&&(de=false);}else {l.forEach((oe,He)=>{let vn=He*x*i,Ft=Math.min(1,Math.max(0,(ue-vn)/i));yt(oe,He,S(Ft),y),Ft<1&&(de=false);});let $=S(T);xe=$,Se?.($),e.style.setProperty("--scroll-draw-progress",String($));}if(v){let $=S(T);for(let oe in v){let He=parseFloat(oe);$>=He&&!Ge.has(He)&&(Ge.add(He),v[oe]?.());}}return de}function ne(ue){if(pe)return;let de=ue-d;$e||($e=true,U?.());let T=le(de);if(T&&!Z){Z=true,le(u),_?.(),Ve<(q==="infinite"?1/0:q??0)&&(Ve++,_e=setTimeout(()=>{d=performance.now(),$e=false,Z=false,Ge.clear(),ht(),Re=requestAnimationFrame(ne);},F));return}T||(Re=requestAnimationFrame(ne));}function W(){cancelAnimationFrame(Re),clearTimeout(_e),d=performance.now(),L=0,pe=false,$e=false,Z=false,Ve=0,J=true,xe=0,Ge.clear(),ht(),Re=requestAnimationFrame(ne);}let B=new IntersectionObserver(ue=>{ue.forEach(de=>{de.isIntersecting&&!(R&&Z)?W():!de.isIntersecting&&!R&&!Z&&(cancelAnimationFrame(Re),clearTimeout(_e),J=false);});},{root:X??null,threshold:D,rootMargin:te}),se;function re(){clearTimeout(se),se=setTimeout(()=>l.forEach(je),150);}return window.addEventListener("resize",re),window.addEventListener("orientationchange",re),N>0?setTimeout(()=>B.observe(e),N):B.observe(e),{destroy(){cancelAnimationFrame(Re),clearTimeout(_e),B.disconnect(),window.removeEventListener("resize",re),window.removeEventListener("orientationchange",re),clearTimeout(se);},replay(){Ve=0,W();},pause(){pe||!J||(pe=true,L=performance.now()-d,cancelAnimationFrame(Re));},resume(){pe&&(pe=false,J=true,d=performance.now()-L,Re=requestAnimationFrame(ne));},seek(ue){let de=Math.min(1,Math.max(0,ue));xe=de,pe=true,L=de*u,d=performance.now()-L,cancelAnimationFrame(Re),le(L);},getProgress(){return xe},refresh(){clearTimeout(se),l.forEach(je);}}}if(Q)return gt(bn());kt();let Ht=()=>z(rt(),G,Ie,1);function Nt(){Z=true,_?.(),Ve<(q==="infinite"?1/0:q)&&(Ve++,_e=setTimeout(()=>{pt=true;},F));}function Dt(){mt=-1,et=[],$e=false,Z=false,pt=false,Ge.clear(),ht(),We=true;}function wn(){let i=performance.now(),u=rt();if(pt&&Ht()%1&&Dt(),!We&&A===false&&u===Ct)return;We=false,Ct=u;let d=c;if(A!==false){let W=i-At,B=W>0?Math.abs(u-(nt<0?u:nt))/W:0;d=c*Math.max(.2,1+B*(typeof A=="number"?A:1)*.04);}nt=u,At=i;let L=ce?tt===-1||u>=tt?"forward":"reverse":y;tt=u;let J=V-k,le=true,ne=J===0?0:(u-k)/J;if(isNaN(Be)||(Be<=0&&ne>0&&fe?.(),Be<1&&ne>=1&&Te?.(),Be>=1&&ne<1&&ge?.(),Be>0&&ne<=0&&me?.()),Be=ne,b){let W=$t(0,z(u,k,V,d));xe=W,e.style.setProperty("--scroll-draw-progress",String(W));let B=L==="reverse"?1-W:W;e.style.clipPath=ke(B),Se?.(W),!$e&&z(u,k,V,d)>0&&($e=true,U?.()),W>=1&&!Z?Nt():W<1&&!R&&(Z=false);return}if(l.forEach((W,B)=>{let se=B*Y*J,re=$t(B,z(u,k+se,V+se,d));yt(W,B,re,L),B===0&&(xe=re,Se?.(re),e.style.setProperty("--scroll-draw-progress",String(re))),re<1&&(le=false);}),v){let W=S(z(u,k,V,d));for(let B in v){let se=parseFloat(B);W>=se&&!Ge.has(se)&&(Ge.add(se),v[B]?.());}}!$e&&z(u,k,V,d)>0&&($e=true,U?.()),le&&!Z?Nt():!le&&!R&&(Z=false);}let qe=Me(X??window,[e],Ht,wn,()=>{let i=m.join();l.forEach(je),kt(),We=true,m.join()!==i&&Ye();}),bt=N>0;function Ye(){qe.hold(pe||bt);}let It;return bt&&(It=setTimeout(()=>{bt=false,Ye();},N)),Ye(),gt({destroy(){clearTimeout(_e),clearTimeout(It),qe.off(),Lt();},replay(){Dt(),tt=-1,nt=-1,Ve=0,pe=false,xe=0,clearTimeout(_e),Ye();},pause(){pe=true,qe.hold(true);},resume(){pe&&(pe=false,We=true,Ye());},seek(i){let u=Math.min(1,Math.max(0,i));xe=u,mt=u,et=[],pe=true,qe.hold(true),gn(u,y),We=true;},getProgress(){return xe},refresh:qe.remeasure},()=>({tStart:k,tEnd:V}))}var Jt=new WeakMap,Dn=0;function en(e){return JSON.stringify(e,(t,n)=>{if(typeof n=="function")return "\u0192";if(typeof Element<"u"&&n instanceof Element){let r=Jt.get(n);return r===void 0&&Jt.set(n,r=++Dn),`el#${r}`}return n})}function tn(e,t){let n={...e};for(let r of Object.keys(n))typeof n[r]=="function"&&(n[r]=(...o)=>t()[r]?.(...o));return n}function In(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function nn(e){let t=[],n=/([\w]+)\(([^)]*)\)/g,r;for(;(r=n.exec(e))!==null;){let o=[],s=[],a=r[2].trim();if(a)for(let c of a.split(/[\s,]+/)){let f=c.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(f?parseFloat(f[1]):0),s.push(f?f[2]:"");}t.push({fn:r[1],nums:o,units:s});}return t}function Fn(e,t,n){let r=nn(e),o=nn(t);return r.length===0||r.length!==o.length?n<1?e:t:r.map((s,a)=>{let c=o[a];return s.fn!==c.fn||s.nums.length!==c.nums.length?n<1?`${s.fn}(${s.nums.map((f,p)=>`${f}${s.units[p]}`).join(", ")})`:`${c.fn}(${c.nums.map((f,p)=>`${f}${c.units[p]}`).join(", ")})`:`${s.fn}(${s.nums.map((f,p)=>`${f+(c.nums[p]-f)*n}${s.units[p]}`).join(", ")})`}).join(" ")}function rn(e,t,n){if(typeof e=="number"&&typeof t=="number")return String(e+(t-e)*n);let r=String(e),o=String(t);if(In(r))return it(r,o,n);if(r.includes("("))return Fn(r,o,n);let s=r.match(/^([-+]?[\d.]+)(.*)$/),a=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&a){let c=parseFloat(s[1]),f=parseFloat(a[1]);return `${c+(f-c)*n}${s[2]||a[2]}`}return n<1?r:o}function Vn(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}var _n=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Gn=0,on="--scroll-draw-progress";function Wn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var an={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function vt(e,t){return typeof window>"u"?an:t.respectReducedMotion===false?sn(e,t,false):Fe(t,(n,r)=>sn(e,n,r))}function sn(e,t,n){let{props:r,trigger:o={},easing:s="ease-out",speed:a=1,once:c=false,axis:f="y",scrollContainer:p,native:g=true,velocityScale:x=false,triggerElement:y,onProgress:R,onComplete:j,onEnter:w,onLeave:H,onEnterBack:ce,onLeaveBack:N}=t,M=typeof s=="function"?s:ee[s]??ee["ease-out"],C=ie(o.start||"top bottom"),O=ie(o.end||"bottom top"),v=y??e,A=typeof p=="string"?document.querySelector(p):p??null,D=Object.entries(r).map(([l,m])=>({prop:Vn(l),from:Array.isArray(m)?m[0]:"",to:Array.isArray(m)?m[1]:m}));function te(){let l=window.getComputedStyle(e);for(let m of D)m.from===""&&(m.from=l.getPropertyValue(m.prop).trim()||"0");}function q(){for(let l of D)e.style.setProperty(l.prop,String(l.to));}let F=new Map;for(let l of [...D.map(m=>m.prop),on])F.set(l,e.style.getPropertyValue(l));function I(){for(let[l,m]of F)m?e.style.setProperty(l,m):e.style.removeProperty(l);}if(n)return q(),j?.(),{...an,destroy:I,getProgress:()=>1};te();let E=()=>A?f==="x"?A.scrollLeft:A.scrollTop:f==="x"?window.scrollX:window.scrollY,Q=()=>A?f==="x"?A.clientWidth:A.clientHeight:f==="x"?window.innerWidth:window.innerHeight,h=typeof s=="string"?at(s):null;function P(){if(!g||!Wn()||!h||f!=="y"||A||v!==e||c||a!==1||R||j||w||H||ce||N||x!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of D)if(!_n.has(l.prop))return false;return true}function Se(){let l=`ssd-a-${++Gn}`,m=D.map(G=>`${G.prop}:${G.from}`).join(";"),K=D.map(G=>`${G.prop}:${G.to}`).join(";"),k=document.createElement("style");k.setAttribute("data-ssd-animate",""),k.textContent=`@keyframes ${l}{from{${m}}to{${K}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${h};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild(k),e.classList.add(l);let V=()=>{let G=e.getBoundingClientRect();return we({top:G.top,height:G.height},E(),Q(),C,O)};ve(e,{type:"animate",getProgress:()=>Y.getProgress(),getTrigger:V});let Y={refresh(){},destroy(){e.classList.remove(l),k.remove(),e.style.animationPlayState="",I(),Ee(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(G){let Ie=Math.min(1,Math.max(0,G));e.classList.remove(l);for(let Z of D)e.style.setProperty(Z.prop,rn(Z.from,Z.to,Ie));},getProgress(){let{tStart:G,tEnd:Ie}=V();return M(z(E(),G,Ie,a))}};return Y}if(P())return Se();let U=0,_=0,fe=false,Te=-1,ge=0,me=0,b=false,S=NaN,ye=-1,Ne=0,X=v===e?D:[],Ae=false;function Pe(){let l=e.style,m=X.map(Y=>l.getPropertyValue(Y.prop)),K=l.transition;X.length&&(l.transition="none"),X.forEach(Y=>l.setProperty(Y.prop,F.get(Y.prop)??""));let k=ot(v,A,f);X.forEach((Y,G)=>l.setProperty(Y.prop,m[G])),X.length&&(e.offsetWidth,l.transition=K);let V=we(k,k.scroll,Q(),C,O);Ae&&Math.abs(V.tStart-U)<1&&Math.abs(V.tEnd-_)<1||(Ae=true,U=V.tStart,_=V.tEnd);}function he(l){e.style.setProperty(on,String(l));for(let m of D)e.style.setProperty(m.prop,rn(m.from,m.to,l));R?.(l);}function De(l){if(isNaN(S)){S=l;return}S<=0&&l>0&&w?.(),S<1&&l>=1&&H?.(),S>=1&&l<1&&ce?.(),S>0&&l<=0&&N?.(),S=l;}function Oe(){if(fe)return;let l=performance.now(),m=E(),K=a;if(x!==false){let G=l-Ne,Ie=G>0?Math.abs(m-(ye<0?m:ye))/G:0;K=a*Math.max(.2,1+Ie*(typeof x=="number"?x:1)*.04);}ye=m,Ne=l;let k=_===U?0:(m-U)/(_-U);De(k);let V=z(m,U,_,K),Y=c?Math.max(Te,M(ge=Math.max(ge,V))):M(V);me=Y,he(Y),Y>=1&&!b?(b=true,j?.()):Y<1&&!c&&(b=false);}let be=Me(A??window,[v],()=>z(E(),U,_,Math.min(a,1)),Oe,Pe);Pe(),_===U&&ae("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),ge=z(E(),U,_,a),me=M(ge),he(me),ve(e,{type:"animate",getProgress:()=>me,getTrigger:()=>({tStart:U,tEnd:_})});function ke(){fe=true,be.hold(true);}return {destroy(){fe=true,be.off(),I(),Ee(e);},replay(){Te=-1,ge=0,b=false,me=0,fe=false,he(0),be.hold(false);},pause:ke,resume(){fe&&(fe=false,be.hold(false));},seek(l){let m=Math.min(1,Math.max(0,l));me=m,Te=m,ge=0,ke(),he(m);},getProgress(){return me},refresh:be.remeasure}}var Et={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function St(e,t){if(typeof window>"u")return Et;let n=typeof e=="string"?document.querySelector(e):e;return n?Fe(t,(r,o)=>Bn(n,r,o)):(ae("scrollCounter: element not found:",e),Et)}function Bn(e,t,n){let{from:r=0,to:o,format:s,easing:a="ease-out",trigger:c={},once:f=true,decimals:p,onComplete:g}=t,x=p!==void 0?h=>h.toFixed(p):s??(h=>String(Math.round(h))),y=typeof a=="function"?a:ee[a]??ee["ease-out"],R=ie(c.start||"top 80%"),j=ie(c.end||"top 20%");if(n)return e.textContent=x(o),g?.(),{...Et,getProgress:()=>1};let w=0,H=0,ce=false,N=-1,M=0,C=0,O=false,v=()=>window.scrollY,A=()=>window.innerHeight;function D(){let h=e.getBoundingClientRect(),P=we({top:h.top,height:h.height},v(),A(),R,j);ce&&Math.abs(P.tStart-w)<1&&Math.abs(P.tEnd-H)<1||(ce=true,w=P.tStart,H=P.tEnd);}let te=e.style.getPropertyValue("--scroll-draw-progress");function q(h){e.textContent=x(r+(o-r)*h),e.style.setProperty("--scroll-draw-progress",String(h));}let F=()=>z(v(),w,H,1);function I(){let h=F(),P=f?Math.max(N,y(M=Math.max(M,h))):y(h);C=P,q(P),P>=1&&!O?(O=true,g?.()):P<1&&!f&&(O=false);}D();{M=z(v(),w,H,1);let h=y(M);C=h,q(h);}let E=Me(window,[e],F,I,D);ve(e,{type:"counter",getProgress:()=>C,getTrigger:()=>({tStart:w,tEnd:H})});let Q=()=>E.hold(false);return {destroy(){E.off(),e.style.setProperty("--scroll-draw-progress",te),Ee(e);},replay(){N=-1,M=0,O=false,C=0,q(0),Q();},pause:()=>E.hold(true),resume:Q,seek(h){let P=Math.min(1,Math.max(0,h));C=P,N=P,M=0,E.hold(true),q(P);},getProgress(){return C}}}var ln={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Tt(e,t={}){if(typeof window>"u")return ln;let n=typeof e=="string"?document.querySelector(e):e;if(!n||n.tagName.toLowerCase()!=="video")return ae("scrollVideo: <video> element not found:",e),ln;let r=n,{trigger:o={},easing:s="linear",once:a=false,axis:c="y",preload:f="auto",triggerElement:p,onReady:g,onComplete:x,onProgress:y}=t,R=p??r,j=window.matchMedia("(prefers-reduced-motion: reduce)").matches,w=typeof s=="function"?s:ee[s]??ee.linear,H=ie(o.start||"top top"),ce=ie(o.end||"bottom top");r.pause(),r.hasAttribute("preload")||(r.preload=f);let N=t.from??0,M=t.to,C=0,O=0,v=false,A=-1,D=0,te=0,q=false,F=false,I=()=>c==="x"?window.scrollX:window.scrollY,E=()=>c==="x"?window.innerWidth:window.innerHeight;function Q(){let b=R.getBoundingClientRect(),S=c==="x"?b.left:b.top,ye=c==="x"?b.width:b.height,Ne=we({top:S,height:ye},I(),E(),H,ce);C=Ne.tStart,O=Ne.tEnd,F&&O===C&&ae("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r);}let h=NaN;function P(b){if(!F)return;let S=M??r.duration??0,ye=N+(S-N)*b;ye!==h&&(h=ye,r.currentTime=ye),r.style.setProperty("--scroll-draw-progress",String(b)),y?.(b);}let Se=()=>z(I(),C,O,1);function U(){if(!F||j)return;let b=Se(),S=a?Math.max(A,w(D=Math.max(D,b))):w(b);te=S,P(S),S>=1&&!q?(q=true,x?.()):S<1&&!a&&(q=false);}let _=Me(window,[R],Se,U,Q),fe=()=>_.hold(v||!F||j);fe();function Te(){if(F=true,M===void 0&&(M=r.duration),j){P(1),g?.();return}Q(),g?.(),v?P(te):fe();}r.readyState>=1?Te():r.addEventListener("loadedmetadata",Te,{once:true}),F||Q();let ge=j?()=>{}:lt(b=>{b&&(ge(),j=true,_.hold(true),P(1));});ve(r,{type:"video",getProgress:()=>te,getTrigger:()=>({tStart:C,tEnd:O})});function me(){v&&(v=false,fe());}return {destroy(){_.off(),r.removeEventListener("loadedmetadata",Te),ge(),Ee(r);},replay(){A=-1,D=0,q=false,te=0,h=NaN,P(0),me();},pause(){v=true,_.hold(true);},resume:me,seek(b){let S=Math.min(1,Math.max(0,b));te=S,A=S,D=0,v=true,_.hold(true),h=NaN,P(S);},getProgress(){return te}}}function un(e,t){let n=document.createElement("span");n.textContent=t,n.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(n);}function ft(e=""){let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=e,t}function fn(e){let t=e.textContent??"";return e.textContent="",t.split(/(\s+)/).filter(Boolean).map(n=>{let r=e.appendChild(ft(n)),o=/^\s+$/.test(n);return o?r.style.whiteSpace="pre":r.style.display="inline-block",o?null:r}).filter(n=>n!==null)}function zn(e){let t=e.textContent??"";e.textContent="";let n=[],r=null;for(let o of t){let s=ft(o),a=o===" ";a?s.style.whiteSpace="pre":(s.style.display="inline-block",n.push(s)),a||o>"\u0DFF"?r=null:r||(r=e.appendChild(ft()),r.style.cssText="display:inline-block;white-space:nowrap"),(r??e).appendChild(s);}return n}function cn(e){let t=fn(e),n=new Map;for(let s of t){let a=s.offsetTop;n.has(a)||n.set(a,[]),n.get(a).push(s);}let r=[],o=Array.from(n.keys()).sort((s,a)=>s-a);for(let s of o){let a=n.get(s),c=ft();c.style.display="inline-block",a.forEach((f,p)=>{let g=f.nextElementSibling;c.appendChild(f),p<a.length-1&&g&&g.style.whiteSpace==="pre"&&c.appendChild(g);}),r.push(c);}return e.textContent="",r.forEach((s,a)=>{e.appendChild(s),a<r.length-1&&e.appendChild(document.createTextNode(" "));}),r}function jn(e,t,n,r){if(n<=1||r===0)return e;r=Math.min(r,1/n);let o=(n-1)*r,s=t*r,a=s+(1-o);return a<=s?e>=s?1:0:Qe((e-s)/(a-s),0,1)}function qn(e,t){let n=[];if(t?.y!==void 0&&n.push(`translateY(${t.y*(1-e)}px)`),t?.x!==void 0&&n.push(`translateX(${t.x*(1-e)}px)`),t?.rotate!==void 0&&n.push(`rotate(${t.rotate*(1-e)}deg)`),t?.scale!==void 0){let r=t.scale+(1-t.scale)*e;n.push(`scale(${r})`);}return n.join(" ")}var xt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Mt(e,t={}){if(typeof window>"u")return xt;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return ae("scrollText: element not found:",e),xt;let r=n;return Fe(t,(o,s)=>Yn(r,o,s))}function Yn(e,t,n){let{split:r="words",stagger:o=.04,easing:s="ease-out",from:a={opacity:0,y:24},trigger:c={},once:f=true,onComplete:p}=t,g=typeof s=="function"?s:ee[s]??ee["ease-out"],x=ie(c.start||"top 85%"),y=ie(c.end||"top 40%"),R=e.innerHTML,j=e.textContent??"",w;r==="chars"?w=zn(e):r==="lines"?w=cn(e):w=fn(e),un(e,j);let H=w.length;function ce(E,Q){a?.opacity!==void 0&&(E.style.opacity=String(a.opacity+(1-a.opacity)*Q));let h=qn(Q,a);h&&(E.style.transform=h);}function N(E){e.style.setProperty("--scroll-draw-progress",String(E)),w.forEach((Q,h)=>{let P=g(jn(E,h,H,o));ce(Q,P);});}if(n)return N(1),p?.(),{...xt,destroy:()=>{e.innerHTML=R;},getProgress:()=>1};N(0);let M=0,C=0,O=-1,v=0,A=false;function D(){({tStart:M,tEnd:C}=we(e.getBoundingClientRect(),window.scrollY,window.innerHeight,x,y));}let te=()=>z(window.scrollY,M,C,1);function q(){let E=f?O=Math.max(O,te()):te();v=E,N(E),E>=1&&!A?(A=true,p?.()):E<1&&!f&&(A=false);}D();let F=Me(window,[e],te,q,()=>{r==="lines"&&(e.innerHTML=R,w=cn(e),un(e,j),N(v)),D();});ve(e,{type:"text",getProgress:()=>v,getTrigger:()=>({tStart:M,tEnd:C})});let I=()=>F.hold(false);return {destroy(){F.off(),e.innerHTML=R,Ee(e);},replay(){O=-1,A=false,v=0,N(0),I();},pause:()=>F.hold(true),resume:I,seek(E){F.hold(true),N(v=O=Qe(E,0,1));},getProgress(){return v}}}var Je=e=>typeof e=="function"?e():vue.unref(e);function Ce(e,t,n){let r=null,o=t(),s=()=>{r?.destroy(),r=e.value?n(e.value,tn(o,()=>o)):null;};vue.onMounted(s),vue.watch(()=>en(o=t()),s),vue.onUnmounted(()=>{r?.destroy(),r=null;});}function yo(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),wt),t}var mn={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},Zn=[null,Boolean,[Boolean,String],[Boolean,Number]],pn=e=>({type:e,default:void 0}),ho=vue.defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(mn).map(([e,t])=>[e,t?pn(Zn[t]):null])),setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>{let r={};for(let o in mn){let s=e[o];s!=null&&(r[o]=s);}return r},wt),()=>vue.h("div",{ref:n},t.default?.())}});function bo(e){let t=vue.ref(null);return Ce(t,()=>Je(e),vt),t}var wo=vue.defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>e.options,vt),()=>vue.h("div",{ref:n},t.default?.())}});function vo(e){let t=vue.ref(null);return Ce(t,()=>Je(e),St),t}var Eo=vue.defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:pn(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=vue.ref(null);return Ce(t,()=>{let n={to:e.to};return e.from!=null&&(n.from=e.from),e.format!=null&&(n.format=e.format),e.easing!=null&&(n.easing=e.easing),e.trigger!=null&&(n.trigger=e.trigger),e.once!=null&&(n.once=e.once),e.decimals!=null&&(n.decimals=e.decimals),e.onComplete!=null&&(n.onComplete=e.onComplete),n},St),()=>vue.h("span",{ref:t})}});function So(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),Tt),t}var To=vue.defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=vue.ref(null);return Ce(t,()=>e.options??{},Tt),()=>vue.h("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}});function xo(e={}){let t=vue.ref(null);return Ce(t,()=>Je(e),Mt),t}var Mo=vue.defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let n=vue.ref(null);return Ce(n,()=>e.options??{},Mt),()=>vue.h(e.tag,{ref:n},t.default?.())}});exports.ScrollAnimate=wo;exports.ScrollCounter=Eo;exports.ScrollDraw=ho;exports.ScrollText=Mo;exports.ScrollVideo=To;exports.useScrollAnimate=bo;exports.useScrollCounter=vo;exports.useScrollDraw=yo;exports.useScrollText=xo;exports.useScrollVideo=So;
1
+ 'use strict';var vue=require('vue');function An({tension:e=2.5,friction:t=2.2}={}){return n=>1-Math.cos(n*Math.PI*e)*Math.pow(1-n,t)}function On({bounces:e=3,decay:t=.5}={}){let n=Math.max(1,Math.round(e)),r=Math.max(.01,Math.min(.99,t)),o=Math.sqrt(r),s=0,a=[];for(let g=0;g<n;g++){let w=Math.pow(o,g);a.push(w),s+=w;}let f=[0],m=0;for(let g=0;g<n;g++)m+=a[g]/s,f.push(m);return g=>{if(g<=0)return 0;if(g>=1)return 1;for(let w=0;w<n;w++)if(g<=f[w+1]){let O=(g-f[w])/(f[w+1]-f[w]);if(w===0)return O*(2-O);let S=1-Math.pow(r,w);return S+(1-S)*(2*O-1)*(2*O-1)}return 1}}function Pn({amplitude:e=1,period:t=.4}={}){let n=Math.max(1,e),r=Math.max(.1,t),o=n<=1?r/4:r/(2*Math.PI)*Math.asin(1/n);return s=>s<=0?0:s>=1?1:n*Math.pow(2,-10*s)*Math.sin((s-o)*(2*Math.PI)/r)+1}var ne={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,spring:An(),bounce:On(),elastic:Pn()};function st(e,t,n){return Math.min(n,Math.max(t,e))}function le(e="top bottom"){let t=e.trim();if(/^\d+(\.\d+)?%$/.test(t))return {element:"top",viewport:t};let[n="top",r="bottom"]=t.split(/\s+/).filter(Boolean);return {element:n,viewport:r}}var jt=(e,t)=>e==="top"?0:e==="center"?.5:e==="bottom"?1:t;function Wt(e,t,n,r){return e+n+t*jt(r,0)}function Bt(e,t){return t*(/^\d+(\.\d+)?%$/.test(e)?parseFloat(e)/100:jt(e,1))}function U(e,t,n,r){return n===t?0:st((e-t)/(n-t)*r,0,1)}function Ce(e,t,n,r,o){let s=Wt(e.top,e.height,t,r.element)-Bt(r.viewport,n),a=Wt(e.top,e.height,t,o.element)-Bt(o.viewport,n);return {tStart:s,tEnd:a}}function ft(e,t,n){let r=e.getBoundingClientRect(),o=n==="x"?r.width:r.height;return t?{top:n==="x"?r.left-t.getBoundingClientRect().left-t.clientLeft+t.scrollLeft:r.top-t.getBoundingClientRect().top-t.clientTop+t.scrollTop,height:o,scroll:0}:{top:n==="x"?r.left:r.top,height:o,scroll:n==="x"?window.scrollX:window.scrollY}}function mt(e){let t=parseFloat(e.getAttribute("pathLength")??"");if(t>0)return t;let n=e.tagName.toLowerCase();if(n==="rect"){let r=parseFloat(e.getAttribute("width")??"0"),o=parseFloat(e.getAttribute("height")??"0");return 2*(r+o)}if(n==="circle"){let r=parseFloat(e.getAttribute("r")??"0");return 2*Math.PI*r}return e.getTotalLength()}function qt(e){let t=/^#([a-f\d])([a-f\d])([a-f\d])$/i.exec(e);if(t)return [parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[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 r=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i.exec(e);return r?[parseInt(r[1]),parseInt(r[2]),parseInt(r[3])]:null}function pt(e,t,n){let r=qt(e),o=qt(t);return !r||!o?e:`rgb(${Math.round(r[0]+(o[0]-r[0])*n)},${Math.round(r[1]+(o[1]-r[1])*n)},${Math.round(r[2]+(o[2]-r[2])*n)})`}var Yt={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 D(e,...t){Xe&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var kn="cubic-bezier(0.333333, 0, 0.666667, 0.333333)",Rn="cubic-bezier(0.333333, 0.666667, 0.666667, 1)",Ut=33;function $n(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timing-function: linear(0, 1)")}function Fn(e){let t=[];for(let n=0;n<Ut;n++){let r=n/(Ut-1);t.push(String(Math.round(e(r)*1e5)/1e5));}return `linear(${t.join(",")})`}function dt(e){switch(e){case "linear":return "linear";case "ease-in":return kn;case "ease-out":return Rn;case "ease-in-out":return $n()?Fn(ne["ease-in-out"]):null;default:return null}}var Qt=Symbol.for("svg-scroll-draw.registry");function Kt(){let e=globalThis;return e[Qt]||(e[Qt]=new Map)}function ke(e,t){Kt().set(e,t);}function Re(e){Kt().delete(e);}function Ze(e){if(typeof window>"u"||typeof window.matchMedia!="function")return ()=>{};let t=window.matchMedia("(prefers-reduced-motion: reduce)"),n=o=>e(!!o.matches);if(typeof t.addEventListener=="function")return t.addEventListener("change",n),()=>t.removeEventListener("change",n);let r=t;return r.addListener?.(n),()=>r.removeListener?.(n)}function qe(e,t){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t(e,true);let n=t(e,false),r=Ze(s=>{if(!s)return;r();let a=(n.getProgress?.()??0)>=1;n.destroy(),n=t(a?{...e,onComplete:void 0}:e,true);}),o={};for(let s of Object.keys(n))o[s]=(...a)=>n[s]?.(...a);return o.destroy=()=>{r(),n.destroy();},o}var it,gt=new Set,yt=new WeakMap,at=new Map,Xt=e=>{let t=e.getBoundingClientRect();return t.width+" "+t.height};function Hn(e){let t=new Set;for(let n of e)for(;n&&n!==document.body;n=n.parentElement)for(let r=n;r;r=r.previousElementSibling)t.add(r);return t}function Zt(e,t){if(typeof ResizeObserver>"u"||typeof document>"u")return ()=>{};let n=()=>t();it??(it=new ResizeObserver(o=>{let s=false;for(let{target:a}of o)yt.get(a)!==Xt(a)&&(s=true),yt.set(a,"");s&&gt.forEach(a=>a());})),gt.add(n);let r=Hn(e);return [document.body,document.documentElement].forEach(o=>o&&r.add(o)),r.forEach(o=>{yt.has(o)||yt.set(o,Xt(o)),at.set(o,(at.get(o)??0)+1),it.observe(o);}),()=>{gt.delete(n)&&(r.forEach(o=>{let s=(at.get(o)??1)-1;if(s)return void at.set(o,s);at.delete(o),it?.unobserve(o);}),gt.size||(it?.disconnect(),it=void 0));}}function Ne(e,t,n,r,o){let s,a=NaN,f,m,g=()=>{s=0,r(),!f&&!s&&(a=n())>0&&a<1&&(s=requestAnimationFrame(g));},w=()=>{!s&&!f&&n()!==a&&(s=requestAnimationFrame(g));},O=z=>{f=z,cancelAnimationFrame(s),s=a=NaN,w();},S=()=>{clearTimeout(m),o(),w();},W=()=>{clearTimeout(m),m=setTimeout(S,150);},Q=Zt(t,W),v=z=>{e[z]("scroll",w,{passive:true}),window[z]("resize",W),window[z]("orientationchange",W);};return v("addEventListener"),w(),{hold:O,remeasure:S,off(){O(true),v("removeEventListener"),Q(),clearTimeout(m);}}}var In=0;function Nn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")&&CSS.supports("view-timeline-name: --x")}function Jt(e,t){let n="";try{n=getComputedStyle(e).getPropertyValue(t).trim();}catch{}return n||(e.getAttribute(t)??"").trim()}var en=new Set(["","none","transparent","rgba(0, 0, 0, 0)"]);function Dn(e){if(!Xe)return;let t=Jt(e,"stroke");if(!t||t==="none"){D("Element has no stroke \u2014 path will not be visible.",e);return}let n=(e.getAttribute("fill")??"").trim();n&&!en.has(n)&&!en.has(Jt(e,"fill"))&&D("Element has a fill \u2014 it may obscure the stroke animation.",e);}function _n(e,t,n){let r=document.createElement("div");r.setAttribute("data-svg-scroll-draw-debug",""),r.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 o(){let s=n==="x"?window.scrollX:window.scrollY,a=e-s,f=t-s,m=n==="x";r.innerHTML=`
2
+ <div style="position:absolute;${m?`left:${a}px;top:0;bottom:0;border-left:2px dashed #22c55e;`:`top:${a}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:${f}px;top:0;bottom:0;border-left:2px dashed #ef4444;`:`top:${f}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(r),window.addEventListener("scroll",o,{passive:true}),o(),{el:r,destroy(){window.removeEventListener("scroll",o),r.remove();}}}var tn=/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,nn=/[MmLlHhVvCcSsQqTtAaZz]/g;function Vn(e,t,n){if(!Xe)return;let r=(e.match(nn)??[]).join("").toUpperCase(),o=(t.match(nn)??[]).join("").toUpperCase(),s=(e.match(tn)??[]).length,a=(t.match(tn)??[]).length;if(r!==o){D(`morphTo: command sequence differs (${r||"\u2205"} \u2192 ${o||"\u2205"}). Interpolation is coordinate-for-coordinate, so the result will not reach the target shape. Redraw both paths with the same commands.`,n);return}s!==a&&D(`morphTo: coordinate count differs (${s} \u2192 ${a}). Extra coordinates are ignored and missing ones hold their start value, so the result will not reach the target shape.`,n);}function zn(e,t,n){let r=(t.match(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g)??[]).map(Number),o=0;return e.replace(/[-+]?(?:\d*\.)?\d+(?:[eE][-+]?\d+)?/g,s=>{let a=parseFloat(s),f=r[o++]??a;return String(+(a+(f-a)*n).toFixed(4))})}function Tt(e,t={}){return typeof window>"u"?{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0}:qe(t,(n,r)=>Gn(e,n,r))}function Gn(e,t,n){let{preset:r,...o}=t,s=r?{...Yt[r],...o}:o,{selector:a="path, polyline, line, polygon, rect, circle",speed:f=1,fade:m=false,easing:g="linear",trigger:w={},stagger:O=0,direction:S="forward",once:W=false,debug:Q=false,axis:v="y",scrollContainer:z,autoReverse:J=false,delay:P=0,strokeColor:A,strokeWidth:L,fillOpacity:k,waypoints:y,velocityScale:R=false,threshold:G=0,rootMargin:ie="0px",repeat:K=0,repeatDelay:_=0,morphTo:H,clip:T,autoplay:X=false,duration:E=1e3,native:C=true,onProgress:he,onStart:I,onComplete:j,onEnter:fe,onLeave:Se,onEnterBack:me,onLeaveBack:ae}=s,x=T===true?"left":typeof T=="string"?T:false,M=typeof g=="function"?g:ne[g]??ne.linear,re=le(w.start||"top bottom"),$e=le(w.end||"bottom top"),Z=typeof z=="string"?document.querySelector(z):z??null,Fe=Array.isArray(A)?A[0]:null,Te=Array.isArray(A)?A[1]:typeof A=="string"?A:null,be=Array.isArray(L)?L[0]:null,ze=Array.isArray(L)?L[1]:typeof L=="number"?L:null,He=Array.isArray(k)?k[0]:null,xe=Array.isArray(k)?k[1]:typeof k=="number"?k:null;function Ae(i){let u=i*100;switch(x){case "right":return `inset(0 0 0 ${100-u}%)`;case "top":return `inset(0 0 ${100-u}% 0)`;case "bottom":return `inset(${100-u}% 0 0 0)`;case "center":return `circle(${i*150}% at 50% 50%)`;default:return `inset(0 ${100-u}% 0 0)`}}let l=x?[]:Array.from(e.querySelectorAll(a)),d=[],oe=[],$=0,V=0,B=O,q=0,Ve=0,se=false,Ie=false,we=0,Qe=-1,Ye=[],Ue=-1,pe=false,c=0,p=0,b,ce=false,ve=null;function Ge(){ve?.destroy(),ve=null;}let Oe=new Set,We=NaN,Be=true,ct=-1,Rt=performance.now(),Ke=NaN;function ut(){return Z?v==="x"?Z.scrollLeft:Z.scrollTop:v==="x"?window.scrollX:window.scrollY}function $t(){return Z?v==="x"?Z.clientWidth:Z.clientHeight:v==="x"?window.innerWidth:window.innerHeight}function Ft(){let i=ft(e,Z,v);return Ce(i,i.scroll,$t(),re,$e)}function En(){let i=V-$,u=l.length-1,h=Z??document.documentElement,N=v==="x"?"Width":"Height";if(B=O,O>0&&u>0&&i>0){let de=h[`scroll${N}`]-h[`client${N}`]-1-$-i/f;de>=0&&(B=Math.min(O,de/(u*i)));}let ue=Math.max(0,u)*B*i,Me=i/Math.min(f,1);q=$+Math.min(0,ue,Me,ue+Me),Ve=$+Math.max(0,ue,Me,ue+Me);}function Ht(){(({tStart:$,tEnd:V}=Ft())),En(),Q&&Xe&&(Ge(),ve=_n($,V,v));}function wt(i,u=Ft){ke(e,{type:"draw",getProgress:()=>i.getProgress(),getTrigger:u});let h=i.destroy;return i.destroy=()=>{h.call(i),Re(e);},i}function It(i,u){return W&&!J?Math.max(Qe,M(Ye[i]=Math.max(Ye[i]??0,u))):M(u)}function Sn(i,u){if(e.style.setProperty("--scroll-draw-progress",String(i)),x){let h=u==="reverse"?1-i:i;e.style.clipPath=Ae(h);return}l.forEach((h,N)=>vt(h,N,i,u));}function vt(i,u,h,N){i.style.strokeDashoffset=N==="reverse"?`${d[u]*h}`:`${d[u]*(1-h)}`,m&&(i.style.opacity=N==="reverse"?`${1-h}`:`${h}`),Fe&&Te?i.style.stroke=pt(Fe,Te,h):Te&&(i.style.stroke=Te),be!==null&&ze!==null?i.style.strokeWidth=`${be+(ze-be)*h}`:ze!==null&&(i.style.strokeWidth=`${ze}`),He!==null&&xe!==null?i.style.fillOpacity=`${He+(xe-He)*h}`:xe!==null&&(i.style.fillOpacity=`${xe}`),H&&i.tagName.toLowerCase()==="path"&&oe[u]&&i.setAttribute("d",zn(oe[u],H,h));}function Et(){if(e.style.setProperty("--scroll-draw-progress","0"),x){e.style.clipPath=Ae(S==="reverse"?1:0);return}l.forEach((i,u)=>{i.style.strokeDasharray=`${d[u]}`,i.style.strokeDashoffset=S==="reverse"?"0":`${d[u]}`,m?i.style.opacity=S==="reverse"?"1":"0":i.style.opacity="",Fe&&(i.style.stroke=Fe),be!==null&&(i.style.strokeWidth=`${be}`),He!==null&&(i.style.fillOpacity=`${He}`),H&&i.tagName.toLowerCase()==="path"&&oe[u]&&i.setAttribute("d",oe[u]);});}function nt(i,u){let h=i.getAttribute("d"),N=mt(i);if(H&&oe[u]){i.setAttribute("d",H);let ue=mt(i);i.setAttribute("d",oe[u]),N=Math.max(mt(i),ue),i.setAttribute("d",h);}d[u]=N,i.style.strokeDasharray=`${N}`;}if(l.forEach((i,u)=>{Dn(i);let h=i.tagName.toLowerCase()==="path";h?oe.push(i.getAttribute("d")??""):oe.push(""),nt(i,u);let N=d[u];H&&(h?Vn(oe[oe.length-1],H,i):D(`morphTo only applies to <path> elements \u2014 ignored on <${i.tagName}>.`,i)),n?(i.style.strokeDashoffset=S==="reverse"?`${N}`:"0",m&&(i.style.opacity="1"),Te&&(i.style.stroke=Te),ze!==null&&(i.style.strokeWidth=`${ze}`),xe!==null&&(i.style.fillOpacity=`${xe}`),H&&i.tagName.toLowerCase()==="path"&&i.setAttribute("d",H)):(i.style.strokeDashoffset=S==="reverse"?"0":`${N}`,m?i.style.opacity=S==="reverse"?"1":"0":i.style.opacity="",Fe&&(i.style.stroke=Fe),be!==null&&(i.style.strokeWidth=`${be}`),He!==null&&(i.style.fillOpacity=`${He}`));}),n)return x&&(e.style.clipPath=Ae(1)),j?.(),{destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>1};x&&(e.style.clipPath=Ae(S==="reverse"?1:0));let Nt=typeof g=="string"?dt(g):null;function Tn(){return !(C===false||X||Q&&Xe||!Nn()||!l.length||!Nt||x||v!=="y"||Z||f!==1||O!==0||W||J||R!==false||H||y||K||P>0||he||I||j||fe||Se||me||ae||A!=null||L!=null||k!=null||(w.start||"top bottom").trim()!=="top bottom"||(w.end||"bottom top").trim()!=="bottom top")}function xn(){let i=++In,u=`svg-scroll-draw-${i}`,h=`svg-scroll-draw-host-${i}`,N=`--svg-scroll-draw-${i}`,ue=S==="reverse"?"0":"var(--ssd-len)",Me=S==="reverse"?"var(--ssd-len)":"0",de=`stroke-dashoffset:${ue};`,ee=`stroke-dashoffset:${Me};`;m&&(de+=`opacity:${S==="reverse"?1:0};`,ee+=`opacity:${S==="reverse"?0:1};`);let te=document.createElement("style");te.setAttribute("data-svg-scroll-draw",""),te.textContent=`@keyframes ${u}{from{${de}}to{${ee}}}.${h}{view-timeline-name:${N};view-timeline-axis:block;}.${u}{animation-name:${u};animation-duration:auto;animation-timing-function:${Nt};animation-fill-mode:both;animation-timeline:${N};animation-range:cover 0% cover 100%;}`,document.head.appendChild(te),e.classList.add(h);function Ee(F,Y){F.style.setProperty("--ssd-len",String(d[Y])),F.style.strokeDasharray=`${d[Y]}`,F.style.strokeDashoffset="",F.style.opacity="",F.style.animationPlayState="",F.classList.add(u);}l.forEach(Ee);let ge=false,Le=-1;function Pe(){if(Le>=0)return Le;let F=e.getBoundingClientRect(),{tStart:Y,tEnd:ye}=Ce({top:F.top,height:F.height},ut(),$t(),re,$e);return M(U(ut(),Y,ye,f))}return {destroy(){e.classList.remove(h),l.forEach(F=>{F.classList.remove(u),F.style.removeProperty("--ssd-len"),F.style.animationPlayState="";}),te.remove();},replay(){ge=false,Le=-1,l.forEach(Ee);},pause(){ge=true,l.forEach(F=>{F.style.animationPlayState="paused";});},resume(){ge&&(ge=false,l.forEach(F=>{F.style.animationPlayState="running";}));},seek(F){let Y=Math.min(1,Math.max(0,F));Le=Y,ge=true,l.forEach((ye,je)=>{ye.classList.remove(u),ye.style.strokeDashoffset=S==="reverse"?`${d[je]*Y}`:`${d[je]*(1-Y)}`,m&&(ye.style.opacity=S==="reverse"?`${1-Y}`:`${Y}`);});},getProgress(){return Pe()},refresh(){l.forEach((F,Y)=>{nt(F,Y),F.style.setProperty("--ssd-len",String(d[Y]));});}}}if(Tn())return wt(xn());function Mn(){let i=Math.max(1,E),u=x?i:i*(1+Math.max(0,l.length-1)*O),h=0,N=0,ue=false;function Me(Le){let Pe=true,F=Math.min(1,Math.max(0,Le/u));if(x){let Y=Math.min(1,Math.max(0,Le/i)),ye=M(Y);c=ye,e.style.setProperty("--scroll-draw-progress",String(ye)),e.style.clipPath=Ae(S==="reverse"?1-ye:ye),he?.(ye),Y<1&&(Pe=false);}else {l.forEach((ye,je)=>{let Cn=je*O*i,Gt=Math.min(1,Math.max(0,(Le-Cn)/i));vt(ye,je,M(Gt),S),Gt<1&&(Pe=false);});let Y=M(F);c=Y,he?.(Y),e.style.setProperty("--scroll-draw-progress",String(Y));}if(y){let Y=M(F);for(let ye in y){let je=parseFloat(ye);Y>=je&&!Oe.has(je)&&(Oe.add(je),y[ye]?.());}}return Pe}function de(Le){if(pe)return;let Pe=Le-h;Ie||(Ie=true,I?.());let F=Me(Pe);if(F&&!se){se=true,Me(u),j?.(),p<(K==="infinite"?1/0:K??0)&&(p++,b=setTimeout(()=>{h=performance.now(),Ie=false,se=false,Oe.clear(),Et(),we=requestAnimationFrame(de);},_));return}F||(we=requestAnimationFrame(de));}function ee(){cancelAnimationFrame(we),clearTimeout(b),h=performance.now(),N=0,pe=false,Ie=false,se=false,p=0,ue=true,c=0,Oe.clear(),Et(),we=requestAnimationFrame(de);}let te=new IntersectionObserver(Le=>{Le.forEach(Pe=>{Pe.isIntersecting&&!(W&&se)?ee():!Pe.isIntersecting&&!W&&!se&&(cancelAnimationFrame(we),clearTimeout(b),ue=false);});},{root:Z??null,threshold:G,rootMargin:ie}),Ee;function ge(){clearTimeout(Ee),Ee=setTimeout(()=>l.forEach(nt),150);}return window.addEventListener("resize",ge),window.addEventListener("orientationchange",ge),P>0?setTimeout(()=>te.observe(e),P):te.observe(e),{destroy(){cancelAnimationFrame(we),clearTimeout(b),te.disconnect(),window.removeEventListener("resize",ge),window.removeEventListener("orientationchange",ge),clearTimeout(Ee);},replay(){p=0,ee();},pause(){pe||!ue||(pe=true,N=performance.now()-h,cancelAnimationFrame(we));},resume(){pe&&(pe=false,ue=true,h=performance.now()-N,we=requestAnimationFrame(de));},seek(Le){let Pe=Math.min(1,Math.max(0,Le));c=Pe,pe=true,N=Pe*u,h=performance.now()-N,cancelAnimationFrame(we),Me(N);},getProgress(){return c},refresh(){clearTimeout(Ee),l.forEach(nt);}}}if(X)return wt(Mn());Ht();let Dt=()=>U(ut(),q,Ve,1);function _t(){se=true,j?.(),p<(K==="infinite"?1/0:K)&&(p++,b=setTimeout(()=>{ce=true;},_));}function Vt(){Qe=-1,Ye=[],Ie=false,se=false,ce=false,Oe.clear(),Et(),Be=true;}function Ln(){let i=performance.now(),u=ut();if(ce&&Dt()%1&&Vt(),!Be&&R===false&&u===We)return;Be=false,We=u;let h=f;if(R!==false){let ee=i-Rt,te=ee>0?Math.abs(u-(ct<0?u:ct))/ee:0;h=f*Math.max(.2,1+te*(typeof R=="number"?R:1)*.04);}ct=u,Rt=i;let N=J?Ue===-1||u>=Ue?"forward":"reverse":S;Ue=u;let ue=V-$,Me=true,de=ue===0?0:(u-$)/ue;if(isNaN(Ke)||(Ke<=0&&de>0&&fe?.(),Ke<1&&de>=1&&Se?.(),Ke>=1&&de<1&&me?.(),Ke>0&&de<=0&&ae?.()),Ke=de,x){let ee=It(0,U(u,$,V,h));c=ee,e.style.setProperty("--scroll-draw-progress",String(ee));let te=N==="reverse"?1-ee:ee;e.style.clipPath=Ae(te),he?.(ee),!Ie&&U(u,$,V,h)>0&&(Ie=true,I?.()),ee>=1&&!se?_t():ee<1&&!W&&(se=false);return}if(l.forEach((ee,te)=>{let Ee=te*B*ue,ge=It(te,U(u,$+Ee,V+Ee,h));vt(ee,te,ge,N),te===0&&(c=ge,he?.(ge),e.style.setProperty("--scroll-draw-progress",String(ge))),ge<1&&(Me=false);}),y){let ee=M(U(u,$,V,h));for(let te in y){let Ee=parseFloat(te);ee>=Ee&&!Oe.has(Ee)&&(Oe.add(Ee),y[te]?.());}}!Ie&&U(u,$,V,h)>0&&(Ie=true,I?.()),Me&&!se?_t():!Me&&!W&&(se=false);}let rt=Ne(Z??window,[e],Dt,Ln,()=>{let i=d.join();l.forEach(nt),Ht(),Be=true,d.join()!==i&&ot();}),St=P>0;function ot(){rt.hold(pe||St);}let zt;return St&&(zt=setTimeout(()=>{St=false,ot();},P)),ot(),wt({destroy(){clearTimeout(b),clearTimeout(zt),rt.off(),Ge();},replay(){Vt(),Ue=-1,ct=-1,p=0,pe=false,c=0,clearTimeout(b),ot();},pause(){pe=true,rt.hold(true);},resume(){pe&&(pe=false,Be=true,ot());},seek(i){let u=Math.min(1,Math.max(0,i));c=u,Qe=u,Ye=[],pe=true,rt.hold(true),Sn(u,S),Be=true;},getProgress(){return c},refresh:rt.remeasure},()=>({tStart:$,tEnd:V}))}var rn=new WeakMap,Wn=0;function lt(e){return JSON.stringify(e,(t,n)=>{if(typeof n=="function")return "\u0192";if(typeof Element<"u"&&n instanceof Element){let r=rn.get(n);return r===void 0&&rn.set(n,r=++Wn),`el#${r}`}return n})}function on(e,t){let n={...e};for(let r of Object.keys(n))typeof n[r]=="function"&&(n[r]=(...o)=>t()[r]?.(...o));return n}function Bn(e){return e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")}function sn(e){let t=[],n=/([\w]+)\(([^)]*)\)/g,r;for(;(r=n.exec(e))!==null;){let o=[],s=[],a=r[2].trim();if(a)for(let f of a.split(/[\s,]+/)){let m=f.match(/^([-+]?[\d.eE]+)(.*)$/);o.push(m?parseFloat(m[1]):0),s.push(m?m[2]:"");}t.push({fn:r[1],nums:o,units:s});}return t}function jn(e,t,n){let r=sn(e),o=sn(t);return r.length===0||r.length!==o.length?n<1?e:t:r.map((s,a)=>{let f=o[a];return s.fn!==f.fn||s.nums.length!==f.nums.length?n<1?`${s.fn}(${s.nums.map((m,g)=>`${m}${s.units[g]}`).join(", ")})`:`${f.fn}(${f.nums.map((m,g)=>`${m}${f.units[g]}`).join(", ")})`:`${s.fn}(${s.nums.map((m,g)=>`${m+(f.nums[g]-m)*n}${s.units[g]}`).join(", ")})`}).join(" ")}function an(e,t,n){if(typeof e=="number"&&typeof t=="number")return String(e+(t-e)*n);let r=String(e),o=String(t);if(Bn(r))return pt(r,o,n);if(r.includes("("))return jn(r,o,n);let s=r.match(/^([-+]?[\d.]+)(.*)$/),a=o.match(/^([-+]?[\d.]+)(.*)$/);if(s&&a){let f=parseFloat(s[1]),m=parseFloat(a[1]);return `${f+(m-f)*n}${s[2]||a[2]}`}return n<1?r:o}function qn(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}var Yn=new Set(["opacity","transform","background-color","color","filter","scale","translate","rotate"]),Un=0,ln="--scroll-draw-progress";function Qn(){return typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("animation-timeline: view()")}var un={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function xt(e,t){return typeof window>"u"?un:t.respectReducedMotion===false?cn(e,t,false):qe(t,(n,r)=>cn(e,n,r))}function cn(e,t,n){let{props:r,trigger:o={},easing:s="ease-out",speed:a=1,once:f=false,axis:m="y",scrollContainer:g,native:w=true,velocityScale:O=false,triggerElement:S,onProgress:W,onComplete:Q,onEnter:v,onLeave:z,onEnterBack:J,onLeaveBack:P}=t,A=typeof s=="function"?s:ne[s]??ne["ease-out"],L=le(o.start||"top bottom"),k=le(o.end||"bottom top"),y=S??e,R=typeof g=="string"?document.querySelector(g):g??null,G=Object.entries(r).map(([l,d])=>({prop:qn(l),from:Array.isArray(d)?d[0]:"",to:Array.isArray(d)?d[1]:d}));function ie(){let l=window.getComputedStyle(e);for(let d of G)d.from===""&&(d.from=l.getPropertyValue(d.prop).trim()||"0");}function K(){for(let l of G)e.style.setProperty(l.prop,String(l.to));}let _=new Map;for(let l of [...G.map(d=>d.prop),ln])_.set(l,e.style.getPropertyValue(l));function H(){for(let[l,d]of _)d?e.style.setProperty(l,d):e.style.removeProperty(l);}if(n)return K(),Q?.(),{...un,destroy:H,getProgress:()=>1};ie();let T=()=>R?m==="x"?R.scrollLeft:R.scrollTop:m==="x"?window.scrollX:window.scrollY,X=()=>R?m==="x"?R.clientWidth:R.clientHeight:m==="x"?window.innerWidth:window.innerHeight,E=typeof s=="string"?dt(s):null;function C(){if(!w||!Qn()||!E||m!=="y"||R||y!==e||f||a!==1||W||Q||v||z||J||P||O!==false||(o.start||"top bottom").trim()!=="top bottom"||(o.end||"bottom top").trim()!=="bottom top")return false;for(let l of G)if(!Yn.has(l.prop))return false;return true}function he(){let l=`ssd-a-${++Un}`,d=G.map(q=>`${q.prop}:${q.from}`).join(";"),oe=G.map(q=>`${q.prop}:${q.to}`).join(";"),$=document.createElement("style");$.setAttribute("data-ssd-animate",""),$.textContent=`@keyframes ${l}{from{${d}}to{${oe}}}.${l}{animation-name:${l};animation-duration:auto;animation-timing-function:${E};animation-fill-mode:both;animation-timeline:view();animation-range:cover 0% cover 100%;}`,document.head.appendChild($),e.classList.add(l);let V=()=>{let q=e.getBoundingClientRect();return Ce({top:q.top,height:q.height},T(),X(),L,k)};ke(e,{type:"animate",getProgress:()=>B.getProgress(),getTrigger:V});let B={refresh(){},destroy(){e.classList.remove(l),$.remove(),e.style.animationPlayState="",H(),Re(e);},replay(){e.classList.remove(l),e.offsetWidth,e.classList.add(l);},pause(){e.style.animationPlayState="paused";},resume(){e.style.animationPlayState="";},seek(q){let Ve=Math.min(1,Math.max(0,q));e.classList.remove(l);for(let se of G)e.style.setProperty(se.prop,an(se.from,se.to,Ve));},getProgress(){let{tStart:q,tEnd:Ve}=V();return A(U(T(),q,Ve,a))}};return B}if(C())return he();let I=0,j=0,fe=false,Se=-1,me=0,ae=0,x=false,M=NaN,re=-1,$e=0,Z=y===e?G:[],Fe=false;function Te(){let l=e.style,d=Z.map(B=>l.getPropertyValue(B.prop)),oe=l.transition;Z.length&&(l.transition="none"),Z.forEach(B=>l.setProperty(B.prop,_.get(B.prop)??""));let $=ft(y,R,m);Z.forEach((B,q)=>l.setProperty(B.prop,d[q])),Z.length&&(e.offsetWidth,l.transition=oe);let V=Ce($,$.scroll,X(),L,k);Fe&&Math.abs(V.tStart-I)<1&&Math.abs(V.tEnd-j)<1||(Fe=true,I=V.tStart,j=V.tEnd);}function be(l){e.style.setProperty(ln,String(l));for(let d of G)e.style.setProperty(d.prop,an(d.from,d.to,l));W?.(l);}function ze(l){if(isNaN(M)){M=l;return}M<=0&&l>0&&v?.(),M<1&&l>=1&&z?.(),M>=1&&l<1&&J?.(),M>0&&l<=0&&P?.(),M=l;}function He(){if(fe)return;let l=performance.now(),d=T(),oe=a;if(O!==false){let q=l-$e,Ve=q>0?Math.abs(d-(re<0?d:re))/q:0;oe=a*Math.max(.2,1+Ve*(typeof O=="number"?O:1)*.04);}re=d,$e=l;let $=j===I?0:(d-I)/(j-I);ze($);let V=U(d,I,j,oe),B=f?Math.max(Se,A(me=Math.max(me,V))):A(V);ae=B,be(B),B>=1&&!x?(x=true,Q?.()):B<1&&!f&&(x=false);}let xe=Ne(R??window,[y],()=>U(T(),I,j,Math.min(a,1)),He,Te);Te(),j===I&&D("scrollAnimate: zero-length trigger window, so it never animates. In a sticky stage, set triggerElement.",e),me=U(T(),I,j,a),ae=A(me),be(ae),ke(e,{type:"animate",getProgress:()=>ae,getTrigger:()=>({tStart:I,tEnd:j})});function Ae(){fe=true,xe.hold(true);}return {destroy(){fe=true,xe.off(),H(),Re(e);},replay(){Se=-1,me=0,x=false,ae=0,fe=false,be(0),xe.hold(false);},pause:Ae,resume(){fe&&(fe=false,xe.hold(false));},seek(l){let d=Math.min(1,Math.max(0,l));ae=d,Se=d,me=0,Ae(),be(d);},getProgress(){return ae},refresh:xe.remeasure}}var Mt={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Lt(e,t){if(typeof window>"u")return Mt;let n=typeof e=="string"?document.querySelector(e):e;return n?qe(t,(r,o)=>Kn(n,r,o)):(D("scrollCounter: element not found:",e),Mt)}function Kn(e,t,n){let{from:r=0,to:o,format:s,easing:a="ease-out",trigger:f={},once:m=true,decimals:g,onComplete:w}=t,O=g!==void 0?E=>E.toFixed(g):s??(E=>String(Math.round(E))),S=typeof a=="function"?a:ne[a]??ne["ease-out"],W=le(f.start||"top 80%"),Q=le(f.end||"top 20%");if(n)return e.textContent=O(o),w?.(),{...Mt,getProgress:()=>1};let v=0,z=0,J=false,P=-1,A=0,L=0,k=false,y=()=>window.scrollY,R=()=>window.innerHeight;function G(){let E=e.getBoundingClientRect(),C=Ce({top:E.top,height:E.height},y(),R(),W,Q);J&&Math.abs(C.tStart-v)<1&&Math.abs(C.tEnd-z)<1||(J=true,v=C.tStart,z=C.tEnd);}let ie=e.style.getPropertyValue("--scroll-draw-progress");function K(E){e.textContent=O(r+(o-r)*E),e.style.setProperty("--scroll-draw-progress",String(E));}let _=()=>U(y(),v,z,1);function H(){let E=_(),C=m?Math.max(P,S(A=Math.max(A,E))):S(E);L=C,K(C),C>=1&&!k?(k=true,w?.()):C<1&&!m&&(k=false);}G();{A=U(y(),v,z,1);let E=S(A);L=E,K(E);}let T=Ne(window,[e],_,H,G);ke(e,{type:"counter",getProgress:()=>L,getTrigger:()=>({tStart:v,tEnd:z})});let X=()=>T.hold(false);return {destroy(){T.off(),e.style.setProperty("--scroll-draw-progress",ie),Re(e);},replay(){P=-1,A=0,k=false,L=0,K(0),X();},pause:()=>T.hold(true),resume:X,seek(E){let C=Math.min(1,Math.max(0,E));L=C,P=C,A=0,T.hold(true),K(C);},getProgress(){return L}}}var fn={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Ct(e,t={}){if(typeof window>"u")return fn;let n=typeof e=="string"?document.querySelector(e):e;if(!n||n.tagName.toLowerCase()!=="video")return D("scrollVideo: <video> element not found:",e),fn;let r=n,{trigger:o={},easing:s="linear",once:a=false,axis:f="y",preload:m="auto",triggerElement:g,onReady:w,onComplete:O,onProgress:S}=t,W=g??r,Q=window.matchMedia("(prefers-reduced-motion: reduce)").matches,v=typeof s=="function"?s:ne[s]??ne.linear,z=le(o.start||"top top"),J=le(o.end||"bottom top");r.pause(),r.hasAttribute("preload")||(r.preload=m);let P=t.from??0,A=t.to,L=0,k=0,y=false,R=-1,G=0,ie=0,K=false,_=false,H=()=>f==="x"?window.scrollX:window.scrollY,T=()=>f==="x"?window.innerWidth:window.innerHeight;function X(){let x=W.getBoundingClientRect(),M=f==="x"?x.left:x.top,re=f==="x"?x.width:x.height,$e=Ce({top:M,height:re},H(),T(),z,J);L=$e.tStart,k=$e.tEnd,_&&k===L&&D("scrollVideo: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r);}let E=NaN;function C(x){if(!_)return;let M=A??r.duration??0,re=P+(M-P)*x;re!==E&&(E=re,r.currentTime=re),r.style.setProperty("--scroll-draw-progress",String(x)),S?.(x);}let he=()=>U(H(),L,k,1);function I(){if(!_||Q)return;let x=he(),M=a?Math.max(R,v(G=Math.max(G,x))):v(x);ie=M,C(M),M>=1&&!K?(K=true,O?.()):M<1&&!a&&(K=false);}let j=Ne(window,[W],he,I,X),fe=()=>j.hold(y||!_||Q);fe();function Se(){if(_=true,A===void 0&&(A=r.duration),Q){C(1),w?.();return}X(),w?.(),y?C(ie):fe();}r.readyState>=1?Se():r.addEventListener("loadedmetadata",Se,{once:true}),_||X();let me=Q?()=>{}:Ze(x=>{x&&(me(),Q=true,j.hold(true),C(1));});ke(r,{type:"video",getProgress:()=>ie,getTrigger:()=>({tStart:L,tEnd:k})});function ae(){y&&(y=false,fe());}return {destroy(){j.off(),r.removeEventListener("loadedmetadata",Se),me(),Re(r);},replay(){R=-1,G=0,K=false,ie=0,E=NaN,C(0),ae();},pause(){y=true,j.hold(true);},resume:ae,seek(x){let M=Math.min(1,Math.max(0,x));ie=M,R=M,G=0,y=true,j.hold(true),E=NaN,C(M);},getProgress(){return ie}}}var ht={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Xn(e){let t=e>1?[0,e-1]:[0],n=[[0,e-1]];for(let r=0;r<n.length;r++){let[o,s]=n[r];if(s-o<2)continue;let a=o+s>>1;t.push(a),n.push([o,a],[a,s]);}return t}function mn(e,t){if(typeof window>"u")return ht;let n=typeof e=="string"?document.querySelector(e):e;if(!n||n.tagName.toLowerCase()!=="canvas")return D("scrollFrames: <canvas> element not found:",e),ht;let r=n,{frames:o,trigger:s={},easing:a="linear",once:f=false,axis:m="y",fit:g="cover",triggerElement:w,onReady:O,onLoad:S,onComplete:W,onProgress:Q}=t||{},v=Array.isArray(o)?o:null,z=t?.count,J=Math.floor(v?Math.min(z??v.length,v.length):z??NaN);if(!(v||typeof o=="function")||!Number.isFinite(J)||J<1)return D("scrollFrames: no frames. Pass `frames` as an array of URLs, or a function with a finite `count` of 1 or more.",r),ht;let P=t.concurrency??6;(!Number.isFinite(P)||P<1)&&(D("scrollFrames: `concurrency` must be a finite number of 1 or more; using 6.",t.concurrency),P=6),P=Math.floor(P);let A=r.getContext("2d");if(!A)return D("scrollFrames: the canvas has no 2D context.",r),ht;let L=J-1,k=w??r,y=window.matchMedia("(prefers-reduced-motion: reduce)").matches,R=typeof a=="function"?a:ne[a]??ne.linear,G=c=>{let p=R(c);return p===p?p:0},ie=le(s.start||"top top"),K=le(s.end||"bottom top"),_=0,H=0,T=false,X=-1,E=0,C=0,he=false,I=false,j=false,fe=false,Se=0,me=-1,ae=new Array(J),x=new Uint8Array(J),M=new Set,re=y?[L]:Xn(J),$e=0,Z=0,Fe=false,Te=(c,...p)=>{if(c)try{c(...p);}catch(b){typeof reportError=="function"?reportError(b):setTimeout(()=>{throw b});}},be=false,ze=c=>{let p;try{p=v?v[c]:o(c);}catch(b){p=b;}return typeof p=="string"&&p?p:(be||(be=true,D(`scrollFrames: no URL for frame ${c}; it is skipped for its nearest neighbour.`,p)),null)},He=()=>m==="x"?window.scrollX:window.scrollY,xe=()=>m==="x"?window.innerWidth:window.innerHeight;function Ae(){!Fe&&Z===re.length&&(Fe=true,Te(S));}function l(){for(;!I&&M.size<P&&$e<re.length;){let c=re[$e++];x[c]||d(c);}}function d(c){x[c]=1;let p=ze(c);if(p===null){Z++,queueMicrotask(()=>{I||Ae();});return}let b=new Image,ce=false,ve=Ge=>{ce||I||(ce=true,b.onload=b.onerror=null,M.delete(b),Ge?ae[c]=b:D("scrollFrames: a frame failed to load; its nearest neighbour shows instead:",p),Z++,l(),V(),Ae());};M.add(b),b.decoding="async",b.onerror=()=>ve(false),b.src=p,typeof b.decode=="function"?b.decode().then(()=>ve(true),()=>{b.complete?ve(b.naturalWidth>0):b.onload=()=>ve(true);}):b.onload=()=>ve(true);}function oe(c){for(let p=0;p<=L;p++){if(ae[c-p])return c-p;if(ae[c+p])return c+p}return -1}function $(){let c=r.clientWidth,p=r.clientHeight;if(!c||!p)return;let b=Math.min(window.devicePixelRatio||1,2),ce=Math.round(c*b),ve=Math.round(p*b);if(Math.abs(r.width-ce)<=1&&Math.abs(r.height-ve)<=1)return;r.width=ce,r.height=ve,me=-1;let Ge=r.clientWidth,Oe=r.clientHeight;if(Ge!==c||Oe!==p){let We=r.style;Ge!==c&&Oe!==p?(We.width=`${c}px`,We.height=`${p}px`):We.aspectRatio=`${c} / ${p}`;}}function V(){let c=oe(Se);if(c<0||c===me)return;let p=ae[c],b=r.width,ce=r.height,ve=p.naturalWidth||b,Ge=p.naturalHeight||ce,Oe=(g==="contain"?Math.min:Math.max)(b/ve,ce/Ge),We=ve*Oe,Be=Ge*Oe;A.clearRect(0,0,b,ce),A.drawImage(p,(b-We)/2,(ce-Be)/2,We,Be),me=c,j||(j=true,Te(O));}function B(c){Se=Math.min(L,Math.max(0,Math.round(c*L))),r.style.setProperty("--scroll-draw-progress",String(c)),V(),Te(Q,c,Se);}function q(){let c=k.getBoundingClientRect(),p=m==="x"?c.left:c.top,b=m==="x"?c.width:c.height,ce=Ce({top:p,height:b},He(),xe(),ie,K);_=ce.tStart,H=ce.tEnd,H===_&&b>0&&!y&&!fe&&(fe=true,D("scrollFrames: zero-length trigger window, so it never scrubs. In a sticky stage, set triggerElement.",r));}let Ve=()=>U(He(),_,H,1);function se(){if(y)return;let c=Ve(),p=f?Math.max(X,G(E=Math.max(E,c))):G(c);C=p,B(p),p>=1&&!he?(he=true,Te(W)):p<1&&!f&&(he=false);}function Ie(){C=1,B(1);}$(),y||q();let we=Ne(window,[k],Ve,se,()=>{$(),y||q(),V();}),Qe=()=>we.hold(T||y);Qe(),y&&Ie(),l();let Ye=typeof ResizeObserver=="function"?new ResizeObserver(()=>{$(),V();}):null;Ye?.observe(r);let Ue=y?()=>{}:Ze(c=>{c&&(Ue(),y=true,we.hold(true),re=re.slice(0,$e),x[L]||re.push(L),Ae(),Ie(),l());});ke(r,{type:"frames",getProgress:()=>C,getTrigger:()=>({tStart:_,tEnd:H})});function pe(){I||!T||(T=false,Qe());}return {destroy(){if(!I){I=true,we.off(),Ye?.disconnect(),Ue();for(let c of M)c.onload=c.onerror=null,c.src="";M.clear(),Re(r);}},replay(){I||(X=-1,E=0,he=false,C=0,B(0),pe());},pause(){I||(T=true,we.hold(true));},resume:pe,seek(c){if(I)return;let p=Math.min(1,Math.max(0,c===c?c:0));C=p,X=p,E=0,T=true,we.hold(true),B(p);},getProgress(){return C}}}var Zn=1e4;function At(e){let{frames:t,count:n}=e;if(typeof t!="function")return lt(e);let r=Number.isFinite(n)?Math.min(Math.max(Math.floor(n),0),Zn):0,o;try{o=Array.from({length:r},(s,a)=>t(a));}catch{o=["throws"];}return lt({...e,frames:o})}function pn(e){if(!e||e.getAttribute("aria-hidden")==="true")return;let t=e.getAttribute("role");t==="presentation"||t==="none"||e.getAttribute("aria-label")||e.getAttribute("aria-labelledby")||D('<ScrollFrames>: the canvas has no aria-label. Say what the frames show, or set aria-hidden="true" if they are decoration.',e);}function dn(e,t){let n=document.createElement("span");n.textContent=t,n.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;user-select:none",e.appendChild(n);}function bt(e=""){let t=document.createElement("span");return t.setAttribute("aria-hidden","true"),t.textContent=e,t}function yn(e){let t=e.textContent??"";return e.textContent="",t.split(/(\s+)/).filter(Boolean).map(n=>{let r=e.appendChild(bt(n)),o=/^\s+$/.test(n);return o?r.style.whiteSpace="pre":r.style.display="inline-block",o?null:r}).filter(n=>n!==null)}function Jn(e){let t=e.textContent??"";e.textContent="";let n=[],r=null;for(let o of t){let s=bt(o),a=o===" ";a?s.style.whiteSpace="pre":(s.style.display="inline-block",n.push(s)),a||o>"\u0DFF"?r=null:r||(r=e.appendChild(bt()),r.style.cssText="display:inline-block;white-space:nowrap"),(r??e).appendChild(s);}return n}function gn(e){let t=yn(e),n=new Map;for(let s of t){let a=s.offsetTop;n.has(a)||n.set(a,[]),n.get(a).push(s);}let r=[],o=Array.from(n.keys()).sort((s,a)=>s-a);for(let s of o){let a=n.get(s),f=bt();f.style.display="inline-block",a.forEach((m,g)=>{let w=m.nextElementSibling;f.appendChild(m),g<a.length-1&&w&&w.style.whiteSpace==="pre"&&f.appendChild(w);}),r.push(f);}return e.textContent="",r.forEach((s,a)=>{e.appendChild(s),a<r.length-1&&e.appendChild(document.createTextNode(" "));}),r}function er(e,t,n,r){if(n<=1||r===0)return e;r=Math.min(r,1/n);let o=(n-1)*r,s=t*r,a=s+(1-o);return a<=s?e>=s?1:0:st((e-s)/(a-s),0,1)}function tr(e,t){let n=[];if(t?.y!==void 0&&n.push(`translateY(${t.y*(1-e)}px)`),t?.x!==void 0&&n.push(`translateX(${t.x*(1-e)}px)`),t?.rotate!==void 0&&n.push(`rotate(${t.rotate*(1-e)}deg)`),t?.scale!==void 0){let r=t.scale+(1-t.scale)*e;n.push(`scale(${r})`);}return n.join(" ")}var Ot={destroy:()=>{},replay:()=>{},pause:()=>{},resume:()=>{},seek:()=>{},getProgress:()=>0};function Pt(e,t={}){if(typeof window>"u")return Ot;let n=typeof e=="string"?document.querySelector(e):e;if(!n)return D("scrollText: element not found:",e),Ot;let r=n;return qe(t,(o,s)=>nr(r,o,s))}function nr(e,t,n){let{split:r="words",stagger:o=.04,easing:s="ease-out",from:a={opacity:0,y:24},trigger:f={},once:m=true,onComplete:g}=t,w=typeof s=="function"?s:ne[s]??ne["ease-out"],O=le(f.start||"top 85%"),S=le(f.end||"top 40%"),W=e.innerHTML,Q=e.textContent??"",v;r==="chars"?v=Jn(e):r==="lines"?v=gn(e):v=yn(e),dn(e,Q);let z=v.length;function J(T,X){a?.opacity!==void 0&&(T.style.opacity=String(a.opacity+(1-a.opacity)*X));let E=tr(X,a);E&&(T.style.transform=E);}function P(T){e.style.setProperty("--scroll-draw-progress",String(T)),v.forEach((X,E)=>{let C=w(er(T,E,z,o));J(X,C);});}if(n)return P(1),g?.(),{...Ot,destroy:()=>{e.innerHTML=W;},getProgress:()=>1};P(0);let A=0,L=0,k=-1,y=0,R=false;function G(){({tStart:A,tEnd:L}=Ce(e.getBoundingClientRect(),window.scrollY,window.innerHeight,O,S));}let ie=()=>U(window.scrollY,A,L,1);function K(){let T=m?k=Math.max(k,ie()):ie();y=T,P(T),T>=1&&!R?(R=true,g?.()):T<1&&!m&&(R=false);}G();let _=Ne(window,[e],ie,K,()=>{r==="lines"&&(e.innerHTML=W,v=gn(e),dn(e,Q),P(y)),G();});ke(e,{type:"text",getProgress:()=>y,getTrigger:()=>({tStart:A,tEnd:L})});let H=()=>_.hold(false);return {destroy(){_.off(),e.innerHTML=W,Re(e);},replay(){k=-1,R=false,y=0,P(0),H();},pause:()=>_.hold(true),resume:H,seek(T){_.hold(true),P(y=k=st(T,0,1));},getProgress(){return y}}}var tt=e=>typeof e=="function"?e():vue.unref(e);function _e(e,t,n,r=lt){let o=null,s=t(),a=()=>{o?.destroy(),o=e.value?n(e.value,on(s,()=>s),s):null;};vue.onMounted(a),vue.watch(()=>r(s=t()),a),vue.onUnmounted(()=>{o?.destroy(),o=null;});}function No(e={}){let t=vue.ref(null);return _e(t,()=>tt(e),Tt),t}var hn={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},ir=[null,Boolean,[Boolean,String],[Boolean,Number]],kt=e=>({type:e,default:void 0}),Do=vue.defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(hn).map(([e,t])=>[e,t?kt(ir[t]):null])),setup(e,{slots:t}){let n=vue.ref(null);return _e(n,()=>{let r={};for(let o in hn){let s=e[o];s!=null&&(r[o]=s);}return r},Tt),()=>vue.h("div",{ref:n},t.default?.())}});function _o(e){let t=vue.ref(null);return _e(t,()=>tt(e),xt),t}var Vo=vue.defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let n=vue.ref(null);return _e(n,()=>e.options,xt),()=>vue.h("div",{ref:n},t.default?.())}});function zo(e){let t=vue.ref(null);return _e(t,()=>tt(e),Lt),t}var Go=vue.defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:kt(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=vue.ref(null);return _e(t,()=>{let n={to:e.to};return e.from!=null&&(n.from=e.from),e.format!=null&&(n.format=e.format),e.easing!=null&&(n.easing=e.easing),e.trigger!=null&&(n.trigger=e.trigger),e.once!=null&&(n.once=e.once),e.decimals!=null&&(n.decimals=e.decimals),e.onComplete!=null&&(n.onComplete=e.onComplete),n},Lt),()=>vue.h("span",{ref:t})}});function Wo(e={}){let t=vue.ref(null);return _e(t,()=>tt(e),Ct),t}var Bo=vue.defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=vue.ref(null);return _e(t,()=>e.options??{},Ct),()=>vue.h("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}}),vn=(e,{triggerElement:t,...n},r)=>{let o=typeof t=="string"?document.querySelector(t):t;return typeof t=="string"&&!o&&D(`<ScrollFrames>: triggerElement "${t}" matches nothing; measuring the canvas.`),mn(e,{...n,frames:r.frames,triggerElement:o??void 0})};function jo(e){let t=vue.ref(null);return _e(t,()=>tt(e),vn,At),t}var bn={frames:0,count:0,trigger:0,easing:0,once:1,axis:0,triggerElement:0,fit:0,concurrency:0,onReady:0,onLoad:0,onComplete:0,onProgress:0},qo=vue.defineComponent({name:"ScrollFrames",props:Object.fromEntries(Object.entries(bn).map(([e,t])=>[e,t?kt(Boolean):e==="frames"?{required:true}:null])),setup(e){let t=vue.ref(null);return _e(t,()=>{let n={};for(let r in bn){let o=e[r];o!=null&&(n[r]=o);}return n},vn,At),vue.onMounted(()=>pn(t.value)),()=>vue.h("canvas",{ref:t,role:"img"})}});function Yo(e={}){let t=vue.ref(null);return _e(t,()=>tt(e),Pt),t}var Uo=vue.defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let n=vue.ref(null);return _e(n,()=>e.options??{},Pt),()=>vue.h(e.tag,{ref:n},t.default?.())}});exports.ScrollAnimate=Vo;exports.ScrollCounter=Go;exports.ScrollDraw=Do;exports.ScrollFrames=qo;exports.ScrollText=Uo;exports.ScrollVideo=Bo;exports.useScrollAnimate=_o;exports.useScrollCounter=zo;exports.useScrollDraw=No;exports.useScrollFrames=jo;exports.useScrollText=Yo;exports.useScrollVideo=Wo;
@@ -4,6 +4,7 @@ import { a as ScrollDrawOptions } from '../types-9bcJdVcg.mjs';
4
4
  import { S as ScrollAnimateOptions } from '../engine-BLWKCfxC.mjs';
5
5
  import { S as ScrollCounterOptions } from '../index-DVjblK_4.mjs';
6
6
  import { ScrollVideoOptions } from '../video/index.mjs';
7
+ import { ScrollFramesOptions } from '../frames/index.mjs';
7
8
  import { ScrollTextOptions } from '../text/index.mjs';
8
9
 
9
10
  /** Options as a plain object, a ref, or a getter — the getter or ref keeps them live. */
@@ -186,6 +187,41 @@ declare const ScrollVideo: vue.DefineComponent<vue.ExtractPropTypes<{
186
187
  muted: boolean;
187
188
  playsInline: boolean;
188
189
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
190
+ /** The options as scrollFrames takes them, but `triggerElement` may be a selector. */
191
+ type FramesInput = Omit<ScrollFramesOptions, 'triggerElement'> & {
192
+ triggerElement?: Element | string | null;
193
+ };
194
+ /**
195
+ * Composable — returns a ref to bind to a <canvas>, which scrubs an image
196
+ * sequence with the scroll. Options as in useScrollDraw: a getter or a ref
197
+ * keeps them live.
198
+ *
199
+ * @example
200
+ * <script setup>
201
+ * import { useScrollFrames } from 'svg-scroll-draw/vue';
202
+ * const film = useScrollFrames({ frames: (i) => `/film/${i + 1}.jpg`, count: 120 });
203
+ * </script>
204
+ * <canvas :ref="film" role="img" aria-label="The headphones turning" />
205
+ */
206
+ declare function useScrollFrames(options: MaybeRefOrGetter<FramesInput>): Ref<HTMLCanvasElement | null, HTMLCanvasElement | null>;
207
+ /**
208
+ * Component — renders a <canvas role="img"> that scrubs an image sequence with
209
+ * the scroll. Every option is a prop; `class`, `style` and `aria-label` fall
210
+ * through to the canvas. Pass a `style` that changes as an object: Vue rewrites
211
+ * a changed style string whole, over the inline size scrollFrames holds on a
212
+ * canvas sized by its attributes.
213
+ *
214
+ * @example
215
+ * <section id="track" style="height: 400vh">
216
+ * <div style="position: sticky; top: 0; height: 100vh">
217
+ * <ScrollFrames :frames="(i) => `/film/${i + 1}.jpg`" :count="120" trigger-element="#track"
218
+ * :trigger="{ start: 'top top', end: 'bottom bottom' }" aria-label="The headphones turning" />
219
+ * </div>
220
+ * </section>
221
+ */
222
+ declare const ScrollFrames: vue.DefineComponent<vue.ExtractPropTypes<Record<keyof ScrollFramesOptions, null>>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
223
+ [key: string]: any;
224
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<Record<keyof ScrollFramesOptions, null>>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
189
225
  /**
190
226
  * Composable — returns a ref to bind to any text element; splits and animates on scroll.
191
227
  *
@@ -227,4 +263,4 @@ declare const ScrollText: vue.DefineComponent<vue.ExtractPropTypes<{
227
263
  tag: string;
228
264
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
229
265
 
230
- export { type MaybeRefOrGetter, ScrollAnimate, ScrollAnimateOptions, ScrollCounter, ScrollCounterOptions, ScrollDraw, ScrollDrawOptions, ScrollText, ScrollTextOptions, ScrollVideo, ScrollVideoOptions, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollText, useScrollVideo };
266
+ export { type MaybeRefOrGetter, ScrollAnimate, ScrollAnimateOptions, ScrollCounter, ScrollCounterOptions, ScrollDraw, ScrollDrawOptions, ScrollFrames, ScrollFramesOptions, ScrollText, ScrollTextOptions, ScrollVideo, ScrollVideoOptions, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollFrames, useScrollText, useScrollVideo };
@@ -4,6 +4,7 @@ import { a as ScrollDrawOptions } from '../types-9bcJdVcg.js';
4
4
  import { S as ScrollAnimateOptions } from '../engine-6VsjEwzb.js';
5
5
  import { S as ScrollCounterOptions } from '../index-BN8yKeQ3.js';
6
6
  import { ScrollVideoOptions } from '../video/index.js';
7
+ import { ScrollFramesOptions } from '../frames/index.js';
7
8
  import { ScrollTextOptions } from '../text/index.js';
8
9
 
9
10
  /** Options as a plain object, a ref, or a getter — the getter or ref keeps them live. */
@@ -186,6 +187,41 @@ declare const ScrollVideo: vue.DefineComponent<vue.ExtractPropTypes<{
186
187
  muted: boolean;
187
188
  playsInline: boolean;
188
189
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
190
+ /** The options as scrollFrames takes them, but `triggerElement` may be a selector. */
191
+ type FramesInput = Omit<ScrollFramesOptions, 'triggerElement'> & {
192
+ triggerElement?: Element | string | null;
193
+ };
194
+ /**
195
+ * Composable — returns a ref to bind to a <canvas>, which scrubs an image
196
+ * sequence with the scroll. Options as in useScrollDraw: a getter or a ref
197
+ * keeps them live.
198
+ *
199
+ * @example
200
+ * <script setup>
201
+ * import { useScrollFrames } from 'svg-scroll-draw/vue';
202
+ * const film = useScrollFrames({ frames: (i) => `/film/${i + 1}.jpg`, count: 120 });
203
+ * </script>
204
+ * <canvas :ref="film" role="img" aria-label="The headphones turning" />
205
+ */
206
+ declare function useScrollFrames(options: MaybeRefOrGetter<FramesInput>): Ref<HTMLCanvasElement | null, HTMLCanvasElement | null>;
207
+ /**
208
+ * Component — renders a <canvas role="img"> that scrubs an image sequence with
209
+ * the scroll. Every option is a prop; `class`, `style` and `aria-label` fall
210
+ * through to the canvas. Pass a `style` that changes as an object: Vue rewrites
211
+ * a changed style string whole, over the inline size scrollFrames holds on a
212
+ * canvas sized by its attributes.
213
+ *
214
+ * @example
215
+ * <section id="track" style="height: 400vh">
216
+ * <div style="position: sticky; top: 0; height: 100vh">
217
+ * <ScrollFrames :frames="(i) => `/film/${i + 1}.jpg`" :count="120" trigger-element="#track"
218
+ * :trigger="{ start: 'top top', end: 'bottom bottom' }" aria-label="The headphones turning" />
219
+ * </div>
220
+ * </section>
221
+ */
222
+ declare const ScrollFrames: vue.DefineComponent<vue.ExtractPropTypes<Record<keyof ScrollFramesOptions, null>>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
223
+ [key: string]: any;
224
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<Record<keyof ScrollFramesOptions, null>>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
189
225
  /**
190
226
  * Composable — returns a ref to bind to any text element; splits and animates on scroll.
191
227
  *
@@ -227,4 +263,4 @@ declare const ScrollText: vue.DefineComponent<vue.ExtractPropTypes<{
227
263
  tag: string;
228
264
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
229
265
 
230
- export { type MaybeRefOrGetter, ScrollAnimate, ScrollAnimateOptions, ScrollCounter, ScrollCounterOptions, ScrollDraw, ScrollDrawOptions, ScrollText, ScrollTextOptions, ScrollVideo, ScrollVideoOptions, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollText, useScrollVideo };
266
+ export { type MaybeRefOrGetter, ScrollAnimate, ScrollAnimateOptions, ScrollCounter, ScrollCounterOptions, ScrollDraw, ScrollDrawOptions, ScrollFrames, ScrollFramesOptions, ScrollText, ScrollTextOptions, ScrollVideo, ScrollVideoOptions, useScrollAnimate, useScrollCounter, useScrollDraw, useScrollFrames, useScrollText, useScrollVideo };
@@ -1 +1 @@
1
- export{d as ScrollAnimate,f as ScrollCounter,b as ScrollDraw,j as ScrollText,h as ScrollVideo,c as useScrollAnimate,e as useScrollCounter,a as useScrollDraw,i as useScrollText,g as useScrollVideo}from'../chunk-5SKWSPQT.mjs';import'../chunk-XSVTHCLO.mjs';import'../chunk-BRV2B2YW.mjs';import'../chunk-32ZCSGFZ.mjs';import'../chunk-U5TKLHGW.mjs';import'../chunk-7USW2XFB.mjs';import'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import'../chunk-NV6YTPHI.mjs';import'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';
1
+ export{d as ScrollAnimate,f as ScrollCounter,b as ScrollDraw,j as ScrollFrames,l as ScrollText,h as ScrollVideo,c as useScrollAnimate,e as useScrollCounter,a as useScrollDraw,i as useScrollFrames,k as useScrollText,g as useScrollVideo}from'../chunk-WKOT2MND.mjs';import'../chunk-22P4KBPG.mjs';import'../chunk-D2BHE4F2.mjs';import'../chunk-XSVTHCLO.mjs';import'../chunk-BRV2B2YW.mjs';import'../chunk-32ZCSGFZ.mjs';import'../chunk-U5TKLHGW.mjs';import'../chunk-7USW2XFB.mjs';import'../chunk-7XOFQCQE.mjs';import'../chunk-V3Z6G5JE.mjs';import'../chunk-UPWWULKI.mjs';import'../chunk-XC5NR2MU.mjs';import'../chunk-2PYLM3E7.mjs';import'../chunk-NV6YTPHI.mjs';import'../chunk-THPTANES.mjs';import'../chunk-4DOJSIEQ.mjs';import'../chunk-5PJEKEEP.mjs';import'../chunk-EBU6E26L.mjs';import'../chunk-LFSU6LR3.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svg-scroll-draw",
3
- "version": "2.24.0",
3
+ "version": "2.25.0",
4
4
  "description": "SVG line drawing on scroll, on the browser's own scroll timeline (CSS animation-timeline, JS fallback). Drop-in for AOS, ScrollReveal and vivus. Plus reveal, pin, snap, text, video and image-sequence scrub. Zero dependencies. React, Vue, Svelte, Solid, Angular, Astro, vanilla JS",
5
5
  "keywords": [
6
6
  "svg",
@@ -1 +0,0 @@
1
- import {a,b as b$1}from'./chunk-XSVTHCLO.mjs';import {a as a$3}from'./chunk-BRV2B2YW.mjs';import {a as a$4}from'./chunk-32ZCSGFZ.mjs';import {a as a$2}from'./chunk-U5TKLHGW.mjs';import {a as a$1}from'./chunk-7USW2XFB.mjs';import {b as b$2}from'./chunk-7XOFQCQE.mjs';import {defineComponent,ref,h as h$1,onMounted,watch,onUnmounted,unref}from'vue';var u=e=>typeof e=="function"?e():unref(e);function r(e,t,o){let l=null,i=t(),s=()=>{l?.destroy(),l=e.value?o(e.value,b$1(i,()=>i)):null;};onMounted(s),watch(()=>a(i=t()),s),onUnmounted(()=>{l?.destroy(),l=null;});}function B(e={}){let t=ref(null);return r(t,()=>u(e),b$2),t}var g={preset:0,selector:0,speed:0,fade:1,easing:0,trigger:0,stagger:0,direction:0,once:1,debug:1,axis:0,scrollContainer:0,autoReverse:1,delay:0,strokeColor:0,strokeWidth:0,fillOpacity:0,clip:2,waypoints:0,velocityScale:3,threshold:0,rootMargin:0,repeat:0,repeatDelay:0,morphTo:0,onProgress:0,onStart:0,onComplete:0,onEnter:0,onLeave:0,onEnterBack:0,onLeaveBack:0,autoplay:1,duration:0,native:1},b=[null,Boolean,[Boolean,String],[Boolean,Number]],T=e=>({type:e,default:void 0}),H=defineComponent({name:"ScrollDraw",props:Object.fromEntries(Object.entries(g).map(([e,t])=>[e,t?T(b[t]):null])),setup(e,{slots:t}){let o=ref(null);return r(o,()=>{let l={};for(let i in g){let s=e[i];s!=null&&(l[i]=s);}return l},b$2),()=>h$1("div",{ref:o},t.default?.())}});function V(e){let t=ref(null);return r(t,()=>u(e),a$1),t}var j=defineComponent({name:"ScrollAnimate",props:{options:{type:Object,required:true}},setup(e,{slots:t}){let o=ref(null);return r(o,()=>e.options,a$1),()=>h$1("div",{ref:o},t.default?.())}});function G(e){let t=ref(null);return r(t,()=>u(e),a$2),t}var h=defineComponent({name:"ScrollCounter",props:{to:{type:Number,required:true},from:{type:Number},format:{type:Function},easing:{type:[String,Function]},trigger:{type:Object},once:T(Boolean),decimals:{type:Number},onComplete:{type:Function}},setup(e){let t=ref(null);return r(t,()=>{let o={to:e.to};return e.from!=null&&(o.from=e.from),e.format!=null&&(o.format=e.format),e.easing!=null&&(o.easing=e.easing),e.trigger!=null&&(o.trigger=e.trigger),e.once!=null&&(o.once=e.once),e.decimals!=null&&(o.decimals=e.decimals),e.onComplete!=null&&(o.onComplete=e.onComplete),o},a$2),()=>h$1("span",{ref:t})}});function N(e={}){let t=ref(null);return r(t,()=>u(e),a$3),t}var F=defineComponent({name:"ScrollVideo",props:{src:{type:String,required:true},options:{type:Object},muted:{type:Boolean,default:true},playsInline:{type:Boolean,default:true},class:{type:String}},setup(e){let t=ref(null);return r(t,()=>e.options??{},a$3),()=>h$1("video",{ref:t,src:e.src,muted:e.muted,playsinline:e.playsInline,preload:"auto",class:e.class})}});function q(e={}){let t=ref(null);return r(t,()=>u(e),a$4),t}var I=defineComponent({name:"ScrollText",props:{options:{type:Object},tag:{type:String,default:"p"}},setup(e,{slots:t}){let o=ref(null);return r(o,()=>e.options??{},a$4),()=>h$1(e.tag,{ref:o},t.default?.())}});export{B as a,H as b,V as c,j as d,G as e,h as f,N as g,F as h,q as i,I as j};