@rtstic.dev/pulse 0.0.15 → 0.0.19

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.
@@ -0,0 +1 @@
1
+ [pulse-animation-element=player-inner-elements]{z-index:105;pointer-events:auto}[pulse-animation-element=hero-wrapper]{z-index:100}[pulse-animation-element=hero-blur-overlay]{z-index:95}[pulse-animation-element=hero-blur]{z-index:90}[pulse-animation-element=radial-gradient-wrapper]{z-index:70;opacity:0}[pulse-animation-element=canvas-wrapper]{z-index:85}[pulse-animation-element=player-wrapper],[pulse-animation-element=player-wrapper-mobile]{z-index:80}#spline-container canvas{width:100vw!important}.spline-disc canvas{width:1920px!important;height:1080px!important}#canvas3d{width:100vw!important;height:100%;display:flex;justify-content:center;align-items:center}.block-canvas{display:flex;justify-content:center;align-items:flex-end;height:100vh;width:100vw;overflow:hidden;top:48px}.block_spline-3d{display:flex;position:sticky;top:0;height:100vh;pointer-events:none}.block_hero-text{position:absolute;inset:0%;overflow:hidden;height:100vh;pointer-events:auto}.block_music-player{position:absolute;bottom:0;left:0;width:100vw;height:100vh}.canvas-helper{display:none}.scroll-section{position:relative;height:350vh;pointer-events:none}.box{width:360px;height:449px;background:#0b0b0b;position:relative}.box svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible;pointer-events:none}[pulse-animation-element=player-elements]{position:absolute;inset:0}[pulse-animation-element=line-art]{background:transparent}[pulse-animation-element=player-handle]{transform-origin:left center;transform:rotate(0);left:70px}[pulse-animation-element=player-handle-tail]{transform-origin:right center;transform:rotate(0)}.blur-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,#000c,#0000);height:100%}.gradient-blur{position:absolute;inset:0;backdrop-filter:blur(8px) brightness(1);-webkit-backdrop-filter:blur(25px) brightness(1);mask-image:linear-gradient(to top,#0000,#000 60%);-webkit-mask-image:linear-gradient(to top,rgba(0,0,0,0) 0%,rgb(0 0 0) 60%);height:80%}[pulse-animation-element=disc-spacer]{height:80px}.vignette{background:radial-gradient(circle,transparent 60%,rgba(0,0,0,.8) 100%);position:absolute;inset:0;pointer-events:none;width:100%;height:100%;z-index:89}.vignite-bg{position:absolute;z-index:90;width:100%;height:100px}@media (max-width: 479px){.vignite-bg{height:380px}}#gallery:before{content:"";position:absolute;inset:0;background:#00000006;z-index:2}.torch{position:absolute;inset:0;pointer-events:none;z-index:4;background:rgba(0,0,0,var(--darkness));opacity:0;transition:opacity .16s ease-out;-webkit-mask:radial-gradient(var(--torch-size) var(--torch-size) at var(--x) var(--y),transparent 0 var(--clear),white var(--torch-size));mask:radial-gradient(var(--torch-size) var(--torch-size) at var(--x) var(--y),transparent 0 var(--clear),white var(--torch-size))}#gallery:hover .torch{opacity:1}@media (pointer: coarse){.torch{opacity:1}}@media (prefers-reduced-motion: reduce){.torch{transition:none}}@media (max-width: 500px){.spline-disc canvas{height:800px!important}#canvas3d{width:100vw!important}.box,.col-2-row-2-item-1{width:250px;height:320px}.block-canvas{top:30px}.column_absolute{justify-content:center;align-items:center}.player-progress{padding:12px 12px 18px}}
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/home/hero-animation/styles.css"],
4
+ "sourcesContent": ["/* Z-index hirearchy: */\n[pulse-animation-element=\"player-inner-elements\"]{\n z-index: 105;\n pointer-events: auto;\n}\n[pulse-animation-element=\"hero-wrapper\"]{\n z-index: 100;\n}\n[pulse-animation-element=\"hero-blur-overlay\"]{\n z-index: 95;\n}\n[pulse-animation-element=\"hero-blur\"]{\n z-index: 90;\n}\n[pulse-animation-element=\"radial-gradient-wrapper\"]{\n z-index: 70;\n opacity: 0;\n \n}\n[pulse-animation-element=\"canvas-wrapper\"]{\n z-index: 85;\n\n}\n\n[pulse-animation-element=\"player-wrapper\"]{\n z-index: 80; \n}\n[pulse-animation-element=\"player-wrapper-mobile\"]{\n z-index: 80; \n}\n\n\n#spline-container canvas{\n width: 100vw !important;\n}\n\n.spline-disc canvas{\n width: 1920px !important;\n height: 1080px !important;\n}\n\n\n#canvas3d{\n width: 100vw !important;\n /* height: 100vh !important; */\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.block-canvas{\n display: flex;\n justify-content: center;\n align-items: flex-end;\n height: 100vh;\n width: 100vw;\n overflow: hidden;\n top: 48px;\n}\n\n.block_spline-3d {\n display: flex;\n position: sticky;\n top: 0px;\n height: 100vh;\n pointer-events: none;\n}\n\n.block_hero-text {\n position: absolute;\n inset: 0%;\n overflow: hidden;\n height: 100vh;\n pointer-events: auto;\n}\n\n.block_music-player{\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n /* overflow: visible; */\n}\n\n.canvas-helper{\n display : none;\n}\n\n/* scroll animation start */\n.scroll-section{\n position: relative;\n height: 350vh;\n pointer-events: none;\n /* background-color: rgba(255, 0, 0, 0.333); */\n}\n\n.box {\n width: 360px;\n height: 449px;\n background: rgba(11, 11, 11, 1);\n position: relative;\n}\n\n/* The SVG acts as the border */\n.box svg {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n display: block;\n overflow: visible;\n pointer-events: none;\n}\n\n[pulse-animation-element=\"player-elements\"]{\n position: absolute;\n inset: 0;\n}\n\n[pulse-animation-element=\"line-art\"]{\n background: transparent;\n}\n\n[pulse-animation-element=\"player-handle\"]{\n transform-origin: left center;\n transform: rotate(0deg);\n left: 70px;\n}\n\n[pulse-animation-element=\"player-handle-tail\"]{\n transform-origin: right center;\n transform: rotate(0deg);\n}\n\n/* [pulse-animation-element=\"radial-gradient\"]{\n background: radial-gradient(circle, #141414 0%, rgba(20, 20, 20, 0.9) 70%, rgba(20, 20, 20, 0.6) 80%, transparent 100%);\n opacity: 0.8;\n} */\n\n/* blue css */\n.blur-overlay {\n position: absolute;\n inset: 0;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0.8) 0%,\n rgba(0, 0, 0, 0) 100%\n );\n height: 100%;\n}\n\n/* .gradient-blur {\n position: absolute;\n inset: 0;\n backdrop-filter: blur(25px) brightness(1.2);\n -webkit-backdrop-filter: blur(25px) brightness(1.2);\n mask-image: linear-gradient(to top, rgba(0,0,0,0) 35%, rgba(0,0,0,1) 70%);\n -webkit-mask-image: linear-gradient(to top, rgba(0,0,0,0) 35%, rgba(0,0,0,1) 70%);\n height: 100%;\n} */\n\n.gradient-blur {\n position: absolute;\n inset: 0;\n backdrop-filter: blur(8px) brightness(1);\n -webkit-backdrop-filter: blur(25px) brightness(1);\n mask-image: linear-gradient(to top, #0000 0%, #000 60%);\n -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgb(0 0 0) 60%);\n height: 80%;\n}\n\n\n[pulse-animation-element='disc-spacer']{\n height: 80px;\n}\n\n\n\n.vignette{\n background: radial-gradient(circle, transparent 60%, rgba(0, 0, 0, 0.8) 100%);\n position: absolute;\n inset: 0;\n pointer-events: none; \n width: 100%;\n height: 100%;\n z-index: 89;\n}\n.vignite-bg{\nposition: absolute;\nz-index: 90;\nwidth: 100%;\nheight:100px;\n}\n\n@media (max-width: 479px) {\n .vignite-bg{\n height:380px;\n }\n}\n\n/* \n.torch {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 91;\n background: rgba(0,0,0,var(--darkness, .75));\n opacity: 0;\n transition: opacity 160ms ease-out;\n\n -webkit-mask: radial-gradient(\n var(--torch-size, 480px) var(--torch-size, 480px)\n at var(--x, 50%) var(--y, 50%),\n transparent 0 var(--clear, 280px),\n white var(--torch-size, 480px)\n );\n mask: radial-gradient(\n var(--torch-size, 480px) var(--torch-size, 480px)\n at var(--x, 50%) var(--y, 50%),\n transparent 0 var(--clear, 280px),\n white var(--torch-size, 480px)\n );\n }\n\n #home-scroll:hover .torch { opacity: 1; } */\n\n #gallery {\n /* position: relative;\n overflow: hidden;\n box-shadow: 0 14px 44px rgba(0,0,0,.5);\n isolation: isolate; keep blending local */\n }\n /* Subtle global dim so the torch pops */\n #gallery::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, .024);\n z-index: 2;\n }\n\n /* Torch overlay that masks a circular window where darkness is removed */\n .torch {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 4;\n background: rgba(0,0,0,var(--darkness));\n opacity: 0;\n transition: opacity 160ms ease-out;\n -webkit-mask: radial-gradient(\n var(--torch-size) var(--torch-size) at var(--x) var(--y),\n transparent 0 var(--clear),\n white var(--torch-size)\n );\n mask: radial-gradient(\n var(--torch-size) var(--torch-size) at var(--x) var(--y),\n transparent 0 var(--clear),\n white var(--torch-size)\n );\n }\n\n #gallery:hover .torch { opacity: 1; }\n\n @media (pointer: coarse) {\n .torch { opacity: 1; }\n }\n @media (prefers-reduced-motion: reduce) {\n .torch { transition: none; }\n }\n\n\n @media (max-width: 500px) {\n .spline-disc canvas{\n height: 800px !important;\n }\n #canvas3d{\n width: 100vw !important;\n}\n\n\n.box {\n width: 250px;\n height: 320px;\n}\n.col-2-row-2-item-1 {\n width: 250px;\n height: 320px;\n}\n.block-canvas {\n top: 30px;\n}\n.column_absolute {\n justify-content: center;\n align-items: center;\n}\n.player-progress {\n padding: 12px;\n padding-bottom: 18px;\n}\n}"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var i={darkness:.5,torchSize:520,clear:300},t=document.getElementById("gallery"),n=document.getElementById("trigger-gallery"),E=document.getElementById("grid"),c=t?.querySelector(".torch");t.style.setProperty("--darkness",String(i.darkness));t.style.setProperty("--torch-size",`${i.torchSize}px`);t.style.setProperty("--clear",`${i.clear}px`);var a=e=>Math.max(0,Math.min(1,e)),u=(e,o)=>{let r=n.getBoundingClientRect(),d=t.getBoundingClientRect(),g=a((e-r.left)/r.width),h=a((o-r.top)/r.height),v=g*d.width,p=h*d.height;t.style.setProperty("--x",`${v}px`),t.style.setProperty("--y",`${p}px`)},y=()=>{let e=t.getBoundingClientRect();t.style.setProperty("--x",`${e.width/2}px`),t.style.setProperty("--y",`${e.height/2}px`)};y();var s=()=>{c&&(c.style.opacity="1")},l=()=>{c&&(c.style.opacity="0"),y()};n&&(n.addEventListener("mousemove",e=>{s(),u(e.clientX,e.clientY)}),n.addEventListener("mouseenter",s),n.addEventListener("mouseleave",l));var m=e=>u(e.clientX,e.clientY);n?.addEventListener("touchstart",e=>{s(),m(e.touches[0])},{passive:!0});n?.addEventListener("touchmove",e=>m(e.touches[0]),{passive:!0});n?.addEventListener("touchend",l);n||(t.addEventListener("mousemove",e=>{let o=t.getBoundingClientRect();t.style.setProperty("--x",`${e.clientX-o.left}px`),t.style.setProperty("--y",`${e.clientY-o.top}px`),s()}),t.addEventListener("mouseleave",l),t.addEventListener("mouseenter",s));})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/home/hero-animation/torch.ts"],
4
+ "sourcesContent": ["const config: { darkness: number; torchSize: number; clear: number } = { darkness: 0.5, torchSize: 520, clear: 300 };\n\nconst section = document.getElementById('gallery') as HTMLElement;\nconst triggerSection = document.getElementById('trigger-gallery') as HTMLElement | null;\nconst grid = document.getElementById('grid') as HTMLElement | null;\nconst torch = section?.querySelector('.torch') as HTMLElement | null;\n\n\n// Apply config\nsection.style.setProperty('--darkness', String(config.darkness));\nsection.style.setProperty('--torch-size', `${config.torchSize}px`);\nsection.style.setProperty('--clear', `${config.clear}px`);\n\n// Helper to clamp between 0 and 1\nconst clamp01 = (v: number): number => Math.max(0, Math.min(1, v));\n\n// Map a point in the trigger to a point in the gallery\nconst setFromTriggerPoint = (clientX: number, clientY: number): void => {\n const tRect: DOMRect = (triggerSection as HTMLElement).getBoundingClientRect();\n const gRect: DOMRect = section.getBoundingClientRect();\n\n // Relative position inside trigger (0..1)\n const rx = clamp01((clientX - tRect.left) / tRect.width);\n const ry = clamp01((clientY - tRect.top) / tRect.height);\n\n // Map to gallery pixel coords\n const gx = rx * gRect.width;\n const gy = ry * gRect.height;\n\n section.style.setProperty('--x', `${gx}px`);\n section.style.setProperty('--y', `${gy}px`);\n};\n\n// Center by default\nconst centerTorch = (): void => {\n const gRect: DOMRect = section.getBoundingClientRect();\n section.style.setProperty('--x', `${gRect.width / 2}px`);\n section.style.setProperty('--y', `${gRect.height / 2}px`);\n};\ncenterTorch();\n\n// Show/Hide behavior tied to trigger\nconst showTorch = (): void => { if (torch) torch.style.opacity = '1'; };\nconst hideTorch = (): void => { if (torch) torch.style.opacity = '0'; centerTorch(); };\n\n// Mouse events on the trigger control the torch on the gallery\nif (triggerSection) {\n triggerSection.addEventListener('mousemove', (e: MouseEvent) => {\n showTorch();\n setFromTriggerPoint(e.clientX, e.clientY);\n });\n triggerSection.addEventListener('mouseenter', showTorch);\n triggerSection.addEventListener('mouseleave', hideTorch);\n}\n\n// Touch support on the trigger\nconst moveTouch = (touch: Touch): void => setFromTriggerPoint(touch.clientX, touch.clientY);\ntriggerSection?.addEventListener('touchstart', (e: TouchEvent) => { showTorch(); moveTouch(e.touches[0]); }, { passive: true } as AddEventListenerOptions);\ntriggerSection?.addEventListener('touchmove', (e: TouchEvent) => moveTouch(e.touches[0]), { passive: true } as AddEventListenerOptions);\ntriggerSection?.addEventListener('touchend', hideTorch as EventListener);\n\n// Fallback: if no trigger found for any reason, allow direct gallery control\nif (!triggerSection) {\n section.addEventListener('mousemove', (e: MouseEvent) => {\n const r: DOMRect = section.getBoundingClientRect();\n section.style.setProperty('--x', `${e.clientX - r.left}px`);\n section.style.setProperty('--y', `${e.clientY - r.top}px`);\n showTorch();\n });\n section.addEventListener('mouseleave', hideTorch);\n section.addEventListener('mouseenter', showTorch);\n}"],
5
+ "mappings": ";;;AAAA,MAAM,SAAiE,EAAE,UAAU,KAAK,WAAW,KAAK,OAAO,IAAI;AAEnH,MAAM,UAAU,SAAS,eAAe,SAAS;AACjD,MAAM,iBAAiB,SAAS,eAAe,iBAAiB;AAChE,MAAM,OAAO,SAAS,eAAe,MAAM;AAC3C,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAI7C,UAAQ,MAAM,YAAY,cAAc,OAAO,OAAO,QAAQ,CAAC;AAC/D,UAAQ,MAAM,YAAY,gBAAgB,GAAG,OAAO,SAAS,IAAI;AACjE,UAAQ,MAAM,YAAY,WAAW,GAAG,OAAO,KAAK,IAAI;AAGxD,MAAM,UAAU,CAAC,MAAsB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAGjE,MAAM,sBAAsB,CAAC,SAAiB,YAA0B;AACpE,UAAM,QAAkB,eAA+B,sBAAsB;AAC7E,UAAM,QAAiB,QAAQ,sBAAsB;AAGrD,UAAM,KAAK,SAAS,UAAU,MAAM,QAAQ,MAAM,KAAK;AACvD,UAAM,KAAK,SAAS,UAAU,MAAM,OAAO,MAAM,MAAM;AAGvD,UAAM,KAAK,KAAK,MAAM;AACtB,UAAM,KAAK,KAAK,MAAM;AAEtB,YAAQ,MAAM,YAAY,OAAO,GAAG,EAAE,IAAI;AAC1C,YAAQ,MAAM,YAAY,OAAO,GAAG,EAAE,IAAI;AAAA,EAC9C;AAGA,MAAM,cAAc,MAAY;AAC5B,UAAM,QAAiB,QAAQ,sBAAsB;AACrD,YAAQ,MAAM,YAAY,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI;AACvD,YAAQ,MAAM,YAAY,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI;AAAA,EAC5D;AACA,cAAY;AAGZ,MAAM,YAAY,MAAY;AAAE,QAAI,MAAO,OAAM,MAAM,UAAU;AAAA,EAAK;AACtE,MAAM,YAAY,MAAY;AAAE,QAAI,MAAO,OAAM,MAAM,UAAU;AAAK,gBAAY;AAAA,EAAG;AAGrF,MAAI,gBAAgB;AAChB,mBAAe,iBAAiB,aAAa,CAAC,MAAkB;AAC5D,gBAAU;AACV,0BAAoB,EAAE,SAAS,EAAE,OAAO;AAAA,IAC5C,CAAC;AACD,mBAAe,iBAAiB,cAAc,SAAS;AACvD,mBAAe,iBAAiB,cAAc,SAAS;AAAA,EAC3D;AAGA,MAAM,YAAY,CAAC,UAAuB,oBAAoB,MAAM,SAAS,MAAM,OAAO;AAC1F,kBAAgB,iBAAiB,cAAc,CAAC,MAAkB;AAAE,cAAU;AAAG,cAAU,EAAE,QAAQ,CAAC,CAAC;AAAA,EAAG,GAAG,EAAE,SAAS,KAAK,CAA4B;AACzJ,kBAAgB,iBAAiB,aAAa,CAAC,MAAkB,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,CAA4B;AACtI,kBAAgB,iBAAiB,YAAY,SAA0B;AAGvE,MAAI,CAAC,gBAAgB;AACjB,YAAQ,iBAAiB,aAAa,CAAC,MAAkB;AACrD,YAAM,IAAa,QAAQ,sBAAsB;AACjD,cAAQ,MAAM,YAAY,OAAO,GAAG,EAAE,UAAU,EAAE,IAAI,IAAI;AAC1D,cAAQ,MAAM,YAAY,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;AACzD,gBAAU;AAAA,IACd,CAAC;AACD,YAAQ,iBAAiB,cAAc,SAAS;AAChD,YAAQ,iBAAiB,cAAc,SAAS;AAAA,EACpD;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ [horizontal-scroll-section]{height:100vh;overflow:hidden;background:#000;position:relative;justify-content:flex-start}[horizontal-scroll-wrapper]{display:flex;height:100%;will-change:transform;gap:40px}.panel{min-width:100vw;width:100vw;height:100vh;position:relative;z-index:1}.panel.is-title{min-width:60vw;width:60vw;position:relative;z-index:1}@media (max-width: 991px){[horizontal-scroll-section]{height:auto;overflow:visible;display:block;padding:0}[horizontal-scroll-wrapper]{display:block;height:auto;width:100%}.panel{min-width:100%;width:100%;height:100vh;position:sticky;top:0;box-shadow:0 -5px 20px #00000080}}
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/home/horizontal-scroll.css"],
4
+ "sourcesContent": ["\n /* --- DESKTOP LAYOUT (Default) --- */\n \n [horizontal-scroll-section] {\n height: 100vh;\n overflow: hidden;\n background: #000;\n position: relative;\n /* Ensures content starts at left edge for horizontal scroll */\n justify-content: flex-start; \n }\n\n [horizontal-scroll-wrapper] {\n display: flex;\n height: 100%;\n will-change: transform;\n gap: 40px;\n }\n\n .panel {\n min-width: 100vw;\n width: 100vw;\n height: 100vh;\n /* Create a stacking context */\n position: relative; \n z-index: 1;\n }\n .panel.is-title {\n min-width: 60vw;\n width: 60vw;\n /* Create a stacking context */\n position: relative; \n z-index: 1;\n }\n\n /* --- MOBILE STACKING LAYOUT (< 992px) --- */\n @media (max-width: 991px) {\n \n /* 1. Unset the pinned height and overflow so the body can scroll naturally */\n [horizontal-scroll-section] {\n height: auto;\n overflow: visible; /* Important: sticky won't work if this is hidden */\n display: block; /* Stack block elements */\n padding: 0;\n }\n\n [horizontal-scroll-wrapper] {\n display: block;\n height: auto;\n width: 100%;\n }\n \n /* 2. The Stacking Effect */\n .panel {\n min-width: 100%;\n width: 100%;\n height: 100vh; /* Each card takes full screen */\n \n /* MAGIC SAUCE: Sticky Positioning */\n position: sticky; \n top: 0; /* Sticks to the top of viewport */\n \n /* Visual separation for the stacking effect */\n box-shadow: 0 -5px 20px rgba(0,0,0,0.5); \n }\n \n }\n"],
5
+ "mappings": ";AAGI,CAAC;AACC,UAAQ;AACR,YAAU;AACV,cAAY;AACZ,YAAU;AAEV,mBAAiB;AACnB;AAEA,CAAC;AACC,WAAS;AACT,UAAQ;AACR,eAAa;AACb,OAAK;AACP;AAEA,CAAC;AACC,aAAW;AACX,SAAO;AACP,UAAQ;AAER,YAAU;AACV,WAAS;AACX;AACE,CARD,KAQO,CAAC;AACP,aAAW;AACX,SAAO;AAEP,YAAU;AACV,WAAS;AACX;AAGA,OAAO,CAAC,SAAS,EAAE;AAGjB,GAAC;AACC,YAAQ;AACR,cAAU;AACV,aAAS;AACT,aAAS;AACX;AAEA,GAAC;AACC,aAAS;AACT,YAAQ;AACR,WAAO;AACT;AAGA,GAlCD;AAmCG,eAAW;AACX,WAAO;AACP,YAAQ;AAGR,cAAU;AACV,SAAK;AAGL,gBAAY,EAAE,KAAK,KAAK,KAAK,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC;AACrC;AAEF;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{function g(){return new Promise((r,t)=>{let i=0,e=()=>{i++;let o=window.gsap,n=window.ScrollTrigger;o&&n?r({gsap:o,ScrollTrigger:n}):i>=50?t(new Error("GSAP or ScrollTrigger failed to load. Ensure they are loaded as <script> tags before this module.")):setTimeout(e,100)};e()})}async function f(){if(typeof window>"u")return!1;try{let{gsap:r,ScrollTrigger:t}=await g();return r.plugins?.scrollTrigger!==void 0?console.log("\u2713 ScrollTrigger already registered"):(r.registerPlugin(t),console.log("\u2713 ScrollTrigger registered successfully")),!0}catch(r){return console.error("Failed to register ScrollTrigger:",r),!1}}async function d(){if(!await f())return;let t=window.gsap,l=t.matchMedia?.();if(!l){console.error("GSAP matchMedia() is unavailable.");return}l.add("(min-width: 992px)",()=>{let i=document.querySelectorAll("[horizontal-scroll-section]");if(i.length===0){console.warn("No elements found with [horizontal-scroll-section]");return}return i.forEach(e=>{let o=e.querySelector("[horizontal-scroll-wrapper]");if(!o){console.warn("Missing [horizontal-scroll-wrapper] inside:",e);return}let n=()=>{let c=o.scrollWidth-window.innerWidth;return Math.max(c,0)};if(n()<=0){console.warn("Wrapper content is not wider than viewport. No scroll needed.",o);return}let s=`hs-${o.dataset.stId||Math.random().toString(16).slice(2)}`,a=t.getById?.(s);a&&a.kill(),o.dataset.stId=s,t.to(o,{x:()=>-n(),ease:"none",scrollTrigger:{id:s,trigger:e,start:"top top",end:()=>`+=${n()}`,pin:!0,scrub:1,invalidateOnRefresh:!0,markers:!1,onUpdate:c=>{}}})}),()=>{try{t.getChildren?.().forEach(e=>{e.id?.startsWith("hs-")&&e.kill()})}catch{}}})}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",async()=>{try{await d()}catch(r){console.error("Error initializing horizontal scroll:",r)}}):d().catch(r=>{console.error("Error initializing horizontal scroll:",r)}),window.addEventListener("load",()=>{try{window.ScrollTrigger?.refresh&&window.ScrollTrigger.refresh()}catch(r){console.error("Error refreshing ScrollTrigger:",r)}}));})();