@hortonstudio/main 1.9.24 → 1.9.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/hs-animations-tvD4W7u0.js +3 -0
- package/dist/assets/hs-animations-tvD4W7u0.js.br +0 -0
- package/dist/assets/hs-animations-tvD4W7u0.js.gz +0 -0
- package/dist/assets/hs-animations-tvD4W7u0.js.map +1 -0
- package/dist/assets/hs-counter-DmspKHOV.js +2 -0
- package/dist/assets/hs-counter-DmspKHOV.js.br +0 -0
- package/dist/assets/hs-counter-DmspKHOV.js.gz +0 -0
- package/dist/assets/{hs-counter-Bfh7_P60.js.map → hs-counter-DmspKHOV.js.map} +1 -1
- package/dist/assets/hs-default-Dxg7WNGx.js +2 -0
- package/dist/assets/hs-default-Dxg7WNGx.js.br +0 -0
- package/dist/assets/hs-default-Dxg7WNGx.js.gz +0 -0
- package/dist/assets/hs-default-Dxg7WNGx.js.map +1 -0
- package/dist/assets/hs-marquee-Dwenaw7L.js +2 -0
- package/dist/assets/hs-marquee-Dwenaw7L.js.br +0 -0
- package/dist/assets/hs-marquee-Dwenaw7L.js.gz +0 -0
- package/dist/assets/{hs-marquee-CZ9pmCbT.js.map → hs-marquee-Dwenaw7L.js.map} +1 -1
- package/dist/assets/hs-normalize-B6jxy2Yc.js +2 -0
- package/dist/assets/hs-normalize-B6jxy2Yc.js.br +0 -0
- package/dist/assets/hs-normalize-B6jxy2Yc.js.gz +0 -0
- package/dist/assets/{hs-normalize-CTwtG5-a.js.map → hs-normalize-B6jxy2Yc.js.map} +1 -1
- package/dist/assets/hs-utils-CNwAFmmK.js +2 -0
- package/dist/assets/hs-utils-CNwAFmmK.js.br +0 -0
- package/dist/assets/hs-utils-CNwAFmmK.js.gz +0 -0
- package/dist/assets/hs-utils-CNwAFmmK.js.map +1 -0
- package/dist/main.js +2 -2
- package/dist/main.js.br +0 -0
- package/dist/main.js.gz +0 -0
- package/dist/main.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets/hs-animations-BDMqlbof.js +0 -3
- package/dist/assets/hs-animations-BDMqlbof.js. +0 -3
- package/dist/assets/hs-animations-BDMqlbof.js.gz +0 -0
- package/dist/assets/hs-animations-BDMqlbof.js.map +0 -1
- package/dist/assets/hs-attributeSelector-6pGcDBo-.js +0 -2
- package/dist/assets/hs-attributeSelector-6pGcDBo-.js.map +0 -1
- package/dist/assets/hs-comparison-Ja8EiSGD.js +0 -2
- package/dist/assets/hs-comparison-Ja8EiSGD.js. +0 -2
- package/dist/assets/hs-comparison-Ja8EiSGD.js.gz +0 -0
- package/dist/assets/hs-comparison-Ja8EiSGD.js.map +0 -1
- package/dist/assets/hs-counter-Bfh7_P60.js +0 -2
- package/dist/assets/hs-counter-Bfh7_P60.js. +0 -2
- package/dist/assets/hs-counter-Bfh7_P60.js.gz +0 -0
- package/dist/assets/hs-cssVariables-BjuwJfDJ.js +0 -2
- package/dist/assets/hs-cssVariables-BjuwJfDJ.js.map +0 -1
- package/dist/assets/hs-default-CLmDRb9d.js +0 -2
- package/dist/assets/hs-default-CLmDRb9d.js. +0 -2
- package/dist/assets/hs-default-CLmDRb9d.js.gz +0 -0
- package/dist/assets/hs-default-CLmDRb9d.js.map +0 -1
- package/dist/assets/hs-form-COFGgawz.js +0 -2
- package/dist/assets/hs-form-COFGgawz.js. +0 -2
- package/dist/assets/hs-form-COFGgawz.js.gz +0 -0
- package/dist/assets/hs-form-COFGgawz.js.map +0 -1
- package/dist/assets/hs-marquee-CZ9pmCbT.js +0 -2
- package/dist/assets/hs-marquee-CZ9pmCbT.js. +0 -2
- package/dist/assets/hs-marquee-CZ9pmCbT.js.gz +0 -0
- package/dist/assets/hs-modalManager-H_YegPAO.js +0 -2
- package/dist/assets/hs-modalManager-H_YegPAO.js. +0 -2
- package/dist/assets/hs-modalManager-H_YegPAO.js.gz +0 -0
- package/dist/assets/hs-modalManager-H_YegPAO.js.map +0 -1
- package/dist/assets/hs-normalize-CTwtG5-a.js +0 -2
- package/dist/assets/hs-normalize-CTwtG5-a.js. +0 -2
- package/dist/assets/hs-normalize-CTwtG5-a.js.gz +0 -0
- package/dist/assets/hs-orchestrator-J8b7XRk1.js +0 -2
- package/dist/assets/hs-orchestrator-J8b7XRk1.js. +0 -2
- package/dist/assets/hs-orchestrator-J8b7XRk1.js.gz +0 -0
- package/dist/assets/hs-orchestrator-J8b7XRk1.js.map +0 -1
- package/dist/assets/hs-pagination-DcOxmDPJ.js +0 -2
- package/dist/assets/hs-pagination-DcOxmDPJ.js. +0 -2
- package/dist/assets/hs-pagination-DcOxmDPJ.js.gz +0 -0
- package/dist/assets/hs-pagination-DcOxmDPJ.js.map +0 -1
- package/dist/assets/hs-structure-DhNix64P.js +0 -3
- package/dist/assets/hs-structure-DhNix64P.js. +0 -3
- package/dist/assets/hs-structure-DhNix64P.js.gz +0 -0
- package/dist/assets/hs-structure-DhNix64P.js.map +0 -1
- package/dist/assets/hs-tabs-CaxqHoGW.js +0 -2
- package/dist/assets/hs-tabs-CaxqHoGW.js. +0 -2
- package/dist/assets/hs-tabs-CaxqHoGW.js.gz +0 -0
- package/dist/assets/hs-tabs-CaxqHoGW.js.map +0 -1
- package/dist/assets/hs-toc-fxIQS7tz.js +0 -2
- package/dist/assets/hs-toc-fxIQS7tz.js. +0 -2
- package/dist/assets/hs-toc-fxIQS7tz.js.gz +0 -0
- package/dist/assets/hs-toc-fxIQS7tz.js.map +0 -1
- package/dist/assets/hs-transition-CDNuGJNq.js +0 -2
- package/dist/assets/hs-transition-CDNuGJNq.js. +0 -2
- package/dist/assets/hs-transition-CDNuGJNq.js.gz +0 -0
- package/dist/assets/hs-transition-CDNuGJNq.js.map +0 -1
- package/dist/assets/hs-utils-CKm6QhLw.js +0 -2
- package/dist/assets/hs-utils-CKm6QhLw.js.map +0 -1
- package/dist/main.js. +0 -3
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/hs-counter-DmspKHOV.js","assets/hs-utils-CNwAFmmK.js","assets/hs-marquee-Dwenaw7L.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as e}from"../main.js";import{k as t}from"./hs-utils-CNwAFmmK.js";const r=[{name:"counter",selector:'[data-hs-anim="counter"]',import:()=>e(()=>import("./hs-counter-DmspKHOV.js"),__vite__mapDeps([0,1]))},{name:"marquee",selector:'[data-hs-marquee="wrapper"]',import:()=>e(()=>import("./hs-marquee-Dwenaw7L.js"),__vite__mapDeps([2,1]))}],a=(()=>{const e=r.filter(e=>document.querySelector(e.selector)).map(e=>e.import().catch(t=>(console.error(`[animations] Failed to preload ${e.name}:`,t),null)));return Promise.allSettled(e)})();async function o(){await a;const e=t(r),{loaded:o}=await e.scan();return{result:`animations initialized (${o.length} active)`,rescan:e.scan,destroy:e.destroy}}export{o as init};
|
|
3
|
+
//# sourceMappingURL=hs-animations-tvD4W7u0.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":";0EAiCA,MAAMA,EAA4C,CAChD,CACEC,KAAM,UACNC,SAAU,2BACVC,OAAQ,UAAMA,OAAO,4BAAwBC,yBAE/C,CACEH,KAAM,UACNC,SAAU,8BACVC,OAAQ,UAAMA,OAAO,4BAAwBC,0BAQ3CC,QACJ,MAKMC,EALmBN,EAAmBO,OAAQC,GAClDC,SAASC,cAAcF,EAAON,WAISS,IAAKH,GAC5CA,EAAOL,SAASS,MAAOC,IACrBC,QAAQD,MAAM,kCAAkCL,EAAOP,QAASY,GACzD,QAIX,OAAOE,QAAQC,WAAWV,EAC5B,KAEAW,eAAsBC,UAEdb,EAGN,MAAMc,EAAeC,EAAmBpB,IAClCqB,OAAEA,SAAiBF,EAAaG,OAEtC,MAAO,CACLC,OAAQ,2BAA2BF,EAAOG,iBAC1CC,OAAQN,EAAaG,KACrBI,QAASP,EAAaO,QAE1B","names":["ANIMATION_REGISTRY","name","selector","import","__VITE_PRELOAD__","preloadAnimations","preloadPromises","filter","module","document","querySelector","map","catch","error","console","Promise","allSettled","async","init","orchestrator","createOrchestrator","loaded","scan","result","length","rescan","destroy"],"ignoreList":[],"sources":["../../src/animations/animations.ts"],"sourcesContent":["/**\n * Animations Orchestrator\n *\n * Conditionally loads animation modules based on DOM presence.\n * Uses registry pattern for scalable animation management.\n *\n * Features:\n * - Self-registering animation system (add new animations in one line)\n * - Dynamic imports for code-splitting\n * - Prevents duplicate initialization\n * - SPA-friendly rescan() method\n * - Centralized destroy cleanup\n * - Webflow IX3 coordination with timeout fallback\n *\n * Architecture:\n * - Registry-based discovery (scales to 100s of animations)\n * - Scans DOM for registered selectors\n * - Dynamically imports only the animations found\n * - Waits for Webflow IX3 before initializing (prevents FOUC)\n * - Removes transition wrapper on IX3 timeout (graceful degradation)\n * - Exposes rescan() for SPA page transitions\n *\n * Adding new animations:\n * 1. Add entry to ANIMATION_REGISTRY below\n * 2. That's it - orchestrator handles the rest\n */\n\nimport { createOrchestrator, type ModuleRegistryEntry } from '@utils';\n\n/**\n * Animation Registry\n * Add new animations here - one line per animation\n */\nconst ANIMATION_REGISTRY: ModuleRegistryEntry[] = [\n {\n name: 'counter',\n selector: '[data-hs-anim=\"counter\"]',\n import: () => import('./functions/counter.ts'),\n },\n {\n name: 'marquee',\n selector: '[data-hs-marquee=\"wrapper\"]',\n import: () => import('./functions/marquee.ts'),\n },\n // Add more animations here:\n // { name: 'hamburger', selector: '[data-hs-hamburger=\"squeeze\"]', import: () => import('./functions/hamburger.ts') },\n];\n\n// Pre-download animation modules as soon as this file loads (before init is called)\n// This allows parallel downloads while still respecting IX3 timing for initialization\nconst preloadAnimations = (() => {\n const modulesToPreload = ANIMATION_REGISTRY.filter((module) =>\n document.querySelector(module.selector)\n );\n\n // Download all found modules in parallel\n const preloadPromises = modulesToPreload.map((module) =>\n module.import().catch((error) => {\n console.error(`[animations] Failed to preload ${module.name}:`, error);\n return null;\n })\n );\n\n return Promise.allSettled(preloadPromises);\n})();\n\nexport async function init() {\n // Wait for preloading to complete (modules are already downloaded)\n await preloadAnimations;\n\n // Initialize all animations\n const orchestrator = createOrchestrator(ANIMATION_REGISTRY);\n const { loaded } = await orchestrator.scan();\n\n return {\n result: `animations initialized (${loaded.length} active)`,\n rescan: orchestrator.scan,\n destroy: orchestrator.destroy,\n };\n}\n"],"file":"hs-animations-tvD4W7u0.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,d as t,j as r}from"./hs-utils-CNwAFmmK.js";const n='[data-hs-anim="counter"]';async function o(){if(e())return{result:"counter skipped - prefers-reduced-motion enabled"};const o=t("counter");if(!o)return{result:"counter skipped - GSAP not loaded"};const{gsap:i,ScrollTrigger:s}=o;if(!s)return r("counter",["ScrollTrigger"],"error"),{result:"counter skipped - ScrollTrigger not loaded"};i.registerPlugin(s);const l=Array.from(document.querySelectorAll(n)),u={timelines:[],scrollTriggers:[]};return l.forEach(e=>{const t=e,r=t.textContent?.trim()||"",n=function(e){const t=e.replace(/,/g,"").match(/([^\d.]*)(\d*\.?\d+)(.*)/);return t?{prefix:t[1]||"",number:parseFloat(t[2]),suffix:t[3]||""}:{prefix:"",number:0,suffix:""}}(r),o=(n.number.toString().split(".")[1]||"").length,l=r.includes(",");t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true");const c={value:0},a=i.timeline({paused:!0});a.to(c,{value:n.number,duration:3,ease:"power4.out",onUpdate:function(){const e=c.value;let r=o>0?e.toFixed(o):Math.round(e).toString();l&&(r=r.replace(/\B(?=(\d{3})+(?!\d))/g,",")),t.textContent=`${n.prefix}${r}${n.suffix}`},onComplete:function(){t.textContent=r}}),u.timelines.push(a);const g=s.create({trigger:e,start:"top bottom",once:!0,onEnter:()=>{a.play()}});u.scrollTriggers.push(g)}),{result:`counter initialized (${l.length} instances)`,destroy:()=>{u.timelines.forEach(e=>{e&&e.kill()}),u.scrollTriggers.forEach(e=>{e&&e.kill()}),u.timelines.length=0,u.scrollTriggers.length=0}}}export{o as init};
|
|
2
|
+
//# sourceMappingURL=hs-counter-DmspKHOV.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hs-counter-
|
|
1
|
+
{"version":3,"file":"hs-counter-DmspKHOV.js","sources":["../../src/animations/functions/counter.ts"],"sourcesContent":["/**\n * Counter Module\n *\n * GSAP-powered number counter that triggers on scroll into viewport.\n * Supports decimals, prefixes, and suffixes with smooth easing.\n *\n * Usage:\n * <span data-hs-anim=\"counter\">1000</span>\n *\n * Features:\n * - Auto-detects decimals, prefixes, suffixes\n * - Respects prefers-reduced-motion\n * - Triggers on scroll into viewport\n * - Accessible with aria-live announcements\n */\n\nimport { getGsap, prefersReducedMotion, warnMissingDependencies, type GsapTimeline } from '@utils';\n\n// Selectors\nconst SELECTORS = {\n counter: '[data-hs-anim=\"counter\"]',\n};\n\nexport async function init() {\n // Skip if user prefers reduced motion\n if (prefersReducedMotion()) {\n return { result: 'counter skipped - prefers-reduced-motion enabled' };\n }\n\n const gsapLib = getGsap('counter');\n if (!gsapLib) {\n return { result: 'counter skipped - GSAP not loaded' };\n }\n\n const { gsap, ScrollTrigger } = gsapLib;\n\n // ScrollTrigger is required for scroll-based counter animations\n if (!ScrollTrigger) {\n warnMissingDependencies('counter', ['ScrollTrigger'], 'error');\n return { result: 'counter skipped - ScrollTrigger not loaded' };\n }\n\n gsap.registerPlugin(ScrollTrigger);\n\n const counters = Array.from(document.querySelectorAll(SELECTORS.counter));\n const cleanup = {\n timelines: [] as GsapTimeline[],\n scrollTriggers: [] as any[],\n };\n\n function parseText(text: string) {\n // Remove commas from the text before parsing\n const cleanText = text.replace(/,/g, '');\n const match = cleanText.match(/([^\\d.]*)(\\d*\\.?\\d+)(.*)/);\n if (!match) {\n return { prefix: '', number: 0, suffix: '' };\n }\n return {\n prefix: match[1] || '',\n number: parseFloat(match[2]),\n suffix: match[3] || '',\n };\n }\n\n counters.forEach((counter) => {\n const htmlElement = counter as HTMLElement;\n const originalText = htmlElement.textContent?.trim() || '';\n const parsed = parseText(originalText);\n const decimals = (parsed.number.toString().split('.')[1] || '').length;\n\n // Check if original had commas (for numbers >= 1000)\n const hasCommas = originalText.includes(',');\n\n // Add accessibility attributes\n htmlElement.setAttribute('aria-live', 'polite');\n htmlElement.setAttribute('aria-atomic', 'true');\n\n // Create a temporary object to animate\n const counterObj = { value: 0 };\n\n // Create GSAP animation\n const tl = gsap.timeline({ paused: true });\n\n tl.to(counterObj, {\n value: parsed.number,\n duration: 3,\n ease: 'power4.out',\n onUpdate: function () {\n const currentValue = counterObj.value;\n let formatted =\n decimals > 0 ? currentValue.toFixed(decimals) : Math.round(currentValue).toString();\n\n // Add commas if original had them\n if (hasCommas) {\n formatted = formatted.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n htmlElement.textContent = `${parsed.prefix}${formatted}${parsed.suffix}`;\n },\n onComplete: function () {\n // Set final exact value\n htmlElement.textContent = originalText;\n },\n });\n\n cleanup.timelines.push(tl);\n\n // Use ScrollTrigger to play animation on scroll into view\n const st = ScrollTrigger.create({\n trigger: counter,\n start: 'top bottom',\n once: true,\n onEnter: () => {\n tl.play();\n },\n });\n cleanup.scrollTriggers.push(st);\n });\n\n return {\n result: `counter initialized (${counters.length} instances)`,\n destroy: () => {\n // Kill all timelines\n cleanup.timelines.forEach((tl) => {\n if (tl) tl.kill();\n });\n\n // Kill all scroll triggers\n cleanup.scrollTriggers.forEach((st) => {\n if (st) (st as any).kill();\n });\n\n // Clear arrays\n cleanup.timelines.length = 0;\n cleanup.scrollTriggers.length = 0;\n },\n };\n}\n"],"names":["SELECTORS","async","init","prefersReducedMotion","result","gsapLib","getGsap","gsap","ScrollTrigger","warnMissingDependencies","registerPlugin","counters","Array","from","document","querySelectorAll","cleanup","timelines","scrollTriggers","forEach","counter","htmlElement","originalText","textContent","trim","parsed","text","match","replace","prefix","number","parseFloat","suffix","parseText","decimals","toString","split","length","hasCommas","includes","setAttribute","counterObj","value","tl","timeline","paused","to","duration","ease","onUpdate","currentValue","formatted","toFixed","Math","round","onComplete","push","st","create","trigger","start","once","onEnter","play","destroy","kill"],"mappings":"yDAmBA,MAAMA,EACK,2BAGXC,eAAsBC,IAEpB,GAAIC,IACF,MAAO,CAAEC,OAAQ,oDAGnB,MAAMC,EAAUC,EAAQ,WACxB,IAAKD,EACH,MAAO,CAAED,OAAQ,qCAGnB,MAAMG,KAAEA,EAAAC,cAAMA,GAAkBH,EAGhC,IAAKG,EAEH,OADAC,EAAwB,UAAW,CAAC,iBAAkB,SAC/C,CAAEL,OAAQ,8CAGnBG,EAAKG,eAAeF,GAEpB,MAAMG,EAAWC,MAAMC,KAAKC,SAASC,iBAAiBf,IAChDgB,EAAU,CACdC,UAAW,GACXC,eAAgB,IAwElB,OAvDAP,EAASQ,QAASC,IAChB,MAAMC,EAAcD,EACdE,EAAeD,EAAYE,aAAaC,QAAU,GAClDC,EAjBR,SAAmBC,GAEjB,MACMC,EADYD,EAAKE,QAAQ,KAAM,IACbD,MAAM,4BAC9B,OAAKA,EAGE,CACLE,OAAQF,EAAM,IAAM,GACpBG,OAAQC,WAAWJ,EAAM,IACzBK,OAAQL,EAAM,IAAM,IALb,CAAEE,OAAQ,GAAIC,OAAQ,EAAGE,OAAQ,GAO5C,CAKiBC,CAAUX,GACnBY,GAAYT,EAAOK,OAAOK,WAAWC,MAAM,KAAK,IAAM,IAAIC,OAG1DC,EAAYhB,EAAaiB,SAAS,KAGxClB,EAAYmB,aAAa,YAAa,UACtCnB,EAAYmB,aAAa,cAAe,QAGxC,MAAMC,EAAa,CAAEC,MAAO,GAGtBC,EAAKpC,EAAKqC,SAAS,CAAEC,QAAQ,IAEnCF,EAAGG,GAAGL,EAAY,CAChBC,MAAOjB,EAAOK,OACdiB,SAAU,EACVC,KAAM,aACNC,SAAU,WACR,MAAMC,EAAeT,EAAWC,MAChC,IAAIS,EACFjB,EAAW,EAAIgB,EAAaE,QAAQlB,GAAYmB,KAAKC,MAAMJ,GAAcf,WAGvEG,IACFa,EAAYA,EAAUvB,QAAQ,wBAAyB,MAGzDP,EAAYE,YAAc,GAAGE,EAAOI,SAASsB,IAAY1B,EAAOO,QAClE,EACAuB,WAAY,WAEVlC,EAAYE,YAAcD,CAC5B,IAGFN,EAAQC,UAAUuC,KAAKb,GAGvB,MAAMc,EAAKjD,EAAckD,OAAO,CAC9BC,QAASvC,EACTwC,MAAO,aACPC,MAAM,EACNC,QAAS,KACPnB,EAAGoB,UAGP/C,EAAQE,eAAesC,KAAKC,KAGvB,CACLrD,OAAQ,wBAAwBO,EAAS0B,oBACzC2B,QAAS,KAEPhD,EAAQC,UAAUE,QAASwB,IACrBA,KAAOsB,SAIbjD,EAAQE,eAAeC,QAASsC,IAC1BA,KAAgBQ,SAItBjD,EAAQC,UAAUoB,OAAS,EAC3BrB,EAAQE,eAAemB,OAAS,GAGtC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{g as e,i as t,w as n,d as r,a as o,p as s,q as a,b as i,s as l,e as c,o as u,f as d,h as p,c as m,j as f}from"./hs-utils-CNwAFmmK.js";const h=e.apiName,v='[data-hs-transition="wrapper"]',g="data-hs-transition-exit-trigger",y="data-hs-transition-enter-trigger",b="data-hs-transition-trigger",w="data-hs-transition-namespace",A="data-hs-transition-exit-time",E="data-hs-transition-first-delay",L="data-hs-transition-initialized",k="data-hs-exit-time",x="data-hs-delay";async function S(){const e=document.querySelector(v);if(!e)return{result:"transition skipped - no wrapper found",destroy:()=>{}};if(e.hasAttribute(L))return{result:"transition already initialized",destroy:()=>{}};e.setAttribute(L,"true");const r=window[h]?.settings?.isSPA||!1,o=new Map;let s=null;const a=(t,n=null,r=e)=>{const o=r.querySelectorAll(`[${b}="${t}"]`);if(o.length>0){if(n){const e=r.querySelector(`[${w}="${n}"]`);if(e){const n=e.querySelector(`[${b}="${t}"]`);if(n)return n}}const e=Array.from(o).find(e=>{let t=e.parentElement;for(;t&&t!==r;){if(t.hasAttribute(w))return!1;t=t.parentElement}return!0});if(e)return e}const s="exit"===t?g:y,a=r.querySelectorAll(`[${s}]`);if(a.length>0){if(n){const e=r.querySelector(`[${w}="${n}"]`);if(e){const t=e.querySelector(`[${s}]`);if(t)return t}}const e=Array.from(a).find(e=>{let t=e.parentElement;for(;t&&t!==r;){if(t.hasAttribute(w))return!1;t=t.parentElement}return!0});if(e)return e}return null},i=(t=null)=>new Promise(n=>{const r=a("exit",t);if(!r)return void n();const o=(()=>{const t=e.getAttribute(A);if(t)return 1e3*parseFloat(t);const n=e.getAttribute(k);return n?1e3*parseFloat(n):0})();r.click(),setTimeout(()=>n(),o)}),l=(t=null)=>new Promise(n=>{const r=a("enter",t);if(!r)return void n();const o=!sessionStorage.getItem("transition-loaded"),i=(()=>{const t=e.getAttribute(E);if(t)return 1e3*parseFloat(t);const n=e.getAttribute(x);return n?1e3*parseFloat(n):0})(),l=()=>{r.click(),o&&sessionStorage.setItem("transition-loaded","true"),n()};o&&i>0?s=setTimeout(l,i):l()}),c=e=>{i(e?.detail?.namespace||null)},u=e=>{l(e?.detail?.namespace||null)};if(o.set("hsmain:transition-exit",c),o.set("hsmain:transition-enter",u),window.addEventListener("hsmain:transition-exit",c),window.addEventListener("hsmain:transition-enter",u),!r){const e=e=>{const t=e.target.closest("a[href]");if(t&&t.hostname===window.location.hostname&&t.getAttribute("href")&&-1===t.getAttribute("href").indexOf("#")&&"_blank"!==t.getAttribute("target")){e.preventDefault();const n=t.href;i().then(()=>{window.location.href=n})}};o.set("click",e),document.addEventListener("click",e);const t=e=>{e.persisted&&window.location.reload()};o.set("pageshow",t),window.addEventListener("pageshow",t)}const d=()=>{e&&(e.style.display="none")};if(o.set("resize",d),window.addEventListener("resize",d),!r){const e=async()=>{t()&&await n(3e3),l()};o.set(`${h}:dom-ready`,e),window.addEventListener(`${h}:dom-ready`,e,{once:!0})}return{result:"transition initialized",destroy:()=>{s&&clearTimeout(s),o.forEach((e,t)=>{if("click"===t||"pageshow"===t||"resize"===t){("click"===t?document:window).removeEventListener(t,e)}else window.removeEventListener(t,e)}),o.clear(),e.removeAttribute(L)}}}async function C(e){let t=null,n=null;function a(t){const n=t.target.closest('a[href^="#"]');if(!n)return;const a=n.getAttribute("href");if(!a||"#"===a)return;const i=a.substring(1),l=document.getElementById(i);if(l){t.preventDefault(),history.replaceState&&history.replaceState(null,null,`#${l.id}`);!function(e,t=0){if(!e)return;const n=r("smooth-scroll",!1);if(s()||!n){const n=e.getBoundingClientRect().top+window.scrollY-t;return window.scrollTo(0,n),e.setAttribute("tabindex","-1"),void e.focus({preventScroll:!0})}n.gsap.to(window,{duration:1,scrollTo:{y:e,offsetY:t},ease:"power2.out",onComplete:function(){e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0})}})}(l,function(){const t=o(e,"offset-proxy");if(console.log("[smooth-scroll] Proxy element:",t),t&&t instanceof HTMLElement){const e=getComputedStyle(t).top,n=parseFloat(e)||0;return console.log("[smooth-scroll] Computed top:",e,"-> offset:",n),n}return console.log("[smooth-scroll] No proxy element found, using offset: 0"),0}())}}"undefined"!=typeof $&&$(document).off("click.wf-scroll"),document.documentElement.style.scrollBehavior="auto",document.body.style.scrollBehavior="auto",t=a,n=e=>{"Enter"!==e.key&&" "!==e.key||a(e)},document.addEventListener("click",t),document.addEventListener("keydown",n);const i=r("smooth-scroll",!1);return i&&document.body.scrollHeight>window.innerHeight&&(i.gsap.set(window,{scrollTo:1}),i.gsap.set(window,{scrollTo:0})),{result:"autoInit-smooth-scroll initialized",destroy:()=>{t&&(document.removeEventListener("click",t),t=null),n&&(document.removeEventListener("keydown",n),n=null),document.documentElement.style.scrollBehavior="",document.body.style.scrollBehavior=""}}}let T=null;function q(t){T=t;const n={observers:[],handlers:[]};return function(t,n){const r=a(T,"wrapper"),s=[];r.forEach(r=>{const a=i(e.clickable,"button"),u=r.querySelector(a),d=o(T,"list",r);if(!u||!d)return void console.warn("[dropdown] Dropdown wrapper missing required elements:",r);const p=r.getAttribute("data-hs-nav-dropdown-type")||"hover",m=r.querySelector('[data-hs-height="element"]'),f=m?m.parentElement:null,h=u.textContent?.trim()||"dropdown",v=h.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"-").replace(/^-+|-+$/g,"").substring(0,50);const g=`navbar-dropdown-${v}-toggle`,y=`navbar-dropdown-${v}-list`;u.id=g,u.setAttribute("aria-haspopup","menu"),u.setAttribute("aria-expanded","false"),u.setAttribute("aria-controls",y),d.id=y,d.setAttribute("role","menu"),d.inert=!0;const b=Array.from(d.querySelectorAll(a));b.forEach((e,t)=>{if(e.setAttribute("role","menuitem"),e.setAttribute("tabindex","-1"),0===t){const t=u.textContent?.trim()||"menu";e.getAttribute("aria-label")||e.setAttribute("aria-label",`${e.textContent?.trim()}, ${t} submenu`)}});let w=-1;function A(){return r.classList.contains(e.classes.active)}function E(){const e=A();"true"===u.getAttribute("aria-expanded")&&!e&&d.contains(document.activeElement)&&u.focus(),u.setAttribute("aria-expanded",e?"true":"false"),d.inert=!e,b.forEach(t=>{t.setAttribute("tabindex",e?"0":"-1")}),e||(w=-1),c(f,e,{duration:"hover"===p?200:300,ease:"power2.inOut"})}l(f,A()),E();const L=new MutationObserver(()=>{E()});if(L.observe(r,{attributes:!0,attributeFilter:["class"]}),t(L),"hover"===p){s.push(r);const t=()=>{r.classList.add("is-active")},o=()=>{r.classList.remove("is-active")};n(r,"mouseenter",t),n(r,"mouseleave",o);n(u,"keydown",t=>{"ArrowDown"===t.key?(t.preventDefault(),A()||(r.classList.add(e.classes.active),b.length>0&&setTimeout(()=>{w=0,b[0].focus()},100))):" "===t.key||"Enter"===t.key?(t.preventDefault(),A()?r.classList.remove(e.classes.active):(r.classList.add(e.classes.active),b.length>0&&setTimeout(()=>{w=0,b[0].focus()},100))):"ArrowUp"===t.key?(t.preventDefault(),A()||(r.classList.add(e.classes.active),b.length>0&&setTimeout(()=>{w=b.length-1,b[w].focus()},100))):"Escape"===t.key&&(t.preventDefault(),A()&&r.classList.remove(e.classes.active))});const a=t=>{A()&&r.contains(document.activeElement)&&("ArrowDown"===t.key?(t.preventDefault(),w<b.length-1&&(w++,b[w].focus())):"ArrowUp"===t.key?(t.preventDefault(),0===w?(r.classList.remove(e.classes.active),u.focus(),w=-1):w>0?(w--,b[w].focus()):(u.focus(),w=-1)):"Escape"===t.key&&(t.preventDefault(),r.classList.remove("is-active")))};n(r,"keydown",a)}else if("click"===p){n(u,"click",t=>{t.preventDefault(),r.classList.toggle(e.classes.active)});n(u,"keydown",t=>{" "===t.key||"Enter"===t.key?(t.preventDefault(),r.classList.toggle(e.classes.active)):"Escape"===t.key&&(t.preventDefault(),A()&&r.classList.remove(e.classes.active))})}});const u=e=>{s.forEach(t=>{t.classList.contains("is-active")&&!t.contains(e.target)&&t.classList.remove("is-active")})};s.length>0&&n(document.body,"focusin",u)}(e=>{n.observers.push(e)},(e,t,r,o)=>{e.addEventListener(t,r,o),n.handlers.push({element:e,event:t,handler:r,options:o})}),{result:"dropdown initialized",destroy:()=>{n.observers.forEach(e=>e.disconnect()),n.observers.length=0,n.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),n.handlers.length=0,T=null}}}function P(t,n){const r={observers:[],handlers:[],state:{focusTrapHandler:null}},s=e=>{r.observers.push(e)};return function(s,p){const m=a(t,"button"),f=o(t,"wrapper");if(!m.length||!f)return;const h=n?o(n,"wrapper"):null,v=`menu-${Date.now()}`;f.id=v,f.setAttribute("role","dialog"),f.setAttribute("aria-modal","true"),f.inert=!0;const g=f.querySelector('[data-hs-height="element"]'),y=g?g.parentElement:null;m.forEach(t=>{t.setAttribute("aria-expanded","false"),t.setAttribute("aria-controls",v),t.setAttribute("aria-label","Open navigation menu");let a=null,g=!1;function b(){return t.classList.contains(e.classes.active)}function w(){const r=b(),s="true"===t.getAttribute("aria-expanded");r&&!s?(u(),f.classList.add(e.classes.active),f.inert=!1,h&&h.classList.add("hs-menu-open"),m.forEach(e=>{e.setAttribute("aria-expanded","true"),e.setAttribute("aria-label","Close navigation menu")}),y&&c(y,!0,{duration:300,ease:"power2.inOut"}),a=function(){const t=n?o(n,"wrapper"):document.querySelector('[data-hs-nav="wrapper"]');if(!t)return;const r=n=>{if("Tab"===n.key){const r=i(e.clickable,"button"),o=Array.from(t.querySelectorAll(r)),s=t.querySelectorAll('input, select, textarea, [tabindex]:not([tabindex="-1"])'),a=[...o,...Array.from(s)],l=a[0],c=a[a.length-1];n.shiftKey?document.activeElement===l&&(n.preventDefault(),c.focus()):document.activeElement===c&&(n.preventDefault(),l.focus())}};return document.addEventListener("keydown",r),r}(),g&&(setTimeout(()=>{const t=i(e.clickable,"button"),n=Array.from(f.querySelectorAll(t));if("last"===g){const e=n[n.length-1];e&&e.focus()}else{const e=n[0];e&&e.focus()}},100),g=!1)):!r&&s&&(f.contains(document.activeElement)&&t.focus(),d(),f.classList.remove(e.classes.active),f.inert=!0,h&&h.classList.remove("hs-menu-open"),m.forEach(e=>{e.setAttribute("aria-expanded","false"),e.setAttribute("aria-label","Open navigation menu")}),y&&c(y,!1,{duration:300,ease:"power2.inOut"}),function(e){e&&document.removeEventListener("keydown",e)}(a),a=null)}y&&l(y,b()),w();const A=new MutationObserver(()=>{w()});A.observe(t,{attributes:!0,attributeFilter:["class"]}),s(A);p(t,"click",function(e){e.preventDefault(),t.classList.toggle("is-active")});p(t,"keydown",function(n){" "===n.key||"Enter"===n.key?(n.preventDefault(),g=!0,t.classList.toggle(e.classes.active)):"ArrowDown"===n.key?(n.preventDefault(),b()||(g=!0,t.classList.add(e.classes.active))):"ArrowUp"===n.key?(n.preventDefault(),b()||(g="last",t.classList.add(e.classes.active))):"Escape"===n.key&&(n.preventDefault(),b()&&t.classList.remove(e.classes.active))}),r.state.focusTrapHandler=a})}(s,(e,t,n,o)=>{e.addEventListener(t,n,o),r.handlers.push({element:e,event:t,handler:n,options:o})}),function(n){const r=o(t,"wrapper");if(!r)return;let s=null;function a(){const t=window.getComputedStyle(r).getPropertyValue(p.state).trim();if(s===e.cssVars.state.values.active&&t===e.cssVars.state.values.inactive){const e=document.querySelector('[data-hs-nav-menu="button"]');e&&"true"===e.getAttribute("aria-expanded")&&e&&e.classList.remove("is-active")}s=t}const i=new ResizeObserver(a);i.observe(r),n(i),a()}(s),{result:"menu initialized",destroy:()=>{r.state.focusTrapHandler&&(document.removeEventListener("keydown",r.state.focusTrapHandler),r.state.focusTrapHandler=null),r.observers.forEach(e=>e.disconnect()),r.observers.length=0,r.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),r.handlers.length=0,document.body.classList.remove("u-overflow-hidden")}}}function D(t,n){const r={handlers:[]},s=(e,t,n,o)=>{e.addEventListener(t,n,o),r.handlers.push({element:e,event:t,handler:n,options:o})};return s(document,"keydown",t=>{if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;const r=n?o(n.menu,"wrapper"):document.querySelector('[data-hs-nav-menu="wrapper"]');if(r&&r.contains(document.activeElement))return;const s=n?o(n,"wrapper"):document.querySelector('[data-hs-nav="wrapper"]');if(!s||!s.contains(document.activeElement))return;const a=s.querySelector(`.${e.classes.active}[data-hs-nav-dropdown]`);if(a&&a.contains(document.activeElement))return;t.preventDefault();const l=i(e.clickable,"button"),c=Array.from(s.querySelectorAll(l)),u=Array.from(c).filter(e=>{if("-1"===e.getAttribute("tabindex"))return!1;if(e.closest('[role="menu"]'))return!1;const t=n?n.menu.attributes.elements.wrapper.primary.split("=")[0]:"data-hs-nav-menu";if(e.closest(`[${t}="wrapper"]`))return!1;const r=n?n.attributes.elements["skip-link"].primary.split("=")[0]:"data-hs-nav";if(e.closest(`[${r}="skip-link"]`))return!1;const o=window.getComputedStyle(e),a=e;if("none"===o.display||"hidden"===o.visibility||"0"===o.opacity||0===a.offsetWidth||0===a.offsetHeight)return!1;let i=e.parentElement;for(;i&&i!==s;){const e=window.getComputedStyle(i),t=i;if("none"===e.display||"hidden"===e.visibility||0===t.offsetWidth||0===t.offsetHeight)return!1;i=i.parentElement}return!0}),d=u.indexOf(document.activeElement);-1!==d&&("ArrowRight"===t.key?d<u.length-1&&u[d+1].focus():d>0&&u[d-1].focus())}),function(t){const r=n?o(n.menu,"wrapper"):document.querySelector('[data-hs-nav-menu="wrapper"]');if(!r)return;let s=-1;t(r,"keydown",t=>{const a=function(){const t=i(e.clickable,"button"),n=Array.from(r.querySelectorAll(t));return Array.from(n).filter(e=>{let t=e;for(;t&&t!==r;){if(t.inert)return!1;t=t.parentElement}return!0})}();if(0===a.length)return;const l=document.activeElement;if(s=a.indexOf(l),"ArrowDown"===t.key)t.preventDefault(),s<a.length-1&&(s+=1,a[s].focus());else if("ArrowUp"===t.key)t.preventDefault(),s>0&&(s-=1,a[s].focus());else if("ArrowRight"===t.key){if(t.preventDefault(),l&&"BUTTON"===l.tagName&&l.hasAttribute("aria-controls")){return void("true"===l.getAttribute("aria-expanded")||l.click())}}else if("ArrowLeft"===t.key){if(t.preventDefault(),l&&"BUTTON"===l.tagName&&l.hasAttribute("aria-controls")){return void("true"===l.getAttribute("aria-expanded")&&l.click())}}else if("Home"===t.key)t.preventDefault(),s=0,a[0].focus();else if("End"===t.key)t.preventDefault(),s=a.length-1,a[a.length-1].focus();else if(" "===t.key&&l&&"A"===l.tagName)t.preventDefault();else if("Escape"===t.key){const e=n?o(n.menu,"button"):document.querySelector('[data-hs-nav-menu="button"]');e&&(e.click(),e.focus())}})}(s),{result:"arrow-navigation initialized",destroy:()=>{r.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),r.handlers.length=0}}}async function F(e){const t={destroyFunctions:[]},n=await Promise.allSettled([q(e.dropdown),P(e.menu,e),D(e["arrow-navigation"],e)]);n.forEach(e=>{"fulfilled"===e.status&&e.value?.destroy&&t.destroyFunctions.push(e.value.destroy)});const r=n.filter(e=>"fulfilled"===e.status).length,o=n.length-r;return o>0&&console.warn(`[navbar] ${r}/${n.length} functions loaded successfully. ${o} failed but won't affect other functions.`),{result:"navbar initialized",destroy:()=>{t.destroyFunctions.forEach(e=>{try{e()}catch(t){console.error("[navbar] Error during cleanup:",t)}}),t.destroyFunctions.length=0}}}function I(t){const n={observers:[],handlers:[]};return function(n,r){const s=a(t,"wrapper");if(0===s.length)return 0;let u=0;s.forEach((s,a)=>{const d=o(t,"toggle",s),p=o(t,"content",s);if(!d||!p)return;u++;const m=`[${e.attributes.height}="${e.attributes.heightValue}"]`,f=s.querySelector(m),h=f?f.parentElement:p,v=`hs-accordion-btn-${a}`,g=`hs-accordion-content-${a}`,y=s.getAttribute(t.attributes.properties.open),b=s.getAttribute(t.attributes.properties.closed),w=y&&b;let A=[];if(w){const e=i(t,"state");A=Array.from(d.querySelectorAll(e))}function E(){return s.classList.contains(e.classes.active)}function L(){const e=E();if("true"===d.getAttribute("aria-expanded")&&!e&&p.contains(document.activeElement)){d.focus()}d.setAttribute("aria-expanded",e?"true":"false");var t;p.inert=!e,w&&A.length>0&&(t=e?y:b,w&&A.forEach(e=>{e.textContent=t})),c(h,e,{duration:300,ease:"power2.inOut"})}d.setAttribute("id",v),p.setAttribute("id",g),p.setAttribute("role","region"),p.setAttribute("aria-labelledby",v),d.setAttribute("aria-controls",g);const k=s.getAttribute(t.attributes.properties.default);k&&"open"===k.toLowerCase()&&s.classList.add(e.classes.active),l(h,E()),L();r(d,"click",t=>{t.preventDefault(),s.classList.toggle(e.classes.active)});const x=new MutationObserver(()=>{L()});x.observe(s,{attributes:!0,attributeFilter:["class"]}),n(x)})}(e=>n.observers.push(e),(e,t,r,o)=>{e.addEventListener(t,r,o),n.handlers.push({element:e,event:t,handler:r,options:o})}),{result:"accordion initialized",destroy:()=>{n.observers.forEach(e=>e.disconnect()),n.observers.length=0,n.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),n.handlers.length=0}}}function N(e){const t=m._global.classes.active,n={observers:[],handlers:[],scrollTimeout:null,headings:[]},r=a(e,"content"),o=a(e,"list");return r.forEach(e=>{const r=o[0];if(!r||0===r.children.length)return;const s=r.children[0].cloneNode(!0),a=s.querySelector("a");a&&a.classList.remove(t),r.innerHTML="";const i=e.querySelectorAll("h2");i.forEach(e=>{const t=e.textContent.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"");e.id=t,n.headings.push(e)}),i.forEach((e,t)=>{const n=s.cloneNode(!0),o=n.querySelector("a"),a=e.id;o.href=`#${a}`;const i=document.createElement("strong");i.textContent=`${t+1}. `,o.innerHTML="",o.appendChild(i),o.appendChild(document.createTextNode(e.textContent)),r.appendChild(n)});const l=r.querySelectorAll("a");let c=null;const u=()=>{const e=.25*window.innerHeight;let n=null;for(let t=i.length-1;t>=0;t--){if(i[t].getBoundingClientRect().top<=e){n=i[t].id;break}}if(n!==c&&(c=n,l.forEach(e=>e.classList.remove(t)),c)){const e=Array.from(l).find(e=>e.getAttribute("href")===`#${c}`);e&&e.classList.add(t)}},d=new IntersectionObserver(()=>{u()},{rootMargin:"-25% 0px -75% 0px",threshold:0});i.forEach(e=>d.observe(e)),(e=>{n.observers.push(e)})(d);var p,m,f;p=window,m="scroll",f=()=>{n.scrollTimeout&&clearTimeout(n.scrollTimeout),n.scrollTimeout=setTimeout(u,50)},p.addEventListener(m,f),n.handlers.push({element:p,event:m,handler:f})}),{result:"toc initialized",destroy:()=>{n.headings.forEach(e=>{e.removeAttribute("id")}),n.headings.length=0,n.observers.forEach(e=>e.disconnect()),n.observers.length=0,n.handlers.forEach(({element:e,event:t,handler:n})=>{e.removeEventListener(t,n)}),n.handlers.length=0,n.scrollTimeout&&(clearTimeout(n.scrollTimeout),n.scrollTimeout=null)}}}async function M(){const e=m.default.toc,t={destroyFunctions:[]},n=i(e,"list");if(document.querySelector(n))try{const n=await N(e);n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[toc] Error initializing heading-links:",c)}const l=i(e["progress-bar"],"wrapper");if(document.querySelector(l))try{const n=await async function(e){const{progressConfig:t,tocConfig:n}=e;if(s())return{result:"progress-bar skipped - prefers-reduced-motion enabled"};const i=r("progress-bar");if(!i)return{result:"progress-bar skipped - GSAP not loaded"};const{gsap:l,ScrollTrigger:c}=i;if(!c)return console.warn("[progress-bar] GSAP ScrollTrigger plugin not loaded"),{result:"progress-bar skipped - ScrollTrigger not loaded"};l.registerPlugin(c);const u={scrollTriggers:[]},d=o(n,"content");if(!d)return{result:"progress-bar skipped - no content element found"};const p=a(t,"wrapper");return 0===p.length?{result:"progress-bar skipped - no wrapper elements found"}:(p.forEach(e=>{l.set(e,{display:"block"}),Array.from(e.querySelectorAll("*")).filter(e=>{const n=t.attributes.elements.element.primary,[r,o]=n.split("="),s=o?.replace(/['"]/g,"");return e.getAttribute(r)===s}).forEach(e=>{l.set(e,{width:"0%"}),l.to(e,{width:"100%",ease:"none",scrollTrigger:{trigger:d,start:"top bottom",end:"bottom 75%",scrub:!0,invalidateOnRefresh:!0,onUpdate:e=>{u.scrollTriggers.includes(e)||u.scrollTriggers.push(e)}}})})}),{result:`progress-bar initialized (${p.length} instances)`,destroy:()=>{u.scrollTriggers.forEach(e=>{e&&"object"==typeof e&&"kill"in e&&"function"==typeof e.kill&&e.kill()}),u.scrollTriggers.length=0}})}({progressConfig:e["progress-bar"],tocConfig:e});n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[toc] Error initializing progress-bar:",c)}return{result:`toc initialized (${t.destroyFunctions.length} modules active)`,destroy:()=>{t.destroyFunctions.forEach(e=>{try{e()}catch(c){console.error("[toc] Error during cleanup:",c)}}),t.destroyFunctions.length=0}}}function H(t){const n={observers:[],handlers:[],liveRegions:[]};try{a(t,"wrapper").forEach(r=>{try{const s=function(t,n,r){const s=o(r,"list",t);if(!s)return console.warn("[pagination] Missing required element: list"),null;const a=s.parentElement;if(!a)return null;const l={controls:o(r,"controls",t),counter:o(r,"counter",t),dotsWrap:o(r,"dots",t),nextButton:null,prevButton:null};if(!l.controls)return{initialized:!1};const c=o(r,"next",t),u=o(r,"previous",t),d=i(e.clickable,"button"),m=c?.querySelector(d)||c,f=u?.querySelector(d)||u;if(!m||!f)return console.warn("[pagination] Missing required navigation buttons"),null;l.nextButton=m,l.prevButton=f,l.nextButton.setAttribute("aria-label","Go to next page"),l.prevButton.setAttribute("aria-label","Go to previous page"),l.counter&&(l.counter.setAttribute("aria-live","polite"),l.counter.setAttribute("aria-label","Current page"));const h=parseInt(l.controls?.getAttribute(r.attributes.properties.show)||"6")||6,v=parseInt(l.controls?.getAttribute(r.attributes.properties.showMobile)||String(h))||h,g=()=>getComputedStyle(s).getPropertyValue(p.state).trim()===e.cssVars.state.values.active,y=Array.from(s.children),b=y.length;if(!b)return null;const w={totalPages:1,currentIndex:1,currentPage:1,isAnimating:!1,itemsPerPage:h,dotTemplates:{active:null,inactive:null}};let A=[];const E=document.createElement("div");E.className="sr-only",E.setAttribute("aria-live","assertive"),E.setAttribute("aria-atomic","true"),E.style.cssText="position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden;",t.appendChild(E),n.liveRegions.push(E);const L=()=>{l.counter&&(l.counter.textContent=`${w.currentPage} / ${w.totalPages}`)},k=()=>{E.textContent=`Page ${w.currentPage} of ${w.totalPages}`,setTimeout(()=>E.textContent="",1e3)},x=()=>{A.forEach((e,t)=>{const n=e;t===w.currentIndex?n.removeAttribute("inert"):n.setAttribute("inert","")})},S=()=>{const e=A[w.currentIndex];e&&void 0!==e.offsetHeight&&(a.style.height=e.offsetHeight+"px")},C=()=>{if(!l.dotsWrap)return;const e=Array.from(l.dotsWrap.children);if(!e.length)return;const t=e.find(e=>e.classList.contains("is-active")),r=e.find(e=>!e.classList.contains("is-active"));w.dotTemplates.active=t?t.cloneNode(!0):e[0].cloneNode(!0),w.dotTemplates.inactive=r?r.cloneNode(!0):e[0].cloneNode(!0),l.dotsWrap.innerHTML="",l.dotsWrap.setAttribute("role","group"),l.dotsWrap.setAttribute("aria-label","Page navigation");for(let o=1;o<=w.totalPages;o++){const e=(1===o?w.dotTemplates.active:w.dotTemplates.inactive).cloneNode(!0);e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",`Go to page ${o}`),e.setAttribute("aria-current",1===o?"page":"false"),e.setAttribute("data-page",String(o)),1===o?e.classList.add("is-active"):e.classList.remove("is-active");const t=()=>$(o);e.addEventListener("click",t),n.handlers.push({element:e,event:"click",handler:t});const r=e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),$(o))};e.addEventListener("keydown",r),n.handlers.push({element:e,event:"keydown",handler:r}),l.dotsWrap.appendChild(e)}},T=()=>{if(!l.dotsWrap)return;Array.from(l.dotsWrap.children).forEach((e,t)=>{t+1===w.currentPage?(e.classList.add("is-active"),e.setAttribute("aria-current","page")):(e.classList.remove("is-active"),e.setAttribute("aria-current","false"))})},q=(e=null)=>{const t=g();if(w.itemsPerPage=e||(t?v:h),w.totalPages=Math.ceil(b/w.itemsPerPage),l.dotsWrap&&(n.handlers=n.handlers.filter(({element:e})=>!l.dotsWrap.contains(e))),Array.from(a.children).forEach(e=>{e!==s&&a.removeChild(e)}),s.innerHTML="",y.forEach(e=>s.appendChild(e)),w.totalPages<=1)return l.controls&&(l.controls.contains(document.activeElement)&&document.activeElement&&document.activeElement.blur(),l.controls.style.display="none",l.controls.setAttribute("aria-hidden","true")),l.dotsWrap&&(l.dotsWrap.style.display="none",l.dotsWrap.setAttribute("aria-hidden","true")),Object.assign(w,{totalPages:1,currentIndex:1,currentPage:1,isAnimating:!1}),a.style.cssText=`transform: translateX(0%); height: ${s.offsetHeight}px;`,A=[s],1;l.controls&&(l.controls.style.display="",l.controls.removeAttribute("aria-hidden")),l.dotsWrap&&(l.dotsWrap.style.display="",l.dotsWrap.removeAttribute("aria-hidden"));const r=Array.from({length:w.totalPages},(e,t)=>{const n=s.cloneNode(!1),r=t*w.itemsPerPage,o=Math.min(r+w.itemsPerPage,b);return y.slice(r,o).forEach(e=>n.appendChild(e.cloneNode(!0))),n});return a.insertBefore(r[r.length-1].cloneNode(!0),s),r.slice(1).forEach(e=>a.appendChild(e)),a.appendChild(r[0].cloneNode(!0)),s.innerHTML="",Array.from(r[0].children).forEach(e=>s.appendChild(e)),Object.assign(w,{currentIndex:1,currentPage:1,isAnimating:!1}),A=Array.from(a.children),a.style.transform="translateX(-100%)",L(),S(),x(),C(),w.totalPages};let P=g();const D=new ResizeObserver(()=>{if(w.isAnimating)return;const e=g();e!==P?(P=e,q()):S()});D.observe(a),n.observers.push(D),q();const $=e=>{if(w.isAnimating||w.totalPages<=1||e===w.currentPage)return;w.isAnimating=!0,w.currentIndex=e,w.currentPage=e,L(),k(),S(),T(),g()&&l.controls&&setTimeout(()=>{const e=80,t=l.controls.getBoundingClientRect().bottom+window.pageYOffset-window.innerHeight+e;window.scrollTo({top:t,behavior:"smooth"})},50),a.style.transform=`translateX(${100*-w.currentIndex}%)`;let t=null;const n=()=>{clearTimeout(t),a.removeEventListener("transitionend",n),L(),k(),S(),x(),T(),w.isAnimating=!1};t=setTimeout(n,1e3),a.addEventListener("transitionend",n)},F=e=>{if(w.isAnimating||w.totalPages<=1)return;w.isAnimating=!0,w.currentIndex+=e,w.currentPage=w.currentIndex>w.totalPages?1:w.currentIndex<1?w.totalPages:w.currentIndex,L(),k(),S(),T(),g()&&l.controls&&setTimeout(()=>{const e=80,t=l.controls.getBoundingClientRect().bottom+window.pageYOffset-window.innerHeight+e;window.scrollTo({top:t,behavior:"smooth"})},50),a.style.transform=`translateX(${100*-w.currentIndex}%)`;let t=null;const n=()=>{clearTimeout(t),a.removeEventListener("transitionend",n),w.currentIndex>w.totalPages?(w.currentIndex=1,w.currentPage=1,a.style.transition="none",a.style.transform="translateX(-100%)",a.offsetHeight,a.style.transition=""):w.currentIndex<1&&(w.currentIndex=w.totalPages,w.currentPage=w.totalPages,a.style.transition="none",a.style.transform=`translateX(${100*-w.totalPages}%)`,a.offsetHeight,a.style.transition=""),L(),k(),S(),x(),T(),w.isAnimating=!1};t=setTimeout(n,1e3),a.addEventListener("transitionend",n)},I=()=>F(1),N=()=>F(-1);return l.nextButton.addEventListener("click",I),l.prevButton.addEventListener("click",N),n.handlers.push({element:l.nextButton,event:"click",handler:I},{element:l.prevButton,event:"click",handler:N}),{initialized:!0}}(r,n,t);s||console.warn("[pagination] Failed to initialize container",r)}catch(s){console.error("[pagination] Error initializing container:",s,r)}})}catch(r){console.error("[pagination] Critical error during initialization:",r)}return{result:"pagination initialized",destroy:()=>{try{n.liveRegions.forEach(e=>{try{e.parentNode&&e.parentNode.removeChild(e)}catch(r){console.error("[pagination] Error removing live region:",r)}}),n.liveRegions.length=0,n.observers.forEach(e=>{try{e.disconnect()}catch(r){console.error("[pagination] Error disconnecting observer:",r)}}),n.observers.length=0,n.handlers.forEach(({element:e,event:t,handler:n})=>{try{e.removeEventListener(t,n)}catch(r){console.error("[pagination] Error removing event listener:",r)}}),n.handlers.length=0}catch(r){console.error("[pagination] Critical error during cleanup:",r)}}}}async function O(t){const n=r("comparison");if(!n)return{result:"comparison skipped - GSAP not loaded"};const{gsap:s,Draggable:l}=n;f("comparison",["Draggable"],"error");const c=a(t,"wrapper"),u={draggables:[],handlers:[]},d=i(t,"template-name"),m=i(t,"template-description"),h=i(t,"template-before-image"),v=i(t,"template-after-image");function g(e,t){e.style.setProperty(p.clip,`${t}%`)}function y(n,r){const s=n.templateItems[r];if(!s)return;const a=s.querySelector(d);n.nameElement&&a&&(n.nameElement.textContent=a.textContent);const i=s.querySelector(m);n.descElement&&i&&(n.descElement.textContent=i.textContent);const l=s.querySelector(h);n.beforeImage&&l&&(n.beforeImage.src=l.src,n.beforeImage.alt=l.alt||"");const c=s.querySelector(v);n.afterImage&&c&&(n.afterImage.src=c.src,n.afterImage.alt=c.alt||"",b(n)),n.currentIndex=r,function(n,r){const s=o(t,"pagination",n);if(!s)return;const a=e.classes.active;Array.from(s.children).forEach((e,t)=>{t===r?e.classList.add(a):e.classList.remove(a)})}(n.wrapper,r)}function b(e){const t=e.slider,n=e.wrapper;switch(e.mode){case"before":n.style.setProperty(p.clip,"100%"),t.style.display="none";break;case"after":n.style.setProperty(p.clip,"0%"),t.style.display="none";break;case"split":g(n,e.sliderPosition),t.style.display="flex"}}function w(e,t){const n=e.currentIndex+t,r=e.templateItems.length-1;let o;o=n>r?0:n<0?r:n,y(e,o)}return c.forEach(n=>{const r=o(t,"template-list",n);if(!r)return void console.warn("[comparison] No template list found in wrapper");const a=i(t,"template-item"),c=Array.from(r.querySelectorAll(a));if(0===c.length)return void console.warn("[comparison] No template items found");n.setAttribute("aria-live","polite"),n.setAttribute("aria-label","Before and after image comparison");const d=o(t,"image-wrapper",n),p=o(t,"slider",n),m=o(t,"before-image",n),f=o(t,"after-image",n),h=o(t,"name",n),v=o(t,"description",n);if(!d||!p||!f){const e=[];return d||e.push('image-wrapper (data-hs-comparison="image-wrapper")'),p||e.push('slider (data-hs-comparison="slider")'),f||e.push('after-image (data-hs-comparison-image="after")'),void console.warn(`[comparison] Missing required elements: ${e.join(", ")}`)}const A={wrapper:n,templateItems:c,currentIndex:0,mode:"split",sliderPosition:50,slider:p,beforeImage:m?.querySelector("img"),afterImage:f?.querySelector("img"),nameElement:h,descElement:v,draggable:null};if(y(A,0),g(n,50),l){const e=l.create(p,{type:"x",bounds:d,onDrag:function(){const e=d.getBoundingClientRect(),t=p.getBoundingClientRect().left-e.left,r=Math.max(0,Math.min(100,t/e.width*100));g(n,r),A.sliderPosition=r}});u.draggables.push(e),A.draggable=e[0];const t=e=>{if("split"!==A.mode)return;const t=d.getBoundingClientRect(),r=e.clientX-t.left,o=Math.max(0,Math.min(100,r/t.width*100)),a=r-t.width/2;A.draggable&&(s.set(p,{x:a}),A.draggable.update()),g(n,o),A.sliderPosition=o};d.addEventListener("click",t),u.handlers.push({element:d,event:"click",handler:t})}n.querySelectorAll(`[${t.attributes.properties.modeType}]`).forEach(n=>{const r=n.getAttribute(t.attributes.properties.modeType),o=i(e.clickable,"button"),s=n.querySelector(o)||n;r===A.mode&&n.classList.add(e.classes.active);const a=n=>{n.preventDefault(),function(n,r){const o=n.wrapper.querySelectorAll(`[${t.attributes.properties.modeType}]`),s=e.classes.active;o.forEach(e=>{e.getAttribute(t.attributes.properties.modeType)===r?e.classList.add(s):e.classList.remove(s)}),n.mode=r,b(n)}(A,r)};s.addEventListener("click",a),u.handlers.push({element:s,event:"click",handler:a})}),function(n,r){const o=r.querySelector(`[${t.attributes.properties.navType}="previous"]`),s=r.querySelector(`[${t.attributes.properties.navType}="next"]`);if(o){const t=i(e.clickable,"button"),r=o.querySelector(t)||o;r.setAttribute("aria-label","Previous image");const s=e=>{e.preventDefault(),w(n,-1)};r.addEventListener("click",s),u.handlers.push({element:r,event:"click",handler:s})}if(s){const t=i(e.clickable,"button"),r=s.querySelector(t)||s;r.setAttribute("aria-label","Next image");const o=e=>{e.preventDefault(),w(n,1)};r.addEventListener("click",o),u.handlers.push({element:r,event:"click",handler:o})}}(A,n);const E=o(t,"pagination",n);E&&c.length>1&&function(t,n){const r=n.children[0];if(!r)return;const o=e.classes.active;n.innerHTML="",t.templateItems.forEach((e,s)=>{const a=r.cloneNode(!0);a.classList.remove(o),0===s&&a.classList.add(o);const i=()=>{y(t,s)};a.addEventListener("click",i),u.handlers.push({element:a,event:"click",handler:i}),n.appendChild(a)})}(A,E),function(e){const t=t=>{"ArrowLeft"===t.key||"ArrowUp"===t.key?(t.preventDefault(),w(e,-1)):"ArrowRight"!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),w(e,1))};e.wrapper.addEventListener("keydown",t),e.wrapper.setAttribute("tabindex","0"),u.handlers.push({element:e.wrapper,event:"keydown",handler:t})}(A)}),{result:`comparison initialized (${c.length} instances)`,destroy:()=>{u.draggables.forEach(e=>{e&&e[0]&&e[0].kill&&e[0].kill()}),u.handlers.forEach(({element:e,event:t,handler:n})=>{e.removeEventListener(t,n)}),u.draggables.length=0,u.handlers.length=0}}}const z=m.structure.tabs;function W(){const t={handlers:[],timers:[],animationFrames:[],observers:[]},n=(e,n,r,o)=>{e.addEventListener(n,r,o),t.handlers.push({element:e,event:n,handler:r,options:o})},l=e=>t.animationFrames.push(e),c=()=>`${m._global.cssVars.prefix}${z.cssVars?.progress||"progress"}`,u=(e,t)=>e.style.setProperty(c(),String(t));function d(a){const d=o(z,"links",a),p=o(z,"list",a);if(!d||!p)return;const m=Array.from(d.children),f=Array.from(p.children),h=i(e.clickable,"button"),v=m.map(e=>e.querySelector(h)).filter(e=>null!==e);if(0===v.length)return;const g=a.getAttribute(z.attributes.properties?.autoplay||"data-hs-tab-autoplay"),y=a.getAttribute(z.attributes.properties?.duration||"data-hs-tab-duration"),b=a.getAttribute(z.attributes.properties?.hover||"data-hs-tab-hover"),w=a.getAttribute(z.attributes.properties?.animation||"data-hs-tab-animation"),A=a.getAttribute(z.attributes.properties?.animationDuration||"data-hs-tab-animation-duration"),E="true"===g,L=y?parseFloat(y):6,k="pause"===b,x=w,S=A?parseFloat(A):.3,C=`${"hs-tab"}-${Math.random().toString(36).substring(2,9)}`;f.forEach((e,t)=>{const n=e.id||`${C}-panel-${t}`,r=`${C}-tab-${t}`;e.id=n,v[t]&&(v[t].id=r,v[t].setAttribute("aria-controls",n))});let T=0,q=null,P=null,D=null,$=!1,F=!1,I=!1;async function N(t,n=!1){if(F)return;if(t<0||t>=f.length)return;if(t===T&&!n)return;F=!0;const o=T;if(T=t,v.forEach((e,n)=>{e.setAttribute("aria-selected",n===t?"true":"false"),e.setAttribute("tabindex",n===t?"0":"-1")}),m.forEach((n,r)=>{n.classList.toggle(e.classes.active,r===t)}),E)if($){const e=m[o]?parseFloat(getComputedStyle(m[o]).getPropertyValue(c())||"0"):0;m.forEach((n,r)=>u(n,r===t?e:0))}else H();const a=f[o],i=f[t];"fade"!==x||n?"clip"!==x||n?f.forEach((n,r)=>{r===t?("fade"===x||"clip"===x?(n.style.position="",n.style.display="block","fade"===x?n.style.opacity="1":n.style.clipPath=""):n.style.display="block",n.inert=!1,n.style.pointerEvents="",n.classList.add(e.classes.active)):("fade"===x||"clip"===x?(n.style.display="none","fade"===x?n.style.opacity="0":n.style.clipPath=""):n.style.display="none",n.inert=!0,n.style.pointerEvents="none",n.classList.remove(e.classes.active))}):await async function(e,t,n){s()&&(n=0);const o=r("tabs",!1);if(!o)return e.style.display="none",e.style.position="",e.style.clipPath="",e.inert=!0,e.style.pointerEvents="none",t.style.display="block",t.style.position="",t.style.clipPath="",t.inert=!1,void(t.style.pointerEvents="");const{gsap:a}=o;return new Promise(r=>{const o=a.timeline({onComplete:()=>{e.style.display="none",e.style.position="",e.style.clipPath="",e.inert=!0,e.style.pointerEvents="none",t.style.position="",t.style.clipPath="",t.inert=!1,t.style.pointerEvents="",r()},defaults:{duration:n,ease:"power1.inOut"}});o.set(e,{position:"absolute",top:0,left:0,width:"100%",clipPath:"inset(0% 0% 0% 0%)"}),o.set(t,{display:"block",position:"relative",clipPath:"inset(0% 0% 100% 0%)"}),o.to(e,{clipPath:"inset(100% 0% 0% 0%)"}),o.to(t,{clipPath:"inset(0% 0% 0% 0%)"},"<40%")})}(a,i,S):await async function(e,t,n){s()&&(n=0);const o=r("tabs",!1);if(!o)return e.style.display="none",e.style.position="",e.inert=!0,e.style.pointerEvents="none",t.style.display="block",t.style.position="",t.inert=!1,void(t.style.pointerEvents="");const{gsap:a}=o;return new Promise(r=>{const o=a.timeline({onComplete:()=>{e.style.display="none",e.style.position="",e.style.opacity="",e.inert=!0,e.style.pointerEvents="none",t.style.position="",t.style.opacity="",t.inert=!1,t.style.pointerEvents="",r()},defaults:{duration:n,ease:"power1.out"}});o.set(e,{position:"absolute",top:0,left:0,width:"100%"}),o.set(t,{display:"block",position:"relative",opacity:0}),o.to(e,{opacity:0}),o.to(t,{opacity:1},"<50%")})}(a,i,S),F=!1}function M(e){if(E){D||(D=e);const t=Math.min((e-D)/(1e3*L),1);m.forEach((e,n)=>u(e,n===T?t:0)),t<1&&!$&&(P=requestAnimationFrame(M),P&&l(P))}else m.forEach((e,t)=>u(e,t===T?1:0))}function H(){if(O(),!E)return M(0);if($||!I)return;const e=m[T]?parseFloat(getComputedStyle(m[T]).getPropertyValue(c())||"0"):0,n=e*L*1e3,r=Math.max(0,1e3*L-n);D=null;const o=e,s=performance.now(),a=e=>{const t=Math.min(o+(e-s)/(1e3*L),1);m.forEach((e,n)=>u(e,n===T?t:0)),t<1&&!$&&(P=requestAnimationFrame(a),P&&l(P))};var i;P=requestAnimationFrame(a),P&&l(P),q=window.setTimeout(()=>N((T+1)%f.length),r),i=q,t.timers.push(i)}function O(){null!==q&&(clearTimeout(q),q=null),null!==P&&(cancelAnimationFrame(P),P=null),D=null}const W=()=>{$=!0,O()},B=()=>{$=!1,H()};v.forEach((e,t)=>{n(e,"click",e=>{e.preventDefault(),N(t)})});const R=e=>{const t=v.indexOf(e.target);if(-1===t)return;let n=t;switch(e.key){case"ArrowLeft":case"ArrowUp":e.preventDefault(),n=0===t?v.length-1:t-1;break;case"ArrowRight":case"ArrowDown":e.preventDefault(),n=t===v.length-1?0:t+1;break;case"Home":e.preventDefault(),n=0;break;case"End":e.preventDefault(),n=v.length-1;break;default:return}F||(N(n),v[n].focus())};v.forEach(e=>n(e,"keydown",R)),k&&E&&(n(a,"mouseenter",W),n(a,"mouseleave",B));let V=!1;n(document,"keydown",()=>V=!0),n(document,"mousedown",()=>V=!1),E&&(n(a,"focusin",()=>{V&&(W(),K())}),n(a,"focusout",()=>{V&&$&&(B(),K())}));const U=`[${z.attributes.properties?.controls||"data-hs-tab-controls"}]`,G=a.querySelectorAll(U);let X=null,Y=null;G.forEach(t=>{const r=t.getAttribute(z.attributes.properties?.controls||"data-hs-tab-controls"),o=t.querySelector(h);if(o)if("previous"===r)o.setAttribute("aria-label","Previous tab"),n(o,"click",e=>{e.preventDefault(),N(0===T?f.length-1:T-1)});else if("next"===r)o.setAttribute("aria-label","Next tab"),n(o,"click",e=>{e.preventDefault(),N((T+1)%f.length)});else if("toggle"===r){if(!E)return void(t.style.display="none");X=t,Y=o,Y.setAttribute("aria-label",$?"Play":"Pause"),X.classList.toggle(e.classes.active,!$),n(o,"click",e=>{e.preventDefault(),$?B():W(),K()})}});const K=()=>{X&&Y&&(X.classList.toggle(e.classes.active,!$),Y.setAttribute("aria-label",$?"Play":"Pause"))};if(N(0,!0),E){const e=new IntersectionObserver(e=>{e.forEach(e=>{I=e.isIntersecting,e.isIntersecting&&!$?H():O()})},{threshold:.1});e.observe(a),j=e,t.observers.push(j)}var j}const p=a(z,"wrapper");return p.forEach(e=>{d(e)}),{result:`tabs initialized (${p.length} systems)`,destroy:()=>{t.timers.forEach(e=>clearTimeout(e)),t.timers.length=0,t.animationFrames.forEach(e=>cancelAnimationFrame(e)),t.animationFrames.length=0,t.observers.forEach(e=>e.disconnect()),t.observers.length=0,t.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),t.handlers.length=0}}}function B(e){const t={handlers:[],domContentLoadedHandler:null},n=(e,n,r)=>{e.addEventListener(n,r),t.handlers.push({element:e,event:n,handler:r})};function r(){a(e,"wrapper").forEach(t=>{const r=t;r.dataset.hsFormRangeInit||(r.dataset.hsFormRangeInit="true",function(t,n){const r=t.querySelector("input[type='range']");if(!r)return void console.warn('[range] Missing <input type="range"> element in wrapper',t);const s=o(e,"output",t),a=()=>{const n=r.min?+r.min:0,o=r.max?+r.max:100,a=+r.value||n,i=(a-n)/(o-n);t.style.setProperty(`${m._global.cssVars.prefix}${e.cssVars?.progress||"progress"}`,String(i)),s&&(s.textContent=String(a))};n(r,"input",a),a()}(r,n))})}return"loading"===document.readyState?(t.domContentLoadedHandler=r,document.addEventListener("DOMContentLoaded",t.domContentLoadedHandler)):r(),{result:"range initialized",destroy:()=>{t.domContentLoadedHandler&&(document.removeEventListener("DOMContentLoaded",t.domContentLoadedHandler),t.domContentLoadedHandler=null),t.handlers.forEach(({element:e,event:t,handler:n})=>{e.removeEventListener(t,n)}),t.handlers.length=0;a(e,"wrapper").forEach(e=>{delete e.dataset.hsFormRangeInit})}}}const R=[{name:"Alabama",value:"AL"},{name:"Alaska",value:"AK"},{name:"Arizona",value:"AZ"},{name:"Arkansas",value:"AR"},{name:"California",value:"CA"},{name:"Colorado",value:"CO"},{name:"Connecticut",value:"CT"},{name:"Delaware",value:"DE"},{name:"Florida",value:"FL"},{name:"Georgia",value:"GA"},{name:"Hawaii",value:"HI"},{name:"Idaho",value:"ID"},{name:"Illinois",value:"IL"},{name:"Indiana",value:"IN"},{name:"Iowa",value:"IA"},{name:"Kansas",value:"KS"},{name:"Kentucky",value:"KY"},{name:"Louisiana",value:"LA"},{name:"Maine",value:"ME"},{name:"Maryland",value:"MD"},{name:"Massachusetts",value:"MA"},{name:"Michigan",value:"MI"},{name:"Minnesota",value:"MN"},{name:"Mississippi",value:"MS"},{name:"Missouri",value:"MO"},{name:"Montana",value:"MT"},{name:"Nebraska",value:"NE"},{name:"Nevada",value:"NV"},{name:"New Hampshire",value:"NH"},{name:"New Jersey",value:"NJ"},{name:"New Mexico",value:"NM"},{name:"New York",value:"NY"},{name:"North Carolina",value:"NC"},{name:"North Dakota",value:"ND"},{name:"Ohio",value:"OH"},{name:"Oklahoma",value:"OK"},{name:"Oregon",value:"OR"},{name:"Pennsylvania",value:"PA"},{name:"Rhode Island",value:"RI"},{name:"South Carolina",value:"SC"},{name:"South Dakota",value:"SD"},{name:"Tennessee",value:"TN"},{name:"Texas",value:"TX"},{name:"Utah",value:"UT"},{name:"Vermont",value:"VT"},{name:"Virginia",value:"VA"},{name:"Washington",value:"WA"},{name:"West Virginia",value:"WV"},{name:"Wisconsin",value:"WI"},{name:"Wyoming",value:"WY"}];function V(e){const t={observers:[],handlers:[],timeouts:[],domContentLoadedHandler:null},n=e=>t.observers.push(e),r=(e,n,r,o)=>{e.addEventListener(n,r,o),t.handlers.push({element:e,event:n,handler:r,options:o})},s=e=>t.timeouts.push(e);function i(){document.querySelectorAll("select > div").forEach(e=>{const t=e.parentElement;for(;e.firstChild;)t.appendChild(e.firstChild);e.remove()});a(e,"wrapper").forEach(a=>{!function(n,r,s,a){const i=n.querySelector("select");if(!i)return void console.warn("[select] Missing <select> element in custom select wrapper",n);i.setAttribute("aria-hidden","true"),i.setAttribute("tabindex","-1");const p=i.getAttribute("name")||"custom-select",m=o(e,"list",n),f=o(e,"button",n);if(!m||!f)return void console.warn("[select] Missing required elements (list or button) in custom select wrapper",n);function h(){i.disabled?(f.disabled=!0,f.setAttribute("aria-disabled","true")):(f.disabled=!1,f.removeAttribute("aria-disabled"))}h();const v=m.firstElementChild;if(!v)return void console.warn("[select] Missing option template in custom select list",n);const g=v.cloneNode(!0);v.remove();i.querySelectorAll("option").forEach((e,t)=>{const n=g.cloneNode(!0),r=n.querySelector("span");if(r&&(r.textContent=e.textContent),n.setAttribute("data-value",e.value),n.setAttribute("role","option"),n.setAttribute("id",`${p}-option-${t}`),n.setAttribute("tabindex","-1"),e.selected){n.setAttribute("aria-selected","true");const t=f.querySelector("span")||f;"SPAN"===t.tagName&&(t.textContent=e.textContent),e.value?f.classList.add("is-filled"):f.classList.remove("is-filled")}else n.setAttribute("aria-selected","false");m.appendChild(n)}),m.setAttribute("role","listbox"),m.setAttribute("id",`${p}-listbox`),m.setAttribute("tabindex","-1"),m.setAttribute("aria-hidden","true"),m.inert=!0,f.setAttribute("role","combobox"),f.setAttribute("aria-haspopup","listbox"),f.setAttribute("aria-controls",`${p}-listbox`),f.setAttribute("aria-expanded","false"),f.setAttribute("id",`${p}-button`);const y=n.querySelector("label")||document.querySelector(`label[for="${i.id}"]`);if(y){const e=y.id||`${p}-label`;y.id=e,i.id||(i.id=`${p}-select`),y.setAttribute("for",i.id),f.setAttribute("aria-labelledby",e)}const b=n.querySelector('[data-hs-height="element"]'),w=b||null;let A="",E=null;function L(){return n.classList.contains("is-active")}function k(){const e=L(),t="true"===f.getAttribute("aria-expanded");if(t&&!e&&m.contains(document.activeElement)&&f.focus(),f.setAttribute("aria-expanded",e?"true":"false"),m.setAttribute("aria-hidden",e?"false":"true"),m.inert=!e,e){m.querySelectorAll('[role="option"]').forEach(e=>{e.setAttribute("tabindex","0")}),t||u()}else{f.removeAttribute("aria-activedescendant");m.querySelectorAll('[role="option"]').forEach(e=>{e.setAttribute("tabindex","-1")}),t&&d()}w&&c(w,e,{duration:300,ease:"power2.inOut"})}w&&l(w,L());function x(e){const t=m.querySelectorAll('[role="option"]');e<0||e>=t.length||(t.forEach(e=>{e.classList.remove("focused"),e.setAttribute("tabindex","-1")}),t[e].classList.add("focused"),t[e].setAttribute("tabindex","0"),t[e].focus(),f.setAttribute("aria-activedescendant",t[e].id))}function S(e){if(1!==e.length)return!1;if(null!==E){clearTimeout(E);const e=t.timeouts.indexOf(E);e>-1&&t.timeouts.splice(e,1)}const r=Array.from(m.querySelectorAll('[role="option"]'));if(0===r.length)return!1;A+=e.toLowerCase();const o=r.findIndex(e=>e.classList.contains("focused"));if(1===A.length||A.split("").every(e=>e===A[0])){const e=A[0];let t=o+1;for(let o=0;o<r.length;o++){const s=(t+o)%r.length;if((r[s].querySelector("span")?.textContent||r[s].textContent).toLowerCase().startsWith(e))return x(s),L()||n.classList.add("is-active"),E=setTimeout(C,500),a(E),!0}}else{const e=r.findIndex(e=>(e.querySelector("span")?.textContent||e.textContent).toLowerCase().startsWith(A));if(-1!==e)return x(e),L()||n.classList.add("is-active"),E=setTimeout(C,500),a(E),!0}return E=setTimeout(C,500),a(E),!1}function C(){A="",E=null}function T(e){const t=e.getAttribute("data-value")||"",r=e.querySelector("span")?.textContent||e.textContent;i.value=t,i.dispatchEvent(new Event("change",{bubbles:!0}));const o=f.querySelector("span")||f;"SPAN"===o.tagName&&(o.textContent=r),t?f.classList.add("is-filled"):f.classList.remove("is-filled"),m.querySelectorAll('[role="option"]').forEach(e=>{e.setAttribute("aria-selected","false")}),e.setAttribute("aria-selected","true"),n.classList.remove("is-active")}k();const q=e=>{e.preventDefault(),n.classList.toggle("is-active")};r(f,"click",q);const P=e=>{switch(e.key){case"Enter":e.preventDefault();const t=f.closest("form");if(t){const e=t.querySelector('button[type="submit"], input[type="submit"]')||t.querySelector("button:not([type])");e&&e.click()}break;case" ":e.preventDefault(),n.classList.toggle("is-active");break;case"ArrowDown":e.preventDefault(),L()?x(0):(n.classList.add("is-active"),requestAnimationFrame(()=>{x(0)}));break;case"ArrowUp":if(e.preventDefault(),L()){x(m.querySelectorAll('[role="option"]').length-1)}else n.classList.add("is-active"),requestAnimationFrame(()=>{x(0)});break;case"Escape":L()&&(e.preventDefault(),n.classList.remove("is-active"));break;case"Home":e.preventDefault(),L()||n.classList.add("is-active"),x(0);break;case"End":e.preventDefault(),L()||n.classList.add("is-active");x(m.querySelectorAll('[role="option"]').length-1);break;default:S(e.key)&&e.preventDefault()}};r(f,"keydown",P);const D=e=>{const t=e.target.closest('[role="option"]');if(!t)return;const r=Array.from(m.querySelectorAll('[role="option"]')),o=r.indexOf(t);switch(e.key){case"ArrowDown":e.preventDefault(),o<r.length-1&&x(o+1);break;case"ArrowUp":e.preventDefault(),o>0&&x(o-1);break;case"Enter":e.preventDefault(),T(t);break;case"Escape":e.preventDefault(),n.classList.remove("is-active"),f.focus();break;case"Home":e.preventDefault(),x(0);break;case"End":e.preventDefault(),x(r.length-1);break;default:S(e.key)&&e.preventDefault()}};r(m,"keydown",D);r(m,"click",e=>{const t=e.target.closest('[role="option"]');t&&T(t)});const $=e=>{e.relatedTarget&&n.contains(e.relatedTarget)||!n.classList.contains("is-active")||n.classList.remove("is-active")};r(m,"focusout",$);const F=e=>{n.classList.contains("is-active")&&!n.contains(e.target)&&n.classList.remove("is-active")};r(document,"click",F);const I=new MutationObserver(()=>{k()});I.observe(n,{attributes:!0,attributeFilter:["class"]}),s(I);const N=new MutationObserver(()=>{h()});N.observe(i,{attributes:!0,attributeFilter:["disabled"]}),s(N);const M=()=>{const e=i.options[i.selectedIndex];if(e){const t=m.querySelectorAll('[role="option"]'),n=Array.from(t).find(t=>t.getAttribute("data-value")===e.value);if(n){const r=n.querySelector("span")?.textContent||n.textContent,o=f.querySelector("span")||f;"SPAN"===o.tagName&&(o.textContent=r),e.value?f.classList.add("is-filled"):f.classList.remove("is-filled"),t.forEach(e=>{e.setAttribute("aria-selected","false")}),n.setAttribute("aria-selected","true")}}};r(i,"change",M),r(i,"input",M);const H=i.closest("form");if(H){r(H,"reset",()=>{setTimeout(()=>{M()},0)})}}(a,r,n,s)})}return"loading"===document.readyState?(t.domContentLoadedHandler=i,document.addEventListener("DOMContentLoaded",t.domContentLoadedHandler)):i(),window.initCustomSelects=i,{result:"select initialized",destroy:()=>{t.domContentLoadedHandler&&(document.removeEventListener("DOMContentLoaded",t.domContentLoadedHandler),t.domContentLoadedHandler=null),t.observers.forEach(e=>e.disconnect()),t.observers.length=0,t.timeouts.forEach(e=>clearTimeout(e)),t.timeouts.length=0,t.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),t.handlers.length=0,window.initCustomSelects&&delete window.initCustomSelects}}}async function U(e){const t={destroyFunctions:[]};try{const n=function(e){const t=a(e,"states");return t.forEach(e=>{const t=e;if("SELECT"!==t.tagName)return void console.warn('[select-states] data-hs-form-select="states" must be on a <select> element',t);const n=t.querySelectorAll("option");if(1!==n.length)return void console.warn("[select-states] Select must have exactly 1 default template option (placeholder). Found:",n.length,t);const r=n[0];if(""!==r.value)return void console.warn("[select-states] Template option must have empty value for placeholder. Found value:",r.value,t);const o=r.textContent;t.innerHTML="";const s=document.createElement("option");s.value="",s.textContent=o,t.appendChild(s),R.forEach(e=>{const n=document.createElement("option");n.value=e.value,n.textContent=e.name,t.appendChild(n)})}),{result:`states initialized on ${t.length} select${1!==t.length?"s":""}`,destroy:()=>{}}}(e.states);n?.destroy&&t.destroyFunctions.push(n.destroy);const r=V(e["custom-select"]);return r?.destroy&&t.destroyFunctions.push(r.destroy),{result:"select initialized",destroy:()=>{t.destroyFunctions.forEach(e=>{try{e()}catch(t){console.error("[select] Error during cleanup:",t)}}),t.destroyFunctions.length=0}}}catch(n){throw console.error("[select] Initialization failed:",n),t.destroyFunctions.forEach(e=>{try{e()}catch(t){console.error("[select] Error during error cleanup:",t)}}),n}}async function G(){const e=m.default.form,t={destroyFunctions:[]},n=i(e.honeypot,"form-handler");if(document.querySelector(n))try{const n=function(e){const t={honeypotHandler:null},n=t=>{const n=t.target;if("FORM"!==n.tagName)return;const r=o(e,"form-handler",n);return r&&r.value?(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1):void 0};return t.honeypotHandler=n,document.addEventListener("submit",n,!0),{result:"honeypot initialized",destroy:()=>{t.honeypotHandler&&(document.removeEventListener("submit",t.honeypotHandler,!0),t.honeypotHandler=null)}}}(e.honeypot);n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[form] Error initializing honeypot:",c)}const r=i(e.range,"wrapper");if(document.querySelector(r))try{const n=B(e.range);n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[form] Error initializing range:",c)}const s=i(e.test,"wrapper");if(document.querySelector(s))try{const n=function(e){const t={handlers:[]},n=(e,n,r,o)=>{e.addEventListener(n,r,o),t.handlers.push({element:e,event:n,handler:r,options:o})},r=a(e,"wrapper");return r.forEach(t=>{const r=t.querySelector("form");if(!r)return void console.warn('[form-test] No <form> element found within data-hs-form-test="wrapper"',t);const s=o(e,"info",t),a=()=>{const e=new FormData(r),t={};for(const[n,r]of e.entries())t[n]=r;if(s){const e=document.createElement("pre");e.textContent=JSON.stringify(t,null,2),s.innerHTML="",s.appendChild(document.createTextNode("Test mode active - Live form data:")),s.appendChild(e)}};s&&(s.textContent="Test mode active, preventing native submissions",a()),n(r,"input",a),n(r,"change",a);const i=r.querySelector('button[type="submit"], input[type="submit"]')||r.querySelector("button:not([type])");i&&n(i,"click",()=>{console.log("[form-test] Submit button clicked"),requestAnimationFrame(()=>{r.checkValidity()||console.log("[form-test] Browser blocked submission - validation failed")})}),n(r,"submit",e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),console.log("[form-test] Submission prevented - displaying test results");const t=new FormData(r),n={};for(const[r,s]of t.entries())n[r]=s;const o=`✅ Form would submit successfully at ${(new Date).toLocaleTimeString()}`;if(s){const e=document.createElement("pre");e.textContent=JSON.stringify(n,null,2),s.innerHTML="",s.appendChild(document.createTextNode(o)),s.appendChild(e)}else console.log(o),console.log("Form data:",n);return!1},!0)}),{result:`test initialized on ${r.length} form${1!==r.length?"s":""}`,destroy:()=>{t.handlers.forEach(({element:e,event:t,handler:n,options:r})=>{e.removeEventListener(t,n,r)}),t.handlers.length=0}}}(e.test);n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[form] Error initializing test:",c)}const l=i(e.select,"wrapper");if(document.querySelector(l))try{const n=await U(e.select);n?.destroy&&t.destroyFunctions.push(n.destroy)}catch(c){console.error("[form] Error initializing select:",c)}return{result:`form initialized (${t.destroyFunctions.length} modules active)`,destroy:()=>{t.destroyFunctions.forEach(e=>{try{e()}catch(c){console.error("[form] Error during cleanup:",c)}}),t.destroyFunctions.length=0}}}async function X(){const e={destroyFunctions:[]},t=m.default;try{const t=await S();t?.destroy&&e.destroyFunctions.push(t.destroy)}catch(a){console.error("[default] Error initializing transition:",a)}const n=[C(t["smooth-scroll"]),F(t.navbar),I(t.accordion),M(),H(t.pagination),O(t.comparison),W(),G()],r=await Promise.allSettled(n);r.forEach(t=>{"fulfilled"===t.status&&t.value?.destroy&&e.destroyFunctions.push(t.value.destroy)});const o=r.filter(e=>"fulfilled"===e.status).length,s=r.length-o;return s>0&&console.warn(`[default] ${o+1}/${r.length+1} modules loaded successfully. ${s} failed but won't affect other modules.`),{result:"default initialized",destroy:()=>{e.destroyFunctions.forEach(e=>{try{e()}catch(a){console.error("[default] Error during cleanup:",a)}}),e.destroyFunctions.length=0}}}export{X as init};
|
|
2
|
+
//# sourceMappingURL=hs-default-Dxg7WNGx.js.map
|
|
Binary file
|
|
Binary file
|