svg-scroll-draw 2.10.2 → 2.12.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
@@ -30,6 +30,8 @@
30
30
  | `scrollVideo` | `svg-scroll-draw/video` | Tie `<video>.currentTime` to scroll. The Apple/Stripe product-page pattern. |
31
31
  | `scrollText` | `svg-scroll-draw/text` | Split text into chars/words/lines and stagger-animate each on scroll. 2.5 KB, nothing else to load. |
32
32
  | `devtools` | `svg-scroll-draw/devtools` | Visual overlay showing every active animation's triggers and progress. Dev-only. |
33
+ | `AOS` | `svg-scroll-draw/aos` | Drop-in replacement for AOS: same `AOS.init()`, same `data-aos` markup, no `aos.css`. |
34
+ | `ScrollReveal` | `svg-scroll-draw/scrollreveal` | Drop-in replacement for ScrollReveal.js 4, MIT instead of GPL-3.0. |
33
35
 
34
36
  All APIs return the same instance object: `{ destroy, replay, pause, resume, seek, getProgress }`.
35
37
 
@@ -357,6 +359,77 @@ import { ScrollDraw } from 'svg-scroll-draw/vue';
357
359
 
358
360
  ---
359
361
 
362
+ ## AOS drop-in — switch from AOS in one line
363
+
364
+ Already using [AOS](https://github.com/michalsnik/aos)? `svg-scroll-draw/aos` speaks its API and
365
+ reads its markup, so the move is an import change. Keep every `data-aos`, `data-aos-offset`,
366
+ `data-aos-delay`, `data-aos-anchor-placement` and custom animation; delete `aos.css` — the styles ship
367
+ inside the module. 3.0 KB gzipped with the styles, against 6.7 KB for AOS 2.3.4 with its stylesheet.
368
+
369
+ ```diff
370
+ - import AOS from 'aos';
371
+ - import 'aos/dist/aos.css';
372
+ + import AOS from 'svg-scroll-draw/aos';
373
+
374
+ AOS.init({ once: true });
375
+ ```
376
+
377
+ No bundler? Swap the script tag, and drop the stylesheet link:
378
+
379
+ ```html
380
+ <script src="https://unpkg.com/svg-scroll-draw/dist/cdn/aos.global.js"></script>
381
+ <script>AOS.init();</script>
382
+ ```
383
+
384
+ `init`, `refresh` and `refreshHard` behave as in AOS 2.3.4: the same trigger positions (anchor
385
+ placements, `data-aos-anchor`, offsets — including AOS's rule that an inline anchor placement without an
386
+ inline offset uses 0), the same `aos-init` / `aos-animate` classes, the same transforms and end states.
387
+ The browser suite runs AOS 2.3.4 and the drop-in side by side on one page in Chromium, Firefox and
388
+ WebKit and fails if any element differs at any scroll stop. AOS 3's `mirror`, `anchorPlacement`,
389
+ `initClassName`, `animatedClassName`, `useClassNames` and the `aos:in` / `aos:out` events work too.
390
+
391
+ Differences, on purpose:
392
+
393
+ - `prefers-reduced-motion: reduce` shows every element in its final state, with no transition.
394
+ - `disable: 'phone' | 'tablet' | 'mobile'` checks the viewport width, not the user agent.
395
+ - Trigger positions are re-measured on `load`, so images that finish late do not shift them.
396
+ - `AOS.destroy()` stops everything, for single-page apps that unmount the page.
397
+ - `throttleDelay` / `debounceDelay` are accepted and ignored: scroll work is batched per frame.
398
+
399
+ ---
400
+
401
+ ## ScrollReveal drop-in — MIT instead of GPL
402
+
403
+ On [ScrollReveal](https://scrollrevealjs.org)? It is GPL-3.0 (with a paid licence for commercial work)
404
+ and has not shipped since 4.0.9. `svg-scroll-draw/scrollreveal` is an independent, MIT-licensed
405
+ implementation of the same API, so the move is an import change. 4.5 KB gzipped, against 5.6 KB.
406
+
407
+ ```diff
408
+ - import ScrollReveal from 'scrollreveal';
409
+ + import ScrollReveal from 'svg-scroll-draw/scrollreveal';
410
+
411
+ ScrollReveal({ distance: '40px', duration: 800 }).reveal('.card', { interval: 80 });
412
+ ```
413
+
414
+ No bundler? `<script src="https://unpkg.com/svg-scroll-draw/dist/cdn/scrollreveal.global.js"></script>`
415
+ defines `window.ScrollReveal` as the function, like ScrollReveal's own file. With CommonJS,
416
+ `require('svg-scroll-draw/scrollreveal').default` is the function.
417
+
418
+ Every option behaves as in 4.0.9 — `distance` / `origin`, `opacity`, `scale`, `rotate`, `duration`,
419
+ `delay`, `easing`, `interval` sequences, `reset`, `useDelay`, `viewFactor`, `viewOffset`,
420
+ `container`, `mobile` / `desktop`, `cleanup` and the four callbacks — as do `reveal`, `clean`, `sync`,
421
+ `destroy`, `data-sr-id` and the `sr` class on `<html>` for FOUC-hiding CSS. The browser suite runs
422
+ ScrollReveal 4.0.9 beside it in Chromium, Firefox and WebKit and fails if any element's inline `style`
423
+ differs by a character at any scroll stop, or if any callback fires differently.
424
+
425
+ Differences, on purpose:
426
+
427
+ - Nothing happens on import. ScrollReveal adds the `sr` class and `body { height: 100% }` as soon as its
428
+ script loads; this does both on the first `ScrollReveal()` call, keeping the import SSR-safe.
429
+ - `prefers-reduced-motion: reduce` shows every element in its final state, with no transition.
430
+
431
+ ---
432
+
360
433
  ## Instance API
361
434
 
362
435
  Every function returns the same instance object:
@@ -447,6 +520,8 @@ devtools.highlight('#my-element'); // outline for 2 seconds
447
520
  | `svg-scroll-draw/timeline` | `scrollDrawTimeline` |
448
521
  | `svg-scroll-draw/cinematic` | `Cinematic` |
449
522
  | `svg-scroll-draw/devtools` | `devtools` (dev-only) |
523
+ | `svg-scroll-draw/aos` | `AOS` (default), `init`, `refresh`, `refreshHard`, `destroy` |
524
+ | `svg-scroll-draw/scrollreveal` | `ScrollReveal` (default and named) |
450
525
 
451
526
  ---
452
527
 
@@ -459,6 +534,8 @@ devtools.highlight('#my-element'); // outline for 2 seconds
459
534
  | `svg-scroll-draw/reveal` | 4.5 KB |
460
535
  | `svg-scroll-draw/text` | 2.5 KB |
461
536
  | `svg-scroll-draw/video` | 2.0 KB |
537
+ | `svg-scroll-draw/scrollreveal` | 4.5 KB |
538
+ | `svg-scroll-draw/aos` (styles included) | 3.0 KB |
462
539
  | `svg-scroll-draw/snap` | 1.7 KB |
463
540
  | `svg-scroll-draw/devtools` | 1.7 KB (dev only) |
464
541
  | `svg-scroll-draw/pin` | 1.6 KB |
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});function $(){return typeof window>"u"||typeof window.matchMedia!="function"?false:window.matchMedia("(prefers-reduced-motion: reduce)").matches}var V=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function M(e,...t){V&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var O={offset:120,delay:0,duration:400,easing:"ease",once:false,mirror:false,anchorPlacement:"top-bottom",disable:false,startEvent:"DOMContentLoaded",disableMutationObserver:false,initClassName:"aos-init",animatedClassName:"aos-animate",useClassNames:false,throttleDelay:99,debounceDelay:50},Y={"ease-in-back":"cubic-bezier(.6,-.28,.735,.045)","ease-out-back":"cubic-bezier(.175,.885,.32,1.275)","ease-in-out-back":"cubic-bezier(.68,-.55,.265,1.55)","ease-in-sine":"cubic-bezier(.47,0,.745,.715)","ease-out-sine":"cubic-bezier(.39,.575,.565,1)","ease-in-out-sine":"cubic-bezier(.445,.05,.55,.95)","ease-in-quad":"cubic-bezier(.55,.085,.68,.53)","ease-out-quad":"cubic-bezier(.25,.46,.45,.94)","ease-in-out-quad":"cubic-bezier(.455,.03,.515,.955)","ease-in-cubic":"cubic-bezier(.55,.055,.675,.19)","ease-out-cubic":"cubic-bezier(.215,.61,.355,1)","ease-in-out-cubic":"cubic-bezier(.645,.045,.355,1)","ease-in-quart":"cubic-bezier(.895,.03,.685,.22)","ease-out-quart":"cubic-bezier(.165,.84,.44,1)","ease-in-out-quart":"cubic-bezier(.77,0,.175,1)"},g="svg-scroll-draw-aos",i=(e,t)=>`translate3d(${e},${t},0)`,B=[["fade-up",i("0","100px")],["fade-down",i("0","-100px")],["fade-right",i("-100px","0")],["fade-left",i("100px","0")],["fade-up-right",i("-100px","100px")],["fade-up-left",i("100px","100px")],["fade-down-right",i("-100px","-100px")],["fade-down-left",i("100px","-100px")],["zoom-in","scale(.6)"],["zoom-out","scale(1.2)"],["zoom-in-up",`${i("0","100px")} scale(.6)`],["zoom-in-down",`${i("0","-100px")} scale(.6)`],["zoom-in-right",`${i("-100px","0")} scale(.6)`],["zoom-in-left",`${i("100px","0")} scale(.6)`],["zoom-out-up",`${i("0","100px")} scale(1.2)`],["zoom-out-down",`${i("0","-100px")} scale(1.2)`],["zoom-out-right",`${i("-100px","0")} scale(1.2)`],["zoom-out-left",`${i("100px","0")} scale(1.2)`],["slide-up",i("0","100%")],["slide-down",i("0","-100%")],["slide-right",i("-100%","0")],["slide-left",i("100%","0")],["flip-left","perspective(2500px) rotateY(-100deg)"],["flip-right","perspective(2500px) rotateY(100deg)"],["flip-up","perspective(2500px) rotateX(-100deg)"],["flip-down","perspective(2500px) rotateX(100deg)"]];function G(e){let t=`.${e}`,n=o=>`[data-aos^=${o}][data-aos^=${o}]`;return ["[data-aos][data-aos]{transition-duration:var(--aos-duration,400ms);transition-timing-function:var(--aos-easing,ease);transition-delay:0s}",`[data-aos][data-aos]${t}{transition-delay:var(--aos-delay,0ms)}`,`${n("fade")}{opacity:0;transition-property:opacity,transform}`,`${n("fade")}${t}{opacity:1;transform:translateZ(0)}`,`${n("zoom")}{opacity:0;transition-property:opacity,transform}`,`${n("zoom")}${t}{opacity:1;transform:translateZ(0) scale(1)}`,`${n("slide")}{transition-property:transform}`,`${n("slide")}${t}{transform:translateZ(0)}`,`${n("flip")}{backface-visibility:hidden;transition-property:transform}`,...B.map(([o,u])=>`[data-aos=${o}]{transform:${u}}`),...["left","right"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateY(0)}`),...["up","down"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateX(0)}`),"[data-aos-instant][data-aos-instant]{transition:none!important}"].join(`
2
+ `)}var a={...O},d=[],m=false,f=0,h,p=null,s=null,w=false,T=()=>typeof window<"u"&&typeof document<"u";function _(e){if(!(e instanceof HTMLElement))return e.getBoundingClientRect().top+window.scrollY;let t=0,n=e;for(;n;)t+=n.offsetTop-(n.tagName!=="BODY"?n.scrollTop:0),n=n.offsetParent;return t}var C=e=>e instanceof HTMLElement?e.offsetHeight:e.getBoundingClientRect().height;function c(e,t){return e.getAttribute(`data-aos-${t}`)}function A(e,t,n){let o=c(e,t);return o==="true"?true:o==="false"?false:n}function N(e,t){let n=c(e,"offset");return n&&!isNaN(Number(n))?parseInt(n,10):n||t?0:a.offset}function W(e){let t=window.innerHeight,n=c(e,"anchor-placement"),o=N(e,n),u=c(e,"anchor"),L=u?document.querySelector(u):null;u&&!L&&M(`aos: data-aos-anchor="${u}" matches nothing; using the element itself`);let x=L||e,l=C(x),r=_(x)-t;switch(n||a.anchorPlacement){case "center-bottom":r+=l/2;break;case "bottom-bottom":r+=l;break;case "top-center":r+=t/2;break;case "center-center":r+=t/2+l/2;break;case "bottom-center":r+=t/2+l;break;case "top-top":r+=t;break;case "bottom-top":r+=t+l;break;case "center-top":r+=t+l/2;break;}return r+o}function X(e){return _(e)+C(e)-N(e,null)}function Z(e){let t=c(e,"duration")??String(a.duration),n=c(e,"delay")??String(a.delay),o=c(e,"easing")??a.easing;e.style.setProperty("--aos-duration",`${parseFloat(t)||0}ms`),e.style.setProperty("--aos-delay",`${parseFloat(n)||0}ms`),e.style.setProperty("--aos-easing",Y[o]??o);}function D(){d=Array.from(document.querySelectorAll("[data-aos]")).map(e=>{let t=d.find(n=>n.node===e);return {node:e,in:0,out:0,once:A(e,"once",a.once),mirror:A(e,"mirror",a.mirror),animated:t?t.animated:e.classList.contains(a.animatedClassName),classes:a.useClassNames?(e.getAttribute("data-aos")||"").split(" ").filter(Boolean):[],id:c(e,"id")}});for(let e of d)Z(e.node),e.node.classList.add(a.initClassName);}function R(){for(let e of d)e.in=W(e.node),e.out=X(e.node);}function H(e,t){document.dispatchEvent(new CustomEvent(`aos:${e}`,{detail:t.node})),t.id&&document.dispatchEvent(new CustomEvent(`aos:${e}:${t.id}`,{detail:t.node}));}function z(e){e.animated||(e.animated=true,e.node.classList.add(a.animatedClassName,...e.classes),H("in",e));}function S(e){e.animated&&(e.animated=false,e.node.classList.remove(a.animatedClassName,...e.classes),H("out",e));}function E(){f=0;let e=window.scrollY;for(let t of d){if(w){z(t);continue}t.mirror&&!t.once&&e>t.out?S(t):e>t.in?z(t):t.once||S(t);}}var k=()=>{f||(f=requestAnimationFrame(E));};function b(){clearTimeout(h),h=setTimeout(v,50);}var q=()=>v();function I(){let e=a.disable;if(typeof e=="function")return e();if(e===true)return true;let t=window.innerWidth;return e==="phone"?t<768:e==="tablet"?t>=768&&t<1024:e==="mobile"?t<1024:false}function P(){document.querySelectorAll("[data-aos]").forEach(e=>{for(let t of ["data-aos","data-aos-easing","data-aos-duration","data-aos-delay"])e.removeAttribute(t);});}function j(){if(document.getElementById(g))return;let e=document.createElement("style");e.id=g,e.textContent=G(a.animatedClassName),document.head.appendChild(e);}function y(){if(!m){if(m=true,s=null,D(),w)for(let e of d)e.node.setAttribute("data-aos-instant","");R(),E(),window.addEventListener("scroll",k,{passive:true}),window.addEventListener("resize",b),window.addEventListener("orientationchange",b),window.addEventListener("load",q),!a.disableMutationObserver&&typeof MutationObserver<"u"&&(p=new MutationObserver(e=>{e.some(n=>[...Array.from(n.addedNodes),...Array.from(n.removedNodes)].some(o=>o instanceof Element&&(o.hasAttribute("data-aos")||o.querySelector("[data-aos]"))))&&Q();}),p.observe(document.documentElement,{childList:true,subtree:true}));}}function U(e={}){if(!T())return [];if((m||s)&&F(),a={...O,...e},I())return P(),[];w=$(),j();let t=document.readyState!=="loading";if(a.startEvent==="DOMContentLoaded"&&t)y();else if(a.startEvent==="load"&&document.readyState==="complete")y();else {let n=a.startEvent==="load"?window:document,o=()=>y();n.addEventListener(a.startEvent,o,{once:true}),s={target:n,type:a.startEvent,fn:o};}return Array.from(document.querySelectorAll("[data-aos]"))}function v(){m&&(R(),E());}function Q(){if(m){if(I()){P();return}D(),v();}}function F(){if(T()){s&&s.target.removeEventListener(s.type,s.fn),s=null,cancelAnimationFrame(f),f=0,clearTimeout(h),window.removeEventListener("scroll",k),window.removeEventListener("resize",b),window.removeEventListener("orientationchange",b),window.removeEventListener("load",q),p?.disconnect(),p=null;for(let e of d)e.node.removeAttribute("data-aos-instant");d=[],m=false,document.getElementById(g)?.remove();}}var J={init:U,refresh:v,refreshHard:Q,destroy:F},oe=J;exports.default=oe;exports.destroy=F;exports.init=U;exports.refresh=v;exports.refreshHard=Q;
@@ -0,0 +1,53 @@
1
+ type AOSAnchorPlacement = 'top-bottom' | 'top-center' | 'top-top' | 'center-bottom' | 'center-center' | 'center-top' | 'bottom-bottom' | 'bottom-center' | 'bottom-top';
2
+ interface AOSOptions {
3
+ /** Px from the trigger point before the animation starts. Default 120. */
4
+ offset?: number;
5
+ /** Ms to wait before animating in. Default 0. */
6
+ delay?: number;
7
+ /** Animation length in ms. Default 400. */
8
+ duration?: number;
9
+ /** An AOS easing name (`'ease-out-back'`…) or any CSS timing function. Default `'ease'`. */
10
+ easing?: string;
11
+ /** Animate only the first time the element scrolls in. Default false. */
12
+ once?: boolean;
13
+ /** Animate out again when the element scrolls past the top. Default false. */
14
+ mirror?: boolean;
15
+ /** Which edge of the element meets which edge of the window. Default `'top-bottom'`. */
16
+ anchorPlacement?: AOSAnchorPlacement;
17
+ /** Skip animations entirely: a boolean, a predicate, or a viewport class. */
18
+ disable?: boolean | 'phone' | 'tablet' | 'mobile' | (() => boolean);
19
+ /** Document event that starts AOS. Default `'DOMContentLoaded'`. */
20
+ startEvent?: string;
21
+ /** Do not watch the DOM for new `[data-aos]` elements. Default false. */
22
+ disableMutationObserver?: boolean;
23
+ /** Class added at init. Default `'aos-init'`. */
24
+ initClassName?: string;
25
+ /** Class added while animated in. Default `'aos-animate'`. */
26
+ animatedClassName?: string;
27
+ /** Also add the `data-aos` value as classes (for animate.css-style sets). Default false. */
28
+ useClassNames?: boolean;
29
+ /** Accepted for compatibility; scroll handling is batched per frame instead. */
30
+ throttleDelay?: number;
31
+ /** Accepted for compatibility; resize handling is debounced internally. */
32
+ debounceDelay?: number;
33
+ }
34
+ /** Start animating every `[data-aos]` element. Same options as AOS. */
35
+ declare function init(options?: AOSOptions): HTMLElement[];
36
+ /** Recalculate every trigger position (after a layout change). */
37
+ declare function refresh(): void;
38
+ /** Find `[data-aos]` elements again (after adding or removing some), then refresh. */
39
+ declare function refreshHard(): void;
40
+ /**
41
+ * Stop listening and remove the injected stylesheet. Not in AOS — added for
42
+ * single-page apps that unmount the page AOS was started on. Elements keep
43
+ * whatever classes they have.
44
+ */
45
+ declare function destroy(): void;
46
+ declare const AOS: {
47
+ init: typeof init;
48
+ refresh: typeof refresh;
49
+ refreshHard: typeof refreshHard;
50
+ destroy: typeof destroy;
51
+ };
52
+
53
+ export { type AOSAnchorPlacement, type AOSOptions, AOS as default, destroy, init, refresh, refreshHard };
@@ -0,0 +1,53 @@
1
+ type AOSAnchorPlacement = 'top-bottom' | 'top-center' | 'top-top' | 'center-bottom' | 'center-center' | 'center-top' | 'bottom-bottom' | 'bottom-center' | 'bottom-top';
2
+ interface AOSOptions {
3
+ /** Px from the trigger point before the animation starts. Default 120. */
4
+ offset?: number;
5
+ /** Ms to wait before animating in. Default 0. */
6
+ delay?: number;
7
+ /** Animation length in ms. Default 400. */
8
+ duration?: number;
9
+ /** An AOS easing name (`'ease-out-back'`…) or any CSS timing function. Default `'ease'`. */
10
+ easing?: string;
11
+ /** Animate only the first time the element scrolls in. Default false. */
12
+ once?: boolean;
13
+ /** Animate out again when the element scrolls past the top. Default false. */
14
+ mirror?: boolean;
15
+ /** Which edge of the element meets which edge of the window. Default `'top-bottom'`. */
16
+ anchorPlacement?: AOSAnchorPlacement;
17
+ /** Skip animations entirely: a boolean, a predicate, or a viewport class. */
18
+ disable?: boolean | 'phone' | 'tablet' | 'mobile' | (() => boolean);
19
+ /** Document event that starts AOS. Default `'DOMContentLoaded'`. */
20
+ startEvent?: string;
21
+ /** Do not watch the DOM for new `[data-aos]` elements. Default false. */
22
+ disableMutationObserver?: boolean;
23
+ /** Class added at init. Default `'aos-init'`. */
24
+ initClassName?: string;
25
+ /** Class added while animated in. Default `'aos-animate'`. */
26
+ animatedClassName?: string;
27
+ /** Also add the `data-aos` value as classes (for animate.css-style sets). Default false. */
28
+ useClassNames?: boolean;
29
+ /** Accepted for compatibility; scroll handling is batched per frame instead. */
30
+ throttleDelay?: number;
31
+ /** Accepted for compatibility; resize handling is debounced internally. */
32
+ debounceDelay?: number;
33
+ }
34
+ /** Start animating every `[data-aos]` element. Same options as AOS. */
35
+ declare function init(options?: AOSOptions): HTMLElement[];
36
+ /** Recalculate every trigger position (after a layout change). */
37
+ declare function refresh(): void;
38
+ /** Find `[data-aos]` elements again (after adding or removing some), then refresh. */
39
+ declare function refreshHard(): void;
40
+ /**
41
+ * Stop listening and remove the injected stylesheet. Not in AOS — added for
42
+ * single-page apps that unmount the page AOS was started on. Elements keep
43
+ * whatever classes they have.
44
+ */
45
+ declare function destroy(): void;
46
+ declare const AOS: {
47
+ init: typeof init;
48
+ refresh: typeof refresh;
49
+ refreshHard: typeof refreshHard;
50
+ destroy: typeof destroy;
51
+ };
52
+
53
+ export { type AOSAnchorPlacement, type AOSOptions, AOS as default, destroy, init, refresh, refreshHard };
@@ -0,0 +1,2 @@
1
+ function $(){return typeof window>"u"||typeof window.matchMedia!="function"?false:window.matchMedia("(prefers-reduced-motion: reduce)").matches}var V=typeof __SVG_SCROLL_DRAW_DEV__<"u"?__SVG_SCROLL_DRAW_DEV__:typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV!=="production";function M(e,...t){V&&console.warn(`[svg-scroll-draw] ${e}`,...t);}var O={offset:120,delay:0,duration:400,easing:"ease",once:false,mirror:false,anchorPlacement:"top-bottom",disable:false,startEvent:"DOMContentLoaded",disableMutationObserver:false,initClassName:"aos-init",animatedClassName:"aos-animate",useClassNames:false,throttleDelay:99,debounceDelay:50},Y={"ease-in-back":"cubic-bezier(.6,-.28,.735,.045)","ease-out-back":"cubic-bezier(.175,.885,.32,1.275)","ease-in-out-back":"cubic-bezier(.68,-.55,.265,1.55)","ease-in-sine":"cubic-bezier(.47,0,.745,.715)","ease-out-sine":"cubic-bezier(.39,.575,.565,1)","ease-in-out-sine":"cubic-bezier(.445,.05,.55,.95)","ease-in-quad":"cubic-bezier(.55,.085,.68,.53)","ease-out-quad":"cubic-bezier(.25,.46,.45,.94)","ease-in-out-quad":"cubic-bezier(.455,.03,.515,.955)","ease-in-cubic":"cubic-bezier(.55,.055,.675,.19)","ease-out-cubic":"cubic-bezier(.215,.61,.355,1)","ease-in-out-cubic":"cubic-bezier(.645,.045,.355,1)","ease-in-quart":"cubic-bezier(.895,.03,.685,.22)","ease-out-quart":"cubic-bezier(.165,.84,.44,1)","ease-in-out-quart":"cubic-bezier(.77,0,.175,1)"},g="svg-scroll-draw-aos",i=(e,t)=>`translate3d(${e},${t},0)`,B=[["fade-up",i("0","100px")],["fade-down",i("0","-100px")],["fade-right",i("-100px","0")],["fade-left",i("100px","0")],["fade-up-right",i("-100px","100px")],["fade-up-left",i("100px","100px")],["fade-down-right",i("-100px","-100px")],["fade-down-left",i("100px","-100px")],["zoom-in","scale(.6)"],["zoom-out","scale(1.2)"],["zoom-in-up",`${i("0","100px")} scale(.6)`],["zoom-in-down",`${i("0","-100px")} scale(.6)`],["zoom-in-right",`${i("-100px","0")} scale(.6)`],["zoom-in-left",`${i("100px","0")} scale(.6)`],["zoom-out-up",`${i("0","100px")} scale(1.2)`],["zoom-out-down",`${i("0","-100px")} scale(1.2)`],["zoom-out-right",`${i("-100px","0")} scale(1.2)`],["zoom-out-left",`${i("100px","0")} scale(1.2)`],["slide-up",i("0","100%")],["slide-down",i("0","-100%")],["slide-right",i("-100%","0")],["slide-left",i("100%","0")],["flip-left","perspective(2500px) rotateY(-100deg)"],["flip-right","perspective(2500px) rotateY(100deg)"],["flip-up","perspective(2500px) rotateX(-100deg)"],["flip-down","perspective(2500px) rotateX(100deg)"]];function G(e){let t=`.${e}`,n=o=>`[data-aos^=${o}][data-aos^=${o}]`;return ["[data-aos][data-aos]{transition-duration:var(--aos-duration,400ms);transition-timing-function:var(--aos-easing,ease);transition-delay:0s}",`[data-aos][data-aos]${t}{transition-delay:var(--aos-delay,0ms)}`,`${n("fade")}{opacity:0;transition-property:opacity,transform}`,`${n("fade")}${t}{opacity:1;transform:translateZ(0)}`,`${n("zoom")}{opacity:0;transition-property:opacity,transform}`,`${n("zoom")}${t}{opacity:1;transform:translateZ(0) scale(1)}`,`${n("slide")}{transition-property:transform}`,`${n("slide")}${t}{transform:translateZ(0)}`,`${n("flip")}{backface-visibility:hidden;transition-property:transform}`,...B.map(([o,u])=>`[data-aos=${o}]{transform:${u}}`),...["left","right"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateY(0)}`),...["up","down"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateX(0)}`),"[data-aos-instant][data-aos-instant]{transition:none!important}"].join(`
2
+ `)}var a={...O},d=[],m=false,f=0,h,p=null,s=null,w=false,T=()=>typeof window<"u"&&typeof document<"u";function _(e){if(!(e instanceof HTMLElement))return e.getBoundingClientRect().top+window.scrollY;let t=0,n=e;for(;n;)t+=n.offsetTop-(n.tagName!=="BODY"?n.scrollTop:0),n=n.offsetParent;return t}var C=e=>e instanceof HTMLElement?e.offsetHeight:e.getBoundingClientRect().height;function c(e,t){return e.getAttribute(`data-aos-${t}`)}function A(e,t,n){let o=c(e,t);return o==="true"?true:o==="false"?false:n}function N(e,t){let n=c(e,"offset");return n&&!isNaN(Number(n))?parseInt(n,10):n||t?0:a.offset}function W(e){let t=window.innerHeight,n=c(e,"anchor-placement"),o=N(e,n),u=c(e,"anchor"),L=u?document.querySelector(u):null;u&&!L&&M(`aos: data-aos-anchor="${u}" matches nothing; using the element itself`);let x=L||e,l=C(x),r=_(x)-t;switch(n||a.anchorPlacement){case "center-bottom":r+=l/2;break;case "bottom-bottom":r+=l;break;case "top-center":r+=t/2;break;case "center-center":r+=t/2+l/2;break;case "bottom-center":r+=t/2+l;break;case "top-top":r+=t;break;case "bottom-top":r+=t+l;break;case "center-top":r+=t+l/2;break;}return r+o}function X(e){return _(e)+C(e)-N(e,null)}function Z(e){let t=c(e,"duration")??String(a.duration),n=c(e,"delay")??String(a.delay),o=c(e,"easing")??a.easing;e.style.setProperty("--aos-duration",`${parseFloat(t)||0}ms`),e.style.setProperty("--aos-delay",`${parseFloat(n)||0}ms`),e.style.setProperty("--aos-easing",Y[o]??o);}function D(){d=Array.from(document.querySelectorAll("[data-aos]")).map(e=>{let t=d.find(n=>n.node===e);return {node:e,in:0,out:0,once:A(e,"once",a.once),mirror:A(e,"mirror",a.mirror),animated:t?t.animated:e.classList.contains(a.animatedClassName),classes:a.useClassNames?(e.getAttribute("data-aos")||"").split(" ").filter(Boolean):[],id:c(e,"id")}});for(let e of d)Z(e.node),e.node.classList.add(a.initClassName);}function R(){for(let e of d)e.in=W(e.node),e.out=X(e.node);}function H(e,t){document.dispatchEvent(new CustomEvent(`aos:${e}`,{detail:t.node})),t.id&&document.dispatchEvent(new CustomEvent(`aos:${e}:${t.id}`,{detail:t.node}));}function z(e){e.animated||(e.animated=true,e.node.classList.add(a.animatedClassName,...e.classes),H("in",e));}function S(e){e.animated&&(e.animated=false,e.node.classList.remove(a.animatedClassName,...e.classes),H("out",e));}function E(){f=0;let e=window.scrollY;for(let t of d){if(w){z(t);continue}t.mirror&&!t.once&&e>t.out?S(t):e>t.in?z(t):t.once||S(t);}}var k=()=>{f||(f=requestAnimationFrame(E));};function b(){clearTimeout(h),h=setTimeout(v,50);}var q=()=>v();function I(){let e=a.disable;if(typeof e=="function")return e();if(e===true)return true;let t=window.innerWidth;return e==="phone"?t<768:e==="tablet"?t>=768&&t<1024:e==="mobile"?t<1024:false}function P(){document.querySelectorAll("[data-aos]").forEach(e=>{for(let t of ["data-aos","data-aos-easing","data-aos-duration","data-aos-delay"])e.removeAttribute(t);});}function j(){if(document.getElementById(g))return;let e=document.createElement("style");e.id=g,e.textContent=G(a.animatedClassName),document.head.appendChild(e);}function y(){if(!m){if(m=true,s=null,D(),w)for(let e of d)e.node.setAttribute("data-aos-instant","");R(),E(),window.addEventListener("scroll",k,{passive:true}),window.addEventListener("resize",b),window.addEventListener("orientationchange",b),window.addEventListener("load",q),!a.disableMutationObserver&&typeof MutationObserver<"u"&&(p=new MutationObserver(e=>{e.some(n=>[...Array.from(n.addedNodes),...Array.from(n.removedNodes)].some(o=>o instanceof Element&&(o.hasAttribute("data-aos")||o.querySelector("[data-aos]"))))&&Q();}),p.observe(document.documentElement,{childList:true,subtree:true}));}}function U(e={}){if(!T())return [];if((m||s)&&F(),a={...O,...e},I())return P(),[];w=$(),j();let t=document.readyState!=="loading";if(a.startEvent==="DOMContentLoaded"&&t)y();else if(a.startEvent==="load"&&document.readyState==="complete")y();else {let n=a.startEvent==="load"?window:document,o=()=>y();n.addEventListener(a.startEvent,o,{once:true}),s={target:n,type:a.startEvent,fn:o};}return Array.from(document.querySelectorAll("[data-aos]"))}function v(){m&&(R(),E());}function Q(){if(m){if(I()){P();return}D(),v();}}function F(){if(T()){s&&s.target.removeEventListener(s.type,s.fn),s=null,cancelAnimationFrame(f),f=0,clearTimeout(h),window.removeEventListener("scroll",k),window.removeEventListener("resize",b),window.removeEventListener("orientationchange",b),window.removeEventListener("load",q),p?.disconnect(),p=null;for(let e of d)e.node.removeAttribute("data-aos-instant");d=[],m=false,document.getElementById(g)?.remove();}}var J={init:U,refresh:v,refreshHard:Q,destroy:F},oe=J;export{oe as default,F as destroy,U as init,v as refresh,Q as refreshHard};
@@ -0,0 +1,2 @@
1
+ "use strict";var AOS=(()=>{var y=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var W=Object.prototype.hasOwnProperty;var X=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},Z=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G(t))!W.call(e,r)&&r!==n&&y(e,r,{get:()=>t[r],enumerable:!(o=B(t,r))||o.enumerable});return e};var j=e=>Z(y({},"__esModule",{value:!0}),e);var re={};X(re,{default:()=>ie,destroy:()=>$,init:()=>Y,refresh:()=>p,refreshHard:()=>x});function S(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function z(e,...t){}var C={offset:120,delay:0,duration:400,easing:"ease",once:!1,mirror:!1,anchorPlacement:"top-bottom",disable:!1,startEvent:"DOMContentLoaded",disableMutationObserver:!1,initClassName:"aos-init",animatedClassName:"aos-animate",useClassNames:!1,throttleDelay:99,debounceDelay:50},U={"ease-in-back":"cubic-bezier(.6,-.28,.735,.045)","ease-out-back":"cubic-bezier(.175,.885,.32,1.275)","ease-in-out-back":"cubic-bezier(.68,-.55,.265,1.55)","ease-in-sine":"cubic-bezier(.47,0,.745,.715)","ease-out-sine":"cubic-bezier(.39,.575,.565,1)","ease-in-out-sine":"cubic-bezier(.445,.05,.55,.95)","ease-in-quad":"cubic-bezier(.55,.085,.68,.53)","ease-out-quad":"cubic-bezier(.25,.46,.45,.94)","ease-in-out-quad":"cubic-bezier(.455,.03,.515,.955)","ease-in-cubic":"cubic-bezier(.55,.055,.675,.19)","ease-out-cubic":"cubic-bezier(.215,.61,.355,1)","ease-in-out-cubic":"cubic-bezier(.645,.045,.355,1)","ease-in-quart":"cubic-bezier(.895,.03,.685,.22)","ease-out-quart":"cubic-bezier(.165,.84,.44,1)","ease-in-out-quart":"cubic-bezier(.77,0,.175,1)"},h="svg-scroll-draw-aos",i=(e,t)=>`translate3d(${e},${t},0)`,J=[["fade-up",i("0","100px")],["fade-down",i("0","-100px")],["fade-right",i("-100px","0")],["fade-left",i("100px","0")],["fade-up-right",i("-100px","100px")],["fade-up-left",i("100px","100px")],["fade-down-right",i("-100px","-100px")],["fade-down-left",i("100px","-100px")],["zoom-in","scale(.6)"],["zoom-out","scale(1.2)"],["zoom-in-up",`${i("0","100px")} scale(.6)`],["zoom-in-down",`${i("0","-100px")} scale(.6)`],["zoom-in-right",`${i("-100px","0")} scale(.6)`],["zoom-in-left",`${i("100px","0")} scale(.6)`],["zoom-out-up",`${i("0","100px")} scale(1.2)`],["zoom-out-down",`${i("0","-100px")} scale(1.2)`],["zoom-out-right",`${i("-100px","0")} scale(1.2)`],["zoom-out-left",`${i("100px","0")} scale(1.2)`],["slide-up",i("0","100%")],["slide-down",i("0","-100%")],["slide-right",i("-100%","0")],["slide-left",i("100%","0")],["flip-left","perspective(2500px) rotateY(-100deg)"],["flip-right","perspective(2500px) rotateY(100deg)"],["flip-up","perspective(2500px) rotateX(-100deg)"],["flip-down","perspective(2500px) rotateX(100deg)"]];function K(e){let t=`.${e}`,n=o=>`[data-aos^=${o}][data-aos^=${o}]`;return["[data-aos][data-aos]{transition-duration:var(--aos-duration,400ms);transition-timing-function:var(--aos-easing,ease);transition-delay:0s}",`[data-aos][data-aos]${t}{transition-delay:var(--aos-delay,0ms)}`,`${n("fade")}{opacity:0;transition-property:opacity,transform}`,`${n("fade")}${t}{opacity:1;transform:translateZ(0)}`,`${n("zoom")}{opacity:0;transition-property:opacity,transform}`,`${n("zoom")}${t}{opacity:1;transform:translateZ(0) scale(1)}`,`${n("slide")}{transition-property:transform}`,`${n("slide")}${t}{transform:translateZ(0)}`,`${n("flip")}{backface-visibility:hidden;transition-property:transform}`,...J.map(([o,r])=>`[data-aos=${o}]{transform:${r}}`),...["left","right"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateY(0)}`),...["up","down"].map(o=>`[data-aos=flip-${o}]${t}{transform:perspective(2500px) rotateX(0)}`),"[data-aos-instant][data-aos-instant]{transition:none!important}"].join(`
2
+ `)}var a={...C},c=[],m=!1,f=0,E,b=null,d=null,w=!1,D=()=>typeof window<"u"&&typeof document<"u";function N(e){if(!(e instanceof HTMLElement))return e.getBoundingClientRect().top+window.scrollY;let t=0,n=e;for(;n;)t+=n.offsetTop-(n.tagName!=="BODY"?n.scrollTop:0),n=n.offsetParent;return t}var R=e=>e instanceof HTMLElement?e.offsetHeight:e.getBoundingClientRect().height;function u(e,t){return e.getAttribute(`data-aos-${t}`)}function O(e,t,n){let o=u(e,t);return o==="true"?!0:o==="false"?!1:n}function H(e,t){let n=u(e,"offset");return n&&!isNaN(Number(n))?parseInt(n,10):n||t?0:a.offset}function ee(e){let t=window.innerHeight,n=u(e,"anchor-placement"),o=H(e,n),r=u(e,"anchor"),M=r?document.querySelector(r):null;r&&!M&&z(`aos: data-aos-anchor="${r}" matches nothing; using the element itself`);let A=M||e,l=R(A),s=N(A)-t;switch(n||a.anchorPlacement){case"center-bottom":s+=l/2;break;case"bottom-bottom":s+=l;break;case"top-center":s+=t/2;break;case"center-center":s+=t/2+l/2;break;case"bottom-center":s+=t/2+l;break;case"top-top":s+=t;break;case"bottom-top":s+=t+l;break;case"center-top":s+=t+l/2;break;default:break}return s+o}function te(e){return N(e)+R(e)-H(e,null)}function ne(e){let t=u(e,"duration")??String(a.duration),n=u(e,"delay")??String(a.delay),o=u(e,"easing")??a.easing;e.style.setProperty("--aos-duration",`${parseFloat(t)||0}ms`),e.style.setProperty("--aos-delay",`${parseFloat(n)||0}ms`),e.style.setProperty("--aos-easing",U[o]??o)}function k(){c=Array.from(document.querySelectorAll("[data-aos]")).map(e=>{let t=c.find(n=>n.node===e);return{node:e,in:0,out:0,once:O(e,"once",a.once),mirror:O(e,"mirror",a.mirror),animated:t?t.animated:e.classList.contains(a.animatedClassName),classes:a.useClassNames?(e.getAttribute("data-aos")||"").split(" ").filter(Boolean):[],id:u(e,"id")}});for(let e of c)ne(e.node),e.node.classList.add(a.initClassName)}function q(){for(let e of c)e.in=ee(e.node),e.out=te(e.node)}function I(e,t){document.dispatchEvent(new CustomEvent(`aos:${e}`,{detail:t.node})),t.id&&document.dispatchEvent(new CustomEvent(`aos:${e}:${t.id}`,{detail:t.node}))}function T(e){e.animated||(e.animated=!0,e.node.classList.add(a.animatedClassName,...e.classes),I("in",e))}function _(e){e.animated&&(e.animated=!1,e.node.classList.remove(a.animatedClassName,...e.classes),I("out",e))}function L(){f=0;let e=window.scrollY;for(let t of c){if(w){T(t);continue}t.mirror&&!t.once&&e>t.out?_(t):e>t.in?T(t):t.once||_(t)}}var P=()=>{f||(f=requestAnimationFrame(L))};function v(){clearTimeout(E),E=setTimeout(p,50)}var Q=()=>p();function V(){let e=a.disable;if(typeof e=="function")return e();if(e===!0)return!0;let t=window.innerWidth;return e==="phone"?t<768:e==="tablet"?t>=768&&t<1024:e==="mobile"?t<1024:!1}function F(){document.querySelectorAll("[data-aos]").forEach(e=>{for(let t of["data-aos","data-aos-easing","data-aos-duration","data-aos-delay"])e.removeAttribute(t)})}function oe(){if(document.getElementById(h))return;let e=document.createElement("style");e.id=h,e.textContent=K(a.animatedClassName),document.head.appendChild(e)}function g(){if(!m){if(m=!0,d=null,k(),w)for(let e of c)e.node.setAttribute("data-aos-instant","");q(),L(),window.addEventListener("scroll",P,{passive:!0}),window.addEventListener("resize",v),window.addEventListener("orientationchange",v),window.addEventListener("load",Q),!a.disableMutationObserver&&typeof MutationObserver<"u"&&(b=new MutationObserver(e=>{e.some(n=>[...Array.from(n.addedNodes),...Array.from(n.removedNodes)].some(o=>o instanceof Element&&(o.hasAttribute("data-aos")||o.querySelector("[data-aos]"))))&&x()}),b.observe(document.documentElement,{childList:!0,subtree:!0}))}}function Y(e={}){if(!D())return[];if((m||d)&&$(),a={...C,...e},V())return F(),[];w=S(),oe();let t=document.readyState!=="loading";if(a.startEvent==="DOMContentLoaded"&&t)g();else if(a.startEvent==="load"&&document.readyState==="complete")g();else{let n=a.startEvent==="load"?window:document,o=()=>g();n.addEventListener(a.startEvent,o,{once:!0}),d={target:n,type:a.startEvent,fn:o}}return Array.from(document.querySelectorAll("[data-aos]"))}function p(){m&&(q(),L())}function x(){if(m){if(V()){F();return}k(),p()}}function $(){if(D()){d&&d.target.removeEventListener(d.type,d.fn),d=null,cancelAnimationFrame(f),f=0,clearTimeout(E),window.removeEventListener("scroll",P),window.removeEventListener("resize",v),window.removeEventListener("orientationchange",v),window.removeEventListener("load",Q),b?.disconnect(),b=null;for(let e of c)e.node.removeAttribute("data-aos-instant");c=[],m=!1,document.getElementById(h)?.remove()}}var ae={init:Y,refresh:p,refreshHard:x,destroy:$},ie=ae;return j(re);})();
@@ -0,0 +1,2 @@
1
+ "use strict";(()=>{function Y(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}var J="4.0.9",D=()=>typeof window<"u"&&typeof document<"u",C=e=>e!==null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]";function q(e,...n){for(let t of n)if(C(t))for(let o of Object.keys(t)){let i=t[o];C(i)?(C(e[o])||(e[o]={}),q(e[o],i)):e[o]=i}return e}function j(e){if(typeof e=="string")try{return Array.from(document.querySelectorAll(e))}catch{return[]}return e instanceof Element?[e]:e&&typeof e.length=="number"?Array.from(e).filter(n=>n instanceof Element):[]}var $=(e=navigator.userAgent)=>/Android|iPhone|iPad|iPod/i.test(e),F=!1;function P(e,...n){F&&typeof console<"u"&&console.log(`%cScrollReveal: ${e}${n.map(t=>`
2
+ \u2014 ${t}`).join("")}`,"color: #ea654b;")}var x=()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function ie(e,n){let t=[];for(let o=0;o<4;o++)for(let i=0;i<4;i++){let r=0;for(let s=0;s<4;s++)r+=e[i+4*s]*n[4*o+s];t[i+4*o]=r}return t}function re(e){let n=/matrix(3d)?\(([^)]+)\)/.exec(e||"");if(!n)return x();let t=n[2].split(", ").map(parseFloat);if(t.length===16)return t;let o=x();return[o[0],o[1],o[4],o[5],o[12],o[13]]=t,o}function z(e,n){let t=Math.PI/180*n,o=Math.cos(t),i=Math.sin(t),r=x(),[s,a,c,h]=e==="x"?[5,10,6,9]:e==="y"?[0,10,8,2]:[0,5,1,4];return r[s]=r[a]=o,r[c]=i,r[h]=-i,r}function se(e,n){let t=x();return t[e==="X"?12:13]=n,t}function ae(e){let n=x();return n[0]=n[5]=e,n}function p(e,n){for(let t of n.split(";")){let o=t.indexOf(":");if(o<1)continue;let i=t.slice(0,o).trim(),r=t.slice(o+1).trim();i&&r&&e.style.setProperty(i,r)}}function le(e){let{node:n,config:t}=e,o=window.getComputedStyle(n),i=(n.getAttribute("style")||"").match(/[\w-]+\s*:\s*[^;]+\s*/gi)||[],r=i.map(d=>d.trim()),s=`${r.join("; ")};`,a=i.some(d=>/visibility\s?:\s?visible/i.test(d))?s:`${[...r,"visibility: visible"].join("; ")};`,c=parseFloat(o.opacity),h=t.opacity!==null&&!isNaN(parseFloat(String(t.opacity)))?parseFloat(String(t.opacity)):c,b=c!==h?{computed:`opacity: ${c};`,generated:`opacity: ${h};`}:{computed:"",generated:""},u=[];if(parseFloat(t.distance)){let d=t.origin==="top"||t.origin==="bottom"?"Y":"X",f=t.distance;(t.origin==="top"||t.origin==="left")&&(f=f.startsWith("-")?f.slice(1):`-${f}`);let E=f.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g)||[],m=Number(E[0]),A=E[1],L;if(A==="em")L=parseInt(o.fontSize,10)*m;else if(A==="px")L=m;else if(A==="%"){let X=n.getBoundingClientRect();L=(d==="Y"?X.height:X.width)*m/100}else throw new RangeError("Unrecognized or missing distance unit.");u.push(se(d,L))}t.rotate.x&&u.push(z("x",t.rotate.x)),t.rotate.y&&u.push(z("y",t.rotate.y)),t.rotate.z&&u.push(z("z",t.rotate.z)),t.scale!==1&&u.push(ae(t.scale===0?2e-4:t.scale));let g={initial:"",final:""};if(u.length){let d=re(o.transform);g={initial:`transform: matrix3d(${u.reduce(ie,d).join(", ")});`,final:`transform: matrix3d(${d.join(", ")});`}}let w={delayed:"",instant:""};if(b.generated||g.initial){let d=m=>`${m/1e3}s`,f=[],E=m=>({delayed:`${m} ${d(t.duration)} ${t.easing} ${d(t.delay)}`,instant:`${m} ${d(t.duration)} ${t.easing} 0s`});o.transition&&!/all 0s|none 0s/.test(o.transition)&&f.push({delayed:o.transition,instant:o.transition}),b.generated&&f.push(E("opacity")),g.initial&&f.push(E("transform")),w={delayed:`transition: ${f.map(m=>m.delayed).join(", ")};`,instant:`transition: ${f.map(m=>m.instant).join(", ")};`}}return{inline:{computed:s,generated:a},opacity:b,position:o.position,transform:g,transition:w}}var k=(...e)=>e.filter(n=>n!=="").join(" "),ce=()=>({delay:0,distance:"0",duration:600,easing:"cubic-bezier(0.5, 0, 0, 1)",interval:0,opacity:0,origin:"bottom",rotate:{x:0,y:0,z:0},scale:1,cleanup:!1,container:document.documentElement,desktop:!0,mobile:!0,reset:!1,useDelay:"always",viewFactor:0,viewOffset:{top:0,right:0,bottom:0,left:0},afterReset:()=>{},afterReveal:()=>{},beforeReset:()=>{},beforeReveal:()=>{}}),v=null,T=null,l={containers:{},elements:{},history:[],sequences:{}},G=!0,O=null,R=0,Q=!1,de=0,H=()=>de++;function V(e,n=!1){let t=e,o=n?t.clientHeight:t.offsetHeight,i=n?t.clientWidth:t.offsetWidth,r=0,s=0,a=t;for(;a;)isNaN(a.offsetTop)||(r+=a.offsetTop),isNaN(a.offsetLeft)||(s+=a.offsetLeft),a=a.offsetParent;return{bounds:{top:r,right:s+i,bottom:r+o,left:s},height:o,width:i}}var ue=e=>e.node===document.documentElement?{top:window.pageYOffset,left:window.pageXOffset}:{top:e.node.scrollTop,left:e.node.scrollLeft};function fe(e){let n=l.containers[e.containerId];if(!n||!n.geometry||!n.scroll||!e.geometry)return!1;let t=Math.max(0,Math.min(1,e.config.viewFactor)),o=e.config.viewOffset,i=e.geometry,r={top:i.bounds.top+i.height*t,right:i.bounds.right-i.width*t,bottom:i.bounds.bottom-i.height*t,left:i.bounds.left+i.width*t},s={top:n.geometry.bounds.top+n.scroll.top+o.top,right:n.geometry.bounds.right+n.scroll.left-o.right,bottom:n.geometry.bounds.bottom+n.scroll.top-o.bottom,left:n.geometry.bounds.left+n.scroll.left+o.left};return r.top<s.bottom&&r.right>s.left&&r.bottom>s.top&&r.left<s.right||e.styles.position==="fixed"}function K(e,n=!1){let t=n?e.config.duration+e.config.delay:e.config.duration,o=0;e.timer&&(o=Date.now()-e.timer.start,clearTimeout(e.timer.clock)),(e.revealed?e.config.beforeReveal:e.config.beforeReset)(e.node),e.timer={start:Date.now(),clock:setTimeout(()=>{(e.revealed?e.config.afterReveal:e.config.afterReset)(e.node),e.timer=null,e.revealed&&!e.config.reset&&e.config.cleanup&&W(e.node)},t-o)}}function me(e,n){let t=e.styles;e.revealed=e.seen=!0,p(e.node,k(t.inline.generated,t.opacity.computed,t.transform.final,n?t.transition.delayed:t.transition.instant)),K(e,n)}function be(e){let n=e.styles;e.revealed=!1,p(e.node,k(n.inline.generated,n.opacity.generated,n.transform.initial,n.transition.instant)),K(e)}function M(e,n={}){let t=n.pristine||G,o=e.config.useDelay,i=o==="always"||o==="onload"&&t||o==="once"&&!e.seen;if(n.reveal||e.visible&&!e.revealed)return me(e,i);if(n.reset||!e.visible&&e.revealed&&e.config.reset)return be(e)}function U(e,n){let t=[],o=[],i=[];return e.members.forEach((r,s)=>{l.elements[r]?.[n]&&o.push(s)}),o.length&&e.members.forEach((r,s)=>{let a=l.elements[r];a&&!a[n]&&(s<o[0]?t:i).push(s)}),{head:t,body:o,foot:i}}function I(e,n,t,o){let i=t<0?"head":"foot",r=l.elements[e.members[n+t]];e.blocked[i]=!0,setTimeout(()=>{e.blocked[i]=!1,r&&Z(r,o)},e.interval)}function Z(e,n=G){if(!e.visible&&e.revealed&&e.config.reset)return M(e,{reset:!0});let t=e.sequence&&l.sequences[e.sequence.id];if(!t||!e.sequence)return;let o=e.sequence.index,i=U(t,"visible"),r=U(t,"revealed");if(!r.body.length){let a=i.body[0],c=l.elements[t.members[a]];if(c)return I(t,a,-1,n),I(t,a,1,n),M(c,{reveal:!0,pristine:n})}let s=a=>a[a.length-1];if(!t.blocked.head&&o===s(r.head)&&o>=(i.body[0]??1/0))return I(t,o,-1,n),M(e,{reveal:!0,pristine:n});if(!t.blocked.foot&&o===r.foot[0]&&o<=(s(i.body)??-1/0))return I(t,o,1,n),M(e,{reveal:!0,pristine:n})}function ge(){R=0;let e=Q;Q=!1;for(let t of Object.values(l.containers))(e||!t.geometry)&&(t.geometry=V(t.node,!0)),t.scroll=ue(t);let n=Object.values(l.elements);for(let t of n)(e||!t.geometry)&&(t.geometry=V(t.node)),t.visible=fe(t);for(let t of n)t.sequence?Z(t):M(t);G=!1}function y(e){let n=e?e.type:"init";(n==="init"||n==="resize")&&(Q=!0),R||(R=requestAnimationFrame(ge))}var S=e=>e.node===document.documentElement?window:e.node;function _(){let e=new Set(Array.from(document.querySelectorAll("[data-sr-id]")).map(o=>parseInt(o.getAttribute("data-sr-id")||"",10)));for(let o of Object.values(l.elements))e.has(o.id)||delete l.elements[o.id];let n=new Set,t=new Set;for(let o of Object.values(l.elements))n.add(o.containerId),o.sequence&&t.add(o.sequence.id);for(let o of Object.values(l.containers))n.has(o.id)||(S(o).removeEventListener("scroll",y),S(o).removeEventListener("resize",y),delete l.containers[o.id]);for(let o of Object.values(l.sequences))t.has(o.id)||delete l.sequences[o.id]}function ee(){O=null,_();let e=Y();for(let n of Object.values(l.elements)){let t=n.styles;e?(n.visible=n.revealed=n.seen=!0,p(n.node,k(t.inline.generated,t.opacity.computed,t.transform.final,"transition: none;"))):n.visible?(n.revealed=!0,p(n.node,k(t.inline.generated,t.opacity.computed,t.transform.final))):(n.revealed=!1,p(n.node,k(t.inline.generated,t.opacity.generated,t.transform.initial)))}if(!e){for(let n of Object.values(l.containers))S(n).addEventListener("scroll",y),S(n).addEventListener("resize",y);y()}}function te(e,n={},t=!1){if(!v)return;let o=[],i=n.interval||0,r,s;try{if(i){let c=Math.abs(i);if(isNaN(c))throw new RangeError("Invalid sequence interval.");r={id:H(),interval:Math.max(c,16),members:[],blocked:{head:!1,foot:!1}}}let a=j(e);if(!a.length)throw new Error("Invalid reveal target.");s=[];for(let c of a){let h=c.getAttribute("data-sr-id"),b=h!==null?l.elements[Number(h)]:void 0,u=b?q({},b):{id:H(),node:c,seen:!1,revealed:!1,visible:!1};b&&p(c,b.styles.inline.computed);let g=q({},b?b.config:v,n);if(!g.mobile&&$()||!g.desktop&&!$()){b&&W(c);continue}let w=j(g.container)[0];if(!w)throw new Error("Invalid container.");if(!w.contains(c))continue;let d=[...o,...Object.values(l.containers)].find(f=>f.node===w)?.id;d===void 0&&(d=H(),o.push({id:d,node:w})),u.config=g,u.containerId=d,u.styles=le(u),r&&(u.sequence={id:r.id,index:r.members.length},r.members.push(u.id)),s.push(u)}for(let c of s)l.elements[c.id]=c,c.node.setAttribute("data-sr-id",String(c.id))}catch(a){return P("Reveal failed.",a.message)}for(let a of o)l.containers[a.id]=a;r&&(l.sequences[r.id]=r),t||(l.history.push({target:e,options:n}),O&&clearTimeout(O),O=setTimeout(ee,0))}function W(e){let n=!1;for(let t of j(e)){let o=t.getAttribute("data-sr-id");if(o===null)continue;n=!0;let i=l.elements[Number(o)];i&&(i.timer&&clearTimeout(i.timer.clock),p(i.node,i.styles.inline.generated),delete l.elements[i.id]),t.removeAttribute("data-sr-id")}n&&_()}function ve(){for(let e of Object.values(l.elements))p(e.node,e.styles.inline.generated),e.node.removeAttribute("data-sr-id");for(let e of Object.values(l.containers))S(e).removeEventListener("scroll",y),S(e).removeEventListener("resize",y);R&&cancelAnimationFrame(R),R=0,l={containers:{},elements:{},history:[],sequences:{}}}function pe(){for(let e of l.history)te(e.target,e.options,!0);ee()}var N=()=>(D()&&document.documentElement.classList.remove("sr"),{reveal(){},clean(){},destroy(){},sync(){},defaults:{},version:J,noop:!0});function ne(){if(!D())return!1;let e=document.documentElement.style;return("transform"in e||"WebkitTransform"in e)&&("transition"in e||"WebkitTransition"in e)}function ye(){document.documentElement.classList.add("sr"),document.body?document.body.style.height="100%":document.addEventListener("DOMContentLoaded",()=>{document.body.style.height="100%"},{once:!0})}function he(e={}){if(!D()||!ne())return N();let n;try{if(n=q({},v??ce(),e),!j(n.container)[0])throw new Error("Invalid container.")}catch(t){return P("Invalid configuration.",t.message),N()}return v=n,!v.mobile&&$()||!v.desktop&&!$()?(P("This device is disabled.",`desktop: ${v.desktop}`,`mobile: ${v.mobile}`),N()):(ye(),T||(T={reveal:(t,o)=>te(t,o),clean:W,destroy:ve,sync:pe,get defaults(){return v},version:J,noop:!1},Object.defineProperty(T,"delegate",{value:y})),T)}var B=he;B.isSupported=ne;Object.defineProperty(B,"debug",{get:()=>F,set:e=>{typeof e=="boolean"&&(F=e)}});var oe=B;globalThis.ScrollReveal=oe;})();
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});function Y(){return typeof window>"u"||typeof window.matchMedia!="function"?false:window.matchMedia("(prefers-reduced-motion: reduce)").matches}var J="4.0.9",D=()=>typeof window<"u"&&typeof document<"u",C=e=>e!==null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]";function q(e,...n){for(let t of n)if(C(t))for(let o of Object.keys(t)){let i=t[o];C(i)?(C(e[o])||(e[o]={}),q(e[o],i)):e[o]=i;}return e}function j(e){if(typeof e=="string")try{return Array.from(document.querySelectorAll(e))}catch{return []}return e instanceof Element?[e]:e&&typeof e.length=="number"?Array.from(e).filter(n=>n instanceof Element):[]}var $=(e=navigator.userAgent)=>/Android|iPhone|iPad|iPod/i.test(e),F=false;function P(e,...n){F&&typeof console<"u"&&console.log(`%cScrollReveal: ${e}${n.map(t=>`
2
+ \u2014 ${t}`).join("")}`,"color: #ea654b;");}var k=()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function oe(e,n){let t=[];for(let o=0;o<4;o++)for(let i=0;i<4;i++){let r=0;for(let s=0;s<4;s++)r+=e[i+4*s]*n[4*o+s];t[i+4*o]=r;}return t}function ie(e){let n=/matrix(3d)?\(([^)]+)\)/.exec(e||"");if(!n)return k();let t=n[2].split(", ").map(parseFloat);if(t.length===16)return t;let o=k();return [o[0],o[1],o[4],o[5],o[12],o[13]]=t,o}function z(e,n){let t=Math.PI/180*n,o=Math.cos(t),i=Math.sin(t),r=k(),[s,a,c,h]=e==="x"?[5,10,6,9]:e==="y"?[0,10,8,2]:[0,5,1,4];return r[s]=r[a]=o,r[c]=i,r[h]=-i,r}function re(e,n){let t=k();return t[e==="X"?12:13]=n,t}function se(e){let n=k();return n[0]=n[5]=e,n}function p(e,n){for(let t of n.split(";")){let o=t.indexOf(":");if(o<1)continue;let i=t.slice(0,o).trim(),r=t.slice(o+1).trim();i&&r&&e.style.setProperty(i,r);}}function ae(e){let{node:n,config:t}=e,o=window.getComputedStyle(n),i=(n.getAttribute("style")||"").match(/[\w-]+\s*:\s*[^;]+\s*/gi)||[],r=i.map(d=>d.trim()),s=`${r.join("; ")};`,a=i.some(d=>/visibility\s?:\s?visible/i.test(d))?s:`${[...r,"visibility: visible"].join("; ")};`,c=parseFloat(o.opacity),h=t.opacity!==null&&!isNaN(parseFloat(String(t.opacity)))?parseFloat(String(t.opacity)):c,b=c!==h?{computed:`opacity: ${c};`,generated:`opacity: ${h};`}:{computed:"",generated:""},u=[];if(parseFloat(t.distance)){let d=t.origin==="top"||t.origin==="bottom"?"Y":"X",f=t.distance;(t.origin==="top"||t.origin==="left")&&(f=f.startsWith("-")?f.slice(1):`-${f}`);let S=f.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g)||[],m=Number(S[0]),A=S[1],L;if(A==="em")L=parseInt(o.fontSize,10)*m;else if(A==="px")L=m;else if(A==="%"){let X=n.getBoundingClientRect();L=(d==="Y"?X.height:X.width)*m/100;}else throw new RangeError("Unrecognized or missing distance unit.");u.push(re(d,L));}t.rotate.x&&u.push(z("x",t.rotate.x)),t.rotate.y&&u.push(z("y",t.rotate.y)),t.rotate.z&&u.push(z("z",t.rotate.z)),t.scale!==1&&u.push(se(t.scale===0?2e-4:t.scale));let g={initial:"",final:""};if(u.length){let d=ie(o.transform);g={initial:`transform: matrix3d(${u.reduce(oe,d).join(", ")});`,final:`transform: matrix3d(${d.join(", ")});`};}let w={delayed:"",instant:""};if(b.generated||g.initial){let d=m=>`${m/1e3}s`,f=[],S=m=>({delayed:`${m} ${d(t.duration)} ${t.easing} ${d(t.delay)}`,instant:`${m} ${d(t.duration)} ${t.easing} 0s`});o.transition&&!/all 0s|none 0s/.test(o.transition)&&f.push({delayed:o.transition,instant:o.transition}),b.generated&&f.push(S("opacity")),g.initial&&f.push(S("transform")),w={delayed:`transition: ${f.map(m=>m.delayed).join(", ")};`,instant:`transition: ${f.map(m=>m.instant).join(", ")};`};}return {inline:{computed:s,generated:a},opacity:b,position:o.position,transform:g,transition:w}}var x=(...e)=>e.filter(n=>n!=="").join(" "),le=()=>({delay:0,distance:"0",duration:600,easing:"cubic-bezier(0.5, 0, 0, 1)",interval:0,opacity:0,origin:"bottom",rotate:{x:0,y:0,z:0},scale:1,cleanup:false,container:document.documentElement,desktop:true,mobile:true,reset:false,useDelay:"always",viewFactor:0,viewOffset:{top:0,right:0,bottom:0,left:0},afterReset:()=>{},afterReveal:()=>{},beforeReset:()=>{},beforeReveal:()=>{}}),v=null,T=null,l={containers:{},elements:{},history:[],sequences:{}},G=true,O=null,R=0,Q=false,ce=0,H=()=>ce++;function V(e,n=false){let t=e,o=n?t.clientHeight:t.offsetHeight,i=n?t.clientWidth:t.offsetWidth,r=0,s=0,a=t;for(;a;)isNaN(a.offsetTop)||(r+=a.offsetTop),isNaN(a.offsetLeft)||(s+=a.offsetLeft),a=a.offsetParent;return {bounds:{top:r,right:s+i,bottom:r+o,left:s},height:o,width:i}}var de=e=>e.node===document.documentElement?{top:window.pageYOffset,left:window.pageXOffset}:{top:e.node.scrollTop,left:e.node.scrollLeft};function ue(e){let n=l.containers[e.containerId];if(!n||!n.geometry||!n.scroll||!e.geometry)return false;let t=Math.max(0,Math.min(1,e.config.viewFactor)),o=e.config.viewOffset,i=e.geometry,r={top:i.bounds.top+i.height*t,right:i.bounds.right-i.width*t,bottom:i.bounds.bottom-i.height*t,left:i.bounds.left+i.width*t},s={top:n.geometry.bounds.top+n.scroll.top+o.top,right:n.geometry.bounds.right+n.scroll.left-o.right,bottom:n.geometry.bounds.bottom+n.scroll.top-o.bottom,left:n.geometry.bounds.left+n.scroll.left+o.left};return r.top<s.bottom&&r.right>s.left&&r.bottom>s.top&&r.left<s.right||e.styles.position==="fixed"}function K(e,n=false){let t=n?e.config.duration+e.config.delay:e.config.duration,o=0;e.timer&&(o=Date.now()-e.timer.start,clearTimeout(e.timer.clock)),(e.revealed?e.config.beforeReveal:e.config.beforeReset)(e.node),e.timer={start:Date.now(),clock:setTimeout(()=>{(e.revealed?e.config.afterReveal:e.config.afterReset)(e.node),e.timer=null,e.revealed&&!e.config.reset&&e.config.cleanup&&W(e.node);},t-o)};}function fe(e,n){let t=e.styles;e.revealed=e.seen=true,p(e.node,x(t.inline.generated,t.opacity.computed,t.transform.final,n?t.transition.delayed:t.transition.instant)),K(e,n);}function me(e){let n=e.styles;e.revealed=false,p(e.node,x(n.inline.generated,n.opacity.generated,n.transform.initial,n.transition.instant)),K(e);}function M(e,n={}){let t=n.pristine||G,o=e.config.useDelay,i=o==="always"||o==="onload"&&t||o==="once"&&!e.seen;if(n.reveal||e.visible&&!e.revealed)return fe(e,i);if(n.reset||!e.visible&&e.revealed&&e.config.reset)return me(e)}function U(e,n){let t=[],o=[],i=[];return e.members.forEach((r,s)=>{l.elements[r]?.[n]&&o.push(s);}),o.length&&e.members.forEach((r,s)=>{let a=l.elements[r];a&&!a[n]&&(s<o[0]?t:i).push(s);}),{head:t,body:o,foot:i}}function I(e,n,t,o){let i=t<0?"head":"foot",r=l.elements[e.members[n+t]];e.blocked[i]=true,setTimeout(()=>{e.blocked[i]=false,r&&Z(r,o);},e.interval);}function Z(e,n=G){if(!e.visible&&e.revealed&&e.config.reset)return M(e,{reset:true});let t=e.sequence&&l.sequences[e.sequence.id];if(!t||!e.sequence)return;let o=e.sequence.index,i=U(t,"visible"),r=U(t,"revealed");if(!r.body.length){let a=i.body[0],c=l.elements[t.members[a]];if(c)return I(t,a,-1,n),I(t,a,1,n),M(c,{reveal:true,pristine:n})}let s=a=>a[a.length-1];if(!t.blocked.head&&o===s(r.head)&&o>=(i.body[0]??1/0))return I(t,o,-1,n),M(e,{reveal:true,pristine:n});if(!t.blocked.foot&&o===r.foot[0]&&o<=(s(i.body)??-1/0))return I(t,o,1,n),M(e,{reveal:true,pristine:n})}function be(){R=0;let e=Q;Q=false;for(let t of Object.values(l.containers))(e||!t.geometry)&&(t.geometry=V(t.node,true)),t.scroll=de(t);let n=Object.values(l.elements);for(let t of n)(e||!t.geometry)&&(t.geometry=V(t.node)),t.visible=ue(t);for(let t of n)t.sequence?Z(t):M(t);G=false;}function y(e){let n=e?e.type:"init";(n==="init"||n==="resize")&&(Q=true),R||(R=requestAnimationFrame(be));}var E=e=>e.node===document.documentElement?window:e.node;function _(){let e=new Set(Array.from(document.querySelectorAll("[data-sr-id]")).map(o=>parseInt(o.getAttribute("data-sr-id")||"",10)));for(let o of Object.values(l.elements))e.has(o.id)||delete l.elements[o.id];let n=new Set,t=new Set;for(let o of Object.values(l.elements))n.add(o.containerId),o.sequence&&t.add(o.sequence.id);for(let o of Object.values(l.containers))n.has(o.id)||(E(o).removeEventListener("scroll",y),E(o).removeEventListener("resize",y),delete l.containers[o.id]);for(let o of Object.values(l.sequences))t.has(o.id)||delete l.sequences[o.id];}function ee(){O=null,_();let e=Y();for(let n of Object.values(l.elements)){let t=n.styles;e?(n.visible=n.revealed=n.seen=true,p(n.node,x(t.inline.generated,t.opacity.computed,t.transform.final,"transition: none;"))):n.visible?(n.revealed=true,p(n.node,x(t.inline.generated,t.opacity.computed,t.transform.final))):(n.revealed=false,p(n.node,x(t.inline.generated,t.opacity.generated,t.transform.initial)));}if(!e){for(let n of Object.values(l.containers))E(n).addEventListener("scroll",y),E(n).addEventListener("resize",y);y();}}function te(e,n={},t=false){if(!v)return;let o=[],i=n.interval||0,r,s;try{if(i){let c=Math.abs(i);if(isNaN(c))throw new RangeError("Invalid sequence interval.");r={id:H(),interval:Math.max(c,16),members:[],blocked:{head:!1,foot:!1}};}let a=j(e);if(!a.length)throw new Error("Invalid reveal target.");s=[];for(let c of a){let h=c.getAttribute("data-sr-id"),b=h!==null?l.elements[Number(h)]:void 0,u=b?q({},b):{id:H(),node:c,seen:!1,revealed:!1,visible:!1};b&&p(c,b.styles.inline.computed);let g=q({},b?b.config:v,n);if(!g.mobile&&$()||!g.desktop&&!$()){b&&W(c);continue}let w=j(g.container)[0];if(!w)throw new Error("Invalid container.");if(!w.contains(c))continue;let d=[...o,...Object.values(l.containers)].find(f=>f.node===w)?.id;d===void 0&&(d=H(),o.push({id:d,node:w})),u.config=g,u.containerId=d,u.styles=ae(u),r&&(u.sequence={id:r.id,index:r.members.length},r.members.push(u.id)),s.push(u);}for(let c of s)l.elements[c.id]=c,c.node.setAttribute("data-sr-id",String(c.id));}catch(a){return P("Reveal failed.",a.message)}for(let a of o)l.containers[a.id]=a;r&&(l.sequences[r.id]=r),t||(l.history.push({target:e,options:n}),O&&clearTimeout(O),O=setTimeout(ee,0));}function W(e){let n=false;for(let t of j(e)){let o=t.getAttribute("data-sr-id");if(o===null)continue;n=true;let i=l.elements[Number(o)];i&&(i.timer&&clearTimeout(i.timer.clock),p(i.node,i.styles.inline.generated),delete l.elements[i.id]),t.removeAttribute("data-sr-id");}n&&_();}function ge(){for(let e of Object.values(l.elements))p(e.node,e.styles.inline.generated),e.node.removeAttribute("data-sr-id");for(let e of Object.values(l.containers))E(e).removeEventListener("scroll",y),E(e).removeEventListener("resize",y);R&&cancelAnimationFrame(R),R=0,l={containers:{},elements:{},history:[],sequences:{}};}function ve(){for(let e of l.history)te(e.target,e.options,true);ee();}var N=()=>(D()&&document.documentElement.classList.remove("sr"),{reveal(){},clean(){},destroy(){},sync(){},defaults:{},version:J,noop:true});function ne(){if(!D())return false;let e=document.documentElement.style;return ("transform"in e||"WebkitTransform"in e)&&("transition"in e||"WebkitTransition"in e)}function pe(){document.documentElement.classList.add("sr"),document.body?document.body.style.height="100%":document.addEventListener("DOMContentLoaded",()=>{document.body.style.height="100%";},{once:true});}function ye(e={}){if(!D()||!ne())return N();let n;try{if(n=q({},v??le(),e),!j(n.container)[0])throw new Error("Invalid container.")}catch(t){return P("Invalid configuration.",t.message),N()}return v=n,!v.mobile&&$()||!v.desktop&&!$()?(P("This device is disabled.",`desktop: ${v.desktop}`,`mobile: ${v.mobile}`),N()):(pe(),T||(T={reveal:(t,o)=>te(t,o),clean:W,destroy:ge,sync:ve,get defaults(){return v},version:J,noop:false},Object.defineProperty(T,"delegate",{value:y})),T)}var B=ye;B.isSupported=ne;Object.defineProperty(B,"debug",{get:()=>F,set:e=>{typeof e=="boolean"&&(F=e);}});var Re=B;exports.ScrollReveal=B;exports.default=Re;
@@ -0,0 +1,54 @@
1
+ type ScrollRevealTarget = string | Element | ArrayLike<Element>;
2
+ interface ScrollRevealOptions {
3
+ delay?: number;
4
+ /** A length with a unit: `'20px'`, `'2em'`, `'50%'`. */
5
+ distance?: string;
6
+ duration?: number;
7
+ easing?: string;
8
+ /** Ms between members of a sequence. Only read from `reveal()` options. */
9
+ interval?: number;
10
+ /** Starting opacity; `null` leaves opacity alone. */
11
+ opacity?: number | null;
12
+ origin?: 'top' | 'right' | 'bottom' | 'left';
13
+ rotate?: {
14
+ x?: number;
15
+ y?: number;
16
+ z?: number;
17
+ };
18
+ scale?: number;
19
+ cleanup?: boolean;
20
+ container?: string | Element;
21
+ desktop?: boolean;
22
+ mobile?: boolean;
23
+ reset?: boolean;
24
+ useDelay?: 'always' | 'once' | 'onload';
25
+ viewFactor?: number;
26
+ viewOffset?: {
27
+ top?: number;
28
+ right?: number;
29
+ bottom?: number;
30
+ left?: number;
31
+ };
32
+ afterReset?: (el: Element) => void;
33
+ afterReveal?: (el: Element) => void;
34
+ beforeReset?: (el: Element) => void;
35
+ beforeReveal?: (el: Element) => void;
36
+ }
37
+ interface ScrollRevealInstance {
38
+ reveal(target: ScrollRevealTarget, options?: ScrollRevealOptions): void;
39
+ clean(target: ScrollRevealTarget): void;
40
+ destroy(): void;
41
+ sync(): void;
42
+ readonly defaults: Required<ScrollRevealOptions>;
43
+ readonly version: string;
44
+ readonly noop: boolean;
45
+ }
46
+ interface ScrollRevealStatic {
47
+ (options?: ScrollRevealOptions): ScrollRevealInstance;
48
+ new (options?: ScrollRevealOptions): ScrollRevealInstance;
49
+ isSupported(): boolean;
50
+ debug: boolean;
51
+ }
52
+ declare const ScrollReveal: ScrollRevealStatic;
53
+
54
+ export { ScrollReveal, type ScrollRevealInstance, type ScrollRevealOptions, type ScrollRevealStatic, type ScrollRevealTarget, ScrollReveal as default };
@@ -0,0 +1,54 @@
1
+ type ScrollRevealTarget = string | Element | ArrayLike<Element>;
2
+ interface ScrollRevealOptions {
3
+ delay?: number;
4
+ /** A length with a unit: `'20px'`, `'2em'`, `'50%'`. */
5
+ distance?: string;
6
+ duration?: number;
7
+ easing?: string;
8
+ /** Ms between members of a sequence. Only read from `reveal()` options. */
9
+ interval?: number;
10
+ /** Starting opacity; `null` leaves opacity alone. */
11
+ opacity?: number | null;
12
+ origin?: 'top' | 'right' | 'bottom' | 'left';
13
+ rotate?: {
14
+ x?: number;
15
+ y?: number;
16
+ z?: number;
17
+ };
18
+ scale?: number;
19
+ cleanup?: boolean;
20
+ container?: string | Element;
21
+ desktop?: boolean;
22
+ mobile?: boolean;
23
+ reset?: boolean;
24
+ useDelay?: 'always' | 'once' | 'onload';
25
+ viewFactor?: number;
26
+ viewOffset?: {
27
+ top?: number;
28
+ right?: number;
29
+ bottom?: number;
30
+ left?: number;
31
+ };
32
+ afterReset?: (el: Element) => void;
33
+ afterReveal?: (el: Element) => void;
34
+ beforeReset?: (el: Element) => void;
35
+ beforeReveal?: (el: Element) => void;
36
+ }
37
+ interface ScrollRevealInstance {
38
+ reveal(target: ScrollRevealTarget, options?: ScrollRevealOptions): void;
39
+ clean(target: ScrollRevealTarget): void;
40
+ destroy(): void;
41
+ sync(): void;
42
+ readonly defaults: Required<ScrollRevealOptions>;
43
+ readonly version: string;
44
+ readonly noop: boolean;
45
+ }
46
+ interface ScrollRevealStatic {
47
+ (options?: ScrollRevealOptions): ScrollRevealInstance;
48
+ new (options?: ScrollRevealOptions): ScrollRevealInstance;
49
+ isSupported(): boolean;
50
+ debug: boolean;
51
+ }
52
+ declare const ScrollReveal: ScrollRevealStatic;
53
+
54
+ export { ScrollReveal, type ScrollRevealInstance, type ScrollRevealOptions, type ScrollRevealStatic, type ScrollRevealTarget, ScrollReveal as default };
@@ -0,0 +1,2 @@
1
+ function Y(){return typeof window>"u"||typeof window.matchMedia!="function"?false:window.matchMedia("(prefers-reduced-motion: reduce)").matches}var J="4.0.9",D=()=>typeof window<"u"&&typeof document<"u",C=e=>e!==null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]";function q(e,...n){for(let t of n)if(C(t))for(let o of Object.keys(t)){let i=t[o];C(i)?(C(e[o])||(e[o]={}),q(e[o],i)):e[o]=i;}return e}function j(e){if(typeof e=="string")try{return Array.from(document.querySelectorAll(e))}catch{return []}return e instanceof Element?[e]:e&&typeof e.length=="number"?Array.from(e).filter(n=>n instanceof Element):[]}var $=(e=navigator.userAgent)=>/Android|iPhone|iPad|iPod/i.test(e),F=false;function P(e,...n){F&&typeof console<"u"&&console.log(`%cScrollReveal: ${e}${n.map(t=>`
2
+ \u2014 ${t}`).join("")}`,"color: #ea654b;");}var k=()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function oe(e,n){let t=[];for(let o=0;o<4;o++)for(let i=0;i<4;i++){let r=0;for(let s=0;s<4;s++)r+=e[i+4*s]*n[4*o+s];t[i+4*o]=r;}return t}function ie(e){let n=/matrix(3d)?\(([^)]+)\)/.exec(e||"");if(!n)return k();let t=n[2].split(", ").map(parseFloat);if(t.length===16)return t;let o=k();return [o[0],o[1],o[4],o[5],o[12],o[13]]=t,o}function z(e,n){let t=Math.PI/180*n,o=Math.cos(t),i=Math.sin(t),r=k(),[s,a,c,h]=e==="x"?[5,10,6,9]:e==="y"?[0,10,8,2]:[0,5,1,4];return r[s]=r[a]=o,r[c]=i,r[h]=-i,r}function re(e,n){let t=k();return t[e==="X"?12:13]=n,t}function se(e){let n=k();return n[0]=n[5]=e,n}function p(e,n){for(let t of n.split(";")){let o=t.indexOf(":");if(o<1)continue;let i=t.slice(0,o).trim(),r=t.slice(o+1).trim();i&&r&&e.style.setProperty(i,r);}}function ae(e){let{node:n,config:t}=e,o=window.getComputedStyle(n),i=(n.getAttribute("style")||"").match(/[\w-]+\s*:\s*[^;]+\s*/gi)||[],r=i.map(d=>d.trim()),s=`${r.join("; ")};`,a=i.some(d=>/visibility\s?:\s?visible/i.test(d))?s:`${[...r,"visibility: visible"].join("; ")};`,c=parseFloat(o.opacity),h=t.opacity!==null&&!isNaN(parseFloat(String(t.opacity)))?parseFloat(String(t.opacity)):c,b=c!==h?{computed:`opacity: ${c};`,generated:`opacity: ${h};`}:{computed:"",generated:""},u=[];if(parseFloat(t.distance)){let d=t.origin==="top"||t.origin==="bottom"?"Y":"X",f=t.distance;(t.origin==="top"||t.origin==="left")&&(f=f.startsWith("-")?f.slice(1):`-${f}`);let S=f.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g)||[],m=Number(S[0]),A=S[1],L;if(A==="em")L=parseInt(o.fontSize,10)*m;else if(A==="px")L=m;else if(A==="%"){let X=n.getBoundingClientRect();L=(d==="Y"?X.height:X.width)*m/100;}else throw new RangeError("Unrecognized or missing distance unit.");u.push(re(d,L));}t.rotate.x&&u.push(z("x",t.rotate.x)),t.rotate.y&&u.push(z("y",t.rotate.y)),t.rotate.z&&u.push(z("z",t.rotate.z)),t.scale!==1&&u.push(se(t.scale===0?2e-4:t.scale));let g={initial:"",final:""};if(u.length){let d=ie(o.transform);g={initial:`transform: matrix3d(${u.reduce(oe,d).join(", ")});`,final:`transform: matrix3d(${d.join(", ")});`};}let w={delayed:"",instant:""};if(b.generated||g.initial){let d=m=>`${m/1e3}s`,f=[],S=m=>({delayed:`${m} ${d(t.duration)} ${t.easing} ${d(t.delay)}`,instant:`${m} ${d(t.duration)} ${t.easing} 0s`});o.transition&&!/all 0s|none 0s/.test(o.transition)&&f.push({delayed:o.transition,instant:o.transition}),b.generated&&f.push(S("opacity")),g.initial&&f.push(S("transform")),w={delayed:`transition: ${f.map(m=>m.delayed).join(", ")};`,instant:`transition: ${f.map(m=>m.instant).join(", ")};`};}return {inline:{computed:s,generated:a},opacity:b,position:o.position,transform:g,transition:w}}var x=(...e)=>e.filter(n=>n!=="").join(" "),le=()=>({delay:0,distance:"0",duration:600,easing:"cubic-bezier(0.5, 0, 0, 1)",interval:0,opacity:0,origin:"bottom",rotate:{x:0,y:0,z:0},scale:1,cleanup:false,container:document.documentElement,desktop:true,mobile:true,reset:false,useDelay:"always",viewFactor:0,viewOffset:{top:0,right:0,bottom:0,left:0},afterReset:()=>{},afterReveal:()=>{},beforeReset:()=>{},beforeReveal:()=>{}}),v=null,T=null,l={containers:{},elements:{},history:[],sequences:{}},G=true,O=null,R=0,Q=false,ce=0,H=()=>ce++;function V(e,n=false){let t=e,o=n?t.clientHeight:t.offsetHeight,i=n?t.clientWidth:t.offsetWidth,r=0,s=0,a=t;for(;a;)isNaN(a.offsetTop)||(r+=a.offsetTop),isNaN(a.offsetLeft)||(s+=a.offsetLeft),a=a.offsetParent;return {bounds:{top:r,right:s+i,bottom:r+o,left:s},height:o,width:i}}var de=e=>e.node===document.documentElement?{top:window.pageYOffset,left:window.pageXOffset}:{top:e.node.scrollTop,left:e.node.scrollLeft};function ue(e){let n=l.containers[e.containerId];if(!n||!n.geometry||!n.scroll||!e.geometry)return false;let t=Math.max(0,Math.min(1,e.config.viewFactor)),o=e.config.viewOffset,i=e.geometry,r={top:i.bounds.top+i.height*t,right:i.bounds.right-i.width*t,bottom:i.bounds.bottom-i.height*t,left:i.bounds.left+i.width*t},s={top:n.geometry.bounds.top+n.scroll.top+o.top,right:n.geometry.bounds.right+n.scroll.left-o.right,bottom:n.geometry.bounds.bottom+n.scroll.top-o.bottom,left:n.geometry.bounds.left+n.scroll.left+o.left};return r.top<s.bottom&&r.right>s.left&&r.bottom>s.top&&r.left<s.right||e.styles.position==="fixed"}function K(e,n=false){let t=n?e.config.duration+e.config.delay:e.config.duration,o=0;e.timer&&(o=Date.now()-e.timer.start,clearTimeout(e.timer.clock)),(e.revealed?e.config.beforeReveal:e.config.beforeReset)(e.node),e.timer={start:Date.now(),clock:setTimeout(()=>{(e.revealed?e.config.afterReveal:e.config.afterReset)(e.node),e.timer=null,e.revealed&&!e.config.reset&&e.config.cleanup&&W(e.node);},t-o)};}function fe(e,n){let t=e.styles;e.revealed=e.seen=true,p(e.node,x(t.inline.generated,t.opacity.computed,t.transform.final,n?t.transition.delayed:t.transition.instant)),K(e,n);}function me(e){let n=e.styles;e.revealed=false,p(e.node,x(n.inline.generated,n.opacity.generated,n.transform.initial,n.transition.instant)),K(e);}function M(e,n={}){let t=n.pristine||G,o=e.config.useDelay,i=o==="always"||o==="onload"&&t||o==="once"&&!e.seen;if(n.reveal||e.visible&&!e.revealed)return fe(e,i);if(n.reset||!e.visible&&e.revealed&&e.config.reset)return me(e)}function U(e,n){let t=[],o=[],i=[];return e.members.forEach((r,s)=>{l.elements[r]?.[n]&&o.push(s);}),o.length&&e.members.forEach((r,s)=>{let a=l.elements[r];a&&!a[n]&&(s<o[0]?t:i).push(s);}),{head:t,body:o,foot:i}}function I(e,n,t,o){let i=t<0?"head":"foot",r=l.elements[e.members[n+t]];e.blocked[i]=true,setTimeout(()=>{e.blocked[i]=false,r&&Z(r,o);},e.interval);}function Z(e,n=G){if(!e.visible&&e.revealed&&e.config.reset)return M(e,{reset:true});let t=e.sequence&&l.sequences[e.sequence.id];if(!t||!e.sequence)return;let o=e.sequence.index,i=U(t,"visible"),r=U(t,"revealed");if(!r.body.length){let a=i.body[0],c=l.elements[t.members[a]];if(c)return I(t,a,-1,n),I(t,a,1,n),M(c,{reveal:true,pristine:n})}let s=a=>a[a.length-1];if(!t.blocked.head&&o===s(r.head)&&o>=(i.body[0]??1/0))return I(t,o,-1,n),M(e,{reveal:true,pristine:n});if(!t.blocked.foot&&o===r.foot[0]&&o<=(s(i.body)??-1/0))return I(t,o,1,n),M(e,{reveal:true,pristine:n})}function be(){R=0;let e=Q;Q=false;for(let t of Object.values(l.containers))(e||!t.geometry)&&(t.geometry=V(t.node,true)),t.scroll=de(t);let n=Object.values(l.elements);for(let t of n)(e||!t.geometry)&&(t.geometry=V(t.node)),t.visible=ue(t);for(let t of n)t.sequence?Z(t):M(t);G=false;}function y(e){let n=e?e.type:"init";(n==="init"||n==="resize")&&(Q=true),R||(R=requestAnimationFrame(be));}var E=e=>e.node===document.documentElement?window:e.node;function _(){let e=new Set(Array.from(document.querySelectorAll("[data-sr-id]")).map(o=>parseInt(o.getAttribute("data-sr-id")||"",10)));for(let o of Object.values(l.elements))e.has(o.id)||delete l.elements[o.id];let n=new Set,t=new Set;for(let o of Object.values(l.elements))n.add(o.containerId),o.sequence&&t.add(o.sequence.id);for(let o of Object.values(l.containers))n.has(o.id)||(E(o).removeEventListener("scroll",y),E(o).removeEventListener("resize",y),delete l.containers[o.id]);for(let o of Object.values(l.sequences))t.has(o.id)||delete l.sequences[o.id];}function ee(){O=null,_();let e=Y();for(let n of Object.values(l.elements)){let t=n.styles;e?(n.visible=n.revealed=n.seen=true,p(n.node,x(t.inline.generated,t.opacity.computed,t.transform.final,"transition: none;"))):n.visible?(n.revealed=true,p(n.node,x(t.inline.generated,t.opacity.computed,t.transform.final))):(n.revealed=false,p(n.node,x(t.inline.generated,t.opacity.generated,t.transform.initial)));}if(!e){for(let n of Object.values(l.containers))E(n).addEventListener("scroll",y),E(n).addEventListener("resize",y);y();}}function te(e,n={},t=false){if(!v)return;let o=[],i=n.interval||0,r,s;try{if(i){let c=Math.abs(i);if(isNaN(c))throw new RangeError("Invalid sequence interval.");r={id:H(),interval:Math.max(c,16),members:[],blocked:{head:!1,foot:!1}};}let a=j(e);if(!a.length)throw new Error("Invalid reveal target.");s=[];for(let c of a){let h=c.getAttribute("data-sr-id"),b=h!==null?l.elements[Number(h)]:void 0,u=b?q({},b):{id:H(),node:c,seen:!1,revealed:!1,visible:!1};b&&p(c,b.styles.inline.computed);let g=q({},b?b.config:v,n);if(!g.mobile&&$()||!g.desktop&&!$()){b&&W(c);continue}let w=j(g.container)[0];if(!w)throw new Error("Invalid container.");if(!w.contains(c))continue;let d=[...o,...Object.values(l.containers)].find(f=>f.node===w)?.id;d===void 0&&(d=H(),o.push({id:d,node:w})),u.config=g,u.containerId=d,u.styles=ae(u),r&&(u.sequence={id:r.id,index:r.members.length},r.members.push(u.id)),s.push(u);}for(let c of s)l.elements[c.id]=c,c.node.setAttribute("data-sr-id",String(c.id));}catch(a){return P("Reveal failed.",a.message)}for(let a of o)l.containers[a.id]=a;r&&(l.sequences[r.id]=r),t||(l.history.push({target:e,options:n}),O&&clearTimeout(O),O=setTimeout(ee,0));}function W(e){let n=false;for(let t of j(e)){let o=t.getAttribute("data-sr-id");if(o===null)continue;n=true;let i=l.elements[Number(o)];i&&(i.timer&&clearTimeout(i.timer.clock),p(i.node,i.styles.inline.generated),delete l.elements[i.id]),t.removeAttribute("data-sr-id");}n&&_();}function ge(){for(let e of Object.values(l.elements))p(e.node,e.styles.inline.generated),e.node.removeAttribute("data-sr-id");for(let e of Object.values(l.containers))E(e).removeEventListener("scroll",y),E(e).removeEventListener("resize",y);R&&cancelAnimationFrame(R),R=0,l={containers:{},elements:{},history:[],sequences:{}};}function ve(){for(let e of l.history)te(e.target,e.options,true);ee();}var N=()=>(D()&&document.documentElement.classList.remove("sr"),{reveal(){},clean(){},destroy(){},sync(){},defaults:{},version:J,noop:true});function ne(){if(!D())return false;let e=document.documentElement.style;return ("transform"in e||"WebkitTransform"in e)&&("transition"in e||"WebkitTransition"in e)}function pe(){document.documentElement.classList.add("sr"),document.body?document.body.style.height="100%":document.addEventListener("DOMContentLoaded",()=>{document.body.style.height="100%";},{once:true});}function ye(e={}){if(!D()||!ne())return N();let n;try{if(n=q({},v??le(),e),!j(n.container)[0])throw new Error("Invalid container.")}catch(t){return P("Invalid configuration.",t.message),N()}return v=n,!v.mobile&&$()||!v.desktop&&!$()?(P("This device is disabled.",`desktop: ${v.desktop}`,`mobile: ${v.mobile}`),N()):(pe(),T||(T={reveal:(t,o)=>te(t,o),clean:W,destroy:ge,sync:ve,get defaults(){return v},version:J,noop:false},Object.defineProperty(T,"delegate",{value:y})),T)}var B=ye;B.isSupported=ne;Object.defineProperty(B,"debug",{get:()=>F,set:e=>{typeof e=="boolean"&&(F=e);}});var Re=B;export{B as ScrollReveal,Re as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svg-scroll-draw",
3
- "version": "2.10.2",
3
+ "version": "2.12.0",
4
4
  "description": "Scroll-driven animation for the web — draw SVG paths, reveal elements, pin sections, scrub video. Zero dependencies, native CSS fast path, works with React, Vue, Svelte, Solid, Angular, Astro and vanilla JS",
5
5
  "keywords": [
6
6
  "svg",
@@ -56,7 +56,13 @@
56
56
  "animation-timeline",
57
57
  "view-timeline",
58
58
  "scroll-timeline",
59
- "typescript"
59
+ "typescript",
60
+ "aos",
61
+ "animate-on-scroll",
62
+ "data-aos",
63
+ "scrollreveal",
64
+ "scrollreveal-alternative",
65
+ "scroll-reveal-mit"
60
66
  ],
61
67
  "homepage": "https://svg-scroll-draw.vercel.app",
62
68
  "repository": {
@@ -139,6 +145,12 @@
139
145
  ],
140
146
  "horizontal": [
141
147
  "./dist/horizontal/index.d.ts"
148
+ ],
149
+ "aos": [
150
+ "./dist/aos/index.d.ts"
151
+ ],
152
+ "scrollreveal": [
153
+ "./dist/scrollreveal/index.d.ts"
142
154
  ]
143
155
  }
144
156
  },
@@ -358,6 +370,26 @@
358
370
  "default": "./dist/horizontal/index.cjs"
359
371
  }
360
372
  },
373
+ "./aos": {
374
+ "import": {
375
+ "types": "./dist/aos/index.d.mts",
376
+ "default": "./dist/aos/index.mjs"
377
+ },
378
+ "require": {
379
+ "types": "./dist/aos/index.d.ts",
380
+ "default": "./dist/aos/index.cjs"
381
+ }
382
+ },
383
+ "./scrollreveal": {
384
+ "import": {
385
+ "types": "./dist/scrollreveal/index.d.mts",
386
+ "default": "./dist/scrollreveal/index.mjs"
387
+ },
388
+ "require": {
389
+ "types": "./dist/scrollreveal/index.d.ts",
390
+ "default": "./dist/scrollreveal/index.cjs"
391
+ }
392
+ },
361
393
  "./package.json": "./package.json"
362
394
  },
363
395
  "scripts": {
@@ -377,9 +409,10 @@
377
409
  "devDependencies": {
378
410
  "@playwright/test": "^1.62.1",
379
411
  "@types/react": "^18.0.0",
380
- "esbuild": "^0.27.7",
381
412
  "@vitest/coverage-v8": "^2.0.0",
413
+ "esbuild": "^0.27.7",
382
414
  "jsdom": "^25.0.0",
415
+ "scrollreveal": "^4.0.9",
383
416
  "solid-js": "^1.9.13",
384
417
  "tsup": "^8.0.0",
385
418
  "typescript": "^5.0.0",
@@ -390,7 +423,8 @@
390
423
  "./dist/web-component/*",
391
424
  "./dist/cdn/*",
392
425
  "./src/web-component/*",
393
- "./src/cdn.ts"
426
+ "./src/cdn.ts",
427
+ "./src/scrollreveal/cdn.ts"
394
428
  ],
395
429
  "engines": {
396
430
  "node": ">=18"