@ihoomanai/chat-widget 4.0.1 → 4.1.0

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,2 +1,2 @@
1
- const e="https://api.ihooman.ai",t={serverUrl:e,theme:"dark",position:"bottom-right",title:"AI Assistant",subtitle:"Always here to help",welcomeMessage:"Hello! How can I help you today?",placeholder:"Send a message...",primaryColor:"#ededed",gradientFrom:"#171717",gradientTo:"#171717",showTimestamps:!0,showTypingIndicator:!0,enableSounds:!0,enableFileUpload:!0,startOpen:!1,persistSession:!0,zIndex:9999,width:400,height:620,buttonSize:52,borderRadius:16,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, sans-serif',avatarUrl:"",poweredBy:!0,presetQuestions:[],proactiveMessages:[],surveyConfig:null,locale:"en",allowLocalhost:!0},o={chat:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>',close:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>',send:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>',attach:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>',minimize:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg>',sparkle:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path></svg>',agent:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="5"></circle><path d="M20 21a8 8 0 0 0-16 0"></path></svg>',ticket:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 18v-1"></path><path d="M14 18v-1"></path><path d="M10 14v-1"></path><path d="M14 14v-1"></path></svg>',history:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg>',plus:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>',star:'<svg viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="1"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>',starEmpty:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>'};let n={widgetId:"",...t},i={isOpen:!1,isConnected:!1,messages:[],pendingMessages:[],sessionId:null,visitorId:null,unreadCount:0,view:"chat",connectionStatus:"disconnected",typingIndicator:!1,soundMuted:!1,escalationStatus:null,userInfo:null},a="chat",s=!1,r=!1,d=[],c={},l=null,p=[],u={};const h={};let m=null,g=null,f=0;let v=!1,b=null,y=null;function x(e=""){return e+Math.random().toString(36).slice(2,14)+Date.now().toString(36)}function w(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function k(e,t){const o="ihooman_chat_"+e;try{if(void 0===t){const e=localStorage.getItem(o);return e?JSON.parse(e):null}return null===t?(localStorage.removeItem(o),null):(localStorage.setItem(o,JSON.stringify(t)),t)}catch{return null}}function $(e,t){(h[e]||[]).forEach(o=>{try{o(t)}catch(t){console.error(`Error in ${e} handler:`,t)}});const o=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`,i=n[o];if("function"==typeof i)try{i(t)}catch(e){console.error(`Error in ${o}:`,e)}}async function _(e,t){if(n.widgetId&&n.serverUrl)try{const o=`${n.serverUrl}/widget-analytics/track?widget_id=${encodeURIComponent(n.widgetId)}`;await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_type:e,session_id:i.sessionId,visitor_id:i.visitorId,metadata:t||{}})})}catch(t){console.debug("[IhoomanChat] Failed to track event:",e,t)}}function S(){const e=window.scrollY||document.documentElement.scrollTop,t=document.documentElement.scrollHeight-window.innerHeight;return t>0?Math.round(e/t*100):0}function C(e){try{return new RegExp(e.replace(/\*/g,".*")).test(window.location.href)}catch{return window.location.href.includes(e)}}let I=null;function T(){const e=document.createElement("div");e.id="ihooman-chat-widget-host",e.style.cssText="all: initial !important; position: fixed !important; z-index: 2147483647 !important; pointer-events: none !important;",document.body.appendChild(e),I=e.attachShadow({mode:"open"});const t=document.createElement("style");t.id="ihooman-widget-styles",t.textContent=function(){const{fontFamily:e,borderRadius:t,zIndex:o,width:i,height:a,buttonSize:s}=n,r="dark"===n.theme||"auto"===n.theme,d=r?"#0a0a0a":"#ffffff",c=r?"#141414":"#fafafa",l=r?"#1a1a1a":"#f4f4f5",p=r?"#ededed":"#09090b",u=r?"#a1a1aa":"#71717a",h=r?"#52525b":"#a1a1aa",m=r?"#27272a":"#e4e4e7",g=r?"#1f1f23":"#f4f4f5",f=r?"#141414":"#fafafa",v=r?"#1c1c1c":"#f4f4f5",b=r?"#ededed":"#18181b",y=r?"#ededed":"#18181b",x=r?"#09090b":"#fafafa",w=r?"#27272a":"#18181b",k=r?"#ededed":"#fafafa",$=n.position?.includes("right")??!0,_=n.position?.includes("bottom")??!0,S=r?"0 24px 48px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.05)":"0 24px 48px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.05)";return`\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host { all: initial; }\n .ihooman-widget { font-family: ${e}; font-size: 14px; line-height: 1.6; color: ${p}; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }\n button { \n font-family: inherit;\n font-size: 100%;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n }\n button:focus-visible { outline: 2px solid ${b}; outline-offset: 2px; }\n\n /* ── Toggle Button ── */\n .ihooman-toggle { position: fixed !important; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 20px":"top: 20px"}; width: ${s}px !important; height: ${s}px !important; border-radius: 50% !important; background: ${y} !important; border: 1px solid ${m} !important; cursor: pointer; z-index: ${o}; display: flex !important; align-items: center; justify-content: center; box-shadow: ${S}; transition: all 0.2s ease-out; overflow: hidden; }\n .ihooman-toggle:hover { transform: scale(1.05); box-shadow: ${S}; }\n .ihooman-toggle:active { transform: scale(0.96); }\n .ihooman-toggle svg { width: 22px; height: 22px; color: ${x}; transition: transform 0.25s ease-out, opacity 0.15s ease; position: relative; z-index: 1; }\n .ihooman-toggle .chat-icon { display: flex; align-items: center; justify-content: center; transition: transform 0.25s ease-out, opacity 0.15s ease; }\n .ihooman-toggle .close-icon { position: absolute; display: flex; align-items: center; justify-content: center; transform: rotate(-90deg) scale(0); opacity: 0; transition: transform 0.25s ease-out, opacity 0.15s ease; }\n .ihooman-toggle.open .chat-icon { transform: rotate(90deg) scale(0); opacity: 0; }\n .ihooman-toggle.open .close-icon { transform: rotate(0) scale(1); opacity: 1; }\n .ihooman-pulse { display: none; }\n .ihooman-badge { position: absolute; top: -3px; right: -3px; min-width: 18px; height: 18px; padding: 0 5px; background: #dc2626; color: white; font-size: 10px; font-weight: 600; border-radius: 9px; display: flex; align-items: center; justify-content: center; z-index: 2; border: 2px solid ${d}; }\n .ihooman-badge:empty { display: none; }\n\n /* ── Window ── */\n .ihooman-window { position: fixed; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 84px":"top: 84px"}; width: ${i}px; height: ${a}px; min-height: ${a}px; max-height: ${a}px; z-index: ${(o??9999)-1}; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(12px) scale(0.97); transition: opacity 0.2s ease-out, visibility 0.2s ease-out, transform 0.2s ease-out; overscroll-behavior: contain; }\n .ihooman-window.open { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }\n\n /* ── Container ── */\n .ihooman-container { position: relative; width: 100%; height: 100%; display: flex; flex-direction: column; border-radius: ${t}px; overflow: hidden; flex-shrink: 0; background: ${d}; border: 1px solid ${m}; box-shadow: ${S}; }\n\n /* ── Header ── */\n .ihooman-header { padding: 14px 16px; background: ${c}; color: ${p}; display: flex; align-items: center; gap: 12px; flex-shrink: 0; border-bottom: 1px solid ${m}; }\n .ihooman-header-avatar { width: 36px; height: 36px; border-radius: 10px; background: ${l}; display: flex; align-items: center; justify-content: center; flex-shrink: 0; border: 1px solid ${m}; }\n .ihooman-header-avatar img { width: 100%; height: 100%; border-radius: 10px; object-fit: cover; }\n .ihooman-header-avatar svg { width: 18px; height: 18px; color: ${u}; }\n .ihooman-header-info { flex: 1; min-width: 0; }\n .ihooman-header-title { font-size: 14px; font-weight: 600; margin-bottom: 1px; letter-spacing: -0.01em; color: ${p}; }\n .ihooman-header-status { display: flex; align-items: center; gap: 5px; font-size: 12px; color: ${u}; }\n .ihooman-status-dot { width: 6px; height: 6px; border-radius: 50%; background: #22c55e; flex-shrink: 0; }\n .ihooman-status-dot.offline { background: #a1a1aa; }\n .ihooman-header-actions { display: flex; gap: 4px; }\n .ihooman-header-btn { width: 30px; height: 30px; border-radius: 8px; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: ${u}; transition: background 0.15s ease, color 0.15s ease; }\n .ihooman-header-btn:hover { background: ${v}; color: ${p}; }\n .ihooman-header-btn svg { width: 15px; height: 15px; }\n\n /* ── Messages ── */\n .ihooman-messages { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 20px 16px; display: flex; flex-direction: column; gap: 6px; background: ${d}; overscroll-behavior: contain; min-height: 0; }\n .ihooman-messages::-webkit-scrollbar { width: 4px; }\n .ihooman-messages::-webkit-scrollbar-track { background: transparent; }\n .ihooman-messages::-webkit-scrollbar-thumb { background: ${r?"#27272a":"#d4d4d8"}; border-radius: 2px; }\n .ihooman-message { display: flex; flex-direction: column; max-width: 88%; animation: ihooman-fadeIn 0.25s ease-out; }\n @keyframes ihooman-fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }\n .ihooman-message.user { align-self: flex-end; align-items: flex-end; }\n .ihooman-message.bot { align-self: flex-start; align-items: flex-start; max-width: 100%; }\n .ihooman-message-content { padding: 10px 14px; border-radius: 14px; word-wrap: break-word; overflow-wrap: break-word; font-size: 14px; line-height: 1.6; }\n .ihooman-message.user .ihooman-message-content { background: ${w}; color: ${k}; border-bottom-right-radius: 4px; }\n .ihooman-message.bot .ihooman-message-content { background: transparent; color: ${p}; padding: 6px 2px; }\n .ihooman-message-content a { color: ${r?"#60a5fa":"#2563eb"}; text-decoration: underline; text-underline-offset: 2px; }\n .ihooman-message-content a:hover { opacity: 0.8; }\n .ihooman-message-content code { background: ${r?"#27272a":"#f4f4f5"}; padding: 2px 6px; border-radius: 4px; font-family: 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, Consolas, monospace; font-size: 12.5px; border: 1px solid ${g}; }\n .ihooman-message-content strong { font-weight: 600; }\n .ihooman-message-time { font-size: 11px; color: ${h}; margin-top: 3px; padding: 0 4px; }\n\n /* ── Typing Indicator — Shimmer ── */\n .ihooman-typing { display: flex; align-items: center; gap: 10px; padding: 10px 2px; max-width: 180px; align-self: flex-start; animation: ihooman-fadeIn 0.2s ease-out; }\n .ihooman-typing-shimmer { font-size: 13px; color: ${h}; background: linear-gradient(90deg, ${h} 25%, ${u} 50%, ${h} 75%); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: ihooman-shimmer 1.5s ease-in-out infinite; }\n @keyframes ihooman-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }\n .ihooman-typing-dots { display: flex; gap: 3px; align-items: center; }\n .ihooman-typing-dot { width: 5px; height: 5px; background: ${h}; border-radius: 50%; animation: ihooman-typing 1.2s ease-in-out infinite; }\n .ihooman-typing-dot:nth-child(2) { animation-delay: 0.15s; }\n .ihooman-typing-dot:nth-child(3) { animation-delay: 0.3s; }\n @keyframes ihooman-typing { 0%, 60%, 100% { opacity: 0.3; transform: scale(0.8); } 30% { opacity: 1; transform: scale(1); } }\n\n /* ── Input Area ── */\n .ihooman-input-area { padding: 12px 16px; background: ${d}; border-top: 1px solid ${m}; flex-shrink: 0; }\n .ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${f}; border: 1px solid ${m}; border-radius: 12px; padding: 8px 12px; transition: border-color 0.15s ease, box-shadow 0.15s ease; }\n .ihooman-input-wrapper:focus-within { border-color: ${r?"#3f3f46":"#a1a1aa"}; }\n .ihooman-input { flex: 1; border: none; background: transparent; font-family: inherit; font-size: 14px; color: ${p}; resize: none; max-height: 100px; outline: none; line-height: 1.5; }\n .ihooman-input::placeholder { color: ${h}; }\n .ihooman-input-btn { width: 30px; height: 30px; border-radius: 8px; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s ease; background: transparent; color: ${h}; flex-shrink: 0; }\n .ihooman-input-btn:hover { color: ${p}; background: ${v}; }\n .ihooman-input-btn.send { background: ${y}; color: ${x}; }\n .ihooman-input-btn.send:hover { opacity: 0.85; }\n .ihooman-input-btn.send:disabled { opacity: 0.3; cursor: not-allowed; }\n .ihooman-input-btn svg { width: 16px; height: 16px; }\n .ihooman-input:disabled { opacity: 0.5; cursor: not-allowed; }\n .ihooman-input-btn.attach:disabled { opacity: 0.3; cursor: not-allowed; }\n .ihooman-file-input { display: none; }\n\n /* ── Powered By ── */\n .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${h}; background: ${d}; border-top: 1px solid ${g}; }\n .ihooman-powered a { color: ${u}; text-decoration: none; font-weight: 500; }\n .ihooman-powered a:hover { color: ${p}; }\n\n /* ── Escalation ── */\n .ihooman-escalation-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }\n .ihooman-escalation-btn svg { width: 14px; height: 14px; flex-shrink: 0; }\n\n /* ── Status Bar ── */\n .ihooman-status-bar { padding: 8px 16px; text-align: center; font-size: 12px; display: none; font-weight: 500; }\n .ihooman-status-bar.show { display: block; }\n .ihooman-status-bar.waiting { background: ${r?"#1c1917":"#fef9c3"}; color: ${r?"#fbbf24":"#92400e"}; border-bottom: 1px solid ${r?"#292524":"#fef08a"}; }\n .ihooman-status-bar.connected { background: ${r?"#052e16":"#dcfce7"}; color: ${r?"#4ade80":"#166534"}; border-bottom: 1px solid ${r?"#14532d":"#bbf7d0"}; }\n\n /* ── Chat View ── */\n .ihooman-chat-view { display: flex; flex-direction: column; flex: 1; overflow: hidden; min-height: 0; }\n .ihooman-chat-view.hidden { display: none; }\n\n /* ── Ticket View ── */\n .ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 14px; background: ${d}; flex: 1; overflow-y: auto; min-height: 0; }\n .ihooman-ticket-view.show { display: flex; }\n .ihooman-ticket-title { font-size: 16px; font-weight: 600; color: ${p}; margin: 0; letter-spacing: -0.01em; }\n .ihooman-ticket-subtitle { font-size: 13px; color: ${u}; margin: 0; }\n .ihooman-ticket-input { padding: 10px 14px; border: 1px solid ${m}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${f}; color: ${p}; outline: none; transition: border-color 0.15s ease; }\n .ihooman-ticket-input:focus { border-color: ${r?"#3f3f46":"#a1a1aa"}; }\n .ihooman-ticket-input::placeholder { color: ${h}; }\n .ihooman-ticket-textarea { min-height: 100px; resize: vertical; }\n .ihooman-ticket-submit { display: flex; align-items: center; justify-content: center; padding: 10px; background: ${y}; color: ${x}; border: none; border-radius: 10px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; line-height: 1.4; }\n .ihooman-ticket-submit:hover { opacity: 0.85; }\n .ihooman-ticket-submit:disabled { opacity: 0.4; cursor: not-allowed; }\n .ihooman-ticket-back { display: flex; align-items: center; justify-content: center; padding: 10px; background: transparent; color: ${u}; border: 1px solid ${m}; border-radius: 10px; font-size: 13px; cursor: pointer; transition: all 0.15s ease; line-height: 1.4; }\n .ihooman-ticket-back:hover { background: ${v}; color: ${p}; }\n\n /* ── History View ── */\n .ihooman-history-view { display: none; flex-direction: column; flex: 1; overflow: hidden; background: ${d}; }\n .ihooman-history-view.show { display: flex; }\n .ihooman-history-header { padding: 12px 16px; border-bottom: 1px solid ${m}; display: flex; justify-content: space-between; align-items: center; }\n .ihooman-history-title { font-size: 13px; font-weight: 600; color: ${p}; margin: 0; }\n .ihooman-history-new { display: inline-flex; align-items: center; justify-content: center; gap: 4px; background: ${y}; color: ${x}; border: none; padding: 6px 12px; border-radius: 8px; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; line-height: 1.4; }\n .ihooman-history-new:hover { opacity: 0.85; }\n .ihooman-history-new svg { width: 12px; height: 12px; flex-shrink: 0; }\n .ihooman-history-list { flex: 1; overflow-y: auto; padding: 8px; overscroll-behavior: contain; }\n .ihooman-history-item { padding: 12px; border: 1px solid ${m}; border-radius: 10px; margin-bottom: 6px; cursor: pointer; transition: all 0.15s ease; background: ${d}; }\n .ihooman-history-item:hover { background: ${v}; }\n .ihooman-history-item.active { background: ${v}; border-color: ${r?"#3f3f46":"#a1a1aa"}; }\n .ihooman-history-preview { font-size: 13px; color: ${p}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .ihooman-history-meta { font-size: 11px; color: ${h}; margin-top: 4px; display: flex; justify-content: space-between; }\n .ihooman-history-empty { padding: 40px; text-align: center; color: ${h}; font-size: 13px; }\n\n /* ── Preset Questions ── */\n .ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 6px; background: ${d}; border-top: 1px solid ${g}; }\n .ihooman-preset-questions:empty { display: none; }\n .ihooman-preset-questions.hidden { display: none; }\n\n /* ── Proactive Toast ── */\n .ihooman-proactive-toast { position: fixed; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 84px":"top: 84px"}; max-width: 320px; padding: 16px; background: ${c}; border-radius: 14px; box-shadow: ${S}; z-index: ${(o??9999)-2}; opacity: 0; visibility: hidden; transform: translateY(8px); transition: all 0.2s ease-out; border: 1px solid ${m}; }\n .ihooman-proactive-toast.show { opacity: 1; visibility: visible; transform: translateY(0); }\n .ihooman-proactive-toast-content { font-size: 14px; color: ${p}; margin-bottom: 12px; line-height: 1.5; }\n .ihooman-proactive-toast-actions { display: flex; gap: 8px; }\n .ihooman-proactive-toast-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; line-height: 1.4; }\n .ihooman-proactive-toast-btn.primary { background: ${y}; color: ${x}; border: none; }\n .ihooman-proactive-toast-btn.primary:hover { opacity: 0.85; }\n .ihooman-proactive-toast-btn.secondary { background: transparent; color: ${u}; border: 1px solid ${m}; }\n .ihooman-proactive-toast-btn.secondary:hover { background: ${v}; }\n\n /* ── Survey View ── */\n .ihooman-survey-view { display: none; flex-direction: column; padding: 24px; gap: 16px; background: ${d}; flex: 1; align-items: center; justify-content: center; }\n .ihooman-survey-view.show { display: flex; }\n .ihooman-survey-question { font-size: 16px; font-weight: 600; color: ${p}; text-align: center; letter-spacing: -0.01em; }\n .ihooman-survey-stars { display: flex; gap: 8px; }\n .ihooman-survey-star { width: 36px; height: 36px; cursor: pointer; color: ${h}; transition: all 0.15s ease; }\n .ihooman-survey-star:hover, .ihooman-survey-star.active { color: #fbbf24; transform: scale(1.1); }\n .ihooman-survey-star svg { width: 100%; height: 100%; }\n .ihooman-survey-comment { width: 100%; padding: 12px; border: 1px solid ${m}; border-radius: 10px; font-size: 14px; font-family: inherit; resize: none; min-height: 80px; background: ${f}; color: ${p}; outline: none; }\n .ihooman-survey-comment:focus { border-color: ${r?"#3f3f46":"#a1a1aa"}; }\n .ihooman-survey-submit { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; background: ${y}; color: ${x}; border: none; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; line-height: 1.4; transition: all 0.15s ease; }\n .ihooman-survey-submit:hover { opacity: 0.85; }\n .ihooman-survey-skip { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background: transparent; color: ${h}; border: none; font-size: 12px; cursor: pointer; line-height: 1.4; }\n .ihooman-survey-skip:hover { color: ${p}; }\n\n /* ── Feedback ── */\n .ihooman-feedback-btns { display: flex; gap: 4px; margin-top: 4px; }\n .ihooman-feedback-btn svg { width: 12px; height: 12px; }\n\n /* ── Carousel ── */\n .ihooman-carousel { display: flex; gap: 10px; overflow-x: auto; padding: 8px 0; scroll-snap-type: x mandatory; }\n .ihooman-carousel::-webkit-scrollbar { height: 3px; }\n .ihooman-carousel::-webkit-scrollbar-thumb { background: ${r?"#27272a":"#d4d4d8"}; border-radius: 2px; }\n .ihooman-carousel-card { min-width: 200px; max-width: 250px; border: 1px solid ${m}; border-radius: 12px; overflow: hidden; scroll-snap-align: start; background: ${c}; }\n .ihooman-carousel-card img { width: 100%; height: 120px; object-fit: cover; }\n .ihooman-carousel-card-content { padding: 12px; }\n .ihooman-carousel-card-title { font-size: 13px; font-weight: 600; color: ${p}; margin-bottom: 4px; }\n .ihooman-carousel-card-desc { font-size: 12px; color: ${u}; margin-bottom: 8px; }\n .ihooman-carousel-card-btns { display: flex; flex-direction: column; gap: 6px; }\n\n /* ── Quick Replies ── */\n .ihooman-quick-replies { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }\n\n /* ── Responsive ── */\n @media (max-width: 480px) { .ihooman-window { width: calc(100vw - 16px); height: calc(100vh - 100px); min-height: 400px; max-height: calc(100vh - 100px); left: 8px; right: 8px; bottom: 80px; } .ihooman-toggle { ${$?"right: 16px":"left: 16px"}; bottom: 16px; } .ihooman-proactive-toast { left: 8px; right: 8px; max-width: none; } }\n `}(),I.appendChild(t);const i=document.createElement("div");i.className="ihooman-widget",i.style.cssText="pointer-events: auto;",i.innerHTML=`\n <button class="ihooman-toggle" aria-label="Open chat">\n <span class="ihooman-pulse"></span>\n <span class="ihooman-badge"></span>\n <span class="chat-icon">${o.chat}</span>\n <span class="close-icon">${o.close}</span>\n </button>\n <div class="ihooman-proactive-toast">\n <div class="ihooman-proactive-toast-content"></div>\n <div class="ihooman-proactive-toast-actions">\n <button class="ihooman-proactive-toast-btn primary">Chat Now</button>\n <button class="ihooman-proactive-toast-btn secondary">Dismiss</button>\n </div>\n </div>\n <div class="ihooman-window" role="dialog" aria-label="Chat window">\n <div class="ihooman-container">\n <div class="ihooman-header">\n <div class="ihooman-header-avatar">${n.avatarUrl?`<img src="${w(n.avatarUrl)}" alt="Assistant">`:o.sparkle}</div>\n <div class="ihooman-header-info">\n <div class="ihooman-header-title">${w(n.title||"AI Assistant")}</div>\n <div class="ihooman-header-status"><span class="ihooman-status-dot"></span><span class="ihooman-status-text">Online</span></div>\n </div>\n <div class="ihooman-header-actions">\n <button class="ihooman-header-btn" data-action="history" title="Chat history">${o.history}</button>\n <button class="ihooman-header-btn" data-action="refresh" title="New conversation">${o.plus}</button>\n <button class="ihooman-header-btn" data-action="minimize" title="Minimize">${o.minimize}</button>\n </div>\n </div>\n <div class="ihooman-chat-view">\n <div class="ihooman-status-bar"></div>\n <div class="ihooman-messages" role="log" aria-live="polite"></div>\n <div class="ihooman-preset-questions"></div>\n <div class="ihooman-input-area">\n <div class="ihooman-input-wrapper">\n ${n.enableFileUpload?`<button class="ihooman-input-btn attach" title="Attach file">${o.attach}</button><input type="file" class="ihooman-file-input">`:""}\n <textarea class="ihooman-input" placeholder="${w(n.placeholder||"Type a message...")}" rows="1" aria-label="Message input"></textarea>\n <button class="ihooman-input-btn send" title="Send message" disabled>${o.send}</button>\n </div>\n </div>\n </div>\n <div class="ihooman-ticket-view">\n <h4 class="ihooman-ticket-title">Submit a Ticket</h4>\n <p class="ihooman-ticket-subtitle">We'll get back to you via email</p>\n <input class="ihooman-ticket-input" id="ihooman-ticket-name" placeholder="Your name" required>\n <input class="ihooman-ticket-input" id="ihooman-ticket-email" type="email" placeholder="Your email" required>\n <textarea class="ihooman-ticket-input ihooman-ticket-textarea" id="ihooman-ticket-issue" placeholder="Describe your issue..."></textarea>\n <button class="ihooman-ticket-submit" id="ihooman-ticket-submit">Submit Ticket</button>\n <button class="ihooman-ticket-back" id="ihooman-ticket-back">← Back to Chat</button>\n </div>\n <div class="ihooman-history-view">\n <div class="ihooman-history-header">\n <span class="ihooman-history-title">Your Conversations</span>\n <button class="ihooman-history-new">${o.plus} New Chat</button>\n </div>\n <div class="ihooman-history-list"></div>\n </div>\n <div class="ihooman-survey-view">\n <div class="ihooman-survey-question">${n.surveyConfig?.question||"How was your experience?"}</div>\n <div class="ihooman-survey-stars"></div>\n <textarea class="ihooman-survey-comment" placeholder="Any additional feedback? (optional)"></textarea>\n <button class="ihooman-survey-submit">Submit Feedback</button>\n <button class="ihooman-survey-skip">Skip</button>\n </div>\n ${n.poweredBy?'<div class="ihooman-powered">Powered by <a href="https://ihooman.ai" target="_blank" rel="noopener">Ihooman AI</a></div>':""}\n </div>\n </div>\n `,I.appendChild(i),u={widget:i,toggle:i.querySelector(".ihooman-toggle"),badge:i.querySelector(".ihooman-badge"),window:i.querySelector(".ihooman-window"),chatView:i.querySelector(".ihooman-chat-view"),ticketView:i.querySelector(".ihooman-ticket-view"),historyView:i.querySelector(".ihooman-history-view"),surveyView:i.querySelector(".ihooman-survey-view"),historyList:i.querySelector(".ihooman-history-list"),messages:i.querySelector(".ihooman-messages"),presetQuestions:i.querySelector(".ihooman-preset-questions"),input:i.querySelector(".ihooman-input"),sendBtn:i.querySelector(".ihooman-input-btn.send"),attachBtn:i.querySelector(".ihooman-input-btn.attach"),fileInput:i.querySelector(".ihooman-file-input"),statusDot:i.querySelector(".ihooman-status-dot"),statusText:i.querySelector(".ihooman-status-text"),statusBar:i.querySelector(".ihooman-status-bar"),ticketName:i.querySelector("#ihooman-ticket-name"),ticketEmail:i.querySelector("#ihooman-ticket-email"),ticketIssue:i.querySelector("#ihooman-ticket-issue"),ticketSubmitBtn:i.querySelector("#ihooman-ticket-submit"),ticketBackBtn:i.querySelector("#ihooman-ticket-back"),proactiveToast:i.querySelector(".ihooman-proactive-toast")},function(){if(!u.toggle||!u.sendBtn||!u.input)return;u.toggle.addEventListener("click",ne),u.sendBtn.addEventListener("click",N),u.input.addEventListener("input",()=>{u.sendBtn&&(u.sendBtn.disabled=!u.input?.value.trim()),u.input&&(u.input.style.height="auto",u.input.style.height=Math.min(u.input.scrollHeight,100)+"px")}),u.input.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),u.sendBtn?.disabled||N())}),u.attachBtn&&u.fileInput&&(u.attachBtn.addEventListener("click",()=>u.fileInput?.click()),u.fileInput.addEventListener("change",D));u.widget?.querySelector('[data-action="refresh"]')?.addEventListener("click",ie),u.widget?.querySelector('[data-action="minimize"]')?.addEventListener("click",oe),u.widget?.querySelector('[data-action="history"]')?.addEventListener("click",E),u.ticketSubmitBtn&&u.ticketSubmitBtn.addEventListener("click",O);u.ticketBackBtn&&u.ticketBackBtn.addEventListener("click",()=>B("chat"));const e=u.widget?.querySelector(".ihooman-history-new");e&&e.addEventListener("click",()=>{ie(),B("chat")});const t=u.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.primary"),n=u.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.secondary");t&&t.addEventListener("click",()=>{const e=d[d.length-1];e&&_("proactive_clicked",{message_id:e}),G(),te(),$("proactive:clicked")});n&&n.addEventListener("click",()=>{G()});const i=u.surveyView?.querySelector(".ihooman-survey-submit"),a=u.surveyView?.querySelector(".ihooman-survey-skip");i&&i.addEventListener("click",H);a&&a.addEventListener("click",()=>B("chat"));!function(){const e=u.surveyView?.querySelector(".ihooman-survey-stars");if(!e)return;let t=0;e.innerHTML="";for(let n=1;n<=5;n++){const i=document.createElement("div");i.className="ihooman-survey-star",i.innerHTML=o.starEmpty,i.dataset.rating=String(n),i.addEventListener("click",()=>{t=n,q(e,n)}),i.addEventListener("mouseenter",()=>q(e,n)),i.addEventListener("mouseleave",()=>q(e,t)),e.appendChild(i)}}()}()}function q(e,t){e.querySelectorAll(".ihooman-survey-star").forEach((e,n)=>{const i=e;n<t?(i.innerHTML=o.star,i.classList.add("active")):(i.innerHTML=o.starEmpty,i.classList.remove("active"))})}function z(e,t="bot",a={}){const s={id:x("msg_"),content:e,sender:t,timestamp:new Date,metadata:a};if(i.messages.push(s),!u.messages)return s;const r=document.createElement("div");r.className=`ihooman-message ${t}`;const d="bot"===t&&!0===a?.escalation_offered;let c="";d&&(c=`\n <div class="ihooman-escalation-actions">\n <button class="ihooman-escalation-btn primary" data-action="live-agent">${o.agent}<span>Talk to Agent</span></button>\n <button class="ihooman-escalation-btn secondary" data-action="create-ticket">${o.ticket}<span>Create Ticket</span></button>\n </div>\n `);let l="";var p,h;a?.quick_replies&&a.quick_replies.length>0&&(l=`<div class="ihooman-quick-replies">${a.quick_replies.map(e=>`<button class="ihooman-quick-reply" data-text="${w(e.text)}">${w(e.text)}</button>`).join("")}</div>`),r.innerHTML=`\n <div class="ihooman-message-content">${h=e,h?w(h).replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/\[(.*?)\]\((.*?)\)/g,'<a href="$2" target="_blank" rel="noopener">$1</a>').replace(/\n/g,"<br>"):""}</div>\n ${c}\n ${l}\n ${n.showTimestamps?`<div class="ihooman-message-time">${p=s.timestamp,new Date(p).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}</div>`:""}\n `,d&&(r.querySelector('[data-action="live-agent"]')?.addEventListener("click",()=>L("live-agent")),r.querySelector('[data-action="create-ticket"]')?.addEventListener("click",()=>L("create-ticket"))),r.querySelectorAll(".ihooman-quick-reply").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.text;t&&(P(),z(t,"user"),V(),F(t))})});const m=u.messages.querySelector(".ihooman-typing");return m&&m.remove(),u.messages.appendChild(r),u.messages.scrollTop=u.messages.scrollHeight,"bot"===t&&(n.enableSounds&&function(){if(i.soundMuted)return;try{const e=window.AudioContext||window.webkitAudioContext;if(!e)return;const t=new e,o=t.createOscillator(),n=t.createGain();o.connect(n),n.connect(t.destination),o.frequency.setValueAtTime(880,t.currentTime),o.frequency.setValueAtTime(1108.73,t.currentTime+.1),n.gain.setValueAtTime(0,t.currentTime),n.gain.linearRampToValueAtTime(.3,t.currentTime+.01),n.gain.linearRampToValueAtTime(.2,t.currentTime+.1),n.gain.linearRampToValueAtTime(0,t.currentTime+.3),o.start(t.currentTime),o.stop(t.currentTime+.3),o.onended=()=>{t.close().catch(()=>{})}}catch(e){console.debug("[IhoomanChat] Sound playback failed:",e)}}(),i.isOpen||(i.unreadCount++,u.badge&&(u.badge.textContent=String(i.unreadCount)))),$("message",s),s}function M(){console.debug("[IhoomanChat] Rendering preset questions:",p.length),u.presetQuestions&&0!==p.length?(u.presetQuestions.innerHTML=p.map(e=>`\n <button class="ihooman-preset-btn" data-question-id="${w(e.id)}" data-question-text="${w(e.text)}">\n ${e.icon||e.emoji?`<span class="icon">${w(e.icon||e.emoji||"")}</span>`:""}\n <span>${w(e.text)}</span>\n </button>\n `).join(""),u.presetQuestions.querySelectorAll(".ihooman-preset-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.questionText;t&&function(e){P(),z(e,"user"),V(),F(e)}(t)})})):u.presetQuestions&&(u.presetQuestions.innerHTML="")}function L(e){document.querySelectorAll(".ihooman-escalation-btn").forEach(e=>e.disabled=!0),"live-agent"===e?async function(){if(!i.sessionId)return void z("Please send a message first to start a conversation.","bot",{is_system_message:!0});try{const e=await fetch(`${n.serverUrl}/api/widget/live-agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,session_id:i.sessionId,visitor_id:i.visitorId})}),t=await e.json();s=!0,i.escalationStatus={active:!0,type:"live_agent",queuePosition:t.position_in_queue},t.position_in_queue&&t.position_in_queue>1?j("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):j("waiting","⏳ Connecting to live support..."),A(),$("escalation:start",{type:"live_agent"})}catch(e){console.error("Error requesting live agent:",e),z("❌ Unable to connect to live support. Please try again.","bot",{is_system_message:!0})}}():"create-ticket"===e&&B("ticket")}function B(e){a=e,i.view=e,u.chatView&&u.chatView.classList.toggle("hidden","chat"!==e),u.ticketView&&u.ticketView.classList.toggle("show","ticket"===e),u.historyView&&u.historyView.classList.toggle("show","history"===e),u.surveyView&&u.surveyView.classList.toggle("show","survey"===e),"history"===e&&async function(){if(!u.historyList||!i.visitorId)return;u.historyList.innerHTML='<div class="ihooman-history-empty">Loading...</div>';try{const e=await fetch(`${n.serverUrl}/api/widget/conversations?widget_id=${n.widgetId}&visitor_id=${i.visitorId}&limit=20`);if(!e.ok)throw new Error("Failed to load history");const t=await e.json();if(!t.length)return void(u.historyList.innerHTML='<div class="ihooman-history-empty">No conversations yet</div>');u.historyList.innerHTML=t.map(e=>`\n <div class="ihooman-history-item ${e.session_id===i.sessionId?"active":""}" data-session-id="${e.session_id}">\n <div class="ihooman-history-preview">${w(e.preview||"New conversation")}</div>\n <div class="ihooman-history-meta">\n <span>${e.message_count} msgs</span>\n <span>${"pending"===e.status?"🟡 Pending":"closed"===e.status?"✓ Closed":""} ${function(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"now":t<36e5?Math.floor(t/6e4)+"m":t<864e5?Math.floor(t/36e5)+"h":Math.floor(t/864e5)+"d"}(e.updated_at)}</span>\n </div>\n </div>\n `).join(""),u.historyList.querySelectorAll(".ihooman-history-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.sessionId;t&&async function(e){i.sessionId=e,n.persistSession&&k("session_id",e);u.messages&&(u.messages.innerHTML="");s=!1,U(),j("hidden"),v=!0,m&&(m.close(),m=null);K(),B("chat"),await async function(e){try{const t=await fetch(`${n.serverUrl}/api/widget/transcript/${e}?widget_id=${n.widgetId}`);if(!t.ok)throw new Error("Failed to load messages");const o=await t.json();u.messages&&(u.messages.innerHTML=""),o.messages&&o.messages.length>0?o.messages.forEach(e=>{const t="user"===e.sender_type?"user":"bot";z(e.content,t,e.extra_data||{})}):n.welcomeMessage&&z(n.welcomeMessage,"bot"),"pending"===o.status&&(s=!0,A(),j("waiting","⏳ Waiting for agent..."))}catch(e){console.error("Error loading conversation messages:",e),n.welcomeMessage&&z(n.welcomeMessage,"bot")}}(e)}(t)})})}catch(e){console.error("Error loading conversation history:",e),u.historyList.innerHTML='<div class="ihooman-history-empty">Failed to load history</div>'}}()}function E(){B("history"===a?"chat":"history")}function j(e,t){u.statusBar&&("hidden"!==e?(u.statusBar.classList.add("show"),u.statusBar.classList.remove("waiting","connected"),u.statusBar.classList.add(e),t&&(u.statusBar.textContent=t)):u.statusBar.classList.remove("show"))}async function O(){const e=u.ticketName?.value.trim(),t=u.ticketEmail?.value.trim(),o=u.ticketIssue?.value.trim();if(e&&t){u.ticketSubmitBtn&&(u.ticketSubmitBtn.disabled=!0,u.ticketSubmitBtn.textContent="Submitting...");try{const a=await fetch(`${n.serverUrl}/api/widget/submit-ticket`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,session_id:i.sessionId,user_name:e,user_email:t,issue:o||"No description provided"})}),s=await a.json();u.ticketName&&(u.ticketName.value=""),u.ticketEmail&&(u.ticketEmail.value=""),u.ticketIssue&&(u.ticketIssue.value=""),B("chat");z(`✅ Ticket submitted! We'll contact you at ${t}. Reference: #${s.ticket_id?s.ticket_id.slice(0,8):"submitted"}`,"bot",{is_system_message:!0})}catch(e){console.error("Error submitting ticket:",e),z("❌ Error submitting ticket. Please try again.","bot",{is_system_message:!0})}u.ticketSubmitBtn&&(u.ticketSubmitBtn.disabled=!1,u.ticketSubmitBtn.textContent="Submit Ticket")}else alert("Please fill in your name and email")}function A(){if(y)return;let e=!1;y=setInterval(async()=>{if(i.sessionId&&s)try{const t=await fetch(`${n.serverUrl}/api/widget/escalation-status/${i.sessionId}?widget_id=${n.widgetId}`);if(t.ok){const o=await t.json();o.escalated&&("in_progress"===o.ticket_status||"active"===o.conversation_status?(j("connected","🟢 Connected to live agent"),e||(e=!0,U())):"open"===o.ticket_status?j("waiting",o.position_in_queue>1?`⏳ Waiting for agent (Position: #${o.position_in_queue})`:"⏳ Waiting for agent..."):"closed"!==o.ticket_status&&"resolved"!==o.ticket_status||(s=!1,U(),j("hidden"),z("This conversation has been closed. Thank you for contacting us!","bot",{is_system_message:!0}),$("escalation:end",{type:"live_agent"})))}}catch{}else U()},15e3)}function U(){y&&(clearInterval(y),y=null)}async function H(){const e=u.surveyView?.querySelector(".ihooman-survey-stars"),t=e?.querySelectorAll(".ihooman-survey-star.active"),o=t?.length||0,a=u.surveyView?.querySelector(".ihooman-survey-comment")?.value;if(0!==o)try{await fetch(`${n.serverUrl}/api/widget/public/survey-response?widget_id=${encodeURIComponent(n.widgetId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({survey_config_id:n.surveyConfig?.id,session_id:i.sessionId,visitor_id:i.visitorId,rating:o,comment:a||null})}),_("survey_submitted",{survey_id:n.surveyConfig?.id,rating:o,comment:a||null,session_id:i.sessionId,visitor_id:i.visitorId}),k("survey_completed_"+i.sessionId,!0),$("survey:submitted",{rating:o,comment:a}),z(n.surveyConfig?.thankYouMessage||"Thank you for your feedback!","bot",{is_system_message:!0}),B("chat")}catch(e){console.error("Error submitting survey:",e)}else alert("Please select a rating")}function V(){if(!n.showTypingIndicator||!u.messages)return;if(u.messages.querySelector(".ihooman-typing"))return;const e=document.createElement("div");e.className="ihooman-typing",e.innerHTML='<span class="ihooman-typing-shimmer">Thinking...</span><div class="ihooman-typing-dots"><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span></div>',u.messages.appendChild(e),u.messages.scrollTop=u.messages.scrollHeight}function W(){const e=u.messages?.querySelector(".ihooman-typing");e&&e.remove()}function R(){u.input&&(u.input.disabled=!0,u.input.placeholder="Conversation closed — start a new chat to continue"),u.sendBtn&&(u.sendBtn.disabled=!0),u.attachBtn&&(u.attachBtn.disabled=!0)}function N(){if(r)return;const e=u.input?.value.trim();e&&(P(),u.input&&(u.input.value="",u.input.style.height="auto"),u.sendBtn&&(u.sendBtn.disabled=!0),z(e,"user"),_("message_sent",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:e.length}),V(),F(e))}function P(){u.presetQuestions&&u.presetQuestions.classList.add("hidden")}async function F(e){if(!r)if(m&&m.readyState===WebSocket.OPEN)m.send(JSON.stringify({type:"message",content:e}));else try{const t=await fetch(`${n.serverUrl}/api/v1/public/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,session_id:i.sessionId,visitor_id:i.visitorId,widget_id:n.widgetId})}),o=await t.json();W(),o.session_id&&(i.sessionId=o.session_id,n.persistSession&&k("session_id",i.sessionId)),o.response&&(z(o.response,"bot",{sources:o.sources,confidence:o.confidence,escalation_offered:o.escalation_offered,quick_replies:o.quick_replies}),_("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:o.response.length,has_sources:!!o.sources,confidence:o.confidence}))}catch(e){W(),z("Sorry, something went wrong. Please try again.","bot"),$("error",e)}}function D(e){const t=e.target,o=t.files?.[0];if(!o)return;z(`📎 Uploading: ${o.name}...`,"user"),V();const a=new FormData;a.append("file",o),a.append("session_id",i.sessionId||""),a.append("visitor_id",i.visitorId||""),a.append("widget_id",n.widgetId),fetch(`${n.serverUrl}/api/upload`,{method:"POST",body:a}).then(e=>e.json()).then(e=>{W(),e.message&&z(e.message,"bot")}).catch(()=>{W(),z("Failed to upload file.","bot")}),t.value=""}function Q(){n.proactiveMessages&&0!==n.proactiveMessages.length?(console.debug("[IhoomanChat] Initializing proactive messages:",n.proactiveMessages.length),d=k("shown_proactive")||[],c=k("proactive_cooldowns")||{},l=setInterval(Y,5e3),window.addEventListener("scroll",Y),document.addEventListener("mouseout",e=>{e.clientY<=0&&function(){if(i.isOpen||!n.proactiveMessages)return;const e=n.proactiveMessages.filter(e=>"exit_intent"===e.trigger.type&&!d.includes(e.id));e.length>0&&J(e[0])}()})):console.debug("[IhoomanChat] No proactive messages configured")}function Y(){if(i.isOpen||!n.proactiveMessages)return;const e=Date.now();for(const t of n.proactiveMessages){if(d.includes(t.id))continue;const o=c[t.id];if(o&&e-o<60*t.cooldownMinutes*1e3)continue;if(t.startDate&&new Date(t.startDate)>new Date)continue;if(t.endDate&&new Date(t.endDate)<new Date)continue;let n=!1;switch(t.trigger.type){case"time":const o="number"==typeof t.trigger.value?t.trigger.value:parseInt(String(t.trigger.value),10);e-(k("page_load_time")||e)>=1e3*o&&(n=!0);break;case"scroll":const i="number"==typeof t.trigger.value?t.trigger.value:parseInt(String(t.trigger.value),10);S()>=i&&(n=!0);break;case"url_pattern":C(String(t.trigger.value))&&(n=!0)}if(n){J(t);break}}}function J(e){if(d.push(e.id),c[e.id]=Date.now(),k("shown_proactive",d),k("proactive_cooldowns",c),_("proactive_displayed",{message_id:e.id}),u.proactiveToast){const t=u.proactiveToast.querySelector(".ihooman-proactive-toast-content");t&&(t.textContent=e.message),u.proactiveToast.classList.add("show"),$("proactive:shown",e),e.autoOpen&&setTimeout(()=>{G(),te()},3e3)}}function G(){u.proactiveToast&&u.proactiveToast.classList.remove("show")}function K(e){if(!n.serverUrl&&!e)return;let t;if(n.widgetId){const e=n.serverUrl?.replace(/^http/,"ws"),o=new URLSearchParams({widget_id:n.widgetId});i.visitorId&&o.append("visitor_id",i.visitorId),i.sessionId&&o.append("session_id",i.sessionId),t=`${e}/public/ws?${o.toString()}`}else t=e||n.serverUrl?.replace(/^http/,"ws")+"/ws";try{Z(),m=new WebSocket(t),m.onopen=()=>{i.isConnected=!0,i.connectionStatus="connected",f=0,ee(!0),$("connected"),Z(),b=setInterval(()=>{if(m&&m.readyState===WebSocket.OPEN)try{m.send(JSON.stringify({type:"ping"}))}catch{}},25e3)},m.onclose=t=>{if(i.isConnected=!1,i.connectionStatus="disconnected",ee(!1),Z(),$("disconnected"),v)v=!1;else if(4002!==t.code&&i.isOpen)if(f<5){f++;const t=Math.min(1e3*Math.pow(2,f),3e4);setTimeout(()=>K(e),t)}else X()},m.onerror=e=>{console.error("WebSocket error:",e)},m.onmessage=e=>{try{const t=JSON.parse(e.data);if("connected"===t.type)t.session_id&&(i.sessionId=t.session_id,n.persistSession&&k("session_id",i.sessionId)),t.visitor_id&&(i.visitorId=t.visitor_id,n.persistSession&&k("visitor_id",i.visitorId)),t.welcome_message&&0===i.messages.length&&z(t.welcome_message,"bot");else if("message"===t.type){W();const e="user"===t.sender?"user":"bot",o=t.metadata||{};o.agent_accepted&&(s=!0,j("connected","🟢 Connected to live agent"),$("escalation:accepted",{type:"live_agent"})),o.closed_by_agent&&(s=!1,r=!0,U(),j("hidden"),R(),$("escalation:end",{type:"live_agent"})),_("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,sender:t.sender,is_system_message:o.is_system_message||!1}),z(t.content,e,{confidence:t.confidence,agent_name:t.agent_name,escalation_offered:t.escalation_offered,escalated:t.escalated,quick_replies:t.quick_replies,...o})}else"typing"===t.type?t.is_typing?V():W():"pong"===t.type||("agent_status"===t.type?"connected"===t.status?(s=!0,j("connected","🟢 Connected to live agent"),$("escalation:accepted",{type:"live_agent"})):"disconnected"===t.status&&(s=!1,r=!0,U(),j("hidden"),R(),$("escalation:end",{type:"live_agent"})):"error"===t.type&&(console.error("WebSocket server error:",t.message),$("error",{message:t.message})))}catch{}}}catch{X()}}function Z(){b&&(clearInterval(b),b=null)}function X(){g||(g=setInterval(async()=>{if(i.sessionId)try{const e=await fetch(`${n.serverUrl}/api/messages?session_id=${i.sessionId}&since=${Date.now()-5e3}&widget_id=${n.widgetId}`),t=await e.json();t.messages&&t.messages.forEach(e=>{i.messages.find(t=>t.id===e.id)||z(e.content,e.sender_type,e.metadata)})}catch{}},5e3))}function ee(e){u.statusDot&&u.statusDot.classList.toggle("offline",!e),u.statusText&&(u.statusText.textContent=e?"Online":"Offline")}function te(){i.isOpen||(i.isOpen=!0,i.unreadCount=0,u.badge&&(u.badge.textContent=""),u.toggle&&u.toggle.classList.add("open"),u.window&&u.window.classList.add("open"),G(),setTimeout(()=>u.input?.focus(),300),_("widget_open"),$("open"))}function oe(){if(i.isOpen){if(i.isOpen=!1,u.toggle&&u.toggle.classList.remove("open"),u.window&&u.window.classList.remove("open"),_("widget_close"),n.surveyConfig&&i.messages.length>=4){i.sessionId&&k("survey_completed_"+i.sessionId)||setTimeout(()=>{i.isOpen||(n.surveyConfig&&(i.sessionId&&k("survey_completed_"+i.sessionId)||i.messages.length<4||(_("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId}),B("survey"),$("survey:shown",n.surveyConfig))),te())},500)}$("close")}}function ne(){i.isOpen?oe():te()}function ie(){i.sessionId=null,i.visitorId=null,i.messages=[],s=!1,r=!1,k("session_id",null),i.visitorId=x("v_"),k("visitor_id",i.visitorId),u.messages&&(u.messages.innerHTML=""),j("hidden"),U(),u.input&&(u.input.disabled=!1,u.input.placeholder=n.placeholder||"Send a message..."),u.sendBtn&&(u.sendBtn.disabled=!u.input?.value.trim()),u.attachBtn&&(u.attachBtn.disabled=!1),f=0,m&&(v=!0,m.close(),m=null),K(),n.welcomeMessage&&z(n.welcomeMessage,"bot"),u.presetQuestions&&u.presetQuestions.classList.remove("hidden"),M(),$("newConversation")}const ae={backgroundColor:"#ededed",textColor:"#09090b",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},se={backgroundColor:"transparent",textColor:"#a1a1aa",borderColor:"#27272a",borderWidth:1,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},re={backgroundColor:"transparent",textColor:"#a1a1aa",borderColor:"#27272a",borderWidth:1,borderRadius:20,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},de={backgroundColor:"#1a1a1a",textColor:"#a1a1aa",borderColor:"#27272a",borderWidth:1,borderRadius:16,paddingVertical:5,paddingHorizontal:10,fontSize:11,fontWeight:"medium"},ce={backgroundColor:"transparent",textColor:"#52525b",borderColor:"#27272a",borderWidth:1,borderRadius:6,paddingVertical:4,paddingHorizontal:8,fontSize:12,fontWeight:"medium"},le={backgroundColor:"transparent",textColor:"#a1a1aa",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"},pe={backgroundColor:"#ededed",textColor:"#09090b",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:14,fontSize:12,fontWeight:"medium"},ue={backgroundColor:"#ededed",textColor:"#09090b",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},he={backgroundColor:"#ededed",textColor:"#09090b",borderColor:"#27272a",borderWidth:1,borderRadius:30,paddingVertical:0,paddingHorizontal:0,fontSize:14,fontWeight:"medium"},me={backgroundColor:"transparent",textColor:"#52525b",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"};function ge(e){const t="ihooman-button-styling",o=I||document.head;let n=o.querySelector(`#${t}`);n||(n=document.createElement("style"),n.id=t,o.appendChild(n));const i={primary:{...ae,...e?.primary||{}},secondary:{...se,...e?.secondary||{}},presetQuestions:{...re,...e?.presetQuestions||{}},quickReplies:{...de,...e?.quickReplies||{}},feedback:{...ce,...e?.feedback||{}},headerActions:{...le,...e?.headerActions||{}},escalation:{...pe,...e?.escalation||{}},cardActions:{...ue,...e?.cardActions||{}},toggleButton:{...he,...e?.toggleButton||{}},attachButton:{...me,...e?.attachButton||{}}},a=(e,t)=>{const o=t.backgroundColor,n=t.textColor,i=t.borderColor;return`\n ${e} {\n background: ${o};\n color: ${n};\n border: ${t.borderWidth}px solid ${i};\n border-radius: ${t.borderRadius}px;\n padding: ${t.paddingVertical}px ${t.paddingHorizontal}px;\n margin: 0;\n font-family: inherit;\n font-size: ${t.fontSize}px;\n font-weight: ${function(e){switch(e){case"normal":return 400;case"medium":default:return 500;case"semibold":return 600;case"bold":return 700}}(t.fontWeight)};\n min-width: unset;\n min-height: unset;\n width: auto;\n height: auto;\n max-width: none;\n max-height: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n line-height: 1.4;\n text-transform: none;\n letter-spacing: normal;\n box-shadow: none;\n text-decoration: none;\n white-space: nowrap;\n box-sizing: border-box;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n `};let s="";s+=a(".ihooman-input-btn.send",i.primary),s+=a(".ihooman-proactive-toast-btn.primary",i.primary),s+=a(".ihooman-survey-submit",i.primary),s+=a(".ihooman-ticket-submit",i.primary),s+=a(".ihooman-history-new",i.primary),s+=a(".ihooman-proactive-toast-btn.secondary",i.secondary),s+=a(".ihooman-survey-skip",i.secondary),s+=a(".ihooman-ticket-back",i.secondary),s+=a(".ihooman-preset-btn",i.presetQuestions),s+=a(".ihooman-quick-reply",i.quickReplies),s+=a(".ihooman-feedback-btn",i.feedback),s+=a(".ihooman-header-btn",i.headerActions),s+=a(".ihooman-escalation-btn",i.escalation),s+=a(".ihooman-escalation-btn.primary",i.escalation),s+=a(".ihooman-escalation-btn.secondary",i.secondary),s+=a(".ihooman-carousel-card-btn",i.cardActions);const r=i.toggleButton,d=r.backgroundColor,c=r.textColor,l=r.borderColor;s+=`\n .ihooman-toggle {\n background: linear-gradient(135deg, ${d}, ${d}) !important;\n color: ${c};\n border: ${r.borderWidth}px solid ${l};\n border-radius: ${r.borderRadius}px;\n }\n `,s+=a(".ihooman-input-btn.attach",i.attachButton),console.debug("[IhoomanChat] Applied button styling CSS:",s.length,"chars"),n.textContent=s}async function fe(o){if(!o.widgetId)return console.error("IhoomanChat: widgetId is required"),null;n={...t,...o},i.visitorId=k("visitor_id")||x("v_"),k("visitor_id",i.visitorId),n.persistSession&&(i.sessionId=k("session_id")),k("page_load_time")||k("page_load_time",Date.now());const a=n.serverUrl||e,s=await async function(e,t){try{const o=await fetch(`${t}/api/widget/config?widget_id=${encodeURIComponent(e)}`);return o.ok?await o.json():{success:!1,error:(await o.json().catch(()=>({}))).error||`HTTP ${o.status}`}}catch(e){return{success:!1,error:"Unable to connect. Please check your internet connection."}}}(n.widgetId,a);let r;var d;return s.success&&s.config?(d=s.config,n.title=d.title||n.title,n.subtitle=d.subtitle||n.subtitle,n.welcomeMessage=d.welcomeMessage||n.welcomeMessage,n.placeholder=d.placeholder||n.placeholder,n.position=d.position||n.position,d.theme&&(n.primaryColor=d.theme.primaryColor||n.primaryColor,n.gradientFrom=d.theme.gradientFrom||n.gradientFrom,n.gradientTo=d.theme.gradientTo||n.gradientTo,n.fontFamily=d.theme.fontFamily||n.fontFamily,d.theme.borderRadius&&(n.borderRadius=parseInt(d.theme.borderRadius,10)||n.borderRadius)),d.behavior&&(n.startOpen=d.behavior.startOpen??n.startOpen,n.showTypingIndicator=d.behavior.showTypingIndicator??n.showTypingIndicator,n.showTimestamps=d.behavior.showTimestamps??n.showTimestamps,n.enableSounds=d.behavior.enableSounds??n.enableSounds,n.enableFileUpload=d.behavior.enableFileUpload??n.enableFileUpload,n.persistSession=d.behavior.persistSession??n.persistSession),d.branding&&(n.avatarUrl=d.branding.avatarUrl||n.avatarUrl,n.logoUrl=d.branding.logoUrl||n.logoUrl,n.poweredBy=d.branding.poweredBy??n.poweredBy,n.customCss=d.branding.customCss||n.customCss),d.size&&(n.width=d.size.width||n.width,n.height=d.size.height||n.height,n.buttonSize=d.size.buttonSize||n.buttonSize),d.presetQuestions&&Array.isArray(d.presetQuestions)&&(console.debug("[IhoomanChat] Server config presetQuestions:",d.presetQuestions.length),p=d.presetQuestions.map(e=>({id:e.id,text:e.text,icon:e.icon,emoji:e.icon})),n.presetQuestions=p),d.proactiveMessages&&Array.isArray(d.proactiveMessages)&&(console.debug("[IhoomanChat] Server config proactiveMessages:",d.proactiveMessages.length),n.proactiveMessages=d.proactiveMessages.filter(e=>!1!==e.isActive).map(e=>({id:e.id,message:e.message,trigger:{type:e.trigger.type,value:"time"===e.trigger.type||"scroll"===e.trigger.type?parseInt(e.trigger.value,10)||30:e.trigger.value},autoOpen:e.autoOpen||!1,cooldownMinutes:e.cooldownMinutes||60}))),d.surveyConfig&&!1!==d.surveyConfig.isActive&&(console.debug("[IhoomanChat] Server config surveyConfig:",d.surveyConfig.id),n.surveyConfig={id:d.surveyConfig.id,type:d.surveyConfig.type,question:d.surveyConfig.question,followUpQuestion:d.surveyConfig.followUpQuestion,thankYouMessage:d.surveyConfig.thankYouMessage}),d.buttonStyling&&(console.debug("[IhoomanChat] Server config buttonStyling:",Object.keys(d.buttonStyling)),n.buttonStyling=d.buttonStyling,ge(d.buttonStyling)),r=s.chatEndpoint,s.apiBaseUrl&&(n.serverUrl=s.apiBaseUrl)):s.error&&(console.warn("IhoomanChat: Could not fetch server config:",s.error),"Widget not authorized for this domain"===s.error&&console.error("IhoomanChat: Widget configuration error. Please contact support.")),T(),ge(n.buttonStyling),M(),i.messages.forEach(e=>z(e.content,"user"===e.sender?"user":"bot",e.metadata)),0===i.messages.length&&n.welcomeMessage&&z(n.welcomeMessage,"bot"),K(r),Q(),n.startOpen&&setTimeout(te,500),$("ready"),ve}const ve={init:fe,open:te,close:oe,toggle:ne,isOpen:function(){return i.isOpen},destroy:function(){Z(),U(),l&&(clearInterval(l),l=null),window.removeEventListener("scroll",Y),v=!0,m&&(m.close(),m=null),g&&(clearInterval(g),g=null),u.widget&&u.widget.remove();const e=document.getElementById("ihooman-widget-styles");e&&e.remove(),i={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},u={},f=0,v=!1},sendMessage:function(e){e.trim()&&!r&&(u.input&&(u.input.value=e),N())},setUser:function(e){i.userInfo=e,e.name&&k("user_name",e.name),e.email&&k("user_email",e.email),e.metadata&&k("user_metadata",e.metadata)},clearUser:function(){i.userInfo=null,k("user_name",null),k("user_email",null),k("user_metadata",null)},clearHistory:function(){ie()},on:function(e,t){h[e]||(h[e]=[]),h[e].push(t)},off:function(e,t){h[e]&&(h[e]=h[e].filter(e=>e!==t))},getState:function(){return{...i}},getConfig:function(){return{...n}},showSurvey:function(){n.surveyConfig?(_("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId,trigger:"manual"}),B("survey"),$("survey:shown",n.surveyConfig)):console.warn("[IhoomanChat] No survey configured")},resetProactiveMessages:function(){d=[],c={},k("shown_proactive",null),k("proactive_cooldowns",null),console.debug("[IhoomanChat] Proactive message history reset")},version:"4.0.0"},be=ve;function ye(){return{...ve}}!function(){if("undefined"==typeof document)return;let e=document.currentScript;if(!e){const t=document.getElementsByTagName("script");for(let o=0;o<t.length;o++)if(t[o].src&&t[o].src.includes("ihooman")){e=t[o];break}}if(!e)return;const t=e.getAttribute("data-widget-id");if(t){const o={widgetId:t},n=e.getAttribute("data-server-url");n&&(o.serverUrl=n);const i=e.getAttribute("data-theme");"light"!==i&&"dark"!==i||(o.theme=i);const a=e.getAttribute("data-position");a&&(o.position=a);"true"===e.getAttribute("data-start-open")&&(o.startOpen=!0),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>fe(o)):fe(o)}}(),"undefined"!=typeof window&&(window.IhoomanChat=be);export{be as IhoomanChat,ye as createWidgetInstance,be as default};
1
+ const e="https://api.ihooman.ai",t={serverUrl:e,theme:"light",position:"bottom-right",title:"Chat Support",subtitle:"We typically reply within minutes",welcomeMessage:"Hi there! 👋 How can we help you today?",placeholder:"Type a message...",primaryColor:"#00aeff",gradientFrom:"#00aeff",gradientTo:"#0066ff",showTimestamps:!0,showTypingIndicator:!0,enableSounds:!0,enableFileUpload:!0,startOpen:!1,persistSession:!0,zIndex:9999,width:380,height:560,buttonSize:60,borderRadius:16,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',avatarUrl:"",poweredBy:!0,presetQuestions:[],proactiveMessages:[],surveyConfig:null,locale:"en",allowLocalhost:!0},o={chat:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>',close:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>',send:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',attach:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>',minimize:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line></svg>',bot:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path></svg>',agent:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>',ticket:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"></path><polyline points="14 2 14 8 20 8"></polyline></svg>',history:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>',plus:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>',star:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path></svg>',starEmpty:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path></svg>'};let n={widgetId:"",...t},i={isOpen:!1,isConnected:!1,messages:[],pendingMessages:[],sessionId:null,visitorId:null,unreadCount:0,view:"chat",connectionStatus:"disconnected",typingIndicator:!1,soundMuted:!1,escalationStatus:null,userInfo:null},a="chat",s=!1,r=!1,d=[],c={},l=null,p=[],u={};const h={};let g=null,m=null,f=0;let b=!1,y=null,v=null;function x(e=""){return e+Math.random().toString(36).slice(2,14)+Date.now().toString(36)}function w(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function k(e,t){const o="ihooman_chat_"+e;try{if(void 0===t){const e=localStorage.getItem(o);return e?JSON.parse(e):null}return null===t?(localStorage.removeItem(o),null):(localStorage.setItem(o,JSON.stringify(t)),t)}catch{return null}}function $(e,t){(h[e]||[]).forEach(o=>{try{o(t)}catch(t){console.error(`Error in ${e} handler:`,t)}});const o=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`,i=n[o];if("function"==typeof i)try{i(t)}catch(e){console.error(`Error in ${o}:`,e)}}async function _(e,t){if(n.widgetId&&n.serverUrl)try{const o=`${n.serverUrl}/widget-analytics/track?widget_id=${encodeURIComponent(n.widgetId)}`;await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_type:e,session_id:i.sessionId,visitor_id:i.visitorId,metadata:t||{}})})}catch(t){console.debug("[IhoomanChat] Failed to track event:",e,t)}}function S(){const e=window.scrollY||document.documentElement.scrollTop,t=document.documentElement.scrollHeight-window.innerHeight;return t>0?Math.round(e/t*100):0}function C(e){try{return new RegExp(e.replace(/\*/g,".*")).test(window.location.href)}catch{return window.location.href.includes(e)}}let I=null;function T(){const e=document.createElement("div");e.id="ihooman-chat-widget-host",e.style.cssText="all: initial !important; position: fixed !important; z-index: 2147483647 !important; pointer-events: none !important;",document.body.appendChild(e),I=e.attachShadow({mode:"open"});const t=document.createElement("style");t.id="ihooman-widget-styles",t.textContent=function(){const{primaryColor:e,gradientFrom:t,gradientTo:o,fontFamily:i,borderRadius:a,zIndex:s,width:r,height:d,buttonSize:c}=n,l="dark"===n.theme,p=l?"#0a0a0f":"#ffffff",u=l?"#111118":"#f9fafb",h=l?"#16161f":"#f1f5f9",g=l?"#e4e4e7":"#1f2937",m=l?"#52525b":"#6b7280",f=l?"#a1a1aa":"#6b7280",b=l?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.08)",y=l?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.05)",v=l?"#111118":"#f9fafb",x=l?e||"#10b981":e,w=l?"#1a1a26":`linear-gradient(135deg, ${t}, ${o})`,k=l?"#16161f":"#f1f5f9",$=n.position?.includes("right")??!0,_=n.position?.includes("bottom")??!0;return`\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host { all: initial; }\n .ihooman-widget { font-family: ${i}; font-size: 14px; line-height: 1.5; color: ${g}; -webkit-font-smoothing: antialiased; }\n button { \n font-family: inherit;\n font-size: 100%;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n }\n .ihooman-toggle { position: fixed !important; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 20px":"top: 20px"}; width: ${c}px !important; height: ${c}px !important; border-radius: 50% !important; background: ${l?u:`linear-gradient(135deg, ${t}, ${o})`} !important; border: ${l?`1px solid ${b}`:"none"} !important; cursor: pointer; z-index: ${s}; display: flex !important; align-items: center; justify-content: center; box-shadow: ${l?"0 8px 32px rgba(0,0,0,0.5)":"0 4px 20px rgba(0, 174, 255, 0.35)"}; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); overflow: hidden; }\n .ihooman-toggle:hover { transform: scale(1.08); box-shadow: 0 6px 28px rgba(0, 174, 255, 0.45); }\n .ihooman-toggle:active { transform: scale(0.95); }\n .ihooman-toggle::before { content: ''; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(255,255,255,0.2), transparent); border-radius: 50%; }\n .ihooman-toggle svg { width: 26px; height: 26px; color: white; transition: transform 0.3s ease, opacity 0.2s ease; position: relative; z-index: 1; }\n .ihooman-toggle .chat-icon { display: flex; align-items: center; justify-content: center; transition: transform 0.3s ease, opacity 0.2s ease; }\n .ihooman-toggle .close-icon { position: absolute; display: flex; align-items: center; justify-content: center; transform: rotate(-90deg) scale(0); opacity: 0; transition: transform 0.3s ease, opacity 0.2s ease; }\n .ihooman-toggle.open .chat-icon { transform: rotate(90deg) scale(0); opacity: 0; }\n .ihooman-toggle.open .close-icon { transform: rotate(0) scale(1); opacity: 1; }\n .ihooman-pulse { position: absolute; inset: 0; border-radius: 50%; background: ${e}; animation: ihooman-pulse 2s ease-out infinite; }\n @keyframes ihooman-pulse { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.6); opacity: 0; } }\n .ihooman-toggle.open .ihooman-pulse { display: none; }\n .ihooman-badge { position: absolute; top: -4px; right: -4px; min-width: 20px; height: 20px; padding: 0 6px; background: #ef4444; color: white; font-size: 11px; font-weight: 600; border-radius: 10px; display: flex; align-items: center; justify-content: center; z-index: 2; }\n .ihooman-badge:empty { display: none; }\n .ihooman-window { position: fixed; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 90px":"top: 90px"}; width: ${r}px; height: ${d}px; min-height: ${d}px; max-height: ${d}px; z-index: ${(s??9999)-1}; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(20px) scale(0.95); transition: opacity 0.3s, visibility 0.3s, transform 0.3s; overscroll-behavior: contain; }\n .ihooman-window.open { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }\n .ihooman-container { position: relative; width: 100%; height: 100%; display: flex; flex-direction: column; border-radius: ${a}px; overflow: hidden; flex-shrink: 0; }\n .ihooman-container::before { content: ''; position: absolute; inset: 0; background: ${p}; opacity: ${l?"1":"0.97"}; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: ${a}px; border: 1px solid ${b}; box-shadow: ${l?"0 25px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.02)":"0 25px 50px -12px rgba(0, 0, 0, 0.25)"}; }\n .ihooman-container > * { position: relative; z-index: 1; }\n .ihooman-header { padding: 16px 20px; background: ${l?u:`linear-gradient(135deg, ${t}, ${o})`}; color: ${l?g:"white"}; display: flex; align-items: center; gap: 12px; flex-shrink: 0; border-bottom: ${l?`1px solid ${b}`:"none"}; }\n .ihooman-header-avatar { width: ${l?"38px":"42px"}; height: ${l?"38px":"42px"}; border-radius: ${l?"12px":"50%"}; background: ${l?h:"rgba(255,255,255,0.2)"}; display: flex; align-items: center; justify-content: center; flex-shrink: 0; border: ${l?`1px solid ${b}`:"none"}; position: relative; overflow: hidden; }\n .ihooman-header-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }\n .ihooman-header-avatar svg { width: 22px; height: 22px; }\n .ihooman-header-info { flex: 1; min-width: 0; }\n .ihooman-header-title { font-size: 16px; font-weight: 600; margin-bottom: 2px; }\n .ihooman-header-status { display: flex; align-items: center; gap: 6px; font-size: 12px; opacity: 0.9; }\n .ihooman-status-dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; }\n .ihooman-status-dot.offline { background: #f59e0b; }\n .ihooman-header-actions { display: flex; gap: 8px; }\n .ihooman-header-btn { width: 30px; height: 30px; border-radius: ${l?"8px":"6px"}; background: ${l?"transparent":"rgba(255,255,255,0.15)"}; border: ${l?`1px solid ${b}`:"none"}; cursor: pointer; display: flex; align-items: center; justify-content: center; color: ${l?f:"white"}; transition: all 0.2s; }\n .ihooman-header-btn:hover { background: ${l?h:"rgba(255,255,255,0.25)"}; color: ${l?g:"white"}; }\n .ihooman-header-btn svg { width: 14px; height: 14px; }\n .ihooman-messages { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 16px; display: flex; flex-direction: column; gap: 12px; background: ${p}; overscroll-behavior: contain; min-height: 0; ${l?"background-image: linear-gradient(rgba(255,255,255,0.012) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.012) 1px, transparent 1px); background-size: 40px 40px;":""} }\n .ihooman-messages::-webkit-scrollbar { width: 6px; }\n .ihooman-messages::-webkit-scrollbar-track { background: transparent; }\n .ihooman-messages::-webkit-scrollbar-thumb { background: ${b}; border-radius: 3px; }\n .ihooman-message { display: flex; flex-direction: column; max-width: 85%; animation: ihooman-fadeIn 0.3s ease; }\n @keyframes ihooman-fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\n .ihooman-message.user { align-self: flex-end; align-items: flex-end; }\n .ihooman-message.bot { align-self: flex-start; align-items: flex-start; }\n .ihooman-message-content { padding: 12px 16px; border-radius: 16px; word-wrap: break-word; }\n .ihooman-message.user .ihooman-message-content { background: ${w}; color: ${l?g:"white"}; border-bottom-right-radius: 4px; ${l?`border: 1px solid ${b};`:""} }\n .ihooman-message.bot .ihooman-message-content { background: ${k}; color: ${g}; border-bottom-left-radius: 4px; ${l?`border: 1px solid ${y};`:""} }\n .ihooman-message-content code { background: rgba(0,0,0,0.1); padding: 2px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; }\n .ihooman-message-time { font-size: 11px; color: ${m}; margin-top: 4px; padding: 0 4px; }\n .ihooman-typing { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: ${k}; border-radius: 16px; border-bottom-left-radius: 4px; max-width: 80px; align-self: flex-start; }\n .ihooman-typing-dots { display: flex; gap: 4px; }\n .ihooman-typing-dot { width: 8px; height: 8px; background: ${m}; border-radius: 50%; animation: ihooman-typing 1.4s infinite; }\n .ihooman-typing-dot:nth-child(2) { animation-delay: 0.2s; }\n .ihooman-typing-dot:nth-child(3) { animation-delay: 0.4s; }\n @keyframes ihooman-typing { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-4px); opacity: 1; } }\n .ihooman-input-area { padding: 12px 16px; background: ${p}; border-top: 1px solid ${b}; flex-shrink: 0; }\n .ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${v}; border: 1px solid ${b}; border-radius: ${l?"16px":"12px"}; padding: 8px 12px; transition: border-color 0.2s, box-shadow 0.2s; }\n .ihooman-input-wrapper:focus-within { border-color: ${l?"rgba(255,255,255,0.12)":e}; box-shadow: ${l?"none":"0 0 0 3px rgba(0, 174, 255, 0.1)"}; }\n .ihooman-input { flex: 1; border: none; background: transparent; font-family: inherit; font-size: 14px; color: ${g}; resize: none; max-height: 100px; outline: none; line-height: 1.4; }\n .ihooman-input::placeholder { color: ${m}; }\n .ihooman-input-btn { width: 32px; height: 32px; border-radius: 8px; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; background: transparent; color: ${m}; }\n .ihooman-input-btn:hover { background: ${b}; color: ${g}; }\n .ihooman-input-btn.send { background: ${l?h:`linear-gradient(135deg, ${t}, ${o})`}; color: ${l?m:"white"}; ${l?`border: 1px solid ${b};`:""} }\n .ihooman-input-btn.send:hover { ${l?`background: ${x}; border-color: ${x}; color: white;`:"opacity: 0.9;"} }\n .ihooman-input-btn.send:disabled { opacity: 0.5; cursor: not-allowed; }\n .ihooman-input-btn svg { width: 16px; height: 16px; }\n .ihooman-input:disabled { opacity: 0.6; cursor: not-allowed; }\n .ihooman-input-btn.attach:disabled { opacity: 0.4; cursor: not-allowed; }\n .ihooman-file-input { display: none; }\n .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${m}; background: ${p}; }\n .ihooman-powered a { color: ${e}; text-decoration: none; }\n .ihooman-escalation-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }\n .ihooman-escalation-btn svg { width: 14px; height: 14px; flex-shrink: 0; }\n .ihooman-status-bar { padding: 10px 16px; text-align: center; font-size: 13px; display: none; }\n .ihooman-status-bar.show { display: block; }\n .ihooman-status-bar.waiting { background: #fef3c7; color: #92400e; }\n .ihooman-status-bar.connected { background: #dcfce7; color: #166534; }\n .ihooman-chat-view { display: flex; flex-direction: column; flex: 1; overflow: hidden; min-height: 0; }\n .ihooman-chat-view.hidden { display: none; }\n .ihooman-ticket-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${p}; flex: 1; overflow-y: auto; min-height: 0; }\n .ihooman-ticket-view.show { display: flex; }\n .ihooman-ticket-title { font-size: 18px; font-weight: 600; color: ${g}; margin: 0; }\n .ihooman-ticket-subtitle { font-size: 13px; color: ${m}; margin: 0; }\n .ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${b}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${v}; color: ${g}; outline: none; transition: border-color 0.2s; }\n .ihooman-ticket-input:focus { border-color: ${e}; }\n .ihooman-ticket-input::placeholder { color: ${m}; }\n .ihooman-ticket-textarea { min-height: 100px; resize: vertical; }\n .ihooman-ticket-submit { display: flex; align-items: center; justify-content: center; padding: 12px; background: linear-gradient(135deg, ${t}, ${o}); color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }\n .ihooman-ticket-submit:hover { opacity: 0.9; }\n .ihooman-ticket-submit:disabled { opacity: 0.5; cursor: not-allowed; }\n .ihooman-ticket-back { display: flex; align-items: center; justify-content: center; padding: 10px; background: transparent; color: ${m}; border: 1px solid ${b}; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; line-height: 1.4; }\n .ihooman-ticket-back:hover { background: ${l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)"}; }\n .ihooman-history-view { display: none; flex-direction: column; flex: 1; overflow: hidden; background: ${p}; }\n .ihooman-history-view.show { display: flex; }\n .ihooman-history-header { padding: 12px 16px; border-bottom: 1px solid ${b}; display: flex; justify-content: space-between; align-items: center; }\n .ihooman-history-title { font-size: 14px; font-weight: 600; color: ${g}; margin: 0; }\n .ihooman-history-new { display: inline-flex; align-items: center; justify-content: center; gap: 4px; background: linear-gradient(135deg, ${t}, ${o}); color: white; border: none; padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }\n .ihooman-history-new:hover { opacity: 0.9; }\n .ihooman-history-new svg { width: 12px; height: 12px; flex-shrink: 0; }\n .ihooman-history-list { flex: 1; overflow-y: auto; padding: 8px; overscroll-behavior: contain; }\n .ihooman-history-item { padding: 12px; border: 1px solid ${b}; border-radius: 8px; margin-bottom: 6px; cursor: pointer; transition: all 0.2s; background: ${p}; }\n .ihooman-history-item:hover { background: ${l?"rgba(255,255,255,0.05)":"#f8fafc"}; }\n .ihooman-history-item.active { background: ${l?"rgba(0, 174, 255, 0.1)":"#eff6ff"}; border-color: ${e}; }\n .ihooman-history-preview { font-size: 13px; color: ${g}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .ihooman-history-meta { font-size: 11px; color: ${m}; margin-top: 4px; display: flex; justify-content: space-between; }\n .ihooman-history-empty { padding: 40px; text-align: center; color: ${m}; font-size: 14px; }\n .ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 8px; background: ${p}; border-top: ${l?"none":`1px solid ${b}`}; }\n .ihooman-preset-questions:empty { display: none; }\n .ihooman-preset-questions.hidden { display: none; }\n .ihooman-proactive-toast { position: fixed; ${$?"right: 20px":"left: 20px"}; ${_?"bottom: 90px":"top: 90px"}; max-width: 300px; padding: 16px; background: ${p}; border-radius: 12px; box-shadow: 0 10px 40px rgba(0,0,0,0.15); z-index: ${(s??9999)-2}; opacity: 0; visibility: hidden; transform: translateY(10px); transition: all 0.3s ease; border: 1px solid ${b}; }\n .ihooman-proactive-toast.show { opacity: 1; visibility: visible; transform: translateY(0); }\n .ihooman-proactive-toast-content { font-size: 14px; color: ${g}; margin-bottom: 12px; }\n .ihooman-proactive-toast-actions { display: flex; gap: 8px; }\n .ihooman-proactive-toast-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s; line-height: 1.4; }\n .ihooman-proactive-toast-btn.primary { background: linear-gradient(135deg, ${t}, ${o}); color: white; border: none; }\n .ihooman-proactive-toast-btn.primary:hover { opacity: 0.9; }\n .ihooman-proactive-toast-btn.secondary { background: transparent; color: ${m}; border: 1px solid ${b}; }\n .ihooman-proactive-toast-btn.secondary:hover { background: ${l?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.03)"}; }\n .ihooman-survey-view { display: none; flex-direction: column; padding: 20px; gap: 16px; background: ${p}; flex: 1; align-items: center; justify-content: center; }\n .ihooman-survey-view.show { display: flex; }\n .ihooman-survey-question { font-size: 16px; font-weight: 600; color: ${g}; text-align: center; }\n .ihooman-survey-stars { display: flex; gap: 8px; }\n .ihooman-survey-star { width: 40px; height: 40px; cursor: pointer; color: ${m}; transition: all 0.2s; }\n .ihooman-survey-star:hover, .ihooman-survey-star.active { color: #fbbf24; transform: scale(1.1); }\n .ihooman-survey-star svg { width: 100%; height: 100%; }\n .ihooman-survey-comment { width: 100%; padding: 12px; border: 1px solid ${b}; border-radius: 8px; font-size: 14px; resize: none; min-height: 80px; background: ${v}; color: ${g}; }\n .ihooman-survey-submit { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; background: linear-gradient(135deg, ${t}, ${o}); color: white; border: none; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; line-height: 1.4; }\n .ihooman-survey-submit:hover { opacity: 0.9; }\n .ihooman-survey-skip { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background: transparent; color: ${m}; border: none; font-size: 12px; cursor: pointer; line-height: 1.4; }\n .ihooman-survey-skip:hover { color: ${g}; }\n .ihooman-feedback-btns { display: flex; gap: 6px; margin-top: 6px; }\n .ihooman-feedback-btn svg { width: 12px; height: 12px; }\n .ihooman-carousel { display: flex; gap: 12px; overflow-x: auto; padding: 8px 0; scroll-snap-type: x mandatory; }\n .ihooman-carousel::-webkit-scrollbar { height: 4px; }\n .ihooman-carousel-card { min-width: 200px; max-width: 250px; border: 1px solid ${b}; border-radius: 12px; overflow: hidden; scroll-snap-align: start; background: ${p}; }\n .ihooman-carousel-card img { width: 100%; height: 120px; object-fit: cover; }\n .ihooman-carousel-card-content { padding: 12px; }\n .ihooman-carousel-card-title { font-size: 14px; font-weight: 600; color: ${g}; margin-bottom: 4px; }\n .ihooman-carousel-card-desc { font-size: 12px; color: ${m}; margin-bottom: 8px; }\n .ihooman-carousel-card-btns { display: flex; flex-direction: column; gap: 6px; }\n .ihooman-quick-replies { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }\n @media (max-width: 480px) { .ihooman-window { width: calc(100vw - 20px); height: calc(100vh - 100px); min-height: 400px; max-height: calc(100vh - 100px); left: 10px; right: 10px; bottom: 80px; } .ihooman-toggle { ${$?"right: 16px":"left: 16px"}; bottom: 16px; } .ihooman-proactive-toast { left: 10px; right: 10px; max-width: none; } }\n `}(),I.appendChild(t);const i=document.createElement("div");i.className="ihooman-widget",i.style.cssText="pointer-events: auto;",i.innerHTML=`\n <button class="ihooman-toggle" aria-label="Open chat">\n <span class="ihooman-pulse"></span>\n <span class="ihooman-badge"></span>\n <span class="chat-icon">${o.chat}</span>\n <span class="close-icon">${o.close}</span>\n </button>\n <div class="ihooman-proactive-toast">\n <div class="ihooman-proactive-toast-content"></div>\n <div class="ihooman-proactive-toast-actions">\n <button class="ihooman-proactive-toast-btn primary">Chat Now</button>\n <button class="ihooman-proactive-toast-btn secondary">Dismiss</button>\n </div>\n </div>\n <div class="ihooman-window" role="dialog" aria-label="Chat window">\n <div class="ihooman-container">\n <div class="ihooman-header">\n <div class="ihooman-header-avatar">${n.avatarUrl?`<img src="${w(n.avatarUrl)}" alt="Support">`:o.bot}</div>\n <div class="ihooman-header-info">\n <div class="ihooman-header-title">${w(n.title||"Chat Support")}</div>\n <div class="ihooman-header-status"><span class="ihooman-status-dot"></span><span class="ihooman-status-text">Online</span></div>\n </div>\n <div class="ihooman-header-actions">\n <button class="ihooman-header-btn" data-action="history" title="Chat history">${o.history}</button>\n <button class="ihooman-header-btn" data-action="refresh" title="New conversation">${o.plus}</button>\n <button class="ihooman-header-btn" data-action="minimize" title="Minimize">${o.minimize}</button>\n </div>\n </div>\n <div class="ihooman-chat-view">\n <div class="ihooman-status-bar"></div>\n <div class="ihooman-messages" role="log" aria-live="polite"></div>\n <div class="ihooman-preset-questions"></div>\n <div class="ihooman-input-area">\n <div class="ihooman-input-wrapper">\n ${n.enableFileUpload?`<button class="ihooman-input-btn attach" title="Attach file">${o.attach}</button><input type="file" class="ihooman-file-input">`:""}\n <textarea class="ihooman-input" placeholder="${w(n.placeholder||"Type a message...")}" rows="1" aria-label="Message input"></textarea>\n <button class="ihooman-input-btn send" title="Send message" disabled>${o.send}</button>\n </div>\n </div>\n </div>\n <div class="ihooman-ticket-view">\n <h4 class="ihooman-ticket-title">📝 Submit a Ticket</h4>\n <p class="ihooman-ticket-subtitle">We'll get back to you via email</p>\n <input class="ihooman-ticket-input" id="ihooman-ticket-name" placeholder="Your name" required>\n <input class="ihooman-ticket-input" id="ihooman-ticket-email" type="email" placeholder="Your email" required>\n <textarea class="ihooman-ticket-input ihooman-ticket-textarea" id="ihooman-ticket-issue" placeholder="Describe your issue..."></textarea>\n <button class="ihooman-ticket-submit" id="ihooman-ticket-submit">Submit Ticket</button>\n <button class="ihooman-ticket-back" id="ihooman-ticket-back">← Back to Chat</button>\n </div>\n <div class="ihooman-history-view">\n <div class="ihooman-history-header">\n <span class="ihooman-history-title">Your Conversations</span>\n <button class="ihooman-history-new">${o.plus} New Chat</button>\n </div>\n <div class="ihooman-history-list"></div>\n </div>\n <div class="ihooman-survey-view">\n <div class="ihooman-survey-question">${n.surveyConfig?.question||"How was your experience?"}</div>\n <div class="ihooman-survey-stars"></div>\n <textarea class="ihooman-survey-comment" placeholder="Any additional feedback? (optional)"></textarea>\n <button class="ihooman-survey-submit">Submit Feedback</button>\n <button class="ihooman-survey-skip">Skip</button>\n </div>\n ${n.poweredBy?'<div class="ihooman-powered">Powered by <a href="https://ihooman.ai" target="_blank" rel="noopener">Ihooman AI</a></div>':""}\n </div>\n </div>\n `,I.appendChild(i),u={widget:i,toggle:i.querySelector(".ihooman-toggle"),badge:i.querySelector(".ihooman-badge"),window:i.querySelector(".ihooman-window"),chatView:i.querySelector(".ihooman-chat-view"),ticketView:i.querySelector(".ihooman-ticket-view"),historyView:i.querySelector(".ihooman-history-view"),surveyView:i.querySelector(".ihooman-survey-view"),historyList:i.querySelector(".ihooman-history-list"),messages:i.querySelector(".ihooman-messages"),presetQuestions:i.querySelector(".ihooman-preset-questions"),input:i.querySelector(".ihooman-input"),sendBtn:i.querySelector(".ihooman-input-btn.send"),attachBtn:i.querySelector(".ihooman-input-btn.attach"),fileInput:i.querySelector(".ihooman-file-input"),statusDot:i.querySelector(".ihooman-status-dot"),statusText:i.querySelector(".ihooman-status-text"),statusBar:i.querySelector(".ihooman-status-bar"),ticketName:i.querySelector("#ihooman-ticket-name"),ticketEmail:i.querySelector("#ihooman-ticket-email"),ticketIssue:i.querySelector("#ihooman-ticket-issue"),ticketSubmitBtn:i.querySelector("#ihooman-ticket-submit"),ticketBackBtn:i.querySelector("#ihooman-ticket-back"),proactiveToast:i.querySelector(".ihooman-proactive-toast")},function(){if(!u.toggle||!u.sendBtn||!u.input)return;u.toggle.addEventListener("click",ne),u.sendBtn.addEventListener("click",N),u.input.addEventListener("input",()=>{u.sendBtn&&(u.sendBtn.disabled=!u.input?.value.trim()),u.input&&(u.input.style.height="auto",u.input.style.height=Math.min(u.input.scrollHeight,100)+"px")}),u.input.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),u.sendBtn?.disabled||N())}),u.attachBtn&&u.fileInput&&(u.attachBtn.addEventListener("click",()=>u.fileInput?.click()),u.fileInput.addEventListener("change",F));u.widget?.querySelector('[data-action="refresh"]')?.addEventListener("click",ie),u.widget?.querySelector('[data-action="minimize"]')?.addEventListener("click",oe),u.widget?.querySelector('[data-action="history"]')?.addEventListener("click",B),u.ticketSubmitBtn&&u.ticketSubmitBtn.addEventListener("click",U);u.ticketBackBtn&&u.ticketBackBtn.addEventListener("click",()=>E("chat"));const e=u.widget?.querySelector(".ihooman-history-new");e&&e.addEventListener("click",()=>{ie(),E("chat")});const t=u.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.primary"),n=u.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.secondary");t&&t.addEventListener("click",()=>{const e=d[d.length-1];e&&_("proactive_clicked",{message_id:e}),G(),te(),$("proactive:clicked")});n&&n.addEventListener("click",()=>{G()});const i=u.surveyView?.querySelector(".ihooman-survey-submit"),a=u.surveyView?.querySelector(".ihooman-survey-skip");i&&i.addEventListener("click",A);a&&a.addEventListener("click",()=>E("chat"));!function(){const e=u.surveyView?.querySelector(".ihooman-survey-stars");if(!e)return;let t=0;e.innerHTML="";for(let n=1;n<=5;n++){const i=document.createElement("div");i.className="ihooman-survey-star",i.innerHTML=o.starEmpty,i.dataset.rating=String(n),i.addEventListener("click",()=>{t=n,q(e,n)}),i.addEventListener("mouseenter",()=>q(e,n)),i.addEventListener("mouseleave",()=>q(e,t)),e.appendChild(i)}}()}()}function q(e,t){e.querySelectorAll(".ihooman-survey-star").forEach((e,n)=>{const i=e;n<t?(i.innerHTML=o.star,i.classList.add("active")):(i.innerHTML=o.starEmpty,i.classList.remove("active"))})}function z(e,t="bot",a={}){const s={id:x("msg_"),content:e,sender:t,timestamp:new Date,metadata:a};if(i.messages.push(s),!u.messages)return s;const r=document.createElement("div");r.className=`ihooman-message ${t}`;const d="bot"===t&&!0===a?.escalation_offered;let c="";d&&(c=`\n <div class="ihooman-escalation-actions">\n <button class="ihooman-escalation-btn primary" data-action="live-agent">${o.agent}<span>Talk to Agent</span></button>\n <button class="ihooman-escalation-btn secondary" data-action="create-ticket">${o.ticket}<span>Create Ticket</span></button>\n </div>\n `);let l="";var p,h;a?.quick_replies&&a.quick_replies.length>0&&(l=`<div class="ihooman-quick-replies">${a.quick_replies.map(e=>`<button class="ihooman-quick-reply" data-text="${w(e.text)}">${w(e.text)}</button>`).join("")}</div>`),r.innerHTML=`\n <div class="ihooman-message-content">${h=e,h?w(h).replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/\[(.*?)\]\((.*?)\)/g,'<a href="$2" target="_blank" rel="noopener">$1</a>').replace(/\n/g,"<br>"):""}</div>\n ${c}\n ${l}\n ${n.showTimestamps?`<div class="ihooman-message-time">${p=s.timestamp,new Date(p).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}</div>`:""}\n `,d&&(r.querySelector('[data-action="live-agent"]')?.addEventListener("click",()=>M("live-agent")),r.querySelector('[data-action="create-ticket"]')?.addEventListener("click",()=>M("create-ticket"))),r.querySelectorAll(".ihooman-quick-reply").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.text;t&&(D(),z(t,"user"),W(),P(t))})});const g=u.messages.querySelector(".ihooman-typing");return g&&g.remove(),u.messages.appendChild(r),u.messages.scrollTop=u.messages.scrollHeight,"bot"===t&&(n.enableSounds&&function(){if(i.soundMuted)return;try{const e=window.AudioContext||window.webkitAudioContext;if(!e)return;const t=new e,o=t.createOscillator(),n=t.createGain();o.connect(n),n.connect(t.destination),o.frequency.setValueAtTime(880,t.currentTime),o.frequency.setValueAtTime(1108.73,t.currentTime+.1),n.gain.setValueAtTime(0,t.currentTime),n.gain.linearRampToValueAtTime(.3,t.currentTime+.01),n.gain.linearRampToValueAtTime(.2,t.currentTime+.1),n.gain.linearRampToValueAtTime(0,t.currentTime+.3),o.start(t.currentTime),o.stop(t.currentTime+.3),o.onended=()=>{t.close().catch(()=>{})}}catch(e){console.debug("[IhoomanChat] Sound playback failed:",e)}}(),i.isOpen||(i.unreadCount++,u.badge&&(u.badge.textContent=String(i.unreadCount)))),$("message",s),s}function L(){console.debug("[IhoomanChat] Rendering preset questions:",p.length),u.presetQuestions&&0!==p.length?(u.presetQuestions.innerHTML=p.map(e=>`\n <button class="ihooman-preset-btn" data-question-id="${w(e.id)}" data-question-text="${w(e.text)}">\n ${e.icon||e.emoji?`<span class="icon">${w(e.icon||e.emoji||"")}</span>`:""}\n <span>${w(e.text)}</span>\n </button>\n `).join(""),u.presetQuestions.querySelectorAll(".ihooman-preset-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.questionText;t&&function(e){D(),z(e,"user"),W(),P(e)}(t)})})):u.presetQuestions&&(u.presetQuestions.innerHTML="")}function M(e){document.querySelectorAll(".ihooman-escalation-btn").forEach(e=>e.disabled=!0),"live-agent"===e?async function(){if(!i.sessionId)return void z("Please send a message first to start a conversation.","bot",{is_system_message:!0});try{const e=await fetch(`${n.serverUrl}/api/widget/live-agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,session_id:i.sessionId,visitor_id:i.visitorId})}),t=await e.json();s=!0,i.escalationStatus={active:!0,type:"live_agent",queuePosition:t.position_in_queue},t.position_in_queue&&t.position_in_queue>1?O("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):O("waiting","⏳ Connecting to live support..."),j(),$("escalation:start",{type:"live_agent"})}catch(e){console.error("Error requesting live agent:",e),z("❌ Unable to connect to live support. Please try again.","bot",{is_system_message:!0})}}():"create-ticket"===e&&E("ticket")}function E(e){a=e,i.view=e,u.chatView&&u.chatView.classList.toggle("hidden","chat"!==e),u.ticketView&&u.ticketView.classList.toggle("show","ticket"===e),u.historyView&&u.historyView.classList.toggle("show","history"===e),u.surveyView&&u.surveyView.classList.toggle("show","survey"===e),"history"===e&&async function(){if(!u.historyList||!i.visitorId)return;u.historyList.innerHTML='<div class="ihooman-history-empty">Loading...</div>';try{const e=await fetch(`${n.serverUrl}/api/widget/conversations?widget_id=${n.widgetId}&visitor_id=${i.visitorId}&limit=20`);if(!e.ok)throw new Error("Failed to load history");const t=await e.json();if(!t.length)return void(u.historyList.innerHTML='<div class="ihooman-history-empty">No conversations yet</div>');u.historyList.innerHTML=t.map(e=>`\n <div class="ihooman-history-item ${e.session_id===i.sessionId?"active":""}" data-session-id="${e.session_id}">\n <div class="ihooman-history-preview">${w(e.preview||"New conversation")}</div>\n <div class="ihooman-history-meta">\n <span>${e.message_count} msgs</span>\n <span>${"pending"===e.status?"🟡 Pending":"closed"===e.status?"✓ Closed":""} ${function(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"now":t<36e5?Math.floor(t/6e4)+"m":t<864e5?Math.floor(t/36e5)+"h":Math.floor(t/864e5)+"d"}(e.updated_at)}</span>\n </div>\n </div>\n `).join(""),u.historyList.querySelectorAll(".ihooman-history-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.sessionId;t&&async function(e){i.sessionId=e,n.persistSession&&k("session_id",e);u.messages&&(u.messages.innerHTML="");s=!1,H(),O("hidden"),b=!0,g&&(g.close(),g=null);K(),E("chat"),await async function(e){try{const t=await fetch(`${n.serverUrl}/api/widget/transcript/${e}?widget_id=${n.widgetId}`);if(!t.ok)throw new Error("Failed to load messages");const o=await t.json();u.messages&&(u.messages.innerHTML=""),o.messages&&o.messages.length>0?o.messages.forEach(e=>{const t="user"===e.sender_type?"user":"bot";z(e.content,t,e.extra_data||{})}):n.welcomeMessage&&z(n.welcomeMessage,"bot"),"pending"===o.status&&(s=!0,j(),O("waiting","⏳ Waiting for agent..."))}catch(e){console.error("Error loading conversation messages:",e),n.welcomeMessage&&z(n.welcomeMessage,"bot")}}(e)}(t)})})}catch(e){console.error("Error loading conversation history:",e),u.historyList.innerHTML='<div class="ihooman-history-empty">Failed to load history</div>'}}()}function B(){E("history"===a?"chat":"history")}function O(e,t){u.statusBar&&("hidden"!==e?(u.statusBar.classList.add("show"),u.statusBar.classList.remove("waiting","connected"),u.statusBar.classList.add(e),t&&(u.statusBar.textContent=t)):u.statusBar.classList.remove("show"))}async function U(){const e=u.ticketName?.value.trim(),t=u.ticketEmail?.value.trim(),o=u.ticketIssue?.value.trim();if(e&&t){u.ticketSubmitBtn&&(u.ticketSubmitBtn.disabled=!0,u.ticketSubmitBtn.textContent="Submitting...");try{const a=await fetch(`${n.serverUrl}/api/widget/submit-ticket`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,session_id:i.sessionId,user_name:e,user_email:t,issue:o||"No description provided"})}),s=await a.json();u.ticketName&&(u.ticketName.value=""),u.ticketEmail&&(u.ticketEmail.value=""),u.ticketIssue&&(u.ticketIssue.value=""),E("chat");z(`✅ Ticket submitted! We'll contact you at ${t}. Reference: #${s.ticket_id?s.ticket_id.slice(0,8):"submitted"}`,"bot",{is_system_message:!0})}catch(e){console.error("Error submitting ticket:",e),z("❌ Error submitting ticket. Please try again.","bot",{is_system_message:!0})}u.ticketSubmitBtn&&(u.ticketSubmitBtn.disabled=!1,u.ticketSubmitBtn.textContent="Submit Ticket")}else alert("Please fill in your name and email")}function j(){if(v)return;let e=!1;v=setInterval(async()=>{if(i.sessionId&&s)try{const t=await fetch(`${n.serverUrl}/api/widget/escalation-status/${i.sessionId}?widget_id=${n.widgetId}`);if(t.ok){const o=await t.json();o.escalated&&("in_progress"===o.ticket_status||"active"===o.conversation_status?(O("connected","🟢 Connected to live agent"),e||(e=!0,H())):"open"===o.ticket_status?O("waiting",o.position_in_queue>1?`⏳ Waiting for agent (Position: #${o.position_in_queue})`:"⏳ Waiting for agent..."):"closed"!==o.ticket_status&&"resolved"!==o.ticket_status||(s=!1,H(),O("hidden"),z("This conversation has been closed. Thank you for contacting us!","bot",{is_system_message:!0}),$("escalation:end",{type:"live_agent"})))}}catch{}else H()},15e3)}function H(){v&&(clearInterval(v),v=null)}async function A(){const e=u.surveyView?.querySelector(".ihooman-survey-stars"),t=e?.querySelectorAll(".ihooman-survey-star.active"),o=t?.length||0,a=u.surveyView?.querySelector(".ihooman-survey-comment")?.value;if(0!==o)try{await fetch(`${n.serverUrl}/api/widget/public/survey-response?widget_id=${encodeURIComponent(n.widgetId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({survey_config_id:n.surveyConfig?.id,session_id:i.sessionId,visitor_id:i.visitorId,rating:o,comment:a||null})}),_("survey_submitted",{survey_id:n.surveyConfig?.id,rating:o,comment:a||null,session_id:i.sessionId,visitor_id:i.visitorId}),k("survey_completed_"+i.sessionId,!0),$("survey:submitted",{rating:o,comment:a}),z(n.surveyConfig?.thankYouMessage||"Thank you for your feedback!","bot",{is_system_message:!0}),E("chat")}catch(e){console.error("Error submitting survey:",e)}else alert("Please select a rating")}function W(){if(!n.showTypingIndicator||!u.messages)return;if(u.messages.querySelector(".ihooman-typing"))return;const e=document.createElement("div");e.className="ihooman-typing",e.innerHTML='<div class="ihooman-typing-dots"><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span><span class="ihooman-typing-dot"></span></div>',u.messages.appendChild(e),u.messages.scrollTop=u.messages.scrollHeight}function V(){const e=u.messages?.querySelector(".ihooman-typing");e&&e.remove()}function R(){u.input&&(u.input.disabled=!0,u.input.placeholder="Conversation closed — start a new chat to continue"),u.sendBtn&&(u.sendBtn.disabled=!0),u.attachBtn&&(u.attachBtn.disabled=!0)}function N(){if(r)return;const e=u.input?.value.trim();e&&(D(),u.input&&(u.input.value="",u.input.style.height="auto"),u.sendBtn&&(u.sendBtn.disabled=!0),z(e,"user"),_("message_sent",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:e.length}),W(),P(e))}function D(){u.presetQuestions&&u.presetQuestions.classList.add("hidden")}async function P(e){if(!r)if(g&&g.readyState===WebSocket.OPEN)g.send(JSON.stringify({type:"message",content:e}));else try{const t=await fetch(`${n.serverUrl}/api/v1/public/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,session_id:i.sessionId,visitor_id:i.visitorId,widget_id:n.widgetId})}),o=await t.json();V(),o.session_id&&(i.sessionId=o.session_id,n.persistSession&&k("session_id",i.sessionId)),o.response&&(z(o.response,"bot",{sources:o.sources,confidence:o.confidence,escalation_offered:o.escalation_offered,quick_replies:o.quick_replies}),_("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:o.response.length,has_sources:!!o.sources,confidence:o.confidence}))}catch(e){V(),z("Sorry, something went wrong. Please try again.","bot"),$("error",e)}}function F(e){const t=e.target,o=t.files?.[0];if(!o)return;z(`📎 Uploading: ${o.name}...`,"user"),W();const a=new FormData;a.append("file",o),a.append("session_id",i.sessionId||""),a.append("visitor_id",i.visitorId||""),a.append("widget_id",n.widgetId),fetch(`${n.serverUrl}/api/upload`,{method:"POST",body:a}).then(e=>e.json()).then(e=>{V(),e.message&&z(e.message,"bot")}).catch(()=>{V(),z("Failed to upload file.","bot")}),t.value=""}function Q(){n.proactiveMessages&&0!==n.proactiveMessages.length?(console.debug("[IhoomanChat] Initializing proactive messages:",n.proactiveMessages.length),d=k("shown_proactive")||[],c=k("proactive_cooldowns")||{},l=setInterval(Y,5e3),window.addEventListener("scroll",Y),document.addEventListener("mouseout",e=>{e.clientY<=0&&function(){if(i.isOpen||!n.proactiveMessages)return;const e=n.proactiveMessages.filter(e=>"exit_intent"===e.trigger.type&&!d.includes(e.id));e.length>0&&J(e[0])}()})):console.debug("[IhoomanChat] No proactive messages configured")}function Y(){if(i.isOpen||!n.proactiveMessages)return;const e=Date.now();for(const t of n.proactiveMessages){if(d.includes(t.id))continue;const o=c[t.id];if(o&&e-o<60*t.cooldownMinutes*1e3)continue;if(t.startDate&&new Date(t.startDate)>new Date)continue;if(t.endDate&&new Date(t.endDate)<new Date)continue;let n=!1;switch(t.trigger.type){case"time":const o="number"==typeof t.trigger.value?t.trigger.value:parseInt(String(t.trigger.value),10);e-(k("page_load_time")||e)>=1e3*o&&(n=!0);break;case"scroll":const i="number"==typeof t.trigger.value?t.trigger.value:parseInt(String(t.trigger.value),10);S()>=i&&(n=!0);break;case"url_pattern":C(String(t.trigger.value))&&(n=!0)}if(n){J(t);break}}}function J(e){if(d.push(e.id),c[e.id]=Date.now(),k("shown_proactive",d),k("proactive_cooldowns",c),_("proactive_displayed",{message_id:e.id}),u.proactiveToast){const t=u.proactiveToast.querySelector(".ihooman-proactive-toast-content");t&&(t.textContent=e.message),u.proactiveToast.classList.add("show"),$("proactive:shown",e),e.autoOpen&&setTimeout(()=>{G(),te()},3e3)}}function G(){u.proactiveToast&&u.proactiveToast.classList.remove("show")}function K(e){if(!n.serverUrl&&!e)return;let t;if(n.widgetId){const e=n.serverUrl?.replace(/^http/,"ws"),o=new URLSearchParams({widget_id:n.widgetId});i.visitorId&&o.append("visitor_id",i.visitorId),i.sessionId&&o.append("session_id",i.sessionId),t=`${e}/public/ws?${o.toString()}`}else t=e||n.serverUrl?.replace(/^http/,"ws")+"/ws";try{X(),g=new WebSocket(t),g.onopen=()=>{i.isConnected=!0,i.connectionStatus="connected",f=0,ee(!0),$("connected"),X(),y=setInterval(()=>{if(g&&g.readyState===WebSocket.OPEN)try{g.send(JSON.stringify({type:"ping"}))}catch{}},25e3)},g.onclose=t=>{if(i.isConnected=!1,i.connectionStatus="disconnected",ee(!1),X(),$("disconnected"),b)b=!1;else if(4002!==t.code&&i.isOpen)if(f<5){f++;const t=Math.min(1e3*Math.pow(2,f),3e4);setTimeout(()=>K(e),t)}else Z()},g.onerror=e=>{console.error("WebSocket error:",e)},g.onmessage=e=>{try{const t=JSON.parse(e.data);if("connected"===t.type)t.session_id&&(i.sessionId=t.session_id,n.persistSession&&k("session_id",i.sessionId)),t.visitor_id&&(i.visitorId=t.visitor_id,n.persistSession&&k("visitor_id",i.visitorId)),t.welcome_message&&0===i.messages.length&&z(t.welcome_message,"bot");else if("message"===t.type){V();const e="user"===t.sender?"user":"bot",o=t.metadata||{};o.agent_accepted&&(s=!0,O("connected","🟢 Connected to live agent"),$("escalation:accepted",{type:"live_agent"})),o.closed_by_agent&&(s=!1,r=!0,H(),O("hidden"),R(),$("escalation:end",{type:"live_agent"})),_("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,sender:t.sender,is_system_message:o.is_system_message||!1}),z(t.content,e,{confidence:t.confidence,agent_name:t.agent_name,escalation_offered:t.escalation_offered,escalated:t.escalated,quick_replies:t.quick_replies,...o})}else"typing"===t.type?t.is_typing?W():V():"pong"===t.type||("agent_status"===t.type?"connected"===t.status?(s=!0,O("connected","🟢 Connected to live agent"),$("escalation:accepted",{type:"live_agent"})):"disconnected"===t.status&&(s=!1,r=!0,H(),O("hidden"),R(),$("escalation:end",{type:"live_agent"})):"error"===t.type&&(console.error("WebSocket server error:",t.message),$("error",{message:t.message})))}catch{}}}catch{Z()}}function X(){y&&(clearInterval(y),y=null)}function Z(){m||(m=setInterval(async()=>{if(i.sessionId)try{const e=await fetch(`${n.serverUrl}/api/messages?session_id=${i.sessionId}&since=${Date.now()-5e3}&widget_id=${n.widgetId}`),t=await e.json();t.messages&&t.messages.forEach(e=>{i.messages.find(t=>t.id===e.id)||z(e.content,e.sender_type,e.metadata)})}catch{}},5e3))}function ee(e){u.statusDot&&u.statusDot.classList.toggle("offline",!e),u.statusText&&(u.statusText.textContent=e?"Online":"Offline")}function te(){i.isOpen||(i.isOpen=!0,i.unreadCount=0,u.badge&&(u.badge.textContent=""),u.toggle&&u.toggle.classList.add("open"),u.window&&u.window.classList.add("open"),G(),setTimeout(()=>u.input?.focus(),300),_("widget_open"),$("open"))}function oe(){if(i.isOpen){if(i.isOpen=!1,u.toggle&&u.toggle.classList.remove("open"),u.window&&u.window.classList.remove("open"),_("widget_close"),n.surveyConfig&&i.messages.length>=4){i.sessionId&&k("survey_completed_"+i.sessionId)||setTimeout(()=>{i.isOpen||(n.surveyConfig&&(i.sessionId&&k("survey_completed_"+i.sessionId)||i.messages.length<4||(_("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId}),E("survey"),$("survey:shown",n.surveyConfig))),te())},500)}$("close")}}function ne(){i.isOpen?oe():te()}function ie(){i.sessionId=null,i.visitorId=null,i.messages=[],s=!1,r=!1,k("session_id",null),i.visitorId=x("v_"),k("visitor_id",i.visitorId),u.messages&&(u.messages.innerHTML=""),O("hidden"),H(),u.input&&(u.input.disabled=!1,u.input.placeholder=n.placeholder||"Type a message..."),u.sendBtn&&(u.sendBtn.disabled=!u.input?.value.trim()),u.attachBtn&&(u.attachBtn.disabled=!1),f=0,g&&(b=!0,g.close(),g=null),K(),n.welcomeMessage&&z(n.welcomeMessage,"bot"),u.presetQuestions&&u.presetQuestions.classList.remove("hidden"),L(),$("newConversation")}const ae={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},se={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"#e5e7eb",borderWidth:1,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},re={backgroundColor:"rgba(0, 174, 255, 0.1)",textColor:"#00aeff",borderColor:"rgba(0, 174, 255, 0.2)",borderWidth:1,borderRadius:20,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},de={backgroundColor:"#f3f4f6",textColor:"#374151",borderColor:"#e5e7eb",borderWidth:1,borderRadius:16,paddingVertical:5,paddingHorizontal:10,fontSize:11,fontWeight:"medium"},ce={backgroundColor:"transparent",textColor:"#9ca3af",borderColor:"#e5e7eb",borderWidth:1,borderRadius:6,paddingVertical:4,paddingHorizontal:8,fontSize:12,fontWeight:"medium"},le={backgroundColor:"rgba(255, 255, 255, 0.1)",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"},pe={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:14,fontSize:12,fontWeight:"medium"},ue={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},he={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:30,paddingVertical:0,paddingHorizontal:0,fontSize:14,fontWeight:"medium"},ge={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"};function me(e){const t="ihooman-button-styling",o=I||document.head;let n=o.querySelector(`#${t}`);n||(n=document.createElement("style"),n.id=t,o.appendChild(n));const i={primary:{...ae,...e?.primary||{}},secondary:{...se,...e?.secondary||{}},presetQuestions:{...re,...e?.presetQuestions||{}},quickReplies:{...de,...e?.quickReplies||{}},feedback:{...ce,...e?.feedback||{}},headerActions:{...le,...e?.headerActions||{}},escalation:{...pe,...e?.escalation||{}},cardActions:{...ue,...e?.cardActions||{}},toggleButton:{...he,...e?.toggleButton||{}},attachButton:{...ge,...e?.attachButton||{}}},a=(e,t)=>{const o=t.backgroundColor,n=t.textColor,i=t.borderColor;return`\n ${e} {\n background: ${o};\n color: ${n};\n border: ${t.borderWidth}px solid ${i};\n border-radius: ${t.borderRadius}px;\n padding: ${t.paddingVertical}px ${t.paddingHorizontal}px;\n margin: 0;\n font-family: inherit;\n font-size: ${t.fontSize}px;\n font-weight: ${function(e){switch(e){case"normal":return 400;case"medium":default:return 500;case"semibold":return 600;case"bold":return 700}}(t.fontWeight)};\n min-width: unset;\n min-height: unset;\n width: auto;\n height: auto;\n max-width: none;\n max-height: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n line-height: 1.4;\n text-transform: none;\n letter-spacing: normal;\n box-shadow: none;\n text-decoration: none;\n white-space: nowrap;\n box-sizing: border-box;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n `};let s="";s+=a(".ihooman-input-btn.send",i.primary),s+=a(".ihooman-proactive-toast-btn.primary",i.primary),s+=a(".ihooman-survey-submit",i.primary),s+=a(".ihooman-ticket-submit",i.primary),s+=a(".ihooman-history-new",i.primary),s+=a(".ihooman-proactive-toast-btn.secondary",i.secondary),s+=a(".ihooman-survey-skip",i.secondary),s+=a(".ihooman-ticket-back",i.secondary),s+=a(".ihooman-preset-btn",i.presetQuestions),s+=a(".ihooman-quick-reply",i.quickReplies),s+=a(".ihooman-feedback-btn",i.feedback),s+=a(".ihooman-header-btn",i.headerActions),s+=a(".ihooman-escalation-btn",i.escalation),s+=a(".ihooman-escalation-btn.primary",i.escalation),s+=a(".ihooman-escalation-btn.secondary",i.secondary),s+=a(".ihooman-carousel-card-btn",i.cardActions);const r=i.toggleButton,d=r.backgroundColor,c=r.textColor,l=r.borderColor;s+=`\n .ihooman-toggle {\n background: linear-gradient(135deg, ${d}, ${d}) !important;\n color: ${c};\n border: ${r.borderWidth}px solid ${l};\n border-radius: ${r.borderRadius}px;\n }\n `,s+=a(".ihooman-input-btn.attach",i.attachButton),console.debug("[IhoomanChat] Applied button styling CSS:",s.length,"chars"),n.textContent=s}async function fe(o){if(!o.widgetId)return console.error("IhoomanChat: widgetId is required"),null;n={...t,...o},i.visitorId=k("visitor_id")||x("v_"),k("visitor_id",i.visitorId),n.persistSession&&(i.sessionId=k("session_id")),k("page_load_time")||k("page_load_time",Date.now());const a=n.serverUrl||e,s=await async function(e,t){try{const o=await fetch(`${t}/api/widget/config?widget_id=${encodeURIComponent(e)}`);return o.ok?await o.json():{success:!1,error:(await o.json().catch(()=>({}))).error||`HTTP ${o.status}`}}catch(e){return{success:!1,error:"Unable to connect. Please check your internet connection."}}}(n.widgetId,a);let r;var d;return s.success&&s.config?(d=s.config,n.title=d.title||n.title,n.subtitle=d.subtitle||n.subtitle,n.welcomeMessage=d.welcomeMessage||n.welcomeMessage,n.placeholder=d.placeholder||n.placeholder,n.position=d.position||n.position,d.theme&&(n.primaryColor=d.theme.primaryColor||n.primaryColor,n.gradientFrom=d.theme.gradientFrom||n.gradientFrom,n.gradientTo=d.theme.gradientTo||n.gradientTo,n.fontFamily=d.theme.fontFamily||n.fontFamily,d.theme.borderRadius&&(n.borderRadius=parseInt(d.theme.borderRadius,10)||n.borderRadius)),d.behavior&&(n.startOpen=d.behavior.startOpen??n.startOpen,n.showTypingIndicator=d.behavior.showTypingIndicator??n.showTypingIndicator,n.showTimestamps=d.behavior.showTimestamps??n.showTimestamps,n.enableSounds=d.behavior.enableSounds??n.enableSounds,n.enableFileUpload=d.behavior.enableFileUpload??n.enableFileUpload,n.persistSession=d.behavior.persistSession??n.persistSession),d.branding&&(n.avatarUrl=d.branding.avatarUrl||n.avatarUrl,n.logoUrl=d.branding.logoUrl||n.logoUrl,n.poweredBy=d.branding.poweredBy??n.poweredBy,n.customCss=d.branding.customCss||n.customCss),d.size&&(n.width=d.size.width||n.width,n.height=d.size.height||n.height,n.buttonSize=d.size.buttonSize||n.buttonSize),d.presetQuestions&&Array.isArray(d.presetQuestions)&&(console.debug("[IhoomanChat] Server config presetQuestions:",d.presetQuestions.length),p=d.presetQuestions.map(e=>({id:e.id,text:e.text,icon:e.icon,emoji:e.icon})),n.presetQuestions=p),d.proactiveMessages&&Array.isArray(d.proactiveMessages)&&(console.debug("[IhoomanChat] Server config proactiveMessages:",d.proactiveMessages.length),n.proactiveMessages=d.proactiveMessages.filter(e=>!1!==e.isActive).map(e=>({id:e.id,message:e.message,trigger:{type:e.trigger.type,value:"time"===e.trigger.type||"scroll"===e.trigger.type?parseInt(e.trigger.value,10)||30:e.trigger.value},autoOpen:e.autoOpen||!1,cooldownMinutes:e.cooldownMinutes||60}))),d.surveyConfig&&!1!==d.surveyConfig.isActive&&(console.debug("[IhoomanChat] Server config surveyConfig:",d.surveyConfig.id),n.surveyConfig={id:d.surveyConfig.id,type:d.surveyConfig.type,question:d.surveyConfig.question,followUpQuestion:d.surveyConfig.followUpQuestion,thankYouMessage:d.surveyConfig.thankYouMessage}),d.buttonStyling&&(console.debug("[IhoomanChat] Server config buttonStyling:",Object.keys(d.buttonStyling)),n.buttonStyling=d.buttonStyling,me(d.buttonStyling)),r=s.chatEndpoint,s.apiBaseUrl&&(n.serverUrl=s.apiBaseUrl)):s.error&&(console.warn("IhoomanChat: Could not fetch server config:",s.error),"Widget not authorized for this domain"===s.error&&console.error("IhoomanChat: Widget configuration error. Please contact support.")),T(),me(n.buttonStyling),L(),i.messages.forEach(e=>z(e.content,"user"===e.sender?"user":"bot",e.metadata)),0===i.messages.length&&n.welcomeMessage&&z(n.welcomeMessage,"bot"),K(r),Q(),n.startOpen&&setTimeout(te,500),$("ready"),be}const be={init:fe,open:te,close:oe,toggle:ne,isOpen:function(){return i.isOpen},destroy:function(){X(),H(),l&&(clearInterval(l),l=null),window.removeEventListener("scroll",Y),b=!0,g&&(g.close(),g=null),m&&(clearInterval(m),m=null),u.widget&&u.widget.remove();const e=document.getElementById("ihooman-widget-styles");e&&e.remove(),i={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},u={},f=0,b=!1},sendMessage:function(e){e.trim()&&!r&&(u.input&&(u.input.value=e),N())},setUser:function(e){i.userInfo=e,e.name&&k("user_name",e.name),e.email&&k("user_email",e.email),e.metadata&&k("user_metadata",e.metadata)},clearUser:function(){i.userInfo=null,k("user_name",null),k("user_email",null),k("user_metadata",null)},clearHistory:function(){ie()},on:function(e,t){h[e]||(h[e]=[]),h[e].push(t)},off:function(e,t){h[e]&&(h[e]=h[e].filter(e=>e!==t))},getState:function(){return{...i}},getConfig:function(){return{...n}},showSurvey:function(){n.surveyConfig?(_("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId,trigger:"manual"}),E("survey"),$("survey:shown",n.surveyConfig)):console.warn("[IhoomanChat] No survey configured")},resetProactiveMessages:function(){d=[],c={},k("shown_proactive",null),k("proactive_cooldowns",null),console.debug("[IhoomanChat] Proactive message history reset")},version:"4.1.0"},ye=be;function ve(){return{...be}}!function(){if("undefined"==typeof document)return;let e=document.currentScript;if(!e){const t=document.getElementsByTagName("script");for(let o=0;o<t.length;o++)if(t[o].src&&t[o].src.includes("ihooman")){e=t[o];break}}if(!e)return;const t=e.getAttribute("data-widget-id");if(t){const o={widgetId:t},n=e.getAttribute("data-server-url");n&&(o.serverUrl=n);const i=e.getAttribute("data-theme");"light"!==i&&"dark"!==i||(o.theme=i);const a=e.getAttribute("data-position");a&&(o.position=a);"true"===e.getAttribute("data-start-open")&&(o.startOpen=!0),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>fe(o)):fe(o)}}(),"undefined"!=typeof window&&(window.IhoomanChat=ye);export{ye as IhoomanChat,ve as createWidgetInstance,ye as default};
2
2
  //# sourceMappingURL=index.esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.min.js","sources":["../src/widget.ts"],"sourcesContent":[null],"names":["DEFAULT_SERVER_URL","defaultConfig","serverUrl","theme","position","title","subtitle","welcomeMessage","placeholder","primaryColor","gradientFrom","gradientTo","showTimestamps","showTypingIndicator","enableSounds","enableFileUpload","startOpen","persistSession","zIndex","width","height","buttonSize","borderRadius","fontFamily","avatarUrl","poweredBy","presetQuestions","proactiveMessages","surveyConfig","locale","allowLocalhost","icons","chat","close","send","attach","minimize","sparkle","agent","ticket","history","plus","star","starEmpty","config","widgetId","state","isOpen","isConnected","messages","pendingMessages","sessionId","visitorId","unreadCount","view","connectionStatus","typingIndicator","soundMuted","escalationStatus","userInfo","currentView","isLiveAgentMode","isConversationClosed","shownProactiveIds","proactiveCooldowns","proactiveCheckInterval","elements","eventListeners","ws","pollInterval","reconnectAttempts","intentionalDisconnect","heartbeatInterval","liveAgentPollInterval","generateId","prefix","Math","random","toString","slice","Date","now","escapeHtml","text","div","document","createElement","textContent","innerHTML","storage","key","value","fullKey","undefined","item","localStorage","getItem","JSON","parse","removeItem","setItem","stringify","emit","event","data","forEach","fn","e","console","error","callbackName","charAt","toUpperCase","callback","async","trackAnalyticsEvent","eventType","metadata","url","encodeURIComponent","fetch","method","headers","body","event_type","session_id","visitor_id","debug","getCurrentScrollDepth","scrollTop","window","scrollY","documentElement","scrollHeight","innerHeight","round","matchUrlPattern","pattern","RegExp","replace","test","location","href","includes","shadowRoot","createWidget","host","id","style","cssText","appendChild","attachShadow","mode","styleEl","isDark","bgColor","bgElevated","bgSurface","textColor","textSecondary","mutedColor","borderColor","borderSubtle","inputBg","hoverBg","accentColor","accentBg","accentText","userMsgBg","userMsgText","positionRight","positionBottom","shadowLg","generateStyles","widget","className","question","toggle","querySelector","badge","chatView","ticketView","historyView","surveyView","historyList","input","sendBtn","attachBtn","fileInput","statusDot","statusText","statusBar","ticketName","ticketEmail","ticketIssue","ticketSubmitBtn","ticketBackBtn","proactiveToast","addEventListener","handleSendClick","disabled","trim","min","shiftKey","preventDefault","click","handleFileSelect","startNewConversation","toggleHistoryView","handleSubmitTicket","showView","historyNewBtn","proactivePrimaryBtn","proactiveSecondaryBtn","lastShownId","length","message_id","hideProactiveToast","open","surveySubmitBtn","surveySkipBtn","handleSurveySubmit","starsContainer","selectedRating","i","dataset","rating","String","updateStars","initializeSurveyStars","setupEventListeners","container","querySelectorAll","index","starEl","classList","add","remove","addMessage","content","sender","message","timestamp","push","el","showEscalationButtons","escalation_offered","escalationButtonsHtml","quickRepliesHtml","date","quick_replies","map","qr","join","toLocaleTimeString","hour","minute","handleEscalationAction","btn","hidePresetQuestions","showTyping","sendMessageToServer","typing","AudioContext","webkitAudioContext","audioCtx","oscillator","createOscillator","gainNode","createGain","connect","destination","frequency","setValueAtTime","currentTime","gain","linearRampToValueAtTime","start","stop","onended","catch","playSound","renderPresetQuestions","q","icon","emoji","questionText","handlePresetQuestionClick","action","is_system_message","response","widget_id","json","active","type","queuePosition","position_in_queue","updateStatusBar","startLiveAgentPolling","handleRequestLiveAgent","ok","Error","conversations","conv","preview","message_count","status","diff","getTime","floor","timeAgo","updated_at","stopLiveAgentPolling","connectWebSocket","msg","sender_type","extra_data","loadConversationMessages","switchToConversation","loadConversationHistory","name","email","issue","user_name","user_email","ticket_id","alert","agentConnected","setInterval","escalated","ticket_status","conversation_status","clearInterval","activeStars","comment","survey_config_id","survey_id","thankYouMessage","hideTyping","disableInput","message_length","readyState","WebSocket","OPEN","sources","confidence","has_sources","target","file","files","formData","FormData","append","then","r","initializeProactiveMessages","checkProactiveTriggers","clientY","exitIntentMessages","filter","pm","trigger","showProactiveMessage","checkExitIntentTrigger","lastShown","cooldownMinutes","startDate","endDate","triggered","timeValue","parseInt","scrollValue","autoOpen","setTimeout","chatEndpoint","wsUrl","baseWsUrl","params","URLSearchParams","stopHeartbeat","onopen","updateStatus","onclose","code","delay","pow","startPolling","onerror","onmessage","welcome_message","agent_accepted","closed_by_agent","agent_name","is_typing","find","m","online","focus","DEFAULT_BUTTON_STYLES","backgroundColor","borderWidth","paddingVertical","paddingHorizontal","fontSize","fontWeight","applyButtonStyling","buttonStyling","styleId","styleContainer","head","mergedStyles","primary","secondary","quickReplies","feedback","headerActions","escalation","cardActions","toggleButton","attachButton","generateButtonCSS","selector","bg","color","weight","getFontWeightValue","css","toggleStyle","toggleBg","toggleColor","toggleBorderColor","init","userConfig","configResponse","success","fetchWidgetConfig","serverConfig","behavior","branding","logoUrl","customCss","size","Array","isArray","isActive","followUpQuestion","Object","keys","apiBaseUrl","warn","publicAPI","destroy","removeEventListener","styles","getElementById","sendMessage","setUser","user","clearUser","clearHistory","on","off","getState","getConfig","showSurvey","resetProactiveMessages","version","IhoomanChat","createWidgetInstance","script","currentScript","scripts","getElementsByTagName","src","getAttribute","autoConfig"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.min.js","sources":["../src/widget.ts"],"sourcesContent":[null],"names":["DEFAULT_SERVER_URL","defaultConfig","serverUrl","theme","position","title","subtitle","welcomeMessage","placeholder","primaryColor","gradientFrom","gradientTo","showTimestamps","showTypingIndicator","enableSounds","enableFileUpload","startOpen","persistSession","zIndex","width","height","buttonSize","borderRadius","fontFamily","avatarUrl","poweredBy","presetQuestions","proactiveMessages","surveyConfig","locale","allowLocalhost","icons","chat","close","send","attach","minimize","bot","agent","ticket","history","plus","star","starEmpty","config","widgetId","state","isOpen","isConnected","messages","pendingMessages","sessionId","visitorId","unreadCount","view","connectionStatus","typingIndicator","soundMuted","escalationStatus","userInfo","currentView","isLiveAgentMode","isConversationClosed","shownProactiveIds","proactiveCooldowns","proactiveCheckInterval","elements","eventListeners","ws","pollInterval","reconnectAttempts","intentionalDisconnect","heartbeatInterval","liveAgentPollInterval","generateId","prefix","Math","random","toString","slice","Date","now","escapeHtml","text","div","document","createElement","textContent","innerHTML","storage","key","value","fullKey","undefined","item","localStorage","getItem","JSON","parse","removeItem","setItem","stringify","emit","event","data","forEach","fn","e","console","error","callbackName","charAt","toUpperCase","callback","async","trackAnalyticsEvent","eventType","metadata","url","encodeURIComponent","fetch","method","headers","body","event_type","session_id","visitor_id","debug","getCurrentScrollDepth","scrollTop","window","scrollY","documentElement","scrollHeight","innerHeight","round","matchUrlPattern","pattern","RegExp","replace","test","location","href","includes","shadowRoot","createWidget","host","id","style","cssText","appendChild","attachShadow","mode","styleEl","isDark","bgColor","bgSecondary","bgTertiary","textColor","mutedColor","textSecondary","borderColor","borderLight","inputBg","accentColor","messageBgUser","messageBgBot","positionRight","positionBottom","generateStyles","widget","className","question","toggle","querySelector","badge","chatView","ticketView","historyView","surveyView","historyList","input","sendBtn","attachBtn","fileInput","statusDot","statusText","statusBar","ticketName","ticketEmail","ticketIssue","ticketSubmitBtn","ticketBackBtn","proactiveToast","addEventListener","handleSendClick","disabled","trim","min","shiftKey","preventDefault","click","handleFileSelect","startNewConversation","toggleHistoryView","handleSubmitTicket","showView","historyNewBtn","proactivePrimaryBtn","proactiveSecondaryBtn","lastShownId","length","message_id","hideProactiveToast","open","surveySubmitBtn","surveySkipBtn","handleSurveySubmit","starsContainer","selectedRating","i","dataset","rating","String","updateStars","initializeSurveyStars","setupEventListeners","container","querySelectorAll","index","starEl","classList","add","remove","addMessage","content","sender","message","timestamp","push","el","showEscalationButtons","escalation_offered","escalationButtonsHtml","quickRepliesHtml","date","quick_replies","map","qr","join","toLocaleTimeString","hour","minute","handleEscalationAction","btn","hidePresetQuestions","showTyping","sendMessageToServer","typing","AudioContext","webkitAudioContext","audioCtx","oscillator","createOscillator","gainNode","createGain","connect","destination","frequency","setValueAtTime","currentTime","gain","linearRampToValueAtTime","start","stop","onended","catch","playSound","renderPresetQuestions","q","icon","emoji","questionText","handlePresetQuestionClick","action","is_system_message","response","widget_id","json","active","type","queuePosition","position_in_queue","updateStatusBar","startLiveAgentPolling","handleRequestLiveAgent","ok","Error","conversations","conv","preview","message_count","status","diff","getTime","floor","timeAgo","updated_at","stopLiveAgentPolling","connectWebSocket","msg","sender_type","extra_data","loadConversationMessages","switchToConversation","loadConversationHistory","name","email","issue","user_name","user_email","ticket_id","alert","agentConnected","setInterval","escalated","ticket_status","conversation_status","clearInterval","activeStars","comment","survey_config_id","survey_id","thankYouMessage","hideTyping","disableInput","message_length","readyState","WebSocket","OPEN","sources","confidence","has_sources","target","file","files","formData","FormData","append","then","r","initializeProactiveMessages","checkProactiveTriggers","clientY","exitIntentMessages","filter","pm","trigger","showProactiveMessage","checkExitIntentTrigger","lastShown","cooldownMinutes","startDate","endDate","triggered","timeValue","parseInt","scrollValue","autoOpen","setTimeout","chatEndpoint","wsUrl","baseWsUrl","params","URLSearchParams","stopHeartbeat","onopen","updateStatus","onclose","code","delay","pow","startPolling","onerror","onmessage","welcome_message","agent_accepted","closed_by_agent","agent_name","is_typing","find","m","online","focus","DEFAULT_BUTTON_STYLES","backgroundColor","borderWidth","paddingVertical","paddingHorizontal","fontSize","fontWeight","applyButtonStyling","buttonStyling","styleId","styleContainer","head","mergedStyles","primary","secondary","quickReplies","feedback","headerActions","escalation","cardActions","toggleButton","attachButton","generateButtonCSS","selector","bg","color","weight","getFontWeightValue","css","toggleStyle","toggleBg","toggleColor","toggleBorderColor","init","userConfig","configResponse","success","fetchWidgetConfig","serverConfig","behavior","branding","logoUrl","customCss","size","Array","isArray","isActive","followUpQuestion","Object","keys","apiBaseUrl","warn","publicAPI","destroy","removeEventListener","styles","getElementById","sendMessage","setUser","user","clearUser","clearHistory","on","off","getState","getConfig","showSurvey","resetProactiveMessages","version","IhoomanChat","createWidgetInstance","script","currentScript","scripts","getElementsByTagName","src","getAttribute","autoConfig"],"mappings":"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"}