@rtstic.dev/pulse 0.0.14 → 0.0.18

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
+ "use strict";(()=>{var H=e=>!!e;function h(){if(typeof window>"u")return null;let e=window.gsap;if(!e)return console.warn("window.gsap not found. Make sure GSAP is loaded globally before this code runs."),null;let o=window.ScrollTrigger||e.ScrollTrigger;return o?(e.registerPlugin(o),e):(console.warn("ScrollTrigger not found on window (or gsap). Make sure the ScrollTrigger plugin script is loaded globally."),null)}function j(){let e=h();if(!e)return;let o=document.getElementById("home-scroll");if(!o)return;let S=o.querySelector("[pulse-animation-element='hero-title']"),R=o.querySelector("[pulse-animation-element='hero-description']"),E=o.querySelector("[pulse-animation-element='hero-button']"),m=Array.from(o.querySelectorAll("[pulse-animation-element='hero-blur']")),s=o.querySelector("[pulse-animation-element='hero-blur-overlay']"),c=o.querySelector("#canvas3d"),M=document.querySelector('[pulse-animation-element="col-1-row-1-item-1"]'),q=document.querySelector('[pulse-animation-element="col-1-row-1-item-2"]'),C=document.querySelector('[pulse-animation-element="col-1-row-2-item-1"]'),I=document.querySelector('[pulse-animation-element="col-1-row-2-item-2"]'),b=document.querySelector('[pulse-animation-element="col-1-row-3-item-1"]'),v=document.querySelector('[pulse-animation-element="col-2-row-1-item-1"]'),A=document.querySelector('[pulse-animation-element="col-2-row-1-item-2"]'),P=document.querySelector('[pulse-animation-element="col-2-row-2-item-1"]'),G=document.querySelector('[pulse-animation-element="col-2-row-3-item-1"]'),W=document.querySelector('[pulse-animation-element="col-3-row-1-item-1"]'),B=document.querySelector('[pulse-animation-element="col-3-row-2-col-1-item-1"]'),O=document.querySelector('[pulse-animation-element="col-3-row-2-col-1-item-2"]'),k=document.querySelector('[pulse-animation-element="col-3-row-2-col-2-item-1"]'),x=document.querySelector('[pulse-animation-element="col-3-row-2-col-2-item-2"]'),D=document.querySelector('[pulse-animation-element="col-3-row-3-item-1"]'),z=document.querySelector('[pulse-animation-element="canvas"]'),u=document.querySelector('[pulse-animation-element="radial-gradient-wrapper"]'),n=[M,q,C,I,b,v,A,G,W,B,O,k,x,D].filter(H),r=P,i=document.querySelector('[pulse-animation-element="player-inner-elements"]'),d=document.querySelector('[pulse-animation-element="player-radius-rect"]'),l=document.querySelector('[pulse-animation-element="line-art"]');if(!d){console.warn("Player radius rect not found");return}let F=d.getTotalLength(),a=document.querySelector('[pulse-animation-element="player-handle"]'),p=document.querySelector('[pulse-animation-element="player-handle-tail"]'),y=document.querySelector('[pulse-animation-element="handle-wrapper"]'),f=Array.from(document.querySelectorAll('[pulse-animation-element="vignette"]')),V=document.querySelector('[pulse-animation-element="torch-wrapper"]'),g=document.querySelector('[pulse-animation-element="torch"]'),w=document.querySelector('[pulse-animation-element="launch-button"]'),T=document.querySelector('[pulse-animation-element="launch-title"]');console.log("playerHandle:",a),console.log("Player position element:",r);let t=e.timeline({defaults:{ease:"power2.out",duration:1},scrollTrigger:{trigger:o,start:"top bottom",end:"bottom top",scrub:!0,invalidateOnRefresh:!0}});m.length&&e.set(m,{yPercent:32,opacity:1}),s&&e.set(s,{y:0,opacity:1}),u&&e.set(u,{opacity:0}),t.addLabel("start",0),S&&t.fromTo(S,{y:1100},{y:-400,ease:"power2.out",duration:1.2,immediateRender:!1},"start+=0.1"),R&&t.fromTo(R,{y:680},{y:-400,ease:"power2.out",duration:1.2,immediateRender:!1},"start+=0.2"),E&&t.fromTo(E,{y:440},{y:-480,ease:"power2.out",duration:1.2,immediateRender:!1},"start+=0.3"),m.length&&t.to(m,{yPercent:-100,opacity:0,ease:"power2.out",duration:1.2,delay:.2,immediateRender:!1},"start+=0.2"),s&&t.to(s,{y:-1200,ease:"power2.out",duration:1,delay:.2,immediateRender:!1},"start+=0.2");let L=[S,R,E].filter(H);L.length&&(t.to(L,{scale:.95,duration:.8,ease:"power2.out",immediateRender:!1},"start+=0.4"),t.to(L,{opacity:0,duration:.2,delay:.2,ease:"power2.out",immediateRender:!1},"start+=0.35")),n.length&&e.set(n,{opacity:0,scale:()=>e.utils.random(.5,.95),y:()=>e.utils.random(40,60)}),r&&e.set(r,{opacity:1,scale:.5}),i&&e.set(i,{scale:.8}),e.set(d,{opacity:0}),l&&e.set(l,{opacity:0,scale:.5}),c&&e.set(c,{height:"auto"}),a&&e.set(a,{rotation:-10}),p&&e.set(p,{rotation:-10}),y&&e.set(y,{scale:.8,opacity:0}),T&&e.set(T,{y:50,opacity:0,scale:.95}),w&&e.set(w,{y:0,opacity:0,scale:.95}),f.length&&e.set(f,{opacity:0}),g&&e.set(g,{opacity:0}),t.addLabel("grid-in","start+=0.5"),n.length&&(t.to(n,{scale:1,y:0,ease:"power2.out",duration:()=>e.utils.random(.4,.8),stagger:{amount:.1,from:"random"},immediateRender:!1},"grid-in"),t.to(n,{opacity:1,ease:"power2.out",duration:()=>e.utils.random(.2,.4),stagger:{amount:.1,from:"random"},immediateRender:!1},"grid-in")),c&&t.to(c,{height:"100%",ease:"power2.out",duration:.5,immediateRender:!1},"grid-in"),r&&t.to(r,{opacity:1,scale:1,ease:"power2.out",duration:.3,immediateRender:!1},"grid-in"),i&&(t.to(i,{scale:1,ease:"power2.out",duration:.3,immediateRender:!1},"grid-in"),t.to(i,{opacity:1,ease:"power2.out",duration:.1,immediateRender:!1},"grid-in+=0.1")),l&&(t.fromTo(l,{opacity:0},{opacity:1,ease:"power2.out",duration:.2,immediateRender:!1},"grid-in+=0.1"),t.fromTo(l,{scale:.5},{scale:1,ease:"power2.out",duration:.5,immediateRender:!1},"grid-in+=0.2")),t.to(d,{opacity:1,ease:"power2.out",duration:.3,immediateRender:!1},"grid-in+=0.3"),a&&p&&y&&(t.to(y,{opacity:1,scale:1,duration:.1,ease:"power2.out",immediateRender:!1},"grid-in+=0.4"),t.to(a,{rotation:30,duration:.5,ease:"power2.out",immediateRender:!1},"grid-in+=0.4"),t.to(p,{rotation:30,duration:.5,ease:"power2.out",immediateRender:!1},"grid-in+=0.4")),T&&t.to(T,{y:0,opacity:1,scale:1,duration:.2,ease:"power2.out",immediateRender:!1},"grid-in+=0.35"),w&&t.to(w,{y:0,opacity:1,scale:1,duration:.2,ease:"power2.out",immediateRender:!1},"grid-in+=0.45"),u&&t.to(u,{opacity:1,duration:.1,ease:"power2.out",immediateRender:!1},"grid-in+=0.4"),f.length&&t.to(f,{opacity:1,duration:.2,ease:"power2.out",immediateRender:!1},"grid-in+=0.4"),g&&t.to(g,{opacity:1,duration:.2,ease:"power2.out",immediateRender:!1},"grid-in+=0.4"),n.length&&t.to(n,{opacity:.8,ease:"power2.out",duration:.2,stagger:{amount:.1,from:"random"},immediateRender:!1},"grid-in+=0.30")}typeof window<"u"&&(window.addEventListener("DOMContentLoaded",()=>{j()}),window.addEventListener("load",()=>{let e=h();if(!e)return;let o=window.ScrollTrigger||e.ScrollTrigger;o&&o.refresh&&o.refresh()}));})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/home/hero-animation/scroll.ts"],
4
+ "sourcesContent": ["// animations/homeScroll.ts\n\n/**\n * Uses GSAP + ScrollTrigger from window (global scripts).\n * No imports. Ensures ScrollTrigger is registered on the SAME gsap instance.\n */\n\ndeclare global {\n interface Window {\n gsap?: any;\n ScrollTrigger?: any;\n }\n}\n\n/**\n * Helper: filter out null/undefined so GSAP never receives them.\n */\nconst isEl = <T extends Element>(v: T | null | undefined): v is T => Boolean(v);\n\n/**\n * Ensure global gsap + ScrollTrigger exist and are registered.\n * Returns the gsap instance or null.\n */\nfunction getGlobalGsap(): any | null {\n if (typeof window === \"undefined\") return null;\n\n const gsap = window.gsap;\n if (!gsap) {\n console.warn(\"window.gsap not found. Make sure GSAP is loaded globally before this code runs.\");\n return null;\n }\n\n const ScrollTrigger = window.ScrollTrigger || gsap.ScrollTrigger;\n if (!ScrollTrigger) {\n console.warn(\n \"ScrollTrigger not found on window (or gsap). Make sure the ScrollTrigger plugin script is loaded globally.\"\n );\n return null;\n }\n\n // Register once (safe to call multiple times)\n gsap.registerPlugin(ScrollTrigger);\n return gsap;\n}\n\n/* ============================================================================\n * initHomeScrollAnimation\n * ==========================================================================*/\nexport function initHomeScrollAnimation(): void {\n const gsap = getGlobalGsap();\n if (!gsap) return;\n\n /* --------------------------------- Guards -------------------------------- */\n const section = document.getElementById(\"home-scroll\");\n if (!section) return;\n\n /* ------------------------------ Hero Elements ---------------------------- */\n const title = section.querySelector<HTMLElement>(\n \"[pulse-animation-element='hero-title']\"\n );\n const description = section.querySelector<HTMLElement>(\n \"[pulse-animation-element='hero-description']\"\n );\n const button = section.querySelector<HTMLElement>(\n \"[pulse-animation-element='hero-button']\"\n );\n const blurs = Array.from(\n section.querySelectorAll<HTMLElement>(\"[pulse-animation-element='hero-blur']\")\n );\n\n const blurOverlay = section.querySelector<HTMLElement>(\n \"[pulse-animation-element='hero-blur-overlay']\"\n );\n const canvas3d = section.querySelector<HTMLElement>(\"#canvas3d\");\n\n /* ------------------------------ Grid Elements ---------------------------- */\n const Col1Row1Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-1-row-1-item-1\"]'\n );\n const Col1Row1Item2 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-1-row-1-item-2\"]'\n );\n const Col1Row2Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-1-row-2-item-1\"]'\n );\n const Col1Row2Item2 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-1-row-2-item-2\"]'\n );\n const Col1Row3Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-1-row-3-item-1\"]'\n );\n const Col2Row1Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-2-row-1-item-1\"]'\n );\n const Col2Row1Item2 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-2-row-1-item-2\"]'\n );\n const Col2Row2Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-2-row-2-item-1\"]'\n );\n const col2Row3Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-2-row-3-item-1\"]'\n );\n const Col3Row1Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-1-item-1\"]'\n );\n const Col3Row2Col1Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-2-col-1-item-1\"]'\n );\n const Col3Row2Col1Item2 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-2-col-1-item-2\"]'\n );\n const Col3Row2Col2Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-2-col-2-item-1\"]'\n );\n const Col3Row2Col2Item2 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-2-col-2-item-2\"]'\n );\n const Col3Row3Item1 = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"col-3-row-3-item-1\"]'\n );\n\n const canvasElement = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"canvas\"]'\n );\n const radialGradientWrapper = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"radial-gradient-wrapper\"]'\n );\n\n // collect grid items (filter out nulls)\n const gridItems = [\n Col1Row1Item1,\n Col1Row1Item2,\n Col1Row2Item1,\n Col1Row2Item2,\n Col1Row3Item1,\n Col2Row1Item1,\n Col2Row1Item2,\n // Col2Row2Item1, // intentionally not part of gridItems in your original code\n col2Row3Item1,\n Col3Row1Item1,\n Col3Row2Col1Item1,\n Col3Row2Col1Item2,\n Col3Row2Col2Item1,\n Col3Row2Col2Item2,\n Col3Row3Item1,\n ].filter(isEl);\n\n /* ----------------------------- Player Elements --------------------------- */\n const playerPositionElement = Col2Row2Item1;\n\n const playerInnerElements = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"player-inner-elements\"]'\n );\n const playerRadiusRect = document.querySelector<SVGRectElement>(\n '[pulse-animation-element=\"player-radius-rect\"]'\n );\n const lineArt = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"line-art\"]'\n );\n\n if (!playerRadiusRect) {\n console.warn(\"Player radius rect not found\");\n return;\n }\n const length = playerRadiusRect.getTotalLength();\n\n const playerHandle = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"player-handle\"]'\n );\n const playerHandlerTail = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"player-handle-tail\"]'\n );\n const playerHandleWrapper = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"handle-wrapper\"]'\n );\n\n const vignette = Array.from(\n document.querySelectorAll<HTMLElement>('[pulse-animation-element=\"vignette\"]')\n );\n\n const torchWrapper = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"torch-wrapper\"]'\n );\n const torch = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"torch\"]'\n );\n\n const launchButton = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"launch-button\"]'\n );\n const launchTitle = document.querySelector<HTMLElement>(\n '[pulse-animation-element=\"launch-title\"]'\n );\n\n console.log(\"playerHandle:\", playerHandle);\n console.log(\"Player position element:\", playerPositionElement);\n\n /* ------------------------------ Timeline Setup --------------------------- */\n const tl = gsap.timeline({\n defaults: { ease: \"power2.out\", duration: 1 },\n scrollTrigger: {\n trigger: section,\n start: \"top bottom\",\n end: \"bottom top\",\n scrub: true,\n invalidateOnRefresh: true,\n // markers: true,\n },\n });\n\n /* ------------------------------- Initial Sets ---------------------------- */\n if (blurs.length) gsap.set(blurs, { yPercent: 32, opacity: 1 });\n if (blurOverlay) gsap.set(blurOverlay, { y: 0, opacity: 1 });\n if (radialGradientWrapper) gsap.set(radialGradientWrapper, { opacity: 0 });\n\n /* --------------------------- Start: Hero Out & Blur ---------------------- */\n tl.addLabel(\"start\", 0);\n\n if (title) {\n tl.fromTo(\n title,\n { y: 1100 },\n { y: -400, ease: \"power2.out\", duration: 1.2, immediateRender: false },\n \"start+=0.1\"\n );\n }\n\n if (description) {\n tl.fromTo(\n description,\n { y: 680 },\n { y: -400, ease: \"power2.out\", duration: 1.2, immediateRender: false },\n \"start+=0.2\"\n );\n }\n\n if (button) {\n tl.fromTo(\n button,\n { y: 440 },\n { y: -480, ease: \"power2.out\", duration: 1.2, immediateRender: false },\n \"start+=0.3\"\n );\n }\n\n if (blurs.length) {\n tl.to(\n blurs,\n {\n yPercent: -100,\n opacity: 0,\n ease: \"power2.out\",\n duration: 1.2,\n delay: 0.2,\n immediateRender: false,\n },\n \"start+=0.2\"\n );\n }\n\n if (blurOverlay) {\n tl.to(\n blurOverlay,\n {\n y: -1200,\n ease: \"power2.out\",\n duration: 1,\n delay: 0.2,\n immediateRender: false,\n },\n \"start+=0.2\"\n );\n }\n\n const heroTargets = [title, description, button].filter(isEl);\n if (heroTargets.length) {\n tl.to(\n heroTargets,\n {\n scale: 0.95,\n duration: 0.8,\n ease: \"power2.out\",\n immediateRender: false,\n },\n \"start+=0.4\"\n );\n\n tl.to(\n heroTargets,\n {\n opacity: 0,\n duration: 0.2,\n delay: 0.2,\n ease: \"power2.out\",\n immediateRender: false,\n },\n \"start+=0.35\"\n );\n }\n\n /* ----------------------------- Grid: Initial ----------------------------- */\n if (gridItems.length) {\n gsap.set(gridItems, {\n opacity: 0,\n scale: () => gsap.utils.random(0.5, 0.95),\n y: () => gsap.utils.random(40, 60),\n });\n }\n\n if (playerPositionElement) gsap.set(playerPositionElement, { opacity: 1, scale: 0.5 });\n if (playerInnerElements) gsap.set(playerInnerElements, { scale: 0.8 });\n gsap.set(playerRadiusRect, { opacity: 0 });\n if (lineArt) gsap.set(lineArt, { opacity: 0, scale: 0.5 });\n if (canvas3d) gsap.set(canvas3d, { height: \"auto\" });\n if (playerHandle) gsap.set(playerHandle, { rotation: -10 });\n if (playerHandlerTail) gsap.set(playerHandlerTail, { rotation: -10 });\n if (playerHandleWrapper) gsap.set(playerHandleWrapper, { scale: 0.8, opacity: 0 });\n if (launchTitle) gsap.set(launchTitle, { y: 50, opacity: 0, scale: 0.95 });\n if (launchButton) gsap.set(launchButton, { y: 0, opacity: 0, scale: 0.95 });\n if (vignette.length) gsap.set(vignette, { opacity: 0 });\n if (torch) gsap.set(torch, { opacity: 0 });\n\n /* ------------------------------- Grid: In -------------------------------- */\n tl.addLabel(\"grid-in\", \"start+=0.5\");\n\n if (gridItems.length) {\n tl.to(\n gridItems,\n {\n scale: 1,\n y: 0,\n ease: \"power2.out\",\n duration: () => gsap.utils.random(0.4, 0.8),\n stagger: { amount: 0.1, from: \"random\" },\n immediateRender: false,\n },\n \"grid-in\"\n );\n\n tl.to(\n gridItems,\n {\n opacity: 1,\n ease: \"power2.out\",\n duration: () => gsap.utils.random(0.2, 0.4),\n stagger: { amount: 0.1, from: \"random\" },\n immediateRender: false,\n },\n \"grid-in\"\n );\n }\n\n if (canvas3d) {\n tl.to(\n canvas3d,\n { height: \"100%\", ease: \"power2.out\", duration: 0.5, immediateRender: false },\n \"grid-in\"\n );\n }\n\n if (playerPositionElement) {\n tl.to(\n playerPositionElement,\n { opacity: 1, scale: 1, ease: \"power2.out\", duration: 0.3, immediateRender: false },\n \"grid-in\"\n );\n }\n\n if (playerInnerElements) {\n tl.to(\n playerInnerElements,\n { scale: 1, ease: \"power2.out\", duration: 0.3, immediateRender: false },\n \"grid-in\"\n );\n tl.to(\n playerInnerElements,\n { opacity: 1, ease: \"power2.out\", duration: 0.1, immediateRender: false },\n \"grid-in+=0.1\"\n );\n }\n\n if (lineArt) {\n tl.fromTo(\n lineArt,\n { opacity: 0 },\n { opacity: 1, ease: \"power2.out\", duration: 0.2, immediateRender: false },\n \"grid-in+=0.1\"\n );\n\n tl.fromTo(\n lineArt,\n { scale: 0.5 },\n { scale: 1, ease: \"power2.out\", duration: 0.5, immediateRender: false },\n \"grid-in+=0.2\"\n );\n }\n\n tl.to(\n playerRadiusRect,\n { opacity: 1, ease: \"power2.out\", duration: 0.3, immediateRender: false },\n \"grid-in+=0.3\"\n );\n\n if (playerHandle && playerHandlerTail && playerHandleWrapper) {\n tl.to(\n playerHandleWrapper,\n { opacity: 1, scale: 1, duration: 0.1, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n tl.to(\n playerHandle,\n { rotation: 30, duration: 0.5, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n tl.to(\n playerHandlerTail,\n { rotation: 30, duration: 0.5, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n }\n\n if (launchTitle) {\n tl.to(\n launchTitle,\n { y: 0, opacity: 1, scale: 1, duration: 0.2, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.35\"\n );\n }\n\n if (launchButton) {\n tl.to(\n launchButton,\n { y: 0, opacity: 1, scale: 1, duration: 0.2, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.45\"\n );\n }\n\n if (radialGradientWrapper) {\n tl.to(\n radialGradientWrapper,\n { opacity: 1, duration: 0.1, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n }\n\n if (vignette.length) {\n tl.to(\n vignette,\n { opacity: 1, duration: 0.2, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n }\n\n if (torchWrapper) {\n // kept commented out as in your original\n // tl.to(torchWrapper, { opacity: 1, duration: 0.2, ease: \"power2.out\", immediateRender: false }, \"grid-in+=0.4\");\n }\n\n if (torch) {\n tl.to(\n torch,\n { opacity: 1, duration: 0.2, ease: \"power2.out\", immediateRender: false },\n \"grid-in+=0.4\"\n );\n }\n\n if (gridItems.length) {\n tl.to(\n gridItems,\n {\n opacity: 0.8,\n ease: \"power2.out\",\n duration: 0.2,\n stagger: { amount: 0.1, from: \"random\" },\n immediateRender: false,\n },\n \"grid-in+=0.30\"\n );\n }\n}\n\n/* --------------------------------- Auto-Init ------------------------------- */\nif (typeof window !== \"undefined\") {\n window.addEventListener(\"DOMContentLoaded\", () => {\n initHomeScrollAnimation();\n });\n\n window.addEventListener(\"load\", () => {\n const gsap = getGlobalGsap();\n if (!gsap) return;\n\n const ScrollTrigger = window.ScrollTrigger || gsap.ScrollTrigger;\n if (ScrollTrigger && ScrollTrigger.refresh) ScrollTrigger.refresh();\n });\n}"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -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)}}));})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/home/horizontal-scroll.ts"],
4
+ "sourcesContent": ["// horizontal-scroll.ts\n// Requires GSAP and ScrollTrigger loaded as global scripts BEFORE this file\n\ndeclare global {\n interface Window {\n gsap?: any;\n ScrollTrigger?: any;\n }\n}\n\nfunction waitForGSAPAndScrollTrigger(): Promise<{ gsap: any; ScrollTrigger: any }> {\n return new Promise((resolve, reject) => {\n const maxAttempts = 50; // 5 seconds with 100ms checks\n let attempts = 0;\n\n const check = () => {\n attempts++;\n const gsap = window.gsap;\n const ScrollTrigger = window.ScrollTrigger;\n\n if (gsap && ScrollTrigger) {\n resolve({ gsap, ScrollTrigger });\n } else if (attempts >= maxAttempts) {\n reject(\n new Error(\n \"GSAP or ScrollTrigger failed to load. Ensure they are loaded as <script> tags before this module.\"\n )\n );\n } else {\n setTimeout(check, 100);\n }\n };\n\n check();\n });\n}\n\nasync function ensureScrollTriggerRegistered(): Promise<boolean> {\n if (typeof window === \"undefined\") return false;\n\n try {\n const { gsap, ScrollTrigger } = await waitForGSAPAndScrollTrigger();\n\n // Check if already registered\n const isAlreadyRegistered = gsap.plugins?.scrollTrigger !== undefined;\n\n if (!isAlreadyRegistered) {\n gsap.registerPlugin(ScrollTrigger);\n console.log(\"\u2713 ScrollTrigger registered successfully\");\n } else {\n console.log(\"\u2713 ScrollTrigger already registered\");\n }\n\n return true;\n } catch (err) {\n console.error(\"Failed to register ScrollTrigger:\", err);\n return false;\n }\n}\n\nasync function initHorizontalScroll(): Promise<void> {\n // Wait for and register ScrollTrigger\n const registered = await ensureScrollTriggerRegistered();\n if (!registered) return;\n\n const gsap = window.gsap!;\n const mm = gsap.matchMedia?.();\n\n if (!mm) {\n console.error(\"GSAP matchMedia() is unavailable.\");\n return;\n }\n\n mm.add(\"(min-width: 992px)\", () => {\n const sections = document.querySelectorAll<HTMLElement>(\n \"[horizontal-scroll-section]\"\n );\n\n if (sections.length === 0) {\n console.warn(\"No elements found with [horizontal-scroll-section]\");\n return;\n }\n\n sections.forEach((section) => {\n const wrapper = section.querySelector<HTMLElement>(\n \"[horizontal-scroll-wrapper]\"\n );\n\n if (!wrapper) {\n console.warn(\"Missing [horizontal-scroll-wrapper] inside:\", section);\n return;\n }\n\n const endDistance = () => {\n const dist = wrapper.scrollWidth - window.innerWidth;\n return Math.max(dist, 0);\n };\n\n if (endDistance() <= 0) {\n console.warn(\n \"Wrapper content is not wider than viewport. No scroll needed.\",\n wrapper\n );\n return;\n }\n\n // Kill any existing trigger to prevent duplicates\n const triggerId = `hs-${wrapper.dataset.stId || Math.random().toString(16).slice(2)}`;\n const existing = gsap.getById?.(triggerId);\n if (existing) {\n existing.kill();\n }\n wrapper.dataset.stId = triggerId;\n\n // Animate horizontal scroll\n gsap.to(wrapper, {\n x: () => -endDistance(),\n ease: \"none\",\n scrollTrigger: {\n id: triggerId,\n trigger: section,\n start: \"top top\",\n end: () => `+=${endDistance()}`,\n pin: true,\n scrub: 1,\n invalidateOnRefresh: true,\n markers: false, // Set to true for debugging\n onUpdate: (self: any) => {\n // Optional: Add custom logic on scroll\n },\n },\n });\n });\n\n // Cleanup when media query no longer matches\n return () => {\n try {\n gsap.getChildren?.().forEach((trigger: any) => {\n if (trigger.id?.startsWith(\"hs-\")) {\n trigger.kill();\n }\n });\n } catch {\n // Silently fail on cleanup\n }\n };\n });\n}\n\n/* --------------------------------- Auto-Init ------------------------------- */\nif (typeof window !== \"undefined\") {\n // Initialize when DOM is ready\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", async () => {\n try {\n await initHorizontalScroll();\n } catch (err) {\n console.error(\"Error initializing horizontal scroll:\", err);\n }\n });\n } else {\n // DOM already loaded\n initHorizontalScroll().catch((err) => {\n console.error(\"Error initializing horizontal scroll:\", err);\n });\n }\n\n // Refresh on window load to ensure accurate measurements\n window.addEventListener(\"load\", () => {\n try {\n if (window.ScrollTrigger?.refresh) {\n window.ScrollTrigger.refresh();\n }\n } catch (err) {\n console.error(\"Error refreshing ScrollTrigger:\", err);\n }\n });\n}\n\nexport { initHorizontalScroll };"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var s="influur-tablink",b="influur-tabcontent",m="influur-tablink-active",h="influur-tablink-fill";function _(n){return!!n&&n.nodeType===Node.ELEMENT_NODE}function a(n,t){let l=n.getAttribute(t);if(l===null)return null;let o=l.trim();return o.length>0?o:null}function g(n,t=document){return Array.from(t.querySelectorAll(n)).filter(_)}function T(n){for(let t of n)t.style.display="none"}function F(n){for(let t of n)t.setAttribute(m,"false")}function I(n){n.style.display="block"}function O(n,t){for(let l of t){let o=a(l,b);if(o!==null&&o===n)return l}return null}function V(n,t){for(let l of t){let o=a(l,s);if(o!==null&&o===n)return l}return null}function y(n){return n.querySelector(`[${h}]`)??null}function $(n){for(let t of n){let l=y(t);l&&(l.style.width="0%")}}document.addEventListener("DOMContentLoaded",()=>{let n=g(`[${s}]`),t=g(`[${b}]`);if(t.length===0){console.warn("No tab contents found.");return}if(n.length===0){console.warn("No tab links found. Hiding all tab contents."),T(t);return}let l=0,o=null,u=null;function M(){u!==null&&(cancelAnimationFrame(u),u=null)}function H(e){M(),$(n);let r=y(e);if(!r){console.warn(`Active tablink is missing ${h} child`,e);return}let i=Math.max(0,4e3),f=performance.now(),E=k=>{let N=k-f,L=i===0?1:Math.min(1,N/i);r.style.width=`${(L*100).toFixed(4)}%`,e.getAttribute(m)==="true"&&L<1?u=requestAnimationFrame(E):u=null};r.style.width="0%",u=requestAnimationFrame(E)}let c=e=>{if(typeof e!="string"||e.trim().length===0){console.warn("changeTab called with invalid attributeValue:",e);return}T(t),F(n);let r=O(e,t),i=V(e,n);if(!r||!i){console.warn(`No matching pair found for value "${e}"`);return}I(r),i.setAttribute(m,"true");let f=n.indexOf(i);f>=0&&(l=f),H(i)};window.changeTab=c;for(let e of n)e.addEventListener("click",r=>{r.target?.closest("a")&&r.preventDefault();let i=a(e,s);if(i===null){console.warn(`Tablink missing valid ${s} value`,e);return}c(i),p()});let d=a(n[0],s);if(d===null){console.warn(`First tablink missing ${s} value. Hiding all tab contents.`),T(t);return}c(d);function v(){if(n.length===0)return;l=(l+1)%n.length;let e=a(n[l],s);e&&c(e)}function A(){w(),o=window.setInterval(v,4e3)}function w(){o!==null&&(clearInterval(o),o=null)}function p(){A()}A()});})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/home/tabs.ts"],
4
+ "sourcesContent": ["type TabValue = string;\n\nconst TABLINK_ATTR = \"influur-tablink\";\nconst TABCONTENT_ATTR = \"influur-tabcontent\";\nconst ACTIVE_ATTR = \"influur-tablink-active\";\nconst FILL_ATTR = \"influur-tablink-fill\";\n\n// autoplay interval in milliseconds\nconst TAB_AUTOPLAY_INTERVAL = 4000;\n\nfunction isHTMLElement(node: Element | null): node is HTMLElement {\n return !!node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction getAttr(el: Element, attr: string): string | null {\n const val = el.getAttribute(attr);\n if (val === null) return null;\n const trimmed = val.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction queryAllHTMLElements(selector: string, root: ParentNode = document): HTMLElement[] {\n return Array.from(root.querySelectorAll(selector)).filter(isHTMLElement);\n}\n\nfunction hideAllContents(contents: HTMLElement[]) {\n for (const c of contents) {\n c.style.display = \"none\";\n }\n}\n\nfunction deactivateAllLinks(tablinks: HTMLElement[]) {\n for (const l of tablinks) {\n l.setAttribute(ACTIVE_ATTR, \"false\");\n }\n}\n\nfunction showContent(el: HTMLElement) {\n el.style.display = \"block\";\n}\n\nfunction findContentByValue(value: TabValue, contents: HTMLElement[]): HTMLElement | null {\n for (const c of contents) {\n const v = getAttr(c, TABCONTENT_ATTR);\n if (v !== null && v === value) return c;\n }\n return null;\n}\n\nfunction findLinkByValue(value: TabValue, tablinks: HTMLElement[]): HTMLElement | null {\n for (const l of tablinks) {\n const v = getAttr(l, TABLINK_ATTR);\n if (v !== null && v === value) return l;\n }\n return null;\n}\n\nfunction getFillEl(link: HTMLElement): HTMLElement | null {\n const el = link.querySelector<HTMLElement>(`[${FILL_ATTR}]`);\n return el ?? null;\n}\n\nfunction resetAllFills(tablinks: HTMLElement[]) {\n for (const l of tablinks) {\n const fill = getFillEl(l);\n if (fill) fill.style.width = \"0%\";\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const tablinks = queryAllHTMLElements(`[${TABLINK_ATTR}]`);\n const contents = queryAllHTMLElements(`[${TABCONTENT_ATTR}]`);\n\n if (contents.length === 0) {\n console.warn(\"No tab contents found.\");\n return;\n }\n if (tablinks.length === 0) {\n console.warn(\"No tab links found. Hiding all tab contents.\");\n hideAllContents(contents);\n return;\n }\n\n let currentIndex = 0;\n let autoplayTimer: number | null = null;\n let rafId: number | null = null;\n\n function cancelFillAnimation() {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n\n // Animate the fill element inside the active link from 0 to 100 percent over TAB_AUTOPLAY_INTERVAL\n function startFillAnimation(activeLink: HTMLElement) {\n cancelFillAnimation();\n resetAllFills(tablinks);\n\n const fill = getFillEl(activeLink);\n if (!fill) {\n console.warn(`Active tablink is missing ${FILL_ATTR} child`, activeLink);\n return;\n }\n\n const duration = Math.max(0, TAB_AUTOPLAY_INTERVAL);\n const start = performance.now();\n\n const tick = (now: number) => {\n const elapsed = now - start;\n const progress = duration === 0 ? 1 : Math.min(1, elapsed / duration);\n fill.style.width = `${(progress * 100).toFixed(4)}%`;\n\n if (activeLink.getAttribute(ACTIVE_ATTR) === \"true\" && progress < 1) {\n rafId = requestAnimationFrame(tick);\n } else {\n rafId = null;\n }\n };\n\n fill.style.width = \"0%\";\n rafId = requestAnimationFrame(tick);\n }\n\n const changeTab = (attributeValue: TabValue): void => {\n if (typeof attributeValue !== \"string\" || attributeValue.trim().length === 0) {\n console.warn(\"changeTab called with invalid attributeValue:\", attributeValue);\n return;\n }\n\n hideAllContents(contents);\n deactivateAllLinks(tablinks);\n\n const matchContent = findContentByValue(attributeValue, contents);\n const matchLink = findLinkByValue(attributeValue, tablinks);\n\n if (!matchContent || !matchLink) {\n console.warn(`No matching pair found for value \"${attributeValue}\"`);\n return;\n }\n\n showContent(matchContent);\n matchLink.setAttribute(ACTIVE_ATTR, \"true\");\n\n const index = tablinks.indexOf(matchLink);\n if (index >= 0) currentIndex = index;\n\n startFillAnimation(matchLink);\n };\n\n (window as unknown as { changeTab: (v: TabValue) => void }).changeTab = changeTab;\n\n for (const link of tablinks) {\n link.addEventListener(\"click\", (ev) => {\n if ((ev.target as HTMLElement)?.closest(\"a\")) ev.preventDefault();\n const val = getAttr(link, TABLINK_ATTR);\n if (val === null) {\n console.warn(`Tablink missing valid ${TABLINK_ATTR} value`, link);\n return;\n }\n changeTab(val);\n restartAutoplay();\n });\n }\n\n const firstVal = getAttr(tablinks[0], TABLINK_ATTR);\n if (firstVal === null) {\n console.warn(`First tablink missing ${TABLINK_ATTR} value. Hiding all tab contents.`);\n hideAllContents(contents);\n return;\n }\n\n changeTab(firstVal); // ensures initial fill animation starts\n\n function autoplayStep() {\n if (tablinks.length === 0) return;\n currentIndex = (currentIndex + 1) % tablinks.length;\n const val = getAttr(tablinks[currentIndex], TABLINK_ATTR);\n if (val) changeTab(val);\n }\n\n function startAutoplay() {\n stopAutoplayTimerOnly();\n autoplayTimer = window.setInterval(autoplayStep, TAB_AUTOPLAY_INTERVAL);\n }\n\n function stopAutoplayTimerOnly() {\n if (autoplayTimer !== null) {\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n }\n }\n\n function restartAutoplay() {\n // do not cancel fill animation here\n startAutoplay();\n }\n\n startAutoplay();\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }