@ihoomanai/chat-widget 3.0.12 → 3.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +39 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +39 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.umd.js +39 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/widget.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/types.ts +1 -0
- package/src/widget.ts +39 -1
package/dist/index.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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>',thumbUp:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg>',thumbDown:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></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=[],d={},c=null,l=[],p={};const u={};let h=null,m=null,g=0;let f=!1,b=null,v=null;function y(e=""){return e+Math.random().toString(36).slice(2,14)+Date.now().toString(36)}function x(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function w(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 k(e,t){(u[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 V(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 A(){const e=window.scrollY||document.documentElement.scrollTop,t=document.documentElement.scrollHeight-window.innerHeight;return t>0?Math.round(e/t*100):0}function $(e){try{return new RegExp(e.replace(/\*/g,".*")).test(window.location.href)}catch{return window.location.href.includes(e)}}let _=null;function S(){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),_=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?"#1a1a2e":"#ffffff",u=l?"#e4e4e7":"#1f2937",h=l?"#71717a":"#6b7280",m=l?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",g=l?"#16162a":"#f9fafb",f=`linear-gradient(135deg, ${t}, ${o})`,b=l?"#252542":"#f1f5f9",v=n.position?.includes("right")??!0,y=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: ${u}; -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; ${v?"right: 20px":"left: 20px"}; ${y?"bottom: 20px":"top: 20px"}; width: ${c}px !important; height: ${c}px !important; border-radius: 50% !important; background: linear-gradient(135deg, ${t}, ${o}) !important; border: none !important; cursor: pointer; z-index: ${s}; display: flex !important; align-items: center; justify-content: center; box-shadow: 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; ${v?"right: 20px":"left: 20px"}; ${y?"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: 0.97; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: ${a}px; border: 1px solid ${m}; box-shadow: 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: linear-gradient(135deg, ${t}, ${o}); color: white; display: flex; align-items: center; gap: 12px; flex-shrink: 0; }\n .ihooman-header-avatar { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.2); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\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: 28px; height: 28px; border-radius: 6px; background: rgba(255,255,255,0.15); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: white; transition: background 0.2s; }\n .ihooman-header-btn:hover { background: rgba(255,255,255,0.25); }\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; }\n .ihooman-messages::-webkit-scrollbar { width: 6px; }\n .ihooman-messages::-webkit-scrollbar-track { background: transparent; }\n .ihooman-messages::-webkit-scrollbar-thumb { background: ${m}; 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: ${f}; color: white; border-bottom-right-radius: 4px; }\n .ihooman-message.bot .ihooman-message-content { background: ${b}; color: ${u}; border-bottom-left-radius: 4px; }\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: ${h}; margin-top: 4px; padding: 0 4px; }\n .ihooman-typing { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: ${b}; 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: ${h}; 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 ${m}; flex-shrink: 0; }\n .ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${g}; border: 1px solid ${m}; border-radius: 12px; padding: 8px 12px; transition: border-color 0.2s, box-shadow 0.2s; }\n .ihooman-input-wrapper:focus-within { border-color: ${e}; box-shadow: 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: ${u}; resize: none; max-height: 100px; outline: none; line-height: 1.4; }\n .ihooman-input::placeholder { color: ${h}; }\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: ${h}; }\n .ihooman-input-btn:hover { background: ${m}; color: ${u}; }\n .ihooman-input-btn.send { background: linear-gradient(135deg, ${t}, ${o}); color: white; }\n .ihooman-input-btn.send:hover { 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-file-input { display: none; }\n .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${h}; 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: ${u}; margin: 0; }\n .ihooman-ticket-subtitle { font-size: 13px; color: ${h}; margin: 0; }\n .ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${m}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${g}; color: ${u}; outline: none; transition: border-color 0.2s; }\n .ihooman-ticket-input:focus { border-color: ${e}; }\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: 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: ${h}; border: 1px solid ${m}; 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 ${m}; display: flex; justify-content: space-between; align-items: center; }\n .ihooman-history-title { font-size: 14px; font-weight: 600; color: ${u}; 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 ${m}; 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: ${u}; 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: 14px; }\n .ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 6px; background: ${p}; border-top: 1px solid ${m}; }\n .ihooman-preset-questions:empty { display: none; }\n .ihooman-preset-questions.hidden { display: none; }\n .ihooman-proactive-toast { position: fixed; ${v?"right: 20px":"left: 20px"}; ${y?"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 ${m}; }\n .ihooman-proactive-toast.show { opacity: 1; visibility: visible; transform: translateY(0); }\n .ihooman-proactive-toast-content { font-size: 14px; color: ${u}; 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: ${h}; border: 1px solid ${m}; }\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: ${u}; text-align: center; }\n .ihooman-survey-stars { display: flex; gap: 8px; }\n .ihooman-survey-star { width: 40px; height: 40px; cursor: pointer; color: ${h}; 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 ${m}; border-radius: 8px; font-size: 14px; resize: none; min-height: 80px; background: ${g}; color: ${u}; }\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: ${h}; border: none; font-size: 12px; cursor: pointer; line-height: 1.4; }\n .ihooman-survey-skip:hover { color: ${u}; }\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 ${m}; 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: ${u}; margin-bottom: 4px; }\n .ihooman-carousel-card-desc { font-size: 12px; color: ${h}; 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 { ${v?"right: 16px":"left: 16px"}; bottom: 16px; } .ihooman-proactive-toast { left: 10px; right: 10px; max-width: none; } }\n `}(),_.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="${x(n.avatarUrl)}" alt="Support">`:o.bot}</div>\n <div class="ihooman-header-info">\n <div class="ihooman-header-title">${x(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="${x(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 `,_.appendChild(i),p={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(!p.toggle||!p.sendBtn||!p.input)return;p.toggle.addEventListener("click",te),p.sendBtn.addEventListener("click",W),p.input.addEventListener("input",()=>{p.sendBtn&&(p.sendBtn.disabled=!p.input?.value.trim()),p.input&&(p.input.style.height="auto",p.input.style.height=Math.min(p.input.scrollHeight,100)+"px")}),p.input.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),p.sendBtn?.disabled||W())}),p.attachBtn&&p.fileInput&&(p.attachBtn.addEventListener("click",()=>p.fileInput?.click()),p.fileInput.addEventListener("change",P));p.widget?.querySelector('[data-action="refresh"]')?.addEventListener("click",oe),p.widget?.querySelector('[data-action="minimize"]')?.addEventListener("click",ee),p.widget?.querySelector('[data-action="history"]')?.addEventListener("click",T),p.ticketSubmitBtn&&p.ticketSubmitBtn.addEventListener("click",M);p.ticketBackBtn&&p.ticketBackBtn.addEventListener("click",()=>q("chat"));const e=p.widget?.querySelector(".ihooman-history-new");e&&e.addEventListener("click",()=>{oe(),q("chat")});const t=p.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.primary"),n=p.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.secondary");t&&t.addEventListener("click",()=>{const e=r[r.length-1];e&&V("proactive_clicked",{message_id:e}),Y(),X(),k("proactive:clicked")});n&&n.addEventListener("click",()=>{Y()});const i=p.surveyView?.querySelector(".ihooman-survey-submit"),a=p.surveyView?.querySelector(".ihooman-survey-skip");i&&i.addEventListener("click",O);a&&a.addEventListener("click",()=>q("chat"));!function(){const e=p.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,C(e,n)}),i.addEventListener("mouseenter",()=>C(e,n)),i.addEventListener("mouseleave",()=>C(e,t)),e.appendChild(i)}}()}()}function C(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 I(e,t="bot",a={}){const s={id:y("msg_"),content:e,sender:t,timestamp:new Date,metadata:a};if(i.messages.push(s),!p.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="";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="${x(e.text)}">${x(e.text)}</button>`).join("")}</div>`);let u="";var h,m;"bot"!==t||a?.is_system_message||(u=`\n <div class="ihooman-feedback-btns">\n <button class="ihooman-feedback-btn" data-feedback="up" title="Helpful">${o.thumbUp}</button>\n <button class="ihooman-feedback-btn" data-feedback="down" title="Not helpful">${o.thumbDown}</button>\n </div>\n `),r.innerHTML=`\n <div class="ihooman-message-content">${m=e,m?x(m).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 ${u}\n ${n.showTimestamps?`<div class="ihooman-message-time">${h=s.timestamp,new Date(h).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&&(N(),I(t,"user"),j(),D(t))})}),r.querySelectorAll(".ihooman-feedback-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.feedback;r.querySelectorAll(".ihooman-feedback-btn").forEach(e=>e.classList.remove("active")),e.classList.add("active"),async function(e,t){try{await fetch(`${n.serverUrl}/api/widget/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,message_id:e,session_id:i.sessionId,feedback_type:t})})}catch(e){console.error("Error submitting feedback:",e)}}(s.id,"up"===t?"positive":"negative")})});const g=p.messages.querySelector(".ihooman-typing");return g&&g.remove(),p.messages.appendChild(r),p.messages.scrollTop=p.messages.scrollHeight,"bot"!==t||i.isOpen||(i.unreadCount++,p.badge&&(p.badge.textContent=String(i.unreadCount)),n.enableSounds&&function(){try{const e=new Audio("data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYNBrP/AAAAAAAAAAAAAAAAAAAAAP/7UMQAA8AAAaQAAAAgAAA0gAAABExBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tQxBKDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=");e.volume=.3,e.play().catch(()=>{})}catch{}}()),k("message",s),s}function z(){console.debug("[IhoomanChat] Rendering preset questions:",l.length),p.presetQuestions&&0!==l.length?(p.presetQuestions.innerHTML=l.map(e=>`\n <button class="ihooman-preset-btn" data-question-id="${x(e.id)}" data-question-text="${x(e.text)}">\n ${e.icon||e.emoji?`<span class="icon">${x(e.icon||e.emoji||"")}</span>`:""}\n <span>${x(e.text)}</span>\n </button>\n `).join(""),p.presetQuestions.querySelectorAll(".ihooman-preset-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.questionText;t&&function(e){N(),I(e,"user"),j(),D(e)}(t)})})):p.presetQuestions&&(p.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 I("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?E("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):E("waiting","⏳ Connecting to live support..."),B(),k("escalation:start",{type:"live_agent"})}catch(e){console.error("Error requesting live agent:",e),I("❌ Unable to connect to live support. Please try again.","bot",{is_system_message:!0})}}():"create-ticket"===e&&q("ticket")}function q(e){a=e,i.view=e,p.chatView&&p.chatView.classList.toggle("hidden","chat"!==e),p.ticketView&&p.ticketView.classList.toggle("show","ticket"===e),p.historyView&&p.historyView.classList.toggle("show","history"===e),p.surveyView&&p.surveyView.classList.toggle("show","survey"===e),"history"===e&&async function(){if(!p.historyList||!i.visitorId)return;p.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(p.historyList.innerHTML='<div class="ihooman-history-empty">No conversations yet</div>');p.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">${x(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(""),p.historyList.querySelectorAll(".ihooman-history-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.sessionId;t&&async function(e){i.sessionId=e,n.persistSession&&w("session_id",e);p.messages&&(p.messages.innerHTML="");s=!1,U(),E("hidden"),f=!0,h&&(h.close(),h=null);J(),q("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();p.messages&&(p.messages.innerHTML=""),o.messages&&o.messages.length>0?o.messages.forEach(e=>{const t="user"===e.sender_type?"user":"bot";I(e.content,t,e.extra_data||{})}):n.welcomeMessage&&I(n.welcomeMessage,"bot"),"pending"===o.status&&(s=!0,B(),E("waiting","⏳ Waiting for agent..."))}catch(e){console.error("Error loading conversation messages:",e),n.welcomeMessage&&I(n.welcomeMessage,"bot")}}(e)}(t)})})}catch(e){console.error("Error loading conversation history:",e),p.historyList.innerHTML='<div class="ihooman-history-empty">Failed to load history</div>'}}()}function T(){q("history"===a?"chat":"history")}function E(e,t){p.statusBar&&("hidden"!==e?(p.statusBar.classList.add("show"),p.statusBar.classList.remove("waiting","connected"),p.statusBar.classList.add(e),t&&(p.statusBar.textContent=t)):p.statusBar.classList.remove("show"))}async function M(){const e=p.ticketName?.value.trim(),t=p.ticketEmail?.value.trim(),o=p.ticketIssue?.value.trim();if(e&&t){p.ticketSubmitBtn&&(p.ticketSubmitBtn.disabled=!0,p.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();p.ticketName&&(p.ticketName.value=""),p.ticketEmail&&(p.ticketEmail.value=""),p.ticketIssue&&(p.ticketIssue.value=""),q("chat");I(`✅ 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),I("❌ Error submitting ticket. Please try again.","bot",{is_system_message:!0})}p.ticketSubmitBtn&&(p.ticketSubmitBtn.disabled=!1,p.ticketSubmitBtn.textContent="Submit Ticket")}else alert("Please fill in your name and email")}function B(){v||(v=setInterval(async()=>{if(i.sessionId&&s)try{const e=await fetch(`${n.serverUrl}/api/widget/escalation-status/${i.sessionId}?widget_id=${n.widgetId}`);if(e.ok){const t=await e.json();t.escalated&&("in_progress"===t.ticket_status?E("connected","🟢 Connected to live agent"):"open"===t.ticket_status?E("waiting",t.position_in_queue>1?`⏳ Waiting for agent (Position: #${t.position_in_queue})`:"⏳ Waiting for agent..."):"closed"!==t.ticket_status&&"resolved"!==t.ticket_status||(s=!1,U(),E("hidden"),I("This conversation has been closed. Thank you for contacting us!","bot",{is_system_message:!0}),k("escalation:end",{type:"live_agent"})))}}catch{}else U()},3e3))}function U(){v&&(clearInterval(v),v=null)}async function O(){const e=p.surveyView?.querySelector(".ihooman-survey-stars"),t=e?.querySelectorAll(".ihooman-survey-star.active"),o=t?.length||0,a=p.surveyView?.querySelector(".ihooman-survey-comment")?.value;if(0!==o)try{await fetch(`${n.serverUrl}/api/widget/survey-response`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,survey_id:n.surveyConfig?.id,session_id:i.sessionId,rating:o,comment:a})}),V("survey_submitted",{survey_id:n.surveyConfig?.id,rating:o,comment:a||null,session_id:i.sessionId,visitor_id:i.visitorId}),w("survey_completed_"+i.sessionId,!0),k("survey:submitted",{rating:o,comment:a}),I(n.surveyConfig?.thankYouMessage||"Thank you for your feedback!","bot",{is_system_message:!0}),q("chat")}catch(e){console.error("Error submitting survey:",e)}else alert("Please select a rating")}function j(){if(!n.showTypingIndicator||!p.messages)return;if(p.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>',p.messages.appendChild(e),p.messages.scrollTop=p.messages.scrollHeight}function H(){const e=p.messages?.querySelector(".ihooman-typing");e&&e.remove()}function W(){const e=p.input?.value.trim();e&&(N(),p.input&&(p.input.value="",p.input.style.height="auto"),p.sendBtn&&(p.sendBtn.disabled=!0),I(e,"user"),V("message_sent",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:e.length}),j(),D(e))}function N(){p.presetQuestions&&p.presetQuestions.classList.add("hidden")}async function D(e){if(h&&h.readyState===WebSocket.OPEN)h.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();H(),o.session_id&&(i.sessionId=o.session_id,n.persistSession&&w("session_id",i.sessionId)),o.response&&(I(o.response,"bot",{sources:o.sources,confidence:o.confidence,escalation_offered:o.escalation_offered,quick_replies:o.quick_replies}),V("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:o.response.length,has_sources:!!o.sources,confidence:o.confidence}))}catch(e){H(),I("Sorry, something went wrong. Please try again.","bot"),k("error",e)}}function P(e){const t=e.target,o=t.files?.[0];if(!o)return;I(`📎 Uploading: ${o.name}...`,"user"),j();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=>{H(),e.message&&I(e.message,"bot")}).catch(()=>{H(),I("Failed to upload file.","bot")}),t.value=""}function R(){n.proactiveMessages&&0!==n.proactiveMessages.length?(console.debug("[IhoomanChat] Initializing proactive messages:",n.proactiveMessages.length),r=w("shown_proactive")||[],d=w("proactive_cooldowns")||{},c=setInterval(Q,5e3),window.addEventListener("scroll",Q),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&&!r.includes(e.id));e.length>0&&F(e[0])}()})):console.debug("[IhoomanChat] No proactive messages configured")}function Q(){if(i.isOpen||!n.proactiveMessages)return;const e=Date.now();for(const t of n.proactiveMessages){if(r.includes(t.id))continue;const o=d[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-(w("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);A()>=i&&(n=!0);break;case"url_pattern":$(String(t.trigger.value))&&(n=!0)}if(n){F(t);break}}}function F(e){if(r.push(e.id),d[e.id]=Date.now(),w("shown_proactive",r),w("proactive_cooldowns",d),V("proactive_displayed",{message_id:e.id}),p.proactiveToast){const t=p.proactiveToast.querySelector(".ihooman-proactive-toast-content");t&&(t.textContent=e.message),p.proactiveToast.classList.add("show"),k("proactive:shown",e),e.autoOpen&&setTimeout(()=>{Y(),X()},3e3)}}function Y(){p.proactiveToast&&p.proactiveToast.classList.remove("show")}function J(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{G(),h=new WebSocket(t),h.onopen=()=>{i.isConnected=!0,i.connectionStatus="connected",g=0,Z(!0),k("connected"),G(),b=setInterval(()=>{if(h&&h.readyState===WebSocket.OPEN)try{h.send(JSON.stringify({type:"ping"}))}catch{}},25e3)},h.onclose=t=>{if(i.isConnected=!1,i.connectionStatus="disconnected",Z(!1),G(),k("disconnected"),f)f=!1;else if(i.isOpen)if(g<5){g++;const t=Math.min(1e3*Math.pow(2,g),3e4);setTimeout(()=>J(e),t)}else K()},h.onerror=e=>{console.error("WebSocket error:",e)},h.onmessage=e=>{try{const t=JSON.parse(e.data);if("connected"===t.type)t.session_id&&(i.sessionId=t.session_id,n.persistSession&&w("session_id",i.sessionId)),t.visitor_id&&(i.visitorId=t.visitor_id,n.persistSession&&w("visitor_id",i.visitorId)),t.welcome_message&&0===i.messages.length&&I(t.welcome_message,"bot");else if("message"===t.type){H();const e="user"===t.sender?"user":"bot";I(t.content,e,{confidence:t.confidence,agent_name:t.agent_name,escalation_offered:t.escalation_offered,escalated:t.escalated,quick_replies:t.quick_replies})}else"typing"===t.type?t.is_typing?j():H():"pong"===t.type||"error"===t.type&&(console.error("WebSocket server error:",t.message),k("error",{message:t.message}))}catch{}}}catch{K()}}function G(){b&&(clearInterval(b),b=null)}function K(){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)||I(e.content,e.sender_type,e.metadata)})}catch{}},5e3))}function Z(e){p.statusDot&&p.statusDot.classList.toggle("offline",!e),p.statusText&&(p.statusText.textContent=e?"Online":"Offline")}function X(){i.isOpen||(i.isOpen=!0,i.unreadCount=0,p.badge&&(p.badge.textContent=""),p.toggle&&p.toggle.classList.add("open"),p.window&&p.window.classList.add("open"),Y(),setTimeout(()=>p.input?.focus(),300),V("widget_open"),k("open"))}function ee(){if(i.isOpen){if(i.isOpen=!1,p.toggle&&p.toggle.classList.remove("open"),p.window&&p.window.classList.remove("open"),V("widget_close"),n.surveyConfig&&i.messages.length>=4){i.sessionId&&w("survey_completed_"+i.sessionId)||setTimeout(()=>{i.isOpen||(n.surveyConfig&&(i.sessionId&&w("survey_completed_"+i.sessionId)||i.messages.length<4||(V("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId}),q("survey"),k("survey:shown",n.surveyConfig))),X())},500)}k("close")}}function te(){i.isOpen?ee():X()}function oe(){i.sessionId=null,i.visitorId=null,i.messages=[],s=!1,w("session_id",null),i.visitorId=y("v_"),w("visitor_id",i.visitorId),p.messages&&(p.messages.innerHTML=""),E("hidden"),U(),g=0,h&&(f=!0,h.close(),h=null),J(),n.welcomeMessage&&I(n.welcomeMessage,"bot"),p.presetQuestions&&p.presetQuestions.classList.remove("hidden"),z(),k("newConversation")}const ne={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},ie={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"#e5e7eb",borderWidth:1,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},ae={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"},se={backgroundColor:"#f3f4f6",textColor:"#374151",borderColor:"#e5e7eb",borderWidth:1,borderRadius:16,paddingVertical:5,paddingHorizontal:10,fontSize:11,fontWeight:"medium"},re={backgroundColor:"transparent",textColor:"#9ca3af",borderColor:"#e5e7eb",borderWidth:1,borderRadius:6,paddingVertical:4,paddingHorizontal:8,fontSize:12,fontWeight:"medium"},de={backgroundColor:"rgba(255, 255, 255, 0.1)",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"},ce={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:14,fontSize:12,fontWeight:"medium"},le={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},pe={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:30,paddingVertical:0,paddingHorizontal:0,fontSize:14,fontWeight:"medium"},ue={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"};function he(e){const t="ihooman-button-styling",o=_||document.head;let n=o.querySelector(`#${t}`);n||(n=document.createElement("style"),n.id=t,o.appendChild(n));const i={primary:{...ne,...e?.primary||{}},secondary:{...ie,...e?.secondary||{}},presetQuestions:{...ae,...e?.presetQuestions||{}},quickReplies:{...se,...e?.quickReplies||{}},feedback:{...re,...e?.feedback||{}},headerActions:{...de,...e?.headerActions||{}},escalation:{...ce,...e?.escalation||{}},cardActions:{...le,...e?.cardActions||{}},toggleButton:{...pe,...e?.toggleButton||{}},attachButton:{...ue,...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 me(o){if(!o.widgetId)return console.error("IhoomanChat: widgetId is required"),null;n={...t,...o},i.visitorId=w("visitor_id")||y("v_"),w("visitor_id",i.visitorId),n.persistSession&&(i.sessionId=w("session_id")),w("page_load_time")||w("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),l=d.presetQuestions.map(e=>({id:e.id,text:e.text,icon:e.icon,emoji:e.icon})),n.presetQuestions=l),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,he(d.buttonStyling)),r=s.chatEndpoint):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.")),S(),he(n.buttonStyling),z(),i.messages.forEach(e=>I(e.content,"user"===e.sender?"user":"bot",e.metadata)),0===i.messages.length&&n.welcomeMessage&&I(n.welcomeMessage,"bot"),J(r),R(),n.startOpen&&setTimeout(X,500),k("ready"),ge}const ge={init:me,open:X,close:ee,toggle:te,isOpen:function(){return i.isOpen},destroy:function(){G(),U(),c&&(clearInterval(c),c=null),window.removeEventListener("scroll",Q),f=!0,h&&(h.close(),h=null),m&&(clearInterval(m),m=null),p.widget&&p.widget.remove();const e=document.getElementById("ihooman-widget-styles");e&&e.remove(),i={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},p={},g=0,f=!1},sendMessage:function(e){e.trim()&&(p.input&&(p.input.value=e),W())},setUser:function(e){i.userInfo=e,e.name&&w("user_name",e.name),e.email&&w("user_email",e.email),e.metadata&&w("user_metadata",e.metadata)},clearUser:function(){i.userInfo=null,w("user_name",null),w("user_email",null),w("user_metadata",null)},clearHistory:function(){oe()},on:function(e,t){u[e]||(u[e]=[]),u[e].push(t)},off:function(e,t){u[e]&&(u[e]=u[e].filter(e=>e!==t))},getState:function(){return{...i}},getConfig:function(){return{...n}},showSurvey:function(){n.surveyConfig?(V("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId,trigger:"manual"}),q("survey"),k("survey:shown",n.surveyConfig)):console.warn("[IhoomanChat] No survey configured")},resetProactiveMessages:function(){r=[],d={},w("shown_proactive",null),w("proactive_cooldowns",null),console.debug("[IhoomanChat] Proactive message history reset")},version:"3.0.12"},fe=ge;function be(){return{...ge}}!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",()=>me(o)):me(o)}}(),"undefined"!=typeof window&&(window.IhoomanChat=fe);export{fe as IhoomanChat,be as createWidgetInstance,fe 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>',thumbUp:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg>',thumbDown:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></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=[],d={},c=null,l=[],p={};const u={};let h=null,g=null,m=0;let f=!1,b=null,v=null;function y(e=""){return e+Math.random().toString(36).slice(2,14)+Date.now().toString(36)}function x(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function w(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 k(e,t){(u[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 V(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 A(){const e=window.scrollY||document.documentElement.scrollTop,t=document.documentElement.scrollHeight-window.innerHeight;return t>0?Math.round(e/t*100):0}function $(e){try{return new RegExp(e.replace(/\*/g,".*")).test(window.location.href)}catch{return window.location.href.includes(e)}}let _=null;function S(){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),_=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?"#1a1a2e":"#ffffff",u=l?"#e4e4e7":"#1f2937",h=l?"#71717a":"#6b7280",g=l?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",m=l?"#16162a":"#f9fafb",f=`linear-gradient(135deg, ${t}, ${o})`,b=l?"#252542":"#f1f5f9",v=n.position?.includes("right")??!0,y=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: ${u}; -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; ${v?"right: 20px":"left: 20px"}; ${y?"bottom: 20px":"top: 20px"}; width: ${c}px !important; height: ${c}px !important; border-radius: 50% !important; background: linear-gradient(135deg, ${t}, ${o}) !important; border: none !important; cursor: pointer; z-index: ${s}; display: flex !important; align-items: center; justify-content: center; box-shadow: 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; ${v?"right: 20px":"left: 20px"}; ${y?"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: 0.97; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: ${a}px; border: 1px solid ${g}; box-shadow: 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: linear-gradient(135deg, ${t}, ${o}); color: white; display: flex; align-items: center; gap: 12px; flex-shrink: 0; }\n .ihooman-header-avatar { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.2); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\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: 28px; height: 28px; border-radius: 6px; background: rgba(255,255,255,0.15); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: white; transition: background 0.2s; }\n .ihooman-header-btn:hover { background: rgba(255,255,255,0.25); }\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; }\n .ihooman-messages::-webkit-scrollbar { width: 6px; }\n .ihooman-messages::-webkit-scrollbar-track { background: transparent; }\n .ihooman-messages::-webkit-scrollbar-thumb { background: ${g}; 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: ${f}; color: white; border-bottom-right-radius: 4px; }\n .ihooman-message.bot .ihooman-message-content { background: ${b}; color: ${u}; border-bottom-left-radius: 4px; }\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: ${h}; margin-top: 4px; padding: 0 4px; }\n .ihooman-typing { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: ${b}; 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: ${h}; 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 ${g}; flex-shrink: 0; }\n .ihooman-input-wrapper { display: flex; align-items: flex-end; gap: 8px; background: ${m}; border: 1px solid ${g}; border-radius: 12px; padding: 8px 12px; transition: border-color 0.2s, box-shadow 0.2s; }\n .ihooman-input-wrapper:focus-within { border-color: ${e}; box-shadow: 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: ${u}; resize: none; max-height: 100px; outline: none; line-height: 1.4; }\n .ihooman-input::placeholder { color: ${h}; }\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: ${h}; }\n .ihooman-input-btn:hover { background: ${g}; color: ${u}; }\n .ihooman-input-btn.send { background: linear-gradient(135deg, ${t}, ${o}); color: white; }\n .ihooman-input-btn.send:hover { 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-file-input { display: none; }\n .ihooman-powered { text-align: center; padding: 8px; font-size: 11px; color: ${h}; 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: ${u}; margin: 0; }\n .ihooman-ticket-subtitle { font-size: 13px; color: ${h}; margin: 0; }\n .ihooman-ticket-input { padding: 12px 14px; border: 1px solid ${g}; border-radius: 10px; font-size: 14px; font-family: inherit; background: ${m}; color: ${u}; outline: none; transition: border-color 0.2s; }\n .ihooman-ticket-input:focus { border-color: ${e}; }\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: 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: ${h}; border: 1px solid ${g}; 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 ${g}; display: flex; justify-content: space-between; align-items: center; }\n .ihooman-history-title { font-size: 14px; font-weight: 600; color: ${u}; 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 ${g}; 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: ${u}; 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: 14px; }\n .ihooman-preset-questions { padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 6px; background: ${p}; border-top: 1px solid ${g}; }\n .ihooman-preset-questions:empty { display: none; }\n .ihooman-preset-questions.hidden { display: none; }\n .ihooman-proactive-toast { position: fixed; ${v?"right: 20px":"left: 20px"}; ${y?"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 ${g}; }\n .ihooman-proactive-toast.show { opacity: 1; visibility: visible; transform: translateY(0); }\n .ihooman-proactive-toast-content { font-size: 14px; color: ${u}; 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: ${h}; border: 1px solid ${g}; }\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: ${u}; text-align: center; }\n .ihooman-survey-stars { display: flex; gap: 8px; }\n .ihooman-survey-star { width: 40px; height: 40px; cursor: pointer; color: ${h}; 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 ${g}; border-radius: 8px; font-size: 14px; resize: none; min-height: 80px; background: ${m}; color: ${u}; }\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: ${h}; border: none; font-size: 12px; cursor: pointer; line-height: 1.4; }\n .ihooman-survey-skip:hover { color: ${u}; }\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 ${g}; 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: ${u}; margin-bottom: 4px; }\n .ihooman-carousel-card-desc { font-size: 12px; color: ${h}; 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 { ${v?"right: 16px":"left: 16px"}; bottom: 16px; } .ihooman-proactive-toast { left: 10px; right: 10px; max-width: none; } }\n `}(),_.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="${x(n.avatarUrl)}" alt="Support">`:o.bot}</div>\n <div class="ihooman-header-info">\n <div class="ihooman-header-title">${x(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="${x(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 `,_.appendChild(i),p={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(!p.toggle||!p.sendBtn||!p.input)return;p.toggle.addEventListener("click",te),p.sendBtn.addEventListener("click",W),p.input.addEventListener("input",()=>{p.sendBtn&&(p.sendBtn.disabled=!p.input?.value.trim()),p.input&&(p.input.style.height="auto",p.input.style.height=Math.min(p.input.scrollHeight,100)+"px")}),p.input.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),p.sendBtn?.disabled||W())}),p.attachBtn&&p.fileInput&&(p.attachBtn.addEventListener("click",()=>p.fileInput?.click()),p.fileInput.addEventListener("change",P));p.widget?.querySelector('[data-action="refresh"]')?.addEventListener("click",oe),p.widget?.querySelector('[data-action="minimize"]')?.addEventListener("click",ee),p.widget?.querySelector('[data-action="history"]')?.addEventListener("click",T),p.ticketSubmitBtn&&p.ticketSubmitBtn.addEventListener("click",M);p.ticketBackBtn&&p.ticketBackBtn.addEventListener("click",()=>q("chat"));const e=p.widget?.querySelector(".ihooman-history-new");e&&e.addEventListener("click",()=>{oe(),q("chat")});const t=p.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.primary"),n=p.proactiveToast?.querySelector(".ihooman-proactive-toast-btn.secondary");t&&t.addEventListener("click",()=>{const e=r[r.length-1];e&&V("proactive_clicked",{message_id:e}),Y(),X(),k("proactive:clicked")});n&&n.addEventListener("click",()=>{Y()});const i=p.surveyView?.querySelector(".ihooman-survey-submit"),a=p.surveyView?.querySelector(".ihooman-survey-skip");i&&i.addEventListener("click",O);a&&a.addEventListener("click",()=>q("chat"));!function(){const e=p.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,C(e,n)}),i.addEventListener("mouseenter",()=>C(e,n)),i.addEventListener("mouseleave",()=>C(e,t)),e.appendChild(i)}}()}()}function C(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 I(e,t="bot",a={}){const s={id:y("msg_"),content:e,sender:t,timestamp:new Date,metadata:a};if(i.messages.push(s),!p.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="";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="${x(e.text)}">${x(e.text)}</button>`).join("")}</div>`);let u="";var h,g;"bot"!==t||a?.is_system_message||(u=`\n <div class="ihooman-feedback-btns">\n <button class="ihooman-feedback-btn" data-feedback="up" title="Helpful">${o.thumbUp}</button>\n <button class="ihooman-feedback-btn" data-feedback="down" title="Not helpful">${o.thumbDown}</button>\n </div>\n `),r.innerHTML=`\n <div class="ihooman-message-content">${g=e,g?x(g).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 ${u}\n ${n.showTimestamps?`<div class="ihooman-message-time">${h=s.timestamp,new Date(h).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&&(N(),I(t,"user"),j(),D(t))})}),r.querySelectorAll(".ihooman-feedback-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.feedback;r.querySelectorAll(".ihooman-feedback-btn").forEach(e=>e.classList.remove("active")),e.classList.add("active"),async function(e,t){try{await fetch(`${n.serverUrl}/api/widget/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,message_id:e,session_id:i.sessionId,feedback_type:t})})}catch(e){console.error("Error submitting feedback:",e)}}(s.id,"up"===t?"positive":"negative")})});const m=p.messages.querySelector(".ihooman-typing");return m&&m.remove(),p.messages.appendChild(r),p.messages.scrollTop=p.messages.scrollHeight,"bot"!==t||i.isOpen||(i.unreadCount++,p.badge&&(p.badge.textContent=String(i.unreadCount)),n.enableSounds&&function(){try{const e=new Audio("data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYNBrP/AAAAAAAAAAAAAAAAAAAAAP/7UMQAA8AAAaQAAAAgAAA0gAAABExBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tQxBKDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=");e.volume=.3,e.play().catch(()=>{})}catch{}}()),k("message",s),s}function z(){console.debug("[IhoomanChat] Rendering preset questions:",l.length),p.presetQuestions&&0!==l.length?(p.presetQuestions.innerHTML=l.map(e=>`\n <button class="ihooman-preset-btn" data-question-id="${x(e.id)}" data-question-text="${x(e.text)}">\n ${e.icon||e.emoji?`<span class="icon">${x(e.icon||e.emoji||"")}</span>`:""}\n <span>${x(e.text)}</span>\n </button>\n `).join(""),p.presetQuestions.querySelectorAll(".ihooman-preset-btn").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.questionText;t&&function(e){N(),I(e,"user"),j(),D(e)}(t)})})):p.presetQuestions&&(p.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 I("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?E("waiting",`⏳ Waiting for agent (Position: #${t.position_in_queue})`):E("waiting","⏳ Connecting to live support..."),B(),k("escalation:start",{type:"live_agent"})}catch(e){console.error("Error requesting live agent:",e),I("❌ Unable to connect to live support. Please try again.","bot",{is_system_message:!0})}}():"create-ticket"===e&&q("ticket")}function q(e){a=e,i.view=e,p.chatView&&p.chatView.classList.toggle("hidden","chat"!==e),p.ticketView&&p.ticketView.classList.toggle("show","ticket"===e),p.historyView&&p.historyView.classList.toggle("show","history"===e),p.surveyView&&p.surveyView.classList.toggle("show","survey"===e),"history"===e&&async function(){if(!p.historyList||!i.visitorId)return;p.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(p.historyList.innerHTML='<div class="ihooman-history-empty">No conversations yet</div>');p.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">${x(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(""),p.historyList.querySelectorAll(".ihooman-history-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.sessionId;t&&async function(e){i.sessionId=e,n.persistSession&&w("session_id",e);p.messages&&(p.messages.innerHTML="");s=!1,U(),E("hidden"),f=!0,h&&(h.close(),h=null);J(),q("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();p.messages&&(p.messages.innerHTML=""),o.messages&&o.messages.length>0?o.messages.forEach(e=>{const t="user"===e.sender_type?"user":"bot";I(e.content,t,e.extra_data||{})}):n.welcomeMessage&&I(n.welcomeMessage,"bot"),"pending"===o.status&&(s=!0,B(),E("waiting","⏳ Waiting for agent..."))}catch(e){console.error("Error loading conversation messages:",e),n.welcomeMessage&&I(n.welcomeMessage,"bot")}}(e)}(t)})})}catch(e){console.error("Error loading conversation history:",e),p.historyList.innerHTML='<div class="ihooman-history-empty">Failed to load history</div>'}}()}function T(){q("history"===a?"chat":"history")}function E(e,t){p.statusBar&&("hidden"!==e?(p.statusBar.classList.add("show"),p.statusBar.classList.remove("waiting","connected"),p.statusBar.classList.add(e),t&&(p.statusBar.textContent=t)):p.statusBar.classList.remove("show"))}async function M(){const e=p.ticketName?.value.trim(),t=p.ticketEmail?.value.trim(),o=p.ticketIssue?.value.trim();if(e&&t){p.ticketSubmitBtn&&(p.ticketSubmitBtn.disabled=!0,p.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();p.ticketName&&(p.ticketName.value=""),p.ticketEmail&&(p.ticketEmail.value=""),p.ticketIssue&&(p.ticketIssue.value=""),q("chat");I(`✅ 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),I("❌ Error submitting ticket. Please try again.","bot",{is_system_message:!0})}p.ticketSubmitBtn&&(p.ticketSubmitBtn.disabled=!1,p.ticketSubmitBtn.textContent="Submit Ticket")}else alert("Please fill in your name and email")}function B(){v||(v=setInterval(async()=>{if(i.sessionId&&s)try{const e=await fetch(`${n.serverUrl}/api/widget/escalation-status/${i.sessionId}?widget_id=${n.widgetId}`);if(e.ok){const t=await e.json();t.escalated&&("in_progress"===t.ticket_status?E("connected","🟢 Connected to live agent"):"open"===t.ticket_status?E("waiting",t.position_in_queue>1?`⏳ Waiting for agent (Position: #${t.position_in_queue})`:"⏳ Waiting for agent..."):"closed"!==t.ticket_status&&"resolved"!==t.ticket_status||(s=!1,U(),E("hidden"),I("This conversation has been closed. Thank you for contacting us!","bot",{is_system_message:!0}),k("escalation:end",{type:"live_agent"})))}}catch{}else U()},3e3))}function U(){v&&(clearInterval(v),v=null)}async function O(){const e=p.surveyView?.querySelector(".ihooman-survey-stars"),t=e?.querySelectorAll(".ihooman-survey-star.active"),o=t?.length||0,a=p.surveyView?.querySelector(".ihooman-survey-comment")?.value;if(0!==o)try{await fetch(`${n.serverUrl}/api/widget/survey-response`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({widget_id:n.widgetId,survey_id:n.surveyConfig?.id,session_id:i.sessionId,rating:o,comment:a})}),V("survey_submitted",{survey_id:n.surveyConfig?.id,rating:o,comment:a||null,session_id:i.sessionId,visitor_id:i.visitorId}),w("survey_completed_"+i.sessionId,!0),k("survey:submitted",{rating:o,comment:a}),I(n.surveyConfig?.thankYouMessage||"Thank you for your feedback!","bot",{is_system_message:!0}),q("chat")}catch(e){console.error("Error submitting survey:",e)}else alert("Please select a rating")}function j(){if(!n.showTypingIndicator||!p.messages)return;if(p.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>',p.messages.appendChild(e),p.messages.scrollTop=p.messages.scrollHeight}function H(){const e=p.messages?.querySelector(".ihooman-typing");e&&e.remove()}function W(){const e=p.input?.value.trim();e&&(N(),p.input&&(p.input.value="",p.input.style.height="auto"),p.sendBtn&&(p.sendBtn.disabled=!0),I(e,"user"),V("message_sent",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:e.length}),j(),D(e))}function N(){p.presetQuestions&&p.presetQuestions.classList.add("hidden")}async function D(e){if(h&&h.readyState===WebSocket.OPEN)h.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();H(),o.session_id&&(i.sessionId=o.session_id,n.persistSession&&w("session_id",i.sessionId)),o.response&&(I(o.response,"bot",{sources:o.sources,confidence:o.confidence,escalation_offered:o.escalation_offered,quick_replies:o.quick_replies}),V("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,message_length:o.response.length,has_sources:!!o.sources,confidence:o.confidence}))}catch(e){H(),I("Sorry, something went wrong. Please try again.","bot"),k("error",e)}}function P(e){const t=e.target,o=t.files?.[0];if(!o)return;I(`📎 Uploading: ${o.name}...`,"user"),j();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=>{H(),e.message&&I(e.message,"bot")}).catch(()=>{H(),I("Failed to upload file.","bot")}),t.value=""}function R(){n.proactiveMessages&&0!==n.proactiveMessages.length?(console.debug("[IhoomanChat] Initializing proactive messages:",n.proactiveMessages.length),r=w("shown_proactive")||[],d=w("proactive_cooldowns")||{},c=setInterval(Q,5e3),window.addEventListener("scroll",Q),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&&!r.includes(e.id));e.length>0&&F(e[0])}()})):console.debug("[IhoomanChat] No proactive messages configured")}function Q(){if(i.isOpen||!n.proactiveMessages)return;const e=Date.now();for(const t of n.proactiveMessages){if(r.includes(t.id))continue;const o=d[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-(w("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);A()>=i&&(n=!0);break;case"url_pattern":$(String(t.trigger.value))&&(n=!0)}if(n){F(t);break}}}function F(e){if(r.push(e.id),d[e.id]=Date.now(),w("shown_proactive",r),w("proactive_cooldowns",d),V("proactive_displayed",{message_id:e.id}),p.proactiveToast){const t=p.proactiveToast.querySelector(".ihooman-proactive-toast-content");t&&(t.textContent=e.message),p.proactiveToast.classList.add("show"),k("proactive:shown",e),e.autoOpen&&setTimeout(()=>{Y(),X()},3e3)}}function Y(){p.proactiveToast&&p.proactiveToast.classList.remove("show")}function J(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{G(),h=new WebSocket(t),h.onopen=()=>{i.isConnected=!0,i.connectionStatus="connected",m=0,Z(!0),k("connected"),G(),b=setInterval(()=>{if(h&&h.readyState===WebSocket.OPEN)try{h.send(JSON.stringify({type:"ping"}))}catch{}},25e3)},h.onclose=t=>{if(i.isConnected=!1,i.connectionStatus="disconnected",Z(!1),G(),k("disconnected"),f)f=!1;else if(i.isOpen)if(m<5){m++;const t=Math.min(1e3*Math.pow(2,m),3e4);setTimeout(()=>J(e),t)}else K()},h.onerror=e=>{console.error("WebSocket error:",e)},h.onmessage=e=>{try{const t=JSON.parse(e.data);if("connected"===t.type)t.session_id&&(i.sessionId=t.session_id,n.persistSession&&w("session_id",i.sessionId)),t.visitor_id&&(i.visitorId=t.visitor_id,n.persistSession&&w("visitor_id",i.visitorId)),t.welcome_message&&0===i.messages.length&&I(t.welcome_message,"bot");else if("message"===t.type){H();const e="user"===t.sender?"user":"bot",o=t.metadata||{};o.agent_accepted&&(s=!0,E("connected","🟢 Connected to live agent"),k("escalation:accepted",{type:"live_agent"})),o.closed_by_agent&&(s=!1,U(),E("hidden"),k("escalation:end",{type:"live_agent"})),V("message_received",{session_id:i.sessionId,visitor_id:i.visitorId,sender:t.sender,is_system_message:o.is_system_message||!1}),I(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?j():H():"pong"===t.type||("agent_status"===t.type?"connected"===t.status?(s=!0,E("connected","🟢 Connected to live agent"),k("escalation:accepted",{type:"live_agent"})):"disconnected"===t.status&&(s=!1,U(),E("hidden"),k("escalation:end",{type:"live_agent"})):"error"===t.type&&(console.error("WebSocket server error:",t.message),k("error",{message:t.message})))}catch{}}}catch{K()}}function G(){b&&(clearInterval(b),b=null)}function K(){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)||I(e.content,e.sender_type,e.metadata)})}catch{}},5e3))}function Z(e){p.statusDot&&p.statusDot.classList.toggle("offline",!e),p.statusText&&(p.statusText.textContent=e?"Online":"Offline")}function X(){i.isOpen||(i.isOpen=!0,i.unreadCount=0,p.badge&&(p.badge.textContent=""),p.toggle&&p.toggle.classList.add("open"),p.window&&p.window.classList.add("open"),Y(),setTimeout(()=>p.input?.focus(),300),V("widget_open"),k("open"))}function ee(){if(i.isOpen){if(i.isOpen=!1,p.toggle&&p.toggle.classList.remove("open"),p.window&&p.window.classList.remove("open"),V("widget_close"),n.surveyConfig&&i.messages.length>=4){i.sessionId&&w("survey_completed_"+i.sessionId)||setTimeout(()=>{i.isOpen||(n.surveyConfig&&(i.sessionId&&w("survey_completed_"+i.sessionId)||i.messages.length<4||(V("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId}),q("survey"),k("survey:shown",n.surveyConfig))),X())},500)}k("close")}}function te(){i.isOpen?ee():X()}function oe(){i.sessionId=null,i.visitorId=null,i.messages=[],s=!1,w("session_id",null),i.visitorId=y("v_"),w("visitor_id",i.visitorId),p.messages&&(p.messages.innerHTML=""),E("hidden"),U(),m=0,h&&(f=!0,h.close(),h=null),J(),n.welcomeMessage&&I(n.welcomeMessage,"bot"),p.presetQuestions&&p.presetQuestions.classList.remove("hidden"),z(),k("newConversation")}const ne={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},ie={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"#e5e7eb",borderWidth:1,borderRadius:8,paddingVertical:8,paddingHorizontal:16,fontSize:13,fontWeight:"medium"},ae={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"},se={backgroundColor:"#f3f4f6",textColor:"#374151",borderColor:"#e5e7eb",borderWidth:1,borderRadius:16,paddingVertical:5,paddingHorizontal:10,fontSize:11,fontWeight:"medium"},re={backgroundColor:"transparent",textColor:"#9ca3af",borderColor:"#e5e7eb",borderWidth:1,borderRadius:6,paddingVertical:4,paddingHorizontal:8,fontSize:12,fontWeight:"medium"},de={backgroundColor:"rgba(255, 255, 255, 0.1)",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"},ce={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:8,paddingHorizontal:14,fontSize:12,fontWeight:"medium"},le={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:6,paddingVertical:6,paddingHorizontal:12,fontSize:12,fontWeight:"medium"},pe={backgroundColor:"#00aeff",textColor:"#ffffff",borderColor:"transparent",borderWidth:0,borderRadius:30,paddingVertical:0,paddingHorizontal:0,fontSize:14,fontWeight:"medium"},ue={backgroundColor:"transparent",textColor:"#6b7280",borderColor:"transparent",borderWidth:0,borderRadius:8,paddingVertical:6,paddingHorizontal:6,fontSize:14,fontWeight:"medium"};function he(e){const t="ihooman-button-styling",o=_||document.head;let n=o.querySelector(`#${t}`);n||(n=document.createElement("style"),n.id=t,o.appendChild(n));const i={primary:{...ne,...e?.primary||{}},secondary:{...ie,...e?.secondary||{}},presetQuestions:{...ae,...e?.presetQuestions||{}},quickReplies:{...se,...e?.quickReplies||{}},feedback:{...re,...e?.feedback||{}},headerActions:{...de,...e?.headerActions||{}},escalation:{...ce,...e?.escalation||{}},cardActions:{...le,...e?.cardActions||{}},toggleButton:{...pe,...e?.toggleButton||{}},attachButton:{...ue,...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 ge(o){if(!o.widgetId)return console.error("IhoomanChat: widgetId is required"),null;n={...t,...o},i.visitorId=w("visitor_id")||y("v_"),w("visitor_id",i.visitorId),n.persistSession&&(i.sessionId=w("session_id")),w("page_load_time")||w("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),l=d.presetQuestions.map(e=>({id:e.id,text:e.text,icon:e.icon,emoji:e.icon})),n.presetQuestions=l),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,he(d.buttonStyling)),r=s.chatEndpoint):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.")),S(),he(n.buttonStyling),z(),i.messages.forEach(e=>I(e.content,"user"===e.sender?"user":"bot",e.metadata)),0===i.messages.length&&n.welcomeMessage&&I(n.welcomeMessage,"bot"),J(r),R(),n.startOpen&&setTimeout(X,500),k("ready"),me}const me={init:ge,open:X,close:ee,toggle:te,isOpen:function(){return i.isOpen},destroy:function(){G(),U(),c&&(clearInterval(c),c=null),window.removeEventListener("scroll",Q),f=!0,h&&(h.close(),h=null),g&&(clearInterval(g),g=null),p.widget&&p.widget.remove();const e=document.getElementById("ihooman-widget-styles");e&&e.remove(),i={isOpen:!1,isConnected:!1,messages:[],sessionId:null,visitorId:null,unreadCount:0},p={},m=0,f=!1},sendMessage:function(e){e.trim()&&(p.input&&(p.input.value=e),W())},setUser:function(e){i.userInfo=e,e.name&&w("user_name",e.name),e.email&&w("user_email",e.email),e.metadata&&w("user_metadata",e.metadata)},clearUser:function(){i.userInfo=null,w("user_name",null),w("user_email",null),w("user_metadata",null)},clearHistory:function(){oe()},on:function(e,t){u[e]||(u[e]=[]),u[e].push(t)},off:function(e,t){u[e]&&(u[e]=u[e].filter(e=>e!==t))},getState:function(){return{...i}},getConfig:function(){return{...n}},showSurvey:function(){n.surveyConfig?(V("survey_displayed",{survey_id:n.surveyConfig.id,session_id:i.sessionId,visitor_id:i.visitorId,trigger:"manual"}),q("survey"),k("survey:shown",n.surveyConfig)):console.warn("[IhoomanChat] No survey configured")},resetProactiveMessages:function(){r=[],d={},w("shown_proactive",null),w("proactive_cooldowns",null),console.debug("[IhoomanChat] Proactive message history reset")},version:"3.0.13"},fe=me;function be(){return{...me}}!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",()=>ge(o)):ge(o)}}(),"undefined"!=typeof window&&(window.IhoomanChat=fe);export{fe as IhoomanChat,be as createWidgetInstance,fe 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","bot","agent","ticket","history","plus","star","starEmpty","thumbUp","thumbDown","config","widgetId","state","isOpen","isConnected","messages","pendingMessages","sessionId","visitorId","unreadCount","view","connectionStatus","typingIndicator","soundMuted","escalationStatus","userInfo","currentView","isLiveAgentMode","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","textColor","mutedColor","borderColor","inputBg","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","quick_replies","map","qr","join","feedbackHtml","date","is_system_message","toLocaleTimeString","hour","minute","handleEscalationAction","btn","hidePresetQuestions","showTyping","sendMessageToServer","feedback","b","messageId","feedbackType","widget_id","feedback_type","submitFeedback","typing","audio","Audio","volume","play","catch","playSound","renderPresetQuestions","q","icon","emoji","questionText","handlePresetQuestionClick","action","response","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","setInterval","escalated","ticket_status","clearInterval","activeStars","comment","survey_id","thankYouMessage","hideTyping","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","_event","delay","pow","startPolling","onerror","onmessage","welcome_message","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","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","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","thumbUp","thumbDown","config","widgetId","state","isOpen","isConnected","messages","pendingMessages","sessionId","visitorId","unreadCount","view","connectionStatus","typingIndicator","soundMuted","escalationStatus","userInfo","currentView","isLiveAgentMode","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","textColor","mutedColor","borderColor","inputBg","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","quick_replies","map","qr","join","feedbackHtml","date","is_system_message","toLocaleTimeString","hour","minute","handleEscalationAction","btn","hidePresetQuestions","showTyping","sendMessageToServer","feedback","b","messageId","feedbackType","widget_id","feedback_type","submitFeedback","typing","audio","Audio","volume","play","catch","playSound","renderPresetQuestions","q","icon","emoji","questionText","handlePresetQuestionClick","action","response","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","setInterval","escalated","ticket_status","clearInterval","activeStars","comment","survey_id","thankYouMessage","hideTyping","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","_event","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","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","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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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @ihoomanai/chat-widget v3.0.
|
|
2
|
+
* @ihoomanai/chat-widget v3.0.13
|
|
3
3
|
* Universal chat support widget for any website - secure Widget ID based initialization
|
|
4
4
|
*
|
|
5
5
|
* @license MIT
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* Enhanced with professional features
|
|
17
17
|
* @version 3.0.0
|
|
18
18
|
*/
|
|
19
|
-
const VERSION = '3.0.
|
|
19
|
+
const VERSION = '3.0.13';
|
|
20
20
|
const STORAGE_PREFIX = 'ihooman_chat_';
|
|
21
21
|
const DEFAULT_SERVER_URL = 'https://api.ihooman.ai';
|
|
22
22
|
const defaultConfig = {
|
|
@@ -1358,12 +1358,35 @@
|
|
|
1358
1358
|
else if (data.type === 'message') {
|
|
1359
1359
|
hideTyping();
|
|
1360
1360
|
const sender = data.sender === 'user' ? 'user' : 'bot';
|
|
1361
|
+
// Check if this is an agent-related system message
|
|
1362
|
+
const metadata = data.metadata || {};
|
|
1363
|
+
if (metadata.agent_accepted) {
|
|
1364
|
+
// Agent has accepted the escalation - update status
|
|
1365
|
+
isLiveAgentMode = true;
|
|
1366
|
+
updateStatusBar('connected', '🟢 Connected to live agent');
|
|
1367
|
+
emit('escalation:accepted', { type: 'live_agent' });
|
|
1368
|
+
}
|
|
1369
|
+
if (metadata.closed_by_agent) {
|
|
1370
|
+
// Agent has closed the conversation - return to AI mode
|
|
1371
|
+
isLiveAgentMode = false;
|
|
1372
|
+
stopLiveAgentPolling();
|
|
1373
|
+
updateStatusBar('hidden');
|
|
1374
|
+
emit('escalation:end', { type: 'live_agent' });
|
|
1375
|
+
}
|
|
1376
|
+
// Track message received analytics
|
|
1377
|
+
trackAnalyticsEvent('message_received', {
|
|
1378
|
+
session_id: state.sessionId,
|
|
1379
|
+
visitor_id: state.visitorId,
|
|
1380
|
+
sender: data.sender,
|
|
1381
|
+
is_system_message: metadata.is_system_message || false,
|
|
1382
|
+
});
|
|
1361
1383
|
addMessage(data.content, sender, {
|
|
1362
1384
|
confidence: data.confidence,
|
|
1363
1385
|
agent_name: data.agent_name,
|
|
1364
1386
|
escalation_offered: data.escalation_offered,
|
|
1365
1387
|
escalated: data.escalated,
|
|
1366
1388
|
quick_replies: data.quick_replies,
|
|
1389
|
+
...metadata,
|
|
1367
1390
|
});
|
|
1368
1391
|
}
|
|
1369
1392
|
else if (data.type === 'typing') {
|
|
@@ -1372,6 +1395,20 @@
|
|
|
1372
1395
|
else if (data.type === 'pong') {
|
|
1373
1396
|
// Heartbeat response
|
|
1374
1397
|
}
|
|
1398
|
+
else if (data.type === 'agent_status') {
|
|
1399
|
+
// Handle agent status updates
|
|
1400
|
+
if (data.status === 'connected') {
|
|
1401
|
+
isLiveAgentMode = true;
|
|
1402
|
+
updateStatusBar('connected', '🟢 Connected to live agent');
|
|
1403
|
+
emit('escalation:accepted', { type: 'live_agent' });
|
|
1404
|
+
}
|
|
1405
|
+
else if (data.status === 'disconnected') {
|
|
1406
|
+
isLiveAgentMode = false;
|
|
1407
|
+
stopLiveAgentPolling();
|
|
1408
|
+
updateStatusBar('hidden');
|
|
1409
|
+
emit('escalation:end', { type: 'live_agent' });
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1375
1412
|
else if (data.type === 'error') {
|
|
1376
1413
|
console.error('WebSocket server error:', data.message);
|
|
1377
1414
|
emit('error', { message: data.message });
|