@fynd-design-engineering/fynd-one-v2 3.3.13 → 3.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/accordians/dropdown.js.map +2 -2
  2. package/dist/accordians/index.js.map +2 -2
  3. package/dist/cms-listing/index.js.map +2 -2
  4. package/dist/filters/clear-search.js.map +2 -2
  5. package/dist/filters/show-count.js.map +2 -2
  6. package/dist/form/cs-gated-redirection.js.map +2 -2
  7. package/dist/form/download-file.js.map +2 -2
  8. package/dist/form/handler.js.map +2 -2
  9. package/dist/form/phone-validator.js.map +2 -2
  10. package/dist/global/anchor-scroll.js.map +2 -2
  11. package/dist/global/loader.js.map +2 -2
  12. package/dist/global/miscellaneous.js.map +2 -2
  13. package/dist/global/number-count.js.map +2 -2
  14. package/dist/global/popup-video.js.map +2 -2
  15. package/dist/home/index.js.map +2 -2
  16. package/dist/marquee/index.js.map +2 -2
  17. package/dist/marquee/marquee-swiper.js.map +2 -2
  18. package/dist/navigation/announcement/index.js.map +2 -2
  19. package/dist/navigation/context-menu/index.js.map +2 -2
  20. package/dist/navigation/desktop/index.js.map +2 -2
  21. package/dist/navigation/initialization.js +1 -1
  22. package/dist/navigation/initialization.js.map +2 -2
  23. package/dist/navigation/main.js.map +2 -2
  24. package/dist/navigation/mobile/index.js.map +2 -2
  25. package/dist/navigation/scroll/index.js.map +2 -2
  26. package/dist/navigation/secondary-navigation/index.js.map +2 -2
  27. package/dist/navigation/temp.css +1 -1
  28. package/dist/navigation/temp.css.map +2 -2
  29. package/dist/others/geolocation.js.map +2 -2
  30. package/dist/others/hero-aniamtion.js.map +2 -2
  31. package/dist/others/hero-india-animation-2.js.map +2 -2
  32. package/dist/others/hero-india-animation.js.map +2 -2
  33. package/dist/posthog-and-ga/attributes.js.map +2 -2
  34. package/dist/posthog-and-ga/main.js.map +2 -2
  35. package/dist/progressive-scroll/index.js.map +2 -2
  36. package/dist/quick-fix/reload.js.map +2 -2
  37. package/dist/seo/schema.js.map +2 -2
  38. package/dist/test/sample.js.map +2 -2
  39. package/dist/testimonials/index.js.map +2 -2
  40. package/dist/timeline/index.js.map +2 -2
  41. package/dist/tracking/fill-form-fields.js.map +2 -2
  42. package/dist/tracking/form-tracker.js.map +2 -2
  43. package/dist/tracking/page-categories.js.map +2 -2
  44. package/dist/tracking/user-journey.js.map +2 -2
  45. package/dist/tracking/utm-links.js.map +2 -2
  46. package/dist/utils/sample.js.map +2 -2
  47. package/dist/validations/localhost.js.map +2 -2
  48. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/global/loader.ts"],
