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

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/marquee/marquee-swiper.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", "// Check if user prefers reduced motion\nconst prefersReducedMotion: boolean = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n// Access Swiper from the global window object\nconst SwiperClass = (window as any).Swiper;\n\n// Initialize Swiper with autoplay conditionally based on prefers-reduced-motion\nconst swiper = new SwiperClass(\"[swiper-slider='brands-marquee']\", {\n slidesPerView: 'auto',\n spaceBetween: 0,\n loop: true,\n speed: 40000,\n allowTouchMove: false,\n autoplay: prefersReducedMotion\n ? false\n : {\n delay: 1,\n disableOnInteraction: false,\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,MAAM,uBAAgC,OAAO,WAAW,kCAAkC,EAAE;AAG5F,MAAM,cAAe,OAAe;AAGpC,MAAM,SAAS,IAAI,YAAY,oCAAoC;AAAA,IAC/D,eAAe;AAAA,IACf,cAAc;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,UAAU,uBACJ,QACA;AAAA,MACE,OAAO;AAAA,MACP,sBAAsB;AAAA,IAC1B;AAAA,EACR,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", "// Check if user prefers reduced motion\nconst prefersReducedMotion: boolean = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n// Access Swiper from the global window object\nconst SwiperClass = (window as any).Swiper;\n\n// Initialize Swiper with autoplay conditionally based on prefers-reduced-motion\nconst swiper = new SwiperClass(\"[swiper-slider='brands-marquee']\", {\n slidesPerView: 'auto',\n spaceBetween: 0,\n loop: true,\n speed: 40000,\n allowTouchMove: false,\n autoplay: prefersReducedMotion\n ? false\n : {\n delay: 1,\n disableOnInteraction: false,\n },\n});\n\n// Add pause on hover\nconst marqueeEl = document.querySelector(\"[swiper-slider='brands-marquee']\");\n\nif (marqueeEl && !prefersReducedMotion) {\n marqueeEl.addEventListener(\"mouseenter\", () => {\n swiper.autoplay.stop();\n });\n\n marqueeEl.addEventListener(\"mouseleave\", () => {\n swiper.autoplay.start();\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,MAAM,uBAAgC,OAAO,WAAW,kCAAkC,EAAE;AAG5F,MAAM,cAAe,OAAe;AAGpC,MAAM,SAAS,IAAI,YAAY,oCAAoC;AAAA,IACjE,eAAe;AAAA,IACf,cAAc;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,UAAU,uBACN,QACA;AAAA,MACE,OAAO;AAAA,MACP,sBAAsB;AAAA,IACxB;AAAA,EACN,CAAC;AAGD,MAAM,YAAY,SAAS,cAAc,kCAAkC;AAE3E,MAAI,aAAa,CAAC,sBAAsB;AACtC,cAAU,iBAAiB,cAAc,MAAM;AAC7C,aAAO,SAAS,KAAK;AAAA,IACvB,CAAC;AAED,cAAU,iBAAiB,cAAc,MAAM;AAC7C,aAAO,SAAS,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{async function h(){try{let n=await fetch("https://ipwho.is/");if(!n.ok)throw new Error("Failed to fetch geolocation");let e=await n.json();return e.success===!1?(console.error("Geolocation lookup failed:",e.message),null):{ip:e.ip,country:e.country,region:e.region,city:e.city,latitude:e.latitude,longitude:e.longitude,isp:e.connection?.isp||"",timezone:e.timezone?.id||""}}catch(n){return console.error("Error fetching geolocation:",n),null}}var w="geo:data:v1",f="geo_country",y=7*24*60*60*1e3;function b(n,e,t){document.cookie=`${encodeURIComponent(n)}=${encodeURIComponent(e)}; Max-Age=${t}; Path=/; SameSite=Lax; Secure`}function C(n){let e=`${encodeURIComponent(n)}=`,t=document.cookie.split("; ");for(let o of t)if(o.startsWith(e))return decodeURIComponent(o.slice(e.length));return null}function B(n){try{let e=localStorage.getItem(n);if(!e)return null;let t=JSON.parse(e);return!t?.expiresAt||Date.now()>t.expiresAt?(localStorage.removeItem(n),null):t.data}catch{return localStorage.removeItem(n),null}}function O(n,e,t){let o={data:e,expiresAt:Date.now()+t};try{localStorage.setItem(n,JSON.stringify(o))}catch{}}async function p(n){if(typeof window>"u")return null;if(!(n?.forceRefresh??!1)){let o=B(w);if(o)return window.__GEO=o,C(f)||b(f,o.country??"",Math.floor(y/1e3)),o}let t=await h();return t?(O(w,t,y),b(f,t.country??"",Math.floor(y/1e3)),window.__GEO=t,t):null}function v(){return C(f)}function S(n,e,t="auto"){let i=(window||{}).gsap;if(!i){console.warn("GSAP not found on window. Did you include it globally?");return}let r=document.querySelector(n),c=document.querySelector(e);if(!r||!c){console.warn("openBanner: Element(s) not found for selectors:",{mainSelector:n,innerSelector:e});return}i.set(r,{height:0,overflow:"hidden"}),i.set(c,{opacity:0});let s=i.timeline();return s.to(r,{height:t,duration:.5,ease:"power2.out"}),s.to(c,{opacity:1,duration:.3,ease:"power1.out"},.2),s}function x(n,e,t=0){let i=(window||{}).gsap;if(!i){console.warn("GSAP not found on window. Did you include it globally?");return}let r=document.querySelector(n),c=document.querySelector(e);if(!r||!c){console.warn("closeBanner: Element(s) not found for selectors:",{mainSelector:n,innerSelector:e});return}i.set(r,{overflow:"hidden"});let s=i.timeline();return s.to(c,{opacity:0,duration:.25,ease:"power1.out"}),s.to(r,{height:t,duration:.45,ease:"power2.inOut"},.2),s}function E(n,e,t){let o=new Date;o.setTime(o.getTime()+t*60*60*1e3),document.cookie=`${n}=${e}; expires=${o.toUTCString()}; path=/`}function k(n){let e=document.cookie.match(new RegExp("(^| )"+n+"=([^;]+)"));return e?e[2]:null}function m(){let n=window.innerWidth;return n>=992?"desktop":n>=768?"tablet":n>=480?"mobileLandscape":"mobilePortrait"}var u=[{country:"united arab emirates",aliases:["uae","u.a.e","united arab emirates"],countryCode:"ae",url:"/ae",tagline:"You're in the UAE. Welcome!"},{country:"saudi arabia",aliases:["saudi","ksa","kingdom of saudi arabia"],countryCode:"sa",url:"/sa",tagline:"Hello Saudi Arabia!"},{country:"south africa",aliases:["rsa"],countryCode:"za",url:"/za",tagline:"Hi South Africa!"},{country:"malaysia",countryCode:"my",url:"/my",tagline:"Selamat datang, Malaysia!"},{country:"indonesia",aliases:["idn"],countryCode:"id",url:"/id",tagline:"Halo Indonesia!"},{country:"philippines",aliases:["phl","the philippines"],countryCode:"ph",url:"/ph",tagline:"Kumusta, Philippines!"},{country:"india",aliases:["bharat"],countryCode:"in",url:"/in",tagline:"This country is India. Hi some text"},{country:"global",aliases:["global","rest of world","others"],countryCode:"global",url:"/global",tagline:"This is rest of world. Hi some text"}];function l(n){return(n??"").trim().toLowerCase()}function T(n){let e=n.trim();return e?e.startsWith("/")?e:`/${e}`:"/"}async function N(){if(typeof window>"u")return null;let n=v();if(n)return l(n);let e=await p();return l(e?.country)}function L(n){let e=l(n);if(!e)return null;let t=u.find(r=>l(r.countryCode)===e);if(t)return t;let o=u.find(r=>l(r.country)===e);if(o)return o;let i=u.find(r=>(r.aliases??[]).some(c=>l(c)===e));return i||null}function g(){let n=u.find(e=>e.country==="global");if(!n)throw new Error("[geo-banner] Global config not found in COUNTRY_CONFIG");return n}function R(n){if(typeof window>"u")return;let e=l(n),t=u.find(i=>l(i.countryCode)===e)||g(),o=document.querySelector('[fynd-banner-field="link"]');if(o){let i=window.location.origin;o.href=`${i}${T(t.url)}`}}function $(n,e){let t=L(e)??u.find(s=>s.country==="global");if(!t)return console.warn("[geo-banner] No matching config for",e),!1;let o=t.countryCode,i=Array.from(n.options),r=i.find(s=>l(s.value)===l(o));if(!r)return console.warn("[geo-banner] No matching <option> for",o,"on",n),!1;let c=n.value;return n.value=r.value,n.value!==r.value&&(n.selectedIndex=i.indexOf(r)),i.forEach(s=>s.selected=s===r),c!==n.value&&(n.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("change",{bubbles:!0}))),console.log("[geo-banner] Select updated \u2192",t.country,"(",t.countryCode,")"),!0}function q(n){if(typeof window>"u")return;let e=l(n),t=u.find(r=>l(r.countryCode)===e)||g(),o=document.querySelector("#geoswitch-select")||document.querySelector('[fynd-banner-field="geoswitch"]');o?(console.log(`country code is ${t.countryCode}`),$(o,t.countryCode),o.value=t.countryCode,o.dispatchEvent(new Event("change",{bubbles:!0}))):console.warn('[geo-banner] Select not found: #geoswitch-select / [fynd-banner-field="geoswitch"]');let i=document.querySelector('[fynd-banner-field="link"]');if(i){let r=window.location.origin;i.href=`${r}${T(t.url)}`}}async function G(){if(typeof window>"u")return g();document.readyState==="loading"&&await new Promise(i=>{document.addEventListener("DOMContentLoaded",()=>i(),{once:!0})});let n=await N(),t=L(n)??g();console.log("[geo-banner] rawCountry:",n,"\u2192 resolved:",t.countryCode),q(t.countryCode);let o=document.querySelector('[fynd-banner-field="geoswitch"]');return o&&!o.__geoHandlerAttached&&(o.addEventListener("change",i=>{let r=i.target.value;R(r)}),o.__geoHandlerAttached=!0),t}var _={"/global":{mode:"country",countries:["India"]},"/":{mode:"notCountry",countries:["India"]}},M='[fynd-navigation="ip-banner"]',I='[fynd-navigation="ip-banner-inner"]',F='[fynd-navigation="ip-banner-close"]',d=document.querySelector('[fynd-navigation="announcement-bar"]'),A=document.querySelector('[fynd-navigation="announcement-list"]'),a={ipbanner:{visibility:!1,height:{desktop:"56px",tablet:"60px",mobileLandscape:"120px",mobilePortrait:"120px"}},announcementbar:{visibility:!1,height:{desktop:"40px",tablet:"40px",mobileLandscape:"40px",mobilePortrait:"46px"}},scrolled:{visibility:!1,height:{desktop:"150px",tablet:"150px",mobileLandscape:"40px",mobilePortrait:"150px"}},default:{visibility:!0,height:{desktop:"150px",tablet:"150px",mobileLandscape:"40px",mobilePortrait:"150px"}}},D=n=>{try{let e=n.split("?")[0].split("#")[0];return e==="/"?"/":e.replace(/\/+$/,"")||"/"}catch{return"/"}};function U(n){let e=D(n),t="";for(let o of Object.keys(_)){let i=D(o);(e===i||e.startsWith(i+"/"))&&i.length>t.length&&(t=i)}return t?{key:t,rule:_[t]}:null}function Y(n,e){let t=U(n);if(!t)return!1;let{rule:o}=t,i=(e?.country||"").toLowerCase();switch(o.mode){case"always":return!0;case"country":return o.countries.some(r=>r.toLowerCase()===i);case"notCountry":return!o.countries.some(r=>r.toLowerCase()===i);case"predicate":return!!o.test?.(e);default:return!1}}function z(){let n=document.querySelector('[fynd-navigation="announcement-swiper"]');if(n&&!n.__swiperInstance)try{let e=window.Swiper,t=new e(n,{slidesPerView:1,spaceBetween:0,effect:"fade",fadeEffect:{crossFade:!0},autoplay:{delay:3e3,disableOnInteraction:!1},loop:!0,speed:1e3,allowTouchMove:!1,on:{init:function(){window.announcementSlides=this.slides.length,this.slides.length<=1&&this.autoplay&&typeof this.autoplay.stop=="function"&&this.autoplay.stop()}}});n.__swiperInstance=t,console.log("Announcement Swiper initialized \u2705")}catch(e){console.warn("Failed to init Announcement Swiper:",e)}d&&A&&A.children.length>0?a.announcementbar.visibility=!0:(a.announcementbar.visibility=!1,d&&d.parentNode&&(n&&n.__swiperInstance&&(n.__swiperInstance.destroy(!0,!0),n.__swiperInstance=void 0),d.parentNode.removeChild(d),console.log("Announcement bar removed \u274C")))}function H(){let n='[fynd-navigation="dropdown-container"]',e=document.querySelector(n);if(console.log("Dropdown container element:",e),!e){console.warn(`initDesktopDropdownMenu: element not found: ${n}`);return}let t=m?.()??"unknown";console.log("Detected screenType:",t);let o=r=>{if(typeof r=="number")return r;if(typeof r=="string"){let c=parseFloat(r);return Number.isFinite(c)?c:0}return 0};if(t!=="desktop"){console.log("Not desktop \u2192 resetting transform"),e.style.transition=e.style.transition||"transform 0.3s ease",e.style.transform="translateY(0px)";return}let i=0;if(console.log("navigationData:",a),a.default?.visibility){let r=o(a.default.height?.[t]);i+=r,console.log("default height:",r)}if(a.announcementbar?.visibility){let r=o(a.announcementbar.height?.[t]);i+=r,console.log("announcementbar height:",r)}if(a.ipbanner?.visibility){let r=o(a.ipbanner.height?.[t]);i+=r,console.log("ipbanner height:",r)}console.log("Total height to be moved:",i),e.style.transition||(e.style.transition="transform 0.3s ease"),requestAnimationFrame(()=>{console.log("Applying transform..."),e.style.transform=`translateY(${i}px)`,console.log("Transform applied:",e.style.transform)})}function P(){let n=document.querySelector('[fynd-navigation="spacer"][data-wf--navigation-spacer--variant="dynamic"]');if(!n){console.warn("initNavigationSpacer: spacer element not found \u274C");return}let e=i=>{if(typeof i=="number")return i;if(typeof i=="string"){let r=parseFloat(i);return Number.isFinite(r)?r:0}return 0},t=m?.()??"desktop";console.log("initNavigationSpacer \u2192 screenType:",t);let o=0;if(a.default?.visibility){let i=e(a.default.height?.[t]);o+=i}if(a.announcementbar?.visibility){let i=e(a.announcementbar.height?.[t]);o+=i}if(a.ipbanner?.visibility){let i=e(a.ipbanner.height?.[t]);o+=i}console.log("initNavigationSpacer \u2192 total spacer height:",o),n.style.height=`${o}px`}async function K(){if(k("ipBannerClosed")==="true"){console.log("Banner previously closed, skipping display"),a.ipbanner.visibility=!1;return}let e=await p();e&&console.log("Geo data ",e);let t=window.location.pathname||"/",o=Y(t,e??void 0),i=await G();if(o&&i){S(M,I,a.ipbanner.height.desktop),a.ipbanner.visibility=!0;let r=document.querySelector(F);r&&r.addEventListener("click",()=>{x(M,I),E("ipBannerClosed","true",24),a.ipbanner.visibility=!1,H(),P()})}else a.ipbanner.visibility=!1}document.addEventListener("DOMContentLoaded",async()=>{await K(),z(),a.scrolled.visibility=window.scrollY>50,H(),P(),console.log(a)});window.addEventListener("scroll",()=>{a.scrolled.visibility=window.scrollY>50});console.log("working");})();
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../bin/live-reload.js", "../../src/global/geolocation/main.ts", "../../src/global/geolocation/geolocation-cached.ts", "../../src/global/animation/toggle-banner.ts", "../../src/utils/cookies.ts", "../../src/global/screen-type.ts", "../../src/navigation/country-detection/main.ts", "../../src/navigation/initialization.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", "// Define the type for returned geolocation data\n// Remider for adding Fallback: ipinfo.io (HTTPS, requires token)\nexport type GeoData = {\n ip: string;\n country: string;\n region: string;\n city: string;\n latitude: number;\n longitude: number;\n isp: string;\n timezone: string;\n };\n \n // Exported function that can be reused anywhere\n export async function getGeolocation(): Promise<GeoData | null> {\n try {\n const response = await fetch(\"https://ipwho.is/\");\n if (!response.ok) {\n throw new Error(\"Failed to fetch geolocation\");\n }\n \n const data = await response.json();\n \n if (data.success === false) {\n console.error(\"Geolocation lookup failed:\", data.message);\n return null;\n }\n \n return {\n ip: data.ip,\n country: data.country,\n region: data.region,\n city: data.city,\n latitude: data.latitude,\n longitude: data.longitude,\n isp: data.connection?.isp || \"\",\n timezone: data.timezone?.id || \"\"\n };\n } catch (error) {\n console.error(\"Error fetching geolocation:\", error);\n return null;\n }\n }\n\n //used in /src/navigation/initialization.ts for displaying ip banner", "import { GeoData, getGeolocation } from \"./main\";\n\nconst GEO_CACHE_KEY = \"geo:data:v1\";\nconst GEO_COOKIE_KEY = \"geo_country\";\nconst GEO_TTL_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\n\ntype Cached<T> = { data: T; expiresAt: number };\n\n// --- Cookie helpers ---\nfunction setCookie(name: string, value: string, maxAgeSec: number) {\n document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}; Max-Age=${maxAgeSec}; Path=/; SameSite=Lax; Secure`;\n}\n\nfunction getCookie(name: string): string | null {\n const key = `${encodeURIComponent(name)}=`;\n const parts = document.cookie.split(\"; \");\n for (const p of parts) {\n if (p.startsWith(key)) return decodeURIComponent(p.slice(key.length));\n }\n return null;\n}\n\nfunction clearCookie(name: string) {\n document.cookie = `${encodeURIComponent(name)}=; Max-Age=0; Path=/; SameSite=Lax; Secure`;\n}\n\n// --- LocalStorage helpers ---\nfunction readCache<T>(key: string): T | null {\n try {\n const raw = localStorage.getItem(key);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Cached<T>;\n if (!parsed?.expiresAt || Date.now() > parsed.expiresAt) {\n localStorage.removeItem(key);\n return null;\n }\n return parsed.data;\n } catch {\n localStorage.removeItem(key);\n return null;\n }\n}\n\nfunction writeCache<T>(key: string, data: T, ttlMs: number) {\n const payload: Cached<T> = { data, expiresAt: Date.now() + ttlMs };\n try {\n localStorage.setItem(key, JSON.stringify(payload));\n } catch {\n // ignore quota errors\n }\n}\n\n// --- Public API ---\nexport async function getGeolocationCached(options?: {\n forceRefresh?: boolean;\n}): Promise<GeoData | null> {\n if (typeof window === \"undefined\") return null;\n\n const forceRefresh = options?.forceRefresh ?? false;\n\n if (!forceRefresh) {\n const cached = readCache<GeoData>(GEO_CACHE_KEY);\n if (cached) {\n (window as any).__GEO = cached;\n if (!getCookie(GEO_COOKIE_KEY)) {\n setCookie(GEO_COOKIE_KEY, cached.country ?? \"\", Math.floor(GEO_TTL_MS / 1000));\n }\n return cached;\n }\n }\n\n const fresh = await getGeolocation();\n if (!fresh) return null;\n\n writeCache(GEO_CACHE_KEY, fresh, GEO_TTL_MS);\n setCookie(GEO_COOKIE_KEY, fresh.country ?? \"\", Math.floor(GEO_TTL_MS / 1000));\n (window as any).__GEO = fresh;\n return fresh;\n}\n\nexport function getGeoCountryFromCookie(): string | null {\n return getCookie(GEO_COOKIE_KEY);\n}\n\nexport function clearGeolocationCache() {\n try {\n localStorage.removeItem(GEO_CACHE_KEY);\n } catch {}\n clearCookie(GEO_COOKIE_KEY);\n if (typeof window !== \"undefined\") {\n (window as any).__GEO = undefined;\n }\n}", "// toggleBanner.ts\n// Utility functions to open/close a banner using GSAP with optional target height.\n\nexport function openBanner(\n mainSelector: string,\n innerSelector: string,\n targetHeight: string | number = \"auto\" // default stays \"auto\"\n) {\n const w = (window as any) || {};\n const gsap = w.gsap as any;\n if (!gsap) {\n console.warn(\"GSAP not found on window. Did you include it globally?\");\n return;\n }\n\n const mainEl = document.querySelector<HTMLElement>(mainSelector);\n const innerEl = document.querySelector<HTMLElement>(innerSelector);\n\n if (!mainEl || !innerEl) {\n console.warn(\"openBanner: Element(s) not found for selectors:\", {\n mainSelector,\n innerSelector,\n });\n return;\n }\n\n // Ensure clean start\n gsap.set(mainEl, { height: 0, overflow: \"hidden\" });\n gsap.set(innerEl, { opacity: 0 });\n\n const tl = gsap.timeline();\n\n // Animate main from height: 0 -> targetHeight\n tl.to(mainEl, {\n height: targetHeight,\n duration: 0.5,\n ease: \"power2.out\",\n });\n\n // After 0.2s, fade inner to 1\n tl.to(\n innerEl,\n {\n opacity: 1,\n duration: 0.3,\n ease: \"power1.out\",\n },\n 0.2\n );\n\n return tl;\n}\n\nexport function closeBanner(\n mainSelector: string,\n innerSelector: string,\n targetHeight: string | number = 0 // default collapse fully\n) {\n const w = (window as any) || {};\n const gsap = w.gsap as any;\n if (!gsap) {\n console.warn(\"GSAP not found on window. Did you include it globally?\");\n return;\n }\n\n const mainEl = document.querySelector<HTMLElement>(mainSelector);\n const innerEl = document.querySelector<HTMLElement>(innerSelector);\n\n if (!mainEl || !innerEl) {\n console.warn(\"closeBanner: Element(s) not found for selectors:\", {\n mainSelector,\n innerSelector,\n });\n return;\n }\n\n gsap.set(mainEl, { overflow: \"hidden\" });\n\n const tl = gsap.timeline();\n\n // Fade inner out\n tl.to(innerEl, {\n opacity: 0,\n duration: 0.25,\n ease: \"power1.out\",\n });\n\n // Collapse height to targetHeight (default 0)\n tl.to(\n mainEl,\n {\n height: targetHeight,\n duration: 0.45,\n ease: \"power2.inOut\",\n },\n 0.2\n );\n\n return tl;\n}", "export function setCookie(name: string, value: string, hours: number) {\n const date = new Date();\n date.setTime(date.getTime() + hours * 60 * 60 * 1000);\n document.cookie = `${name}=${value}; expires=${date.toUTCString()}; path=/`;\n }\n \n export function getCookie(name: string): string | null {\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n return match ? match[2] : null;\n }", "// screen-type.ts\n// Utility to get the current screen type\n// Breakpoints:\n// - Desktop: 992px+\n// - Tablet: 768px\u2013991px\n// - Mobile Landscape: 480px\u2013767px\n// - Mobile Portrait: under 480px\n\nexport type ScreenType = \"desktop\" | \"tablet\" | \"mobileLandscape\" | \"mobilePortrait\";\n\nexport function getScreenType(): ScreenType {\n const width = window.innerWidth;\n\n if (width >= 992) {\n return \"desktop\";\n } else if (width >= 768) {\n return \"tablet\";\n } else if (width >= 480) {\n return \"mobileLandscape\";\n } else {\n return \"mobilePortrait\";\n }\n}", "// geo.ts\nimport { getGeoCountryFromCookie, getGeolocationCached } from \"src/global/geolocation/geolocation-cached\";\nimport { GeoData } from \"src/global/geolocation/main\";\n\n/** Your banner config */\ntype CountryConfig = {\n country: string; // canonical lowercase name\n countryCode: string; // ISO-2 lowercase code (e.g., \"in\")\n url: string; // leading-slash path (e.g., \"/in\")\n tagline: string; // banner text/html\n aliases?: string[]; // optional extra names to match against\n};\n\nexport const COUNTRY_CONFIG: CountryConfig[] = [\n {\n country: \"united arab emirates\",\n aliases: [\"uae\", \"u.a.e\", \"united arab emirates\"],\n countryCode: \"ae\",\n url: \"/ae\",\n tagline: \"You're in the UAE. Welcome!\"\n },\n {\n country: \"saudi arabia\",\n aliases: [\"saudi\", \"ksa\", \"kingdom of saudi arabia\"],\n countryCode: \"sa\",\n url: \"/sa\",\n tagline: \"Hello Saudi Arabia!\"\n },\n {\n country: \"south africa\",\n aliases: [\"rsa\"],\n countryCode: \"za\",\n url: \"/za\",\n tagline: \"Hi South Africa!\"\n },\n {\n country: \"malaysia\",\n countryCode: \"my\",\n url: \"/my\",\n tagline: \"Selamat datang, Malaysia!\"\n },\n {\n country: \"indonesia\",\n aliases: [\"idn\"],\n countryCode: \"id\",\n url: \"/id\",\n tagline: \"Halo Indonesia!\"\n },\n {\n country: \"philippines\",\n aliases: [\"phl\", \"the philippines\"],\n countryCode: \"ph\",\n url: \"/ph\",\n tagline: \"Kumusta, Philippines!\"\n },\n {\n country: \"india\",\n aliases: [\"bharat\"],\n countryCode: \"in\",\n url: \"/in\",\n tagline: \"This country is India. Hi some text\"\n },\n // \uD83D\uDC47 fallback\n {\n country: \"global\",\n aliases: [\"global\", \"rest of world\", \"others\"],\n countryCode: \"global\", // keep lowercase for consistency\n url: \"/global\",\n tagline: \"This is rest of world. Hi some text\"\n }\n];\n\n/** Utility: normalize strings for comparisons */\nfunction norm(s: string | null | undefined): string {\n return (s ?? \"\").trim().toLowerCase();\n}\n\n/** Utility: ensure URL starts with a single leading slash */\nfunction toPath(path: string): string {\n const p = path.trim();\n if (!p) return \"/\";\n return p.startsWith(\"/\") ? p : `/${p}`;\n}\n\n/** Determine user's country as a *string* (might be name or code depending on your geo source) */\nexport async function getUserCountry(): Promise<string | null> {\n if (typeof window === \"undefined\") return null;\n\n // 1) Cookie fast-path\n const cookieCountry = getGeoCountryFromCookie();\n if (cookieCountry) return norm(cookieCountry);\n\n // 2) Cached or network\n const geo: GeoData | null = await getGeolocationCached();\n return norm((geo as any)?.country);\n}\n\n/** Find matching config by country *name* or *ISO-2 code* with aliases */\nfunction findCountryConfig(input: string | null): CountryConfig | null {\n const v = norm(input);\n if (!v) return null;\n\n const byCode = COUNTRY_CONFIG.find(c => norm(c.countryCode) === v);\n if (byCode) return byCode;\n\n const byName = COUNTRY_CONFIG.find(c => norm(c.country) === v);\n if (byName) return byName;\n\n const byAlias = COUNTRY_CONFIG.find(c => (c.aliases ?? []).some(a => norm(a) === v));\n if (byAlias) return byAlias;\n\n return null;\n}\n\n/** Helper to fetch the global config */\nfunction getGlobalConfig(): CountryConfig {\n const g = COUNTRY_CONFIG.find(c => c.country === \"global\");\n if (!g) throw new Error(\"[geo-banner] Global config not found in COUNTRY_CONFIG\");\n return g;\n}\n\nfunction updateBannerLink(countryCode?: string | null): void {\n if (typeof window === \"undefined\") return;\n\n const code = norm(countryCode);\n const conf =\n COUNTRY_CONFIG.find(c => norm(c.countryCode) === code) ||\n getGlobalConfig();\n\n const linkEl = document.querySelector<HTMLAnchorElement>('[fynd-banner-field=\"link\"]');\n if (linkEl) {\n const base = window.location.origin;\n linkEl.href = `${base}${toPath(conf.url)}`;\n }\n}\n\nexport function setSelectValueSafely(selectEl: HTMLSelectElement, desired: string) {\n // 1) resolve config\n const conf =\n findCountryConfig(desired) ??\n COUNTRY_CONFIG.find(c => c.country === \"global\");\n if (!conf) {\n console.warn(\"[geo-banner] No matching config for\", desired);\n return false;\n }\n const desiredCode = conf.countryCode; // assume already normalized/lowercase\n\n // 2) find matching option (normalize both sides)\n const opts = Array.from(selectEl.options);\n const opt = opts.find(o => norm(o.value) === norm(desiredCode));\n if (!opt) {\n console.warn(\"[geo-banner] No matching <option> for\", desiredCode, \"on\", selectEl);\n return false;\n }\n\n // 3) update the <select> itself (more reliable than toggling option.selected)\n const prev = selectEl.value;\n selectEl.value = opt.value;\n\n // if some browsers/frameworks didn\u2019t adopt .value, force selectedIndex too\n if (selectEl.value !== opt.value) {\n selectEl.selectedIndex = opts.indexOf(opt);\n }\n\n // 4) (optional) keep options\u2019 selected flags in sync\n opts.forEach(o => (o.selected = o === opt));\n\n // 5) fire events frameworks listen to\n if (prev !== selectEl.value) {\n selectEl.dispatchEvent(new Event(\"input\", { bubbles: true }));\n selectEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n\n console.log(\"[geo-banner] Select updated \u2192\", conf.country, \"(\", conf.countryCode, \")\");\n return true;\n}\n\n/** Update the banner content for a given countryCode (lowercase ISO-2) with global fallback */\nexport function updateBannerContent(countryCode?: string | null): void {\n if (typeof window === \"undefined\") return;\n\n const code = norm(countryCode);\n const conf =\n COUNTRY_CONFIG.find(c => norm(c.countryCode) === code) ||\n getGlobalConfig();\n // 1) Set <select fynd-banner-field=\"geoswitch\"> value (robustly)\n const selectEl =\n document.querySelector<HTMLSelectElement>('#geoswitch-select') ||\n document.querySelector<HTMLSelectElement>('[fynd-banner-field=\"geoswitch\"]');\n\n if (selectEl) {\n console.log(`country code is ${conf.countryCode}`)\n setSelectValueSafely(selectEl, conf.countryCode);\n selectEl.value = conf.countryCode; // or \"global\", etc.\n\n selectEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\n } else {\n console.warn('[geo-banner] Select not found: #geoswitch-select / [fynd-banner-field=\"geoswitch\"]');\n }\n\n // // 2) Update banner text (unchanged)\n // const textEl = document.querySelector<HTMLElement>('[fynd-banner-field=\"banner-text\"]');\n // if (textEl) textEl.innerHTML = conf.tagline;\n\n // 3) Update link href (unchanged)\n const linkEl = document.querySelector<HTMLAnchorElement>('[fynd-banner-field=\"link\"]');\n if (linkEl) {\n const base = window.location.origin;\n linkEl.href = `${base}${toPath(conf.url)}`;\n }\n}\n\n/**\n * Main entry: detect country and update banner if it matches one of the configured countries.\n * Always falls back to global if no match is found.\n */\nexport async function initCountryDetection(): Promise<CountryConfig> {\n if (typeof window === \"undefined\") return getGlobalConfig();\n\n if (document.readyState === \"loading\") {\n await new Promise<void>(resolve => {\n document.addEventListener(\"DOMContentLoaded\", () => resolve(), { once: true });\n });\n }\n\n const rawCountry = await getUserCountry();\n const match = findCountryConfig(rawCountry);\n const resolved = match ?? getGlobalConfig();\n\n // Debug visibility\n console.log(\"[geo-banner] rawCountry:\", rawCountry, \"\u2192 resolved:\", resolved.countryCode);\n\n // \u2705 Always update from the resolved config (guarantees global fallback)\n updateBannerContent(resolved.countryCode);\n\n // (If you also attached the select change listener, keep that here)\n const selectEl = document.querySelector<HTMLSelectElement>('[fynd-banner-field=\"geoswitch\"]');\n if (selectEl && !(selectEl as any).__geoHandlerAttached) {\n selectEl.addEventListener(\"change\", (e) => {\n const value = (e.target as HTMLSelectElement).value;\n updateBannerLink(value); // only updates href on change\n });\n (selectEl as any).__geoHandlerAttached = true;\n }\n\n return resolved;\n}", "import { getGeoCountryFromCookie, getGeolocationCached } from \"src/global/geolocation/geolocation-cached\";\nimport { closeBanner, openBanner } from \"src/global/animation/toggle-banner\";\nimport { getCookie, setCookie } from \"$utils/cookies\";\nimport { getScreenType } from \"src/global/screen-type\";\nimport { initCountryDetection, setSelectValueSafely } from \"./country-detection/main\";\n\n// --- Banner rules config -------------------------------------\n\n/**\n * Keys are route prefixes (normalized, no trailing slash).\n * Values control when the banner should open on that route.\n * \n * Modes:\n * - { mode: \"always\" } \u2192 always open on this path\n * - { mode: \"country\", countries: [...] } \u2192 open only if geo.country matches (case-insensitive)\n * - { mode: \"predicate\", test: (geo) => boolean } \u2192 custom rule\n */\nconst bannerRouteRules: Record<\n string,\n | { mode: \"always\" }\n | { mode: \"country\"; countries: string[] }\n | { mode: \"notCountry\"; countries: string[] }\n | { mode: \"predicate\"; test: (geo?: any) => boolean }\n> = {\n // \"/india\": { mode: \"always\" },\n\n \"/global\": { mode: \"country\", countries: [\"India\"] },\n\n // case: show if NOT from India\n \"/\": { mode: \"notCountry\", countries: [\"India\"] },\n};\n\n//ip banner elements\nconst ipBannerMain = '[fynd-navigation=\"ip-banner\"]';\nconst ipBannerInner = '[fynd-navigation=\"ip-banner-inner\"]';\nconst closeIpBanner = '[fynd-navigation=\"ip-banner-close\"]';\n\n//announcement bar elements\nconst announcementBar = document.querySelector('[fynd-navigation=\"announcement-bar\"]');\nconst announcementList = document.querySelector('[fynd-navigation=\"announcement-list\"]');\n\n// Global navigation state\nconst navigationData = {\n ipbanner: {\n visibility: false,\n height: {\n desktop: \"56px\",\n tablet: \"60px\",\n mobileLandscape : \"120px\",\n mobilePortrait: \"120px\",\n },\n },\n announcementbar: {\n visibility: false,\n height: {\n desktop: \"40px\",\n tablet: \"40px\",\n mobileLandscape : \"40px\",\n mobilePortrait: \"46px\",\n },\n },\n scrolled: {\n visibility: false,\n height: {\n desktop: \"150px\",\n tablet: \"150px\",\n mobileLandscape : \"40px\",\n mobilePortrait: \"150px\",\n },\n },\n default:{\n visibility : true,\n height: {\n desktop: \"150px\",\n tablet: \"150px\",\n mobileLandscape : \"40px\",\n mobilePortrait: \"150px\",\n },\n }\n};\n\nconst normalizePath = (p: string) => {\n try {\n const urlPath = p.split(\"?\")[0].split(\"#\")[0];\n if (urlPath === \"/\") return \"/\";\n return urlPath.replace(/\\/+$/, \"\") || \"/\";\n } catch {\n return \"/\";\n }\n};\n\n// Longest-prefix match, so \"/india/offers\" matches \"/india\"\nfunction getMatchingRule(pathname: string) {\n const path = normalizePath(pathname);\n let bestKey = \"\";\n for (const key of Object.keys(bannerRouteRules)) {\n const normKey = normalizePath(key);\n if (path === normKey || path.startsWith(normKey + \"/\")) {\n if (normKey.length > bestKey.length) bestKey = normKey;\n }\n }\n return bestKey ? { key: bestKey, rule: bannerRouteRules[bestKey] } : null;\n}\n\nfunction shouldOpenBannerForPage(pathname: string, geo?: { country?: string }) {\n const match = getMatchingRule(pathname);\n if (!match) return false;\n\n const { rule } = match;\n const visitorCountry = (geo?.country || \"\").toLowerCase();\n\n switch (rule.mode) {\n case \"always\":\n return true;\n case \"country\":\n return rule.countries.some(c => c.toLowerCase() === visitorCountry);\n case \"notCountry\":\n return !rule.countries.some(c => c.toLowerCase() === visitorCountry);\n case \"predicate\":\n return !!rule.test?.(geo);\n default:\n return false;\n }\n}\n// \u2705 Function to init announcement bar\nfunction initAnnouncementBar() {\n const swiperEl = document.querySelector<HTMLElement>(\n '[fynd-navigation=\"announcement-swiper\"]'\n );\n\n // \u2705 Always try to init swiper first (if element exists)\n if (swiperEl && !(swiperEl as any).__swiperInstance) {\n try {\n const Swiper = (window as any).Swiper; // use global Swiper\n const swiper = new Swiper(swiperEl, {\n slidesPerView: 1,\n spaceBetween: 0,\n effect: \"fade\",\n fadeEffect: { crossFade: true },\n autoplay: {\n delay: 3000,\n disableOnInteraction: false,\n },\n loop: true,\n speed: 1000,\n allowTouchMove: false, // disable manual swipe\n on: {\n init: function (this: any): void {\n (window as any).announcementSlides = this.slides.length;\n\n if (this.slides.length <= 1) {\n if (this.autoplay && typeof this.autoplay.stop === \"function\") {\n this.autoplay.stop();\n }\n }\n },\n },\n });\n\n (swiperEl as any).__swiperInstance = swiper;\n console.log(\"Announcement Swiper initialized \u2705\");\n } catch (err) {\n console.warn(\"Failed to init Announcement Swiper:\", err);\n }\n }\n\n // \uD83D\uDD3D Then handle visibility logic\n if (announcementBar && announcementList && announcementList.children.length > 0) {\n navigationData.announcementbar.visibility = true;\n } else {\n navigationData.announcementbar.visibility = false;\n\n if (announcementBar && announcementBar.parentNode) {\n if (swiperEl && (swiperEl as any).__swiperInstance) {\n (swiperEl as any).__swiperInstance.destroy(true, true);\n (swiperEl as any).__swiperInstance = undefined;\n }\n announcementBar.parentNode.removeChild(announcementBar);\n console.log(\"Announcement bar removed \u274C\");\n }\n }\n}\n\nfunction initDesktopDropdownMenu() {\n const selector = '[fynd-navigation=\"dropdown-container\"]';\n const el = document.querySelector<HTMLElement>(selector);\n \n console.log(\"Dropdown container element:\", el);\n \n if (!el) {\n console.warn(`initDesktopDropdownMenu: element not found: ${selector}`);\n return;\n }\n \n const screenType = getScreenType?.() ?? \"unknown\";\n console.log(\"Detected screenType:\", screenType);\n \n // helper\n const toPx = (v?: string | number): number => {\n if (typeof v === \"number\") return v;\n if (typeof v === \"string\") {\n const n = parseFloat(v);\n return Number.isFinite(n) ? n : 0;\n }\n return 0;\n };\n \n // Not desktop \u2192 reset\n if (screenType !== \"desktop\") {\n console.log(\"Not desktop \u2192 resetting transform\");\n el.style.transition = el.style.transition || \"transform 0.3s ease\";\n el.style.transform = \"translateY(0px)\";\n return;\n }\n \n // Calculate total\n let total = 0;\n \n console.log(\"navigationData:\", navigationData);\n \n if (navigationData.default?.visibility) {\n const h = toPx(navigationData.default.height?.[screenType]);\n total += h;\n console.log(\"default height:\", h);\n }\n \n if (navigationData.announcementbar?.visibility) {\n const h = toPx(navigationData.announcementbar.height?.[screenType]);\n total += h;\n console.log(\"announcementbar height:\", h);\n }\n \n if (navigationData.ipbanner?.visibility) {\n const h = toPx(navigationData.ipbanner.height?.[screenType]);\n total += h;\n console.log(\"ipbanner height:\", h);\n }\n \n console.log(\"Total height to be moved:\", total);\n \n // Apply transition\n if (!el.style.transition) {\n el.style.transition = \"transform 0.3s ease\";\n }\n \n requestAnimationFrame(() => {\n console.log(\"Applying transform...\");\n el.style.transform = `translateY(${total}px)`;\n console.log(\"Transform applied:\", el.style.transform);\n });\n }\n\nfunction initNavigationSpacer() {\n const spacer = document.querySelector<HTMLElement>(\n '[fynd-navigation=\"spacer\"][data-wf--navigation-spacer--variant=\"dynamic\"]'\n );\n \n if (!spacer) {\n console.warn(\"initNavigationSpacer: spacer element not found \u274C\");\n return;\n }\n \n // Helper \u2192 convert height to number\n const toPx = (v?: string | number): number => {\n if (typeof v === \"number\") return v;\n if (typeof v === \"string\") {\n const n = parseFloat(v);\n return Number.isFinite(n) ? n : 0;\n }\n return 0;\n };\n \n const screenType = getScreenType?.() ?? \"desktop\";\n console.log(\"initNavigationSpacer \u2192 screenType:\", screenType);\n \n let total = 0;\n \n // \u2705 Add default height if visible\n if (navigationData.default?.visibility) {\n const h = toPx(navigationData.default.height?.[screenType]);\n total += h;\n }\n \n // \u2705 Add announcement bar height if visible\n if (navigationData.announcementbar?.visibility) {\n const h = toPx(navigationData.announcementbar.height?.[screenType]);\n total += h;\n }\n \n // \u2705 Add ip banner height if visible\n if (navigationData.ipbanner?.visibility) {\n const h = toPx(navigationData.ipbanner.height?.[screenType]);\n total += h;\n }\n \n console.log(\"initNavigationSpacer \u2192 total spacer height:\", total);\n \n // Apply height to spacer element\n spacer.style.height = `${total}px`;\n }\n\n// \u2705 Function to init IP banner\nasync function initIpBanner() {\n const ipClosed = getCookie(\"ipBannerClosed\") === \"true\";\n if (ipClosed) {\n console.log(\"Banner previously closed, skipping display\");\n navigationData.ipbanner.visibility = false;\n return;\n }\n\n // You already have cached geolocation\n const geo = await getGeolocationCached();\n if (geo) console.log(\"Geo data \", geo);\n\n // Decide based on current path + rules\n const path = window.location.pathname || \"/\";\n const allowByRoute = shouldOpenBannerForPage(path, geo ?? undefined);\n\n // Keep your existing country detection flow if you need it\n // (e.g., to preselect dropdowns). If not needed, you can remove this call.\n const countryReady = await initCountryDetection();\n\n if (allowByRoute && countryReady) {\n openBanner(ipBannerMain, ipBannerInner, navigationData.ipbanner.height.desktop);\n navigationData.ipbanner.visibility = true;\n\n const closeBtn = document.querySelector<HTMLElement>(closeIpBanner);\n if (closeBtn) {\n closeBtn.addEventListener(\"click\", () => {\n closeBanner(ipBannerMain, ipBannerInner);\n setCookie(\"ipBannerClosed\", \"true\", 24);\n navigationData.ipbanner.visibility = false;\n // Recompute after closing\n initDesktopDropdownMenu();\n initNavigationSpacer();\n });\n }\n } else {\n navigationData.ipbanner.visibility = false;\n }\n}\n \n// init functions\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await initIpBanner(); \n initAnnouncementBar();\n navigationData.scrolled.visibility = window.scrollY > 50;\n initDesktopDropdownMenu();\n initNavigationSpacer();\n console.log(navigationData);\n});\n\n// Update navigation data on scroll\nwindow.addEventListener(\"scroll\", () => {\n navigationData.scrolled.visibility = window.scrollY > 50;\n});\n\nconsole.log(\"working\");"],
5
+ "mappings": "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",
6
+ "names": ["setCookie", "getCookie", "getCookie", "setCookie"]
7
+ }
@@ -1 +1 @@
1
- [data-tab-link-active=true]{border-right-color:#404040;background-color:#f8f8f9;opacity:1}[data-tab-content-active]{display:none}[data-tab-content-active=true]{display:block}[data-tab-content-active=false]{display:none}[data-nav-element=mover]{height:0;overflow:hidden}[data-nav-element=overlay]{opacity:0;display:none}[data-nav-element=wrapper]{top:44px}[data-nav-toggle=main-menu]{z-index:10!important}[data-mobile-nav=main-menu]{z-index:999}[data-nav-element=mover]{border-radius:0 0 12px 12px;box-shadow:#00000008 0 12px 16px 6px}[data-dropdown-item],[data-dropdown-item=resources],[data-dropdown-item=company]{width:100%}[data-desktop-content]{display:none}@media (max-width: 992px){[data-desktop-content]{display:block}}.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal{display:none;flex-direction:column;height:100%;bottom:0;justify-content:center;gap:4px;padding-left:20px;padding-right:20px}span.swiper-pagination-bullet{width:6px;height:6px;background:#fffc;pointer-events:auto}span.swiper-pagination-bullet.swiper-pagination-bullet-active{background:#fff}@media screen and (max-width: 1024px){.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal{left:-16px}}[navigation-scrolled=true]{transform:translateY(-40px);box-shadow:#00000008 0 12px 16px 10px}[announcementbar=false]{transform:translateY(-40px)!important}[navigation-scrolled-menu=false]{top:0}[navigation-scrolled=false]{transform:translateY(0)}@media screen and (max-width: 991px){[navigation-scrolled=true]{transform:translateY(-50px)}[navigation-scrolled-menu=true]{top:46px}[announcementbar=false]{transform:translateY(-46px)!important}}[navigation-scrolled-dependent=true].click-loader,[navigation-scrolled-dependent=false].click-loader{top:40px}[fynd-secondary-nav=link]{border-bottom:1px solid #0000;border-top-left-radius:6px;border-top-right-radius:6px;padding:.65rem 1.5rem;transition-property:all;transition-duration:.3s;transition-timing-function:ease;cursor:pointer;user-select:none;white-space:nowrap}[fynd-secondary-navlink-active=true]{background-color:#f2f2f2;border-bottom-color:#000}[fynd-secondary-nav=wrapper]{display:none}
1
+ [data-tab-link-active=true]{border-right-color:#404040;background-color:#f8f8f9;opacity:1}[data-tab-content-active]{display:none}[data-tab-content-active=true]{display:block}[data-tab-content-active=false]{display:none}[data-nav-element=mover]{height:0;overflow:hidden}[data-nav-element=overlay]{opacity:0;display:none}[data-nav-element=wrapper]{top:44px}[data-nav-toggle=main-menu]{z-index:10!important}[data-mobile-nav=main-menu]{z-index:999}[data-nav-element=mover]{border-radius:0 0 12px 12px;box-shadow:#00000008 0 12px 16px 6px}[data-dropdown-item],[data-dropdown-item=resources],[data-dropdown-item=company]{width:100%}[data-desktop-content]{display:none}@media (max-width: 992px){[data-desktop-content]{display:block}}.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal{display:none;flex-direction:column;height:100%;bottom:0;justify-content:center;gap:4px;padding-left:20px;padding-right:20px}span.swiper-pagination-bullet{width:6px;height:6px;background:#fffc;pointer-events:auto}span.swiper-pagination-bullet.swiper-pagination-bullet-active{background:#fff}@media screen and (max-width: 1024px){.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal{left:-16px}}[navigation-scrolled=true]{transform:translateY(-40px);box-shadow:#00000008 0 12px 16px 10px}[announcementbar=false]{transform:translateY(-40px)!important}[navigation-scrolled-menu=false]{top:0}[navigation-scrolled=false]{transform:translateY(0)}@media screen and (max-width: 991px){[navigation-scrolled=true]{transform:translateY(-50px)}[navigation-scrolled-menu=true]{top:0}[announcementbar=false]{transform:translateY(-46px)!important}}[navigation-scrolled-dependent=true].click-loader,[navigation-scrolled-dependent=false].click-loader{top:40px}[fynd-secondary-nav=link]{border-bottom:1px solid #0000;border-top-left-radius:6px;border-top-right-radius:6px;padding:.65rem 1.5rem;transition-property:all;transition-duration:.3s;transition-timing-function:ease;cursor:pointer;user-select:none;white-space:nowrap}[fynd-secondary-navlink-active=true]{background-color:#f2f2f2;border-bottom-color:#000}[fynd-secondary-nav=wrapper]{display:none}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/navigation/style.css"],
4
- "sourcesContent": ["[data-tab-link-active=\"true\"] {\n border-right-color: #404040;\n background-color: #f8f8f9;\n opacity: 1;\n}\n\n\n\n[data-tab-content-active] {\n display: none;\n}\n\n[data-tab-content-active=\"true\"] {\n display: block;\n}\n\n[data-tab-content-active=\"false\"] {\n display: none;\n}\n\n[data-nav-element=\"mover\"] {\n height: 0;\n overflow: hidden;\n}\n\n[data-nav-element=\"overlay\"] {\n opacity: 0;\n display: none;\n}\n\n[data-nav-element=\"wrapper\"] {\n top: 44px;\n /* top: 100px; */\n}\n\n[data-nav-toggle=\"main-menu\"]{\nz-index: 10 !important; /* z-index: 999; if we need to show in nested menu too */\n \n \n}\n\n[data-mobile-nav=\"main-menu\"] {\n z-index: 999; /* z-index: 999; if we need to show in nested menu too */\n}\n\n[data-nav-element=\"mover\"] {\n border-radius: 0px 0px 12px 12px;\n box-shadow: rgba(0, 0, 0, 0.03) 0px 12px 16px 6px;\n}\n\n[data-dropdown-item] {\n width: 100%;\n}\n\n[data-dropdown-item=\"resources\"] {\n width: 100%;\n}\n\n[data-dropdown-item=\"company\"] {\n width: 100%;\n}\n\n[data-desktop-content] {\n display: none;\n}\n\n@media (max-width: 992px) {\n [data-desktop-content] {\n display: block;\n }\n}\n\n/* announcement bar */\n\n.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal {\n display: none;\n flex-direction: column;\n height: 100%;\n bottom: 0px;\n justify-content: center;\n gap: 4px;\n padding-left: 20px;\n padding-right: 20px;\n}\n\nspan.swiper-pagination-bullet {\n width: 6px;\n height: 6px;\n background: rgba(255, 255, 255, 0.80);\n pointer-events: auto;\n}\n\nspan.swiper-pagination-bullet.swiper-pagination-bullet-active {\n background: white;\n}\n\n@media screen and (max-width: 1024px) {\n .announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal {\n left: -16px;\n }\n}\n\n\n/* navigation scrolled up */\n[navigation-scrolled=\"true\"] {\n transform: translateY(-40px);\n box-shadow: rgba(0, 0, 0, 0.03) 0px 12px 16px 10px;\n}\n\n[announcementbar=\"false\"]{\n transform: translateY(-40px) !important;\n}\n\n[navigation-scrolled-menu=\"false\"] {\n top: 0px;\n }\n\n[navigation-scrolled=\"false\"] {\n transform: translateY(0);\n}\n\n@media screen and (max-width: 991px) {\n [navigation-scrolled=\"true\"] {\n transform: translateY(-50px);\n }\n\n [navigation-scrolled-menu=\"true\"] {\n top: 46px;\n }\n\n[announcementbar=\"false\"]{\n transform: translateY(-46px) !important;\n}\n}\n\n/* navigation scrolled when click loader is visible */\n[navigation-scrolled-dependent=\"true\"].click-loader{\n top : 40px;\n}\n[navigation-scrolled-dependent=\"false\"].click-loader{\n top : 0px;\n}\n\n/* secondary navigation */\n\n[fynd-secondary-nav=\"link\"]{\n border-bottom: 1px solid #0000;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n padding-top: 0.65rem;\n padding-bottom: 0.65rem;\n transition-property: all;\n transition-duration: 300ms;\n transition-timing-function: ease;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n[fynd-secondary-navlink-active=\"true\"]{\n background-color: #f2f2f2;\n border-bottom-color: #000;\n}\n\n[fynd-secondary-nav=\"wrapper\"] {\n display: none;\n}"],
4
+ "sourcesContent": ["[data-tab-link-active=\"true\"] {\n border-right-color: #404040;\n background-color: #f8f8f9;\n opacity: 1;\n}\n\n\n\n[data-tab-content-active] {\n display: none;\n}\n\n[data-tab-content-active=\"true\"] {\n display: block;\n}\n\n[data-tab-content-active=\"false\"] {\n display: none;\n}\n\n[data-nav-element=\"mover\"] {\n height: 0;\n overflow: hidden;\n}\n\n[data-nav-element=\"overlay\"] {\n opacity: 0;\n display: none;\n}\n\n[data-nav-element=\"wrapper\"] {\n top: 44px;\n /* top: 100px; */\n}\n\n[data-nav-toggle=\"main-menu\"]{\nz-index: 10 !important; /* z-index: 999; if we need to show in nested menu too */\n \n \n}\n\n[data-mobile-nav=\"main-menu\"] {\n z-index: 999; /* z-index: 999; if we need to show in nested menu too */\n}\n\n[data-nav-element=\"mover\"] {\n border-radius: 0px 0px 12px 12px;\n box-shadow: rgba(0, 0, 0, 0.03) 0px 12px 16px 6px;\n}\n\n[data-dropdown-item] {\n width: 100%;\n}\n\n[data-dropdown-item=\"resources\"] {\n width: 100%;\n}\n\n[data-dropdown-item=\"company\"] {\n width: 100%;\n}\n\n[data-desktop-content] {\n display: none;\n}\n\n@media (max-width: 992px) {\n [data-desktop-content] {\n display: block;\n }\n}\n\n/* announcement bar */\n\n.announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal {\n display: none;\n flex-direction: column;\n height: 100%;\n bottom: 0px;\n justify-content: center;\n gap: 4px;\n padding-left: 20px;\n padding-right: 20px;\n}\n\nspan.swiper-pagination-bullet {\n width: 6px;\n height: 6px;\n background: rgba(255, 255, 255, 0.80);\n pointer-events: auto;\n}\n\nspan.swiper-pagination-bullet.swiper-pagination-bullet-active {\n background: white;\n}\n\n@media screen and (max-width: 1024px) {\n .announcement-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal {\n left: -16px;\n }\n}\n\n\n/* navigation scrolled up */\n[navigation-scrolled=\"true\"] {\n transform: translateY(-40px);\n box-shadow: rgba(0, 0, 0, 0.03) 0px 12px 16px 10px;\n}\n\n[announcementbar=\"false\"]{\n transform: translateY(-40px) !important;\n}\n\n[navigation-scrolled-menu=\"false\"] {\n top: 0px;\n }\n\n[navigation-scrolled=\"false\"] {\n transform: translateY(0);\n}\n\n@media screen and (max-width: 991px) {\n [navigation-scrolled=\"true\"] {\n transform: translateY(-50px);\n }\n\n [navigation-scrolled-menu=\"true\"] {\n top: 0px;\n }\n\n[announcementbar=\"false\"]{\n transform: translateY(-46px) !important;\n}\n}\n\n/* navigation scrolled when click loader is visible */\n[navigation-scrolled-dependent=\"true\"].click-loader{\n top : 40px;\n}\n[navigation-scrolled-dependent=\"false\"].click-loader{\n top : 40px;\n}\n\n/* secondary navigation */\n\n[fynd-secondary-nav=\"link\"]{\n border-bottom: 1px solid #0000;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n padding-top: 0.65rem;\n padding-bottom: 0.65rem;\n transition-property: all;\n transition-duration: 300ms;\n transition-timing-function: ease;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n[fynd-secondary-navlink-active=\"true\"]{\n background-color: #f2f2f2;\n border-bottom-color: #000;\n}\n\n[fynd-secondary-nav=\"wrapper\"] {\n display: none;\n}"],
5
5
  "mappings": ";AAAA,CAAC;AACC,sBAAoB;AACpB,oBAAkB;AAClB,WAAS;AACX;AAIA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACC,UAAQ;AACR,YAAU;AACZ;AAEA,CAAC;AACC,WAAS;AACT,WAAS;AACX;AAEA,CAAC;AACC,OAAK;AAEP;AAEA,CAAC;AACD,WAAS;AAGT;AAEA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACC,iBAAe,IAAI,IAAI,KAAK;AAC5B,cAAY,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,KAAK,KAAK;AAChD;AAEA,CAAC;AACC,SAAO;AACT;AAEA,CAAC;AACC,SAAO;AACT;AAEA,CAAC;AACC,SAAO;AACT;AAEA,CAAC;AACC,WAAS;AACX;AAEA,OAAO,CAAC,SAAS,EAAE;AACjB,GAAC;AACC,aAAS;AACX;AACF;AAIA,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,yBAAyB,CAAC;AAC7E,WAAS;AACT,kBAAgB;AAChB,UAAQ;AACR,UAAQ;AACR,mBAAiB;AACjB,OAAK;AACL,gBAAc;AACd,iBAAe;AACjB;AAEA,IAAI,CAAC;AACH,SAAO;AACP,UAAQ;AACR,cAAY,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAChC,kBAAgB;AAClB;AAEA,IAAI,CAPC,wBAOwB,CAAC;AAC5B,cAAY;AACd;AAEA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC5B,GAvBD,uBAuByB,CAvBD,2BAuB6B,CAvBD,yBAuB2B,CAvBD;AAwB3E,UAAM;AACR;AACF;AAIA,CAAC;AACC,aAAW,WAAW;AACtB,cAAY,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,KAAK,KAAK;AAChD;AAEA,CAAC;AACC,aAAW,WAAW;AACxB;AAEA,CAAC;AACG,OAAK;AACP;AAEF,CAAC;AACC,aAAW,WAAW;AACxB;AAEA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC5B,GAAC;AACC,eAAW,WAAW;AACxB;AAEA,GAAC;AACC,SAAK;AACP;AAEF,GAAC;AACC,eAAW,WAAW;AACxB;AACA;AAGA,CAAC,mCAAqC,CAAC;AACrC,OAAM;AACR;AACA,CAAC,oCAAsC,CAHA;AAIrC,OAAM;AACR;AAIA,CAAC;AACC,iBAAe,IAAI,MAAM;AACzB,0BAAwB;AACxB,2BAAyB;AACzB,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AAChB,uBAAqB;AACrB,uBAAqB;AACrB,8BAA4B;AAC5B,UAAQ;AACR,eAAa;AACb,eAAa;AACf;AACA,CAAC;AACC,oBAAkB;AAClB,uBAAqB;AACvB;AAEA,CAAC;AACC,WAAS;AACX;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1 @@
1
+ .test__class{color:#f0f8ff}[fynd-navigation=dropdown-container]{top:0!important}[fynd-navigation=ip-banner]{height:0px;overflow:hidden}#geoswitch-select::-ms-expand{display:none}#geoswitch-select{appearance:none;-webkit-appearance:none;-moz-appearance:none}[data-mobile-nav=main-menu]{z-index:8999999999999}
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/navigation/temp.css"],
4
+ "sourcesContent": [".test__class{\n color: aliceblue;\n}\n\n[fynd-navigation=\"dropdown-container\"]{\n top: 0 !important;\n}\n\n/* No control visibility of anouncementbar if there is any annnouncement -> make visible in webflow else make hidden */\n[fynd-navigation=\"announcement-bar\"]{\n\n}\n[fynd-navigation=\"ip-banner\"]{\n height: 0px;\n overflow: hidden;\n}\n\n#geoswitch-select::-ms-expand {\n display: none; \n }\n\n #geoswitch-select {\n appearance: none; /* Standard */\n -webkit-appearance: none; /* Safari/Chrome */\n -moz-appearance: none; /* Firefox */\n }\n\n\n[data-mobile-nav=main-menu] {\n z-index: 8999999999999;\n}"],
5
+ "mappings": ";AAAA,CAAC;AACG,SAAO;AACX;AAEA,CAAC;AACE,OAAK;AACR;AAGA,CAAC;AAED;AACA,CAAC;AACG,UAAQ;AACR,YAAU;AACd;AAEA,CAAC,gBAAgB;AACb,WAAS;AACX;AAEA,CAJD;AAKG,cAAY;AACZ,sBAAoB;AACpB,mBAAiB;AACnB;AAGF,CAAC;AACG,WAAS;AACb;",
6
+ "names": []
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../bin/live-reload.js", "../../src/others/hero-india-animation-2.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", "// assumes gsap is available globally\nconst gsap = (window as any).gsap as any;\n\nexport const heroAnimatedText: string[] = [\n \"selling online\",\n \"self-checkout in store\",\n \"product photoshoot\",\n \"multi-channel catalog\",\n \"hyperlocal delivery\",\n \"agentic support\",\n];\n\nexport function playChroma(): void {\n const el = document.getElementById(\"chroma\");\n if (!el) return;\n el.setAttribute(\"data-animate\", \"false\");\n void el.offsetWidth; // reflow\n el.setAttribute(\"data-animate\", \"true\");\n}\n\nfunction makeChromaHeading(text: string): HTMLHeadingElement {\n const h1 = document.createElement(\"h1\");\n h1.id = \"chroma\";\n h1.className = \"chroma-text\";\n h1.setAttribute(\"data-animate\", \"false\");\n h1.textContent = text;\n h1.style.opacity = \"0\"; // start hidden\n return h1;\n}\n\ntype LoopOptions = { fadeDuration?: number; holdDuration?: number };\n\nexport function startChromaLoop(\n texts: string[] = heroAnimatedText,\n { fadeDuration = 0.35, holdDuration = 2.0 }: LoopOptions = {}\n) {\n const slot = document.querySelector<HTMLElement>(\"[chroma-slot]\");\n if (!slot || !gsap) return null;\n\n // Build one slide (child timeline) per string\n const slide = (text: string) => {\n const el = makeChromaHeading(text);\n const t = gsap.timeline({ defaults: { ease: \"power1.out\" } });\n\n t.add(() => {\n // Append right when this slide starts\n slot.appendChild(el);\n });\n\n t.to(el, {\n duration: fadeDuration,\n autoAlpha: 1, // opacity + visibility\n onStart: () => playChroma(),\n });\n\n t.to(el, { duration: holdDuration, autoAlpha: 1 });\n\n t.to(el, { duration: fadeDuration, autoAlpha: 0 });\n\n t.add(() => {\n el.remove();\n });\n\n return t;\n };\n\n // Master loop\n const master = gsap.timeline({ repeat: -1 });\n texts.forEach((txt) => master.add(slide(txt)));\n\n return master;\n}\n\n// kick it off\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n startChromaLoop();\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,MAAM,OAAQ,OAAe;AAEtB,MAAM,mBAA6B;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEO,WAAS,aAAmB;AACjC,UAAM,KAAK,SAAS,eAAe,QAAQ;AAC3C,QAAI,CAAC,GAAI;AACT,OAAG,aAAa,gBAAgB,OAAO;AACvC,SAAK,GAAG;AACR,OAAG,aAAa,gBAAgB,MAAM;AAAA,EACxC;AAEA,WAAS,kBAAkB,MAAkC;AAC3D,UAAM,KAAK,SAAS,cAAc,IAAI;AACtC,OAAG,KAAK;AACR,OAAG,YAAY;AACf,OAAG,aAAa,gBAAgB,OAAO;AACvC,OAAG,cAAc;AACjB,OAAG,MAAM,UAAU;AACnB,WAAO;AAAA,EACT;AAIO,WAAS,gBACd,QAAkB,kBAClB,EAAE,eAAe,MAAM,eAAe,EAAI,IAAiB,CAAC,GAC5D;AACA,UAAM,OAAO,SAAS,cAA2B,eAAe;AAChE,QAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAG3B,UAAM,QAAQ,CAAC,SAAiB;AAC9B,YAAM,KAAK,kBAAkB,IAAI;AACjC,YAAM,IAAI,KAAK,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,EAAE,CAAC;AAE5D,QAAE,IAAI,MAAM;AAEV,aAAK,YAAY,EAAE;AAAA,MACrB,CAAC;AAED,QAAE,GAAG,IAAI;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA;AAAA,QACX,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,QAAE,GAAG,IAAI,EAAE,UAAU,cAAc,WAAW,EAAE,CAAC;AAEjD,QAAE,GAAG,IAAI,EAAE,UAAU,cAAc,WAAW,EAAE,CAAC;AAEjD,QAAE,IAAI,MAAM;AACV,WAAG,OAAO;AAAA,MACZ,CAAC;AAED,aAAO;AAAA,IACT;AAGA,UAAM,SAAS,KAAK,SAAS,EAAE,QAAQ,GAAG,CAAC;AAC3C,UAAM,QAAQ,CAAC,QAAQ,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC;AAE7C,WAAO;AAAA,EACT;AAGA,WAAS,iBAAiB,oBAAoB,MAAM;AAClD,oBAAgB;AAAA,EAClB,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", "// assumes gsap is available globally\nconst gsap = (window as any).gsap as any;\n\nexport const heroAnimatedText: string[] = [\n \"Online Selling\",\n \"Omnichannel POS\",\n \"Quick Commerce\",\n \"Order Management\",\n \"Supply Chain\",\n \"Enriched Catalog\",\n \"Photoshoot\",\n \"Retail Insights\",\n ];\n\nexport function playChroma(): void {\n const el = document.getElementById(\"chroma\");\n if (!el) return;\n el.setAttribute(\"data-animate\", \"false\");\n void el.offsetWidth; // reflow\n el.setAttribute(\"data-animate\", \"true\");\n}\n\nfunction makeChromaHeading(text: string): HTMLHeadingElement {\n const h1 = document.createElement(\"h1\");\n h1.id = \"chroma\";\n h1.className = \"chroma-text\";\n h1.setAttribute(\"data-animate\", \"false\");\n h1.textContent = text;\n h1.style.opacity = \"0\"; // start hidden\n return h1;\n}\n\ntype LoopOptions = { fadeDuration?: number; holdDuration?: number };\n\nexport function startChromaLoop(\n texts: string[] = heroAnimatedText,\n { fadeDuration = 0.35, holdDuration = 3.0 }: LoopOptions = {}\n) {\n const slot = document.querySelector<HTMLElement>(\"[chroma-slot]\");\n if (!slot || !gsap) return null;\n\n // Build one slide (child timeline) per string\n const slide = (text: string) => {\n const el = makeChromaHeading(text);\n const t = gsap.timeline({ defaults: { ease: \"power1.out\" } });\n\n t.add(() => {\n // Append right when this slide starts\n slot.appendChild(el);\n });\n\n t.to(el, {\n duration: fadeDuration,\n autoAlpha: 1, // opacity + visibility\n onStart: () => playChroma(),\n });\n\n t.to(el, { duration: holdDuration, autoAlpha: 1 });\n\n t.to(el, { duration: fadeDuration, autoAlpha: 0 });\n\n t.add(() => {\n el.remove();\n });\n\n return t;\n };\n\n // Master loop\n const master = gsap.timeline({ repeat: -1 });\n texts.forEach((txt) => master.add(slide(txt)));\n\n return master;\n}\n\n// kick it off\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n startChromaLoop();\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,MAAM,OAAQ,OAAe;AAEtB,MAAM,mBAA6B;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEK,WAAS,aAAmB;AACjC,UAAM,KAAK,SAAS,eAAe,QAAQ;AAC3C,QAAI,CAAC,GAAI;AACT,OAAG,aAAa,gBAAgB,OAAO;AACvC,SAAK,GAAG;AACR,OAAG,aAAa,gBAAgB,MAAM;AAAA,EACxC;AAEA,WAAS,kBAAkB,MAAkC;AAC3D,UAAM,KAAK,SAAS,cAAc,IAAI;AACtC,OAAG,KAAK;AACR,OAAG,YAAY;AACf,OAAG,aAAa,gBAAgB,OAAO;AACvC,OAAG,cAAc;AACjB,OAAG,MAAM,UAAU;AACnB,WAAO;AAAA,EACT;AAIO,WAAS,gBACd,QAAkB,kBAClB,EAAE,eAAe,MAAM,eAAe,EAAI,IAAiB,CAAC,GAC5D;AACA,UAAM,OAAO,SAAS,cAA2B,eAAe;AAChE,QAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAG3B,UAAM,QAAQ,CAAC,SAAiB;AAC9B,YAAM,KAAK,kBAAkB,IAAI;AACjC,YAAM,IAAI,KAAK,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,EAAE,CAAC;AAE5D,QAAE,IAAI,MAAM;AAEV,aAAK,YAAY,EAAE;AAAA,MACrB,CAAC;AAED,QAAE,GAAG,IAAI;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA;AAAA,QACX,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,QAAE,GAAG,IAAI,EAAE,UAAU,cAAc,WAAW,EAAE,CAAC;AAEjD,QAAE,GAAG,IAAI,EAAE,UAAU,cAAc,WAAW,EAAE,CAAC;AAEjD,QAAE,IAAI,MAAM;AACV,WAAG,OAAO;AAAA,MACZ,CAAC;AAED,aAAO;AAAA,IACT;AAGA,UAAM,SAAS,KAAK,SAAS,EAAE,QAAQ,GAAG,CAAC;AAC3C,UAAM,QAAQ,CAAC,QAAQ,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC;AAE7C,WAAO;AAAA,EACT;AAGA,WAAS,iBAAiB,oBAAoB,MAAM;AAClD,oBAAgB;AAAA,EAClB,CAAC;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fynd-design-engineering/fynd-one-v2",
3
- "version": "3.3.11",
3
+ "version": "3.3.13",
4
4
  "description": "Updated CDN for fynd.com",
5
5
  "homepage": "https://github.com/Fynd-Design-Engineering/Fynd-Utils/blob/main/README.md",
6
6
  "license": "ISC",