@skywu/virtual-chat-sdk 2.4.5 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- class e extends Error{constructor(e,t,s){super(e),this.code=t,this.details=s,this.name="ChatSDKError"}}class t{constructor(){this.events=new Map}on(e,t){this.events.has(e)||this.events.set(e,[]),this.events.get(e).push(t)}off(e,t){if(!this.events.has(e))return;if(!t)return void this.events.delete(e);const s=this.events.get(e),n=s.indexOf(t);n>-1&&s.splice(n,1),0===s.length&&this.events.delete(e)}emit(e,t){if(!this.events.has(e))return;this.events.get(e).forEach(s=>{try{s(t)}catch(t){console.error(`Error in event callback for "${e}":`,t)}})}getEventNames(){return Array.from(this.events.keys())}listenerCount(e){var t;return(null===(t=this.events.get(e))||void 0===t?void 0:t.length)||0}removeAllListeners(){this.events.clear()}}function s(e,t,s){const n=document.createElement(e);return t&&(n.className=t),n}function n(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function i(e,t=!0){e.scrollTop=e.scrollHeight,e.scrollTo&&e.scrollTo({top:e.scrollHeight,behavior:t?"smooth":"auto"})}const a={USD:1,EUR:.92,GBP:.79,JPY:149.5,CNY:7.24,INR:83.12,BRL:4.97,RUB:92.5,KRW:1320,MXN:17.15,CAD:1.38,AUD:1.53,CHF:.88,SEK:10.85,NZD:1.67,SGD:1.34,HKD:7.82,NOK:10.95,TRY:28.5,ZAR:18.65,PLN:4.05,THB:35.2,IDR:15650,MYR:4.68,PHP:56.2,DKK:6.88,CZK:22.85,HUF:355,ILS:3.72,CLP:920,ARS:350,COP:4050,PEN:3.75,EGP:30.9,SAR:3.75,AED:3.67,VND:24500,PKR:278,BDT:110,NGN:775,UAH:36.5,RON:4.58,TWD:31.5,QAR:3.64,KWD:.31,OMR:.38,BHD:.38},o={USD:"$",EUR:"€",GBP:"£",JPY:"¥",CNY:"¥",INR:"₹",BRL:"R$",RUB:"₽",KRW:"₩",MXN:"$",CAD:"C$",AUD:"A$",CHF:"CHF",SEK:"kr",NZD:"NZ$",SGD:"S$",HKD:"HK$",NOK:"kr",TRY:"₺",ZAR:"R",PLN:"zł",THB:"฿",IDR:"Rp",MYR:"RM",PHP:"₱",DKK:"kr",CZK:"Kč",HUF:"Ft",ILS:"₪",CLP:"$",ARS:"$",COP:"$",PEN:"S/",EGP:"E£",SAR:"﷼",AED:"د.إ",VND:"₫",PKR:"₨",BDT:"৳",NGN:"₦",UAH:"₴",RON:"lei",TWD:"NT$",QAR:"﷼",KWD:"د.ك",OMR:"﷼",BHD:"د.ب"},r={USD:",",EUR:".",GBP:",",JPY:",",CNY:",",INR:",",BRL:".",RUB:" ",KRW:",",MXN:",",CAD:",",AUD:",",CHF:"'",SEK:" ",PLN:" ",THB:",",IDR:".",MYR:",",PHP:",",DKK:".",CZK:" ",HUF:" "},d={USD:".",EUR:",",GBP:".",JPY:".",CNY:".",INR:".",BRL:",",RUB:",",KRW:".",MXN:".",CAD:".",AUD:".",CHF:".",SEK:",",PLN:",",THB:".",IDR:",",MYR:".",PHP:".",DKK:",",CZK:",",HUF:","},l={US:"USD",CA:"CAD",MX:"MXN",BR:"BRL",AR:"ARS",CL:"CLP",CO:"COP",PE:"PEN",GB:"GBP",DE:"EUR",FR:"EUR",IT:"EUR",ES:"EUR",NL:"EUR",BE:"EUR",AT:"EUR",PT:"EUR",IE:"EUR",GR:"EUR",FI:"EUR",CH:"CHF",NO:"NOK",SE:"SEK",DK:"DKK",PL:"PLN",CZ:"CZK",HU:"HUF",RO:"RON",RU:"RUB",UA:"UAH",TR:"TRY",IL:"ILS",SA:"SAR",AE:"AED",EG:"EGP",CN:"CNY",JP:"JPY",KR:"KRW",IN:"INR",ID:"IDR",TH:"THB",VN:"VND",MY:"MYR",SG:"SGD",PH:"PHP",PK:"PKR",BD:"BDT",HK:"HKD",TW:"TWD",AU:"AUD",NZ:"NZD",ZA:"ZAR",NG:"NGN",KE:"KES",QA:"QAR",KW:"KWD",OM:"OMR",BH:"BHD"},h=new Set(["JPY","KRW","IDR","VND","CLP","PYG","UGX"]);function c(e,t){if(!e||!t)return e;const s=function(e){return l[e.toUpperCase()]||"USD"}(t);return e.replace(/\{\{AMOUNT:(\d+(?:\.\d+)?)\}\}/g,(e,t)=>{const n=parseFloat(t);return isNaN(n)?e:function(e,t){var s,n,i,l;const c=null!==(s=a[t])&&void 0!==s?s:1,m=null!==(n=o[t])&&void 0!==n?n:t+" ",u=null!==(i=r[t])&&void 0!==i?i:",",g=null!==(l=d[t])&&void 0!==l?l:".",p=h.has(t),y=e*c,b=p?Math.round(y):Math.round(100*y)/100,f=Math.floor(b).toString().replace(/\B(?=(\d{3})+(?!\d))/g,u);return p?`${m}${f}`:`${m}${f}${g}${(b%1).toFixed(2).slice(2)}`}(n,s)})}class m extends t{constructor(e,t){super(),this.simulationData=null,this.displayedMessages=[],this.currentMessageIndex=0,this.isRunning=!1,this.isPaused=!1,this.intervalId=null,this.pollingId=null,this.burstPhase=!0,this.totalToShow=1/0,this.virtualLastTimestamp=null,this.realLastTimestamp=null,this.lastTimestamp=null,this.lastDelayMs=0,this.userId="",this.config=e,this.apiClient=t,this.pollingIntervalMs="number"==typeof e.pollingInterval&&e.pollingInterval>0?e.pollingInterval:6e3}async initialize(){try{const e=this.config.language||"en",t=(this.config.country||"US").toUpperCase(),s=this.getPersistedUserId(),n=s||this.config.userId||this.generateUserId();this.userId=n,s||this.persistUserId(n);const i=await this.apiClient.getSimulationData(this.config.projectId,n,e,t);if(!i.success||!i.data)throw new Error("Failed to load simulation data");this.simulationData=i.data;const a=this.simulationData.project.initialBurstCount+this.simulationData.project.continuousCount;this.totalToShow=Math.min(a,this.simulationData.messages.length);const o=this.loadProgress();o&&"number"==typeof o.index?(this.currentMessageIndex=o.index,o.lastTimestamp&&(this.virtualLastTimestamp=new Date(o.lastTimestamp),this.lastTimestamp=new Date(o.lastTimestamp))):(this.currentMessageIndex=0,this.virtualLastTimestamp=null,this.lastTimestamp=null),this.realLastTimestamp=null,await this.loadExistingMessages(),await this.reconstructVirtualHistoryForDisplay(),this.emit("initialized",this.simulationData),this.startPolling(),!1!==this.config.autoStart&&this.start()}catch(e){throw this.emit("error",e),e}}start(){this.simulationData&&!this.isRunning&&(this.isRunning=!0,this.isPaused=!1,this.burstPhase=!0,this.emit("simulationStart"),this.performInitialBurst(),this.currentMessageIndex<this.totalToShow?(this.burstPhase=!1,this.scheduleNextMessage()):(this.isRunning=!1,this.emit("simulationEnd")))}performInitialBurst(){if(!this.simulationData)return;const{project:e,messages:t}=this.simulationData,s=e.initialBurstCount,n=Math.min(s,this.totalToShow,t.length);if(this.currentMessageIndex>=n)return;if(this.displayedMessages.some(e=>e.id.startsWith("sim-"))&&this.currentMessageIndex>0)return;const i=new Date,a=new Array(n);let o=new Date(i);for(let e=n-1;e>=0;e--)if(a[e]=new Date(o),e>0){const e=10+Math.floor(11*Math.random());o=new Date(o.getTime()-60*e*1e3)}const r=[],d=(this.config.country||"US").toUpperCase();let l=!1;for(let e=this.currentMessageIndex;e<n;e++){const s=t[e],n=c(s.content,d);if(s.hasScreenshot&&s.screenshotUrl){const t={id:`sim-${e}-text-${Date.now()}`,content:n,messageType:"text",timestamp:a[e],isOwnMessage:!1,virtualUser:s.virtualUser};this.displayedMessages.push(t),r.push(t);const i=new Date(a[e].getTime()+2e3),o={id:`sim-${e}-image-${Date.now()}`,content:this.resolveImageUrl(s.screenshotUrl),messageType:"image",timestamp:i,isOwnMessage:!1,virtualUser:s.virtualUser};this.displayedMessages.push(o),r.push(o)}else if("audio"===s.messageType){const t={id:`sim-${e}-audio-${Date.now()}`,content:"",messageType:"audio",audioUrl:this.resolveImageUrl(s.audioUrl||""),timestamp:a[e],isOwnMessage:!1,virtualUser:s.virtualUser};this.displayedMessages.push(t),r.push(t)}else{const t={id:`sim-${e}-${Date.now()}`,content:n,messageType:s.messageType,timestamp:a[e],isOwnMessage:!1,virtualUser:s.virtualUser};this.displayedMessages.push(t),r.push(t)}this.currentMessageIndex=e+1,l=!0}l&&(this.lastTimestamp=a[n-1],this.virtualLastTimestamp=this.lastTimestamp,this.displayedMessages.sort((e,t)=>e.timestamp.getTime()-t.timestamp.getTime()),this.emit("messages-batch",r)),this.saveProgress()}pause(){this.isRunning&&(this.isPaused=!0,this.intervalId&&(clearTimeout(this.intervalId),this.intervalId=null),this.emit("simulationPause"))}resume(){this.isRunning&&this.isPaused&&(this.isPaused=!1,this.scheduleNextMessage(),this.emit("simulationResume"))}stop(){this.isRunning=!1,this.isPaused=!1,this.intervalId&&(clearTimeout(this.intervalId),this.intervalId=null),this.emit("simulationStop")}destroy(){this.stop(),this.stopPolling(),this.removeAllListeners()}scheduleNextMessage(){if(!this.simulationData||!this.isRunning||this.isPaused)return;const{project:e,messages:t}=this.simulationData;if(this.currentMessageIndex>=this.totalToShow)return this.isRunning=!1,void this.emit("simulationEnd");let s;if(this.burstPhase){const n=Math.min(e.initialBurstCount,t.length);this.currentMessageIndex<n?s=500+1e3*Math.random():(this.burstPhase=!1,s=this.getRandomInterval(e.messageIntervalMin,e.messageIntervalMax))}else{const n=Math.min(e.initialBurstCount,t.length);s=this.currentMessageIndex-n<5?1e3*(e.initialMessageInterval||10):this.getRandomInterval(e.messageIntervalMin,e.messageIntervalMax)}this.lastDelayMs=s,this.intervalId=setTimeout(()=>{this.displayNextMessage(),this.scheduleNextMessage()},s)}displayNextMessage(){if(!this.simulationData||this.currentMessageIndex>=this.simulationData.messages.length)return;const e=this.simulationData.messages[this.currentMessageIndex],t=(this.config.country||"US").toUpperCase(),s=c(e.content,t),n=this.lastTimestamp||new Date,i=new Date(n.getTime()+(this.lastDelayMs||0));if(this.lastTimestamp=i,e.hasScreenshot&&e.screenshotUrl){const t={id:`sim-${this.currentMessageIndex}-text-${Date.now()}`,content:s,messageType:"text",timestamp:i,isOwnMessage:!1,virtualUser:e.virtualUser};this.displayedMessages.push(t),this.emit("message",t);const n=new Date(i.getTime()+2e3),a={id:`sim-${this.currentMessageIndex}-image-${Date.now()}`,content:this.resolveImageUrl(e.screenshotUrl),messageType:"image",timestamp:n,isOwnMessage:!1,virtualUser:e.virtualUser};this.displayedMessages.push(a),this.lastTimestamp=n,setTimeout(()=>{this.emit("message",a)},2e3)}else if("audio"===e.messageType){const t={id:`sim-${this.currentMessageIndex}-audio-${Date.now()}`,content:"",messageType:"audio",audioUrl:this.resolveImageUrl(e.audioUrl||""),timestamp:i,isOwnMessage:!1,virtualUser:e.virtualUser};this.displayedMessages.push(t),this.emit("message",t)}else{const t={id:`sim-${this.currentMessageIndex}-${Date.now()}`,content:s,messageType:e.messageType,timestamp:i,isOwnMessage:!1,virtualUser:e.virtualUser};this.displayedMessages.push(t),this.emit("message",t)}this.currentMessageIndex++,this.saveProgress()}async loadExistingMessages(){if(this.simulationData)try{const e=this.userId||this.config.userId||this.generateUserId(),t=await this.apiClient.getSimulationMessages(this.config.projectId,e,void 0,100);if(t.success&&t.messages&&t.messages.length>0){const s=t.messages.sort((e,t)=>new Date(e.createdAt||e.timestamp).getTime()-new Date(t.createdAt||t.timestamp).getTime()),n=new Set(this.displayedMessages.map(e=>e.id));for(const t of s){if(n.has(t.id))continue;const s=(this.config.country||"US").toUpperCase(),i={id:t.id,content:c(t.content||"",s),messageType:t.messageType,timestamp:new Date(t.createdAt||t.timestamp),isOwnMessage:t.userId===e,virtualUser:t.virtualUser,user:t.userId===e?{id:e,username:this.config.username||"You"}:void 0};this.displayedMessages.push(i)}if(s.length>0){const e=s[s.length-1];this.realLastTimestamp=new Date(e.createdAt||e.timestamp)}this.displayedMessages.length>0&&this.emit("messages-batch",[...this.displayedMessages])}}catch(e){console.warn("Failed to load existing messages:",e)}}startPolling(){this.pollingId&&(clearInterval(this.pollingId),this.pollingId=null),this.pollingId=setInterval(async()=>{await this.pollForNewMessages()},this.pollingIntervalMs)}stopPolling(){this.pollingId&&(clearInterval(this.pollingId),this.pollingId=null)}setPollingInterval(e){!e||e<=0||(this.pollingIntervalMs=e,this.pollingId&&this.startPolling())}get isPolling(){return!!this.pollingId}async pollForNewMessages(){if(this.simulationData)try{const e=this.userId||this.config.userId||this.generateUserId(),t=this.getLastMessageTimestamp(),s=await this.apiClient.getSimulationMessages(this.config.projectId,e,t);if(s.success&&s.messages&&s.messages.length>0){const t=new Set(this.displayedMessages.map(e=>e.id));let n=null;for(const i of s.messages){if(t.has(i.id))continue;const s=new Date(i.createdAt),a=(this.config.country||"US").toUpperCase(),o={id:i.id,content:c(i.content||"",a),messageType:i.messageType,timestamp:s,isOwnMessage:i.userId===e,virtualUser:i.virtualUser,user:i.userId===e?{id:e,username:this.config.username||"You"}:void 0};(!n||s>n)&&(n=s),this.displayedMessages.push(o),this.emit("message",o)}n&&(this.realLastTimestamp=n)}}catch(e){console.warn("Polling error:",e)}}async reconstructVirtualHistoryForDisplay(){if(!this.simulationData)return;const e=Math.min(this.currentMessageIndex,this.totalToShow,this.simulationData.messages.length);if(e<=0)return;const t=this.loadProgress(),s=(null==t?void 0:t.virtualMessages)||[];if(s.length>0){const e=[],t=new Set(this.displayedMessages.map(e=>e.id)),n=(this.config.country||"US").toUpperCase();for(const i of s)if(!t.has(i.id)){if("image"===i.messageType){const e=i.content||"";if(!e.startsWith("http")&&!e.startsWith("/uploads")&&!e.startsWith("/api"))continue}const t={id:i.id,content:"image"===i.messageType?this.resolveImageUrl(c(i.content||"",n)):"audio"===i.messageType?"":c(i.content||"",n),messageType:i.messageType,audioUrl:"audio"===i.messageType?this.resolveImageUrl(i.audioUrl||i.content||""):void 0,timestamp:new Date(i.timestamp),isOwnMessage:!1,virtualUser:i.virtualUser};e.push(t)}if(e.length>0){this.displayedMessages.push(...e),this.displayedMessages.sort((e,t)=>e.timestamp.getTime()-t.timestamp.getTime());const t=e[e.length-1];this.virtualLastTimestamp=t.timestamp,this.lastTimestamp=t.timestamp,this.emit("messages-batch",e)}return}const n=new Date,i=new Array(e);let a=new Date(n);for(let t=e-1;t>=0;t--)if(i[t]=new Date(a),t>0){const e=10+Math.floor(11*Math.random());a=new Date(a.getTime()-60*e*1e3)}const o=[],{messages:r}=this.simulationData,d=(this.config.country||"US").toUpperCase();for(let t=0;t<e;t++){const e=r[t],s=i[t],n=c(e.content,d);if(e.hasScreenshot&&e.screenshotUrl){const i={id:`sim-${t}-text`,content:n,messageType:"text",timestamp:s,isOwnMessage:!1,virtualUser:e.virtualUser},a={id:`sim-${t}-image`,content:this.resolveImageUrl(e.screenshotUrl),messageType:"image",timestamp:new Date(s.getTime()+2e3),isOwnMessage:!1,virtualUser:e.virtualUser};o.push(i,a)}else{const i={id:`sim-${t}`,content:n,messageType:e.messageType,timestamp:s,isOwnMessage:!1,virtualUser:e.virtualUser};o.push(i)}}const l=new Set(this.displayedMessages.map(e=>e.id)),h=o.filter(e=>!l.has(e.id));if(0===h.length)return;this.displayedMessages.push(...h),this.displayedMessages.sort((e,t)=>e.timestamp.getTime()-t.timestamp.getTime());const m=h[h.length-1];this.virtualLastTimestamp=m.timestamp,this.lastTimestamp=m.timestamp,this.emit("messages-batch",h)}getLastMessageTimestamp(){if(this.realLastTimestamp)return this.realLastTimestamp.toISOString()}getUserKey(){return`vcs:user:${this.config.projectId}`}getProgressKey(){const e=this.userId||this.config.userId||"anon";return`vcs:progress:${this.config.projectId}:${e}`}getPersistedUserId(){try{return"undefined"==typeof window?null:window.localStorage.getItem(this.getUserKey())}catch(e){return null}}persistUserId(e){try{if("undefined"==typeof window)return;window.localStorage.setItem(this.getUserKey(),e)}catch(e){}}loadProgress(){try{if("undefined"==typeof window)return null;const e=window.localStorage.getItem(this.getProgressKey());return e?JSON.parse(e):null}catch(e){return null}}saveProgress(){try{if("undefined"==typeof window)return;const e=this.displayedMessages.filter(e=>e.id.startsWith("sim-")).map(e=>({id:e.id,content:e.content,messageType:e.messageType,timestamp:e.timestamp.toISOString(),virtualUser:e.virtualUser})),t={index:this.currentMessageIndex,lastTimestamp:this.lastTimestamp?this.lastTimestamp.toISOString():void 0,virtualMessages:e};window.localStorage.setItem(this.getProgressKey(),JSON.stringify(t))}catch(e){}}clearProgress(){try{if("undefined"==typeof window)return;window.localStorage.removeItem(this.getProgressKey())}catch(e){}}clearCachedProgress(){this.clearProgress()}resolveImageUrl(e){if(!e)return"";if(e.startsWith("http://")||e.startsWith("https://"))return e;const t=(this.config.apiBaseUrl||"").replace(/\/$/,"");return t?`${t}${e}`:e}getRandomInterval(e,t){return 1e3*(e+Math.random()*(t-e))}generateUserId(){return`user-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}get messages(){return[...this.displayedMessages]}get isSimulationRunning(){return this.isRunning}get isSimulationPaused(){return this.isPaused}get data(){return this.simulationData}async sendMessage(e,t="text"){if(!this.simulationData)throw new Error("Simulation not initialized");const s=this.userId||this.config.userId||this.generateUserId(),n=this.config.username||"User";try{if("image"===t||"string"==typeof e&&e.startsWith("data:image/"))return;await Promise.all([this.apiClient.sendUserMessage(this.config.projectId,s,n,e,t),this.apiClient.triggerAIReply(this.config.projectId,s,n,e,t)])}catch(e){throw this.emit("error",e),e}}}class u{constructor(e){this.baseUrl=e.apiBaseUrl||window.location.origin,this.token=e.token}async request(t,s={}){const n=`${this.baseUrl}${t}`,i={"Content-Type":"application/json",...s.headers};this.token&&(i.Authorization=`Bearer ${this.token}`);try{const t=await fetch(n,{...s,headers:i,credentials:"include"});if(!t.ok)throw new e(`API request failed: ${t.status} ${t.statusText}`,"API_ERROR",{status:t.status,statusText:t.statusText});const a=await t.json();if(!a.success&&a.error)throw new e(a.error,"API_ERROR",a);return a}catch(t){if(t instanceof e)throw t;throw new e(`Network error: ${t.message}`,"NETWORK_ERROR",t)}}async getProject(e){return this.request(`/api/projects/${e}`)}async getTemplate(e,t,s){const n=new URLSearchParams;t&&n.set("lang",t),s&&n.set("country",s);const i=n.toString()?`?${n.toString()}`:"";return this.request(`/api/templates/${e}${i}`)}async getProjectTemplates(e){return this.request(`/api/projects/${e}/templates`)}async sendMessage(e,t,s,n="text"){return this.request("/api/chat/message",{method:"POST",body:JSON.stringify({projectId:e,userId:t,content:s,messageType:n})})}async joinProject(e,t,s){return this.request("/api/chat/join",{method:"POST",body:JSON.stringify({projectId:e,userId:t,username:s})})}async leaveProject(e,t){return this.request("/api/chat/leave",{method:"POST",body:JSON.stringify({projectId:e,userId:t})})}async getSimulationData(e,t,s,n){const i=new URLSearchParams({userId:t});return s&&i.append("lang",s),n&&i.append("country",n),this.request(`/api/chat/simulation/${e}?${i.toString()}`)}async getSimulationMessages(e,t,s,n){const i=new URLSearchParams({userId:t});return s&&i.append("since",s),n&&i.append("limit",n.toString()),this.request(`/api/chat/simulation/${e}/messages?${i.toString()}`)}async sendUserMessage(e,t,s,n,i="text"){return this.request("/api/chat/send",{method:"POST",body:JSON.stringify({projectId:e,userId:t,username:s,content:n,messageType:i})})}async triggerAIReply(e,t,s,n,i="text"){return this.request("/api/chat/ai-reply",{method:"POST",body:JSON.stringify({projectId:e,userId:t,username:s,content:n,messageType:i})})}setToken(e){this.token=e}setBaseUrl(e){this.baseUrl=e}}const g={en:{joinChat:"Join Chat",chatGroup:"{name} Group",online:"{count} online",inputPlaceholder:"Type a message...",send:"Send",messages:"messages",today:"Today",yesterday:"Yesterday",networkError:"Network error",sendFailed:"Failed to send"},zh:{joinChat:"加入群聊",chatGroup:"{name}交流群",online:"{count} 人在线",inputPlaceholder:"输入消息...",send:"发送",messages:"条消息",today:"今天",yesterday:"昨天",networkError:"网络错误",sendFailed:"发送失败"},"zh-TW":{joinChat:"加入群聊",chatGroup:"{name}交流群",online:"{count} 人在線",inputPlaceholder:"輸入訊息...",send:"發送",messages:"條訊息",today:"今天",yesterday:"昨天",networkError:"網路錯誤",sendFailed:"發送失敗"},es:{joinChat:"Unirse al Chat",chatGroup:"Grupo {name}",online:"{count} en línea",inputPlaceholder:"Escribe un mensaje...",send:"Enviar",messages:"mensajes",today:"Hoy",yesterday:"Ayer",networkError:"Error de red",sendFailed:"Error al enviar"},hi:{joinChat:"चैट में शामिल हों",chatGroup:"{name} समूह",online:"{count} ऑनलाइन",inputPlaceholder:"संदेश लिखें...",send:"भेजें",messages:"संदेश",today:"आज",yesterday:"कल",networkError:"नेटवर्क त्रुटि",sendFailed:"भेजने में विफल"},ar:{joinChat:"انضم للدردشة",chatGroup:"مجموعة {name}",online:"{count} متصل",inputPlaceholder:"اكتب رسالة...",send:"إرسال",messages:"رسائل",today:"اليوم",yesterday:"أمس",networkError:"خطأ في الشبكة",sendFailed:"فشل الإرسال"},pt:{joinChat:"Entrar no Chat",chatGroup:"Grupo {name}",online:"{count} online",inputPlaceholder:"Digite uma mensagem...",send:"Enviar",messages:"mensagens",today:"Hoje",yesterday:"Ontem",networkError:"Erro de rede",sendFailed:"Falha ao enviar"},bn:{joinChat:"চ্যাটে যোগ দিন",chatGroup:"{name} গ্রুপ",online:"{count} অনলাইন",inputPlaceholder:"একটি বার্তা লিখুন...",send:"পাঠান",messages:"বার্তা",today:"আজ",yesterday:"গতকাল",networkError:"নেটওয়ার্ক ত্রুটি",sendFailed:"পাঠাতে ব্যর্থ"},ru:{joinChat:"Присоединиться",chatGroup:"Группа {name}",online:"{count} онлайн",inputPlaceholder:"Введите сообщение...",send:"Отправить",messages:"сообщений",today:"Сегодня",yesterday:"Вчера",networkError:"Ошибка сети",sendFailed:"Не удалось отправить"},ja:{joinChat:"チャットに参加",chatGroup:"{name}グループ",online:"{count} オンライン",inputPlaceholder:"メッセージを入力...",send:"送信",messages:"メッセージ",today:"今日",yesterday:"昨日",networkError:"ネットワークエラー",sendFailed:"送信失敗"},de:{joinChat:"Chat beitreten",chatGroup:"{name} Gruppe",online:"{count} online",inputPlaceholder:"Nachricht eingeben...",send:"Senden",messages:"Nachrichten",today:"Heute",yesterday:"Gestern",networkError:"Netzwerkfehler",sendFailed:"Senden fehlgeschlagen"},fr:{joinChat:"Rejoindre le Chat",chatGroup:"Groupe {name}",online:"{count} en ligne",inputPlaceholder:"Tapez un message...",send:"Envoyer",messages:"messages",today:"Aujourd'hui",yesterday:"Hier",networkError:"Erreur réseau",sendFailed:"Échec de l'envoi"},ko:{joinChat:"채팅 참여",chatGroup:"{name} 그룹",online:"{count} 온라인",inputPlaceholder:"메시지 입력...",send:"전송",messages:"메시지",today:"오늘",yesterday:"어제",networkError:"네트워크 오류",sendFailed:"전송 실패"},it:{joinChat:"Unisciti alla Chat",chatGroup:"Gruppo {name}",online:"{count} online",inputPlaceholder:"Scrivi un messaggio...",send:"Invia",messages:"messaggi",today:"Oggi",yesterday:"Ieri",networkError:"Errore di rete",sendFailed:"Invio fallito"},tr:{joinChat:"Sohbete Katıl",chatGroup:"{name} Grubu",online:"{count} çevrimiçi",inputPlaceholder:"Bir mesaj yazın...",send:"Gönder",messages:"mesaj",today:"Bugün",yesterday:"Dün",networkError:"Ağ hatası",sendFailed:"Gönderilemedi"},vi:{joinChat:"Tham gia Chat",chatGroup:"Nhóm {name}",online:"{count} trực tuyến",inputPlaceholder:"Nhập tin nhắn...",send:"Gửi",messages:"tin nhắn",today:"Hôm nay",yesterday:"Hôm qua",networkError:"Lỗi mạng",sendFailed:"Gửi thất bại"},pl:{joinChat:"Dołącz do Czatu",chatGroup:"Grupa {name}",online:"{count} online",inputPlaceholder:"Wpisz wiadomość...",send:"Wyślij",messages:"wiadomości",today:"Dziś",yesterday:"Wczoraj",networkError:"Błąd sieci",sendFailed:"Nie udało się wysłać"},th:{joinChat:"เข้าร่วมแชท",chatGroup:"กลุ่ม {name}",online:"{count} ออนไลน์",inputPlaceholder:"พิมพ์ข้อความ...",send:"ส่ง",messages:"ข้อความ",today:"วันนี้",yesterday:"เมื่อวาน",networkError:"ข้อผิดพลาดเครือข่าย",sendFailed:"ส่งไม่สำเร็จ"},nl:{joinChat:"Deelnemen aan Chat",chatGroup:"{name} Groep",online:"{count} online",inputPlaceholder:"Typ een bericht...",send:"Verzenden",messages:"berichten",today:"Vandaag",yesterday:"Gisteren",networkError:"Netwerkfout",sendFailed:"Verzenden mislukt"},id:{joinChat:"Gabung Chat",chatGroup:"Grup {name}",online:"{count} online",inputPlaceholder:"Ketik pesan...",send:"Kirim",messages:"pesan",today:"Hari ini",yesterday:"Kemarin",networkError:"Kesalahan jaringan",sendFailed:"Gagal mengirim"},ms:{joinChat:"Sertai Chat",chatGroup:"Kumpulan {name}",online:"{count} dalam talian",inputPlaceholder:"Taip mesej...",send:"Hantar",messages:"mesej",today:"Hari ini",yesterday:"Semalam",networkError:"Ralat rangkaian",sendFailed:"Gagal menghantar"},ur:{joinChat:"چیٹ میں شامل ہوں",chatGroup:"{name} گروپ",online:"{count} آن لائن",inputPlaceholder:"پیغام ٹائپ کریں...",send:"بھیجیں",messages:"پیغامات",today:"آج",yesterday:"کل",networkError:"نیٹ ورک کی خرابی",sendFailed:"بھیجنے میں ناکام"},te:{joinChat:"చాట్‌లో చేరండి",chatGroup:"{name} సమూహం",online:"{count} ఆన్‌లైన్",inputPlaceholder:"సందేశాన్ని టైప్ చేయండి...",send:"పంపండి",messages:"సందేశాలు",today:"నేడు",yesterday:"నిన్న",networkError:"నెట్‌వర్క్ లోపం",sendFailed:"పంపడం విఫలమైంది"},mr:{joinChat:"चॅटमध्ये सामील व्हा",chatGroup:"{name} गट",online:"{count} ऑनलाइन",inputPlaceholder:"संदेश टाइप करा...",send:"पाठवा",messages:"संदेश",today:"आज",yesterday:"काल",networkError:"नेटवर्क त्रुटी",sendFailed:"पाठविण्यात अयशस्वी"},ta:{joinChat:"அரட்டையில் சேரவும்",chatGroup:"{name} குழு",online:"{count} ஆன்லைன்",inputPlaceholder:"ஒரு செய்தியை தட்டச்சு செய்யவும்...",send:"அனுப்பு",messages:"செய்திகள்",today:"இன்று",yesterday:"நேற்று",networkError:"நெட்வொர்க் பிழை",sendFailed:"அனுப்ப முடியவில்லை"},fa:{joinChat:"پیوستن به چت",chatGroup:"گروه {name}",online:"{count} آنلاین",inputPlaceholder:"پیامی تایپ کنید...",send:"ارسال",messages:"پیام‌ها",today:"امروز",yesterday:"دیروز",networkError:"خطای شبکه",sendFailed:"ارسال نشد"},uk:{joinChat:"Приєднатися до чату",chatGroup:"Група {name}",online:"{count} онлайн",inputPlaceholder:"Введіть повідомлення...",send:"Надіслати",messages:"повідомлень",today:"Сьогодні",yesterday:"Вчора",networkError:"Помилка мережі",sendFailed:"Не вдалося надіслати"},gu:{joinChat:"ચેટમાં જોડાઓ",chatGroup:"{name} જૂથ",online:"{count} ઓનલાઇન",inputPlaceholder:"સંદેશ લખો...",send:"મોકલો",messages:"સંદેશાઓ",today:"આજે",yesterday:"ગઈકાલે",networkError:"નેટવર્ક ભૂલ",sendFailed:"મોકલવામાં નિષ્ફળ"},ro:{joinChat:"Alătură-te chatului",chatGroup:"Grupul {name}",online:"{count} online",inputPlaceholder:"Scrie un mesaj...",send:"Trimite",messages:"mesaje",today:"Astăzi",yesterday:"Ieri",networkError:"Eroare de rețea",sendFailed:"Trimitere eșuată"},sv:{joinChat:"Gå med i chatt",chatGroup:"{name} grupp",online:"{count} online",inputPlaceholder:"Skriv ett meddelande...",send:"Skicka",messages:"meddelanden",today:"Idag",yesterday:"Igår",networkError:"Nätverksfel",sendFailed:"Det gick inte att skicka"},hu:{joinChat:"Csatlakozás a chathez",chatGroup:"{name} Csoport",online:"{count} online",inputPlaceholder:"Írjon egy üzenetet...",send:"Küldés",messages:"üzenet",today:"Ma",yesterday:"Tegnap",networkError:"Hálózati hiba",sendFailed:"Küldés sikertelen"},cs:{joinChat:"Připojit se k chatu",chatGroup:"Skupina {name}",online:"{count} online",inputPlaceholder:"Napište zprávu...",send:"Odeslat",messages:"zpráv",today:"Dnes",yesterday:"Včera",networkError:"Chyba sítě",sendFailed:"Odeslání selhalo"},el:{joinChat:"Εγγραφή στο Chat",chatGroup:"Ομάδα {name}",online:"{count} online",inputPlaceholder:"Πληκτρολογήστε ένα μήνυμα...",send:"Αποστολή",messages:"μηνύματα",today:"Σήμερα",yesterday:"Χθες",networkError:"Σφάλμα δικτύου",sendFailed:"Αποτυχία αποστολής"},da:{joinChat:"Deltag i chat",chatGroup:"{name} Gruppe",online:"{count} online",inputPlaceholder:"Skriv en besked...",send:"Send",messages:"beskeder",today:"I dag",yesterday:"I går",networkError:"Netværksfejl",sendFailed:"Kunne ikke sende"},fi:{joinChat:"Liity chattiin",chatGroup:"{name} Ryhmä",online:"{count} paikalla",inputPlaceholder:"Kirjoita viesti...",send:"Lähetä",messages:"viestiä",today:"Tänään",yesterday:"Eilen",networkError:"Verkkovirhe",sendFailed:"Lähetys epäonnistui"},no:{joinChat:"Bli med i chat",chatGroup:"{name} Gruppe",online:"{count} pålogget",inputPlaceholder:"Skriv en melding...",send:"Send",messages:"meldinger",today:"I dag",yesterday:"I går",networkError:"Nettverksfeil",sendFailed:"Sending mislyktes"},he:{joinChat:"הצטרף לצ'אט",chatGroup:"קבוצת {name}",online:"{count} מחוברים",inputPlaceholder:"הקלד הודעה...",send:"שלח",messages:"הודעות",today:"היום",yesterday:"אתמול",networkError:"שגיאת רשת",sendFailed:"השליחה נכשלה"},tl:{joinChat:"Sumali sa Chat",chatGroup:"Grupong {name}",online:"{count} online",inputPlaceholder:"Mag-type ng mensahe...",send:"Ipadala",messages:"mga mensahe",today:"Ngayon",yesterday:"Kahapon",networkError:"Error sa network",sendFailed:"Nabigong ipadala"},sw:{joinChat:"Jiunge na Gumzo",chatGroup:"Kundi la {name}",online:"{count} mtandaoni",inputPlaceholder:"Andika ujumbe...",send:"Tuma",messages:"jumbe",today:"Leo",yesterday:"Jana",networkError:"Tatizo la mtandao",sendFailed:"Imeshindwa kutuma"},"pt-BR":{joinChat:"Entrar no Chat",chatGroup:"Grupo {name}",online:"{count} online",inputPlaceholder:"Escreva uma mensagem...",send:"Enviar",messages:"mensagens",today:"Hoje",yesterday:"Ontem",networkError:"Erro de rede",sendFailed:"Falha ao enviar"}};function p(e){if(g[e])return g[e];const t=e.split("-")[0];return g[t]?g[t]:g.en}function y(e,t){return e.replace(/\{(\w+)\}/g,(e,s)=>void 0!==t[s]?String(t[s]):e)}class b extends t{constructor(e){var t,s;super(),this.emojiPanelOpen=!1,this.onlineCount=0,this.currentTheme="whatsapp",this.isDarkMode=!1,this.customColors={},this.visibleStartIndex=0,this.hasInitializedData=!1,this.pollingStopTimer=null,this.currentAudio=null,this.currentVoiceContainer=null,this.config={...e,mode:e.mode||"floating"},this.t=p(e.language||"en"),this.currentTheme="telegram"===e.uiTemplate?"telegram":"whatsapp",this.isDarkMode="dark"===e.theme,this.customColors={primary:e.primaryColor,background:e.backgroundColor},this.onlineCount=500+Math.floor(301*Math.random()),this.initialRenderCount=null!==(t=this.config.initialRenderCount)&&void 0!==t?t:Number.MAX_SAFE_INTEGER,this.lazyLoadBatchSize=null!==(s=this.config.lazyLoadBatchSize)&&void 0!==s?s:20,this.state={isInitialized:!1,isOpen:!1,isJoined:!1,isConnected:!1,isSimulationRunning:!1,isSimulationPaused:!1,messages:[],virtualUsers:[],realUsers:[],typingUsers:[],simulationEnded:!1,displayedMessageCount:0,unreadCount:0,lastReadMessageId:null},this.apiClient=new u(e),this.simulator=new m(e,this.apiClient),this.setupSimulatorEvents(),this.init()}init(){try{this.setupContainer(),this.createWidget(),"floating"===this.config.mode&&(this.widgetElement.style.display="none",this.createFloatingButton()),this.setupEventListeners(),this.setupImageViewer(),this.state.isInitialized=!0,this.emit("ready")}catch(t){this.emit("error",new e("Failed to initialize chat widget","WIDGET_INIT_ERROR",t))}}setupSimulatorEvents(){this.simulator.on("initialized",e=>{var t;this.state.currentProject=e.project,this.state.currentTemplate=e.template,null!=this.config.initialRenderCount?this.initialRenderCount=this.config.initialRenderCount:this.initialRenderCount=Number.MAX_SAFE_INTEGER,this.setTitle((null===(t=e.project)||void 0===t?void 0:t.name)||"Chat",`0 ${this.t.messages}`),this.setLoading(!1),this.emit("simulationInitialized",e)}),this.simulator.on("message",e=>{var t;this.setLoading(!1),this.addMessage(e),this.state.displayedMessageCount++;const s=(null===(t=this.state.currentProject)||void 0===t?void 0:t.name)||"Chat";this.setTitle(s,`${this.state.displayedMessageCount} ${this.t.messages}`)}),this.simulator.on("messages-batch",e=>{var t;this.setLoading(!1),this.addMessagesBulk(e),this.state.displayedMessageCount+=e.length;const s=(null===(t=this.state.currentProject)||void 0===t?void 0:t.name)||"Chat";this.setTitle(s,`${this.state.displayedMessageCount} ${this.t.messages}`),setTimeout(()=>{this.scrollToBottom(!0)},100)}),this.simulator.on("simulationStart",()=>{var e,t;this.state.isSimulationRunning=!0,this.state.isSimulationPaused=!1,null===(t=(e=this.config).onSimulationStart)||void 0===t||t.call(e)}),this.simulator.on("simulationEnd",()=>{var e,t;this.state.isSimulationRunning=!1,this.state.simulationEnded=!0,null===(t=(e=this.config).onSimulationEnd)||void 0===t||t.call(e)}),this.simulator.on("simulationPause",()=>{this.state.isSimulationPaused=!0}),this.simulator.on("simulationResume",()=>{this.state.isSimulationPaused=!1}),this.simulator.on("error",e=>{this.emit("error",e)})}async initializeSimulation(){try{await this.simulator.initialize()}catch(t){this.emit("error",new e("Failed to initialize simulation","SIMULATION_INIT_ERROR",t))}}setupContainer(){var t;const s=function(e){if("string"==typeof e)return document.querySelector(e)||document.body;return e||document.body}(this.config.container);if(!s)throw new e("Container element not found","CONTAINER_NOT_FOUND");const n=null===(t=s.tagName)||void 0===t?void 0:t.toUpperCase();if("BODY"===n||"HTML"===n){const e=document.createElement("div");e.className="chat-sdk-host",e.style.position="static",e.style.width="0",e.style.height="0",document.body.appendChild(e),this.container=e}else this.container=s;this.shadowRoot=this.container.attachShadow({mode:"closed"});const i=this.getDefaultStyles();!function(e,t){const s=document.createElement("style");s.textContent=t,e.appendChild(s)}(this.shadowRoot,i)}createWidget(){var e;if(this.widgetElement&&this.messagesContainer)return;this.widgetElement=s("div","chat-sdk-container");const t="telegram"===this.config.uiTemplate?"telegram":"whatsapp";this.currentTheme=t,this.widgetElement.classList.add(`${t}-theme`),"telegram"===t&&"dark"===this.config.theme&&(this.widgetElement.classList.add("dark"),this.isDarkMode=!0),this.widgetElement.style.position="fixed",this.widgetElement.style.top="0",this.widgetElement.style.left="0",this.widgetElement.style.width="100vw",this.widgetElement.style.height="100vh",this.widgetElement.style.zIndex=String(null!==(e=this.config.zIndex)&&void 0!==e?e:2147483e3),this.widgetElement.innerHTML=`\n <div class="chat-sdk-header">\n <div class="chat-sdk-header-left">\n <div class="chat-sdk-title" id="chat-title"></div>\n <div class="chat-sdk-subtitle" id="chat-subtitle"></div>\n </div>\n <button class="chat-sdk-close-btn" type="button">\n <svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor">\n <path d="M8 7.293l2.146-2.147a.5.5 0 01.708.708L8.707 8l2.147 2.146a.5.5 0 01-.708.708L8 8.707l-2.146 2.147a.5.5 0 01-.708-.708L7.293 8 5.146 5.854a.5.5 0 01.708-.708L8 7.293z"/>\n </svg>\n </button>\n </div>\n\n <div class="chat-sdk-messages" id="messages-container">\n <div class="chat-sdk-loading">\n <div class="chat-sdk-spinner"></div>\n Loading chat...\n </div>\n </div>\n\n <div class="chat-sdk-input-area">\n <button class="chat-sdk-icon-btn chat-sdk-emoji-btn" type="button" id="emoji-button" aria-label="Emoji">\n <span>😊</span>\n </button>\n <button class="chat-sdk-icon-btn chat-sdk-image-btn" type="button" id="image-button" aria-label="Image">\n <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M21 19V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14h18zM5 5h14v8l-3-3-4 5-3-4-4 4V5z"/></svg>\n </button>\n <textarea\n class="chat-sdk-input"\n placeholder="${this.t.inputPlaceholder}"\n rows="1"\n id="message-input"\n ></textarea>\n <input type="file" accept="image/*" id="image-input" style="display:none" />\n <button class="chat-sdk-send-btn" type="button" id="send-button" disabled>\n <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">\n <path d="M15.854.146a.5.5 0 01.11.54l-5.819 14.547a.75.75 0 01-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 01.124-1.33L15.314.037a.5.5 0 01.54.11z"/>\n </svg>\n </button>\n </div>\n <div class="chat-sdk-emoji-picker" id="emoji-picker" style="display:none">\n <div class="chat-sdk-emoji-grid">\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😀">😀</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😁">😁</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😂">😂</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🤣">🤣</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😊">😊</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😍">😍</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😎">😎</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🤔">🤔</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="👍">👍</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🙏">🙏</button>\n </div>\n </div>\n `,this.messagesContainer=this.widgetElement.querySelector("#messages-container"),this.inputElement=this.widgetElement.querySelector("#message-input"),this.sendButton=this.widgetElement.querySelector("#send-button"),this.emojiButton=this.widgetElement.querySelector("#emoji-button"),this.imageButton=this.widgetElement.querySelector("#image-button"),this.fileInput=this.widgetElement.querySelector("#image-input"),this.emojiPicker=this.widgetElement.querySelector("#emoji-picker"),this.shadowRoot.appendChild(this.widgetElement)}setupEventListeners(){var e,t,s,n;const i=this.widgetElement.querySelector(".chat-sdk-close-btn");null==i||i.addEventListener("click",()=>this.close()),this.messagesContainer.addEventListener("scroll",this.handleScrollLazyLoad.bind(this)),this.inputElement.addEventListener("input",this.handleInputChange.bind(this)),this.inputElement.addEventListener("keydown",this.handleKeyDown.bind(this)),this.sendButton.addEventListener("click",this.handleSendMessage.bind(this)),this.inputElement.addEventListener("input",this.autoResizeTextarea.bind(this)),null===(e=this.emojiButton)||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.toggleEmojiPicker(!this.emojiPanelOpen)}),null===(t=this.emojiPicker)||void 0===t||t.addEventListener("click",e=>{const t=e.target.closest(".chat-sdk-emoji-item");if(t&&t.hasAttribute("data-emoji")){const e=t.getAttribute("data-emoji")||"";this.insertEmojiAtCursor(e),this.toggleEmojiPicker(!1)}}),this.shadowRoot.addEventListener("click",e=>{const t=e.target,s=t.closest("#emoji-picker"),n=t.closest("#emoji-button");s||n||this.toggleEmojiPicker(!1)}),null===(s=this.imageButton)||void 0===s||s.addEventListener("click",e=>{var t;e.preventDefault(),e.stopPropagation(),null===(t=this.fileInput)||void 0===t||t.click()}),null===(n=this.fileInput)||void 0===n||n.addEventListener("change",this.handleImageSelected.bind(this)),document.addEventListener("keydown",e=>{if("Escape"===e.key){const e=document.querySelector(".chat-sdk-viewer-overlay");if(e)return e.style.opacity="0",void setTimeout(()=>e.remove(),200);this.state.isOpen&&this.close()}})}openImageZoom(e){const t=document.querySelector(".chat-sdk-global-zoom-overlay");t&&t.remove();const s=document.createElement("div");s.className="chat-sdk-global-zoom-overlay",Object.assign(s.style,{position:"fixed",top:"0",left:"0",width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.85)",zIndex:"2147483647",display:"flex",justifyContent:"center",alignItems:"center",cursor:"zoom-out",backdropFilter:"blur(4px)",opacity:"0",transition:"opacity 0.2s ease-in-out"});const n=document.createElement("img");n.src=e,Object.assign(n.style,{maxWidth:"80%",maxHeight:"90%",width:"80%",objectFit:"contain",borderRadius:"8px",boxShadow:"0 4px 20px rgba(0,0,0,0.5)",transform:"scale(0.9)",transition:"transform 0.2s cubic-bezier(0.1, 0.9, 0.2, 1)"}),s.addEventListener("click",()=>{s.style.opacity="0",n.style.transform="scale(0.9)",setTimeout(()=>s.remove(),200)}),s.appendChild(n),document.body.appendChild(s),requestAnimationFrame(()=>{s.style.opacity="1",n.style.transform="scale(1)"})}createFloatingButton(){var e,t,s,n,i,a,o,r,d,l,h;if(!this.shadowRoot)return;const c=this.config.floatingButton||{},m=c.position||"bottom-right",u=String(null!==(t=null!==(e=c.zIndex)&&void 0!==e?e:this.config.zIndex)&&void 0!==t?t:2147483e3),g={top:null===(s=c.offset)||void 0===s?void 0:s.top,right:null===(n=c.offset)||void 0===n?void 0:n.right,bottom:null!==(a=null===(i=c.offset)||void 0===i?void 0:i.bottom)&&void 0!==a?a:20,left:null===(o=c.offset)||void 0===o?void 0:o.left},p=document.createElement("button");p.className="chat-sdk-floating-btn",p.setAttribute("aria-label","Open chat");const y=this.t.joinChat;p.innerHTML=`\n <div style="\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 6px;\n ">\n \x3c!-- Group chat icon (users) --\x3e\n <svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor" style="margin-bottom: 2px;">\n <path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/>\n </svg>\n\n \x3c!-- Text overlay at bottom --\x3e\n <div style="\n font-size: 10px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.95);\n text-align: center;\n line-height: 1.2;\n letter-spacing: 0.3px;\n text-shadow: 0 1px 2px rgba(0,0,0,0.2);\n ">${y}</div>\n\n \x3c!-- Unread badge --\x3e\n <span class="chat-sdk-unread-badge" style="\n position: absolute;\n top: -6px;\n right: -6px;\n background: #ff4444;\n color: white;\n border-radius: 10px;\n min-width: 18px;\n height: 18px;\n display: none;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n border: 2px solid white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.3);\n padding: 0 5px;\n "></span>\n </div>\n `,p.style.position="fixed",p.style.zIndex=u,p.style.width="60px",p.style.height="60px",p.style.borderRadius="50%",p.style.border="none",p.style.cursor="pointer",p.style.display="flex",p.style.alignItems="center",p.style.justifyContent="center",p.style.color="#fff",p.style.boxShadow="0 10px 24px rgba(0,0,0,0.25), inset 0 2px 4px rgba(255,255,255,0.15)",p.style.background="linear-gradient(145deg, #25D366 0%, #128C7E 100%)",p.style.transition="transform .15s ease, box-shadow .15s ease",p.style.overflow="visible",m.includes("bottom")?(p.style.bottom=(null!==(r=g.bottom)&&void 0!==r?r:20)+"px",p.style.top=""):(p.style.top=(null!==(d=g.top)&&void 0!==d?d:20)+"px",p.style.bottom=""),m.includes("right")?(p.style.right=(null!==(l=g.right)&&void 0!==l?l:20)+"px",p.style.left=""):(p.style.left=(null!==(h=g.left)&&void 0!==h?h:20)+"px",p.style.right=""),p.addEventListener("mouseenter",()=>{p.style.transform="scale(1.06)",p.style.boxShadow="0 14px 28px rgba(0,0,0,0.30), inset 0 2px 4px rgba(255,255,255,0.2)"}),p.addEventListener("mouseleave",()=>{p.style.transform="scale(1)",p.style.boxShadow="0 10px 24px rgba(0,0,0,0.25), inset 0 2px 4px rgba(255,255,255,0.15)"}),p.addEventListener("mousedown",()=>{p.style.transform="scale(0.95)"}),p.addEventListener("mouseup",()=>{p.style.transform="scale(1.05)",setTimeout(()=>p.style.transform="scale(1)",100)}),p.addEventListener("click",e=>{e.preventDefault(),this.open()}),this.shadowRoot.appendChild(p),this.floatingButtonEl=p}updateUnreadBadge(){if(!this.floatingButtonEl)return;const e=this.floatingButtonEl.querySelector(".chat-sdk-unread-badge");if(!e)return;const t=this.state.unreadCount;t>0?(e.textContent=t>99?"99+":t.toString(),e.style.display="flex"):e.style.display="none"}markAllAsRead(){if(this.state.messages.length>0){const e=this.state.messages[this.state.messages.length-1];this.state.lastReadMessageId=e.id}this.state.unreadCount=0,this.updateUnreadBadge()}incrementUnreadCount(){this.state.isOpen||(this.state.unreadCount++,this.updateUnreadBadge())}toggleEmojiPicker(e){const t=this.emojiPicker;if(!t)return;const s="boolean"==typeof e?e:"none"===t.style.display;t.style.display=s?"block":"none",this.emojiPanelOpen=s}insertEmojiAtCursor(e){const t=this.inputElement,s=t.selectionStart||0,n=t.selectionEnd||0,i=t.value.substring(0,s),a=t.value.substring(n);t.value=i+e+a;const o=s+e.length;t.setSelectionRange(o,o),t.focus(),this.handleInputChange(),this.autoResizeTextarea()}isEmojiOnly(e){const t=e.trim();if(!t)return!1;if(t.length>6)return!1;let s=!1;for(let e=0;e<t.length;){const n=t.codePointAt(e)||0;if(e+=n>65535?2:1,!(n>=126976))return!1;s=!0}return s}async handleImageSelected(){const t=this.fileInput;if(!t||!t.files||0===t.files.length)return;const s=t.files[0];try{const e=await this.resizeImageFile(s,1280,.85),n={id:`local-img-failed-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,content:e,messageType:"image",timestamp:new Date,isOwnMessage:!0,user:{id:this.config.userId||"me",username:this.config.username||"You"},failed:!0};this.state.messages.push(n),this.renderMessage(n),this.scrollToBottom(!0),t.value=""}catch(t){console.error("Image processing failed",t),this.emit("error",new e("Image processing failed","IMAGE_PROCESS_ERROR",t))}}resizeImageFile(e,t=1280,s=.85){return new Promise((n,i)=>{const a=URL.createObjectURL(e),o=new Image;o.onload=()=>{let{width:e,height:r}=o;const d=Math.min(1,t/Math.max(e,r)),l=document.createElement("canvas");d<1&&(e=Math.round(e*d),r=Math.round(r*d)),l.width=e,l.height=r;const h=l.getContext("2d");if(!h)return URL.revokeObjectURL(a),void i(new Error("Canvas not supported"));h.drawImage(o,0,0,e,r);const c=l.toDataURL("image/jpeg",s);URL.revokeObjectURL(a),n(c)},o.onerror=e=>{URL.revokeObjectURL(a),i(e)},o.src=a})}handleInputChange(){const e=this.inputElement.value.trim().length>0,t=!1!==this.config.enableUserInput&&!1!==this.config.allowInput;this.sendButton.disabled=!e||!t,e&&t&&this.emit("typing")}handleKeyDown(e){"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSendMessage())}async handleSendMessage(){const t=this.inputElement.value.trim();if(!t)return;if(!1===this.config.enableUserInput||!1===this.config.allowInput)return;const s=this.isEmojiOnly(t)?"emoji":"text",n={id:`local-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,content:t,messageType:s,timestamp:new Date,isOwnMessage:!0,user:{id:this.config.userId||"me",username:this.config.username||"You"}};this.state.messages.push(n),this.renderMessage(n),this.scrollToBottom(!0),this.inputElement.value="",this.sendButton.disabled=!0,this.autoResizeTextarea(),this.simulator.sendMessage(t,s).catch(t=>{console.error("Failed to send message:",t),this.emit("error",new e("Failed to send message","SEND_MESSAGE_ERROR",t))})}autoResizeTextarea(){this.inputElement.style.height="auto",this.inputElement.style.height=Math.min(this.inputElement.scrollHeight,100)+"px"}open(){var e;if(this.state.isOpen)return;if(this.hasInitializedData)try{this.simulator.startPolling()}catch(e){}else this.hasInitializedData=!0,this.setLoading(!0),this.initializeSimulation().catch(e=>{console.error("Failed to initialize simulation on open:",e),this.setLoading(!1)});this.pollingStopTimer&&(clearTimeout(this.pollingStopTimer),this.pollingStopTimer=null),this.floatingButtonEl&&(this.floatingButtonEl.style.display="none"),this.widgetElement.style.opacity="0",this.widgetElement.style.display="flex",requestAnimationFrame(()=>{this.widgetElement.style.transition="opacity .2s ease",this.widgetElement.style.opacity="1"}),this.state.isOpen=!0,this.markAllAsRead(),this.emit("open");const t=(null===(e=this.state.currentProject)||void 0===e?void 0:e.name)||"Chat";this.setTitle(t,`${this.state.displayedMessageCount} ${this.t.messages}`),this.scrollToBottom(!0),requestAnimationFrame(()=>this.scrollToBottom(!0)),setTimeout(()=>this.scrollToBottom(!0),0)}close(){this.state.isOpen&&(this.widgetElement.style.transition="opacity .2s ease",this.widgetElement.style.opacity="0",setTimeout(()=>{this.widgetElement.style.display="none",this.floatingButtonEl&&(this.floatingButtonEl.style.display="flex")},200),this.state.isOpen=!1,this.pollingStopTimer&&clearTimeout(this.pollingStopTimer),this.pollingStopTimer=setTimeout(()=>{try{this.simulator.stopPolling()}catch(e){}this.pollingStopTimer=null},1e4),this.emit("close"))}setTitle(e,t){var s,n;const i=null===(s=this.widgetElement)||void 0===s?void 0:s.querySelector("#chat-title"),a=null===(n=this.widgetElement)||void 0===n?void 0:n.querySelector("#chat-subtitle"),o=y(this.t.chatGroup,{name:e||"Chat"});this.currentTheme,i&&(i.textContent=o),a&&(a.textContent=y(this.t.online,{count:this.onlineCount}),a.style.display="block")}buildMessageElement(e,t){const n=s("div","chat-sdk-message");e.isOwnMessage&&n.classList.add("own");const i=!!t&&this.shouldGroupWithPrev(t,e);i&&n.classList.add("grouped");let a=null;e.isOwnMessage||(a=this.createAvatar(e),i&&a&&(a.style.visibility="hidden"));const o=!e.isOwnMessage&&!i,r="whatsapp"===this.currentTheme,d="telegram"===this.currentTheme&&e.isOwnMessage,l=this.createMessageContent(e,o,r,d);return a&&n.appendChild(a),n.appendChild(l),n}shouldGroupWithPrev(e,t){var s,n,i,a,o,r,d;if(!1===this.config.groupMessages)return!1;const l=null!==(s=this.config.groupTimeThresholdSec)&&void 0!==s?s:120,h=e.isOwnMessage===t.isOwnMessage,c=(null===(n=e.virtualUser)||void 0===n?void 0:n.id)&&(null===(i=e.virtualUser)||void 0===i?void 0:i.id)===(null===(a=t.virtualUser)||void 0===a?void 0:a.id),m=(null===(o=e.user)||void 0===o?void 0:o.id)&&(null===(r=e.user)||void 0===r?void 0:r.id)===(null===(d=t.user)||void 0===d?void 0:d.id),u=h&&(c||m||e.isOwnMessage&&t.isOwnMessage),g=Math.abs(t.timestamp.getTime()-e.timestamp.getTime())/1e3;return!!u&&g<=l}handleScrollLazyLoad(){if(this.messagesContainer.scrollTop<=20&&this.visibleStartIndex>0){const e=this.messagesContainer.scrollHeight,t=this.lazyLoadBatchSize,s=Math.max(0,this.visibleStartIndex-t),n=this.state.messages.slice(s,this.visibleStartIndex),i=document.createDocumentFragment();for(const e of n){const t=this.buildMessageElement(e);i.appendChild(t)}this.messagesContainer.insertBefore(i,this.messagesContainer.firstChild),this.visibleStartIndex=s;const a=this.messagesContainer.scrollHeight;this.messagesContainer.scrollTop+=a-e}}setLoading(e){if(e){if(!this.messagesContainer.querySelector(".chat-sdk-loading")){const e=document.createElement("div");e.className="chat-sdk-loading",e.innerHTML='\n <div class="chat-sdk-spinner"></div>\n Loading chat...\n ',this.messagesContainer.appendChild(e)}}else{const e=this.messagesContainer.querySelector(".chat-sdk-loading");null==e||e.remove()}}showJoinOverlay(){const e=s("div","chat-sdk-overlay");e.innerHTML='\n <div class="chat-sdk-join-card">\n <h3 class="chat-sdk-join-title">Join the conversation</h3>\n <p class="chat-sdk-join-description">\n Click below to join this group chat and start interacting with other members.\n </p>\n <button class="chat-sdk-join-btn" type="button">Join Chat</button>\n </div>\n ';const t=e.querySelector(".chat-sdk-join-btn");null==t||t.addEventListener("click",()=>{this.hideJoinOverlay(),this.emit("join-requested")}),this.widgetElement.appendChild(e)}hideJoinOverlay(){const e=this.widgetElement.querySelector(".chat-sdk-overlay");e&&e.remove()}addMessage(e){if(e.isOwnMessage)for(let t=this.state.messages.length-1;t>=0;t--){const s=this.state.messages[t];if(s.isOwnMessage&&s.content===e.content){if(Math.abs(e.timestamp.getTime()-s.timestamp.getTime())<=1e4)return;break}}this.state.messages.find(t=>t.id===e.id)?console.warn("Duplicate message detected and ignored:",e.id):(this.state.messages.push(e),this.renderMessage(e),e.isOwnMessage||this.incrementUnreadCount(),this.scrollToBottom(!0))}addMessagesBulk(e){if(!e||0===e.length)return;if(0===this.messagesContainer.querySelectorAll(".chat-sdk-message").length){this.state.messages=[...e].sort((e,t)=>e.timestamp.getTime()-t.timestamp.getTime());const t=this.state.messages.length,s=this.initialRenderCount;this.visibleStartIndex=Math.max(0,t-s);const n=this.state.messages.slice(this.visibleStartIndex),i=document.createDocumentFragment();let a;for(const e of n){const t=this.buildMessageElement(e,a);i.appendChild(t),a=e}this.messagesContainer.appendChild(i),setTimeout(()=>{this.scrollToBottom(!0)},0)}else{const t=new Set(this.state.messages.map(e=>e.id)),s=e.filter(e=>!t.has(e.id));if(s.length>0){this.state.messages.push(...s),this.state.messages.sort((e,t)=>e.timestamp.getTime()-t.timestamp.getTime()),this.messagesContainer.innerHTML="";const e=this.state.messages.length,t=this.initialRenderCount;this.visibleStartIndex=Math.max(0,e-t);const n=this.state.messages.slice(this.visibleStartIndex),i=document.createDocumentFragment();let a;for(const e of n){const t=this.buildMessageElement(e,a);i.appendChild(t),a=e}this.messagesContainer.appendChild(i),this.scrollToBottom()}}}reRenderAllMessages(){this.messagesContainer.innerHTML="";const e=this.state.messages.length,t=Math.max(0,e-this.initialRenderCount);this.state.messages.slice(t).forEach(e=>{this.renderMessage(e)}),this.scrollToBottom()}renderMessage(e){const t=this.state.messages.length-1,s=t>0?this.state.messages[t-1]:void 0,n=this.buildMessageElement(e,s);this.messagesContainer.appendChild(n)}createAvatar(e){var t,n,i,a;const o=s("div","chat-sdk-message-avatar");if(null===(t=e.virtualUser)||void 0===t?void 0:t.avatar)o.style.backgroundImage=`url(${e.virtualUser.avatar})`,o.style.backgroundSize="cover",o.style.backgroundPosition="center";else if(null===(n=e.user)||void 0===n?void 0:n.avatar)o.style.backgroundImage=`url(${e.user.avatar})`,o.style.backgroundSize="cover",o.style.backgroundPosition="center";else{const t=(null===(i=e.virtualUser)||void 0===i?void 0:i.username)||(null===(a=e.user)||void 0===a?void 0:a.username)||"U";o.textContent=t.charAt(0).toUpperCase()}return o}createMessageContent(e,t=!0,i=!1,a=!1){var o,r,d;const l=s("div","chat-sdk-message-content"),h=(null===(o=e.virtualUser)||void 0===o?void 0:o.displayName)||(null===(r=e.virtualUser)||void 0===r?void 0:r.username)||(null===(d=e.user)||void 0===d?void 0:d.username)||"Unknown";let c="";if("image"===e.messageType){c=`\n <div class="chat-sdk-message-image${e.failed?" failed":""}">\n <img src="${n(e.content)}" alt="Image"\n style="max-width: 200px; max-height: 280px; width: 100%; height: auto; cursor: pointer; display: block; border-radius: 8px; object-fit: cover;"\n data-image-url="${n(e.content)}"\n class="chat-sdk-image-preview" />\n </div>\n `}else if("audio"===e.messageType){const t=n(e.audioUrl||e.content||""),s=e.isOwnMessage,i=s?"#ffffff":"#3390ec",a=s?"rgba(255,255,255,0.5)":"#d4d6d9",o=s?"rgba(255,255,255,0.8)":"#9e9e9e";c=`\n <div class="chat-sdk-voice-msg" data-audio-src="${t}" style="display:flex;align-items:center;gap:10px;min-width:210px;max-width:270px;padding:4px 2px;">\n <button class="chat-sdk-voice-play-btn" style="width:40px;height:40px;border-radius:50%;border:none;background:${s?"rgba(255,255,255,0.2)":"#3390ec"};color:${"#ffffff"};font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity 0.15s;box-shadow:0 1px 2px rgba(0,0,0,0.1);">\n <svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>\n </button>\n <div class="chat-sdk-voice-waveform" style="display:flex;align-items:center;flex:1;height:28px;overflow:hidden;cursor:pointer;">\n ${Array.from({length:28},()=>{const e=4+Math.floor(18*Math.random());return`<span class="chat-sdk-voice-bar" data-active-color="${i}" data-inactive-color="${a}" style="display:inline-block;width:3px;height:${e}px;border-radius:1.5px;background:${a};margin:0 1px;transition:background 0.15s;vertical-align:middle;flex-shrink:0"></span>`}).join("")}\n </div>\n <span class="chat-sdk-voice-duration" style="font-size:12px;color:${o};min-width:32px;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums;margin-top:14px;">0:00</span>\n </div>`}else c="emoji"===e.messageType?`<div class="chat-sdk-message-emoji" style="font-size: 2em; line-height: 1;">${n(e.content)}</div>`:`<p class="chat-sdk-message-text">${n(e.content)}</p>`;const m=`${function(e,t){const s=new Date,n=Math.floor((s.getTime()-e.getTime())/1e3),i=(t||("undefined"!=typeof navigator?navigator.language:"en")).toLowerCase().startsWith("zh");if(n<60)return i?"刚刚":"just now";if(n<3600){const e=Math.floor(n/60);return i?`${e} 分钟前`:`${e}m ago`}if(n<86400){const e=Math.floor(n/3600);return i?`${e} 小时前`:`${e}h ago`}const a=new Date(s.getFullYear(),s.getMonth(),s.getDate());if(e>=new Date(a.getTime()-864e5)&&e<a){const t=e.toLocaleTimeString(i?"zh-CN":void 0,{hour:"2-digit",minute:"2-digit",hour12:!1});return i?`昨天 ${t}`:`yesterday ${t}`}return s.getTime()-e.getTime()<6048e5?e.toLocaleString(i?"zh-CN":void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):e.toLocaleString(i?"zh-CN":void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}(e.timestamp,this.config.language)}`,u=a?'<span class="chat-sdk-read-status">✓✓</span>':"",g=e.failed&&e.isOwnMessage?'<div class="chat-sdk-message-failed-indicator">\n <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">\n <circle cx="8" cy="8" r="8" fill="#ff4444"/>\n <path d="M8 4v4M8 10h.01" stroke="white" stroke-width="1.5" stroke-linecap="round"/>\n </svg>\n </div>':"";return l.innerHTML=i?`\n <div class="chat-sdk-message-bubble">\n ${t&&!e.isOwnMessage?`<div class="chat-sdk-message-username">${n(h)}</div>`:""}\n ${c}\n <div class="chat-sdk-message-time-inside">${m}${u?" "+u:""}</div>\n </div>\n ${g}\n `:`\n ${t&&!e.isOwnMessage?`<div class="chat-sdk-message-username">${n(h)}</div>`:""}\n <div class="chat-sdk-message-bubble">\n ${c}\n </div>\n <div class="chat-sdk-message-time">${m}${u?" "+u:""}</div>\n ${g}\n `,l}scrollToBottom(e=!1){const t=this.messagesContainer;if(e)return void i(t);t.scrollTop+t.clientHeight>=t.scrollHeight-40&&i(t)}setupImageViewer(){this.messagesContainer.addEventListener("click",e=>{const t=e.target;if(t.classList.contains("chat-sdk-image-preview")){const e=t.getAttribute("data-image-url");e&&this.openImageViewer(e)}}),this.messagesContainer.addEventListener("click",e=>{const t=e.target.closest(".chat-sdk-voice-play-btn");if(!t)return;const s=t.closest(".chat-sdk-voice-msg");if(!s)return;const n=s.getAttribute("data-audio-src");n&&this.handleVoicePlay(s,n,t)})}handleVoicePlay(e,t,s){const n=e.querySelector(".chat-sdk-voice-waveform"),i=e.querySelector(".chat-sdk-voice-duration"),a=null==n?void 0:n.querySelectorAll(".chat-sdk-voice-bar");if(!n||!i||!a.length)return;if(this.currentVoiceContainer===e&&this.currentAudio&&!this.currentAudio.paused)return this.currentAudio.pause(),void(s.innerHTML='<svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>');this.currentAudio&&(this.currentAudio.pause(),this.currentAudio.currentTime=0,this.resetVoiceUI(this.currentVoiceContainer));const o=new Audio(t);this.currentAudio=o,this.currentVoiceContainer=e,s.innerHTML='<svg width="14" height="16" viewBox="0 0 14 18" fill="currentColor"><rect x="1" y="2" width="4" height="14" rx="1"/><rect x="9" y="2" width="4" height="14" rx="1"/></svg>',o.addEventListener("loadedmetadata",()=>{i.textContent=this.formatAudioDuration(o.duration)}),o.addEventListener("timeupdate",()=>{if(!o.duration)return;const e=o.currentTime/o.duration,t=Math.floor(e*a.length);a.forEach((e,s)=>{const n=e.getAttribute("data-active-color")||"#ffffff",i=e.getAttribute("data-inactive-color")||"rgba(255,255,255,0.45)";e.style.background=s<t?n:i});const s=o.duration-o.currentTime;i.textContent=this.formatAudioDuration(s)}),o.addEventListener("ended",()=>{this.resetVoiceUI(e),this.currentAudio=null,this.currentVoiceContainer=null}),o.addEventListener("error",()=>{console.warn("[ChatSDK] Voice audio load error:",t),this.resetVoiceUI(e),this.currentAudio=null,this.currentVoiceContainer=null}),o.play().catch(t=>{console.warn("[ChatSDK] Voice play failed:",t),this.resetVoiceUI(e)})}resetVoiceUI(e){if(!e)return;const t=e.querySelector(".chat-sdk-voice-play-btn"),s=e.querySelectorAll(".chat-sdk-voice-bar"),n=e.querySelector(".chat-sdk-voice-duration");t&&(t.innerHTML='<svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>'),s.forEach(e=>{const t=e.getAttribute("data-inactive-color")||"rgba(255,255,255,0.45)";e.style.background=t}),n&&(n.textContent="0:00")}formatAudioDuration(e){const t=Math.max(0,Math.floor(e));return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,"0")}`}openImageViewer(e){const t=document.querySelector(".chat-sdk-viewer-overlay");t&&t.remove();const s=document.createElement("div");s.className="chat-sdk-viewer-overlay",Object.assign(s.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",background:"rgba(0,0,0,0.88)",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",opacity:"0",transition:"opacity 0.2s ease",cursor:"zoom-out"});const n=document.createElement("button");Object.assign(n.style,{position:"absolute",top:"16px",right:"20px",background:"none",border:"none",color:"#fff",fontSize:"32px",cursor:"pointer",lineHeight:"1",padding:"4px",zIndex:"1"}),n.innerHTML="&times;",n.setAttribute("aria-label","Close");const i=document.createElement("img");i.src=e,i.alt="Full size image",Object.assign(i.style,{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:"8px",boxShadow:"0 8px 32px rgba(0,0,0,0.6)",transform:"scale(0.92)",transition:"transform 0.2s cubic-bezier(0.1, 0.9, 0.2, 1)",cursor:"default",display:"block"});s.addEventListener("click",e=>{e.target!==s&&e.target!==n||(s.style.opacity="0",i.style.transform="scale(0.92)",setTimeout(()=>{s.parentNode&&s.remove()},200))}),i.addEventListener("click",e=>e.stopPropagation()),s.appendChild(n),s.appendChild(i),document.body.appendChild(s),requestAnimationFrame(()=>{s.style.opacity="1",i.style.transform="scale(1)"})}showImagePreview(e){const t=s("div","chat-sdk-image-modal");t.innerHTML=`\n <div class="chat-sdk-image-modal-overlay">\n <div class="chat-sdk-image-modal-content">\n <button class="chat-sdk-image-modal-close">&times;</button>\n <img src="${n(e)}" alt="Image Preview" class="chat-sdk-image-modal-img" />\n </div>\n </div>\n `,this.widgetElement.appendChild(t);const i=t.querySelector(".chat-sdk-image-modal-close"),a=t.querySelector(".chat-sdk-image-modal-overlay"),o=()=>{t.remove()};null==i||i.addEventListener("click",o),null==a||a.addEventListener("click",e=>{e.target===a&&o()});const r=e=>{"Escape"===e.key&&(o(),document.removeEventListener("keydown",r))};document.addEventListener("keydown",r)}setJoined(e){this.state.isJoined=e,this.handleInputChange()}setUITemplate(e){this.currentTheme=e,this.config.uiTemplate=e,this.widgetElement.classList.remove("whatsapp-theme","telegram-theme","dark"),this.widgetElement.classList.add(`${e}-theme`),"telegram"===e&&this.isDarkMode&&this.widgetElement.classList.add("dark"),this.updateThemeStyles(),this.reRenderAllMessages()}setTheme(e){this.isDarkMode="dark"===e,this.config.theme=e,"telegram"===this.currentTheme&&(this.isDarkMode?this.widgetElement.classList.add("dark"):this.widgetElement.classList.remove("dark"),this.updateThemeStyles())}setCustomColors(e){this.customColors={...this.customColors,...e},this.config.primaryColor=e.primary,this.config.backgroundColor=e.background,this.updateThemeStyles()}updateThemeStyles(){const e=this.currentTheme,t=this.isDarkMode&&"telegram"===e,s=this.shadowRoot||document.documentElement;"whatsapp"===e?(this.setCSSProperty(s,"--chat-primary-color",this.customColors.primary||"#25D366"),this.setCSSProperty(s,"--chat-background-color",this.customColors.background||"#ECE5DD"),this.setCSSProperty(s,"--chat-message-own-bg","#DCF8C6"),this.setCSSProperty(s,"--chat-message-other-bg","#FFFFFF"),this.setCSSProperty(s,"--chat-header-bg","linear-gradient(135deg, #075e54 0%, #128c7e 100%)")):"telegram"===e&&(t?(this.setCSSProperty(s,"--chat-primary-color",this.customColors.primary||"#4FC3F7"),this.setCSSProperty(s,"--chat-background-color",this.customColors.background||"#212121"),this.setCSSProperty(s,"--chat-message-own-bg","linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%)"),this.setCSSProperty(s,"--chat-message-other-bg","#2F2F2F"),this.setCSSProperty(s,"--chat-header-bg","linear-gradient(135deg, #1976d2 0%, #1565c0 100%)"),this.setCSSProperty(s,"--chat-text-color","#FFFFFF")):(this.setCSSProperty(s,"--chat-primary-color",this.customColors.primary||"#2481CC"),this.setCSSProperty(s,"--chat-background-color",this.customColors.background||"#FFFFFF"),this.setCSSProperty(s,"--chat-message-own-bg","linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%)"),this.setCSSProperty(s,"--chat-message-other-bg","#F1F1F1"),this.setCSSProperty(s,"--chat-header-bg","linear-gradient(135deg, #2481cc 0%, #1c7cd6 100%)"),this.setCSSProperty(s,"--chat-text-color","#000000")))}setCSSProperty(e,t,s){if(e instanceof ShadowRoot){const n=e.querySelector("style");if(n){const e=n.textContent||"",i=new RegExp(`${t}\\s*:\\s*[^;]+;`,"g"),a=`${t}: ${s};`;if(i.test(e))n.textContent=e.replace(i,a);else{const t=/:host\s*\{([^}]*)\}/;t.test(e)?n.textContent=e.replace(t,(e,t)=>`:host { ${t} ${a} }`):n.textContent=`:host { ${a} }\n${e}`}}}else e.style.setProperty(t,s)}getState(){return{...this.state}}getDefaultStyles(){return`\n :host {\n --chat-primary-color: #25D366;\n --chat-background-color: #ECE5DD;\n --chat-message-own-bg: #DCF8C6;\n --chat-message-other-bg: #FFFFFF;\n --chat-header-bg: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n --chat-text-color: #333333;\n --chat-border-radius-message: 18px;\n --chat-border-radius-input: 25px;\n }\n\n .chat-sdk-container {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--chat-text-color);\n background: var(--chat-background-color);\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n max-width: 100%;\n max-height: 100%;\n }\n\n .chat-sdk-container * {\n box-sizing: border-box;\n }\n\n /* WhatsApp Theme */\n .chat-sdk-container.whatsapp-theme .chat-sdk-header {\n background: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-height: 60px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.12);\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-header-left { display: none; }\n\n .chat-sdk-container.whatsapp-theme .chat-sdk-messages {\n background-color: #ece5dd;\n background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23e5ddd5' fill-opacity='0.08'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");\n padding: 8px 6px;\n }\n\n .chat-sdk-container.whatsapp-theme {\n --chat-primary-color: #25D366;\n --chat-background-color: #ECE5DD;\n --chat-message-own-bg: #DCF8C6;\n --chat-message-other-bg: #FFFFFF;\n --chat-header-bg: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n --chat-text-color: #303030;\n --chat-border-radius-message: 7.5px;\n --chat-border-radius-input: 25px;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n /* ── WhatsApp: Message Row Layout ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message {\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n margin-bottom: 4px;\n padding: 1px 10px;\n gap: 6px;\n }\n\n /* Own message: green bubble, right side, no avatar */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own {\n flex-direction: row-reverse;\n justify-content: flex-start;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-avatar {\n display: none;\n }\n\n /* ── WhatsApp: Avatar ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-avatar {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n align-self: flex-end;\n margin-bottom: 0;\n font-size: 13px;\n font-weight: 700;\n color: #fff;\n background: #aaa;\n }\n\n /* ── WhatsApp: Message Content Wrapper ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-content {\n max-width: 72%;\n min-width: 60px;\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n /* ── WhatsApp: Bubble ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-bubble {\n background: #fff;\n color: #303030;\n border-radius: 7.5px;\n padding: 6px 10px 20px 10px;\n box-shadow: 0 1px 0.5px rgba(0,0,0,0.13);\n position: relative;\n word-wrap: break-word;\n word-break: break-word;\n display: block;\n max-width: 100%;\n }\n\n /* Tail for other-person bubble (left bottom corner) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:not(.own):not(.grouped) .chat-sdk-message-bubble::before {\n content: '';\n position: absolute;\n bottom: 0;\n left: -8px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 0 8px 8px;\n border-color: transparent transparent #fff transparent;\n filter: drop-shadow(-1px 1px 0.5px rgba(0,0,0,0.10));\n }\n\n /* Own bubble: green */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-bubble {\n background: #DCF8C6;\n color: #303030;\n border-radius: 7.5px;\n }\n\n /* Tail for own bubble (right bottom corner) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own:not(.grouped) .chat-sdk-message-bubble::before {\n content: '';\n position: absolute;\n bottom: 0;\n right: -8px;\n left: auto;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 8px 0 0 8px;\n border-color: transparent transparent transparent #DCF8C6;\n filter: drop-shadow(1px 1px 0.5px rgba(0,0,0,0.10));\n }\n\n /* ── WhatsApp: Username inside bubble (colored) ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-username {\n font-size: 12.5px;\n font-weight: 600;\n margin-bottom: 2px;\n line-height: 1.2;\n display: block;\n }\n\n /* Cycle username colors like real WhatsApp */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+1) .chat-sdk-message-username { color: #e91e8c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+2) .chat-sdk-message-username { color: #e67e22; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+3) .chat-sdk-message-username { color: #1abc9c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+4) .chat-sdk-message-username { color: #9b59b6; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+5) .chat-sdk-message-username { color: #e74c3c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+6) .chat-sdk-message-username { color: #3498db; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+0) .chat-sdk-message-username { color: #2ecc71; }\n\n /* ── WhatsApp: Input area ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-input-area {\n background: #f0f2f5;\n border-top: none;\n padding: 8px 10px;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-input {\n background: #fff;\n border: none;\n border-radius: 22px;\n padding: 9px 14px;\n font-size: 15px;\n box-shadow: none;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-send-btn {\n background: #00a884;\n width: 42px;\n height: 42px;\n box-shadow: none;\n }\n\n\n /* Telegram Theme */\n .chat-sdk-container.telegram-theme {\n --chat-primary-color: #2481CC;\n --chat-background-color: #FFFFFF;\n --chat-message-own-bg: linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%);\n --chat-message-other-bg: #F1F1F1;\n --chat-header-bg: linear-gradient(135deg, #2481cc 0%, #1c7cd6 100%);\n --chat-text-color: #000000;\n --chat-border-radius-message: 12px;\n --chat-border-radius-input: 12px;\n\n /* Telegram input + details */\n .chat-sdk-container.telegram-theme .chat-sdk-message {\n align-items: flex-start; /* avatar aligns with username at top, not bottom */\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message-content {\n max-width: 75%;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message-bubble {\n box-shadow: 0 1px 1px rgba(0,0,0,0.06);\n }\n .chat-sdk-container.telegram-theme .chat-sdk-input-area {\n background: #ffffff;\n border-top: 1px solid #e6e6e6;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-input {\n background: #fff;\n border: 1px solid #cfd6dd;\n border-radius: 12px;\n padding: 9px 14px;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-send-btn {\n background: #2481CC;\n border-radius: 10px;\n width: 38px;\n height: 36px;\n box-shadow: none;\n }\n /* Telegram dark */\n .chat-sdk-container.telegram-theme.dark .chat-sdk-input-area {\n background: #1f1f1f;\n border-top: 1px solid #2a2a2a;\n }\n .chat-sdk-container.telegram-theme.dark .chat-sdk-input {\n background: #2b2b2b;\n color: #e0e0e0;\n border-color: #444;\n }\n .chat-sdk-container.telegram-theme.dark .chat-sdk-send-btn {\n background: #1976d2;\n }\n\n\n .chat-sdk-container.telegram-theme .chat-sdk-header {\n background: var(--chat-header-bg);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 60px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.12);\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-messages {\n background-color: var(--chat-background-color);\n background-image: url('${(this.config.apiBaseUrl||"").replace(/\/$/,"")}/chatback.jpg');\n background-size: cover;\n background-position: center;\n background-attachment: local;\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-message.own .chat-sdk-message-bubble {\n background: var(--chat-message-own-bg);\n color: white;\n border-radius: var(--chat-border-radius-message) var(--chat-border-radius-message) 4px var(--chat-border-radius-message);\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-message:not(.own) .chat-sdk-message-bubble {\n background: var(--chat-message-other-bg);\n color: var(--chat-text-color);\n border-radius: var(--chat-border-radius-message) var(--chat-border-radius-message) var(--chat-border-radius-message) 4px;\n }\n\n /* Telegram Dark Theme */\n .chat-sdk-container.telegram-theme.dark {\n --chat-background-color: #212121;\n --chat-message-other-bg: #2F2F2F;\n --chat-header-bg: linear-gradient(135deg, #1976d2 0%, #1565c0 100%);\n --chat-text-color: #FFFFFF;\n }\n\n /* Default header (fallback) */\n .chat-sdk-header {\n background: var(--chat-header-bg);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 60px;\n }\n\n .chat-sdk-header-left { display: flex; flex-direction: column; gap: 2px; }\n .chat-sdk-title { font-size: 15px; font-weight: 600; }\n .chat-sdk-subtitle { font-size: 12px; opacity: 0.9; }\n\n .chat-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n cursor: pointer;\n padding: 8px;\n border-radius: 50%;\n opacity: 0.8;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n }\n\n .chat-sdk-close-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n\n .chat-sdk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n background-color: var(--chat-background-color);\n min-height: 0; /* allow flex to use full height */\n }\n\n .chat-sdk-message {\n margin-bottom: 12px;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n }\n\n .chat-sdk-message.own {\n flex-direction: row-reverse;\n }\n\n .chat-sdk-message-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #ddd;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n flex-shrink: 0;\n }\n\n .chat-sdk-message-content {\n max-width: 70%;\n position: relative;\n }\n\n .chat-sdk-message-bubble {\n background: var(--chat-message-other-bg);\n color: var(--chat-text-color);\n padding: 8px 12px;\n border-radius: var(--chat-border-radius-message);\n position: relative;\n word-wrap: break-word;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n }\n\n .chat-sdk-message.own .chat-sdk-message-bubble {\n background: var(--chat-message-own-bg);\n color: white;\n }\n\n .chat-sdk-message-username {\n font-size: 11px;\n color: #666;\n margin-bottom: 2px;\n font-weight: 600;\n }\n\n .chat-sdk-message-text {\n margin: 0;\n line-height: 1.4;\n }\n\n .chat-sdk-message-time {\n font-size: 10px;\n color: #999;\n margin-top: 4px;\n text-align: right;\n }\n\n /* Message grouping */\n .chat-sdk-message.grouped {\n margin-top: 4px;\n }\n .chat-sdk-message.grouped .chat-sdk-message-username { display: none; }\n .chat-sdk-message.grouped .chat-sdk-message-avatar { visibility: hidden; }\n\n /* WhatsApp: time inside bubble */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-time-inside {\n position: absolute;\n right: 6px;\n bottom: 4px;\n font-size: 11px;\n color: rgba(0,0,0,0.45);\n display: flex;\n align-items: center;\n gap: 3px;\n line-height: 1;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-time-inside {\n color: rgba(0, 0, 0, 0.45);\n }\n /* hide external time for whatsapp (time is inside bubble) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-time {\n display: none;\n }\n\n /* Telegram: read status */\n .chat-sdk-container.telegram-theme .chat-sdk-message-time {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message.own .chat-sdk-read-status {\n font-size: 12px;\n color: var(--chat-primary-color);\n line-height: 1;\n }\n\n /* Theme-specific image radii */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-image img { border-radius: 8px; max-width: 200px; max-height: 280px; }\n .chat-sdk-container.telegram-theme .chat-sdk-message-image img { border-radius: 6px; max-width: 200px; max-height: 280px; }\n\n\n .chat-sdk-input-area {\n padding: 12px 16px;\n background: white;\n border-top: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n\n .chat-sdk-icon-btn {\n background: transparent;\n border: none;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n }\n .chat-sdk-icon-btn:hover { background: rgba(0,0,0,0.06); }\n\n .chat-sdk-emoji-picker {\n position: absolute;\n left: 12px;\n bottom: 64px;\n background: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 6px 16px rgba(0,0,0,0.12);\n padding: 6px;\n z-index: 5;\n }\n .chat-sdk-emoji-grid {\n display: grid;\n grid-template-columns: repeat(5, 28px);\n gap: 6px;\n }\n\n /* Failed message styles - Telegram style */\n .chat-sdk-message-failed-indicator {\n display: inline-flex;\n align-items: center;\n margin-left: 6px;\n color: #ff4444;\n cursor: pointer;\n }\n .chat-sdk-message-failed-indicator svg {\n width: 16px;\n height: 16px;\n }\n .chat-sdk-message.own .chat-sdk-message-content {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n }\n .chat-sdk-message.own .chat-sdk-message-bubble {\n flex: 1;\n }\n .chat-sdk-emoji-item {\n background: none;\n border: none;\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n }\n .chat-sdk-emoji-item:hover { background: #f3f4f6; }\n\n\n .chat-sdk-input {\n flex: 1;\n border: 1px solid #ddd;\n border-radius: var(--chat-border-radius-input);\n padding: 8px 16px;\n font-size: 14px;\n outline: none;\n resize: none;\n min-height: 36px;\n max-height: 100px;\n }\n\n .chat-sdk-input:focus {\n border-color: var(--chat-primary-color);\n }\n\n .chat-sdk-send-btn {\n background: var(--chat-primary-color);\n color: white;\n border: none;\n border-radius: 50%;\n width: 36px;\n height: 36px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n }\n\n .chat-sdk-send-btn:hover {\n background: #064e45;\n }\n\n .chat-sdk-send-btn:disabled {\n background: #ccc;\n cursor: not-allowed;\n }\n\n .chat-sdk-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n }\n\n .chat-sdk-join-card {\n background: white;\n border-radius: 12px;\n padding: 24px;\n max-width: 300px;\n margin: 16px;\n text-align: center;\n }\n\n .chat-sdk-join-title {\n font-size: 18px;\n font-weight: 600;\n margin: 0 0 8px 0;\n color: #333;\n }\n\n .chat-sdk-join-description {\n font-size: 14px;\n color: #666;\n margin: 0 0 20px 0;\n line-height: 1.4;\n }\n\n .chat-sdk-join-btn {\n background: #075e54;\n color: white;\n border: none;\n border-radius: 8px;\n padding: 12px 24px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s;\n width: 100%;\n }\n\n .chat-sdk-join-btn:hover {\n background: #064e45;\n }\n\n .chat-sdk-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: #666;\n }\n\n .chat-sdk-spinner {\n width: 20px;\n height: 20px;\n border: 2px solid #e0e0e0;\n border-top: 2px solid #075e54;\n border-radius: 50%;\n animation: chat-sdk-spin 1s linear infinite;\n margin-right: 8px;\n }\n\n @keyframes chat-sdk-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .chat-sdk-container.dark {\n background: #1f1f1f;\n color: #e0e0e0;\n }\n\n .chat-sdk-container.dark .chat-sdk-header {\n background: #2d2d2d;\n }\n\n .chat-sdk-container.dark .chat-sdk-messages {\n background: #0d1117;\n }\n\n .chat-sdk-container.dark .chat-sdk-message-bubble {\n background: #2d2d2d;\n color: #e0e0e0;\n }\n\n .chat-sdk-container.dark .chat-sdk-message.own .chat-sdk-message-bubble {\n background: #0969da;\n color: white;\n }\n\n /* Image Modal Viewer */\n .chat-sdk-image-modal {\n position: fixed;\n top: 0; left: 0; right: 0; bottom: 0;\n z-index: 9999;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n }\n\n .chat-sdk-image-modal-open {\n opacity: 1;\n visibility: visible;\n }\n\n .chat-sdk-image-backdrop {\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n }\n\n .chat-sdk-image-container {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .chat-sdk-image-close {\n position: absolute;\n top: -50px;\n right: 0;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 50%;\n width: 40px;\n height: 40px;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n z-index: 1;\n }\n\n .chat-sdk-image-close:hover {\n background: rgba(255, 255, 255, 0.2);\n }\n\n .chat-sdk-image-full {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);\n }\n\n /* Responsive Design */\n @media (max-width: 640px) {\n .chat-sdk-container {\n border-radius: 0;\n height: 100vh;\n max-height: 100vh;\n }\n\n .chat-sdk-message-content {\n max-width: 85%;\n }\n\n .chat-sdk-message-bubble {\n font-size: 14px;\n padding: 8px 12px;\n }\n\n .chat-sdk-input {\n font-size: 16px; /* Prevent zoom on iOS */\n padding: 10px 14px;\n }\n\n .chat-sdk-header {\n padding: 8px 12px;\n min-height: 50px;\n }\n\n .chat-sdk-message-avatar {\n width: 28px;\n height: 28px;\n font-size: 11px;\n }\n }\n\n @media (min-width: 1024px) {\n .chat-sdk-message-content {\n max-width: 60%;\n }\n\n .chat-sdk-send-btn:hover:not(:disabled) {\n transform: scale(1.05);\n transition: all 0.2s ease;\n }\n }\n\n /* Image Zoom Overlay */\n .chat-sdk-image-zoom-overlay {\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.85);\n z-index: 999999;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: zoom-out;\n backdrop-filter: blur(2px);\n }\n .chat-sdk-image-zoom-img {\n max-width: 95%;\n max-height: 95%;\n object-fit: contain;\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n transform: scale(0.95);\n animation: chat-sdk-zoom-in 0.2s cubic-bezier(0.1, 0.9, 0.2, 1) forwards;\n }\n @keyframes chat-sdk-zoom-in {\n to { transform: scale(1); }\n }\n\n `}startSimulation(){this.simulator.start()}stopSimulation(){this.simulator.stop()}pauseSimulation(){this.simulator.pause()}resumeSimulation(){this.simulator.resume()}async sendMessage(e,t="text"){await this.simulator.sendMessage(e,t)}get isSimulationRunning(){return this.state.isSimulationRunning}get isSimulationPaused(){return this.state.isSimulationPaused}get simulationEnded(){return this.state.simulationEnded}get messageCount(){return this.state.displayedMessageCount}get messages(){return[...this.state.messages]}async reinitializeLanguage(e){this.config.language=e,this.setLoading(!0),this.messagesContainer.innerHTML="",this.state.messages=[],this.state.displayedMessageCount=0,this.state.unreadCount=0,this.updateUnreadBadge();try{this.simulator.clearCachedProgress()}catch(e){}try{this.simulator.destroy()}catch(e){}this.simulator=new m(this.config,this.apiClient),this.setupSimulatorEvents(),await this.initializeSimulation()}destroy(){this.pollingStopTimer&&(clearTimeout(this.pollingStopTimer),this.pollingStopTimer=null);try{this.simulator.destroy()}catch(e){}if(this.shadowRoot)try{for(;this.shadowRoot.firstChild;)this.shadowRoot.removeChild(this.shadowRoot.firstChild)}catch(e){}this.state.isOpen=!1,this.removeAllListeners()}clearMessages(){this.state.messages=[],this.state.displayedMessageCount=0,this.state.unreadCount=0,this.messagesContainer.innerHTML="",this.updateUnreadBadge()}rerender(){this.reRenderAllMessages()}getMessageCount(){return this.state.displayedMessageCount}isOpen(){return this.state.isOpen}updateLanguageElements(e){var t,s,n;this.t=p(e);const i=null===(t=this.widgetElement)||void 0===t?void 0:t.querySelector("#message-input");i&&(i.placeholder=this.t.inputPlaceholder);const a=null===(s=this.widgetElement)||void 0===s?void 0:s.querySelector(".send-button");a&&a.textContent&&(a.textContent=this.t.send);const o=this.getMessageCount(),r=(null===(n=this.state.currentProject)||void 0===n?void 0:n.name)||"Chat";this.setTitle(r,`${o} ${this.t.messages}`)}}const f=b;function v(e){return new b(e)}var k={init:v,ChatSDK:f,ChatSDKError:e};"undefined"!=typeof window&&(window.ChatSDK={init:v,ChatSDK:f,ChatSDKError:e});export{f as ChatSDK,e as ChatSDKError,k as default,v as init};
1
+ class A extends Error{constructor(A,e,t){super(A),this.code=e,this.details=t,this.name="ChatSDKError"}}class e{constructor(){this.events=new Map}on(A,e){this.events.has(A)||this.events.set(A,[]),this.events.get(A).push(e)}off(A,e){if(!this.events.has(A))return;if(!e)return void this.events.delete(A);const t=this.events.get(A),i=t.indexOf(e);i>-1&&t.splice(i,1),0===t.length&&this.events.delete(A)}emit(A,e){if(!this.events.has(A))return;this.events.get(A).forEach(t=>{try{t(e)}catch(e){console.error(`Error in event callback for "${A}":`,e)}})}getEventNames(){return Array.from(this.events.keys())}listenerCount(A){var e;return(null===(e=this.events.get(A))||void 0===e?void 0:e.length)||0}removeAllListeners(){this.events.clear()}}function t(A,e,t){const i=document.createElement(A);return e&&(i.className=e),i}function i(A){const e=document.createElement("div");return e.textContent=A,e.innerHTML}function o(A,e=!0){A.scrollTop=A.scrollHeight,A.scrollTo&&A.scrollTo({top:A.scrollHeight,behavior:e?"smooth":"auto"})}const n={USD:1,EUR:.92,GBP:.79,JPY:149.5,CNY:7.24,INR:83.12,BRL:4.97,RUB:92.5,KRW:1320,MXN:17.15,CAD:1.38,AUD:1.53,CHF:.88,SEK:10.85,NZD:1.67,SGD:1.34,HKD:7.82,NOK:10.95,TRY:28.5,ZAR:18.65,PLN:4.05,THB:35.2,IDR:15650,MYR:4.68,PHP:56.2,DKK:6.88,CZK:22.85,HUF:355,ILS:3.72,CLP:920,ARS:350,COP:4050,PEN:3.75,EGP:30.9,SAR:3.75,AED:3.67,VND:24500,PKR:278,BDT:110,NGN:775,UAH:36.5,RON:4.58,TWD:31.5,QAR:3.64,KWD:.31,OMR:.38,BHD:.38},s={USD:"$",EUR:"€",GBP:"£",JPY:"¥",CNY:"¥",INR:"₹",BRL:"R$",RUB:"₽",KRW:"₩",MXN:"$",CAD:"C$",AUD:"A$",CHF:"CHF",SEK:"kr",NZD:"NZ$",SGD:"S$",HKD:"HK$",NOK:"kr",TRY:"₺",ZAR:"R",PLN:"zł",THB:"฿",IDR:"Rp",MYR:"RM",PHP:"₱",DKK:"kr",CZK:"Kč",HUF:"Ft",ILS:"₪",CLP:"$",ARS:"$",COP:"$",PEN:"S/",EGP:"E£",SAR:"﷼",AED:"د.إ",VND:"₫",PKR:"₨",BDT:"৳",NGN:"₦",UAH:"₴",RON:"lei",TWD:"NT$",QAR:"﷼",KWD:"د.ك",OMR:"﷼",BHD:"د.ب"},a={USD:",",EUR:".",GBP:",",JPY:",",CNY:",",INR:",",BRL:".",RUB:" ",KRW:",",MXN:",",CAD:",",AUD:",",CHF:"'",SEK:" ",PLN:" ",THB:",",IDR:".",MYR:",",PHP:",",DKK:".",CZK:" ",HUF:" "},r={USD:".",EUR:",",GBP:".",JPY:".",CNY:".",INR:".",BRL:",",RUB:",",KRW:".",MXN:".",CAD:".",AUD:".",CHF:".",SEK:",",PLN:",",THB:".",IDR:",",MYR:".",PHP:".",DKK:",",CZK:",",HUF:","},l={US:"USD",CA:"CAD",MX:"MXN",BR:"BRL",AR:"ARS",CL:"CLP",CO:"COP",PE:"PEN",GB:"GBP",DE:"EUR",FR:"EUR",IT:"EUR",ES:"EUR",NL:"EUR",BE:"EUR",AT:"EUR",PT:"EUR",IE:"EUR",GR:"EUR",FI:"EUR",CH:"CHF",NO:"NOK",SE:"SEK",DK:"DKK",PL:"PLN",CZ:"CZK",HU:"HUF",RO:"RON",RU:"RUB",UA:"UAH",TR:"TRY",IL:"ILS",SA:"SAR",AE:"AED",EG:"EGP",CN:"CNY",JP:"JPY",KR:"KRW",IN:"INR",ID:"IDR",TH:"THB",VN:"VND",MY:"MYR",SG:"SGD",PH:"PHP",PK:"PKR",BD:"BDT",HK:"HKD",TW:"TWD",AU:"AUD",NZ:"NZD",ZA:"ZAR",NG:"NGN",KE:"KES",QA:"QAR",KW:"KWD",OM:"OMR",BH:"BHD"},U=new Set(["JPY","KRW","IDR","VND","CLP","PYG","UGX"]);function p(A,e){if(!A||!e)return A;const t=function(A){return l[A.toUpperCase()]||"USD"}(e);return A.replace(/\{\{AMOUNT:(\d+(?:\.\d+)?)\}\}/g,(A,e)=>{const i=parseFloat(e);return isNaN(i)?A:function(A,e){var t,i,o,l;const p=null!==(t=n[e])&&void 0!==t?t:1,K=null!==(i=s[e])&&void 0!==i?i:e+" ",h=null!==(o=a[e])&&void 0!==o?o:",",d=null!==(l=r[e])&&void 0!==l?l:".",g=U.has(e),c=A*p,F=g?Math.round(c):Math.round(100*c)/100,R=Math.floor(F).toString().replace(/\B(?=(\d{3})+(?!\d))/g,h);return g?`${K}${R}`:`${K}${R}${d}${(F%1).toFixed(2).slice(2)}`}(i,t)})}class K extends e{constructor(A,e){super(),this.simulationData=null,this.displayedMessages=[],this.currentMessageIndex=0,this.isRunning=!1,this.isPaused=!1,this.intervalId=null,this.pollingId=null,this.burstPhase=!0,this.totalToShow=1/0,this.virtualLastTimestamp=null,this.realLastTimestamp=null,this.lastTimestamp=null,this.lastDelayMs=0,this.userId="",this.config=A,this.apiClient=e,this.pollingIntervalMs="number"==typeof A.pollingInterval&&A.pollingInterval>0?A.pollingInterval:6e3}async initialize(){try{const A=this.config.language||"en",e=(this.config.country||"US").toUpperCase(),t=this.getPersistedUserId(),i=t||this.config.userId||this.generateUserId();this.userId=i,t||this.persistUserId(i);const o=await this.apiClient.getSimulationData(this.config.projectId,i,A,e);if(!o.success||!o.data)throw new Error("Failed to load simulation data");this.simulationData=o.data;const n=this.simulationData.project.initialBurstCount+this.simulationData.project.continuousCount;this.totalToShow=Math.min(n,this.simulationData.messages.length);const s=this.loadProgress();s&&"number"==typeof s.index?(this.currentMessageIndex=s.index,s.lastTimestamp&&(this.virtualLastTimestamp=new Date(s.lastTimestamp),this.lastTimestamp=new Date(s.lastTimestamp))):(this.currentMessageIndex=0,this.virtualLastTimestamp=null,this.lastTimestamp=null),this.realLastTimestamp=null,await this.loadExistingMessages(),await this.reconstructVirtualHistoryForDisplay(),this.emit("initialized",this.simulationData),this.startPolling(),!1!==this.config.autoStart&&this.start()}catch(A){throw this.emit("error",A),A}}start(){this.simulationData&&!this.isRunning&&(this.isRunning=!0,this.isPaused=!1,this.burstPhase=!0,this.emit("simulationStart"),this.performInitialBurst(),this.currentMessageIndex<this.totalToShow?(this.burstPhase=!1,this.scheduleNextMessage()):(this.isRunning=!1,this.emit("simulationEnd")))}performInitialBurst(){if(!this.simulationData)return;const{project:A,messages:e}=this.simulationData,t=A.initialBurstCount,i=Math.min(t,this.totalToShow,e.length);if(this.currentMessageIndex>=i)return;if(this.displayedMessages.some(A=>A.id.startsWith("sim-"))&&this.currentMessageIndex>0)return;const o=new Date,n=new Array(i);let s=new Date(o);for(let A=i-1;A>=0;A--)if(n[A]=new Date(s),A>0){const A=10+Math.floor(11*Math.random());s=new Date(s.getTime()-60*A*1e3)}const a=[],r=(this.config.country||"US").toUpperCase();let l=!1;for(let A=this.currentMessageIndex;A<i;A++){const t=e[A],i=p(t.content,r);if(t.hasScreenshot&&t.screenshotUrl){const e={id:`sim-${A}-text-${Date.now()}`,content:i,messageType:"text",timestamp:n[A],isOwnMessage:!1,virtualUser:t.virtualUser};this.displayedMessages.push(e),a.push(e);const o=new Date(n[A].getTime()+2e3),s={id:`sim-${A}-image-${Date.now()}`,content:this.resolveImageUrl(t.screenshotUrl),messageType:"image",timestamp:o,isOwnMessage:!1,virtualUser:t.virtualUser};this.displayedMessages.push(s),a.push(s)}else if("audio"===t.messageType){const e={id:`sim-${A}-audio-${Date.now()}`,content:"",messageType:"audio",audioUrl:this.resolveImageUrl(t.audioUrl||""),timestamp:n[A],isOwnMessage:!1,virtualUser:t.virtualUser};this.displayedMessages.push(e),a.push(e)}else{const e={id:`sim-${A}-${Date.now()}`,content:i,messageType:t.messageType,timestamp:n[A],isOwnMessage:!1,virtualUser:t.virtualUser};this.displayedMessages.push(e),a.push(e)}this.currentMessageIndex=A+1,l=!0}l&&(this.lastTimestamp=n[i-1],this.virtualLastTimestamp=this.lastTimestamp,this.displayedMessages.sort((A,e)=>A.timestamp.getTime()-e.timestamp.getTime()),this.emit("messages-batch",a)),this.saveProgress()}pause(){this.isRunning&&(this.isPaused=!0,this.intervalId&&(clearTimeout(this.intervalId),this.intervalId=null),this.emit("simulationPause"))}resume(){this.isRunning&&this.isPaused&&(this.isPaused=!1,this.scheduleNextMessage(),this.emit("simulationResume"))}stop(){this.isRunning=!1,this.isPaused=!1,this.intervalId&&(clearTimeout(this.intervalId),this.intervalId=null),this.emit("simulationStop")}destroy(){this.stop(),this.stopPolling(),this.removeAllListeners()}scheduleNextMessage(){if(!this.simulationData||!this.isRunning||this.isPaused)return;const{project:A,messages:e}=this.simulationData;if(this.currentMessageIndex>=this.totalToShow)return this.isRunning=!1,void this.emit("simulationEnd");let t;if(this.burstPhase){const i=Math.min(A.initialBurstCount,e.length);this.currentMessageIndex<i?t=500+1e3*Math.random():(this.burstPhase=!1,t=this.getRandomInterval(A.messageIntervalMin,A.messageIntervalMax))}else{const i=Math.min(A.initialBurstCount,e.length);t=this.currentMessageIndex-i<5?1e3*(A.initialMessageInterval||10):this.getRandomInterval(A.messageIntervalMin,A.messageIntervalMax)}this.lastDelayMs=t,this.intervalId=setTimeout(()=>{this.displayNextMessage(),this.scheduleNextMessage()},t)}displayNextMessage(){if(!this.simulationData||this.currentMessageIndex>=this.simulationData.messages.length)return;const A=this.simulationData.messages[this.currentMessageIndex],e=(this.config.country||"US").toUpperCase(),t=p(A.content,e),i=this.lastTimestamp||new Date,o=new Date(i.getTime()+(this.lastDelayMs||0));if(this.lastTimestamp=o,A.hasScreenshot&&A.screenshotUrl){const e={id:`sim-${this.currentMessageIndex}-text-${Date.now()}`,content:t,messageType:"text",timestamp:o,isOwnMessage:!1,virtualUser:A.virtualUser};this.displayedMessages.push(e),this.emit("message",e);const i=new Date(o.getTime()+2e3),n={id:`sim-${this.currentMessageIndex}-image-${Date.now()}`,content:this.resolveImageUrl(A.screenshotUrl),messageType:"image",timestamp:i,isOwnMessage:!1,virtualUser:A.virtualUser};this.displayedMessages.push(n),this.lastTimestamp=i,setTimeout(()=>{this.emit("message",n)},2e3)}else if("audio"===A.messageType){const e={id:`sim-${this.currentMessageIndex}-audio-${Date.now()}`,content:"",messageType:"audio",audioUrl:this.resolveImageUrl(A.audioUrl||""),timestamp:o,isOwnMessage:!1,virtualUser:A.virtualUser};this.displayedMessages.push(e),this.emit("message",e)}else{const e={id:`sim-${this.currentMessageIndex}-${Date.now()}`,content:t,messageType:A.messageType,timestamp:o,isOwnMessage:!1,virtualUser:A.virtualUser};this.displayedMessages.push(e),this.emit("message",e)}this.currentMessageIndex++,this.saveProgress()}async loadExistingMessages(){if(this.simulationData)try{const A=this.userId||this.config.userId||this.generateUserId(),e=await this.apiClient.getSimulationMessages(this.config.projectId,A,void 0,100);if(e.success&&e.messages&&e.messages.length>0){const t=e.messages.sort((A,e)=>new Date(A.createdAt||A.timestamp).getTime()-new Date(e.createdAt||e.timestamp).getTime()),i=new Set(this.displayedMessages.map(A=>A.id));for(const e of t){if(i.has(e.id))continue;const t=(this.config.country||"US").toUpperCase(),o={id:e.id,content:p(e.content||"",t),messageType:e.messageType,timestamp:new Date(e.createdAt||e.timestamp),isOwnMessage:e.userId===A,virtualUser:e.virtualUser,user:e.userId===A?{id:A,username:this.config.username||"You"}:void 0};this.displayedMessages.push(o)}if(t.length>0){const A=t[t.length-1];this.realLastTimestamp=new Date(A.createdAt||A.timestamp)}this.displayedMessages.length>0&&this.emit("messages-batch",[...this.displayedMessages])}}catch(A){console.warn("Failed to load existing messages:",A)}}startPolling(){this.pollingId&&(clearInterval(this.pollingId),this.pollingId=null),this.pollingId=setInterval(async()=>{await this.pollForNewMessages()},this.pollingIntervalMs)}stopPolling(){this.pollingId&&(clearInterval(this.pollingId),this.pollingId=null)}setPollingInterval(A){!A||A<=0||(this.pollingIntervalMs=A,this.pollingId&&this.startPolling())}get isPolling(){return!!this.pollingId}async pollForNewMessages(){if(this.simulationData)try{const A=this.userId||this.config.userId||this.generateUserId(),e=this.getLastMessageTimestamp(),t=await this.apiClient.getSimulationMessages(this.config.projectId,A,e);if(t.success&&t.messages&&t.messages.length>0){const e=new Set(this.displayedMessages.map(A=>A.id));let i=null;for(const o of t.messages){if(e.has(o.id))continue;const t=new Date(o.createdAt),n=(this.config.country||"US").toUpperCase(),s={id:o.id,content:p(o.content||"",n),messageType:o.messageType,timestamp:t,isOwnMessage:o.userId===A,virtualUser:o.virtualUser,user:o.userId===A?{id:A,username:this.config.username||"You"}:void 0};(!i||t>i)&&(i=t),this.displayedMessages.push(s),this.emit("message",s)}i&&(this.realLastTimestamp=i)}}catch(A){console.warn("Polling error:",A)}}async reconstructVirtualHistoryForDisplay(){if(!this.simulationData)return;const A=Math.min(this.currentMessageIndex,this.totalToShow,this.simulationData.messages.length);if(A<=0)return;const e=this.loadProgress(),t=(null==e?void 0:e.virtualMessages)||[];if(t.length>0){const A=[],e=new Set(this.displayedMessages.map(A=>A.id)),i=(this.config.country||"US").toUpperCase();for(const o of t)if(!e.has(o.id)){if("image"===o.messageType){const A=o.content||"";if(!A.startsWith("http")&&!A.startsWith("/uploads")&&!A.startsWith("/api"))continue}const e={id:o.id,content:"image"===o.messageType?this.resolveImageUrl(p(o.content||"",i)):"audio"===o.messageType?"":p(o.content||"",i),messageType:o.messageType,audioUrl:"audio"===o.messageType?this.resolveImageUrl(o.audioUrl||o.content||""):void 0,timestamp:new Date(o.timestamp),isOwnMessage:!1,virtualUser:o.virtualUser};A.push(e)}if(A.length>0){this.displayedMessages.push(...A),this.displayedMessages.sort((A,e)=>A.timestamp.getTime()-e.timestamp.getTime());const e=A[A.length-1];this.virtualLastTimestamp=e.timestamp,this.lastTimestamp=e.timestamp,this.emit("messages-batch",A)}return}const i=new Date,o=new Array(A);let n=new Date(i);for(let e=A-1;e>=0;e--)if(o[e]=new Date(n),e>0){const A=10+Math.floor(11*Math.random());n=new Date(n.getTime()-60*A*1e3)}const s=[],{messages:a}=this.simulationData,r=(this.config.country||"US").toUpperCase();for(let e=0;e<A;e++){const A=a[e],t=o[e],i=p(A.content,r);if(A.hasScreenshot&&A.screenshotUrl){const o={id:`sim-${e}-text`,content:i,messageType:"text",timestamp:t,isOwnMessage:!1,virtualUser:A.virtualUser},n={id:`sim-${e}-image`,content:this.resolveImageUrl(A.screenshotUrl),messageType:"image",timestamp:new Date(t.getTime()+2e3),isOwnMessage:!1,virtualUser:A.virtualUser};s.push(o,n)}else{const o={id:`sim-${e}`,content:i,messageType:A.messageType,timestamp:t,isOwnMessage:!1,virtualUser:A.virtualUser};s.push(o)}}const l=new Set(this.displayedMessages.map(A=>A.id)),U=s.filter(A=>!l.has(A.id));if(0===U.length)return;this.displayedMessages.push(...U),this.displayedMessages.sort((A,e)=>A.timestamp.getTime()-e.timestamp.getTime());const K=U[U.length-1];this.virtualLastTimestamp=K.timestamp,this.lastTimestamp=K.timestamp,this.emit("messages-batch",U)}getLastMessageTimestamp(){if(this.realLastTimestamp)return this.realLastTimestamp.toISOString()}getUserKey(){return`vcs:user:${this.config.projectId}`}getProgressKey(){const A=this.userId||this.config.userId||"anon";return`vcs:progress:${this.config.projectId}:${A}`}getPersistedUserId(){try{return"undefined"==typeof window?null:window.localStorage.getItem(this.getUserKey())}catch(A){return null}}persistUserId(A){try{if("undefined"==typeof window)return;window.localStorage.setItem(this.getUserKey(),A)}catch(A){}}loadProgress(){try{if("undefined"==typeof window)return null;const A=window.localStorage.getItem(this.getProgressKey());return A?JSON.parse(A):null}catch(A){return null}}saveProgress(){try{if("undefined"==typeof window)return;const A=this.displayedMessages.filter(A=>A.id.startsWith("sim-")).map(A=>({id:A.id,content:A.content,messageType:A.messageType,timestamp:A.timestamp.toISOString(),virtualUser:A.virtualUser})),e={index:this.currentMessageIndex,lastTimestamp:this.lastTimestamp?this.lastTimestamp.toISOString():void 0,virtualMessages:A};window.localStorage.setItem(this.getProgressKey(),JSON.stringify(e))}catch(A){}}clearProgress(){try{if("undefined"==typeof window)return;window.localStorage.removeItem(this.getProgressKey())}catch(A){}}clearCachedProgress(){this.clearProgress()}resolveImageUrl(A){if(!A)return"";if(A.startsWith("http://")||A.startsWith("https://"))return A;const e=(this.config.apiBaseUrl||"").replace(/\/$/,"");return e?`${e}${A}`:A}getRandomInterval(A,e){return 1e3*(A+Math.random()*(e-A))}generateUserId(){return`user-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}get messages(){return[...this.displayedMessages]}get isSimulationRunning(){return this.isRunning}get isSimulationPaused(){return this.isPaused}get data(){return this.simulationData}async sendMessage(A,e="text"){if(!this.simulationData)throw new Error("Simulation not initialized");const t=this.userId||this.config.userId||this.generateUserId(),i=this.config.username||"User";try{if("image"===e||"string"==typeof A&&A.startsWith("data:image/"))return;await Promise.all([this.apiClient.sendUserMessage(this.config.projectId,t,i,A,e),this.apiClient.triggerAIReply(this.config.projectId,t,i,A,e)])}catch(A){throw this.emit("error",A),A}}}class h{constructor(A){this.baseUrl=A.apiBaseUrl||window.location.origin,this.token=A.token}async request(e,t={}){const i=`${this.baseUrl}${e}`,o={"Content-Type":"application/json",...t.headers};this.token&&(o.Authorization=`Bearer ${this.token}`);try{const e=await fetch(i,{...t,headers:o,credentials:"include"});if(!e.ok)throw new A(`API request failed: ${e.status} ${e.statusText}`,"API_ERROR",{status:e.status,statusText:e.statusText});const n=await e.json();if(!n.success&&n.error)throw new A(n.error,"API_ERROR",n);return n}catch(e){if(e instanceof A)throw e;throw new A(`Network error: ${e.message}`,"NETWORK_ERROR",e)}}async getProject(A){return this.request(`/api/projects/${A}`)}async getTemplate(A,e,t){const i=new URLSearchParams;e&&i.set("lang",e),t&&i.set("country",t);const o=i.toString()?`?${i.toString()}`:"";return this.request(`/api/templates/${A}${o}`)}async getProjectTemplates(A){return this.request(`/api/projects/${A}/templates`)}async sendMessage(A,e,t,i="text"){return this.request("/api/chat/message",{method:"POST",body:JSON.stringify({projectId:A,userId:e,content:t,messageType:i})})}async joinProject(A,e,t){return this.request("/api/chat/join",{method:"POST",body:JSON.stringify({projectId:A,userId:e,username:t})})}async leaveProject(A,e){return this.request("/api/chat/leave",{method:"POST",body:JSON.stringify({projectId:A,userId:e})})}async getSimulationData(A,e,t,i){const o=new URLSearchParams({userId:e});return t&&o.append("lang",t),i&&o.append("country",i),this.request(`/api/chat/simulation/${A}?${o.toString()}`)}async getSimulationMessages(A,e,t,i){const o=new URLSearchParams({userId:e});return t&&o.append("since",t),i&&o.append("limit",i.toString()),this.request(`/api/chat/simulation/${A}/messages?${o.toString()}`)}async sendUserMessage(A,e,t,i,o="text"){return this.request("/api/chat/send",{method:"POST",body:JSON.stringify({projectId:A,userId:e,username:t,content:i,messageType:o})})}async triggerAIReply(A,e,t,i,o="text"){return this.request("/api/chat/ai-reply",{method:"POST",body:JSON.stringify({projectId:A,userId:e,username:t,content:i,messageType:o})})}setToken(A){this.token=A}setBaseUrl(A){this.baseUrl=A}}const d={en:{joinChat:"Join Chat",chatGroup:"{name} Group",online:"{count} online",inputPlaceholder:"Type a message...",send:"Send",messages:"messages",today:"Today",yesterday:"Yesterday",networkError:"Network error",sendFailed:"Failed to send"},zh:{joinChat:"加入群聊",chatGroup:"{name}交流群",online:"{count} 人在线",inputPlaceholder:"输入消息...",send:"发送",messages:"条消息",today:"今天",yesterday:"昨天",networkError:"网络错误",sendFailed:"发送失败"},"zh-TW":{joinChat:"加入群聊",chatGroup:"{name}交流群",online:"{count} 人在線",inputPlaceholder:"輸入訊息...",send:"發送",messages:"條訊息",today:"今天",yesterday:"昨天",networkError:"網路錯誤",sendFailed:"發送失敗"},es:{joinChat:"Unirse al Chat",chatGroup:"Grupo {name}",online:"{count} en línea",inputPlaceholder:"Escribe un mensaje...",send:"Enviar",messages:"mensajes",today:"Hoy",yesterday:"Ayer",networkError:"Error de red",sendFailed:"Error al enviar"},hi:{joinChat:"चैट में शामिल हों",chatGroup:"{name} समूह",online:"{count} ऑनलाइन",inputPlaceholder:"संदेश लिखें...",send:"भेजें",messages:"संदेश",today:"आज",yesterday:"कल",networkError:"नेटवर्क त्रुटि",sendFailed:"भेजने में विफल"},ar:{joinChat:"انضم للدردشة",chatGroup:"مجموعة {name}",online:"{count} متصل",inputPlaceholder:"اكتب رسالة...",send:"إرسال",messages:"رسائل",today:"اليوم",yesterday:"أمس",networkError:"خطأ في الشبكة",sendFailed:"فشل الإرسال"},pt:{joinChat:"Entrar no Chat",chatGroup:"Grupo {name}",online:"{count} online",inputPlaceholder:"Digite uma mensagem...",send:"Enviar",messages:"mensagens",today:"Hoje",yesterday:"Ontem",networkError:"Erro de rede",sendFailed:"Falha ao enviar"},bn:{joinChat:"চ্যাটে যোগ দিন",chatGroup:"{name} গ্রুপ",online:"{count} অনলাইন",inputPlaceholder:"একটি বার্তা লিখুন...",send:"পাঠান",messages:"বার্তা",today:"আজ",yesterday:"গতকাল",networkError:"নেটওয়ার্ক ত্রুটি",sendFailed:"পাঠাতে ব্যর্থ"},ru:{joinChat:"Присоединиться",chatGroup:"Группа {name}",online:"{count} онлайн",inputPlaceholder:"Введите сообщение...",send:"Отправить",messages:"сообщений",today:"Сегодня",yesterday:"Вчера",networkError:"Ошибка сети",sendFailed:"Не удалось отправить"},ja:{joinChat:"チャットに参加",chatGroup:"{name}グループ",online:"{count} オンライン",inputPlaceholder:"メッセージを入力...",send:"送信",messages:"メッセージ",today:"今日",yesterday:"昨日",networkError:"ネットワークエラー",sendFailed:"送信失敗"},de:{joinChat:"Chat beitreten",chatGroup:"{name} Gruppe",online:"{count} online",inputPlaceholder:"Nachricht eingeben...",send:"Senden",messages:"Nachrichten",today:"Heute",yesterday:"Gestern",networkError:"Netzwerkfehler",sendFailed:"Senden fehlgeschlagen"},fr:{joinChat:"Rejoindre le Chat",chatGroup:"Groupe {name}",online:"{count} en ligne",inputPlaceholder:"Tapez un message...",send:"Envoyer",messages:"messages",today:"Aujourd'hui",yesterday:"Hier",networkError:"Erreur réseau",sendFailed:"Échec de l'envoi"},ko:{joinChat:"채팅 참여",chatGroup:"{name} 그룹",online:"{count} 온라인",inputPlaceholder:"메시지 입력...",send:"전송",messages:"메시지",today:"오늘",yesterday:"어제",networkError:"네트워크 오류",sendFailed:"전송 실패"},it:{joinChat:"Unisciti alla Chat",chatGroup:"Gruppo {name}",online:"{count} online",inputPlaceholder:"Scrivi un messaggio...",send:"Invia",messages:"messaggi",today:"Oggi",yesterday:"Ieri",networkError:"Errore di rete",sendFailed:"Invio fallito"},tr:{joinChat:"Sohbete Katıl",chatGroup:"{name} Grubu",online:"{count} çevrimiçi",inputPlaceholder:"Bir mesaj yazın...",send:"Gönder",messages:"mesaj",today:"Bugün",yesterday:"Dün",networkError:"Ağ hatası",sendFailed:"Gönderilemedi"},vi:{joinChat:"Tham gia Chat",chatGroup:"Nhóm {name}",online:"{count} trực tuyến",inputPlaceholder:"Nhập tin nhắn...",send:"Gửi",messages:"tin nhắn",today:"Hôm nay",yesterday:"Hôm qua",networkError:"Lỗi mạng",sendFailed:"Gửi thất bại"},pl:{joinChat:"Dołącz do Czatu",chatGroup:"Grupa {name}",online:"{count} online",inputPlaceholder:"Wpisz wiadomość...",send:"Wyślij",messages:"wiadomości",today:"Dziś",yesterday:"Wczoraj",networkError:"Błąd sieci",sendFailed:"Nie udało się wysłać"},th:{joinChat:"เข้าร่วมแชท",chatGroup:"กลุ่ม {name}",online:"{count} ออนไลน์",inputPlaceholder:"พิมพ์ข้อความ...",send:"ส่ง",messages:"ข้อความ",today:"วันนี้",yesterday:"เมื่อวาน",networkError:"ข้อผิดพลาดเครือข่าย",sendFailed:"ส่งไม่สำเร็จ"},nl:{joinChat:"Deelnemen aan Chat",chatGroup:"{name} Groep",online:"{count} online",inputPlaceholder:"Typ een bericht...",send:"Verzenden",messages:"berichten",today:"Vandaag",yesterday:"Gisteren",networkError:"Netwerkfout",sendFailed:"Verzenden mislukt"},id:{joinChat:"Gabung Chat",chatGroup:"Grup {name}",online:"{count} online",inputPlaceholder:"Ketik pesan...",send:"Kirim",messages:"pesan",today:"Hari ini",yesterday:"Kemarin",networkError:"Kesalahan jaringan",sendFailed:"Gagal mengirim"},ms:{joinChat:"Sertai Chat",chatGroup:"Kumpulan {name}",online:"{count} dalam talian",inputPlaceholder:"Taip mesej...",send:"Hantar",messages:"mesej",today:"Hari ini",yesterday:"Semalam",networkError:"Ralat rangkaian",sendFailed:"Gagal menghantar"},ur:{joinChat:"چیٹ میں شامل ہوں",chatGroup:"{name} گروپ",online:"{count} آن لائن",inputPlaceholder:"پیغام ٹائپ کریں...",send:"بھیجیں",messages:"پیغامات",today:"آج",yesterday:"کل",networkError:"نیٹ ورک کی خرابی",sendFailed:"بھیجنے میں ناکام"},te:{joinChat:"చాట్‌లో చేరండి",chatGroup:"{name} సమూహం",online:"{count} ఆన్‌లైన్",inputPlaceholder:"సందేశాన్ని టైప్ చేయండి...",send:"పంపండి",messages:"సందేశాలు",today:"నేడు",yesterday:"నిన్న",networkError:"నెట్‌వర్క్ లోపం",sendFailed:"పంపడం విఫలమైంది"},mr:{joinChat:"चॅटमध्ये सामील व्हा",chatGroup:"{name} गट",online:"{count} ऑनलाइन",inputPlaceholder:"संदेश टाइप करा...",send:"पाठवा",messages:"संदेश",today:"आज",yesterday:"काल",networkError:"नेटवर्क त्रुटी",sendFailed:"पाठविण्यात अयशस्वी"},ta:{joinChat:"அரட்டையில் சேரவும்",chatGroup:"{name} குழு",online:"{count} ஆன்லைன்",inputPlaceholder:"ஒரு செய்தியை தட்டச்சு செய்யவும்...",send:"அனுப்பு",messages:"செய்திகள்",today:"இன்று",yesterday:"நேற்று",networkError:"நெட்வொர்க் பிழை",sendFailed:"அனுப்ப முடியவில்லை"},fa:{joinChat:"پیوستن به چت",chatGroup:"گروه {name}",online:"{count} آنلاین",inputPlaceholder:"پیامی تایپ کنید...",send:"ارسال",messages:"پیام‌ها",today:"امروز",yesterday:"دیروز",networkError:"خطای شبکه",sendFailed:"ارسال نشد"},uk:{joinChat:"Приєднатися до чату",chatGroup:"Група {name}",online:"{count} онлайн",inputPlaceholder:"Введіть повідомлення...",send:"Надіслати",messages:"повідомлень",today:"Сьогодні",yesterday:"Вчора",networkError:"Помилка мережі",sendFailed:"Не вдалося надіслати"},gu:{joinChat:"ચેટમાં જોડાઓ",chatGroup:"{name} જૂથ",online:"{count} ઓનલાઇન",inputPlaceholder:"સંદેશ લખો...",send:"મોકલો",messages:"સંદેશાઓ",today:"આજે",yesterday:"ગઈકાલે",networkError:"નેટવર્ક ભૂલ",sendFailed:"મોકલવામાં નિષ્ફળ"},ro:{joinChat:"Alătură-te chatului",chatGroup:"Grupul {name}",online:"{count} online",inputPlaceholder:"Scrie un mesaj...",send:"Trimite",messages:"mesaje",today:"Astăzi",yesterday:"Ieri",networkError:"Eroare de rețea",sendFailed:"Trimitere eșuată"},sv:{joinChat:"Gå med i chatt",chatGroup:"{name} grupp",online:"{count} online",inputPlaceholder:"Skriv ett meddelande...",send:"Skicka",messages:"meddelanden",today:"Idag",yesterday:"Igår",networkError:"Nätverksfel",sendFailed:"Det gick inte att skicka"},hu:{joinChat:"Csatlakozás a chathez",chatGroup:"{name} Csoport",online:"{count} online",inputPlaceholder:"Írjon egy üzenetet...",send:"Küldés",messages:"üzenet",today:"Ma",yesterday:"Tegnap",networkError:"Hálózati hiba",sendFailed:"Küldés sikertelen"},cs:{joinChat:"Připojit se k chatu",chatGroup:"Skupina {name}",online:"{count} online",inputPlaceholder:"Napište zprávu...",send:"Odeslat",messages:"zpráv",today:"Dnes",yesterday:"Včera",networkError:"Chyba sítě",sendFailed:"Odeslání selhalo"},el:{joinChat:"Εγγραφή στο Chat",chatGroup:"Ομάδα {name}",online:"{count} online",inputPlaceholder:"Πληκτρολογήστε ένα μήνυμα...",send:"Αποστολή",messages:"μηνύματα",today:"Σήμερα",yesterday:"Χθες",networkError:"Σφάλμα δικτύου",sendFailed:"Αποτυχία αποστολής"},da:{joinChat:"Deltag i chat",chatGroup:"{name} Gruppe",online:"{count} online",inputPlaceholder:"Skriv en besked...",send:"Send",messages:"beskeder",today:"I dag",yesterday:"I går",networkError:"Netværksfejl",sendFailed:"Kunne ikke sende"},fi:{joinChat:"Liity chattiin",chatGroup:"{name} Ryhmä",online:"{count} paikalla",inputPlaceholder:"Kirjoita viesti...",send:"Lähetä",messages:"viestiä",today:"Tänään",yesterday:"Eilen",networkError:"Verkkovirhe",sendFailed:"Lähetys epäonnistui"},no:{joinChat:"Bli med i chat",chatGroup:"{name} Gruppe",online:"{count} pålogget",inputPlaceholder:"Skriv en melding...",send:"Send",messages:"meldinger",today:"I dag",yesterday:"I går",networkError:"Nettverksfeil",sendFailed:"Sending mislyktes"},he:{joinChat:"הצטרף לצ'אט",chatGroup:"קבוצת {name}",online:"{count} מחוברים",inputPlaceholder:"הקלד הודעה...",send:"שלח",messages:"הודעות",today:"היום",yesterday:"אתמול",networkError:"שגיאת רשת",sendFailed:"השליחה נכשלה"},tl:{joinChat:"Sumali sa Chat",chatGroup:"Grupong {name}",online:"{count} online",inputPlaceholder:"Mag-type ng mensahe...",send:"Ipadala",messages:"mga mensahe",today:"Ngayon",yesterday:"Kahapon",networkError:"Error sa network",sendFailed:"Nabigong ipadala"},sw:{joinChat:"Jiunge na Gumzo",chatGroup:"Kundi la {name}",online:"{count} mtandaoni",inputPlaceholder:"Andika ujumbe...",send:"Tuma",messages:"jumbe",today:"Leo",yesterday:"Jana",networkError:"Tatizo la mtandao",sendFailed:"Imeshindwa kutuma"},"pt-BR":{joinChat:"Entrar no Chat",chatGroup:"Grupo {name}",online:"{count} online",inputPlaceholder:"Escreva uma mensagem...",send:"Enviar",messages:"mensagens",today:"Hoje",yesterday:"Ontem",networkError:"Erro de rede",sendFailed:"Falha ao enviar"}};function g(A){if(d[A])return d[A];const e=A.split("-")[0];return d[e]?d[e]:d.en}function c(A,e){return A.replace(/\{(\w+)\}/g,(A,t)=>void 0!==e[t]?String(e[t]):A)}class F extends e{constructor(A){var e,t;super(),this.emojiPanelOpen=!1,this.onlineCount=0,this.currentTheme="whatsapp",this.isDarkMode=!1,this.customColors={},this.visibleStartIndex=0,this.hasInitializedData=!1,this.pollingStopTimer=null,this.currentAudio=null,this.currentVoiceContainer=null,this.config={...A,mode:A.mode||"floating"},this.t=g(A.language||"en"),this.currentTheme="telegram"===A.uiTemplate?"telegram":"whatsapp",this.isDarkMode="dark"===A.theme,this.customColors={primary:A.primaryColor,background:A.backgroundColor},this.onlineCount=500+Math.floor(301*Math.random()),this.initialRenderCount=null!==(e=this.config.initialRenderCount)&&void 0!==e?e:Number.MAX_SAFE_INTEGER,this.lazyLoadBatchSize=null!==(t=this.config.lazyLoadBatchSize)&&void 0!==t?t:20,this.state={isInitialized:!1,isOpen:!1,isJoined:!1,isConnected:!1,isSimulationRunning:!1,isSimulationPaused:!1,messages:[],virtualUsers:[],realUsers:[],typingUsers:[],simulationEnded:!1,displayedMessageCount:0,unreadCount:0,lastReadMessageId:null},this.apiClient=new h(A),this.simulator=new K(A,this.apiClient),this.setupSimulatorEvents(),this.init()}init(){try{this.setupContainer(),this.createWidget(),"floating"===this.config.mode&&(this.widgetElement.style.display="none",this.createFloatingButton()),this.setupEventListeners(),this.setupImageViewer(),this.state.isInitialized=!0,this.emit("ready")}catch(e){this.emit("error",new A("Failed to initialize chat widget","WIDGET_INIT_ERROR",e))}}setupSimulatorEvents(){this.simulator.on("initialized",A=>{var e;this.state.currentProject=A.project,this.state.currentTemplate=A.template,null!=this.config.initialRenderCount?this.initialRenderCount=this.config.initialRenderCount:this.initialRenderCount=Number.MAX_SAFE_INTEGER,this.setTitle((null===(e=A.project)||void 0===e?void 0:e.name)||"Chat",`0 ${this.t.messages}`),this.setLoading(!1),this.emit("simulationInitialized",A)}),this.simulator.on("message",A=>{var e;this.setLoading(!1),this.addMessage(A),this.state.displayedMessageCount++;const t=(null===(e=this.state.currentProject)||void 0===e?void 0:e.name)||"Chat";this.setTitle(t,`${this.state.displayedMessageCount} ${this.t.messages}`)}),this.simulator.on("messages-batch",A=>{var e;this.setLoading(!1),this.addMessagesBulk(A),this.state.displayedMessageCount+=A.length;const t=(null===(e=this.state.currentProject)||void 0===e?void 0:e.name)||"Chat";this.setTitle(t,`${this.state.displayedMessageCount} ${this.t.messages}`),setTimeout(()=>{this.scrollToBottom(!0)},100)}),this.simulator.on("simulationStart",()=>{var A,e;this.state.isSimulationRunning=!0,this.state.isSimulationPaused=!1,null===(e=(A=this.config).onSimulationStart)||void 0===e||e.call(A)}),this.simulator.on("simulationEnd",()=>{var A,e;this.state.isSimulationRunning=!1,this.state.simulationEnded=!0,null===(e=(A=this.config).onSimulationEnd)||void 0===e||e.call(A)}),this.simulator.on("simulationPause",()=>{this.state.isSimulationPaused=!0}),this.simulator.on("simulationResume",()=>{this.state.isSimulationPaused=!1}),this.simulator.on("error",A=>{this.emit("error",A)})}async initializeSimulation(){try{await this.simulator.initialize()}catch(e){this.emit("error",new A("Failed to initialize simulation","SIMULATION_INIT_ERROR",e))}}setupContainer(){var e;const t=function(A){if("string"==typeof A)return document.querySelector(A)||document.body;return A||document.body}(this.config.container);if(!t)throw new A("Container element not found","CONTAINER_NOT_FOUND");const i=null===(e=t.tagName)||void 0===e?void 0:e.toUpperCase();if("BODY"===i||"HTML"===i){const A=document.createElement("div");A.className="chat-sdk-host",A.style.position="static",A.style.width="0",A.style.height="0",document.body.appendChild(A),this.container=A}else this.container=t;this.shadowRoot=this.container.attachShadow({mode:"closed"});const o=this.getDefaultStyles();!function(A,e){const t=document.createElement("style");t.textContent=e,A.appendChild(t)}(this.shadowRoot,o)}createWidget(){var A;if(this.widgetElement&&this.messagesContainer)return;this.widgetElement=t("div","chat-sdk-container");const e="telegram"===this.config.uiTemplate?"telegram":"whatsapp";this.currentTheme=e,this.widgetElement.classList.add(`${e}-theme`),"telegram"===e&&"dark"===this.config.theme&&(this.widgetElement.classList.add("dark"),this.isDarkMode=!0),this.widgetElement.style.position="fixed",this.widgetElement.style.top="0",this.widgetElement.style.left="0",this.widgetElement.style.width="100vw",this.widgetElement.style.height="100vh",this.widgetElement.style.zIndex=String(null!==(A=this.config.zIndex)&&void 0!==A?A:2147483e3),this.widgetElement.innerHTML=`\n <div class="chat-sdk-header">\n <div class="chat-sdk-header-left">\n <div class="chat-sdk-title" id="chat-title"></div>\n <div class="chat-sdk-subtitle" id="chat-subtitle"></div>\n </div>\n <button class="chat-sdk-close-btn" type="button">\n <svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor">\n <path d="M8 7.293l2.146-2.147a.5.5 0 01.708.708L8.707 8l2.147 2.146a.5.5 0 01-.708.708L8 8.707l-2.146 2.147a.5.5 0 01-.708-.708L7.293 8 5.146 5.854a.5.5 0 01.708-.708L8 7.293z"/>\n </svg>\n </button>\n </div>\n\n <div class="chat-sdk-messages" id="messages-container">\n <div class="chat-sdk-loading">\n <div class="chat-sdk-spinner"></div>\n Loading chat...\n </div>\n </div>\n\n <div class="chat-sdk-input-area">\n <button class="chat-sdk-icon-btn chat-sdk-emoji-btn" type="button" id="emoji-button" aria-label="Emoji">\n <span>😊</span>\n </button>\n <button class="chat-sdk-icon-btn chat-sdk-image-btn" type="button" id="image-button" aria-label="Image">\n <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M21 19V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14h18zM5 5h14v8l-3-3-4 5-3-4-4 4V5z"/></svg>\n </button>\n <textarea\n class="chat-sdk-input"\n placeholder="${this.t.inputPlaceholder}"\n rows="1"\n id="message-input"\n ></textarea>\n <input type="file" accept="image/*" id="image-input" style="display:none" />\n <button class="chat-sdk-send-btn" type="button" id="send-button" disabled>\n <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">\n <path d="M15.854.146a.5.5 0 01.11.54l-5.819 14.547a.75.75 0 01-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 01.124-1.33L15.314.037a.5.5 0 01.54.11z"/>\n </svg>\n </button>\n </div>\n <div class="chat-sdk-emoji-picker" id="emoji-picker" style="display:none">\n <div class="chat-sdk-emoji-grid">\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😀">😀</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😁">😁</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😂">😂</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🤣">🤣</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😊">😊</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😍">😍</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="😎">😎</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🤔">🤔</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="👍">👍</button>\n <button type="button" class="chat-sdk-emoji-item" data-emoji="🙏">🙏</button>\n </div>\n </div>\n `,this.messagesContainer=this.widgetElement.querySelector("#messages-container"),this.inputElement=this.widgetElement.querySelector("#message-input"),this.sendButton=this.widgetElement.querySelector("#send-button"),this.emojiButton=this.widgetElement.querySelector("#emoji-button"),this.imageButton=this.widgetElement.querySelector("#image-button"),this.fileInput=this.widgetElement.querySelector("#image-input"),this.emojiPicker=this.widgetElement.querySelector("#emoji-picker"),this.shadowRoot.appendChild(this.widgetElement)}setupEventListeners(){var A,e,t,i;const o=this.widgetElement.querySelector(".chat-sdk-close-btn");null==o||o.addEventListener("click",()=>this.close()),this.messagesContainer.addEventListener("scroll",this.handleScrollLazyLoad.bind(this)),this.inputElement.addEventListener("input",this.handleInputChange.bind(this)),this.inputElement.addEventListener("keydown",this.handleKeyDown.bind(this)),this.sendButton.addEventListener("click",this.handleSendMessage.bind(this)),this.inputElement.addEventListener("input",this.autoResizeTextarea.bind(this)),null===(A=this.emojiButton)||void 0===A||A.addEventListener("click",A=>{A.preventDefault(),A.stopPropagation(),this.toggleEmojiPicker(!this.emojiPanelOpen)}),null===(e=this.emojiPicker)||void 0===e||e.addEventListener("click",A=>{const e=A.target.closest(".chat-sdk-emoji-item");if(e&&e.hasAttribute("data-emoji")){const A=e.getAttribute("data-emoji")||"";this.insertEmojiAtCursor(A),this.toggleEmojiPicker(!1)}}),this.shadowRoot.addEventListener("click",A=>{const e=A.target,t=e.closest("#emoji-picker"),i=e.closest("#emoji-button");t||i||this.toggleEmojiPicker(!1)}),null===(t=this.imageButton)||void 0===t||t.addEventListener("click",A=>{var e;A.preventDefault(),A.stopPropagation(),null===(e=this.fileInput)||void 0===e||e.click()}),null===(i=this.fileInput)||void 0===i||i.addEventListener("change",this.handleImageSelected.bind(this)),document.addEventListener("keydown",A=>{if("Escape"===A.key){const A=document.querySelector(".chat-sdk-viewer-overlay");if(A)return A.style.opacity="0",void setTimeout(()=>A.remove(),200);this.state.isOpen&&this.close()}})}openImageZoom(A){const e=document.querySelector(".chat-sdk-global-zoom-overlay");e&&e.remove();const t=document.createElement("div");t.className="chat-sdk-global-zoom-overlay",Object.assign(t.style,{position:"fixed",top:"0",left:"0",width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.85)",zIndex:"2147483647",display:"flex",justifyContent:"center",alignItems:"center",cursor:"zoom-out",backdropFilter:"blur(4px)",opacity:"0",transition:"opacity 0.2s ease-in-out"});const i=document.createElement("img");i.src=A,Object.assign(i.style,{maxWidth:"80%",maxHeight:"90%",width:"80%",objectFit:"contain",borderRadius:"8px",boxShadow:"0 4px 20px rgba(0,0,0,0.5)",transform:"scale(0.9)",transition:"transform 0.2s cubic-bezier(0.1, 0.9, 0.2, 1)"}),t.addEventListener("click",()=>{t.style.opacity="0",i.style.transform="scale(0.9)",setTimeout(()=>t.remove(),200)}),t.appendChild(i),document.body.appendChild(t),requestAnimationFrame(()=>{t.style.opacity="1",i.style.transform="scale(1)"})}createFloatingButton(){var A,e,t,i,o,n,s,a,r,l,U;if(!this.shadowRoot)return;const p=this.config.floatingButton||{},K=p.position||"bottom-right",h=String(null!==(e=null!==(A=p.zIndex)&&void 0!==A?A:this.config.zIndex)&&void 0!==e?e:2147483e3),d={top:null===(t=p.offset)||void 0===t?void 0:t.top,right:null===(i=p.offset)||void 0===i?void 0:i.right,bottom:null!==(n=null===(o=p.offset)||void 0===o?void 0:o.bottom)&&void 0!==n?n:20,left:null===(s=p.offset)||void 0===s?void 0:s.left},g=document.createElement("button");g.className="chat-sdk-floating-btn",g.setAttribute("aria-label","Open chat");const c=this.t.joinChat;g.innerHTML=`\n <div style="\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 6px;\n ">\n \x3c!-- Group chat icon (users) --\x3e\n <svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor" style="margin-bottom: 2px;">\n <path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/>\n </svg>\n\n \x3c!-- Text overlay at bottom --\x3e\n <div style="\n font-size: 10px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.95);\n text-align: center;\n line-height: 1.2;\n letter-spacing: 0.3px;\n text-shadow: 0 1px 2px rgba(0,0,0,0.2);\n ">${c}</div>\n\n \x3c!-- Unread badge --\x3e\n <span class="chat-sdk-unread-badge" style="\n position: absolute;\n top: -6px;\n right: -6px;\n background: #ff4444;\n color: white;\n border-radius: 10px;\n min-width: 18px;\n height: 18px;\n display: none;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n border: 2px solid white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.3);\n padding: 0 5px;\n "></span>\n </div>\n `,g.style.position="fixed",g.style.zIndex=h,g.style.width="60px",g.style.height="60px",g.style.borderRadius="50%",g.style.border="none",g.style.cursor="pointer",g.style.display="flex",g.style.alignItems="center",g.style.justifyContent="center",g.style.color="#fff",g.style.boxShadow="0 10px 24px rgba(0,0,0,0.25), inset 0 2px 4px rgba(255,255,255,0.15)",g.style.background="linear-gradient(145deg, #25D366 0%, #128C7E 100%)",g.style.transition="transform .15s ease, box-shadow .15s ease",g.style.overflow="visible",K.includes("bottom")?(g.style.bottom=(null!==(a=d.bottom)&&void 0!==a?a:20)+"px",g.style.top=""):(g.style.top=(null!==(r=d.top)&&void 0!==r?r:20)+"px",g.style.bottom=""),K.includes("right")?(g.style.right=(null!==(l=d.right)&&void 0!==l?l:20)+"px",g.style.left=""):(g.style.left=(null!==(U=d.left)&&void 0!==U?U:20)+"px",g.style.right=""),g.addEventListener("mouseenter",()=>{g.style.transform="scale(1.06)",g.style.boxShadow="0 14px 28px rgba(0,0,0,0.30), inset 0 2px 4px rgba(255,255,255,0.2)"}),g.addEventListener("mouseleave",()=>{g.style.transform="scale(1)",g.style.boxShadow="0 10px 24px rgba(0,0,0,0.25), inset 0 2px 4px rgba(255,255,255,0.15)"}),g.addEventListener("mousedown",()=>{g.style.transform="scale(0.95)"}),g.addEventListener("mouseup",()=>{g.style.transform="scale(1.05)",setTimeout(()=>g.style.transform="scale(1)",100)}),g.addEventListener("click",A=>{A.preventDefault(),this.open()}),this.shadowRoot.appendChild(g),this.floatingButtonEl=g}updateUnreadBadge(){if(!this.floatingButtonEl)return;const A=this.floatingButtonEl.querySelector(".chat-sdk-unread-badge");if(!A)return;const e=this.state.unreadCount;e>0?(A.textContent=e>99?"99+":e.toString(),A.style.display="flex"):A.style.display="none"}markAllAsRead(){if(this.state.messages.length>0){const A=this.state.messages[this.state.messages.length-1];this.state.lastReadMessageId=A.id}this.state.unreadCount=0,this.updateUnreadBadge()}incrementUnreadCount(){this.state.isOpen||(this.state.unreadCount++,this.updateUnreadBadge())}toggleEmojiPicker(A){const e=this.emojiPicker;if(!e)return;const t="boolean"==typeof A?A:"none"===e.style.display;e.style.display=t?"block":"none",this.emojiPanelOpen=t}insertEmojiAtCursor(A){const e=this.inputElement,t=e.selectionStart||0,i=e.selectionEnd||0,o=e.value.substring(0,t),n=e.value.substring(i);e.value=o+A+n;const s=t+A.length;e.setSelectionRange(s,s),e.focus(),this.handleInputChange(),this.autoResizeTextarea()}isEmojiOnly(A){const e=A.trim();if(!e)return!1;if(e.length>6)return!1;let t=!1;for(let A=0;A<e.length;){const i=e.codePointAt(A)||0;if(A+=i>65535?2:1,!(i>=126976))return!1;t=!0}return t}async handleImageSelected(){const e=this.fileInput;if(!e||!e.files||0===e.files.length)return;const t=e.files[0];try{const A=await this.resizeImageFile(t,1280,.85),i={id:`local-img-failed-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,content:A,messageType:"image",timestamp:new Date,isOwnMessage:!0,user:{id:this.config.userId||"me",username:this.config.username||"You"},failed:!0};this.state.messages.push(i),this.renderMessage(i),this.scrollToBottom(!0),e.value=""}catch(e){console.error("Image processing failed",e),this.emit("error",new A("Image processing failed","IMAGE_PROCESS_ERROR",e))}}resizeImageFile(A,e=1280,t=.85){return new Promise((i,o)=>{const n=URL.createObjectURL(A),s=new Image;s.onload=()=>{let{width:A,height:a}=s;const r=Math.min(1,e/Math.max(A,a)),l=document.createElement("canvas");r<1&&(A=Math.round(A*r),a=Math.round(a*r)),l.width=A,l.height=a;const U=l.getContext("2d");if(!U)return URL.revokeObjectURL(n),void o(new Error("Canvas not supported"));U.drawImage(s,0,0,A,a);const p=l.toDataURL("image/jpeg",t);URL.revokeObjectURL(n),i(p)},s.onerror=A=>{URL.revokeObjectURL(n),o(A)},s.src=n})}handleInputChange(){const A=this.inputElement.value.trim().length>0,e=!1!==this.config.enableUserInput&&!1!==this.config.allowInput;this.sendButton.disabled=!A||!e,A&&e&&this.emit("typing")}handleKeyDown(A){"Enter"!==A.key||A.shiftKey||(A.preventDefault(),this.handleSendMessage())}async handleSendMessage(){const e=this.inputElement.value.trim();if(!e)return;if(!1===this.config.enableUserInput||!1===this.config.allowInput)return;const t=this.isEmojiOnly(e)?"emoji":"text",i={id:`local-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,content:e,messageType:t,timestamp:new Date,isOwnMessage:!0,user:{id:this.config.userId||"me",username:this.config.username||"You"}};this.state.messages.push(i),this.renderMessage(i),this.scrollToBottom(!0),this.inputElement.value="",this.sendButton.disabled=!0,this.autoResizeTextarea(),this.simulator.sendMessage(e,t).catch(e=>{console.error("Failed to send message:",e),this.emit("error",new A("Failed to send message","SEND_MESSAGE_ERROR",e))})}autoResizeTextarea(){this.inputElement.style.height="auto",this.inputElement.style.height=Math.min(this.inputElement.scrollHeight,100)+"px"}open(){var A;if(this.state.isOpen)return;if(this.hasInitializedData)try{this.simulator.startPolling()}catch(A){}else this.hasInitializedData=!0,this.setLoading(!0),this.initializeSimulation().catch(A=>{console.error("Failed to initialize simulation on open:",A),this.setLoading(!1)});this.pollingStopTimer&&(clearTimeout(this.pollingStopTimer),this.pollingStopTimer=null),this.floatingButtonEl&&(this.floatingButtonEl.style.display="none"),this.widgetElement.style.opacity="0",this.widgetElement.style.display="flex",requestAnimationFrame(()=>{this.widgetElement.style.transition="opacity .2s ease",this.widgetElement.style.opacity="1"}),this.state.isOpen=!0,this.markAllAsRead(),this.emit("open");const e=(null===(A=this.state.currentProject)||void 0===A?void 0:A.name)||"Chat";this.setTitle(e,`${this.state.displayedMessageCount} ${this.t.messages}`),this.scrollToBottom(!0),requestAnimationFrame(()=>this.scrollToBottom(!0)),setTimeout(()=>this.scrollToBottom(!0),0)}close(){this.state.isOpen&&(this.widgetElement.style.transition="opacity .2s ease",this.widgetElement.style.opacity="0",setTimeout(()=>{this.widgetElement.style.display="none",this.floatingButtonEl&&(this.floatingButtonEl.style.display="flex")},200),this.state.isOpen=!1,this.pollingStopTimer&&clearTimeout(this.pollingStopTimer),this.pollingStopTimer=setTimeout(()=>{try{this.simulator.stopPolling()}catch(A){}this.pollingStopTimer=null},1e4),this.emit("close"))}setTitle(A,e){var t,i;const o=null===(t=this.widgetElement)||void 0===t?void 0:t.querySelector("#chat-title"),n=null===(i=this.widgetElement)||void 0===i?void 0:i.querySelector("#chat-subtitle"),s=c(this.t.chatGroup,{name:A||"Chat"});this.currentTheme,o&&(o.textContent=s),n&&(n.textContent=c(this.t.online,{count:this.onlineCount}),n.style.display="block")}buildMessageElement(A,e){const i=t("div","chat-sdk-message");A.isOwnMessage&&i.classList.add("own");const o=!!e&&this.shouldGroupWithPrev(e,A);o&&i.classList.add("grouped");let n=null;A.isOwnMessage||(n=this.createAvatar(A),o&&n&&(n.style.visibility="hidden"));const s=!A.isOwnMessage&&!o,a="whatsapp"===this.currentTheme,r="telegram"===this.currentTheme&&A.isOwnMessage,l=this.createMessageContent(A,s,a,r);return n&&i.appendChild(n),i.appendChild(l),i}shouldGroupWithPrev(A,e){var t,i,o,n,s,a,r;if(!1===this.config.groupMessages)return!1;const l=null!==(t=this.config.groupTimeThresholdSec)&&void 0!==t?t:120,U=A.isOwnMessage===e.isOwnMessage,p=(null===(i=A.virtualUser)||void 0===i?void 0:i.id)&&(null===(o=A.virtualUser)||void 0===o?void 0:o.id)===(null===(n=e.virtualUser)||void 0===n?void 0:n.id),K=(null===(s=A.user)||void 0===s?void 0:s.id)&&(null===(a=A.user)||void 0===a?void 0:a.id)===(null===(r=e.user)||void 0===r?void 0:r.id),h=U&&(p||K||A.isOwnMessage&&e.isOwnMessage),d=Math.abs(e.timestamp.getTime()-A.timestamp.getTime())/1e3;return!!h&&d<=l}handleScrollLazyLoad(){if(this.messagesContainer.scrollTop<=20&&this.visibleStartIndex>0){const A=this.messagesContainer.scrollHeight,e=this.lazyLoadBatchSize,t=Math.max(0,this.visibleStartIndex-e),i=this.state.messages.slice(t,this.visibleStartIndex),o=document.createDocumentFragment();for(const A of i){const e=this.buildMessageElement(A);o.appendChild(e)}this.messagesContainer.insertBefore(o,this.messagesContainer.firstChild),this.visibleStartIndex=t;const n=this.messagesContainer.scrollHeight;this.messagesContainer.scrollTop+=n-A}}setLoading(A){if(A){if(!this.messagesContainer.querySelector(".chat-sdk-loading")){const A=document.createElement("div");A.className="chat-sdk-loading",A.innerHTML='\n <div class="chat-sdk-spinner"></div>\n Loading chat...\n ',this.messagesContainer.appendChild(A)}}else{const A=this.messagesContainer.querySelector(".chat-sdk-loading");null==A||A.remove()}}showJoinOverlay(){const A=t("div","chat-sdk-overlay");A.innerHTML='\n <div class="chat-sdk-join-card">\n <h3 class="chat-sdk-join-title">Join the conversation</h3>\n <p class="chat-sdk-join-description">\n Click below to join this group chat and start interacting with other members.\n </p>\n <button class="chat-sdk-join-btn" type="button">Join Chat</button>\n </div>\n ';const e=A.querySelector(".chat-sdk-join-btn");null==e||e.addEventListener("click",()=>{this.hideJoinOverlay(),this.emit("join-requested")}),this.widgetElement.appendChild(A)}hideJoinOverlay(){const A=this.widgetElement.querySelector(".chat-sdk-overlay");A&&A.remove()}addMessage(A){if(A.isOwnMessage)for(let e=this.state.messages.length-1;e>=0;e--){const t=this.state.messages[e];if(t.isOwnMessage&&t.content===A.content){if(Math.abs(A.timestamp.getTime()-t.timestamp.getTime())<=1e4)return;break}}this.state.messages.find(e=>e.id===A.id)?console.warn("Duplicate message detected and ignored:",A.id):(this.state.messages.push(A),this.renderMessage(A),A.isOwnMessage||this.incrementUnreadCount(),this.scrollToBottom(!0))}addMessagesBulk(A){if(!A||0===A.length)return;if(0===this.messagesContainer.querySelectorAll(".chat-sdk-message").length){this.state.messages=[...A].sort((A,e)=>A.timestamp.getTime()-e.timestamp.getTime());const e=this.state.messages.length,t=this.initialRenderCount;this.visibleStartIndex=Math.max(0,e-t);const i=this.state.messages.slice(this.visibleStartIndex),o=document.createDocumentFragment();let n;for(const A of i){const e=this.buildMessageElement(A,n);o.appendChild(e),n=A}this.messagesContainer.appendChild(o),setTimeout(()=>{this.scrollToBottom(!0)},0)}else{const e=new Set(this.state.messages.map(A=>A.id)),t=A.filter(A=>!e.has(A.id));if(t.length>0){this.state.messages.push(...t),this.state.messages.sort((A,e)=>A.timestamp.getTime()-e.timestamp.getTime()),this.messagesContainer.innerHTML="";const A=this.state.messages.length,e=this.initialRenderCount;this.visibleStartIndex=Math.max(0,A-e);const i=this.state.messages.slice(this.visibleStartIndex),o=document.createDocumentFragment();let n;for(const A of i){const e=this.buildMessageElement(A,n);o.appendChild(e),n=A}this.messagesContainer.appendChild(o),this.scrollToBottom()}}}reRenderAllMessages(){this.messagesContainer.innerHTML="";const A=this.state.messages.length,e=Math.max(0,A-this.initialRenderCount);this.state.messages.slice(e).forEach(A=>{this.renderMessage(A)}),this.scrollToBottom()}renderMessage(A){const e=this.state.messages.length-1,t=e>0?this.state.messages[e-1]:void 0,i=this.buildMessageElement(A,t);this.messagesContainer.appendChild(i)}createAvatar(A){var e,i,o,n;const s=t("div","chat-sdk-message-avatar");if(null===(e=A.virtualUser)||void 0===e?void 0:e.avatar)s.style.backgroundImage=`url(${A.virtualUser.avatar})`,s.style.backgroundSize="cover",s.style.backgroundPosition="center";else if(null===(i=A.user)||void 0===i?void 0:i.avatar)s.style.backgroundImage=`url(${A.user.avatar})`,s.style.backgroundSize="cover",s.style.backgroundPosition="center";else{const e=(null===(o=A.virtualUser)||void 0===o?void 0:o.username)||(null===(n=A.user)||void 0===n?void 0:n.username)||"U";s.textContent=e.charAt(0).toUpperCase()}return s}createMessageContent(A,e=!0,o=!1,n=!1){var s,a,r;const l=t("div","chat-sdk-message-content"),U=(null===(s=A.virtualUser)||void 0===s?void 0:s.displayName)||(null===(a=A.virtualUser)||void 0===a?void 0:a.username)||(null===(r=A.user)||void 0===r?void 0:r.username)||"Unknown";let p="";if("image"===A.messageType){p=`\n <div class="chat-sdk-message-image${A.failed?" failed":""}">\n <img src="${i(A.content)}" alt="Image"\n style="max-width: 200px; max-height: 280px; width: 100%; height: auto; cursor: pointer; display: block; border-radius: 8px; object-fit: cover;"\n data-image-url="${i(A.content)}"\n class="chat-sdk-image-preview" />\n </div>\n `}else if("audio"===A.messageType){const e=i(A.audioUrl||A.content||""),t=A.isOwnMessage,o=t?"#ffffff":"#3390ec",n=t?"rgba(255,255,255,0.5)":"#d4d6d9",s=t?"rgba(255,255,255,0.8)":"#9e9e9e";p=`\n <div class="chat-sdk-voice-msg" data-audio-src="${e}" style="display:flex;align-items:center;gap:10px;min-width:210px;max-width:270px;padding:4px 2px;">\n <button class="chat-sdk-voice-play-btn" style="width:40px;height:40px;border-radius:50%;border:none;background:${t?"rgba(255,255,255,0.2)":"#3390ec"};color:${"#ffffff"};font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity 0.15s;box-shadow:0 1px 2px rgba(0,0,0,0.1);">\n <svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>\n </button>\n <div class="chat-sdk-voice-waveform" style="display:flex;align-items:center;flex:1;height:28px;overflow:hidden;cursor:pointer;">\n ${Array.from({length:28},()=>{const A=4+Math.floor(18*Math.random());return`<span class="chat-sdk-voice-bar" data-active-color="${o}" data-inactive-color="${n}" style="display:inline-block;width:3px;height:${A}px;border-radius:1.5px;background:${n};margin:0 1px;transition:background 0.15s;vertical-align:middle;flex-shrink:0"></span>`}).join("")}\n </div>\n <span class="chat-sdk-voice-duration" style="font-size:12px;color:${s};min-width:32px;text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums;margin-top:14px;">0:00</span>\n </div>`}else p="emoji"===A.messageType?`<div class="chat-sdk-message-emoji" style="font-size: 2em; line-height: 1;">${i(A.content)}</div>`:`<p class="chat-sdk-message-text">${i(A.content)}</p>`;const K=`${function(A,e){const t=new Date,i=Math.floor((t.getTime()-A.getTime())/1e3),o=(e||("undefined"!=typeof navigator?navigator.language:"en")).toLowerCase().startsWith("zh");if(i<60)return o?"刚刚":"just now";if(i<3600){const A=Math.floor(i/60);return o?`${A} 分钟前`:`${A}m ago`}if(i<86400){const A=Math.floor(i/3600);return o?`${A} 小时前`:`${A}h ago`}const n=new Date(t.getFullYear(),t.getMonth(),t.getDate());if(A>=new Date(n.getTime()-864e5)&&A<n){const e=A.toLocaleTimeString(o?"zh-CN":void 0,{hour:"2-digit",minute:"2-digit",hour12:!1});return o?`昨天 ${e}`:`yesterday ${e}`}return t.getTime()-A.getTime()<6048e5?A.toLocaleString(o?"zh-CN":void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):A.toLocaleString(o?"zh-CN":void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}(A.timestamp,this.config.language)}`,h=n?'<span class="chat-sdk-read-status">✓✓</span>':"",d=A.failed&&A.isOwnMessage?'<div class="chat-sdk-message-failed-indicator">\n <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">\n <circle cx="8" cy="8" r="8" fill="#ff4444"/>\n <path d="M8 4v4M8 10h.01" stroke="white" stroke-width="1.5" stroke-linecap="round"/>\n </svg>\n </div>':"";return l.innerHTML=o?`\n <div class="chat-sdk-message-bubble">\n ${e&&!A.isOwnMessage?`<div class="chat-sdk-message-username">${i(U)}</div>`:""}\n ${p}\n <div class="chat-sdk-message-time-inside">${K}${h?" "+h:""}</div>\n </div>\n ${d}\n `:`\n ${e&&!A.isOwnMessage?`<div class="chat-sdk-message-username">${i(U)}</div>`:""}\n <div class="chat-sdk-message-bubble">\n ${p}\n </div>\n <div class="chat-sdk-message-time">${K}${h?" "+h:""}</div>\n ${d}\n `,l}scrollToBottom(A=!1){const e=this.messagesContainer;if(A)return void o(e);e.scrollTop+e.clientHeight>=e.scrollHeight-40&&o(e)}setupImageViewer(){this.messagesContainer.addEventListener("click",A=>{const e=A.target;if(e.classList.contains("chat-sdk-image-preview")){const A=e.getAttribute("data-image-url");A&&this.openImageViewer(A)}}),this.messagesContainer.addEventListener("click",A=>{const e=A.target.closest(".chat-sdk-voice-play-btn");if(!e)return;const t=e.closest(".chat-sdk-voice-msg");if(!t)return;const i=t.getAttribute("data-audio-src");i&&this.handleVoicePlay(t,i,e)})}handleVoicePlay(A,e,t){const i=A.querySelector(".chat-sdk-voice-waveform"),o=A.querySelector(".chat-sdk-voice-duration"),n=null==i?void 0:i.querySelectorAll(".chat-sdk-voice-bar");if(!i||!o||!n.length)return;if(this.currentVoiceContainer===A&&this.currentAudio&&!this.currentAudio.paused)return this.currentAudio.pause(),void(t.innerHTML='<svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>');this.currentAudio&&(this.currentAudio.pause(),this.currentAudio.currentTime=0,this.resetVoiceUI(this.currentVoiceContainer));const s=new Audio(e);this.currentAudio=s,this.currentVoiceContainer=A,t.innerHTML='<svg width="14" height="16" viewBox="0 0 14 18" fill="currentColor"><rect x="1" y="2" width="4" height="14" rx="1"/><rect x="9" y="2" width="4" height="14" rx="1"/></svg>',s.addEventListener("loadedmetadata",()=>{o.textContent=this.formatAudioDuration(s.duration)}),s.addEventListener("timeupdate",()=>{if(!s.duration)return;const A=s.currentTime/s.duration,e=Math.floor(A*n.length);n.forEach((A,t)=>{const i=A.getAttribute("data-active-color")||"#ffffff",o=A.getAttribute("data-inactive-color")||"rgba(255,255,255,0.45)";A.style.background=t<e?i:o});const t=s.duration-s.currentTime;o.textContent=this.formatAudioDuration(t)}),s.addEventListener("ended",()=>{this.resetVoiceUI(A),this.currentAudio=null,this.currentVoiceContainer=null}),s.addEventListener("error",()=>{console.warn("[ChatSDK] Voice audio load error:",e),this.resetVoiceUI(A),this.currentAudio=null,this.currentVoiceContainer=null}),s.play().catch(e=>{console.warn("[ChatSDK] Voice play failed:",e),this.resetVoiceUI(A)})}resetVoiceUI(A){if(!A)return;const e=A.querySelector(".chat-sdk-voice-play-btn"),t=A.querySelectorAll(".chat-sdk-voice-bar"),i=A.querySelector(".chat-sdk-voice-duration");e&&(e.innerHTML='<svg width="14" height="16" viewBox="0 0 16 18" fill="currentColor" style="margin-left:2px"><path d="M2 1.5v15l12-7.5L2 1.5z"/></svg>'),t.forEach(A=>{const e=A.getAttribute("data-inactive-color")||"rgba(255,255,255,0.45)";A.style.background=e}),i&&(i.textContent="0:00")}formatAudioDuration(A){const e=Math.max(0,Math.floor(A));return`${Math.floor(e/60)}:${(e%60).toString().padStart(2,"0")}`}openImageViewer(A){const e=document.querySelector(".chat-sdk-viewer-overlay");e&&e.remove();const t=document.createElement("div");t.className="chat-sdk-viewer-overlay",Object.assign(t.style,{position:"fixed",inset:"0",width:"100vw",height:"100vh",background:"rgba(0,0,0,0.88)",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",opacity:"0",transition:"opacity 0.2s ease",cursor:"zoom-out"});const i=document.createElement("button");Object.assign(i.style,{position:"absolute",top:"16px",right:"20px",background:"none",border:"none",color:"#fff",fontSize:"32px",cursor:"pointer",lineHeight:"1",padding:"4px",zIndex:"1"}),i.innerHTML="&times;",i.setAttribute("aria-label","Close");const o=document.createElement("img");o.src=A,o.alt="Full size image",Object.assign(o.style,{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:"8px",boxShadow:"0 8px 32px rgba(0,0,0,0.6)",transform:"scale(0.92)",transition:"transform 0.2s cubic-bezier(0.1, 0.9, 0.2, 1)",cursor:"default",display:"block"});t.addEventListener("click",A=>{A.target!==t&&A.target!==i||(t.style.opacity="0",o.style.transform="scale(0.92)",setTimeout(()=>{t.parentNode&&t.remove()},200))}),o.addEventListener("click",A=>A.stopPropagation()),t.appendChild(i),t.appendChild(o),document.body.appendChild(t),requestAnimationFrame(()=>{t.style.opacity="1",o.style.transform="scale(1)"})}showImagePreview(A){const e=t("div","chat-sdk-image-modal");e.innerHTML=`\n <div class="chat-sdk-image-modal-overlay">\n <div class="chat-sdk-image-modal-content">\n <button class="chat-sdk-image-modal-close">&times;</button>\n <img src="${i(A)}" alt="Image Preview" class="chat-sdk-image-modal-img" />\n </div>\n </div>\n `,this.widgetElement.appendChild(e);const o=e.querySelector(".chat-sdk-image-modal-close"),n=e.querySelector(".chat-sdk-image-modal-overlay"),s=()=>{e.remove()};null==o||o.addEventListener("click",s),null==n||n.addEventListener("click",A=>{A.target===n&&s()});const a=A=>{"Escape"===A.key&&(s(),document.removeEventListener("keydown",a))};document.addEventListener("keydown",a)}setJoined(A){this.state.isJoined=A,this.handleInputChange()}setUITemplate(A){this.currentTheme=A,this.config.uiTemplate=A,this.widgetElement.classList.remove("whatsapp-theme","telegram-theme","dark"),this.widgetElement.classList.add(`${A}-theme`),"telegram"===A&&this.isDarkMode&&this.widgetElement.classList.add("dark"),this.updateThemeStyles(),this.reRenderAllMessages()}setTheme(A){this.isDarkMode="dark"===A,this.config.theme=A,"telegram"===this.currentTheme&&(this.isDarkMode?this.widgetElement.classList.add("dark"):this.widgetElement.classList.remove("dark"),this.updateThemeStyles())}setCustomColors(A){this.customColors={...this.customColors,...A},this.config.primaryColor=A.primary,this.config.backgroundColor=A.background,this.updateThemeStyles()}updateThemeStyles(){const A=this.currentTheme,e=this.isDarkMode&&"telegram"===A,t=this.shadowRoot||document.documentElement;"whatsapp"===A?(this.setCSSProperty(t,"--chat-primary-color",this.customColors.primary||"#25D366"),this.setCSSProperty(t,"--chat-background-color",this.customColors.background||"#ECE5DD"),this.setCSSProperty(t,"--chat-message-own-bg","#DCF8C6"),this.setCSSProperty(t,"--chat-message-other-bg","#FFFFFF"),this.setCSSProperty(t,"--chat-header-bg","linear-gradient(135deg, #075e54 0%, #128c7e 100%)")):"telegram"===A&&(e?(this.setCSSProperty(t,"--chat-primary-color",this.customColors.primary||"#4FC3F7"),this.setCSSProperty(t,"--chat-background-color",this.customColors.background||"#212121"),this.setCSSProperty(t,"--chat-message-own-bg","linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%)"),this.setCSSProperty(t,"--chat-message-other-bg","#2F2F2F"),this.setCSSProperty(t,"--chat-header-bg","linear-gradient(135deg, #1976d2 0%, #1565c0 100%)"),this.setCSSProperty(t,"--chat-text-color","#FFFFFF")):(this.setCSSProperty(t,"--chat-primary-color",this.customColors.primary||"#2481CC"),this.setCSSProperty(t,"--chat-background-color",this.customColors.background||"#FFFFFF"),this.setCSSProperty(t,"--chat-message-own-bg","linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%)"),this.setCSSProperty(t,"--chat-message-other-bg","#F1F1F1"),this.setCSSProperty(t,"--chat-header-bg","linear-gradient(135deg, #2481cc 0%, #1c7cd6 100%)"),this.setCSSProperty(t,"--chat-text-color","#000000")))}setCSSProperty(A,e,t){if(A instanceof ShadowRoot){const i=A.querySelector("style");if(i){const A=i.textContent||"",o=new RegExp(`${e}\\s*:\\s*[^;]+;`,"g"),n=`${e}: ${t};`;if(o.test(A))i.textContent=A.replace(o,n);else{const e=/:host\s*\{([^}]*)\}/;e.test(A)?i.textContent=A.replace(e,(A,e)=>`:host { ${e} ${n} }`):i.textContent=`:host { ${n} }\n${A}`}}}else A.style.setProperty(e,t)}getState(){return{...this.state}}getDefaultStyles(){return"\n :host {\n --chat-primary-color: #25D366;\n --chat-background-color: #ECE5DD;\n --chat-message-own-bg: #DCF8C6;\n --chat-message-other-bg: #FFFFFF;\n --chat-header-bg: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n --chat-text-color: #333333;\n --chat-border-radius-message: 18px;\n --chat-border-radius-input: 25px;\n }\n\n .chat-sdk-container {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--chat-text-color);\n background: var(--chat-background-color);\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n max-width: 100%;\n max-height: 100%;\n }\n\n .chat-sdk-container * {\n box-sizing: border-box;\n }\n\n /* WhatsApp Theme */\n .chat-sdk-container.whatsapp-theme .chat-sdk-header {\n background: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-height: 60px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.12);\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-header-left { display: none; }\n\n .chat-sdk-container.whatsapp-theme .chat-sdk-messages {\n background-color: #ece5dd;\n background-image: url(\"data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23e5ddd5' fill-opacity='0.08'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\n padding: 8px 6px;\n }\n\n .chat-sdk-container.whatsapp-theme {\n --chat-primary-color: #25D366;\n --chat-background-color: #ECE5DD;\n --chat-message-own-bg: #DCF8C6;\n --chat-message-other-bg: #FFFFFF;\n --chat-header-bg: linear-gradient(135deg, #075e54 0%, #128c7e 100%);\n --chat-text-color: #303030;\n --chat-border-radius-message: 7.5px;\n --chat-border-radius-input: 25px;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n /* ── WhatsApp: Message Row Layout ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message {\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n margin-bottom: 4px;\n padding: 1px 10px;\n gap: 6px;\n }\n\n /* Own message: green bubble, right side, no avatar */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own {\n flex-direction: row-reverse;\n justify-content: flex-start;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-avatar {\n display: none;\n }\n\n /* ── WhatsApp: Avatar ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-avatar {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n align-self: flex-end;\n margin-bottom: 0;\n font-size: 13px;\n font-weight: 700;\n color: #fff;\n background: #aaa;\n }\n\n /* ── WhatsApp: Message Content Wrapper ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-content {\n max-width: 72%;\n min-width: 60px;\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n /* ── WhatsApp: Bubble ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-bubble {\n background: #fff;\n color: #303030;\n border-radius: 7.5px;\n padding: 6px 10px 20px 10px;\n box-shadow: 0 1px 0.5px rgba(0,0,0,0.13);\n position: relative;\n word-wrap: break-word;\n word-break: break-word;\n display: block;\n max-width: 100%;\n }\n\n /* Tail for other-person bubble (left bottom corner) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:not(.own):not(.grouped) .chat-sdk-message-bubble::before {\n content: '';\n position: absolute;\n bottom: 0;\n left: -8px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 0 8px 8px;\n border-color: transparent transparent #fff transparent;\n filter: drop-shadow(-1px 1px 0.5px rgba(0,0,0,0.10));\n }\n\n /* Own bubble: green */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-bubble {\n background: #DCF8C6;\n color: #303030;\n border-radius: 7.5px;\n }\n\n /* Tail for own bubble (right bottom corner) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own:not(.grouped) .chat-sdk-message-bubble::before {\n content: '';\n position: absolute;\n bottom: 0;\n right: -8px;\n left: auto;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 8px 0 0 8px;\n border-color: transparent transparent transparent #DCF8C6;\n filter: drop-shadow(1px 1px 0.5px rgba(0,0,0,0.10));\n }\n\n /* ── WhatsApp: Username inside bubble (colored) ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-username {\n font-size: 12.5px;\n font-weight: 600;\n margin-bottom: 2px;\n line-height: 1.2;\n display: block;\n }\n\n /* Cycle username colors like real WhatsApp */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+1) .chat-sdk-message-username { color: #e91e8c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+2) .chat-sdk-message-username { color: #e67e22; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+3) .chat-sdk-message-username { color: #1abc9c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+4) .chat-sdk-message-username { color: #9b59b6; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+5) .chat-sdk-message-username { color: #e74c3c; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+6) .chat-sdk-message-username { color: #3498db; }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message:nth-child(7n+0) .chat-sdk-message-username { color: #2ecc71; }\n\n /* ── WhatsApp: Input area ── */\n .chat-sdk-container.whatsapp-theme .chat-sdk-input-area {\n background: #f0f2f5;\n border-top: none;\n padding: 8px 10px;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-input {\n background: #fff;\n border: none;\n border-radius: 22px;\n padding: 9px 14px;\n font-size: 15px;\n box-shadow: none;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-send-btn {\n background: #00a884;\n width: 42px;\n height: 42px;\n box-shadow: none;\n }\n\n\n /* Telegram Theme */\n .chat-sdk-container.telegram-theme {\n --chat-primary-color: #2481CC;\n --chat-background-color: #FFFFFF;\n --chat-message-own-bg: linear-gradient(135deg, #4fc3f7 0%, #29b6f6 100%);\n --chat-message-other-bg: #F1F1F1;\n --chat-header-bg: linear-gradient(135deg, #2481cc 0%, #1c7cd6 100%);\n --chat-text-color: #000000;\n --chat-border-radius-message: 12px;\n --chat-border-radius-input: 12px;\n\n /* Telegram input + details */\n .chat-sdk-container.telegram-theme .chat-sdk-message {\n align-items: flex-start; /* avatar aligns with username at top, not bottom */\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message-content {\n max-width: 75%;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message-bubble {\n box-shadow: 0 1px 1px rgba(0,0,0,0.06);\n }\n .chat-sdk-container.telegram-theme .chat-sdk-input-area {\n background: #ffffff;\n border-top: 1px solid #e6e6e6;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-input {\n background: #fff;\n border: 1px solid #cfd6dd;\n border-radius: 12px;\n padding: 9px 14px;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-send-btn {\n background: #2481CC;\n border-radius: 10px;\n width: 38px;\n height: 36px;\n box-shadow: none;\n }\n /* Telegram dark */\n .chat-sdk-container.telegram-theme.dark .chat-sdk-input-area {\n background: #1f1f1f;\n border-top: 1px solid #2a2a2a;\n }\n .chat-sdk-container.telegram-theme.dark .chat-sdk-input {\n background: #2b2b2b;\n color: #e0e0e0;\n border-color: #444;\n }\n .chat-sdk-container.telegram-theme.dark .chat-sdk-send-btn {\n background: #1976d2;\n }\n\n\n .chat-sdk-container.telegram-theme .chat-sdk-header {\n background: var(--chat-header-bg);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 60px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.12);\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-messages {\n background-color: var(--chat-background-color);\n background-image: url('data:image/jpeg;base64,/9j/4Q/+RXhpZgAATU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAAITAAMAAAABAAEAAIdpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAeQAAAHAAAABDAyMjGRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAA7KgAwAEAAAAAQAABfykBgADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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');\n background-size: cover;\n background-position: center;\n background-attachment: local;\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-message.own .chat-sdk-message-bubble {\n background: var(--chat-message-own-bg);\n color: white;\n border-radius: var(--chat-border-radius-message) var(--chat-border-radius-message) 4px var(--chat-border-radius-message);\n }\n\n .chat-sdk-container.telegram-theme .chat-sdk-message:not(.own) .chat-sdk-message-bubble {\n background: var(--chat-message-other-bg);\n color: var(--chat-text-color);\n border-radius: var(--chat-border-radius-message) var(--chat-border-radius-message) var(--chat-border-radius-message) 4px;\n }\n\n /* Telegram Dark Theme */\n .chat-sdk-container.telegram-theme.dark {\n --chat-background-color: #212121;\n --chat-message-other-bg: #2F2F2F;\n --chat-header-bg: linear-gradient(135deg, #1976d2 0%, #1565c0 100%);\n --chat-text-color: #FFFFFF;\n }\n\n /* Default header (fallback) */\n .chat-sdk-header {\n background: var(--chat-header-bg);\n color: white;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 60px;\n }\n\n .chat-sdk-header-left { display: flex; flex-direction: column; gap: 2px; }\n .chat-sdk-title { font-size: 15px; font-weight: 600; }\n .chat-sdk-subtitle { font-size: 12px; opacity: 0.9; }\n\n .chat-sdk-close-btn {\n background: none;\n border: none;\n color: white;\n cursor: pointer;\n padding: 8px;\n border-radius: 50%;\n opacity: 0.8;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n }\n\n .chat-sdk-close-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n\n .chat-sdk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n background-color: var(--chat-background-color);\n min-height: 0; /* allow flex to use full height */\n }\n\n .chat-sdk-message {\n margin-bottom: 12px;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n }\n\n .chat-sdk-message.own {\n flex-direction: row-reverse;\n }\n\n .chat-sdk-message-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #ddd;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n flex-shrink: 0;\n }\n\n .chat-sdk-message-content {\n max-width: 70%;\n position: relative;\n }\n\n .chat-sdk-message-bubble {\n background: var(--chat-message-other-bg);\n color: var(--chat-text-color);\n padding: 8px 12px;\n border-radius: var(--chat-border-radius-message);\n position: relative;\n word-wrap: break-word;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n }\n\n .chat-sdk-message.own .chat-sdk-message-bubble {\n background: var(--chat-message-own-bg);\n color: white;\n }\n\n .chat-sdk-message-username {\n font-size: 11px;\n color: #666;\n margin-bottom: 2px;\n font-weight: 600;\n }\n\n .chat-sdk-message-text {\n margin: 0;\n line-height: 1.4;\n }\n\n .chat-sdk-message-time {\n font-size: 10px;\n color: #999;\n margin-top: 4px;\n text-align: right;\n }\n\n /* Message grouping */\n .chat-sdk-message.grouped {\n margin-top: 4px;\n }\n .chat-sdk-message.grouped .chat-sdk-message-username { display: none; }\n .chat-sdk-message.grouped .chat-sdk-message-avatar { visibility: hidden; }\n\n /* WhatsApp: time inside bubble */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-time-inside {\n position: absolute;\n right: 6px;\n bottom: 4px;\n font-size: 11px;\n color: rgba(0,0,0,0.45);\n display: flex;\n align-items: center;\n gap: 3px;\n line-height: 1;\n }\n .chat-sdk-container.whatsapp-theme .chat-sdk-message.own .chat-sdk-message-time-inside {\n color: rgba(0, 0, 0, 0.45);\n }\n /* hide external time for whatsapp (time is inside bubble) */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-time {\n display: none;\n }\n\n /* Telegram: read status */\n .chat-sdk-container.telegram-theme .chat-sdk-message-time {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n }\n .chat-sdk-container.telegram-theme .chat-sdk-message.own .chat-sdk-read-status {\n font-size: 12px;\n color: var(--chat-primary-color);\n line-height: 1;\n }\n\n /* Theme-specific image radii */\n .chat-sdk-container.whatsapp-theme .chat-sdk-message-image img { border-radius: 8px; max-width: 200px; max-height: 280px; }\n .chat-sdk-container.telegram-theme .chat-sdk-message-image img { border-radius: 6px; max-width: 200px; max-height: 280px; }\n\n\n .chat-sdk-input-area {\n padding: 12px 16px;\n background: white;\n border-top: 1px solid #e0e0e0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n\n .chat-sdk-icon-btn {\n background: transparent;\n border: none;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n }\n .chat-sdk-icon-btn:hover { background: rgba(0,0,0,0.06); }\n\n .chat-sdk-emoji-picker {\n position: absolute;\n left: 12px;\n bottom: 64px;\n background: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 6px 16px rgba(0,0,0,0.12);\n padding: 6px;\n z-index: 5;\n }\n .chat-sdk-emoji-grid {\n display: grid;\n grid-template-columns: repeat(5, 28px);\n gap: 6px;\n }\n\n /* Failed message styles - Telegram style */\n .chat-sdk-message-failed-indicator {\n display: inline-flex;\n align-items: center;\n margin-left: 6px;\n color: #ff4444;\n cursor: pointer;\n }\n .chat-sdk-message-failed-indicator svg {\n width: 16px;\n height: 16px;\n }\n .chat-sdk-message.own .chat-sdk-message-content {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n }\n .chat-sdk-message.own .chat-sdk-message-bubble {\n flex: 1;\n }\n .chat-sdk-emoji-item {\n background: none;\n border: none;\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n }\n .chat-sdk-emoji-item:hover { background: #f3f4f6; }\n\n\n .chat-sdk-input {\n flex: 1;\n border: 1px solid #ddd;\n border-radius: var(--chat-border-radius-input);\n padding: 8px 16px;\n font-size: 14px;\n outline: none;\n resize: none;\n min-height: 36px;\n max-height: 100px;\n }\n\n .chat-sdk-input:focus {\n border-color: var(--chat-primary-color);\n }\n\n .chat-sdk-send-btn {\n background: var(--chat-primary-color);\n color: white;\n border: none;\n border-radius: 50%;\n width: 36px;\n height: 36px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n }\n\n .chat-sdk-send-btn:hover {\n background: #064e45;\n }\n\n .chat-sdk-send-btn:disabled {\n background: #ccc;\n cursor: not-allowed;\n }\n\n .chat-sdk-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n }\n\n .chat-sdk-join-card {\n background: white;\n border-radius: 12px;\n padding: 24px;\n max-width: 300px;\n margin: 16px;\n text-align: center;\n }\n\n .chat-sdk-join-title {\n font-size: 18px;\n font-weight: 600;\n margin: 0 0 8px 0;\n color: #333;\n }\n\n .chat-sdk-join-description {\n font-size: 14px;\n color: #666;\n margin: 0 0 20px 0;\n line-height: 1.4;\n }\n\n .chat-sdk-join-btn {\n background: #075e54;\n color: white;\n border: none;\n border-radius: 8px;\n padding: 12px 24px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s;\n width: 100%;\n }\n\n .chat-sdk-join-btn:hover {\n background: #064e45;\n }\n\n .chat-sdk-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: #666;\n }\n\n .chat-sdk-spinner {\n width: 20px;\n height: 20px;\n border: 2px solid #e0e0e0;\n border-top: 2px solid #075e54;\n border-radius: 50%;\n animation: chat-sdk-spin 1s linear infinite;\n margin-right: 8px;\n }\n\n @keyframes chat-sdk-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .chat-sdk-container.dark {\n background: #1f1f1f;\n color: #e0e0e0;\n }\n\n .chat-sdk-container.dark .chat-sdk-header {\n background: #2d2d2d;\n }\n\n .chat-sdk-container.dark .chat-sdk-messages {\n background: #0d1117;\n }\n\n .chat-sdk-container.dark .chat-sdk-message-bubble {\n background: #2d2d2d;\n color: #e0e0e0;\n }\n\n .chat-sdk-container.dark .chat-sdk-message.own .chat-sdk-message-bubble {\n background: #0969da;\n color: white;\n }\n\n /* Image Modal Viewer */\n .chat-sdk-image-modal {\n position: fixed;\n top: 0; left: 0; right: 0; bottom: 0;\n z-index: 9999;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n }\n\n .chat-sdk-image-modal-open {\n opacity: 1;\n visibility: visible;\n }\n\n .chat-sdk-image-backdrop {\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n }\n\n .chat-sdk-image-container {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .chat-sdk-image-close {\n position: absolute;\n top: -50px;\n right: 0;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 50%;\n width: 40px;\n height: 40px;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n z-index: 1;\n }\n\n .chat-sdk-image-close:hover {\n background: rgba(255, 255, 255, 0.2);\n }\n\n .chat-sdk-image-full {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);\n }\n\n /* Responsive Design */\n @media (max-width: 640px) {\n .chat-sdk-container {\n border-radius: 0;\n height: 100vh;\n max-height: 100vh;\n }\n\n .chat-sdk-message-content {\n max-width: 85%;\n }\n\n .chat-sdk-message-bubble {\n font-size: 14px;\n padding: 8px 12px;\n }\n\n .chat-sdk-input {\n font-size: 16px; /* Prevent zoom on iOS */\n padding: 10px 14px;\n }\n\n .chat-sdk-header {\n padding: 8px 12px;\n min-height: 50px;\n }\n\n .chat-sdk-message-avatar {\n width: 28px;\n height: 28px;\n font-size: 11px;\n }\n }\n\n @media (min-width: 1024px) {\n .chat-sdk-message-content {\n max-width: 60%;\n }\n\n .chat-sdk-send-btn:hover:not(:disabled) {\n transform: scale(1.05);\n transition: all 0.2s ease;\n }\n }\n\n /* Image Zoom Overlay */\n .chat-sdk-image-zoom-overlay {\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(0, 0, 0, 0.85);\n z-index: 999999;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: zoom-out;\n backdrop-filter: blur(2px);\n }\n .chat-sdk-image-zoom-img {\n max-width: 95%;\n max-height: 95%;\n object-fit: contain;\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n transform: scale(0.95);\n animation: chat-sdk-zoom-in 0.2s cubic-bezier(0.1, 0.9, 0.2, 1) forwards;\n }\n @keyframes chat-sdk-zoom-in {\n to { transform: scale(1); }\n }\n\n "}startSimulation(){this.simulator.start()}stopSimulation(){this.simulator.stop()}pauseSimulation(){this.simulator.pause()}resumeSimulation(){this.simulator.resume()}async sendMessage(A,e="text"){await this.simulator.sendMessage(A,e)}get isSimulationRunning(){return this.state.isSimulationRunning}get isSimulationPaused(){return this.state.isSimulationPaused}get simulationEnded(){return this.state.simulationEnded}get messageCount(){return this.state.displayedMessageCount}get messages(){return[...this.state.messages]}async reinitializeLanguage(A){this.config.language=A,this.setLoading(!0),this.messagesContainer.innerHTML="",this.state.messages=[],this.state.displayedMessageCount=0,this.state.unreadCount=0,this.updateUnreadBadge();try{this.simulator.clearCachedProgress()}catch(A){}try{this.simulator.destroy()}catch(A){}this.simulator=new K(this.config,this.apiClient),this.setupSimulatorEvents(),await this.initializeSimulation()}destroy(){this.pollingStopTimer&&(clearTimeout(this.pollingStopTimer),this.pollingStopTimer=null);try{this.simulator.destroy()}catch(A){}if(this.shadowRoot)try{for(;this.shadowRoot.firstChild;)this.shadowRoot.removeChild(this.shadowRoot.firstChild)}catch(A){}this.state.isOpen=!1,this.removeAllListeners()}clearMessages(){this.state.messages=[],this.state.displayedMessageCount=0,this.state.unreadCount=0,this.messagesContainer.innerHTML="",this.updateUnreadBadge()}rerender(){this.reRenderAllMessages()}getMessageCount(){return this.state.displayedMessageCount}isOpen(){return this.state.isOpen}updateLanguageElements(A){var e,t,i;this.t=g(A);const o=null===(e=this.widgetElement)||void 0===e?void 0:e.querySelector("#message-input");o&&(o.placeholder=this.t.inputPlaceholder);const n=null===(t=this.widgetElement)||void 0===t?void 0:t.querySelector(".send-button");n&&n.textContent&&(n.textContent=this.t.send);const s=this.getMessageCount(),a=(null===(i=this.state.currentProject)||void 0===i?void 0:i.name)||"Chat";this.setTitle(a,`${s} ${this.t.messages}`)}}const R=F;function m(A){return new F(A)}var u={init:m,ChatSDK:R,ChatSDKError:A};"undefined"!=typeof window&&(window.ChatSDK={init:m,ChatSDK:R,ChatSDKError:A});export{R as ChatSDK,A as ChatSDKError,u as default,m as init};