4
- "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "interface LoadingStage {\n progress: number;\n message: string;\n delay: number;\n}\n\n// Page Loading Progress System\nclass PageLoader {\n private progressBar: HTMLElement | null = null;\n private progressText: HTMLElement | null = null;\n private loadingOverlay: HTMLElement | null = null;\n private currentProgress: number = 0;\n private loaderFill: HTMLElement | null = null;\n private clickLoader: HTMLElement | null = null;\n\n constructor() {\n this.init();\n }\n\n private init(): void {\n this.createLoader();\n this.interceptLinks();\n this.monitorPageLoad();\n }\n\n private createLoader(): void {\n // Find existing loader or create overlay\n this.loaderFill = document.querySelector(\".loader-fill[loader-fill]\");\n this.clickLoader = document.querySelector(\".click-loader\");\n\n if (!this.loaderFill) {\n return;\n }\n\n // Create overlay if click-loader isn't already positioned fixed\n if (\n this.clickLoader &&\n !this.clickLoader.style.position &&\n getComputedStyle(this.clickLoader).position !== \"fixed\"\n ) {\n this.loadingOverlay = document.createElement(\"div\");\n this.loadingOverlay.id = \"page-loading-overlay\";\n this.loadingOverlay.innerHTML = this.clickLoader.outerHTML;\n\n // Add overlay styles\n const styles = `\n <style>\n #page-loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.95);\n z-index: 9999;\n display: none;\n backdrop-filter: blur(5px);\n }\n\n #page-loading-overlay .click-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 300px;\n height: 5px;\n }\n\n .click-loader .loader-fill {\n height: 100%;\n width: 0%;\n border-radius: 4px;\n }\n \n </style>\n `;\n\n document.head.insertAdjacentHTML(\"beforeend\", styles);\n document.body.appendChild(this.loadingOverlay);\n\n // Update reference to the new loader in overlay\n this.loaderFill = this.loadingOverlay.querySelector(\n \".loader-fill[loader-fill]\"\n );\n } else {\n // Use existing loader, just hide it initially\n if (this.clickLoader) {\n this.clickLoader.style.display = \"none\";\n }\n }\n\n // Initialize loader fill width\n if (this.loaderFill) {\n this.loaderFill.style.width = \"0%\";\n }\n }\n\n private interceptLinks(): void {\n // Intercept all link clicks\n document.addEventListener(\"click\", (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const link = target.closest(\"a[href]\") as HTMLAnchorElement;\n if (link && !link.hasAttribute(\"no-loader\")) {\n const href = link.getAttribute(\"href\");\n\n // Skip external links, anchors, and javascript: links\n if (\n href &&\n (href.startsWith(\"http\") ||\n href.startsWith(\"#\") ||\n href.startsWith(\"javascript:\"))\n ) {\n return;\n }\n\n e.preventDefault();\n if (href) {\n this.navigateWithProgress(href);\n }\n }\n });\n }\n\n public navigateWithProgress(url: string): void {\n this.showLoader();\n this.simulateProgress(url);\n }\n\n private showLoader(): void {\n if (this.loadingOverlay) {\n this.loadingOverlay.style.display = \"block\";\n } else if (this.clickLoader) {\n this.clickLoader.style.display = \"block\";\n }\n this.currentProgress = 0;\n this.updateProgress(0, \"Initializing...\");\n }\n\n private hideLoader(): void {\n if (this.loadingOverlay) {\n this.loadingOverlay.style.display = \"none\";\n } else if (this.clickLoader) {\n this.clickLoader.style.display = \"none\";\n }\n }\n\n private updateProgress(percent: number, message: string = \"\"): void {\n this.currentProgress = Math.min(percent, 100);\n\n // Update your loader-fill div width\n if (this.loaderFill) {\n this.loaderFill.style.width = this.currentProgress + \"%\";\n }\n\n const displayMessage =\n message || `Loading... ${Math.round(this.currentProgress)}%`;\n }\n\n private simulateProgress(url: string): void {\n const stages: LoadingStage[] = [\n { progress: 10, message: \"Preparing request...\", delay: 100 },\n { progress: 25, message: \"Connecting to server...\", delay: 150 },\n { progress: 40, message: \"Sending request...\", delay: 100 },\n { progress: 60, message: \"Receiving response...\", delay: 150 },\n { progress: 80, message: \"Processing content...\", delay: 50 },\n { progress: 95, message: \"Finalizing...\", delay: 50 },\n { progress: 100, message: \"Complete!\", delay: 100 },\n ];\n\n let currentStage = 0;\n\n const processStage = (): void => {\n if (currentStage < stages.length) {\n const stage = stages[currentStage];\n this.updateProgress(stage.progress, stage.message);\n\n setTimeout(() => {\n currentStage++;\n processStage();\n }, stage.delay);\n } else {\n // Navigation complete\n setTimeout(() => {\n window.location.href = url;\n }, 200);\n }\n };\n\n processStage();\n }\n\n // Monitor actual page loading events\n private monitorPageLoad(): void {\n // Track when page starts loading\n window.addEventListener(\"beforeunload\", () => {\n // Page unloading\n });\n\n // Track when new page loads\n window.addEventListener(\"load\", () => {\n this.hideLoader();\n });\n\n // Track DOM content loaded\n document.addEventListener(\"DOMContentLoaded\", () => {\n // DOM content loaded\n });\n\n // Track navigation timing (if supported)\n if (\"performance\" in window) {\n window.addEventListener(\"load\", () => {\n setTimeout(() => {\n const timing = performance.timing;\n const loadTime = timing.loadEventEnd - timing.navigationStart;\n\n // Detailed timing breakdown available but not logged\n const dnsLookupTime = timing.domainLookupEnd - timing.domainLookupStart;\n const tcpConnectionTime = timing.connectEnd - timing.connectStart;\n const requestTime = timing.responseStart - timing.requestStart;\n const responseTime = timing.responseEnd - timing.responseStart;\n const domProcessingTime = timing.domComplete - timing.domLoading;\n }, 100);\n });\n }\n }\n}\n\n// Extend Window interface for TypeScript\ndeclare global {\n interface Window {\n showPageLoader?: (url: string) => void;\n pageLoaderInstance?: PageLoader;\n }\n}\n\n// Initialize the page loader when DOM is ready\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => {\n new PageLoader();\n });\n} else {\n new PageLoader();\n}\n\n// Optional: Add method to manually trigger loading for programmatic navigation\n(window as any).showPageLoader = function (url: string): void {\n if ((window as any).pageLoaderInstance) {\n (window as any).pageLoaderInstance.navigateWithProgress(url);\n }\n};\n\n// Store instance globally for manual control\nwindow.addEventListener(\"load\", () => {\n if (!(window as any).pageLoaderInstance) {\n (window as any).pageLoaderInstance = new PageLoader();\n }\n});\n\n// Export to make this file a module\nexport { };"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "interface LoadingStage {\n progress: number;\n message: string;\n delay: number;\n}\n\n// Page Loading Progress System\nclass PageLoader {\n private progressBar: HTMLElement | null = null;\n private progressText: HTMLElement | null = null;\n private loadingOverlay: HTMLElement | null = null;\n private currentProgress: number = 0;\n private loaderFill: HTMLElement | null = null;\n private clickLoader: HTMLElement | null = null;\n\n constructor() {\n this.init();\n }\n\n private init(): void {\n this.createLoader();\n this.interceptLinks();\n this.monitorPageLoad();\n }\n\n private createLoader(): void {\n // Find existing loader or create overlay\n this.loaderFill = document.querySelector(\".loader-fill[loader-fill]\");\n this.clickLoader = document.querySelector(\".click-loader\");\n\n if (!this.loaderFill) {\n return;\n }\n\n // Create overlay if click-loader isn't already positioned fixed\n if (\n this.clickLoader &&\n !this.clickLoader.style.position &&\n getComputedStyle(this.clickLoader).position !== \"fixed\"\n ) {\n this.loadingOverlay = document.createElement(\"div\");\n this.loadingOverlay.id = \"page-loading-overlay\";\n this.loadingOverlay.innerHTML = this.clickLoader.outerHTML;\n\n // Add overlay styles\n const styles = `\n <style>\n #page-loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.95);\n z-index: 9999;\n display: none;\n backdrop-filter: blur(5px);\n }\n\n #page-loading-overlay .click-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 300px;\n height: 5px;\n }\n\n .click-loader .loader-fill {\n height: 100%;\n width: 0%;\n border-radius: 4px;\n }\n \n </style>\n `;\n\n document.head.insertAdjacentHTML(\"beforeend\", styles);\n document.body.appendChild(this.loadingOverlay);\n\n // Update reference to the new loader in overlay\n this.loaderFill = this.loadingOverlay.querySelector(\n \".loader-fill[loader-fill]\"\n );\n } else {\n // Use existing loader, just hide it initially\n if (this.clickLoader) {\n this.clickLoader.style.display = \"none\";\n }\n }\n\n // Initialize loader fill width\n if (this.loaderFill) {\n this.loaderFill.style.width = \"0%\";\n }\n }\n\n private interceptLinks(): void {\n // Intercept all link clicks\n document.addEventListener(\"click\", (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const link = target.closest(\"a[href]\") as HTMLAnchorElement;\n if (link && !link.hasAttribute(\"no-loader\")) {\n const href = link.getAttribute(\"href\");\n\n // Skip external links, anchors, and javascript: links\n if (\n href &&\n (href.startsWith(\"http\") ||\n href.startsWith(\"#\") ||\n href.startsWith(\"javascript:\"))\n ) {\n return;\n }\n\n e.preventDefault();\n if (href) {\n this.navigateWithProgress(href);\n }\n }\n });\n }\n\n public navigateWithProgress(url: string): void {\n this.showLoader();\n this.simulateProgress(url);\n }\n\n private showLoader(): void {\n if (this.loadingOverlay) {\n this.loadingOverlay.style.display = \"block\";\n } else if (this.clickLoader) {\n this.clickLoader.style.display = \"block\";\n }\n this.currentProgress = 0;\n this.updateProgress(0, \"Initializing...\");\n }\n\n private hideLoader(): void {\n if (this.loadingOverlay) {\n this.loadingOverlay.style.display = \"none\";\n } else if (this.clickLoader) {\n this.clickLoader.style.display = \"none\";\n }\n }\n\n private updateProgress(percent: number, message: string = \"\"): void {\n this.currentProgress = Math.min(percent, 100);\n\n // Update your loader-fill div width\n if (this.loaderFill) {\n this.loaderFill.style.width = this.currentProgress + \"%\";\n }\n\n const displayMessage =\n message || `Loading... ${Math.round(this.currentProgress)}%`;\n }\n\n private simulateProgress(url: string): void {\n const stages: LoadingStage[] = [\n { progress: 10, message: \"Preparing request...\", delay: 100 },\n { progress: 25, message: \"Connecting to server...\", delay: 150 },\n { progress: 40, message: \"Sending request...\", delay: 100 },\n { progress: 60, message: \"Receiving response...\", delay: 150 },\n { progress: 80, message: \"Processing content...\", delay: 50 },\n { progress: 95, message: \"Finalizing...\", delay: 50 },\n { progress: 100, message: \"Complete!\", delay: 100 },\n ];\n\n let currentStage = 0;\n\n const processStage = (): void => {\n if (currentStage < stages.length) {\n const stage = stages[currentStage];\n this.updateProgress(stage.progress, stage.message);\n\n setTimeout(() => {\n currentStage++;\n processStage();\n }, stage.delay);\n } else {\n // Navigation complete\n setTimeout(() => {\n window.location.href = url;\n }, 200);\n }\n };\n\n processStage();\n }\n\n // Monitor actual page loading events\n private monitorPageLoad(): void {\n // Track when page starts loading\n window.addEventListener(\"beforeunload\", () => {\n // Page unloading\n });\n\n // Track when new page loads\n window.addEventListener(\"load\", () => {\n this.hideLoader();\n });\n\n // Track DOM content loaded\n document.addEventListener(\"DOMContentLoaded\", () => {\n // DOM content loaded\n });\n\n // Track navigation timing (if supported)\n if (\"performance\" in window) {\n window.addEventListener(\"load\", () => {\n setTimeout(() => {\n const timing = performance.timing;\n const loadTime = timing.loadEventEnd - timing.navigationStart;\n\n // Detailed timing breakdown available but not logged\n const dnsLookupTime = timing.domainLookupEnd - timing.domainLookupStart;\n const tcpConnectionTime = timing.connectEnd - timing.connectStart;\n const requestTime = timing.responseStart - timing.requestStart;\n const responseTime = timing.responseEnd - timing.responseStart;\n const domProcessingTime = timing.domComplete - timing.domLoading;\n }, 100);\n });\n }\n }\n}\n\n// Extend Window interface for TypeScript\ndeclare global {\n interface Window {\n showPageLoader?: (url: string) => void;\n pageLoaderInstance?: PageLoader;\n }\n}\n\n// Initialize the page loader when DOM is ready\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => {\n new PageLoader();\n });\n} else {\n new PageLoader();\n}\n\n// Optional: Add method to manually trigger loading for programmatic navigation\n(window as any).showPageLoader = function (url: string): void {\n if ((window as any).pageLoaderInstance) {\n (window as any).pageLoaderInstance.navigateWithProgress(url);\n }\n};\n\n// Store instance globally for manual control\nwindow.addEventListener(\"load\", () => {\n if (!(window as any).pageLoaderInstance) {\n (window as any).pageLoaderInstance = new PageLoader();\n }\n});\n\n// Export to make this file a module\nexport { };"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/global/miscellaneous.ts"],
4
- "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "\ntype ApplyUtmsResult = {\n updated: number;\n details: Array<{\n element: HTMLAnchorElement;\n before: string;\n after: string;\n }>;\n};\n\ntype ApplyUtmsOptions = {\n scope?: ParentNode;\n baseUrl?: string;\n log?: boolean;\n};\n\n// Replace footer form hash links\nfunction replaceFooterFormLinks(): void {\n const footerLinks = document.querySelectorAll('a[href=\"#footer-form\"]');\n \n footerLinks.forEach((link: Element) => {\n const anchorElement = link as HTMLAnchorElement;\n anchorElement.href = '/contact-us';\n });\n }\n \n document.addEventListener('DOMContentLoaded', replaceFooterFormLinks);\n \n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', replaceFooterFormLinks);\n } else {\n replaceFooterFormLinks();\n }\n\n// Add richtext-button=\"primary\" to all em tags under p > a > em\ndocument.addEventListener('DOMContentLoaded', (): void => {\n const emTags: NodeListOf<HTMLElement> = document.querySelectorAll('p > a > em');\n emTags.forEach((em: HTMLElement) => {\n em.setAttribute('richtext-button', 'primary');\n });\n});\n\n// Add UTMs to all links with href containing console.fynd.com\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n setTimeout(() => {\n function updateLinks(): void {\n const getQueryParams = (): URLSearchParams => {\n return new URLSearchParams(window.location.search);\n };\n const utmParams: URLSearchParams = getQueryParams();\n utmParams.set(\"referrer_domain\", window.location.hostname);\n utmParams.set(\"referrer_page\", window.location.pathname);\n const links: NodeListOf<HTMLAnchorElement> = document.querySelectorAll('[href*=\"console.fynd.com\"]');\n links.forEach((link: HTMLAnchorElement) => {\n const url = new URL(link.href);\n utmParams.forEach((value: string, key: string) => {\n url.searchParams.set(key, value);\n });\n link.href = url.toString();\n });\n }\n updateLinks();\n }, 100);\n});\n\n\n\n\n/**\n * Removes UTM params from internal links and, if the current page URL has UTMs,\n * applies those page-level UTMs to those internal links.\n */\nexport function applyPageUtmsToInternalLinks(\n options: ApplyUtmsOptions = {}\n): ApplyUtmsResult {\n const scope = options.scope ?? document;\n const base = new URL(options.baseUrl ?? window.location.href);\n const pageUtmParams = new URLSearchParams();\n for (const [k, v] of new URLSearchParams(base.search).entries()) {\n if (k.toLowerCase().startsWith(\"utm_\")) pageUtmParams.set(k, v);\n }\n const anchors = Array.from(\n scope.querySelectorAll<HTMLAnchorElement>(\"a[href]\")\n );\n\n const result: ApplyUtmsResult = { updated: 0, details: [] };\n for (const a of anchors) {\n let url: URL;\n try {\n url = new URL(a.getAttribute(\"href\")!, base);\n } catch {\n continue;\n }\n\n const isHttp = url.protocol === \"http:\" || url.protocol === \"https:\";\n const isInternal = url.hostname === base.hostname;\n if (!isHttp || !isInternal) continue;\n\n const before = a.href;\n const keysToDelete: string[] = [];\n for (const key of url.searchParams.keys()) {\n if (key.toLowerCase().startsWith(\"utm_\")) keysToDelete.push(key);\n }\n keysToDelete.forEach((k) => url.searchParams.delete(k));\n if ([...pageUtmParams.keys()].length > 0) {\n for (const [k, v] of pageUtmParams.entries()) {\n url.searchParams.set(k, v);\n }\n }\n const after = url.toString();\n if (after !== before) {\n a.href = after;\n result.updated += 1;\n result.details.push({ element: a, before, after });\n }\n }\n // Logging removed for production\n\n return result;\n}\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n setTimeout(() => {\n applyPageUtmsToInternalLinks({ log: true });\n }, 200);\n});"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "\ntype ApplyUtmsResult = {\n updated: number;\n details: Array<{\n element: HTMLAnchorElement;\n before: string;\n after: string;\n }>;\n};\n\ntype ApplyUtmsOptions = {\n scope?: ParentNode;\n baseUrl?: string;\n log?: boolean;\n};\n\n// Replace footer form hash links\nfunction replaceFooterFormLinks(): void {\n const footerLinks = document.querySelectorAll('a[href=\"#footer-form\"]');\n \n footerLinks.forEach((link: Element) => {\n const anchorElement = link as HTMLAnchorElement;\n anchorElement.href = '/contact-us';\n });\n }\n \n document.addEventListener('DOMContentLoaded', replaceFooterFormLinks);\n \n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', replaceFooterFormLinks);\n } else {\n replaceFooterFormLinks();\n }\n\n// Add richtext-button=\"primary\" to all em tags under p > a > em\ndocument.addEventListener('DOMContentLoaded', (): void => {\n const emTags: NodeListOf<HTMLElement> = document.querySelectorAll('p > a > em');\n emTags.forEach((em: HTMLElement) => {\n em.setAttribute('richtext-button', 'primary');\n });\n});\n\n// Add UTMs to all links with href containing console.fynd.com\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n setTimeout(() => {\n function updateLinks(): void {\n const getQueryParams = (): URLSearchParams => {\n return new URLSearchParams(window.location.search);\n };\n const utmParams: URLSearchParams = getQueryParams();\n utmParams.set(\"referrer_domain\", window.location.hostname);\n utmParams.set(\"referrer_page\", window.location.pathname);\n const links: NodeListOf<HTMLAnchorElement> = document.querySelectorAll('[href*=\"console.fynd.com\"]');\n links.forEach((link: HTMLAnchorElement) => {\n const url = new URL(link.href);\n utmParams.forEach((value: string, key: string) => {\n url.searchParams.set(key, value);\n });\n link.href = url.toString();\n });\n }\n updateLinks();\n }, 100);\n});\n\n\n\n\n/**\n * Removes UTM params from internal links and, if the current page URL has UTMs,\n * applies those page-level UTMs to those internal links.\n */\nexport function applyPageUtmsToInternalLinks(\n options: ApplyUtmsOptions = {}\n): ApplyUtmsResult {\n const scope = options.scope ?? document;\n const base = new URL(options.baseUrl ?? window.location.href);\n const pageUtmParams = new URLSearchParams();\n for (const [k, v] of new URLSearchParams(base.search).entries()) {\n if (k.toLowerCase().startsWith(\"utm_\")) pageUtmParams.set(k, v);\n }\n const anchors = Array.from(\n scope.querySelectorAll<HTMLAnchorElement>(\"a[href]\")\n );\n\n const result: ApplyUtmsResult = { updated: 0, details: [] };\n for (const a of anchors) {\n let url: URL;\n try {\n url = new URL(a.getAttribute(\"href\")!, base);\n } catch {\n continue;\n }\n\n const isHttp = url.protocol === \"http:\" || url.protocol === \"https:\";\n const isInternal = url.hostname === base.hostname;\n if (!isHttp || !isInternal) continue;\n\n const before = a.href;\n const keysToDelete: string[] = [];\n for (const key of url.searchParams.keys()) {\n if (key.toLowerCase().startsWith(\"utm_\")) keysToDelete.push(key);\n }\n keysToDelete.forEach((k) => url.searchParams.delete(k));\n if ([...pageUtmParams.keys()].length > 0) {\n for (const [k, v] of pageUtmParams.entries()) {\n url.searchParams.set(k, v);\n }\n }\n const after = url.toString();\n if (after !== before) {\n a.href = after;\n result.updated += 1;\n result.details.push({ element: a, before, after });\n }\n }\n // Logging removed for production\n\n return result;\n}\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n setTimeout(() => {\n applyPageUtmsToInternalLinks({ log: true });\n }, 200);\n});"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/global/number-count.ts"],
4
- "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Run on DOM ready\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n type TargetPayload = { value: number; decimals: number };\n \n // Helper: count decimal places from the original text\n const decimalsOf = (s: string): number => {\n const dot = s.indexOf(\".\");\n return dot >= 0 ? s.length - dot - 1 : 0;\n };\n \n const elements = Array.from(\n document.querySelectorAll<HTMLElement>(\"[fynd-number-count]\")\n );\n \n // Prepare each element: capture final target and set initial text\n for (const el of elements) {\n const targetText = (el.textContent || \"\").trim();\n const targetVal = parseFloat(targetText);\n if (Number.isNaN(targetVal)) {\n // Nothing to animate if final isn't a number\n continue;\n }\n \n const initialAttr = el.getAttribute(\"fynd-number-count\") ?? \"\";\n const initial =\n initialAttr.trim() === \"\" ? 0 : parseFloat(initialAttr.trim());\n const startVal = Number.isNaN(initial) ? 0 : initial;\n \n // Set initial visible value (respect decimal places of the target)\n const decimals = decimalsOf(targetText);\n el.textContent = startVal.toFixed(decimals);\n \n // Stash target & formatting info on the element\n (el as any)._fyndTarget = { value: targetVal, decimals } satisfies TargetPayload;\n }\n \n // Animate a single element from its current text to the stored target\n const animateCount = (el: HTMLElement) => {\n const payload = (el as any)._fyndTarget as TargetPayload | undefined;\n if (!payload) return;\n \n const durationAttr = el.getAttribute(\"fynd-number-count-duration\");\n const durationParsed = durationAttr ? parseInt(durationAttr, 10) : NaN;\n const duration = Number.isNaN(durationParsed) ? 1500 : Math.max(0, durationParsed);\n \n const startText = (el.textContent || \"0\").trim();\n const start = parseFloat(startText);\n const end = payload.value;\n \n if (Number.isNaN(start) || Number.isNaN(end) || duration === 0 || start === end) {\n el.textContent = end.toFixed(payload.decimals);\n return;\n }\n \n const t0 = performance.now();\n const tick = (now: number) => {\n const t = Math.min(1, (now - t0) / duration); // linear easing\n const current = start + (end - start) * t;\n el.textContent = current.toFixed(payload.decimals);\n if (t < 1) {\n requestAnimationFrame(tick);\n } else {\n // snap to final\n el.textContent = end.toFixed(payload.decimals);\n }\n };\n requestAnimationFrame(tick);\n };\n \n // Observe visibility and trigger animation once per element\n const io = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n const el = entry.target as HTMLElement;\n if ((el as any)._fyndAnimated) {\n io.unobserve(el);\n continue;\n }\n (el as any)._fyndAnimated = true;\n // delay 100ms before starting the animation\n setTimeout(() => animateCount(el), 100);\n io.unobserve(el);\n }\n },\n { threshold: 0.2 } // start when ~20% visible (tweak as needed)\n );\n \n for (const el of elements) {\n io.observe(el);\n }\n });"],
5
- "mappings": ";;;AACA,MACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa,aAC7B;AACA,QAAI,YAAY,GAAG,uBAAY,UAAU,EAAE;AAAA,MAAiB;AAAA,MAAU,MACpE,SAAS,OAAO;AAAA,IAClB;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,gDAAgD;AAAA,EAC9D;;;ACTA,WAAS,iBAAiB,oBAAoB,MAAM;AAIhD,UAAM,aAAa,CAAC,MAAsB;AACxC,YAAM,MAAM,EAAE,QAAQ,GAAG;AACzB,aAAO,OAAO,IAAI,EAAE,SAAS,MAAM,IAAI;AAAA,IACzC;AAEA,UAAM,WAAW,MAAM;AAAA,MACrB,SAAS,iBAA8B,qBAAqB;AAAA,IAC9D;AAGA,eAAW,MAAM,UAAU;AACzB,YAAM,cAAc,GAAG,eAAe,IAAI,KAAK;AAC/C,YAAM,YAAY,WAAW,UAAU;AACvC,UAAI,OAAO,MAAM,SAAS,GAAG;AAE3B;AAAA,MACF;AAEA,YAAM,cAAc,GAAG,aAAa,mBAAmB,KAAK;AAC5D,YAAM,UACJ,YAAY,KAAK,MAAM,KAAK,IAAI,WAAW,YAAY,KAAK,CAAC;AAC/D,YAAM,WAAW,OAAO,MAAM,OAAO,IAAI,IAAI;AAG7C,YAAM,WAAW,WAAW,UAAU;AACtC,SAAG,cAAc,SAAS,QAAQ,QAAQ;AAG1C,MAAC,GAAW,cAAc,EAAE,OAAO,WAAW,SAAS;AAAA,IACzD;AAGA,UAAM,eAAe,CAAC,OAAoB;AACxC,YAAM,UAAW,GAAW;AAC5B,UAAI,CAAC,QAAS;AAEd,YAAM,eAAe,GAAG,aAAa,4BAA4B;AACjE,YAAM,iBAAiB,eAAe,SAAS,cAAc,EAAE,IAAI;AACnE,YAAM,WAAW,OAAO,MAAM,cAAc,IAAI,OAAO,KAAK,IAAI,GAAG,cAAc;AAEjF,YAAM,aAAa,GAAG,eAAe,KAAK,KAAK;AAC/C,YAAM,QAAQ,WAAW,SAAS;AAClC,YAAM,MAAM,QAAQ;AAEpB,UAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,GAAG,KAAK,aAAa,KAAK,UAAU,KAAK;AAC/E,WAAG,cAAc,IAAI,QAAQ,QAAQ,QAAQ;AAC7C;AAAA,MACF;AAEA,YAAM,KAAK,YAAY,IAAI;AAC3B,YAAM,OAAO,CAAC,QAAgB;AAC5B,cAAM,IAAI,KAAK,IAAI,IAAI,MAAM,MAAM,QAAQ;AAC3C,cAAM,UAAU,SAAS,MAAM,SAAS;AACxC,WAAG,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AACjD,YAAI,IAAI,GAAG;AACT,gCAAsB,IAAI;AAAA,QAC5B,OAAO;AAEL,aAAG,cAAc,IAAI,QAAQ,QAAQ,QAAQ;AAAA,QAC/C;AAAA,MACF;AACA,4BAAsB,IAAI;AAAA,IAC5B;AAGA,UAAM,KAAK,IAAI;AAAA,MACb,CAAC,YAAY;AACX,mBAAW,SAAS,SAAS;AAC3B,cAAI,CAAC,MAAM,eAAgB;AAC3B,gBAAM,KAAK,MAAM;AACjB,cAAK,GAAW,eAAe;AAC7B,eAAG,UAAU,EAAE;AACf;AAAA,UACF;AACA,UAAC,GAAW,gBAAgB;AAE5B,qBAAW,MAAM,aAAa,EAAE,GAAG,GAAG;AACtC,aAAG,UAAU,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,IAAI;AAAA;AAAA,IACnB;AAEA,eAAW,MAAM,UAAU;AACzB,SAAG,QAAQ,EAAE;AAAA,IACf;AAAA,EACF,CAAC;",
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Run on DOM ready\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n type TargetPayload = { value: number; decimals: number };\n \n // Helper: count decimal places from the original text\n const decimalsOf = (s: string): number => {\n const dot = s.indexOf(\".\");\n return dot >= 0 ? s.length - dot - 1 : 0;\n };\n \n const elements = Array.from(\n document.querySelectorAll<HTMLElement>(\"[fynd-number-count]\")\n );\n \n // Prepare each element: capture final target and set initial text\n for (const el of elements) {\n const targetText = (el.textContent || \"\").trim();\n const targetVal = parseFloat(targetText);\n if (Number.isNaN(targetVal)) {\n // Nothing to animate if final isn't a number\n continue;\n }\n \n const initialAttr = el.getAttribute(\"fynd-number-count\") ?? \"\";\n const initial =\n initialAttr.trim() === \"\" ? 0 : parseFloat(initialAttr.trim());\n const startVal = Number.isNaN(initial) ? 0 : initial;\n \n // Set initial visible value (respect decimal places of the target)\n const decimals = decimalsOf(targetText);\n el.textContent = startVal.toFixed(decimals);\n \n // Stash target & formatting info on the element\n (el as any)._fyndTarget = { value: targetVal, decimals } satisfies TargetPayload;\n }\n \n // Animate a single element from its current text to the stored target\n const animateCount = (el: HTMLElement) => {\n const payload = (el as any)._fyndTarget as TargetPayload | undefined;\n if (!payload) return;\n \n const durationAttr = el.getAttribute(\"fynd-number-count-duration\");\n const durationParsed = durationAttr ? parseInt(durationAttr, 10) : NaN;\n const duration = Number.isNaN(durationParsed) ? 1500 : Math.max(0, durationParsed);\n \n const startText = (el.textContent || \"0\").trim();\n const start = parseFloat(startText);\n const end = payload.value;\n \n if (Number.isNaN(start) || Number.isNaN(end) || duration === 0 || start === end) {\n el.textContent = end.toFixed(payload.decimals);\n return;\n }\n \n const t0 = performance.now();\n const tick = (now: number) => {\n const t = Math.min(1, (now - t0) / duration); // linear easing\n const current = start + (end - start) * t;\n el.textContent = current.toFixed(payload.decimals);\n if (t < 1) {\n requestAnimationFrame(tick);\n } else {\n // snap to final\n el.textContent = end.toFixed(payload.decimals);\n }\n };\n requestAnimationFrame(tick);\n };\n \n // Observe visibility and trigger animation once per element\n const io = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n const el = entry.target as HTMLElement;\n if ((el as any)._fyndAnimated) {\n io.unobserve(el);\n continue;\n }\n (el as any)._fyndAnimated = true;\n // delay 100ms before starting the animation\n setTimeout(() => animateCount(el), 100);\n io.unobserve(el);\n }\n },\n { threshold: 0.2 } // start when ~20% visible (tweak as needed)\n );\n \n for (const el of elements) {\n io.observe(el);\n }\n });"],
5
+ "mappings": ";;;AACA,MACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa,aAC7B;AACA,QAAI,YAAY,GAAG,uBAAY,UAAU,EAAE;AAAA,MAAiB;AAAA,MAAU,MACpE,SAAS,OAAO;AAAA,IAClB;AAAA,EACF,OAAO;AAAA,EAEP;;;ACTA,WAAS,iBAAiB,oBAAoB,MAAM;AAIhD,UAAM,aAAa,CAAC,MAAsB;AACxC,YAAM,MAAM,EAAE,QAAQ,GAAG;AACzB,aAAO,OAAO,IAAI,EAAE,SAAS,MAAM,IAAI;AAAA,IACzC;AAEA,UAAM,WAAW,MAAM;AAAA,MACrB,SAAS,iBAA8B,qBAAqB;AAAA,IAC9D;AAGA,eAAW,MAAM,UAAU;AACzB,YAAM,cAAc,GAAG,eAAe,IAAI,KAAK;AAC/C,YAAM,YAAY,WAAW,UAAU;AACvC,UAAI,OAAO,MAAM,SAAS,GAAG;AAE3B;AAAA,MACF;AAEA,YAAM,cAAc,GAAG,aAAa,mBAAmB,KAAK;AAC5D,YAAM,UACJ,YAAY,KAAK,MAAM,KAAK,IAAI,WAAW,YAAY,KAAK,CAAC;AAC/D,YAAM,WAAW,OAAO,MAAM,OAAO,IAAI,IAAI;AAG7C,YAAM,WAAW,WAAW,UAAU;AACtC,SAAG,cAAc,SAAS,QAAQ,QAAQ;AAG1C,MAAC,GAAW,cAAc,EAAE,OAAO,WAAW,SAAS;AAAA,IACzD;AAGA,UAAM,eAAe,CAAC,OAAoB;AACxC,YAAM,UAAW,GAAW;AAC5B,UAAI,CAAC,QAAS;AAEd,YAAM,eAAe,GAAG,aAAa,4BAA4B;AACjE,YAAM,iBAAiB,eAAe,SAAS,cAAc,EAAE,IAAI;AACnE,YAAM,WAAW,OAAO,MAAM,cAAc,IAAI,OAAO,KAAK,IAAI,GAAG,cAAc;AAEjF,YAAM,aAAa,GAAG,eAAe,KAAK,KAAK;AAC/C,YAAM,QAAQ,WAAW,SAAS;AAClC,YAAM,MAAM,QAAQ;AAEpB,UAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,GAAG,KAAK,aAAa,KAAK,UAAU,KAAK;AAC/E,WAAG,cAAc,IAAI,QAAQ,QAAQ,QAAQ;AAC7C;AAAA,MACF;AAEA,YAAM,KAAK,YAAY,IAAI;AAC3B,YAAM,OAAO,CAAC,QAAgB;AAC5B,cAAM,IAAI,KAAK,IAAI,IAAI,MAAM,MAAM,QAAQ;AAC3C,cAAM,UAAU,SAAS,MAAM,SAAS;AACxC,WAAG,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AACjD,YAAI,IAAI,GAAG;AACT,gCAAsB,IAAI;AAAA,QAC5B,OAAO;AAEL,aAAG,cAAc,IAAI,QAAQ,QAAQ,QAAQ;AAAA,QAC/C;AAAA,MACF;AACA,4BAAsB,IAAI;AAAA,IAC5B;AAGA,UAAM,KAAK,IAAI;AAAA,MACb,CAAC,YAAY;AACX,mBAAW,SAAS,SAAS;AAC3B,cAAI,CAAC,MAAM,eAAgB;AAC3B,gBAAM,KAAK,MAAM;AACjB,cAAK,GAAW,eAAe;AAC7B,eAAG,UAAU,EAAE;AACf;AAAA,UACF;AACA,UAAC,GAAW,gBAAgB;AAE5B,qBAAW,MAAM,aAAa,EAAE,GAAG,GAAG;AACtC,aAAG,UAAU,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,IAAI;AAAA;AAAA,IACnB;AAEA,eAAW,MAAM,UAAU;AACzB,SAAG,QAAQ,EAAE;AAAA,IACf;AAAA,EACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/global/popup-video.ts"],
4
- "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Smooth video modal with GSAP\n// Assumes GSAP is loaded via CDN and available as a global `gsap`\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const gsap = (window as any).gsap;\n if (!gsap) {\n console.error(\"GSAP is not loaded. Please ensure the GSAP CDN is included.\");\n return;\n }\n \n const wrapper = document.querySelector<HTMLElement>('[data-popup-video=\"wrapper\"]');\n const content = document.querySelector<HTMLElement>('[data-popup-video=\"content\"]');\n const overlay = document.querySelector<HTMLElement>('[data-popup-video=\"overlay\"]');\n \n const openTriggers = document.querySelectorAll<HTMLElement>('[data-popup-video-trigger=\"open\"]');\n const closeTriggers = document.querySelectorAll<HTMLElement>('[data-popup-video-trigger=\"close\"]');\n \n if (!wrapper) console.error('Missing [data-popup-video=\"wrapper\"] element.');\n if (!content) console.error('Missing [data-popup-video=\"content\"] element.');\n if (!overlay) console.error('Missing [data-popup-video=\"overlay\"] element.');\n if (!openTriggers.length) console.warn('No [data-popup-video=\"open-trigger\"] elements found.');\n if (!closeTriggers.length) console.warn('No [data-popup-video=\"close-trigger\"] elements found.');\n \n if (!wrapper || !content || !overlay) return;\n \n // Initial state\n gsap.set(wrapper, { display: \"none\" });\n gsap.set([overlay, content], { opacity: 0 });\n gsap.set(content, { scale: 0.9 });\n \n // Utility: remove any existing injected video\n function removeInjectedVideo(): void {\n if (!content) return;\n const existing = content.querySelector<HTMLVideoElement>('video[data-popup-video=\"injected\"]');\n if (existing) {\n try {\n existing.pause();\n // Fully release sources (helps some browsers stop network activity)\n existing.removeAttribute(\"src\");\n existing.querySelectorAll(\"source\").forEach((s) => s.remove());\n existing.load();\n } catch {}\n existing.remove();\n }\n }\n \n // Utility: create the video element (at least one src required)\n function createVideoElement(linkMP4?: string | null, linkWebm?: string | null): HTMLVideoElement | null {\n const hasMP4 = !!(linkMP4 && linkMP4.trim());\n const hasWebm = !!(linkWebm && linkWebm.trim());\n \n if (!hasMP4 && !hasWebm) {\n console.error(\"openVideoModal requires at least one of linkMP4 or linkWebm.\");\n return null;\n }\n \n const video = document.createElement(\"video\");\n video.setAttribute('data-popup-video', 'injected');\n video.setAttribute(\"playsinline\", \"\");\n video.setAttribute(\"controls\", \"\");\n video.setAttribute(\"autoplay\", \"\");\n // You can uncomment the next line if you want silent autoplay by default\n // video.muted = true;\n \n if (hasWebm) {\n const s = document.createElement(\"source\");\n s.src = linkWebm!.trim();\n s.type = \"video/webm\";\n video.appendChild(s);\n }\n \n if (hasMP4) {\n const s = document.createElement(\"source\");\n s.src = linkMP4!.trim();\n s.type = \"video/mp4\";\n video.appendChild(s);\n }\n \n return video;\n }\n \n function openVideoModal(linkMP4?: string | null, linkWebm?: string | null): void {\n if (!wrapper || !content || !overlay) {\n console.error(\"Modal elements missing. Cannot open modal.\");\n return;\n }\n \n // Inject/replace the video BEFORE animations begin\n removeInjectedVideo();\n const videoEl = createVideoElement(linkMP4, linkWebm);\n if (!videoEl) return; // do not open if no valid sources provided\n content.appendChild(videoEl);\n \n // Reset starting state on each open\n gsap.set([overlay, content], { opacity: 0 });\n gsap.set(content, { scale: 0.9 });\n \n // Show wrapper\n gsap.set(wrapper, { display: \"flex\" });\n \n // Animate overlay in\n gsap.to(overlay, {\n opacity: 1,\n duration: 0.3,\n ease: \"power2.out\",\n });\n \n // Animate content in with 0.2s delay\n gsap.to(content, {\n opacity: 1,\n scale: 1,\n duration: 0.35,\n delay: 0.3,\n ease: \"power2.out\",\n });\n \n console.log(\"Video modal opened.\");\n }\n \n function closeVideoModal(): void {\n if (!wrapper || !content || !overlay) {\n console.error(\"Modal elements missing. Cannot close modal.\");\n return;\n }\n \n // Reverse: fade/scale content down and fade overlay out\n const tl = gsap.timeline({\n defaults: { ease: \"power2.inOut\" },\n onComplete: () => {\n // Remove injected video after animation completes\n removeInjectedVideo();\n \n gsap.set(wrapper, { display: \"none\" });\n console.log(\"Video modal closed.\");\n },\n });\n \n tl.to(content, { opacity: 0, scale: 0.9, duration: 0.25 }, 0).to(overlay, { opacity: 0, duration: 0.25 }, 0);\n }\n \n // Bind triggers\n openTriggers.forEach((el) =>\n el.addEventListener(\"click\", () => {\n if (!wrapper) {\n console.error(\"Wrapper not found. Cannot open modal.\");\n return;\n }\n const mp4 = el.getAttribute(\"data-video-mp4\");\n const webm = el.getAttribute(\"data-video-webm\");\n openVideoModal(mp4, webm);\n })\n );\n \n closeTriggers.forEach((el) =>\n el.addEventListener(\"click\", () => {\n if (!wrapper) {\n console.error(\"Wrapper not found. Cannot close modal.\");\n return;\n }\n closeVideoModal();\n })\n );\n \n // Expose to window if you want to call manually\n (window as any).openVideoModal = openVideoModal;\n (window as any).closeVideoModal = closeVideoModal;\n });"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// Smooth video modal with GSAP\n// Assumes GSAP is loaded via CDN and available as a global `gsap`\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const gsap = (window as any).gsap;\n if (!gsap) {\n console.error(\"GSAP is not loaded. Please ensure the GSAP CDN is included.\");\n return;\n }\n \n const wrapper = document.querySelector<HTMLElement>('[data-popup-video=\"wrapper\"]');\n const content = document.querySelector<HTMLElement>('[data-popup-video=\"content\"]');\n const overlay = document.querySelector<HTMLElement>('[data-popup-video=\"overlay\"]');\n \n const openTriggers = document.querySelectorAll<HTMLElement>('[data-popup-video-trigger=\"open\"]');\n const closeTriggers = document.querySelectorAll<HTMLElement>('[data-popup-video-trigger=\"close\"]');\n \n if (!wrapper) console.error('Missing [data-popup-video=\"wrapper\"] element.');\n if (!content) console.error('Missing [data-popup-video=\"content\"] element.');\n if (!overlay) console.error('Missing [data-popup-video=\"overlay\"] element.');\n if (!openTriggers.length) console.warn('No [data-popup-video=\"open-trigger\"] elements found.');\n if (!closeTriggers.length) console.warn('No [data-popup-video=\"close-trigger\"] elements found.');\n \n if (!wrapper || !content || !overlay) return;\n \n // Initial state\n gsap.set(wrapper, { display: \"none\" });\n gsap.set([overlay, content], { opacity: 0 });\n gsap.set(content, { scale: 0.9 });\n \n // Utility: remove any existing injected video\n function removeInjectedVideo(): void {\n if (!content) return;\n const existing = content.querySelector<HTMLVideoElement>('video[data-popup-video=\"injected\"]');\n if (existing) {\n try {\n existing.pause();\n // Fully release sources (helps some browsers stop network activity)\n existing.removeAttribute(\"src\");\n existing.querySelectorAll(\"source\").forEach((s) => s.remove());\n existing.load();\n } catch {}\n existing.remove();\n }\n }\n \n // Utility: create the video element (at least one src required)\n function createVideoElement(linkMP4?: string | null, linkWebm?: string | null): HTMLVideoElement | null {\n const hasMP4 = !!(linkMP4 && linkMP4.trim());\n const hasWebm = !!(linkWebm && linkWebm.trim());\n \n if (!hasMP4 && !hasWebm) {\n console.error(\"openVideoModal requires at least one of linkMP4 or linkWebm.\");\n return null;\n }\n \n const video = document.createElement(\"video\");\n video.setAttribute('data-popup-video', 'injected');\n video.setAttribute(\"playsinline\", \"\");\n video.setAttribute(\"controls\", \"\");\n video.setAttribute(\"autoplay\", \"\");\n // You can uncomment the next line if you want silent autoplay by default\n // video.muted = true;\n \n if (hasWebm) {\n const s = document.createElement(\"source\");\n s.src = linkWebm!.trim();\n s.type = \"video/webm\";\n video.appendChild(s);\n }\n \n if (hasMP4) {\n const s = document.createElement(\"source\");\n s.src = linkMP4!.trim();\n s.type = \"video/mp4\";\n video.appendChild(s);\n }\n \n return video;\n }\n \n function openVideoModal(linkMP4?: string | null, linkWebm?: string | null): void {\n if (!wrapper || !content || !overlay) {\n console.error(\"Modal elements missing. Cannot open modal.\");\n return;\n }\n \n // Inject/replace the video BEFORE animations begin\n removeInjectedVideo();\n const videoEl = createVideoElement(linkMP4, linkWebm);\n if (!videoEl) return; // do not open if no valid sources provided\n content.appendChild(videoEl);\n \n // Reset starting state on each open\n gsap.set([overlay, content], { opacity: 0 });\n gsap.set(content, { scale: 0.9 });\n \n // Show wrapper\n gsap.set(wrapper, { display: \"flex\" });\n \n // Animate overlay in\n gsap.to(overlay, {\n opacity: 1,\n duration: 0.3,\n ease: \"power2.out\",\n });\n \n // Animate content in with 0.2s delay\n gsap.to(content, {\n opacity: 1,\n scale: 1,\n duration: 0.35,\n delay: 0.3,\n ease: \"power2.out\",\n });\n \n console.log(\"Video modal opened.\");\n }\n \n function closeVideoModal(): void {\n if (!wrapper || !content || !overlay) {\n console.error(\"Modal elements missing. Cannot close modal.\");\n return;\n }\n \n // Reverse: fade/scale content down and fade overlay out\n const tl = gsap.timeline({\n defaults: { ease: \"power2.inOut\" },\n onComplete: () => {\n // Remove injected video after animation completes\n removeInjectedVideo();\n \n gsap.set(wrapper, { display: \"none\" });\n console.log(\"Video modal closed.\");\n },\n });\n \n tl.to(content, { opacity: 0, scale: 0.9, duration: 0.25 }, 0).to(overlay, { opacity: 0, duration: 0.25 }, 0);\n }\n \n // Bind triggers\n openTriggers.forEach((el) =>\n el.addEventListener(\"click\", () => {\n if (!wrapper) {\n console.error(\"Wrapper not found. Cannot open modal.\");\n return;\n }\n const mp4 = el.getAttribute(\"data-video-mp4\");\n const webm = el.getAttribute(\"data-video-webm\");\n openVideoModal(mp4, webm);\n })\n );\n \n closeTriggers.forEach((el) =>\n el.addEventListener(\"click\", () => {\n if (!wrapper) {\n console.error(\"Wrapper not found. Cannot close modal.\");\n return;\n }\n closeVideoModal();\n })\n );\n \n // Expose to window if you want to call manually\n (window as any).openVideoModal = openVideoModal;\n (window as any).closeVideoModal = closeVideoModal;\n });"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/home/index.ts"],
4
- "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n console.log(\"Live reload disabled: not running on localhost\");\n}\n", "export function logMessage(message: string): void {\n console.log(\"Logged message:\", message);\n}\n"],
5
- "mappings": ";;;AACA,MACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa,aAC7B;AACA,QAAI,YAAY,GAAG,uBAAY,UAAU,EAAE;AAAA,MAAiB;AAAA,MAAU,MACpE,SAAS,OAAO;AAAA,IAClB;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,gDAAgD;AAAA,EAC9D;;;ACVO,WAAS,WAAW,SAAuB;AAChD,YAAQ,IAAI,mBAAmB,OAAO;AAAA,EACxC;",
4
+ "sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "export function logMessage(message: string): void {\n console.log(\"Logged message:\", message);\n}\n"],
5
+ "mappings": ";;;AACA,MACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa,aAC7B;AACA,QAAI,YAAY,GAAG,uBAAY,UAAU,EAAE;AAAA,MAAiB;AAAA,MAAU,MACpE,SAAS,OAAO;AAAA,IAClB;AAAA,EACF,OAAO;AAAA,EAEP;;;ACVO,WAAS,WAAW,SAAuB;AAChD,YAAQ,IAAI,mBAAmB,OAAO;AAAA,EACxC;",
6
6
  "names": []
7
7
  }