@akropolys/kiku 2.2.7 → 2.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ import{resolveDisplayFields as D}from"@akropolys/sdk";function O(t,e){return t.details??(t.fields?D(t.fields,e).details:[])}function L(t){return t.length?` (${t.map(e=>`${e.label}: ${e.value}`).join(", ")})`:""}function k(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var a=t.length;for(e=0;e<a;e++)t[e]&&(n=k(t[e]))&&(r&&(r+=" "),r+=n)}else for(n in t)t[n]&&(r&&(r+=" "),r+=n);return r}function C(){for(var t,e,n=0,r="",a=arguments.length;n<a;n++)(t=arguments[n])&&(e=k(t))&&(r&&(r+=" "),r+=e);return r}function Y(...t){return C(t)}function X(t){if(typeof t=="string")return{themeAttr:t,vars:void 0};if(!t)return{themeAttr:void 0,vars:void 0};let e={};return t.primaryColor&&(e["--hsk-primary"]=t.primaryColor),t.backgroundColor&&(e["--hsk-bg"]=t.backgroundColor,e["--hsk-chat-bg"]=t.backgroundColor),t.textColor&&(e["--hsk-text"]=t.textColor,e["--hsk-chat-text"]=t.textColor),t.fontFamily&&(e["--hsk-font"]=t.fontFamily),t.fontSize&&(e["--hsk-font-size"]=t.fontSize),t.mobileFontSize&&(e["--hsk-mobile-font-size"]=t.mobileFontSize),t.borderRadius&&(e["--hsk-border-radius"]=t.borderRadius),{themeAttr:void 0,vars:e}}var U="light",V=["light","dark","mahogany","blush","coffee","midnight"];function $(t){return typeof t=="string"&&V.includes(t)}function tt(t){if($(t))return t;try{let e=typeof window<"u"?localStorage.getItem("akropolys_theme"):null;if($(e))return e}catch{}return U}var S="hsk-sounds",o=null,m=null;function A(){try{return localStorage.getItem(S)!=="off"}catch{return!0}}function nt(t){try{localStorage.setItem(S,t?"on":"off")}catch{}t&&F()}function F(){if(typeof window>"u")return;try{let e=navigator.audioSession;e&&e.type!=="playback"&&(e.type="playback")}catch{}if(o){o.state==="suspended"&&o.resume().catch(()=>{});return}let t=window.AudioContext||window.webkitAudioContext;if(t)try{o=new t({latencyHint:"interactive"}),m=o.createGain(),m.gain.value=.28,m.connect(o.destination);let e=o.createBuffer(1,1,o.sampleRate),n=o.createBufferSource();n.buffer=e,n.connect(o.destination),n.start(0),o.resume().catch(()=>{})}catch{o=null}}function p(t,e,n,r,a){if(!o||!m)return;let i=o.createOscillator();i.type="sine",i.frequency.setValueAtTime(e,t),i.frequency.exponentialRampToValueAtTime(Math.max(40,e*n),t+r);let s=o.createBiquadFilter();s.type="lowpass",s.Q.value=.9,s.frequency.setValueAtTime(Math.min(18e3,e*7),t),s.frequency.exponentialRampToValueAtTime(Math.max(80,e*1.5),t+r);let c=o.createGain();c.gain.setValueAtTime(1e-4,t),c.gain.exponentialRampToValueAtTime(a,t+.006),c.gain.exponentialRampToValueAtTime(1e-4,t+r),i.connect(s),s.connect(c),c.connect(m),i.start(t),i.stop(t+r+.02)}function T(t,e){if(!o||!m)return;let n=Math.floor(o.sampleRate*.03),r=o.createBuffer(1,n,o.sampleRate),a=r.getChannelData(0);for(let l=0;l<n;l++)a[l]=(Math.random()*2-1)*Math.pow(1-l/n,3);let i=o.createBufferSource();i.buffer=r;let s=o.createBiquadFilter();s.type="bandpass",s.frequency.value=2600,s.Q.value=5;let c=o.createGain();c.gain.value=e,i.connect(s),s.connect(c),c.connect(m),i.start(t)}function rt(){return A()?o?o.state:"unsupported":"off"}function q(t){!o||!m||(p(t,587.33,.985,.16,.38),p(t+.048,739.99,.985,.18,.42),p(t+.096,880,.985,.28,.46),p(t+.105,1174.66,.985,.22,.22),T(t+.096,.16))}function G(t){!o||!m||p(t,659.25,.97,.09,.26)}function ot(t,e=!1){if(!e&&!A()||(F(),!o||!m||o.state==="closed"))return;o.state==="suspended"&&o.resume().catch(()=>{});let n=o.currentTime+.01;switch(t){case"connect":q(n);break;case"heard":G(n);break;case"reply":p(n,440,.94,.13,.5),p(n+.09,660,.94,.16,.42);break;case"interrupt":p(n,520,.62,.17,.4);break;case"send":p(n,300,1.16,.1,.22);break;case"pin":T(n,.35),p(n+.02,880,.97,.07,.22);break}}import{useEffect as R}from"react";var u=new Map;function b(t,e="hsk-font"){let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return`${e}-${n.toString(36)}`}function z(t){let e=t.split("?")[0].split("#")[0].split(".").pop()?.toLowerCase();return e==="woff2"?"woff2":e==="woff"?"woff":e==="otf"?"opentype":e==="ttf"?"truetype":""}function x(t){let e=t.trim();return!e||/["'()\\\s]/.test(e)||/^(javascript|vbscript):/i.test(e)?null:e}var P=t=>/["\\{}<>;\n\r]/.test(t)?"":t.trim(),_=/^[Uu]\+[0-9A-Fa-f?]{1,6}(-[0-9A-Fa-f]{1,6})?$/,E=t=>{let e=t.split(",").map(n=>n.trim()).filter(Boolean);return e.length===0||!e.every(n=>_.test(n))?"":e.join(", ")},j=t=>/^\d{3}( \d{3})?$/.test(t)?t:"400";function H(t,e){R(()=>{if(!t||!e||typeof document>"u")return;let n=b(t);if(u.set(t,(u.get(t)??0)+1),!document.getElementById(n)){let r=document.createElement("style");r.id=n,r.textContent=e,document.head.appendChild(r)}return()=>{let r=(u.get(t)??1)-1;if(r>0){u.set(t,r);return}u.delete(t),document.getElementById(n)?.remove()}},[t,e])}function I(t){let e=P(t.family);return e?t.faces.map(n=>{let r=x(n.url);return r?`@font-face{font-family:"${e}";font-style:normal;font-weight:${j(n.weight)};font-display:swap;src:url(${r}) format("woff2");`+(E(n.unicodeRange)?`unicode-range:${E(n.unicodeRange)};`:"")+"}":""}).join(""):""}function at(t){let e=t?.faces??[],n=t&&e.length?I(t):"";H(n?`script|${t.family}|${e.map(r=>r.url).join("|")}`:"",n)}async function ct(t,e=0){if(typeof document>"u"||!("fonts"in document))return;let n=I(t);if(!n)return;let r=`script|${t.family}|${t.faces.map(i=>i.url).join("|")}`;u.set(r,(u.get(r)??0)+1);let a=b(r);if(!document.getElementById(a)){let i=document.createElement("style");i.id=a,i.textContent=n,document.head.appendChild(i)}if(e>0){let i=document.fonts,s=t.family.replace(/^['"]|['"]$/g,""),c=Array.from(i||[]).filter(f=>f.family.replace(/^['"]|['"]$/g,"")===s),l=c.length>0?c.map(f=>f.load().catch(()=>{})):t.faces.map(f=>{let y=x(f.url);if(!y)return Promise.resolve();try{return new window.FontFace(s,`url(${y})`,{weight:j(f.weight),style:"normal"}).load().then(d=>{document.fonts?.add(d)}).catch(()=>{})}catch{return Promise.resolve()}});await Promise.race([Promise.all(l),new Promise(f=>setTimeout(f,e))])}}var B=["400","500","600","700"];function M(t,e){let n=Array.from(new Set(Array.from(Object.values(e).join("")))).join(""),r=t.map(a=>`"${a.replace(/^['"]|['"]$/g,"")}"`).join(", ");return{text:n,stack:r}}function ut(t,e){let n=typeof document<"u"?document.fonts:null,{text:r,stack:a}=M(t,e);if(!n?.check||!r||!a)return!0;try{return B.every(i=>n.check(`${i} 16px ${a}`,r))}catch{return!0}}async function lt(t,e,n){let r=typeof document<"u"?document.fonts:null;if(!r?.load)return;let{text:a,stack:i}=M(t,e);!a||!i||await Promise.race([Promise.all(B.map(s=>r.load(`${s} 16px ${i}`,a).catch(()=>{}))),new Promise(s=>setTimeout(s,n))])}function ft(t){let e=typeof t=="object"&&t?t:void 0,n=P(e?.fontFamily?.split(",")[0].trim().replace(/^['"]|['"]$/g,"")??""),r=typeof e?.fontUrl=="string"?{normal:e.fontUrl}:e?.fontUrl??{},a=r.normal??"",i=r.bold??"",s=r.variable??"";R(()=>{if(!n||!a&&!i&&!s)return;let c=s?[["100 900",s]]:[["400",a],["700",i]],l=[];for(let[d,v]of c){if(!v)continue;let h=x(v);if(!h)continue;let w=z(h);l.push(`@font-face{font-family:"${n}";font-style:normal;font-weight:${d};font-display:swap;src:url(${h})${w?` format("${w}")`:""};}`)}if(l.length===0)return;let f=l.join(""),y=`${n}|${a}|${i}|${s}`,g=b(y,"hsk-host-font");if(u.set(y,(u.get(y)??0)+1),!document.getElementById(g)){let d=document.createElement("style");d.id=g,d.textContent=f,document.head.appendChild(d)}return()=>{let d=(u.get(y)??1)-1;if(d>0){u.set(y,d);return}u.delete(y),document.getElementById(g)?.remove()}},[n,a,i,s])}export{O as a,L as b,Y as c,X as d,tt as e,A as f,nt as g,F as h,rt as i,ot as j,at as k,ct as l,ut as m,lt as n,ft as o};
3
+ //# sourceMappingURL=chunk-YFPHOGZP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cardDetails.ts","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../src/utils/cn.ts","../src/utils/theme.ts","../src/utils/themePreference.ts","../src/utils/chime.ts","../src/utils/hostFont.ts"],"sourcesContent":["import { resolveDisplayFields, type CardDetail } from '@akropolys/sdk';\n\n// A card's details are the site's chosen cardFields; voice sources arrive with raw fields and are resolved here.\nexport function detailsOf(src: { details?: CardDetail[]; fields?: Record<string, any> }, cardFields: string[]): CardDetail[] {\n return src.details ?? (src.fields ? resolveDisplayFields(src.fields, cardFields).details : []);\n}\n\nexport function detailsText(details: CardDetail[]): string {\n return details.length ? ` (${details.map(d => `${d.label}: ${d.value}`).join(', ')})` : '';\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from \"clsx\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return clsx(inputs);\r\n}\r\n","import type { CSSProperties } from 'react';\r\nimport type { AkropolysTheme } from '@akropolys/sdk';\r\n\r\nexport type ThemeProp = string | AkropolysTheme | undefined;\r\n\r\nexport function resolveTheme(theme: ThemeProp): {\r\n themeAttr: string | undefined;\r\n vars: CSSProperties | undefined;\r\n} {\r\n if (typeof theme === 'string') {\r\n return { themeAttr: theme as any, vars: undefined };\r\n }\r\n if (!theme) {\r\n return { themeAttr: undefined, vars: undefined };\r\n }\r\n const vars: Record<string, string> = {};\r\n if (theme.primaryColor) vars['--hsk-primary'] = theme.primaryColor;\r\n if (theme.backgroundColor) {\r\n vars['--hsk-bg'] = theme.backgroundColor;\r\n vars['--hsk-chat-bg'] = theme.backgroundColor;\r\n }\r\n if (theme.textColor) {\r\n vars['--hsk-text'] = theme.textColor;\r\n vars['--hsk-chat-text'] = theme.textColor;\r\n }\r\n if (theme.fontFamily) vars['--hsk-font'] = theme.fontFamily;\r\n if (theme.fontSize) vars['--hsk-font-size'] = theme.fontSize;\r\n if (theme.mobileFontSize) vars['--hsk-mobile-font-size'] = theme.mobileFontSize;\r\n if (theme.borderRadius) vars['--hsk-border-radius'] = theme.borderRadius;\r\n return { themeAttr: undefined, vars: vars as CSSProperties };\r\n}\r\n","export const DEFAULT_THEME = 'light';\r\nconst THEME_IDS = ['light', 'dark', 'mahogany', 'blush', 'coffee', 'midnight'];\r\n\r\nexport function isThemeId(value: unknown): value is string {\r\n return typeof value === 'string' && THEME_IDS.includes(value);\r\n}\r\n\r\nexport function initialTheme(theme: unknown): string {\r\n if (isThemeId(theme)) return theme;\r\n try {\r\n const saved = typeof window !== 'undefined' ? localStorage.getItem('akropolys_theme') : null;\r\n if (isThemeId(saved)) return saved;\r\n } catch { /* Storage can be unavailable in embedded browsers. */ }\r\n return DEFAULT_THEME;\r\n}\r\n","const SOUND_KEY = 'hsk-sounds';\n\nlet ctx: AudioContext | null = null;\nlet master: GainNode | null = null;\n\nexport function soundsEnabled(): boolean {\n try {\n return localStorage.getItem(SOUND_KEY) !== 'off';\n } catch {\n return true;\n }\n}\n\nexport function setSoundsEnabled(on: boolean): void {\n try {\n localStorage.setItem(SOUND_KEY, on ? 'on' : 'off');\n } catch { }\n if (on) primeChimes();\n}\n\nexport function primeChimes(): void {\n if (typeof window === 'undefined') return;\n try {\n const session = (navigator as any).audioSession;\n if (session && session.type !== 'playback') session.type = 'playback';\n } catch { }\n if (ctx) {\n if (ctx.state === 'suspended') ctx.resume().catch(() => {});\n return;\n }\n const AC: typeof AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;\n if (!AC) return;\n try {\n ctx = new AC({ latencyHint: 'interactive' });\n master = ctx.createGain();\n master.gain.value = 0.28;\n master.connect(ctx.destination);\n const b = ctx.createBuffer(1, 1, ctx.sampleRate);\n const s = ctx.createBufferSource();\n s.buffer = b;\n s.connect(ctx.destination);\n s.start(0);\n ctx.resume().catch(() => {});\n } catch {\n ctx = null;\n }\n}\n\nfunction droplet(at: number, f0: number, glide: number, dur: number, gain: number): void {\n if (!ctx || !master) return;\n const osc = ctx.createOscillator();\n osc.type = 'sine';\n osc.frequency.setValueAtTime(f0, at);\n osc.frequency.exponentialRampToValueAtTime(Math.max(40, f0 * glide), at + dur);\n\n const lp = ctx.createBiquadFilter();\n lp.type = 'lowpass';\n lp.Q.value = 0.9;\n lp.frequency.setValueAtTime(Math.min(18000, f0 * 7), at);\n lp.frequency.exponentialRampToValueAtTime(Math.max(80, f0 * 1.5), at + dur);\n\n const g = ctx.createGain();\n g.gain.setValueAtTime(0.0001, at);\n g.gain.exponentialRampToValueAtTime(gain, at + 0.006);\n g.gain.exponentialRampToValueAtTime(0.0001, at + dur);\n\n osc.connect(lp);\n lp.connect(g);\n g.connect(master);\n osc.start(at);\n osc.stop(at + dur + 0.02);\n}\n\n// Not a tone: a filtered noise burst, so it reads as contact rather than pitch.\nfunction tick(at: number, gain: number): void {\n if (!ctx || !master) return;\n const n = Math.floor(ctx.sampleRate * 0.03);\n const buf = ctx.createBuffer(1, n, ctx.sampleRate);\n const d = buf.getChannelData(0);\n for (let i = 0; i < n; i++) d[i] = (Math.random() * 2 - 1) * Math.pow(1 - i / n, 3);\n\n const src = ctx.createBufferSource();\n src.buffer = buf;\n const bp = ctx.createBiquadFilter();\n bp.type = 'bandpass';\n bp.frequency.value = 2600;\n bp.Q.value = 5;\n const g = ctx.createGain();\n g.gain.value = gain;\n\n src.connect(bp);\n bp.connect(g);\n g.connect(master);\n src.start(at);\n}\n\n/** 'off' | 'unsupported' | AudioContext state - so a silent phone can say why. */\nexport function chimeState(): string {\n if (!soundsEnabled()) return 'off';\n if (!ctx) return 'unsupported';\n return ctx.state;\n}\n\nexport type ChimeEvent = 'reply' | 'interrupt' | 'pin' | 'send' | 'connect' | 'heard';\n\nfunction connectChime(at: number): void {\n if (!ctx || !master) return;\n\n // D5 (587.33 Hz) warm initial chime\n droplet(at, 587.33, 0.985, 0.16, 0.38);\n\n // F#5 (739.99 Hz) ascending major third\n droplet(at + 0.048, 739.99, 0.985, 0.18, 0.42);\n\n // A5 (880.00 Hz) fifth + D6 (1174.66 Hz) high glass shimmer with silky decay\n droplet(at + 0.096, 880.00, 0.985, 0.28, 0.46);\n droplet(at + 0.105, 1174.66, 0.985, 0.22, 0.22);\n\n // Subtle organic acoustic strike transient on the peak note\n tick(at + 0.096, 0.16);\n}\n\nfunction heardChime(at: number): void {\n if (!ctx || !master) return;\n droplet(at, 659.25, 0.97, 0.09, 0.26);\n}\n\n/** force plays even while muted - the toggle has to be able to demonstrate itself. */\nexport function chime(event: ChimeEvent, force = false): void {\n if (!force && !soundsEnabled()) return;\n primeChimes();\n if (!ctx || !master || ctx.state === 'closed') return;\n if (ctx.state === 'suspended') ctx.resume().catch(() => {});\n\n const t = ctx.currentTime + 0.01;\n switch (event) {\n case 'connect':\n connectChime(t);\n break;\n case 'heard':\n heardChime(t);\n break;\n case 'reply':\n droplet(t, 440, 0.94, 0.13, 0.5);\n droplet(t + 0.09, 660, 0.94, 0.16, 0.42);\n break;\n case 'interrupt':\n droplet(t, 520, 0.62, 0.17, 0.4);\n break;\n case 'send':\n droplet(t, 300, 1.16, 0.1, 0.22);\n break;\n case 'pin':\n tick(t, 0.35);\n droplet(t + 0.02, 880, 0.97, 0.07, 0.22);\n break;\n }\n}\n","import { useEffect } from 'react';\r\nimport type { AkropolysTheme, ScriptFont } from '@akropolys/sdk';\r\n\r\nconst MOUNTED = new Map<string, number>();\r\n\r\nfunction styleId(key: string, prefix = 'hsk-font'): string {\r\n let h = 5381;\r\n for (let i = 0; i < key.length; i++) h = ((h << 5) + h + key.charCodeAt(i)) >>> 0;\r\n return `${prefix}-${h.toString(36)}`;\r\n}\r\n\r\nfunction formatFor(url: string): string {\r\n const ext = url.split('?')[0].split('#')[0].split('.').pop()?.toLowerCase();\r\n if (ext === 'woff2') return 'woff2';\r\n if (ext === 'woff') return 'woff';\r\n if (ext === 'otf') return 'opentype';\r\n if (ext === 'ttf') return 'truetype';\r\n return '';\r\n}\r\n\r\nfunction safeUrl(url: string): string | null {\r\n const u = url.trim();\r\n if (!u) return null;\r\n if (/[\"'()\\\\\\s]/.test(u)) return null;\r\n if (/^(javascript|vbscript):/i.test(u)) return null;\r\n return u;\r\n}\r\n\r\nconst safeFamily = (f: string): string => (/[\"\\\\{}<>;\\n\\r]/.test(f) ? '' : f.trim());\r\n\r\nconst RANGE_SEGMENT =/^[Uu]\\+[0-9A-Fa-f?]{1,6}(-[0-9A-Fa-f]{1,6})?$/;\r\n\r\nconst safeRange = (r: string): string => {\r\n const parts = r.split(',').map(s => s.trim()).filter(Boolean);\r\n if (parts.length === 0 || !parts.every(p => RANGE_SEGMENT.test(p))) return '';\r\n return parts.join(', ');\r\n};\r\n\r\nconst safeWeight = (w: string): string => (/^\\d{3}( \\d{3})?$/.test(w) ? w : '400');\r\n\r\nfunction useMountedFaces(key: string, css: string): void {\r\n useEffect(() => {\r\n if (!key || !css || typeof document === 'undefined') return;\r\n const id = styleId(key);\r\n\r\n MOUNTED.set(key, (MOUNTED.get(key) ?? 0) + 1);\r\n if (!document.getElementById(id)) {\r\n const el = document.createElement('style');\r\n el.id = id;\r\n el.textContent = css;\r\n document.head.appendChild(el);\r\n }\r\n\r\n return () => {\r\n const left = (MOUNTED.get(key) ?? 1) - 1;\r\n if (left > 0) { MOUNTED.set(key, left); return; }\r\n MOUNTED.delete(key);\r\n document.getElementById(id)?.remove();\r\n };\r\n }, [key, css]);\r\n}\r\n\r\nfunction scriptFontCSS(font: ScriptFont): string {\r\n const family = safeFamily(font.family);\r\n if (!family) return '';\r\n return font.faces\r\n .map(f => {\r\n const url = safeUrl(f.url);\r\n if (!url) return '';\r\n return `@font-face{font-family:\"${family}\";font-style:normal;` +\r\n `font-weight:${safeWeight(f.weight)};font-display:swap;src:url(${url}) format(\"woff2\");` +\r\n (safeRange(f.unicodeRange) ? `unicode-range:${safeRange(f.unicodeRange)};` : '') + '}';\r\n })\r\n .join('');\r\n}\r\n\r\nexport function useScriptFontFace(font: ScriptFont | null | undefined): void {\r\n const faces = font?.faces ?? [];\r\n const css = font && faces.length ? scriptFontCSS(font) : '';\r\n useMountedFaces(css ? `script|${font!.family}|${faces.map(f => f.url).join('|')}` : '', css);\r\n}\r\n\r\nexport async function preloadScriptFont(font: ScriptFont, timeoutMs = 0): Promise<void> {\r\n if (typeof document === 'undefined' || !('fonts' in document)) return;\r\n const css = scriptFontCSS(font);\r\n if (!css) return;\r\n\r\n const key = `script|${font.family}|${font.faces.map(f => f.url).join('|')}`;\r\n MOUNTED.set(key, (MOUNTED.get(key) ?? 0) + 1);\r\n const id = styleId(key);\r\n if (!document.getElementById(id)) {\r\n const el = document.createElement('style');\r\n el.id = id;\r\n el.textContent = css;\r\n document.head.appendChild(el);\r\n }\r\n\r\n if (timeoutMs > 0) {\r\n const fonts = (document as any).fonts;\r\n const cleanFamily = font.family.replace(/^['\"]|['\"]$/g, '');\r\n const matched = Array.from(fonts || []).filter(\r\n (f: any) => f.family.replace(/^['\"]|['\"]$/g, '') === cleanFamily\r\n ) as any[];\r\n\r\n const loads = matched.length > 0\r\n ? matched.map((f: any) => f.load().catch(() => {}))\r\n : font.faces.map(f => {\r\n const url = safeUrl(f.url);\r\n if (!url) return Promise.resolve();\r\n try {\r\n const face = new (window as any).FontFace(cleanFamily, `url(${url})`, {\r\n weight: safeWeight(f.weight),\r\n style: 'normal',\r\n });\r\n return face.load().then((loaded: any) => {\r\n (document as any).fonts?.add(loaded);\r\n }).catch(() => {});\r\n } catch {\r\n return Promise.resolve();\r\n }\r\n });\r\n\r\n await Promise.race([\r\n Promise.all(loads),\r\n new Promise(resolve => setTimeout(resolve, timeoutMs)),\r\n ]);\r\n }\r\n}\r\n\r\nconst UI_WEIGHTS = ['400', '500', '600', '700'];\r\n\r\nfunction fontQuery(families: string[], strings: Record<string, string>) {\r\n const text = Array.from(new Set(Array.from(Object.values(strings).join('')))).join('');\r\n const stack = families.map(f => `\"${f.replace(/^['\"]|['\"]$/g, '')}\"`).join(', ');\r\n return { text, stack };\r\n}\r\n\r\n// True when every face these strings need is already loaded at every weight the widget draws.\r\nexport function fontsLoadedFor(families: string[], strings: Record<string, string>): boolean {\r\n const fonts = typeof document !== 'undefined' ? (document as any).fonts : null;\r\n const { text, stack } = fontQuery(families, strings);\r\n if (!fonts?.check || !text || !stack) return true;\r\n try {\r\n return UI_WEIGHTS.every(w => fonts.check(`${w} 16px ${stack}`, text));\r\n } catch {\r\n return true;\r\n }\r\n}\r\n\r\n// Loads, at every weight the widget draws, each face these strings need; unicode-range faces load only their slices.\r\nexport async function loadFontsFor(families: string[], strings: Record<string, string>, timeoutMs: number): Promise<void> {\r\n const fonts = typeof document !== 'undefined' ? (document as any).fonts : null;\r\n if (!fonts?.load) return;\r\n const { text, stack } = fontQuery(families, strings);\r\n if (!text || !stack) return;\r\n await Promise.race([\r\n Promise.all(UI_WEIGHTS.map(w => fonts.load(`${w} 16px ${stack}`, text).catch(() => {}))),\r\n new Promise(resolve => setTimeout(resolve, timeoutMs)),\r\n ]);\r\n}\r\n\r\nexport function useHostFontFace(theme: 'light' | 'dark' | AkropolysTheme | undefined): void {\r\n const t = typeof theme === 'object' && theme ? theme : undefined;\r\n const family = safeFamily(t?.fontFamily?.split(',')[0].trim().replace(/^['\"]|['\"]$/g, '') ?? '');\r\n const urls = typeof t?.fontUrl === 'string' ? { normal: t.fontUrl } : (t?.fontUrl ?? {});\r\n const normal = urls.normal ?? '';\r\n const bold = urls.bold ?? '';\r\n const variable = urls.variable ?? '';\r\n\r\n useEffect(() => {\r\n if (!family || (!normal && !bold && !variable)) return;\r\n\r\n const weights: ReadonlyArray<readonly [string, string]> = variable\r\n ? [['100 900', variable]]\r\n : [['400', normal], ['700', bold]];\r\n\r\n const faces: string[] = [];\r\n for (const [weight, raw] of weights) {\r\n if (!raw) continue;\r\n const url = safeUrl(raw);\r\n if (!url) continue;\r\n const fmt = formatFor(url);\r\n faces.push(\r\n `@font-face{font-family:\"${family}\";font-style:normal;font-weight:${weight};` +\r\n `font-display:swap;src:url(${url})${fmt ? ` format(\"${fmt}\")` : ''};}`\r\n );\r\n }\r\n if (faces.length === 0) return;\r\n\r\n const css = faces.join('');\r\n const key = `${family}|${normal}|${bold}|${variable}`;\r\n const id = styleId(key, 'hsk-host-font');\r\n\r\n MOUNTED.set(key, (MOUNTED.get(key) ?? 0) + 1);\r\n if (!document.getElementById(id)) {\r\n const el = document.createElement('style');\r\n el.id = id;\r\n el.textContent = css;\r\n document.head.appendChild(el);\r\n }\r\n\r\n return () => {\r\n const left = (MOUNTED.get(key) ?? 1) - 1;\r\n if (left > 0) { MOUNTED.set(key, left); return; }\r\n MOUNTED.delete(key);\r\n document.getElementById(id)?.remove();\r\n };\r\n }, [family, normal, bold, variable]);\r\n}\r\n"],"mappings":"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","names":["resolveDisplayFields","detailsOf","src","cardFields","detailsText","details","d","r","e","t","f","n","o","clsx","cn","inputs","clsx","resolveTheme","theme","vars","DEFAULT_THEME","THEME_IDS","isThemeId","value","initialTheme","theme","saved","SOUND_KEY","ctx","master","soundsEnabled","setSoundsEnabled","on","primeChimes","session","AC","b","s","droplet","at","f0","glide","dur","gain","osc","lp","g","tick","buf","d","i","src","bp","chimeState","connectChime","heardChime","chime","event","force","t","useEffect","MOUNTED","styleId","key","prefix","h","i","formatFor","url","ext","safeUrl","u","safeFamily","f","RANGE_SEGMENT","safeRange","r","parts","s","p","safeWeight","w","useMountedFaces","css","id","el","left","scriptFontCSS","font","family","useScriptFontFace","faces","preloadScriptFont","timeoutMs","fonts","cleanFamily","matched","loads","loaded","resolve","UI_WEIGHTS","fontQuery","families","strings","text","stack","fontsLoadedFor","loadFontsFor","useHostFontFace","theme","t","urls","normal","bold","variable","weights","weight","raw","fmt"]}
@@ -0,0 +1,48 @@
1
+ var Mn=Object.create;var vt=Object.defineProperty;var $n=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,Kn=Object.prototype.hasOwnProperty;var fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Vn=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Fn(e))!Kn.call(t,s)&&s!==n&&vt(t,s,{get:()=>e[s],enumerable:!(r=$n(e,s))||r.enumerable});return t};var K=(t,e,n)=>(n=t!=null?Mn(Dn(t)):{},Vn(e||!t||!t.__esModule?vt(n,"default",{value:t,enumerable:!0}):n,t));var Tt=fe(w=>{"use strict";var Xe=Symbol.for("react.transitional.element"),Hn=Symbol.for("react.portal"),jn=Symbol.for("react.fragment"),qn=Symbol.for("react.strict_mode"),Bn=Symbol.for("react.profiler"),zn=Symbol.for("react.consumer"),Yn=Symbol.for("react.context"),Xn=Symbol.for("react.forward_ref"),Qn=Symbol.for("react.suspense"),Gn=Symbol.for("react.memo"),_t=Symbol.for("react.lazy"),Jn=Symbol.for("react.activity"),kt=Symbol.iterator;function Wn(t){return t===null||typeof t!="object"?null:(t=kt&&t[kt]||t["@@iterator"],typeof t=="function"?t:null)}var bt={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ct=Object.assign,At={};function ge(t,e,n){this.props=t,this.context=e,this.refs=At,this.updater=n||bt}ge.prototype.isReactComponent={};ge.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};ge.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function Et(){}Et.prototype=ge.prototype;function Qe(t,e,n){this.props=t,this.context=e,this.refs=At,this.updater=n||bt}var Ge=Qe.prototype=new Et;Ge.constructor=Qe;Ct(Ge,ge.prototype);Ge.isPureReactComponent=!0;var St=Array.isArray;function Ye(){}var U={H:null,A:null,T:null,S:null},Rt=Object.prototype.hasOwnProperty;function Je(t,e,n){var r=n.ref;return{$$typeof:Xe,type:t,key:e,ref:r!==void 0?r:null,props:n}}function Zn(t,e){return Je(t.type,e,t.props)}function We(t){return typeof t=="object"&&t!==null&&t.$$typeof===Xe}function er(t){var e={"=":"=0",":":"=2"};return"$"+t.replace(/[=:]/g,function(n){return e[n]})}var wt=/\/+/g;function ze(t,e){return typeof t=="object"&&t!==null&&t.key!=null?er(""+t.key):e.toString(36)}function tr(t){switch(t.status){case"fulfilled":return t.value;case"rejected":throw t.reason;default:switch(typeof t.status=="string"?t.then(Ye,Ye):(t.status="pending",t.then(function(e){t.status==="pending"&&(t.status="fulfilled",t.value=e)},function(e){t.status==="pending"&&(t.status="rejected",t.reason=e)})),t.status){case"fulfilled":return t.value;case"rejected":throw t.reason}}throw t}function de(t,e,n,r,s){var o=typeof t;(o==="undefined"||o==="boolean")&&(t=null);var i=!1;if(t===null)i=!0;else switch(o){case"bigint":case"string":case"number":i=!0;break;case"object":switch(t.$$typeof){case Xe:case Hn:i=!0;break;case _t:return i=t._init,de(i(t._payload),e,n,r,s)}}if(i)return s=s(t),i=r===""?"."+ze(t,0):r,St(s)?(n="",i!=null&&(n=i.replace(wt,"$&/")+"/"),de(s,e,n,"",function(c){return c})):s!=null&&(We(s)&&(s=Zn(s,n+(s.key==null||t&&t.key===s.key?"":(""+s.key).replace(wt,"$&/")+"/")+i)),e.push(s)),1;i=0;var a=r===""?".":r+":";if(St(t))for(var u=0;u<t.length;u++)r=t[u],o=a+ze(r,u),i+=de(r,e,n,o,s);else if(u=Wn(t),typeof u=="function")for(t=u.call(t),u=0;!(r=t.next()).done;)r=r.value,o=a+ze(r,u++),i+=de(r,e,n,o,s);else if(o==="object"){if(typeof t.then=="function")return de(tr(t),e,n,r,s);throw e=String(t),Error("Objects are not valid as a React child (found: "+(e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)+"). If you meant to render a collection of children, use an array instead.")}return i}function Oe(t,e,n){if(t==null)return t;var r=[],s=0;return de(t,r,"","",function(o){return e.call(n,o,s++)}),r}function nr(t){if(t._status===-1){var e=t._result;e=e(),e.then(function(n){(t._status===0||t._status===-1)&&(t._status=1,t._result=n)},function(n){(t._status===0||t._status===-1)&&(t._status=2,t._result=n)}),t._status===-1&&(t._status=0,t._result=e)}if(t._status===1)return t._result.default;throw t._result}var It=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var e=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(e))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},rr={map:Oe,forEach:function(t,e,n){Oe(t,function(){e.apply(this,arguments)},n)},count:function(t){var e=0;return Oe(t,function(){e++}),e},toArray:function(t){return Oe(t,function(e){return e})||[]},only:function(t){if(!We(t))throw Error("React.Children.only expected to receive a single React element child.");return t}};w.Activity=Jn;w.Children=rr;w.Component=ge;w.Fragment=jn;w.Profiler=Bn;w.PureComponent=Qe;w.StrictMode=qn;w.Suspense=Qn;w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=U;w.__COMPILER_RUNTIME={__proto__:null,c:function(t){return U.H.useMemoCache(t)}};w.cache=function(t){return function(){return t.apply(null,arguments)}};w.cacheSignal=function(){return null};w.cloneElement=function(t,e,n){if(t==null)throw Error("The argument must be a React element, but you passed "+t+".");var r=Ct({},t.props),s=t.key;if(e!=null)for(o in e.key!==void 0&&(s=""+e.key),e)!Rt.call(e,o)||o==="key"||o==="__self"||o==="__source"||o==="ref"&&e.ref===void 0||(r[o]=e[o]);var o=arguments.length-2;if(o===1)r.children=n;else if(1<o){for(var i=Array(o),a=0;a<o;a++)i[a]=arguments[a+2];r.children=i}return Je(t.type,s,r)};w.createContext=function(t){return t={$$typeof:Yn,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider=t,t.Consumer={$$typeof:zn,_context:t},t};w.createElement=function(t,e,n){var r,s={},o=null;if(e!=null)for(r in e.key!==void 0&&(o=""+e.key),e)Rt.call(e,r)&&r!=="key"&&r!=="__self"&&r!=="__source"&&(s[r]=e[r]);var i=arguments.length-2;if(i===1)s.children=n;else if(1<i){for(var a=Array(i),u=0;u<i;u++)a[u]=arguments[u+2];s.children=a}if(t&&t.defaultProps)for(r in i=t.defaultProps,i)s[r]===void 0&&(s[r]=i[r]);return Je(t,o,s)};w.createRef=function(){return{current:null}};w.forwardRef=function(t){return{$$typeof:Xn,render:t}};w.isValidElement=We;w.lazy=function(t){return{$$typeof:_t,_payload:{_status:-1,_result:t},_init:nr}};w.memo=function(t,e){return{$$typeof:Gn,type:t,compare:e===void 0?null:e}};w.startTransition=function(t){var e=U.T,n={};U.T=n;try{var r=t(),s=U.S;s!==null&&s(n,r),typeof r=="object"&&r!==null&&typeof r.then=="function"&&r.then(Ye,It)}catch(o){It(o)}finally{e!==null&&n.types!==null&&(e.types=n.types),U.T=e}};w.unstable_useCacheRefresh=function(){return U.H.useCacheRefresh()};w.use=function(t){return U.H.use(t)};w.useActionState=function(t,e,n){return U.H.useActionState(t,e,n)};w.useCallback=function(t,e){return U.H.useCallback(t,e)};w.useContext=function(t){return U.H.useContext(t)};w.useDebugValue=function(){};w.useDeferredValue=function(t,e){return U.H.useDeferredValue(t,e)};w.useEffect=function(t,e){return U.H.useEffect(t,e)};w.useEffectEvent=function(t){return U.H.useEffectEvent(t)};w.useId=function(){return U.H.useId()};w.useImperativeHandle=function(t,e,n){return U.H.useImperativeHandle(t,e,n)};w.useInsertionEffect=function(t,e){return U.H.useInsertionEffect(t,e)};w.useLayoutEffect=function(t,e){return U.H.useLayoutEffect(t,e)};w.useMemo=function(t,e){return U.H.useMemo(t,e)};w.useOptimistic=function(t,e){return U.H.useOptimistic(t,e)};w.useReducer=function(t,e,n){return U.H.useReducer(t,e,n)};w.useRef=function(t){return U.H.useRef(t)};w.useState=function(t){return U.H.useState(t)};w.useSyncExternalStore=function(t,e,n){return U.H.useSyncExternalStore(t,e,n)};w.useTransition=function(){return U.H.useTransition()};w.version="19.2.7"});var V=fe((Ur,xt)=>{"use strict";xt.exports=Tt()});var Lt=fe(j=>{"use strict";var sr=V();function Pt(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)e+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function ie(){}var H={d:{f:ie,r:function(){throw Error(Pt(522))},D:ie,C:ie,L:ie,m:ie,X:ie,S:ie,M:ie},p:0,findDOMNode:null},ir=Symbol.for("react.portal");function or(t,e,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:ir,key:r==null?null:""+r,children:t,containerInfo:e,implementation:n}}var Ie=sr.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Ue(t,e){if(t==="font")return"";if(typeof e=="string")return e==="use-credentials"?e:""}j.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=H;j.createPortal=function(t,e){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)throw Error(Pt(299));return or(t,e,null,n)};j.flushSync=function(t){var e=Ie.T,n=H.p;try{if(Ie.T=null,H.p=2,t)return t()}finally{Ie.T=e,H.p=n,H.d.f()}};j.preconnect=function(t,e){typeof t=="string"&&(e?(e=e.crossOrigin,e=typeof e=="string"?e==="use-credentials"?e:"":void 0):e=null,H.d.C(t,e))};j.prefetchDNS=function(t){typeof t=="string"&&H.d.D(t)};j.preinit=function(t,e){if(typeof t=="string"&&e&&typeof e.as=="string"){var n=e.as,r=Ue(n,e.crossOrigin),s=typeof e.integrity=="string"?e.integrity:void 0,o=typeof e.fetchPriority=="string"?e.fetchPriority:void 0;n==="style"?H.d.S(t,typeof e.precedence=="string"?e.precedence:void 0,{crossOrigin:r,integrity:s,fetchPriority:o}):n==="script"&&H.d.X(t,{crossOrigin:r,integrity:s,fetchPriority:o,nonce:typeof e.nonce=="string"?e.nonce:void 0})}};j.preinitModule=function(t,e){if(typeof t=="string")if(typeof e=="object"&&e!==null){if(e.as==null||e.as==="script"){var n=Ue(e.as,e.crossOrigin);H.d.M(t,{crossOrigin:n,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0})}}else e==null&&H.d.M(t)};j.preload=function(t,e){if(typeof t=="string"&&typeof e=="object"&&e!==null&&typeof e.as=="string"){var n=e.as,r=Ue(n,e.crossOrigin);H.d.L(t,n,{crossOrigin:r,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0,type:typeof e.type=="string"?e.type:void 0,fetchPriority:typeof e.fetchPriority=="string"?e.fetchPriority:void 0,referrerPolicy:typeof e.referrerPolicy=="string"?e.referrerPolicy:void 0,imageSrcSet:typeof e.imageSrcSet=="string"?e.imageSrcSet:void 0,imageSizes:typeof e.imageSizes=="string"?e.imageSizes:void 0,media:typeof e.media=="string"?e.media:void 0})}};j.preloadModule=function(t,e){if(typeof t=="string")if(e){var n=Ue(e.as,e.crossOrigin);H.d.m(t,{as:typeof e.as=="string"&&e.as!=="script"?e.as:void 0,crossOrigin:n,integrity:typeof e.integrity=="string"?e.integrity:void 0})}else H.d.m(t)};j.requestFormReset=function(t){H.d.r(t)};j.unstable_batchedUpdates=function(t,e){return t(e)};j.useFormState=function(t,e,n){return Ie.H.useFormState(t,e,n)};j.useFormStatus=function(){return Ie.H.useHostTransitionStatus()};j.version="19.2.7"});var ar=fe((Mr,Ut)=>{"use strict";function Ot(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ot)}catch(t){console.error(t)}}Ot(),Ut.exports=Lt()});var zt=fe(Me=>{"use strict";var lr=Symbol.for("react.transitional.element"),fr=Symbol.for("react.fragment");function Bt(t,e,n){var r=null;if(n!==void 0&&(r=""+n),e.key!==void 0&&(r=""+e.key),"key"in e){n={};for(var s in e)s!=="key"&&(n[s]=e[s])}else n=e;return e=n.ref,{$$typeof:lr,type:t,key:r,ref:e!==void 0?e:null,props:n}}Me.Fragment=fr;Me.jsx=Bt;Me.jsxs=Bt});var tt=fe((Zr,Yt)=>{"use strict";Yt.exports=zt()});function pe(t,e,n){let r;try{r=n?new URL(n,typeof document<"u"?document.baseURI:void 0).href:typeof document<"u"?document.baseURI:void 0}catch{r=void 0}let s=[],o=new Set,i=a=>{let u=typeof a=="string"?{url:a}:a;if(!u||typeof u.url!="string"||!u.url.trim())return;let c;try{let h=new URL(u.url.trim(),r);if(!["http:","https:"].includes(h.protocol))return;c=h.href}catch{return}o.has(c)||(o.add(c),s.push({url:c,...typeof u.alt=="string"?{alt:u.alt}:{},...typeof u.caption=="string"?{caption:u.caption}:{}}))};if(Array.isArray(t)&&t.forEach(i),e){let a=s.length;i(e),s.length>a&&s.unshift(s.pop())}return s}var Ze=t=>`akropolys_conversation_${t}`;function Nt(t){if(typeof window>"u")return null;try{let e=JSON.parse(localStorage.getItem(Ze(t))||"null");return e&&typeof e.id=="string"&&typeof e.token=="string"?{id:e.id,token:e.token,cursor:Number(e.cursor)||0}:null}catch{return null}}function _e(t,e){if(!(typeof window>"u"))try{e?localStorage.setItem(Ze(t),JSON.stringify(e)):localStorage.removeItem(Ze(t))}catch{}}async function Mt(t,e,n,r){let s=await fetch(t,{headers:e,signal:r});if(!s.ok||!s.body)return s.status;let o=s.body.getReader(),i=new TextDecoder,a="";for(;;){let{value:u,done:c}=await o.read();if(c)return s.status;a+=i.decode(u,{stream:!0});let h;for(;(h=a.indexOf(`
2
+
3
+ `))!==-1;){let _=a.slice(0,h);a=a.slice(h+2);let y=_.split(`
4
+ `).find(C=>C.startsWith("data: "));if(y)try{n(JSON.parse(y.slice(6)))}catch{}}}}var he=3,$t=[500,1e3,2e3];function D(t,e,n){let r="[Akropolys]";t==="error"?console.error(r,e,n??""):t==="warn"?console.warn(r,e,n??""):console.debug(r,e,n??"")}async function Ft(t){return new Promise(e=>setTimeout(e,t))}function Dt(t){let e=t.url||"",n={},r=new Set(["id","title","image","images","content","expiresAt"]),s={},o;for(let[i,a]of Object.entries(t))if(i!=="url"){if(r.has(i)){n[i]=a;continue}if(i==="fields"&&a&&typeof a=="object"&&!Array.isArray(a)){o=a;continue}s[i]=a}if(o&&Object.assign(s,o),!s.image&&Array.isArray(s.images)&&s.images.length>0){let i=s.images[0];s.image=typeof i=="string"?i:i?.url}return{url:e,...n,fields:s}}var be=class{constructor(e,n,r,s,o,i,a,u,c,h,_,y){this.apiUrl=e;this.siteId=n;this.apiToken=r;this.getShopperId=s;this.getSessionId=o;this.getDeviceId=i;this.getKikuPub=a;this.getShopperName=u;this.getCart=c;this.getShopperLanguage=h;this.getEntityLanguageMode=_;this.getKikuKey=y;this.cardFields=[]}get conversation(){return this.humanConversation===void 0&&(this.humanConversation=Nt(this.siteId)),this.humanConversation}openConversation(e,n){let r=this.conversation,s=r?.id===e,o={id:e,token:n||(s?r.token:""),cursor:s?r.cursor:0};this.humanConversation=o.token?o:null,_e(this.siteId,this.humanConversation)}seenConversationMessage(e){let n=this.conversation;!n||e<=n.cursor||(this.humanConversation={...n,cursor:e},_e(this.siteId,this.humanConversation))}async myRequests(){if(!this.getKikuKey?.())return[];let e=await fetch(`${this.apiUrl}/conversations?siteId=${encodeURIComponent(this.siteId)}`,{headers:this.buildHeaders()});return e.ok?(await e.json()).requests??[]:[]}async resumeRequest(e){let n=`${this.apiUrl}/conversations/${encodeURIComponent(e)}/resume?siteId=${encodeURIComponent(this.siteId)}`,r=await fetch(n,{method:"POST",headers:this.buildHeaders()});if(!r.ok)return null;let s=await r.json();return this.humanConversation={id:e,token:s.token,cursor:0},_e(this.siteId,this.humanConversation),Number(s.lastMessageId)||0}async unreadFromTeam(){return(await this.conversationState())?.unread??0}async conversationState(){let e=this.conversation;if(!e)return null;let n=`${this.apiUrl}/conversations/${encodeURIComponent(e.id)}?siteId=${encodeURIComponent(this.siteId)}&after=${e.cursor}`,r=await fetch(n,{headers:this.buildHeaders(!1,{"X-Akropolys-Conversation-Token":e.token})});if(!r.ok)return null;let s=await r.json(),o=s.messages??[];return{status:s.status,unread:o.filter(i=>i.role==="human").length}}leaveConversation(){let e=this.conversation;if(!e)return;this.forgetConversation();let n=`${this.apiUrl}/conversations/${encodeURIComponent(e.id)}/leave?siteId=${encodeURIComponent(this.siteId)}`;fetch(n,{method:"POST",headers:this.buildHeaders(!1,{"X-Akropolys-Conversation-Token":e.token}),keepalive:!0}).catch(()=>{})}forgetConversation(){this.humanConversation=null,_e(this.siteId,null)}conversationEvents(e,n,r){let s=this.conversation;if(!s)return Promise.resolve(404);let o=`${this.apiUrl}/conversations/${encodeURIComponent(s.id)}/events?siteId=${encodeURIComponent(this.siteId)}&after=${r??s.cursor}`;return Mt(o,this.buildHeaders(!1,{"X-Akropolys-Conversation-Token":s.token}),e,n)}widgetSettings(){return this.widget||(this.widget=(async()=>{try{let e=await fetch(`${this.apiUrl}/site-widget?siteId=${encodeURIComponent(this.siteId)}`);if(!e.ok)throw new Error(`site-widget ${e.status}`);let n=await e.json();return this.cardFields=Array.isArray(n?.cardFields)?n.cardFields.filter(r=>typeof r=="string"):[],{identityUrl:n?.identityUrl||"",cardFields:this.cardFields,detectedLanguage:typeof n?.detectedLanguage=="string"?n.detectedLanguage:void 0,font:n?.font?this.parseFont(n.font):null}}catch{return this.widget=void 0,{identityUrl:"",cardFields:this.cardFields}}})()),this.widget}async shopperAuth(){let{identityUrl:e}=await this.widgetSettings();if(e)try{let n=await fetch(e,{credentials:"include",headers:{Accept:"application/json"}});if(!n.ok)return;let r=await n.json(),s=r?.authorization||r?.token;return typeof s!="string"||!s?void 0:r?.authorization?s:`Bearer ${s}`}catch{return}}async entityPreview(e){try{let n=await fetch(`${this.apiUrl}/entity-preview`,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify({siteId:this.siteId,language:e})});return n.ok?await n.json():null}catch{return null}}async storeScene(e){try{return(await fetch(`${this.apiUrl}/scene`,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify({siteId:this.siteId,image:e})})).ok}catch{return!1}}parseFont(e){let n=e;if(!n||typeof n.family!="string"||!n.family.trim()||!Array.isArray(n.faces))return null;let r;try{r=new URL(this.apiUrl,typeof location<"u"?location.href:void 0)}catch{return null}let s=[];for(let o of n.faces){let i=o;if(!(typeof i?.url!="string"||!i.url.startsWith("/")))try{let a=new URL(this.apiUrl.replace(/\/+$/,"")+i.url);if(a.origin!==r.origin)continue;s.push({url:a.href,unicodeRange:typeof i.unicodeRange=="string"?i.unicodeRange:"",weight:typeof i.weight=="string"&&i.weight?i.weight:"400"})}catch{}}return s.length>0?{family:n.family,faces:s}:null}async baseFont(){try{let e=await fetch(`${this.apiUrl}/fonts/v1/base`,{method:"GET",headers:this.buildHeaders()});return e.ok?this.parseFont(await e.json()):null}catch{return null}}async uiStrings(e,n){try{let r=await fetch(`${this.apiUrl}/ui-strings`,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify({siteId:this.siteId,language:e,defaults:n})});if(!r.ok)return null;let s=await r.json();return s?.strings?{strings:s.strings,complete:s.complete!==!1,dir:s.dir==="rtl"?"rtl":"ltr",bcp47:typeof s.bcp47=="string"?s.bcp47:"",font:this.parseFont(s.font)}:null}catch{return null}}async getVideoStatus(e){try{let n=`${this.apiUrl}/visualize/video/${encodeURIComponent(e)}?siteId=${encodeURIComponent(this.siteId)}`,r=await fetch(n,{method:"GET",headers:this.buildHeaders()});return r.ok?await r.json():null}catch{return null}}buildHeaders(e,n){let r={"Content-Type":"application/json","X-Akropolys-Token":this.apiToken,"X-Akropolys-Site":this.siteId},s=this.getShopperId?.();s&&(r["X-Akropolys-Shopper-Id"]=s),this.userProof&&(r["X-Akropolys-Shopper-Proof"]=this.userProof);let o=this.getSessionId?.();o&&(r["X-Akropolys-Session-Id"]=o);let i=this.getDeviceId?.();i&&(r["X-Akropolys-Device-Id"]=i);let a=this.getKikuPub?.();a&&(r["X-Akropolys-Kiku-Pub"]=a);let u=this.getKikuKey?.();return u&&(r["X-Akropolys-Kiku-Key"]=u),n&&Object.assign(r,n),r}async post(e,n,r=0,s,o,i){let a=`${this.apiUrl}${e}`;try{let u=this.buildHeaders(!1,i),c=await fetch(a,{method:"POST",headers:u,body:JSON.stringify(n),signal:s,...o?{keepalive:!0}:{}});if(!c.ok){let h=await c.text(),_=h;try{let C=JSON.parse(h);C&&typeof C.error=="string"&&(_=C.error)}catch{}let y={status:c.status,message:_};if(c.status>=400&&c.status<500)throw D("error",`${e} failed [${c.status}]`,h),y;if(r<he-1)return D("warn",`${e} [${c.status}] retrying (${r+1}/${he})...`),await Ft($t[r]),this.post(e,n,r+1,s,o,i);throw D("error",`${e} failed after ${he} attempts`,y),y}return c.json()}catch(u){if(u?.name==="AbortError"||s?.aborted)throw u;if(u.status===void 0){if(r<he-1)return D("warn",`${e} network error, retrying (${r+1}/${he})...`),await Ft($t[r]),this.post(e,n,r+1,s,o,i);D("error",`${e} unreachable after ${he} attempts`)}throw u}}async get(e,n,r){let s=`${this.apiUrl}${e}`;try{let o=this.buildHeaders(!1,n),i=await fetch(s,{method:"GET",headers:o,signal:r});if(!i.ok){let a=await i.text(),u=a;try{let c=JSON.parse(a);c&&typeof c.error=="string"&&(u=c.error)}catch{}throw{status:i.status,message:u}}return i.json()}catch(o){throw o?.name==="AbortError"||r?.aborted,o}}async mintKikuKey(){let e=await this.post("/shopper/kiku-key",{});return{secret:e.secret??e.key??"",publicId:e.publicId}}async ingest(e){if(e&&e.envelope&&e.sig)return D("info","ingesting ASEP v1 signed envelope",e.envelope.kid||""),this.post("/ingest",{siteId:e.siteId||this.siteId,envelope:e.envelope,sig:e.sig});D("info","ingesting entity",e.name||e.id||e.url||"");let n=Dt(e);return this.post("/ingest",{siteId:this.siteId,entity:n})}async ingestBatch(e){if(e.length===0)return{success:!0,message:"empty batch",count:0};if(e.some(r=>r?.envelope&&r?.sig)){let r=0;for(let s of e){let o=await this.ingest(s);if(!o.success)return{...o,count:r};r++}return{success:!0,count:r,message:"batch ingested"}}D("info",`ingesting batch of ${e.length} entities`);let n=e.map(Dt);return this.post("/ingest/batch",{siteId:this.siteId,entities:n})}async ingestContentBatch(e){return D("info",`ingesting batch of ${e.length} pages`),this.post("/content/ingest",{siteId:this.siteId,contents:e})}async search(e,n=10){return D("info","search query",e),this.post("/search",{query:e,siteId:this.siteId,limit:n})}async searchVector(e,n=10,r,s){return this.post("/search/vector",{query:e,siteId:this.siteId,limit:n},0,r,s)}async searchAutocomplete(e,n=8,r){return this.post("/search/autocomplete",{query:e,siteId:this.siteId,limit:n},0,r)}async chat(e,n=[],r){return D("info","chat query",e),this.post("/chat",{query:e,siteId:this.siteId,history:n,currentContext:r})}async chatStream(e,n=[],r,s,o,i,a){D("info","chatStream query",e);let u=this.buildHeaders(!0),c={query:e,siteId:this.siteId,history:n,currentContext:s},h=this.getShopperName?.();h&&(c.shopperName=h);let _=this.getShopperLanguage?.();_&&(c.shopperLanguage=_);let y=this.getEntityLanguageMode?.();y&&(c.entityLanguageMode=y);let C=this.getCart?.();if(Array.isArray(C)&&C.length>0&&(c.cart=C.slice(0,50)),o&&o.length>0){c.attachments=o.map(({preview:F,...B})=>B),o.some(F=>F.annotated)&&(c.imageAnnotated=!0);let k=o.find(F=>F.annotated&&typeof F.preview=="string");k&&(c.imageGuide=k.preview),o.some(F=>F.instructed)&&(c.imageInstructed=!0);let M=o.flatMap(F=>Array.isArray(F.marks)?F.marks:[]);M.length>0&&(c.imageMarks=M)}let A=this.conversation;A&&(c.conversationId=A.id,c.conversationToken=A.token),i&&(c.forcedIntent=i),a&&a.length>0&&(c.captureTargets=a);let L=await this.shopperAuth();L&&(u["X-Akropolys-Shopper-Auth"]=L);let N=await fetch(`${this.apiUrl}/chat/stream`,{method:"POST",headers:u,body:JSON.stringify(c),signal:r});if(!N.ok||!N.body){let k=`Stream request failed: ${N.status}`;try{let M=JSON.parse(await N.text());M?.error&&(k=M.error)}catch{}throw new Error(k)}return N}async searchByImage(e,n,r=8){return D("info","searchByImage",n??"no hint"),this.post("/search/visual",{siteId:this.siteId,image:e,category_hint:n,limit:r})}async analyzeImage(e,n){return D("info","analyzeImage query",n??"(describe)"),this.post("/chat/vision",{siteId:this.siteId,image:e,query:n})}async synthesizeSpeech(e,n,r,s){try{let o=await fetch(`${this.apiUrl}/speech`,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify({siteId:this.siteId,text:e,voice:n,language:r}),signal:s});if(!o.ok){D("warn",`speech failed [${o.status}]`,await o.text().catch(()=>""));let a=o.headers.get("X-Akropolys-Voice-Refused");return a?{refused:a}:null}let i=o.headers.get("X-Akropolys-Voice-Seconds-Left");return{audio:await o.arrayBuffer(),mime:o.headers.get("Content-Type")||"audio/wav",secondsLeft:i===null?void 0:Number(i)}}catch{return null}}async visualize(e,n,r){return D("info","visualize"),this.post("/visualize",{siteId:this.siteId,sceneImage:e,productImage:n},0,r)}async allowance(e,n){let r=new URLSearchParams;(e||this.siteId)&&r.set("siteId",e||this.siteId);let s=await this.get(`/visualize/allowance?${r.toString()}`,{},n);return{images:s.images??-1,videos:s.videos??-1,voiceSeconds:s.voiceSeconds??-1,replies:s.replies??-1}}};function ur(t){let e=[],r=t.replace(/\r\n/g,`
5
+ `).replace(/\r/g,`
6
+ `).split(/\n\n+/);for(let s of r){if(!s.trim())continue;let o="",i="",a=!1;for(let u of s.split(`
7
+ `))if(u.startsWith("event:"))o=u.slice(6).trim();else if(u.startsWith("data:")){let c=u.slice(5);c.startsWith(" ")&&(c=c.slice(1)),i=a?i+`
8
+ `+c:c,a=!0}(a||o!=="")&&e.push({event:o,data:i})}return e}var Ce=class{constructor(e,n){this.listeners={};this.aborted=!1;this.responsePromise=e,this.abortController=n,this.startReading()}on(e,n){return this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(n),this}off(e,n){return this.listeners[e]?(this.listeners[e]=this.listeners[e].filter(r=>r!==n),this):this}destroy(){this.aborted=!0,this.abortController.abort()}emit(e,...n){let r=this.listeners[e];if(r)for(let s of r)try{s(...n)}catch(o){console.error(`[Akropolys] Error in KikuStream event listener for "${e}":`,o)}}async startReading(){let e=!1,n="";try{let r=await this.responsePromise;if(this.aborted)return;if(!r.ok){let o=`HTTP ${r.status}`,i;try{let u=await r.text();try{let c=JSON.parse(u);o=c.error||c.message||u,i=c.code}catch{o=u.trim()||o}}catch{}let a=new Error(o);a.status=r.status,r.status===401?a.code="UNAUTHORIZED":r.status===402||r.status===429?a.code="RATE_LIMIT_EXCEEDED":r.status===403&&(a.code="FORBIDDEN"),i&&(a.code=i),this.emit("error",a);return}let s=r.body?.getReader();if(!s)throw new Error("Response body is not readable");try{let o=new TextDecoder,i="",a="",u=!1,c=!1;for(;!c;){let{done:h,value:_}=await s.read();if(this.aborted||u)break;h?(i+=o.decode(),c=!0):i+=o.decode(_,{stream:!0});let y;if(c)y=i,i="";else{let A=i.lastIndexOf(`
9
+
10
+ `),L=i.lastIndexOf(`\r
11
+ \r
12
+ `),N=Math.max(A,L);if(N===-1)continue;let k=N===L?4:2;y=i.slice(0,N+k),i=i.slice(N+k)}let C=ur(y);for(let{event:A,data:L}of C){if(this.aborted)return;if(A==="meta"){try{let k=JSON.parse(L);this.emit("meta",k)}catch{}continue}if(A==="entity_ref"){try{let k=JSON.parse(L);this.emit("entity_ref",k)}catch{}continue}if(A==="live_ref"){try{let k=JSON.parse(L);k&&typeof k.key=="string"&&k.key&&this.emit("live_ref",k)}catch{}continue}if(A==="knowledge_images"){try{let k=JSON.parse(L);Array.isArray(k?.refs)&&k.refs.length>0&&this.emit("knowledge_images",k.refs)}catch{}continue}if(A==="stale_notice"){try{let k=JSON.parse(L);Array.isArray(k?.items)&&k.items.length>0&&this.emit("stale_notice",k.items)}catch{}continue}if(A==="thinking"){try{let{text:k}=JSON.parse(L);k&&this.emit("thinking",k)}catch{}continue}if(A==="status"){try{let k=JSON.parse(L);this.emit("status",k)}catch{}continue}if(A==="viz"){try{let k=JSON.parse(L);this.emit("viz",k)}catch{}continue}if(A==="done"){u=!0;break}if(A==="error"){let k="Stream error",M;try{let B=JSON.parse(L);k=B.error??k,M=B.code}catch{k=L}let F=new Error(k);throw M&&(F.code=M),F}if(A)continue;let N=L;a+=N,this.emit("token",N)}if(u)break}this.aborted||(e=!0,n=a)}finally{try{s.cancel().catch(()=>{})}catch{}this.abortController.abort()}}catch(r){this.aborted||this.emit("error",r)}e&&!this.aborted&&this.emit("done",n)}};var Kt=new Set;function Vt(t){let e,n,r=typeof location<"u"?location.href:"",s=typeof history<"u"?history.pushState.bind(history):null,o=typeof history<"u"?history.replaceState.bind(history):null,i=()=>{if(typeof window>"u"||typeof document>"u")return;let C=location.href;if(Kt.has(C))return;Kt.add(C);let A=document.querySelector("main")??document.querySelector("article")??document.querySelector('[role="main"]')??document.querySelector("#content")??document.querySelector(".entry-content")??document.querySelector("#main")??document.body;if(!A)return;let L=A.cloneNode(!0);["nav","header","footer","script","style","noscript","iframe",'[role="navigation"]','[role="banner"]','[role="contentinfo"]','[aria-hidden="true"]',"template",".hidden",'[style*="display:none"]','[style*="display: none"]'].forEach(B=>{L.querySelectorAll(B).forEach(De=>De.remove())});let k=L.textContent?.replace(/\s+/g," ").trim()??"";if(!k||k.length<50)return;let M=12e4,F=k.length>M?k.slice(0,M):k;t.queueContentIngest({url:C,title:document.title,text:F,capturedAt:Date.now()})},a=()=>{clearTimeout(e),e=setTimeout(()=>{clearTimeout(n),i()},1e3)},u=()=>{clearTimeout(n),n=setTimeout(()=>{clearTimeout(e),i()},4e3)},c=null,h=()=>{typeof window>"u"||typeof document>"u"||typeof MutationObserver>"u"||(c=new MutationObserver(()=>{a()}),c.observe(document.body,{childList:!0,subtree:!0}))},_=()=>{typeof location>"u"||location.href!==r&&(r=location.href,a(),u())};typeof window<"u"&&(window.addEventListener("popstate",_),history&&s&&(history.pushState=(...C)=>{s(...C),_()}),history&&o&&(history.replaceState=(...C)=>{o(...C),_()}),"requestIdleCallback"in window?requestIdleCallback(()=>{i(),h()},{timeout:3e3}):setTimeout(()=>{i(),h()},1e3));let y=()=>{c&&c.disconnect(),clearTimeout(e),clearTimeout(n),typeof window<"u"&&(window.removeEventListener("popstate",_),history&&s&&(history.pushState=s),history&&o&&(history.replaceState=o))};return t.contentIndexerCleanup=y,y}function oe(t){return t===null||typeof t!="object"?JSON.stringify(t):Array.isArray(t)?"["+t.map(oe).join(",")+"]":"{"+Object.keys(t).sort().map(r=>`${JSON.stringify(r)}:${oe(t[r])}`).join(",")+"}"}function ue(t){if(t==="NEXT_PUBLIC_AKROPOLYS_SITE_ID")try{return process.env.NEXT_PUBLIC_AKROPOLYS_SITE_ID}catch{}if(t==="NEXT_PUBLIC_AKROPOLYS_API_URL")try{return process.env.NEXT_PUBLIC_AKROPOLYS_API_URL}catch{}if(t==="NEXT_PUBLIC_AKROPOLYS_API_TOKEN")try{return process.env.NEXT_PUBLIC_AKROPOLYS_API_TOKEN||process.env.NEXT_PUBLIC_AKROPOLYS_API_KEY}catch{}try{let e=import.meta.env;if(e){if(t==="NEXT_PUBLIC_AKROPOLYS_SITE_ID")return e.NEXT_PUBLIC_AKROPOLYS_SITE_ID||e.VITE_AKROPOLYS_SITE_ID;if(t==="NEXT_PUBLIC_AKROPOLYS_API_URL")return e.NEXT_PUBLIC_AKROPOLYS_API_URL||e.VITE_AKROPOLYS_API_URL;if(t==="NEXT_PUBLIC_AKROPOLYS_API_TOKEN")return e.NEXT_PUBLIC_AKROPOLYS_API_TOKEN||e.VITE_AKROPOLYS_API_TOKEN}}catch{}if(typeof globalThis<"u"){let e=globalThis;if(e.process&&e.process.env){let n=e.process.env[t];if(n!==void 0)return n}}}function Ht(){if(typeof DOMException<"u")return new DOMException("Aborted","AbortError");let t=new Error("Aborted");return t.name="AbortError",t}function Ae(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function cr(t,e){let n=[];for(let r of e){let s=t[r];s==null||s===""||typeof s=="object"||n.push({label:r.replace(/[_-]+/g," "),value:String(s)})}return n}function et(t,e=[]){let n=["title","name","label","headline","subject","job_title","listing_title","common_name"],r="";if(!r){for(let a of n)if(typeof t[a]=="string"&&t[a].trim()!==""){r=t[a];break}}r||(r=Object.values(t).find(u=>typeof u=="string"&&u.length>=2&&u.length<=80&&!u.startsWith("http://")&&!u.startsWith("https://"))||"Untitled");let s=["image","images","thumbnail","photo","cover","featured_image"],o;if(!o)for(let a of s){let u=t[a];if(typeof u=="string"&&u.startsWith("http")){o=u;break}else if(Array.isArray(u)&&typeof u[0]=="string"&&u[0].startsWith("http")){o=u[0];break}}let i=pe(t.images,o);return{title:r,image:o||i[0]?.url,images:i,details:cr(t,e)}}var $=class ${constructor(e){this.entities={query:async(e,n)=>{let r=n?.signal;if(r?.aborted)throw Ht();let s=this.chat(e.q);return new Promise((o,i)=>{let a=()=>{s.destroy(),u(()=>i(Ht()))},u=c=>{r?.removeEventListener("abort",a),c()};r?.addEventListener("abort",a,{once:!0}),s.on("token",c=>{n?.onToken?.(c)}),s.on("error",c=>u(()=>i(c))),s.on("done",()=>u(()=>o()))})}};this.allowance=(e,n)=>this.api.allowance(e,n);this.ingestQueue=[];this.ingestTimer=null;this.ingestedUrls=new Map;this.onlineHandler=null;this.sessionId="";this.deviceId="";this.kikuPub=null;this.kikuKey=null;this.shopperName=null;this.contextProviders=[];this.isFlushing=!1;this.retryCount=0;this.contentQueue=[];this.contentIngestTimer=null;this.isContentFlushing=!1;this.contentRetryCount=0;this.contentIndexerCleanup=null;this.lastIngestedItem=null;this.shopperLanguage=null;this.entityLanguageMode=null;let n=e.siteId||ue("NEXT_PUBLIC_AKROPOLYS_SITE_ID")||"",r=e.apiUrl||ue("NEXT_PUBLIC_AKROPOLYS_API_URL")||$.DEFAULT_API_URL,s=e.apiToken||ue("NEXT_PUBLIC_AKROPOLYS_API_TOKEN")||"";this.voiceUrl=e.voiceUrl||ue("NEXT_PUBLIC_AKROPOLYS_VOICE_URL")||$.DEFAULT_VOICE_URL,n||console.error("[Akropolys] Missing siteId \u2014 pass <AkropolysProvider siteId=\u2026> or set NEXT_PUBLIC_AKROPOLYS_SITE_ID."),s||console.error("[Akropolys] Missing apiToken \u2014 pass <AkropolysProvider apiToken=\u2026> or set NEXT_PUBLIC_AKROPOLYS_API_TOKEN."),this.shopperId=e.shopperId,this.userProof=e.userProof,this.authLoading=e.authLoading,this.onAction=e.onAction,this.onAddToCart=e.onAddToCart,this.getCart=e.getCart,this.onError=e.onError,e.kikuKey&&(this.kikuKey=e.kikuKey),this.initSession(),this.initDevice(),this.initKikuKey(),this.initShopperName(),this.initShopperLanguage(),this.initEntityLanguageMode(),this.loadIngestedCache(),this.api=new be(r,n,s,()=>this.getShopperId(),()=>this.sessionId,()=>this.deviceId,()=>this.kikuPub??void 0,()=>this.shopperName??void 0,()=>{try{return this.getCart?.()}catch{return}},()=>this.shopperLanguage??void 0,()=>this.entityLanguageMode??void 0,()=>this.kikuKey??void 0),this.api.userProof=e.userProof,Ne(this),typeof window<"u"&&(this.onlineHandler=()=>{console.debug("[Akropolys] Connectivity restored, flushing queued ingestions."),this.flushQueue(),this.flushContentQueue()},window.addEventListener("online",this.onlineHandler)),e.indexContent&&Vt(this)}get apiUrl(){return this.api.apiUrl}loadIngestedCache(){if(!(typeof window>"u"))try{let e=localStorage.getItem($.INGEST_CACHE_KEY);if(!e)return;let{ts:n,urlFingerprints:r}=JSON.parse(e);if(Date.now()-n>$.INGEST_CACHE_TTL){localStorage.removeItem($.INGEST_CACHE_KEY);return}this.ingestedUrls=new Map(r)}catch{}}saveIngestedCache(){if(!(typeof window>"u"))try{localStorage.setItem($.INGEST_CACHE_KEY,JSON.stringify({ts:Date.now(),urlFingerprints:Array.from(this.ingestedUrls.entries())}))}catch{}}registerContextProvider(e){return this.contextProviders.push(e),()=>{this.contextProviders=this.contextProviders.filter(n=>n!==e)}}async getCurrentContextAsync(e){let n=this.getCurrentContext();if(this.contextProviders.length===0)return n??{};let r=await Promise.all(this.contextProviders.map(i=>Promise.race([i(e),new Promise((a,u)=>setTimeout(()=>u(new Error("timeout")),3e3))]).catch(a=>(console.warn("[Akropolys] Live context provider failed:",a?.message??a),{})))),s=Object.assign({},...r),o=n??{};return{...o,raw:{...o.raw??{},...s}}}getCurrentContext(){if(typeof window>"u")return null;let e={url:window.location.href,title:document.title,raw:{}};if(this.lastIngestedItem){let n=this.lastIngestedItem.url;if(n)try{let r=new URL(n,window.location.origin);r.pathname===window.location.pathname&&(e.raw=this.lastIngestedItem,e.url=r.href,(this.lastIngestedItem.name||this.lastIngestedItem.title)&&(e.title=this.lastIngestedItem.name||this.lastIngestedItem.title))}catch{if(window.location.href.endsWith(n)||n.endsWith(window.location.pathname)){e.raw=this.lastIngestedItem;try{e.url=new URL(n,window.location.origin).href}catch{e.url=n}(this.lastIngestedItem.name||this.lastIngestedItem.title)&&(e.title=this.lastIngestedItem.name||this.lastIngestedItem.title)}}}return e}chat(e,n=[],r,s,o){let i=new AbortController,a=performance.now(),u=[],c=C=>u.push(`${C}=${Math.round(performance.now()-a)}ms`),h=this.getCurrentContextAsync(i.signal).then(C=>(c("context"),this.api.chatStream(e,n,i.signal,C,r,s,o))).then(C=>(c("headers"),C)),_=new Ce(h,i),y=!1;return _.on("token",()=>{y||(y=!0,c("first_text"))}),_.on("done",()=>{c("done"),console.info(`[kiku timing] ${u.join(" ")}`)}),_.on("meta",C=>{C&&typeof C.language=="string"&&C.language&&this.setShopperLanguage(C.language)}),_}reRegister(){Ne(this),typeof window<"u"&&!this.onlineHandler&&(this.onlineHandler=()=>{this.flushQueue(),this.flushContentQueue()},window.addEventListener("online",this.onlineHandler))}updateConfig(e){e.apiUrl&&(this.api.apiUrl=e.apiUrl),e.siteId&&(this.api.siteId=e.siteId),e.apiToken&&(this.api.apiToken=e.apiToken),e.voiceUrl!==void 0&&(this.voiceUrl=e.voiceUrl)}setUserProof(e){this.userProof=e,this.api.userProof=e}getUserProof(){return this.userProof}setShopperId(e){this.shopperId=e,this.authLoading||(this.flushQueue(),this.flushContentQueue())}setAuthLoading(e){let n=this.authLoading;this.authLoading=e,n&&!e&&(this.flushQueue(),this.flushContentQueue())}getShopperId(){return this.shopperId||"guest_"+this.sessionId}getSessionId(){return this.sessionId}initSession(){if(typeof window<"u"&&window.sessionStorage)try{let e=window.sessionStorage.getItem("akropolys_session_id");e||(e=Ae(),window.sessionStorage.setItem("akropolys_session_id",e)),this.sessionId=e;return}catch{}this.sessionId=Ae()}initDevice(){if(typeof window>"u"){this.deviceId=Ae();return}try{let e=localStorage.getItem("akropolys_device_id");e||(e=Ae(),localStorage.setItem("akropolys_device_id",e)),this.deviceId=e}catch{this.deviceId=Ae()}}getDeviceId(){return this.deviceId}async mintKikuKey(){let e=await this.api.mintKikuKey();return e.secret&&this.setKikuKey(e.secret),e.publicId&&this.setKikuPub(e.publicId),e}initKikuKey(){if(!(typeof window>"u"))try{if(!this.kikuKey){let s=localStorage.getItem("akropolys_kiku_key")||localStorage.getItem("kiku_key")||sessionStorage.getItem("akropolys_kiku_key");s&&(this.kikuKey=s)}let e=sessionStorage.getItem("akropolys_kiku_pub")||sessionStorage.getItem("kiku_pub");if(e){this.kikuPub=e;return}let n=localStorage.getItem("akropolys_kiku_pub")||localStorage.getItem("kiku_pub")||localStorage.getItem("kiku_id");if(n){this.kikuPub=n;return}let r=document.cookie.match(/(?:^|;\s*)(?:akropolys_kiku_pub|kiku_pub|kiku_id)=([^;]+)/);if(r){this.kikuPub=decodeURIComponent(r[1]);return}}catch{}}getKikuPub(){return this.kikuPub??void 0}getKikuKey(){return this.kikuKey??void 0}setKikuKey(e){if(this.kikuKey=e,!(typeof window>"u"))try{e?(localStorage.setItem("akropolys_kiku_key",e),sessionStorage.setItem("akropolys_kiku_key",e)):(localStorage.removeItem("akropolys_kiku_key"),sessionStorage.removeItem("akropolys_kiku_key"))}catch{}}initShopperName(){if(!(typeof window>"u"))try{let e=localStorage.getItem("akropolys_shopper_name");e&&(this.shopperName=e)}catch{}}getShopperName(){return this.shopperName??void 0}setShopperName(e){let n=(e||"").trim().slice(0,40);if(n&&(this.shopperName=n,!(typeof window>"u")))try{localStorage.setItem("akropolys_shopper_name",n)}catch{}}clearShopperName(){if(this.shopperName=null,!(typeof window>"u"))try{localStorage.removeItem("akropolys_shopper_name")}catch{}}initShopperLanguage(){if(!(typeof window>"u"))try{let e=localStorage.getItem("akropolys_shopper_language");e&&(this.shopperLanguage=e)}catch{}}getShopperLanguage(){return this.shopperLanguage??void 0}setShopperLanguage(e){let n=(e||"").trim().slice(0,40);if(n&&(this.shopperLanguage=n,!(typeof window>"u")))try{localStorage.setItem("akropolys_shopper_language",n)}catch{}}clearShopperLanguage(){if(this.shopperLanguage=null,!(typeof window>"u"))try{localStorage.removeItem("akropolys_shopper_language")}catch{}}initEntityLanguageMode(){if(!(typeof window>"u"))try{let e=localStorage.getItem("akropolys_entity_language");(e==="original"||e==="translated")&&(this.entityLanguageMode=e)}catch{}}getEntityLanguageMode(){return this.entityLanguageMode??void 0}setEntityLanguageMode(e){if(!(e!=="original"&&e!=="translated")&&(this.entityLanguageMode=e,!(typeof window>"u")))try{localStorage.setItem("akropolys_entity_language",e)}catch{}}clearEntityLanguageMode(){if(this.entityLanguageMode=null,!(typeof window>"u"))try{localStorage.removeItem("akropolys_entity_language")}catch{}}getEntityPreview(e){return this.api.entityPreview(e)}storeScene(e){return this.api.storeScene(e)}baseFont(){return this.api.baseFont()}synthesizeSpeech(e,n,r,s){return this.api.synthesizeSpeech(e,n,r??this.getShopperLanguage(),s)}getCachedUIStrings(e,n){if(typeof window>"u"||!e)return null;let r=$.hashStrings(n),s=`akropolys_ui_strings_v${$.CHROME_STRINGS_CACHE_VERSION}_${e.toLowerCase().trim()}_${r}`;try{let o=localStorage.getItem(s);if(o){let i=JSON.parse(o);if(i?.strings&&Object.keys(i.strings).length>0)return{strings:i.strings,complete:!0,dir:i.dir==="rtl"?"rtl":"ltr",bcp47:typeof i.bcp47=="string"?i.bcp47:"",font:i.font?.family&&i.font?.faces?.length?i.font:null}}}catch{}return null}async getUIStrings(e,n){let r=$.hashStrings(n),s=`akropolys_ui_strings_v${$.CHROME_STRINGS_CACHE_VERSION}_${e.toLowerCase().trim()}_${r}`,o=this.getCachedUIStrings(e,n);if(o)return o;let i={strings:{},complete:!1,dir:"ltr",bcp47:"",font:null};if(typeof window<"u")try{let c=localStorage.getItem(s);if(c){let h=JSON.parse(c);if(h?.strings&&Object.keys(h.strings).length>0)return{strings:h.strings,complete:!0,dir:h.dir==="rtl"?"rtl":"ltr",bcp47:typeof h.bcp47=="string"?h.bcp47:"",font:h.font?.family&&h.font?.faces?.length?h.font:null};localStorage.removeItem(s)}}catch{}let a=await this.api.uiStrings(e,n);if(a?.complete||(a=await this.api.uiStrings(e,n)),!a?.complete||Object.keys(a.strings).length===0)return i;let u=a.strings;if(typeof window<"u")try{let c="akropolys_ui_strings_",h=`akropolys_ui_strings_v${$.CHROME_STRINGS_CACHE_VERSION}_`;for(let _=localStorage.length-1;_>=0;_--){let y=localStorage.key(_);y&&y.startsWith(c)&&!y.startsWith(h)&&localStorage.removeItem(y)}localStorage.setItem(s,JSON.stringify({strings:u,dir:a.dir,bcp47:a.bcp47,font:a.font}))}catch{}return a}static hashStrings(e){let n=Object.keys(e).sort().map(s=>`${s}${e[s]}`).join(""),r=5381;for(let s=0;s<n.length;s++)r=(r*33^n.charCodeAt(s))>>>0;return r.toString(36)}setKikuPub(e){let n=(e||"").trim();if(n&&(this.kikuPub=n,!(typeof window>"u"))){try{sessionStorage.setItem("akropolys_kiku_pub",n)}catch{}try{localStorage.setItem("akropolys_kiku_pub",n)}catch{}try{document.cookie=`akropolys_kiku_pub=${encodeURIComponent(n)};path=/;max-age=31536000;SameSite=Lax`}catch{}}}hasKikuKey(){return!!this.kikuPub}clearKikuKey(){if(this.kikuPub=null,!(typeof window>"u")){try{sessionStorage.removeItem("akropolys_kiku_pub")}catch{}try{sessionStorage.removeItem("kiku_pub")}catch{}try{localStorage.removeItem("akropolys_kiku_pub")}catch{}try{localStorage.removeItem("kiku_pub")}catch{}try{localStorage.removeItem("kiku_id")}catch{}try{localStorage.removeItem("akropolys_kiku_key")}catch{}try{document.cookie="akropolys_kiku_pub=;path=/;max-age=0"}catch{}}}destroy(){this.contextProviders=[],typeof window<"u"&&this.onlineHandler&&(window.removeEventListener("online",this.onlineHandler),this.onlineHandler=null),this.ingestTimer&&(clearTimeout(this.ingestTimer),this.ingestTimer=null),this.contentIngestTimer&&(clearTimeout(this.contentIngestTimer),this.contentIngestTimer=null),this.contentIndexerCleanup&&(this.contentIndexerCleanup(),this.contentIndexerCleanup=null),qt()===this&&Ne(null)}async queueIngest(e){return this.ingest(e)}async queueIngestBatch(e){return this.ingestMany(e)}async ingest(e){this.lastIngestedItem=e;let n=e.envelope?.entity||e,r=n.id??n.productId??n.slug??n.url??n.name??"",s=n.url||(typeof window<"u"?window.location.href:"");if(!r&&!s){console.warn("[Akropolys] Ingestion warning: Item is missing both a stable identifier and a URL. Skipping.");return}let o=oe(e);if(s){if(this.ingestedUrls.get(s)===o)return;this.ingestedUrls.set(s,o),this.saveIngestedCache()}this.ingestQueue.push(e),this.scheduleFlush()}async ingestMany(e){e.length>0&&(this.lastIngestedItem=e[e.length-1]);let n=!1;e.forEach(r=>{let s=r.envelope?.entity||r,o=s.id??s.productId??s.slug??s.url??s.name??"",i=s.url||(typeof window<"u"?window.location.href:"");if(!o&&!i){console.warn("[Akropolys] Ingestion warning: Item is missing both a stable identifier and a URL. Skipping.");return}let a=oe(r);if(i){if(this.ingestedUrls.get(i)===a)return;this.ingestedUrls.set(i,a),n=!0}this.ingestQueue.push(r)}),n&&this.saveIngestedCache(),this.ingestQueue.length>0&&this.scheduleFlush()}scheduleFlush(){this.ingestTimer||this.isFlushing||(this.ingestTimer=setTimeout(()=>{this.flushQueue()},300))}async flushQueue(){if(this.isFlushing)return;if(this.isFlushing=!0,this.ingestTimer&&(clearTimeout(this.ingestTimer),this.ingestTimer=null),this.authLoading){console.debug("[Akropolys] Authentication is loading. Deferring ingestion flush."),this.isFlushing=!1;return}if(typeof navigator<"u"&&!navigator.onLine){console.warn("[Akropolys] Browser offline. Postponing ingestion."),this.isFlushing=!1;return}let e=50;try{for(;this.ingestQueue.length>0;){let n=this.ingestQueue.slice(0,e);try{await this.api.ingestBatch(n),this.ingestQueue.splice(0,n.length),this.retryCount=0}catch(r){let s=r.status||500,o=r.message||"Unknown network error";if(this.onError)try{this.onError({status:s,message:o})}catch(i){console.error("[Akropolys] Error inside onError callback:",i)}if(s>=400&&s<500&&s!==429){console.error("[Akropolys] Ingestion discarded due to client error:",o),this.ingestQueue.splice(0,n.length);continue}else{console.warn("[Akropolys] Ingestion temporarily failed. Retrying later.",o),this.scheduleFlushWithBackoff();break}}}}finally{this.isFlushing=!1}}scheduleFlushWithBackoff(){if(this.ingestTimer)return;let e=1e3,n=Math.random()*1e3,r=Math.min(e*Math.pow(2,this.retryCount),3e4)+n;this.retryCount++,this.ingestTimer=setTimeout(()=>{this.flushQueue()},r)}async queueContentIngest(e){this.contentQueue.push(e),this.scheduleContentFlush()}scheduleContentFlush(){this.contentIngestTimer||this.isContentFlushing||(this.contentIngestTimer=setTimeout(()=>{this.flushContentQueue()},300))}async flushContentQueue(){if(this.isContentFlushing)return;if(this.isContentFlushing=!0,this.contentIngestTimer&&(clearTimeout(this.contentIngestTimer),this.contentIngestTimer=null),this.authLoading){console.debug("[Akropolys] Authentication is loading. Deferring content ingestion flush."),this.isContentFlushing=!1;return}if(typeof navigator<"u"&&!navigator.onLine){console.warn("[Akropolys] Browser offline. Postponing content ingestion."),this.isContentFlushing=!1;return}let e=50;try{for(;this.contentQueue.length>0;){let n=this.contentQueue.slice(0,e);try{await this.api.ingestContentBatch(n),this.contentQueue.splice(0,n.length),this.contentRetryCount=0}catch(r){let s=r.status||500,o=r.message||"Unknown network error";if(this.onError)try{this.onError({status:s,message:o})}catch(i){console.error("[Akropolys] Error inside onError callback:",i)}if(s>=400&&s<500&&s!==429){console.error("[Akropolys] Content ingestion discarded due to client error:",o),this.contentQueue.splice(0,n.length);continue}else{console.warn("[Akropolys] Content ingestion temporarily failed. Retrying later.",o),this.scheduleContentFlushWithBackoff();break}}}}finally{this.isContentFlushing=!1}}scheduleContentFlushWithBackoff(){if(this.contentIngestTimer)return;let e=1e3,n=Math.random()*1e3,r=Math.min(e*Math.pow(2,this.contentRetryCount),3e4)+n;this.contentRetryCount++,this.contentIngestTimer=setTimeout(()=>{this.flushContentQueue()},r)}};$.INGEST_CACHE_KEY="akropolys_ingested_v3",$.INGEST_CACHE_TTL=1440*60*1e3,$.DEFAULT_API_URL="https://api.akropolys.cloud/v1",$.DEFAULT_VOICE_URL="https://voice.akropolys.cloud",$.CHROME_STRINGS_CACHE_VERSION=6;var Ee=$,jt="__akropolys_client__";function qt(){return globalThis[jt]??null}function Ne(t){globalThis[jt]=t}function Z(){let t=qt();if(!t){let e=ue("NEXT_PUBLIC_AKROPOLYS_SITE_ID"),n=ue("NEXT_PUBLIC_AKROPOLYS_API_URL"),r=ue("NEXT_PUBLIC_AKROPOLYS_API_TOKEN");if(e&&r)t=new Ee({siteId:e,apiUrl:n,apiToken:r}),Ne(t);else throw new Error("[Akropolys] Call initAkropolys() or set NEXT_PUBLIC_AKROPOLYS_* environment variables before using the client.")}return t}var me=K(V());var dr=K(tt()),Xt=(0,me.createContext)(null);function ae(){let t=(0,me.useContext)(Xt);return t||Z()}var pr=K(V());var $e=K(V());var Qt=K(V());var Gt=K(V());var Jt=K(V());var g=K(V());var nt=new Map,rt=new Set,Wt=3e4,Zt=1200;function Re(t,e,n=Date.now()){if(!t||!e||typeof e!="object")return;let r=nt.get(t);if(r&&r.at>n)return;let s={...r?.changedAt??{}},o=!r;for(let i of Object.keys(e))(!r||r.fields[i]!==e[i])&&(s[i]=n,o=!0);for(let i of Object.keys(s))i in e||delete s[i];if(!(!o&&r&&r.at===n)){nt.set(t,{key:t,fields:e,at:n,changedAt:s});for(let i of rt)try{i(t)}catch(a){console.error("[Akropolys] live value listener failed:",a)}}}function en(t){return nt.get(t)}function tn(t){return rt.add(t),()=>{rt.delete(t)}}function yr(t,e=Date.now()){return!!t&&e-t.at>=Wt}function vr(t,e,n=Date.now()){let r=t?.changedAt[e];return r!==void 0&&n-r<Zt}function kr(t){let e=Math.max(0,Math.round(t/1e3));if(e<60)return`${e}s ago`;let n=Math.round(e/60);if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function Sr(t){if(t==null||t==="")return"\u2014";let e=String(t).trim();if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(e)){let r=new Date(e);if(!isNaN(r.getTime()))return r.toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}let n=Number(e);return!isNaN(n)&&/^-?\d+(\.\d+)?$/.test(e)?Math.abs(n)>=1e6?`${(n/1e6).toFixed(2)}M`:Math.abs(n)>=1e3?n.toLocaleString(void 0,{maximumFractionDigits:2}):n.toString():e}function wr(t){return t.slice(t.lastIndexOf(".")+1).replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^./,n=>n.toUpperCase())}var Fe=K(V());function st(){let t=ae(),[e,n]=(0,Fe.useState)(()=>t?.api.cardFields??[]);return(0,Fe.useEffect)(()=>{if(!t)return;let r=!0;return t.api.widgetSettings().then(s=>{r&&n(s.cardFields)}),()=>{r=!1}},[t]),e}function it(t,e,n,r,s,o,i){let a=[...t],u=i?.images?.length?i.images:void 0,c=i?.live;return(e||u)&&a.push({role:"user",content:e,spoken:!0,live:c,audioUrl:s,images:u}),(n||i?.visualization)&&a.push({role:"assistant",content:n,spoken:!0,live:c,thoughtForSeconds:r&&r>0?Math.round(r*10)/10:void 0,audioUrl:o,visualization:i?.visualization}),a}var Ir="Continue your previous answer exactly where it stopped. Do not repeat anything already written \u2014 just carry on from the last character.";function nn(t,e){return t.map(n=>{let r=et(n.fields||n,e);return{...n,name:n.name||r.title,image:n.image||r.image||pe(n.images,void 0,n.url)[0]?.url,images:pe(n.images??n.fields?.images??r.images,n.image||r.image,n.url),details:r.details}})}function _r(t={}){let e=ae(),n=st(),[r,s]=(0,g.useState)(t.initialMessages??[]),[o,i]=(0,g.useState)([]),[a,u]=(0,g.useState)([]),[c,h]=(0,g.useState)(!1),[_,y]=(0,g.useState)(!1),[C,A]=(0,g.useState)(!1),[L,N]=(0,g.useState)(!1),[k,M]=(0,g.useState)(null),[F,B]=(0,g.useState)(null),[De,Ke]=(0,g.useState)(null),[wn,Ve]=(0,g.useState)(null),[In,_n]=(0,g.useState)(null),ee=(0,g.useRef)(null),te=(0,g.useRef)(null),[bn,Te]=(0,g.useState)(null),ye=(0,g.useRef)([]),lt=(0,g.useRef)(!1),ft=(0,g.useRef)(!1);lt.current=c,ft.current=_;let z=(0,g.useRef)(""),G=(0,g.useRef)(0),ne=(0,g.useRef)(null),re=(0,g.useRef)(!1),Y=(0,g.useCallback)(()=>{ne.current!=null&&(cancelAnimationFrame(ne.current),ne.current=null)},[]),dt=(0,g.useRef)(t.onToken),gt=(0,g.useRef)(t.onMeta),pt=(0,g.useRef)(t.onDone),xe=(0,g.useRef)(t.onError),[J,ve]=(0,g.useState)(()=>e?.api.conversation?.id??null),ke=(0,g.useRef)(0),[He,Se]=(0,g.useState)(null),je=(0,g.useRef)({id:J,upTo:e?.api.conversation?.cursor??0,shown:0,auto:!0}),[ht,Cn]=(0,g.useState)([]),[An,mt]=(0,g.useState)(0),W=(0,g.useCallback)(async()=>{if(!e)return[];let f=await e.api.myRequests().catch(()=>[]);return Cn(f),f},[e]),Pe=(0,g.useCallback)(()=>{e?.api.forgetConversation(),je.current={id:null,upTo:0,shown:0,auto:!1},ve(null),Se(null),W()},[e,W]),En=(0,g.useCallback)(async f=>{if(!e)return;let m=await e.api.resumeRequest(f);m!==null&&(ee.current?.destroy(),Y(),re.current=!0,te.current=null,Te(null),h(!1),y(!1),s([]),je.current={id:f,upTo:m,shown:0,auto:!1},Se(null),ve(f),mt(v=>v+1))},[e,Y]);(0,g.useEffect)(()=>{W()},[W]);let Rn=(0,g.useCallback)(()=>{e?.api.leaveConversation(),ve(null),Se(null),setTimeout(W,600)},[e,W]);(0,g.useEffect)(()=>{if(!e||!J)return;let f=new AbortController,m=null,v=je.current,E=0,I=!1,x=()=>v.id===J&&v.shown<v.upTo,O=S=>{if(!f.signal.aborted){if(S.type==="message"&&S.message){if(e.api.seenConversationMessage(S.message.id),x()){if(S.message.id<=v.shown)return;v.shown=S.message.id;let{role:b,text:d}=S.message,p=new Date(S.message.at).getTime();if(S.message.kind==="joined"&&s(P=>[...P,{role:"assistant",content:"",statusStage:"team_joined"}]),b==="visitor"&&d&&s(P=>[...P,{role:"user",content:d}]),b==="human"){let P=E?Math.max(1,Math.round((p-E)/1e3)):void 0;s(le=>[...le,{role:"assistant",content:d,human:!0,repliedSeconds:P}])}b==="visitor"&&(E=p,ke.current=Math.max(ke.current,p)),!x()&&b==="visitor"&&(m==="waiting"||m==="human")&&s(P=>[...P,{role:"assistant",content:"",statusStage:"with_team"}]);return}if(S.message.kind==="joined"){s(b=>[...b,{role:"assistant",content:"",statusStage:"team_joined"}]);return}if(S.message.role==="system"&&(m==="kiku"||m==="closed")){let b=m==="kiku"?"back_with_kiku":"team_closed";s(d=>[...d,{role:"assistant",content:"",statusStage:b}]),I=!0,f.abort();return}if(S.message.role!=="human")return;let R=ke.current?Math.max(1,Math.round((new Date(S.message.at).getTime()-ke.current)/1e3)):void 0,l=S.message.text;s(b=>[...b,{role:"assistant",content:l,human:!0,repliedSeconds:R&&R>0?R:void 0}]);return}S.type==="status"&&S.status&&(m!==null&&m!==S.status&&W(),m=S.status,Se(S.status))}};return(async()=>{if(v.auto&&v.id===J){let R=await e.api.conversationState().catch(()=>null);if(f.signal.aborted)return;if(v.auto=!1,R&&R.status!=="waiting"&&R.status!=="human"&&R.unread===0){Pe();return}}let S=3e3;for(;!f.signal.aborted;){let R=await e.api.conversationEvents(O,f.signal,x()?v.shown:void 0).catch(()=>0);if(I||R===200&&(m==="kiku"||m==="closed"))return;if(R===404){e.api.forgetConversation(),ve(null);return}S=R===200?3e3:Math.min(S*2,6e4),await new Promise(l=>setTimeout(l,S))}})(),()=>f.abort()},[e,J,An,W,Pe]),(0,g.useEffect)(()=>{dt.current=t.onToken,gt.current=t.onMeta,pt.current=t.onDone,xe.current=t.onError},[t.onToken,t.onMeta,t.onDone,t.onError]),(0,g.useEffect)(()=>()=>{ee.current?.destroy(),Y()},[Y]);let qe=(0,g.useCallback)(()=>{if(ne.current!=null)return;let f=()=>{let m=z.current;if(m.length>G.current){G.current=m.length;let v=m;s(E=>{let I=[...E];return I.length>0&&I[I.length-1].role==="assistant"&&(I[I.length-1]={...I[I.length-1],content:v}),I})}G.current<z.current.length||!re.current?ne.current=requestAnimationFrame(f):(ne.current=null,y(!1))};ne.current=requestAnimationFrame(f)},[]),ce=(0,g.useRef)(new Set),se=(0,g.useRef)(new Set);(0,g.useEffect)(()=>()=>{ce.current.clear(),se.current.forEach(f=>clearTimeout(f)),se.current.clear()},[]);let Tn=(0,g.useCallback)(f=>{if(!f||ce.current.has(f))return;ce.current.add(f);let m=Date.now()+600*1e3,v=4e3,E=O=>{ce.current.delete(f),s(S=>{let R=[...S];for(let l=R.length-1;l>=0;l--)if(R[l].role==="assistant"){R[l]={...R[l],visualizing:!1,...O};break}return R})},I=async()=>{if(!ce.current.has(f))return;if(Date.now()>m){E({});return}let O=await e.api?.getVideoStatus?.(f);if(O?.status==="SUCCESS"&&O.videoUrl){let R=O.videoUrl;R.startsWith("/")&&e?.apiUrl&&(R=`${e.apiUrl.replace(/\/+$/,"")}${R}`),E({visualization:R,visualizationType:"video"});return}if(O?.status==="FAILED"){E({});return}v=Math.min(v*1.4,2e4);let S=setTimeout(()=>{se.current.delete(S),I()},v);se.current.add(S)},x=setTimeout(()=>{se.current.delete(x),I()},v);se.current.add(x)},[e]),we=(0,g.useCallback)((f,m,v)=>{let E=m,I=null,x=[],O=Date.now(),S=m;m&&(z.current=v,G.current=v.length,re.current=!1);let R=()=>{E?m&&(h(!1),y(!0),qe()):(h(!1),y(!0),z.current="",G.current=0,re.current=!1,E=!0,qe())};f.on("meta",l=>{I=l,i(l.sources??[]),l.intent&&Ve(l.intent),Array.isArray(l.allowedActions)&&_n(l.allowedActions),l.action&&Ke(l.action),l.action?.kikuKey&&e&&(e.setKikuKey(l.action.kikuKey),l.action.kikuPub&&e.setKikuPub(l.action.kikuPub)),l.action?.type==="request_human"&&l.action.conversationId&&e&&(e.api.openConversation(l.action.conversationId,l.action.conversationToken),ve(e.api.conversation?.id??null),mt(b=>b+1),Se("waiting"),W()),gt.current?.(l)}),f.on("status",l=>{l?.message&&(R(),s(b=>{let d=[...b],p=d[d.length-1];return p?.role==="assistant"&&(d[d.length-1]={...p,statusMessage:l.message,statusStage:l.stage}),d}))}),f.on("entity_ref",l=>{l?.id&&(x.includes(l.id)||x.push(l.id),u(b=>b.includes(l.id)?b:[...b,l.id]))}),f.on("knowledge_images",l=>{R(),s(b=>{let d=[...b],p=d[d.length-1];return p?.role==="assistant"&&(d[d.length-1]={...p,knowledgeImages:l}),d})}),f.on("stale_notice",l=>{R(),s(b=>{let d=[...b],p=d[d.length-1];return p?.role==="assistant"&&(d[d.length-1]={...p,staleNotices:l}),d})}),f.on("live_ref",l=>{l?.fields&&typeof l.fields=="object"&&Re(l.key,l.fields,typeof l.at=="number"?l.at:void 0),R(),s(b=>{let d=[...b],p=d[d.length-1];if(p?.role==="assistant"){let P=p.liveKeys??[];P.includes(l.key)||(d[d.length-1]={...p,liveKeys:[...P,l.key]})}return d})}),f.on("thinking",l=>{R(),s(b=>{let d=[...b],p=d[d.length-1];return p?.role==="assistant"&&(d[d.length-1]={...p,thinking:p.thinking?p.thinking+`
13
+ `+l:l}),d})}),f.on("token",l=>{if(R(),!S){S=!0;let b=Math.max(1,Math.round((Date.now()-O)/1e3));s(d=>{let p=[...d],P=p[p.length-1];return P?.role==="assistant"&&(p[p.length-1]={...P,thoughtForSeconds:b}),p})}z.current+=l,dt.current?.(l)}),f.on("viz",l=>{if(l.status==="generating"||l.status==="generating_video"){R(),s(b=>{let d=[...b];return d.length>0&&d[d.length-1].role==="assistant"&&(d[d.length-1]={...d[d.length-1],visualizing:!0,visualizationType:l.status==="generating_video"?"video":"image",visualizingText:l.status==="generating_video"?"Generating video\u2026":"Visualizing\u2026"}),d});return}if(l.status==="pending"){Tn(l.jobId);return}R(),s(b=>{let d=[...b];if(d.length>0&&d[d.length-1].role==="assistant"){let p=l.status==="done"?l.url:void 0;p&&p.startsWith("/")&&e?.apiUrl&&(p=`${e.apiUrl.replace(/\/+$/,"")}${p}`);let P=l.status==="done"?l.mediaType||(p?.includes("/videos/")?"video":"image"):void 0;d[d.length-1]={...d[d.length-1],visualizing:!1,...l.status==="done"&&p?{visualization:p,visualizationType:P}:{}}}return d})}),f.on("done",l=>{h(!1),re.current=!0,ne.current==null&&y(!1),s(p=>{let P=[...p];if(P.length>0&&P[P.length-1].role==="assistant"){let le=I?.sources??[];P[P.length-1]={...P[P.length-1],sources:nn(le,e?.api.cardFields??[]),referencedIds:x,intent:I?.intent}}return P});let b=I?.action,d=["search","capture","capture_all","delete","view_history","request_kiku_key","visualize","open_memory"];if(b?.type&&!d.includes(b.type)){let p=(I?.sources??[]).filter(yt=>yt?.id&&x.includes(yt.id)),P={...b,items:p};window.dispatchEvent(new CustomEvent("akropolys:action",{detail:P})),e.onAction?.(P);let le=String(b.type).replace(/[^a-z]/gi,"").toLowerCase();(le==="addtocart"||le==="cart")&&e.onAddToCart&&p.length>0&&e.onAddToCart(p)}pt.current?.(l)}),f.on("error",l=>{re.current=!0,Y(),h(!1),y(!1);let b=z.current;m||E&&b?(G.current=b.length,s(d=>{let p=[...d];return p.length>0&&p[p.length-1].role==="assistant"&&(p[p.length-1]={...p[p.length-1],content:b}),p}),N(!0)):(M(l.message),B(l.code??null),s(d=>{let p=d;return p.length>0&&p[p.length-1].role==="assistant"&&!p[p.length-1].content&&(p=p.slice(0,-1)),p})),xe.current?.(l)})},[e,qe,Y]),Le=(0,g.useCallback)((f,m,v,E,I)=>{s(x=>[...x,{role:"assistant",content:"",thinking:""}]),h(!0),y(!0),A(!1),N(!1),M(null),B(null),u([]),Ke(null),Ve(null),z.current="",G.current=0;try{let x=e.chat(m,f,v,E,I);ee.current=x,we(x,!1,"")}catch(x){h(!1),y(!1),M(x?.message??"Chat request failed"),s(O=>O.slice(0,-1)),xe.current?.(x)}},[e,we]),xn=(0,g.useCallback)(async(f,m,v,E,I)=>{if(!f.trim())return;ke.current=Date.now();let x={role:"user",content:m??f,images:v?.filter(S=>S.type==="image").map(S=>S.preview||S.data)};if(c||_){if(te.current)return;te.current={query:f,displayQuery:m,attachments:v,forcedIntent:E,captureTargets:I},Te({...x,queued:!0});return}s(S=>[...S,x]);let O=r.map(S=>({role:S.role,content:S.content}));Le(O,f,v,E,I)},[r,c,_,Le]);(0,g.useEffect)(()=>{if(c||_)return;let f=r;if(ye.current.length>0){let E=ye.current;ye.current=[];for(let I of E)f=it(f,I.heard,I.said,I.duration,I.userAudioUrl,I.assistantAudioUrl,I.media);s(I=>{let x=I;for(let O of E)x=it(x,O.heard,O.said,O.duration,O.userAudioUrl,O.assistantAudioUrl,O.media);return x})}if(!te.current)return;let m=te.current;te.current=null,Te(null);let v=f.map(E=>({role:E.role,content:E.content}));s(E=>[...E,{role:"user",content:m.displayQuery??m.query,images:m.attachments?.filter(I=>I.type==="image").map(I=>I.preview||I.data)}]),Le(v,m.query,m.attachments,m.forcedIntent,m.captureTargets)},[c,_,r,Le]);let Pn=(0,g.useCallback)(()=>{if(c||_)return;let f=r[r.length-1];if(f){ee.current?.destroy(),A(!1),N(!1),h(!0),M(null),B(null);try{if(f.role==="assistant"){let m=r.map(E=>({role:E.role,content:E.content})),v=e.chat(Ir,m);ee.current=v,we(v,!0,f.content||"")}else{let m=r.slice(0,-1).map(E=>({role:E.role,content:E.content})),v=e.chat(f.content,m);ee.current=v,we(v,!1,"")}}catch(m){h(!1),M(m?.message??"Chat request failed"),xe.current?.(m)}}},[e,r,c,_,we]),Ln=(0,g.useCallback)(()=>{ee.current?.destroy(),Y(),re.current=!0,z.current="",G.current=0,te.current=null,ye.current=[],ce.current.clear(),se.current.forEach(f=>clearTimeout(f)),se.current.clear(),Te(null),s([]),i([]),u([]),y(!1),A(!1),N(!1),M(null),B(null),h(!1),Ke(null),Ve(null),Pe()},[Pe,Y]),Be=(0,g.useCallback)(()=>{if(ee.current?.destroy(),Y(),re.current=!0,h(!1),y(!1),z.current){let f=z.current;G.current=f.length,s(m=>{let v=[...m];return v.length>0&&v[v.length-1].role==="assistant"&&(v[v.length-1]={...v[v.length-1],content:f}),v})}A(!0),s(f=>f.map(m=>m.visualizing?{...m,visualizing:!1}:m))},[Y]),On=(0,g.useCallback)(()=>{te.current&&Be()},[Be]),Un=(0,g.useCallback)((f,m,v,E,I,x)=>{let O=f.trim(),S=m.trim();if(!(!O&&!S&&!x?.images?.length&&!x?.visualization)){if(lt.current||ft.current){ye.current.push({heard:O,said:S,duration:v,userAudioUrl:E,assistantAudioUrl:I,media:x});return}s(R=>it(R,O,S,v,E,I,x))}},[]),Nn=(0,g.useMemo)(()=>nn(o,n),[o,n]);return{messages:r,sources:Nn,referencedIds:a,loading:c,streaming:_,error:k,errorCode:F,lastAction:De,lastIntent:wn,allowedActions:In,send:xn,queuedMessage:bn,sendQueuedNow:On,appendSpokenExchange:Un,stop:Be,stopped:C,interrupted:L,continueGenerating:Pn,reset:Ln,humanPending:!!J&&(He==="waiting"||He==="human"),leaveHuman:Rn,requests:ht.length>0||!J?ht:[{id:J,status:He??"waiting",summary:""}],activeRequestId:J,openRequest:En}}var rn=K(V());var on=K(V());function sn(t={}){if(typeof window>"u"||typeof WebSocket>"u")return()=>{};let e=t.client??Z(),{apiUrl:n,siteId:r,apiToken:s}=e.api??{};if(!n||!r||!s)return t.onError?.(new Error("subscribeLiveStream: client is not configured \u2014 is this inside <AkropolysProvider>?")),()=>{};let o=!1,i=null,a=0,u=null,c=n.replace(/^http/,"ws"),h=new URLSearchParams({site_id:r});t.keys?.length&&h.set("keys",t.keys.join(","));function _(){o||(i=new WebSocket(`${c}/live/stream?${h}`,[`akropolys.token.${s}`]),i.onopen=()=>{a=0},i.onmessage=y=>{let C;try{C=JSON.parse(y.data)}catch{return}if(Array.isArray(C.records))for(let A of C.records)!A?.key||!A.fields||Re(A.key,A.fields,A.at)},i.onerror=()=>{t.onError?.(new Error("live stream socket error"))},i.onclose=()=>{if(o)return;let y=Math.min(15e3,1e3*2**a++);u=setTimeout(_,y)})}return _(),()=>{o=!0,u&&clearTimeout(u),i?.close()}}var an=K(V());var ot=K(V());function wi(t){if(typeof t=="string")return{themeAttr:t,vars:void 0};if(!t)return{themeAttr:void 0,vars:void 0};let e={};return t.primaryColor&&(e["--hsk-primary"]=t.primaryColor),t.backgroundColor&&(e["--hsk-bg"]=t.backgroundColor,e["--hsk-chat-bg"]=t.backgroundColor),t.textColor&&(e["--hsk-text"]=t.textColor,e["--hsk-chat-text"]=t.textColor),t.fontFamily&&(e["--hsk-font"]=t.fontFamily),t.fontSize&&(e["--hsk-font-size"]=t.fontSize),t.mobileFontSize&&(e["--hsk-mobile-font-size"]=t.mobileFontSize),t.borderRadius&&(e["--hsk-border-radius"]=t.borderRadius),{themeAttr:void 0,vars:e}}var Cr="light",Ar=["light","dark","mahogany","blush","coffee","midnight"];function un(t){return typeof t=="string"&&Ar.includes(t)}function _i(t){if(un(t))return t;try{let e=typeof window<"u"?localStorage.getItem("akropolys_theme"):null;if(un(e))return e}catch{}return Cr}var cn="hsk-sounds",T=null,Q=null;function ln(){try{return localStorage.getItem(cn)!=="off"}catch{return!0}}function Ci(t){try{localStorage.setItem(cn,t?"on":"off")}catch{}t&&fn()}function fn(){if(typeof window>"u")return;try{let e=navigator.audioSession;e&&e.type!=="playback"&&(e.type="playback")}catch{}if(T){T.state==="suspended"&&T.resume().catch(()=>{});return}let t=window.AudioContext||window.webkitAudioContext;if(t)try{T=new t({latencyHint:"interactive"}),Q=T.createGain(),Q.gain.value=.28,Q.connect(T.destination);let e=T.createBuffer(1,1,T.sampleRate),n=T.createBufferSource();n.buffer=e,n.connect(T.destination),n.start(0),T.resume().catch(()=>{})}catch{T=null}}function X(t,e,n,r,s){if(!T||!Q)return;let o=T.createOscillator();o.type="sine",o.frequency.setValueAtTime(e,t),o.frequency.exponentialRampToValueAtTime(Math.max(40,e*n),t+r);let i=T.createBiquadFilter();i.type="lowpass",i.Q.value=.9,i.frequency.setValueAtTime(Math.min(18e3,e*7),t),i.frequency.exponentialRampToValueAtTime(Math.max(80,e*1.5),t+r);let a=T.createGain();a.gain.setValueAtTime(1e-4,t),a.gain.exponentialRampToValueAtTime(s,t+.006),a.gain.exponentialRampToValueAtTime(1e-4,t+r),o.connect(i),i.connect(a),a.connect(Q),o.start(t),o.stop(t+r+.02)}function dn(t,e){if(!T||!Q)return;let n=Math.floor(T.sampleRate*.03),r=T.createBuffer(1,n,T.sampleRate),s=r.getChannelData(0);for(let u=0;u<n;u++)s[u]=(Math.random()*2-1)*Math.pow(1-u/n,3);let o=T.createBufferSource();o.buffer=r;let i=T.createBiquadFilter();i.type="bandpass",i.frequency.value=2600,i.Q.value=5;let a=T.createGain();a.gain.value=e,o.connect(i),i.connect(a),a.connect(Q),o.start(t)}function Ai(){return ln()?T?T.state:"unsupported":"off"}function Er(t){!T||!Q||(X(t,587.33,.985,.16,.38),X(t+.048,739.99,.985,.18,.42),X(t+.096,880,.985,.28,.46),X(t+.105,1174.66,.985,.22,.22),dn(t+.096,.16))}function Rr(t){!T||!Q||X(t,659.25,.97,.09,.26)}function Ei(t,e=!1){if(!e&&!ln()||(fn(),!T||!Q||T.state==="closed"))return;T.state==="suspended"&&T.resume().catch(()=>{});let n=T.currentTime+.01;switch(t){case"connect":Er(n);break;case"heard":Rr(n);break;case"reply":X(n,440,.94,.13,.5),X(n+.09,660,.94,.16,.42);break;case"interrupt":X(n,520,.62,.17,.4);break;case"send":X(n,300,1.16,.1,.22);break;case"pin":dn(n,.35),X(n+.02,880,.97,.07,.22);break}}function gn(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e<s;e++)t[e]&&(n=gn(t[e]))&&(r&&(r+=" "),r+=n)}else for(n in t)t[n]&&(r&&(r+=" "),r+=n);return r}function pn(){for(var t,e,n=0,r="",s=arguments.length;n<s;n++)(t=arguments[n])&&(e=gn(t))&&(r&&(r+=" "),r+=e);return r}function Pi(...t){return pn(t)}var at=K(V()),q=new Map;function ut(t,e="hsk-font"){let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return`${e}-${n.toString(36)}`}function Tr(t){let e=t.split("?")[0].split("#")[0].split(".").pop()?.toLowerCase();return e==="woff2"?"woff2":e==="woff"?"woff":e==="otf"?"opentype":e==="ttf"?"truetype":""}function ct(t){let e=t.trim();return!e||/["'()\\\s]/.test(e)||/^(javascript|vbscript):/i.test(e)?null:e}var mn=t=>/["\\{}<>;\n\r]/.test(t)?"":t.trim(),xr=/^[Uu]\+[0-9A-Fa-f?]{1,6}(-[0-9A-Fa-f]{1,6})?$/,hn=t=>{let e=t.split(",").map(n=>n.trim()).filter(Boolean);return e.length===0||!e.every(n=>xr.test(n))?"":e.join(", ")},yn=t=>/^\d{3}( \d{3})?$/.test(t)?t:"400";function Pr(t,e){(0,at.useEffect)(()=>{if(!t||!e||typeof document>"u")return;let n=ut(t);if(q.set(t,(q.get(t)??0)+1),!document.getElementById(n)){let r=document.createElement("style");r.id=n,r.textContent=e,document.head.appendChild(r)}return()=>{let r=(q.get(t)??1)-1;if(r>0){q.set(t,r);return}q.delete(t),document.getElementById(n)?.remove()}},[t,e])}function vn(t){let e=mn(t.family);return e?t.faces.map(n=>{let r=ct(n.url);return r?`@font-face{font-family:"${e}";font-style:normal;font-weight:${yn(n.weight)};font-display:swap;src:url(${r}) format("woff2");`+(hn(n.unicodeRange)?`unicode-range:${hn(n.unicodeRange)};`:"")+"}":""}).join(""):""}function Oi(t){let e=t?.faces??[],n=t&&e.length?vn(t):"";Pr(n?`script|${t.family}|${e.map(r=>r.url).join("|")}`:"",n)}async function Ui(t,e=0){if(typeof document>"u"||!("fonts"in document))return;let n=vn(t);if(!n)return;let r=`script|${t.family}|${t.faces.map(o=>o.url).join("|")}`;q.set(r,(q.get(r)??0)+1);let s=ut(r);if(!document.getElementById(s)){let o=document.createElement("style");o.id=s,o.textContent=n,document.head.appendChild(o)}if(e>0){let o=document.fonts,i=t.family.replace(/^['"]|['"]$/g,""),a=Array.from(o||[]).filter(c=>c.family.replace(/^['"]|['"]$/g,"")===i),u=a.length>0?a.map(c=>c.load().catch(()=>{})):t.faces.map(c=>{let h=ct(c.url);if(!h)return Promise.resolve();try{return new window.FontFace(i,`url(${h})`,{weight:yn(c.weight),style:"normal"}).load().then(y=>{document.fonts?.add(y)}).catch(()=>{})}catch{return Promise.resolve()}});await Promise.race([Promise.all(u),new Promise(c=>setTimeout(c,e))])}}var kn=["400","500","600","700"];function Sn(t,e){let n=Array.from(new Set(Array.from(Object.values(e).join("")))).join(""),r=t.map(s=>`"${s.replace(/^['"]|['"]$/g,"")}"`).join(", ");return{text:n,stack:r}}function Ni(t,e){let n=typeof document<"u"?document.fonts:null,{text:r,stack:s}=Sn(t,e);if(!n?.check||!r||!s)return!0;try{return kn.every(o=>n.check(`${o} 16px ${s}`,r))}catch{return!0}}async function Mi(t,e,n){let r=typeof document<"u"?document.fonts:null;if(!r?.load)return;let{text:s,stack:o}=Sn(t,e);!s||!o||await Promise.race([Promise.all(kn.map(i=>r.load(`${i} 16px ${o}`,s).catch(()=>{}))),new Promise(i=>setTimeout(i,n))])}function $i(t){let e=typeof t=="object"&&t?t:void 0,n=mn(e?.fontFamily?.split(",")[0].trim().replace(/^['"]|['"]$/g,"")??""),r=typeof e?.fontUrl=="string"?{normal:e.fontUrl}:e?.fontUrl??{},s=r.normal??"",o=r.bold??"",i=r.variable??"";(0,at.useEffect)(()=>{if(!n||!s&&!o&&!i)return;let a=i?[["100 900",i]]:[["400",s],["700",o]],u=[];for(let[y,C]of a){if(!C)continue;let A=ct(C);if(!A)continue;let L=Tr(A);u.push(`@font-face{font-family:"${n}";font-style:normal;font-weight:${y};font-display:swap;src:url(${A})${L?` format("${L}")`:""};}`)}if(u.length===0)return;let c=u.join(""),h=`${n}|${s}|${o}|${i}`,_=ut(h,"hsk-host-font");if(q.set(h,(q.get(h)??0)+1),!document.getElementById(_)){let y=document.createElement("style");y.id=_,y.textContent=c,document.head.appendChild(y)}return()=>{let y=(q.get(h)??1)-1;if(y>0){q.set(h,y);return}q.delete(h),document.getElementById(_)?.remove()}},[n,s,o,i])}export{fe as a,K as b,V as c,ar as d,pe as e,et as f,Ee as g,tt as h,Xt as i,ae as j,Zt as k,en as l,tn as m,yr as n,vr as o,kr as p,Sr as q,wr as r,st as s,_r as t,sn as u,wi as v,_i as w,ln as x,Ci as y,fn as z,Ai as A,Ei as B,Pi as C,Oi as D,Ui as E,Ni as F,Mi as G,$i as H};
14
+ /*! Bundled license information:
15
+
16
+ react/cjs/react.production.js:
17
+ (**
18
+ * @license React
19
+ * react.production.js
20
+ *
21
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
22
+ *
23
+ * This source code is licensed under the MIT license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ *)
26
+
27
+ react-dom/cjs/react-dom.production.js:
28
+ (**
29
+ * @license React
30
+ * react-dom.production.js
31
+ *
32
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
33
+ *
34
+ * This source code is licensed under the MIT license found in the
35
+ * LICENSE file in the root directory of this source tree.
36
+ *)
37
+
38
+ react/cjs/react-jsx-runtime.production.js:
39
+ (**
40
+ * @license React
41
+ * react-jsx-runtime.production.js
42
+ *
43
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
44
+ *
45
+ * This source code is licensed under the MIT license found in the
46
+ * LICENSE file in the root directory of this source tree.
47
+ *)
48
+ */