@wabbit-dashboard/embed 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Wabbit={})}(this,function(e){"use strict";function t(e){if(!e.apiKey)throw new Error("[Wabbit] API key is required");if("string"!=typeof e.apiKey)throw new Error("[Wabbit] API key must be a string");if(e.chat?.enabled){if(!e.chat.collectionId)throw new Error("[Wabbit] collectionId is required when chat is enabled");if("inline"===e.chat.mode&&!e.chat.container)throw new Error('[Wabbit] container is required when chat mode is "inline"')}if(e.forms?.enabled&&!e.forms.formId)throw new Error("[Wabbit] formId is required when forms is enabled")}function n(e){const t=function(e){if(e)return e;if("undefined"!=typeof window&&window.WABBIT_API_URL)return window.WABBIT_API_URL;if("undefined"!=typeof window){const e=window.location.hostname;if("localhost"===e||"127.0.0.1"===e||"0.0.0.0"===e)return"http://localhost:3000"}return"https://platform.insourcedata.ai"}(e.apiUrl),n=function(e,t){return e||("undefined"!=typeof window&&window.WABBIT_WS_URL?window.WABBIT_WS_URL:t&&(t.includes("localhost")||t.includes("127.0.0.1"))?"ws://localhost:8003/ws/chat":"wss://chat.insourcedata.ai/ws/chat")}(e.wsUrl,t);return{...e,apiUrl:t,wsUrl:n,chat:e.chat?{...e.chat,mode:e.chat.mode||"widget",position:e.chat.position||"bottom-right",triggerType:e.chat.triggerType||"button",theme:e.chat.theme||"auto",primaryColor:e.chat.primaryColor||"#6366f1",placeholder:e.chat.placeholder||"Type your message...",showHeader:e.chat.showHeader??!0,headerTitle:e.chat.headerTitle||"AI Assistant"}:void 0,forms:e.forms?{...e.forms,theme:e.forms.theme||"auto"}:void 0,emailCapture:e.emailCapture?{...e.emailCapture,triggerAfterMessages:e.emailCapture.triggerAfterMessages||3,fields:e.emailCapture.fields||["email"]}:void 0}}class i{constructor(e){this.chatWidget=null,this.formsWidget=null,this.emailCaptureWidget=null,this.config=e}static init(e){if(i.instance)return console.warn("[Wabbit] SDK already initialized. Returning existing instance."),i.instance;t(e);const a=n(e);i.instance=new i(a);let r=null,s=!1;if(a.chat?.enabled&&a.chat){const t=a.chat,n=t.apiUrl||a.apiUrl||"https://platform.insourcedata.ai",o=t.collectionId,l=fetch(`${n}/api/email-capture/config/${o}`).then(e=>e.json()).then(e=>e.success&&e.config?.enabled?e.config:null).catch(e=>(console.warn("[Wabbit] Failed to fetch email capture config:",e),null));Promise.resolve().then(function(){return y}).then(async({ChatWidget:n})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before chat widget could initialize");const o=await l;if(s=!!o,o){const{EmailCaptureWidget:e}=await Promise.resolve().then(function(){return F});if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before email capture widget could initialize");const t="message_count"===o.trigger?.type?o.trigger.messageCount:3,n=["email"];o.fields?.name?.enabled&&n.push("name"),o.fields?.company?.enabled&&n.push("company");const s=new e({enabled:!0,triggerAfterMessages:t,title:o.modal?.title,description:o.modal?.description,fields:n,onCapture:a.emailCapture?.onCapture});s.init(),i.instance.emailCaptureWidget=s,r=s,console.log("[Wabbit] Email capture initialized from server config")}const c=t.onChatReady||e.onChatReady,d={enabled:t.enabled,collectionId:t.collectionId,apiKey:t.apiKey||a.apiKey,apiUrl:t.apiUrl||a.apiUrl,wsUrl:a.wsUrl||t.wsUrl,mode:t.mode,container:t.container,position:t.position,triggerType:t.triggerType,triggerDelay:t.triggerDelay,theme:t.theme,primaryColor:t.primaryColor,welcomeMessage:t.welcomeMessage,placeholder:t.placeholder,showHeader:t.showHeader,headerTitle:t.headerTitle,onChatReady:()=>{if(r&&i.instance?.chatWidget){const e=i.instance.chatWidget;e.wsClient&&r.setWebSocketClient(e.wsClient)}c&&c()},onUserMessage:s?()=>{r&&r.handleMessage()}:void 0},h=new n(d);h.init(),i.instance.chatWidget=h})}return a.forms?.enabled&&a.forms&&Promise.resolve().then(function(){return k}).then(({FormWidget:e})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before form widget could initialize");const t=a.forms,n=new e({enabled:t.enabled,containerId:t.containerId,formId:t.formId,apiKey:t.apiKey||a.apiKey,apiUrl:t.apiUrl||a.apiUrl,theme:t.theme,primaryColor:t.primaryColor,onSubmit:t.onSubmit,onError:t.onError,onLoad:t.onLoad});n.init(),i.instance.formsWidget=n}),i.instance&&i.instance.initLegacyForms(e),e.onReady&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{e.onReady?.()}):e.onReady()),i.instance}static getInstance(){return i.instance}static destroy(){if(i.instance){i.instance.chatWidget&&i.instance.chatWidget.destroy(),i.instance.formsWidget&&i.instance.formsWidget.destroy();document.querySelectorAll("[data-wabbit-form-id]").forEach(e=>{const t=e.__wabbitFormWidget;t&&"function"==typeof t.destroy&&t.destroy()}),i.instance.legacyFormObserver&&(i.instance.legacyFormObserver.disconnect(),i.instance.legacyFormObserver=null),i.instance.emailCaptureWidget&&i.instance.emailCaptureWidget.destroy(),i.instance=null}}static getChatPageUrl(e,t){const n=t?.baseUrl||"undefined"!=typeof window&&window.WABBIT_BASE_URL||("undefined"==typeof window||"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname?"https://platform.insourcedata.ai":"http://localhost:3000"),i=new URL(`/c/${e}`,n);return t?.initialMessage&&i.searchParams.set("q",t.initialMessage),t?.theme&&"auto"!==t.theme&&i.searchParams.set("theme",t.theme),t?.primaryColor&&i.searchParams.set("color",t.primaryColor.replace("#","")),i.toString()}static openChatPage(e,t){const n=i.getChatPageUrl(e,t);window.open(n,"_blank","noopener,noreferrer")}getConfig(){return{...this.config}}get chat(){return this.chatWidget}get forms(){return this.formsWidget}get emailCapture(){return this.emailCaptureWidget}initLegacyForms(e){e.apiKey&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.initLegacyFormsOnReady(e)}):this.initLegacyFormsOnReady(e))}initLegacyFormsOnReady(e){const t=document.querySelectorAll("[data-wabbit-form-id]");0!==t.length&&(console.log("[Wabbit] Found",t.length,"legacy form container(s)"),t.forEach(t=>{const n=t.getAttribute("data-wabbit-form-id");n&&(t.querySelector('[data-wabbit-form-instance="true"]')?console.warn(`[Wabbit] Form ${n} already initialized`):Promise.resolve().then(function(){return k}).then(({FormWidget:i})=>{const a=new i({enabled:!0,containerId:void 0,formId:n,apiKey:e.apiKey,apiUrl:e.apiUrl,theme:e.forms?.theme||"auto",primaryColor:e.forms?.primaryColor,onSubmit:e.forms?.onSubmit,onError:e.forms?.onError,onLoad:e.forms?.onLoad});a.findContainer=()=>t,a.init(),t.__wabbitFormWidget=a}))}),this.setupLegacyFormObserver(e))}setupLegacyFormObserver(e){if(this.legacyFormObserver)return;const t=new MutationObserver(t=>{for(const n of t)if(n.addedNodes.length){if(Array.from(n.addedNodes).some(e=>{if(1!==e.nodeType)return!1;const t=e;return t.hasAttribute?.("data-wabbit-form-id")||t.querySelector?.("[data-wabbit-form-id]")})){console.log("[Wabbit] Detected dynamically added legacy form container"),this.initLegacyFormsOnReady(e);break}}});t.observe(document.body,{childList:!0,subtree:!0}),this.legacyFormObserver=t}}i.instance=null;class a{constructor(e=localStorage,t="wabbit_"){this.storage=e,this.prefix=t}get(e){try{const t=this.storage.getItem(this.prefix+e);return null===t?null:JSON.parse(t)}catch(t){return console.error(`[Wabbit] Failed to get storage item "${e}":`,t),null}}set(e,t){try{return this.storage.setItem(this.prefix+e,JSON.stringify(t)),!0}catch(t){return console.error(`[Wabbit] Failed to set storage item "${e}":`,t),!1}}remove(e){this.storage.removeItem(this.prefix+e)}clear(){if(void 0!==this.storage.length&&this.storage.key){const e=[];for(let t=0;t<this.storage.length;t++){const n=this.storage.key(t);n&&n.startsWith(this.prefix)&&e.push(n)}e.forEach(e=>this.storage.removeItem(e))}else{["session_id","email_capture_dismissed"].forEach(e=>this.remove(e))}}}const r=new a;function s(e){try{return localStorage.getItem("wabbit_"+e)}catch{return null}}function o(e,t){try{localStorage.setItem("wabbit_"+e,t)}catch(t){console.error(`[Wabbit] Failed to set storage item "${e}":`,t)}}class l{constructor(e,t,n=null){this.ws=null,this.status="disconnected",this.reconnectAttempts=0,this.maxReconnectAttempts=3,this.reconnectDelay=1e3,this.onStatusChange=null,this.onWelcome=null,this.onMessage=null,this.onMessageHistory=null,this.onError=null,this.onDisconnect=null,this.apiKey=e,this.wsUrl=t,this.sessionId=n||this.getStoredSessionId()}setStatus(e){this.status=e,this.onStatusChange&&this.onStatusChange(e)}getStatus(){return this.status}async connect(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;this.setStatus("connecting");const e=new URLSearchParams({api_key:this.apiKey});this.sessionId&&e.append("session_id",this.sessionId);const t=`${this.wsUrl}?${e.toString()}`;try{this.ws=new WebSocket(t),this.ws.onopen=()=>{this.setStatus("connected"),this.reconnectAttempts=0,console.log("[Wabbit] WebSocket connected")},this.ws.onmessage=e=>{try{const t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error("[Wabbit] Failed to parse message:",e)}},this.ws.onerror=e=>{console.error("[Wabbit] WebSocket error:",e),this.onError&&this.onError("Connection error occurred")},this.ws.onclose=()=>{console.log("[Wabbit] WebSocket closed"),this.setStatus("disconnected"),this.onDisconnect&&this.onDisconnect(),this.attemptReconnect()}}catch(e){console.error("[Wabbit] Failed to connect:",e),this.onError&&this.onError("Failed to establish connection"),this.setStatus("disconnected")}}handleMessage(e){switch(e.type){case"welcome":this.sessionId=e.session_id,this.sessionId&&r.set("session_id",this.sessionId),this.onWelcome&&this.onWelcome(e.session_id,e.collection_id,e.message||"Connected");break;case"message_history":if(this.onMessageHistory&&e.messages&&Array.isArray(e.messages)){const t=e.messages.map(e=>({id:e.id||crypto.randomUUID(),role:e.role,content:e.content,timestamp:new Date(e.timestamp),metadata:e.metadata}));this.onMessageHistory(t)}break;case"assistant_message":if(this.onMessage){const t={id:e.message_id||crypto.randomUUID(),role:"assistant",content:e.content,timestamp:new Date,metadata:e.metadata};this.onMessage(t)}break;case"error":this.onError&&this.onError(e.message||"An error occurred");break;default:console.log("[Wabbit] Unknown message type:",e.type)}}sendMessage(e,t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return void(this.onError&&this.onError("Not connected to chat service"));const n={type:"message",content:e,metadata:t||{}};this.ws.send(JSON.stringify(n))}disconnect(){this.ws&&(this.ws.close(),this.ws=null),this.setStatus("disconnected")}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return void console.log("[Wabbit] Max reconnect attempts reached");this.reconnectAttempts++,this.setStatus("reconnecting");const e=this.reconnectDelay*Math.pow(2,this.reconnectAttempts-1);console.log(`[Wabbit] Attempting to reconnect in ${e}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.connect()},e)}clearSession(){this.sessionId=null,r.remove("session_id")}getStoredSessionId(){return r.get("session_id")||null}}function c(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function d(e){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}function h(e,t,n){const i=document.createElement(e);return t&&Object.entries(t).forEach(([e,t])=>{i.setAttribute(e,t)}),n&&n.forEach(e=>{"string"==typeof e?i.appendChild(document.createTextNode(e)):i.appendChild(e)}),i}class b{constructor(e){this.element=null,this.options=e}render(){return this.element||(this.element=h("button",{class:`wabbit-chat-bubble ${this.options.position}`,"aria-label":"Open chat",type:"button"}),this.element.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <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>\n </svg>\n ',this.element.addEventListener("click",this.options.onClick),document.body.appendChild(this.element)),this.element}show(){this.element&&(this.element.style.display="flex")}hide(){this.element&&(this.element.style.display="none")}destroy(){this.element&&(this.element.removeEventListener("click",this.options.onClick),this.element.remove(),this.element=null)}}class m{constructor(e){this.element=null,this.messagesContainer=null,this.inputElement=null,this.sendButton=null,this.messages=[],this.isWaitingForResponse=!1,this.closeButton=null,this.eventCleanup=[],this.options=e}render(){if(this.element)return this.element;const e="inline"===this.options.mode;if(this.element=h("div",{class:e?"wabbit-chat-panel wabbit-chat-panel-inline":`wabbit-chat-panel ${this.options.position}`}),!1!==this.options.showHeader){const t=this.createHeader(e);this.element.appendChild(t)}this.messagesContainer=h("div",{class:"wabbit-chat-messages"});const t=this.createInputArea();return this.element.appendChild(this.messagesContainer),this.element.appendChild(t),e&&this.options.container?(this.options.container.appendChild(this.element),this.element.style.display="flex"):(document.body.appendChild(this.element),this.element.style.display="none"),this.options.welcomeMessage&&this.addSystemMessage(this.options.welcomeMessage),setTimeout(()=>this.scrollToBottom(),100),this.element}createHeader(e){const t=h("div",{class:"wabbit-chat-panel-header"}),n=h("div",{class:"wabbit-chat-panel-header-title"}),i=h("div",{class:"wabbit-chat-panel-header-icon"});i.textContent="AI";const a=h("div",{class:"wabbit-chat-panel-header-text"}),r=h("h3");r.textContent=this.options.headerTitle||"AI Assistant";const s=h("p");if(s.textContent="Powered by Wabbit",a.appendChild(r),a.appendChild(s),n.appendChild(i),n.appendChild(a),t.appendChild(n),!e){this.closeButton=h("button",{class:"wabbit-chat-panel-close","aria-label":"Close chat",type:"button"}),this.closeButton.innerHTML="×";const e=this.options.onClose;this.closeButton.addEventListener("click",e),this.eventCleanup.push(()=>{this.closeButton?.removeEventListener("click",e)}),t.appendChild(this.closeButton)}return t}createInputArea(){const e=h("div",{class:"wabbit-chat-input-area"}),t=h("div",{class:"wabbit-chat-input-wrapper"});this.inputElement=document.createElement("textarea"),this.inputElement.className="wabbit-chat-input",this.inputElement.placeholder=this.options.placeholder||"Type your message...",this.inputElement.rows=1,this.inputElement.disabled=this.options.disabled||!1;const n=()=>{this.inputElement.style.height="auto",this.inputElement.style.height=`${Math.min(this.inputElement.scrollHeight,120)}px`,this.updateSendButtonState()};this.inputElement.addEventListener("input",n),this.eventCleanup.push(()=>{this.inputElement?.removeEventListener("input",n)});const i=e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSend())};this.inputElement.addEventListener("keydown",i),this.eventCleanup.push(()=>{this.inputElement?.removeEventListener("keydown",i)}),this.sendButton=h("button",{class:"wabbit-chat-send-button",type:"button","aria-label":"Send message"}),this.sendButton.innerHTML='\n <svg class="wabbit-chat-send-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="22" y1="2" x2="11" y2="13"></line>\n <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>\n </svg>\n ';const a=()=>this.handleSend();return this.sendButton.addEventListener("click",a),this.eventCleanup.push(()=>{this.sendButton?.removeEventListener("click",a)}),this.updateSendButtonState(),t.appendChild(this.inputElement),t.appendChild(this.sendButton),e.appendChild(t),e}addMessage(e){this.messages.push(e),this.renderMessage(e),this.scrollToBottom()}setMessages(e){this.messages=e,this.messagesContainer&&(this.messagesContainer.innerHTML="",e.forEach(e=>this.renderMessage(e)),this.scrollToBottom())}addSystemMessage(e){const t={id:`system-${Date.now()}`,role:"system",content:e,timestamp:new Date};this.addMessage(t)}setWaitingForResponse(e){if(this.isWaitingForResponse=e,this.messagesContainer){const t=this.messagesContainer.querySelector(".wabbit-chat-typing");if(t&&t.remove(),e){const e=h("div",{class:"wabbit-chat-typing"});e.innerHTML='\n <div class="wabbit-chat-typing-dot"></div>\n <div class="wabbit-chat-typing-dot"></div>\n <div class="wabbit-chat-typing-dot"></div>\n ',this.messagesContainer.appendChild(e),this.scrollToBottom()}}this.updateSendButtonState()}setDisabled(e){this.inputElement&&(this.inputElement.disabled=e,this.updateSendButtonState())}renderMessage(e){if(!this.messagesContainer)return;const t=h("div",{class:`wabbit-chat-message wabbit-chat-message-${e.role}`}),n=h("div",{class:"wabbit-chat-message-bubble"}),i=h("div",{class:"wabbit-chat-message-content"});"assistant"===e.role?i.innerHTML=this.formatMessage(e.content):i.textContent=e.content,n.appendChild(i),t.appendChild(n),this.messagesContainer.appendChild(t)}formatMessage(e){let t=c(e);return t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/`(.+?)`/g,'<code style="background: rgba(0,0,0,0.1); padding: 2px 4px; border-radius: 3px;">$1</code>'),t=t.replace(/\n/g,"<br>"),t}handleSend(){if(!this.inputElement||this.isWaitingForResponse)return;const e=this.inputElement.value.trim();e&&(this.inputElement.value="",this.inputElement.style.height="auto",this.options.onSendMessage(e))}updateSendButtonState(){if(!this.sendButton||!this.inputElement)return;const e=this.inputElement.value.trim().length>0,t=this.options.disabled||this.isWaitingForResponse||!e;t?this.sendButton.setAttribute("disabled","true"):this.sendButton.removeAttribute("disabled"),this.sendButton instanceof HTMLButtonElement&&(this.sendButton.disabled=t)}scrollToBottom(){this.messagesContainer&&(this.messagesContainer.scrollTop=this.messagesContainer.scrollHeight)}show(){this.element&&(this.element.style.display="flex",setTimeout(()=>{this.scrollToBottom(),this.inputElement&&this.inputElement.focus()},100))}hide(){this.element&&(this.element.style.display="none")}destroy(){this.eventCleanup.forEach(e=>e()),this.eventCleanup=[],this.element&&(this.element.remove(),this.element=null,this.messagesContainer=null,this.inputElement=null,this.sendButton=null,this.closeButton=null)}}function u(){const e=document.documentElement,t=e.getAttribute("data-theme");return"light"===t||"dark"===t?t:e.classList.contains("dark")?"dark":"light"}function p(e){const t=new MutationObserver(()=>{e(u())});t.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","class"]});const n=window.matchMedia("(prefers-color-scheme: dark)"),i=()=>{e(u())};return n.addEventListener("change",i),e(u()),()=>{t.disconnect(),n.removeEventListener("change",i)}}function g(e="#6366f1",t){const n="wabbit-chat-styles",i=document.getElementById(n);i&&i.remove();const a="dark"===("auto"!==t&&t?t:u())?{"--wabbit-bg-base":"#1A1816","--wabbit-bg-elevated":"#2D2826","--wabbit-bg-hover":"#3D3935","--wabbit-text-primary":"#F5F1ED","--wabbit-text-secondary":"#A39C94","--wabbit-text-muted":"#6B6560","--wabbit-border-subtle":"#3D3935","--wabbit-primary":e}:{"--wabbit-bg-base":"#FAF8F6","--wabbit-bg-elevated":"#FFFFFF","--wabbit-bg-hover":"#F2F0EE","--wabbit-text-primary":"#2D2826","--wabbit-text-secondary":"#5A5450","--wabbit-text-muted":"#8A847E","--wabbit-border-subtle":"#E6E3E0","--wabbit-primary":e},r=`\n :root {\n ${Object.entries(a).map(([e,t])=>`${e}: ${t};`).join("\n ")}\n }\n\n /* Chat Bubble */\n .wabbit-chat-bubble {\n position: fixed;\n z-index: 9999;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n border: none;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n color: white;\n font-size: 24px;\n }\n\n .wabbit-chat-bubble:hover {\n transform: scale(1.1);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n\n .wabbit-chat-bubble:active {\n transform: scale(0.95);\n }\n\n .wabbit-chat-bubble.bottom-right {\n bottom: 20px;\n right: 20px;\n }\n\n .wabbit-chat-bubble.bottom-left {\n bottom: 20px;\n left: 20px;\n }\n\n /* Chat Panel */\n .wabbit-chat-panel {\n position: fixed;\n z-index: 9998;\n width: 380px;\n max-width: calc(100vw - 40px);\n height: 600px;\n max-height: calc(100vh - 100px);\n background: var(--wabbit-bg-elevated);\n border: 1px solid var(--wabbit-border-subtle);\n border-radius: 16px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--wabbit-text-primary);\n }\n\n .wabbit-chat-panel.bottom-right {\n bottom: 90px;\n right: 20px;\n }\n\n .wabbit-chat-panel.bottom-left {\n bottom: 90px;\n left: 20px;\n }\n\n @media (max-width: 480px) {\n .wabbit-chat-panel {\n width: calc(100vw - 20px);\n height: calc(100vh - 20px);\n max-height: calc(100vh - 20px);\n bottom: 10px !important;\n left: 10px !important;\n right: 10px !important;\n border-radius: 12px;\n }\n }\n\n /* Panel Header */\n .wabbit-chat-panel-header {\n background: rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n border-bottom: 1px solid var(--wabbit-border-subtle);\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .wabbit-chat-panel-header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .wabbit-chat-panel-header-icon {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 16px;\n font-weight: 600;\n }\n\n .wabbit-chat-panel-header-text h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--wabbit-text-primary);\n }\n\n .wabbit-chat-panel-header-text p {\n margin: 0;\n font-size: 12px;\n color: var(--wabbit-text-muted);\n }\n\n .wabbit-chat-panel-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--wabbit-text-secondary);\n font-size: 24px;\n line-height: 1;\n padding: 4px;\n transition: color 0.2s;\n }\n\n .wabbit-chat-panel-close:hover {\n color: var(--wabbit-text-primary);\n }\n\n /* Messages Area */\n .wabbit-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .wabbit-chat-message {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .wabbit-chat-message-user {\n align-items: flex-end;\n }\n\n .wabbit-chat-message-assistant {\n align-items: flex-start;\n }\n\n .wabbit-chat-message-system {\n align-items: center;\n }\n\n .wabbit-chat-message-bubble {\n max-width: 85%;\n padding: 12px 16px;\n border-radius: 16px;\n word-wrap: break-word;\n white-space: pre-wrap;\n }\n\n .wabbit-chat-message-user .wabbit-chat-message-bubble {\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n color: white;\n border-bottom-right-radius: 4px;\n }\n\n .wabbit-chat-message-assistant .wabbit-chat-message-bubble {\n background: var(--wabbit-bg-hover);\n color: var(--wabbit-text-primary);\n border: 1px solid var(--wabbit-border-subtle);\n border-bottom-left-radius: 4px;\n }\n\n .wabbit-chat-message-system .wabbit-chat-message-bubble {\n background: rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n border: 1px solid rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.3);\n color: var(--wabbit-primary);\n text-align: center;\n font-size: 12px;\n padding: 8px 12px;\n }\n\n .wabbit-chat-message-content {\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* Typing Indicator */\n .wabbit-chat-typing {\n display: flex;\n gap: 4px;\n padding: 12px 16px;\n }\n\n .wabbit-chat-typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--wabbit-text-muted);\n animation: wabbit-typing 1.4s infinite;\n }\n\n .wabbit-chat-typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n .wabbit-chat-typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n @keyframes wabbit-typing {\n 0%, 60%, 100% {\n transform: translateY(0);\n opacity: 0.7;\n }\n 30% {\n transform: translateY(-10px);\n opacity: 1;\n }\n }\n\n /* Input Area */\n .wabbit-chat-input-area {\n border-top: 1px solid var(--wabbit-border-subtle);\n padding: 12px;\n background: var(--wabbit-bg-elevated);\n }\n\n .wabbit-chat-input-wrapper {\n display: flex;\n gap: 8px;\n align-items: flex-end;\n }\n\n .wabbit-chat-input {\n flex: 1;\n resize: none;\n background: var(--wabbit-bg-hover);\n border: 1px solid var(--wabbit-border-subtle);\n border-radius: 12px;\n padding: 10px 12px;\n color: var(--wabbit-text-primary);\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n min-height: 44px;\n max-height: 120px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .wabbit-chat-input:focus {\n outline: none;\n border-color: var(--wabbit-primary);\n box-shadow: 0 0 0 3px rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n }\n\n .wabbit-chat-input::placeholder {\n color: var(--wabbit-text-muted);\n }\n\n .wabbit-chat-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-chat-send-button {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n border: none;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s, transform 0.2s;\n flex-shrink: 0;\n }\n\n .wabbit-chat-send-button:hover:not(:disabled) {\n opacity: 0.9;\n transform: scale(1.05);\n }\n\n .wabbit-chat-send-button:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n .wabbit-chat-send-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-chat-send-icon {\n width: 20px;\n height: 20px;\n }\n\n /* Scrollbar */\n .wabbit-chat-messages::-webkit-scrollbar {\n width: 6px;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-thumb {\n background: var(--wabbit-border-subtle);\n border-radius: 3px;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--wabbit-text-muted);\n }\n\n /* Animations */\n @keyframes wabbit-fade-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .wabbit-chat-panel {\n animation: wabbit-fade-in 0.3s ease-out;\n }\n\n .wabbit-chat-message {\n animation: wabbit-fade-in 0.2s ease-out;\n }\n\n /* ========================================\n * INLINE MODE STYLES\n * ======================================== */\n\n /* Inline Chat Panel - renders inside container instead of fixed position */\n .wabbit-chat-panel.wabbit-chat-panel-inline {\n position: relative !important;\n width: 100%;\n height: 100%;\n min-height: 400px;\n max-height: none;\n max-width: none;\n bottom: auto !important;\n right: auto !important;\n left: auto !important;\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: none; /* Disable slide-in animation for inline */\n }\n\n /* Inline mode messages area fills available space */\n .wabbit-chat-panel-inline .wabbit-chat-messages {\n flex: 1;\n min-height: 200px;\n }\n\n /* Full-height variant for inline mode (used in standalone chat pages) */\n .wabbit-chat-panel-inline.wabbit-chat-panel-fullheight {\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n }\n\n /* Mobile responsive for inline mode */\n @media (max-width: 480px) {\n .wabbit-chat-panel.wabbit-chat-panel-inline {\n border-radius: 0;\n min-height: 300px;\n }\n }\n `,s=document.createElement("style");s.id=n,s.setAttribute("data-wabbit","true"),s.textContent=r,document.head.appendChild(s)}function w(e,t){const n=e.replace("#",""),i=parseInt(n.substr(0,2),16),a=parseInt(n.substr(2,2),16),r=parseInt(n.substr(4,2),16),s=Math.max(0,Math.min(255,Math.round(i+(255-i)*t))),o=Math.max(0,Math.min(255,Math.round(a+(255-a)*t))),l=Math.max(0,Math.min(255,Math.round(r+(255-r)*t)));return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}`}class f{constructor(e){this.wsClient=null,this.bubble=null,this.panel=null,this.isOpen=!1,this.cleanup=[],this.themeCleanup=null,this.onChatReadyCallback=null,this.chatReadyFired=!1,this.config=e,this.onChatReadyCallback=e.onChatReady||null}async init(){await new Promise(e=>{d(()=>{e()})});const e="inline"===this.config.mode;let t=null;if(e&&(t=this.resolveContainer(),!t))return void console.error(`[Wabbit] Container not found: ${this.config.container}`);g(this.config.primaryColor||"#6366f1",this.config.theme),this.setupThemeWatcher();const n=this.getWebSocketUrl();this.wsClient=new l(this.config.apiKey||"",n,null),this.setupWebSocketHandlers(),e||(this.bubble=new b({position:this.config.position||"bottom-right",onClick:()=>this.toggle()})),this.panel=new m({position:this.config.position||"bottom-right",welcomeMessage:this.config.welcomeMessage,placeholder:this.config.placeholder,onSendMessage:e=>this.handleSendMessage(e),onClose:()=>this.close(),disabled:!0,mode:this.config.mode||"widget",container:t||void 0,showHeader:this.config.showHeader,headerTitle:this.config.headerTitle}),this.bubble&&this.bubble.render(),this.panel.render(),e?this.isOpen=!0:(this.panel&&this.panel.hide(),this.bubble&&this.bubble.show(),this.isOpen=!1,this.handleTriggerType()),await this.wsClient.connect()}resolveContainer(){if(!this.config.container)return null;const e=this.config.container,t=e.startsWith("#")?e.slice(1):e;return document.getElementById(t)||document.querySelector(e)}setupWebSocketHandlers(){this.wsClient&&(this.wsClient.onWelcome=(e,t,n)=>{console.log("[Wabbit] Chat connected:",e),this.panel&&(this.panel.setDisabled(!1),n&&this.panel.addSystemMessage(n)),!this.chatReadyFired&&this.onChatReadyCallback&&(this.chatReadyFired=!0,requestAnimationFrame(()=>{console.log("[Wabbit] Chat ready, firing onChatReady callback"),this.onChatReadyCallback&&this.onChatReadyCallback()}))},this.wsClient.onMessageHistory=e=>{console.log("[Wabbit] Loaded message history:",e.length),this.panel&&this.panel.setMessages(e)},this.wsClient.onMessage=e=>{this.panel&&(this.panel.addMessage(e),this.panel.setWaitingForResponse(!1))},this.wsClient.onError=e=>{console.error("[Wabbit] Chat error:",e),this.panel&&(this.panel.addSystemMessage(`Error: ${e}`),this.panel.setWaitingForResponse(!1))},this.wsClient.onStatusChange=e=>{this.panel&&this.panel.setDisabled("connected"!==e)},this.wsClient.onDisconnect=()=>{this.panel&&(this.panel.addSystemMessage("Disconnected from chat service"),this.panel.setDisabled(!0))})}handleTriggerType(){switch(this.config.triggerType||"button"){case"auto":const e=this.config.triggerDelay||5e3;setTimeout(()=>{this.open()},e);break;case"scroll":let t=!1;const n=()=>{t||(t=!0,this.open(),window.removeEventListener("scroll",n))};window.addEventListener("scroll",n),this.cleanup.push(()=>{window.removeEventListener("scroll",n)})}}getWebSocketUrl(){if(this.config.wsUrl)return this.config.wsUrl;const e=this.config.apiUrl||"https://platform.insourcedata.ai";return`${e.startsWith("https")?"wss":"ws"}://${e.replace(/^https?:\/\//,"").replace(/\/$/,"")}/ws/chat`}handleSendMessage(e){if(!this.wsClient)return;const t={id:`user-${Date.now()}`,role:"user",content:e,timestamp:new Date};this.panel&&(this.panel.addMessage(t),this.panel.setWaitingForResponse(!0)),this.wsClient.sendMessage(e),this.config.onUserMessage&&this.config.onUserMessage(e)}open(){"inline"!==this.config.mode&&(this.isOpen||(this.isOpen=!0,this.panel&&this.panel.show(),this.bubble&&this.bubble.hide()))}close(){"inline"!==this.config.mode&&this.isOpen&&(this.isOpen=!1,this.panel&&this.panel.hide(),this.bubble&&this.bubble.show())}toggle(){"inline"!==this.config.mode&&(this.isOpen?this.close():this.open())}sendMessage(e){this.handleSendMessage(e)}setupThemeWatcher(){"auto"===(this.config.theme||"auto")&&(this.themeCleanup=p(()=>{g(this.config.primaryColor||"#6366f1","auto")}))}destroy(){this.cleanup.forEach(e=>e()),this.cleanup=[],this.themeCleanup&&(this.themeCleanup(),this.themeCleanup=null),this.wsClient&&(this.wsClient.disconnect(),this.wsClient=null),this.bubble&&(this.bubble.destroy(),this.bubble=null),this.panel&&(this.panel.destroy(),this.panel=null)}}var y=Object.freeze({__proto__:null,ChatWidget:f});class v{constructor(e){this.styles=e}render(e,t){const n=this.styles.getColors(t),i=e.fields;let a='<form class="wabbit-form" data-wabbit-form-instance="true">';return i.forEach(e=>{a+=this.renderField(e,n)}),a+='<button\n type="submit"\n class="wabbit-submit"\n >Submit</button>',a+='<div class="wabbit-message" style="display: none;"></div>',a+="</form>",a}renderField(e,t){let n='<div class="wabbit-field">';const i=["text","email","number","textarea","select"].includes(e.type)?`wabbit-input-${e.id}`:void 0;switch(n+=`<label${i?` for="${c(i)}"`:""} style="display: block; font-weight: 600; margin-bottom: 0.5rem; color: ${t.labelColor} !important; font-size: 0.875rem;">${c(e.label)}${e.required?' <span style="color: #E07A5F;">*</span>':""}</label>`,e.type){case"text":case"email":case"number":i&&(n+=this.renderTextInput(e,t,i));break;case"textarea":i&&(n+=this.renderTextarea(e,t,i));break;case"select":i&&(n+=this.renderSelect(e,t,i));break;case"radio":n+=this.renderRadio(e,t);break;case"checkbox":n+=this.renderCheckbox(e,t);break;case"rating":n+=this.renderRating(e,t)}return n+="</div>",n}renderTextInput(e,t,n){return`<input\n type="${e.type}"\n id="${c(n)}"\n name="${c(e.id)}"\n placeholder="${e.placeholder?c(e.placeholder):""}"\n ${e.required?"required":""}\n />`}renderTextarea(e,t,n){return`<textarea\n id="${c(n)}"\n name="${c(e.id)}"\n placeholder="${e.placeholder?c(e.placeholder):""}"\n ${e.required?"required":""}\n rows="4"\n ></textarea>`}renderSelect(e,t,n){if(!e.options||0===e.options.length)return"";let i=`<select id="${c(n)}" name="${c(e.id)}" ${e.required?"required":""}>`;return i+='<option value="">Select...</option>',e.options.forEach(e=>{i+=`<option value="${c(e)}">${c(e)}</option>`}),i+="</select>",i}renderRadio(e,t){if(!e.options||0===e.options.length)return"";let n='<div class="wabbit-radio-group">';return e.options.forEach((t,i)=>{const a=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="radio"\n name="${c(e.id)}"\n value="${c(t)}"\n id="${c(a)}"\n ${e.required&&0===i?"required":""}\n />\n <span>${c(t)}</span>\n </label>\n </div>`}),n+="</div>",n}renderCheckbox(e,t){if(!e.options||0===e.options.length)return"";let n='<div class="wabbit-checkbox-group">';return e.options.forEach((t,i)=>{const a=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="checkbox"\n name="${c(e.id)}[]"\n value="${c(t)}"\n id="${c(a)}"\n />\n <span>${c(t)}</span>\n </label>\n </div>`}),n+="</div>",n}renderRating(e,t){const n=e.max||5;let i='<div class="wabbit-rating">';for(let t=1;t<=n;t++){const n=`${e.id}_${t}`;i+=`<input\n type="radio"\n name="${c(e.id)}"\n value="${t}"\n id="${c(n)}"\n ${e.required&&1===t?"required":""}\n />`,i+=`<label for="${c(n)}">★</label>`}return i+="</div>",i}}class C{constructor(e,t){if(this.styleElement=null,this.currentTheme="light",this._primaryColor="#C15F3C",this.themes={dark:{formBg:"#1A1816",labelColor:"#F5F1ED",inputBg:"#2D2826",inputText:"#F5F1ED",inputBorder:"#3D3935",inputBorderFocus:"#C15F3C",placeholderColor:"#6B6560",radioColor:"#A39C94",ratingInactive:"#3D3935",errorBg:"rgba(224, 122, 95, 0.1)",errorColor:"#E07A5F",errorBorder:"#E07A5F",successBg:"rgba(132, 169, 140, 0.1)",successColor:"#84A98C",successBorder:"#84A98C",buttonBg:"#C15F3C",buttonBgHover:"#AB4E2F"},light:{formBg:"#FAF8F6",labelColor:"#2D2826",inputBg:"#FFFFFF",inputText:"#2D2826",inputBorder:"#D4CFCA",inputBorderFocus:"#C15F3C",placeholderColor:"#8A847E",radioColor:"#5A5450",ratingInactive:"#D4CFCA",errorBg:"rgba(193, 84, 56, 0.1)",errorColor:"#C15438",errorBorder:"#C15438",successBg:"rgba(92, 122, 99, 0.1)",successColor:"#5C7A63",successBorder:"#5C7A63",buttonBg:"#C15F3C",buttonBgHover:"#AB4E2F"}},this.styleId=t?`wabbit-form-styles-${t.replace(/[^a-zA-Z0-9]/g,"-")}`:`wabbit-form-styles-${Math.random().toString(36).substr(2,9)}`,e){this._primaryColor=e,this.themes.dark.inputBorderFocus=e,this.themes.light.inputBorderFocus=e,this.themes.dark.buttonBg=e,this.themes.light.buttonBg=e;const t=this.darkenColor(e,10);this.themes.dark.buttonBgHover=t,this.themes.light.buttonBgHover=t}this.injectStyles()}getColors(e){const t=e||this.currentTheme;return this.themes[t]}updateTheme(e){this.currentTheme=e,this.injectStyles()}updatePrimaryColor(e){this._primaryColor=e,this.themes.dark.inputBorderFocus=e,this.themes.light.inputBorderFocus=e,this.themes.dark.buttonBg=e,this.themes.light.buttonBg=e;const t=this.darkenColor(e,10);this.themes.dark.buttonBgHover=t,this.themes.light.buttonBgHover=t,this.injectStyles()}getPrimaryColor(){return this._primaryColor}darkenColor(e,t){if(e.startsWith("#")){const n=parseInt(e.slice(1),16);return`#${(Math.max(0,Math.floor((n>>16)*(1-t/100)))<<16|Math.max(0,Math.floor((n>>8&255)*(1-t/100)))<<8|Math.max(0,Math.floor((255&n)*(1-t/100)))).toString(16).padStart(6,"0")}`}return e}injectStyles(){this.styleElement=document.getElementById(this.styleId),this.styleElement||(this.styleElement=document.createElement("style"),this.styleElement.id=this.styleId,this.styleElement.setAttribute("data-wabbit","form-styles"),document.head.appendChild(this.styleElement));const e=this.getColors(),t=this.generateCSS(e);this.styleElement.textContent=t}generateCSS(e){return`\n /* Wabbit Form Styles */\n .wabbit-form {\n max-width: 600px;\n margin: 0 auto;\n font-family: Inter, system-ui, sans-serif;\n background-color: ${e.formBg};\n padding: 1.5rem;\n border-radius: 0.5rem;\n }\n\n .wabbit-field {\n margin-bottom: 1.5rem;\n }\n\n /* Label color is set via inline style in FormRenderer for theme-aware rendering */\n /* This ensures the correct theme color is applied at render time */\n\n .wabbit-field input[type="text"],\n .wabbit-field input[type="email"],\n .wabbit-field input[type="number"],\n .wabbit-field textarea,\n .wabbit-field select {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid ${e.inputBorder};\n border-radius: 0.5rem;\n font-size: 1rem;\n background-color: ${e.inputBg};\n color: ${e.inputText};\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .wabbit-field input[type="text"]:focus,\n .wabbit-field input[type="email"]:focus,\n .wabbit-field input[type="number"]:focus,\n .wabbit-field textarea:focus,\n .wabbit-field select:focus {\n outline: none;\n border-color: var(--wabbit-primary-color);\n box-shadow: 0 0 0 3px rgba(193, 95, 60, 0.1);\n }\n\n .wabbit-field input::placeholder,\n .wabbit-field textarea::placeholder {\n color: ${e.placeholderColor};\n opacity: 1;\n }\n\n .wabbit-field textarea {\n resize: vertical;\n }\n\n .wabbit-field .wabbit-radio-group,\n .wabbit-field .wabbit-checkbox-group {\n margin-bottom: 0.5rem;\n }\n\n .wabbit-field .wabbit-radio-group label,\n .wabbit-field .wabbit-checkbox-group label {\n display: flex;\n align-items: center;\n cursor: pointer;\n color: ${e.radioColor};\n margin-bottom: 0.5rem;\n }\n\n .wabbit-field input[type="radio"],\n .wabbit-field input[type="checkbox"] {\n margin-right: 0.5rem;\n accent-color: var(--wabbit-primary-color);\n }\n\n .wabbit-rating {\n display: flex;\n gap: 0.25rem;\n }\n\n .wabbit-rating input[type="radio"] {\n display: none;\n }\n\n .wabbit-rating label {\n cursor: pointer;\n font-size: 1.5rem;\n color: ${e.ratingInactive};\n transition: color 0.2s;\n }\n\n .wabbit-rating label:hover {\n color: var(--wabbit-primary-color);\n }\n\n .wabbit-rating input[type="radio"]:checked ~ label,\n .wabbit-rating label:has(+ input[type="radio"]:checked) {\n color: var(--wabbit-primary-color);\n }\n\n .wabbit-submit {\n width: 100%;\n padding: 0.75rem 1.5rem;\n background-color: var(--wabbit-primary-color);\n color: white;\n border: none;\n border-radius: 0.5rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s, transform 0.15s;\n }\n\n .wabbit-submit:hover:not(:disabled) {\n background-color: var(--wabbit-primary-color-hover);\n transform: translateY(-1px);\n }\n\n .wabbit-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .wabbit-message {\n display: none;\n margin-top: 1rem;\n padding: 0.75rem;\n border-radius: 0.5rem;\n }\n\n .wabbit-message.wabbit-message-success {\n background-color: ${e.successBg};\n color: ${e.successColor};\n border: 1px solid ${e.successBorder};\n }\n\n .wabbit-message.wabbit-message-error {\n background-color: ${e.errorBg};\n color: ${e.errorColor};\n border: 1px solid ${e.errorBorder};\n }\n `}destroy(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}}class x{constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.apiKey=e.apiKey,this.timeout=e.timeout||3e4}async get(e,t){return this.request("GET",e,void 0,t)}async post(e,t,n){return this.request("POST",e,t,n)}async request(e,t,n,i){const a=`${this.baseUrl}${t}`,r={"Content-Type":"application/json"};!1!==i?.requireAuth&&this.apiKey&&(r["X-API-Key"]=this.apiKey);const s=new AbortController,o=setTimeout(()=>s.abort(),this.timeout),l={method:e,headers:r,mode:"cors",signal:s.signal};n&&"GET"!==e&&(l.body=JSON.stringify(n));try{const e=await fetch(a,l);if(clearTimeout(o),!e.ok){let t;try{const n=await e.json();t=n.detail?n.detail:n.error?n.error:n.message?n.message:JSON.stringify(n)}catch{const n=await e.text();t=n||(e.statusText||"An error occurred")}return{success:!1,error:t}}return{success:!0,data:await e.json()}}catch(e){return clearTimeout(o),e instanceof Error&&"AbortError"===e.name?{success:!1,error:`Request timeout after ${this.timeout}ms`}:e instanceof TypeError&&e.message.includes("CORS")?{success:!1,error:"CORS error: Please check server configuration"}:{success:!1,error:e instanceof Error?e.message:"Unknown error"}}}}class E{constructor(e){if(this.container=null,this.formElement=null,this.currentTheme="light",this.themeCleanup=null,this.formObserver=null,this.config=e,!e.apiKey)throw new Error("FormWidget requires apiKey. Provide it in FormConfig or WabbitConfig.");const t=e.apiUrl||this.getApiUrlFromScript();this.apiClient=new x({baseUrl:t,apiKey:e.apiKey}),this.styles=new C(e.primaryColor,e.containerId),this.renderer=new v(this.styles)}init(){d(()=>{const e=this.config.theme||"auto";this.currentTheme="auto"===e?u():e,this.styles.updateTheme(this.currentTheme),this.setupThemeWatcher(),this.loadForm()})}async loadForm(){try{if(this.container=this.findContainer(),!this.container)throw new Error(`Container not found: ${this.config.containerId||"data-wabbit-form-id"}`);const e=await this.apiClient.get(`/api/forms/${this.config.formId}/definition`,{requireAuth:!1});if(!e.success||!e.data)throw new Error(e.error||"Failed to load form definition");const t=e.data,n=this.renderer.render(t,this.currentTheme);this.container.innerHTML=n;const i=this.config.primaryColor||"#C15F3C";this.container.style.setProperty("--wabbit-primary-color",i);const a=this.calculateHoverColor(i);if(this.container.style.setProperty("--wabbit-primary-color-hover",a),console.log(`[Wabbit] Form in container "${this.config.containerId}" using primary color: ${i}`),this.formElement=this.container.querySelector("form"),!this.formElement)throw new Error("Form element not found after rendering");this.attachSubmitHandler(t.settings.successMessage),this.setupRatingInteractions(),this.config.onLoad&&this.config.onLoad()}catch(e){console.error("[Wabbit] Form load error:",e),this.showError(e instanceof Error?e.message:"Failed to load form"),this.config.onError&&this.config.onError(e instanceof Error?e:new Error(String(e)))}}findContainer(){if(this.config.containerId){const e=document.getElementById(this.config.containerId)||document.querySelector(this.config.containerId);if(e)return e}const e=document.querySelector(`[data-wabbit-form-id="${this.config.formId}"]`);return e||null}attachSubmitHandler(e){this.formElement&&this.formElement.addEventListener("submit",async t=>{t.preventDefault(),await this.handleSubmit(e)})}setupRatingInteractions(){if(!this.formElement)return;this.formElement.querySelectorAll('.wabbit-rating input[type="radio"]').forEach(e=>{const t=this.formElement.querySelector(`label[for="${e.id}"]`);if(!t)return;const n=e;n.addEventListener("change",()=>{this.updateRatingStars(n)}),t.addEventListener("mouseenter",()=>{const e=this.styles.getColors(this.currentTheme);t.style.color=e.inputBorderFocus}),t.addEventListener("mouseleave",()=>{this.updateRatingStars(n)})})}updateRatingStars(e){if(!this.formElement)return;const t=e.name,n=this.styles.getColors(this.currentTheme),i=this.formElement.querySelectorAll(`input[name="${t}"]`),a=this.formElement.querySelectorAll(`label[for^="${t}_"]`);i.forEach(e=>{const t=Array.from(a).find(t=>t.getAttribute("for")===e.id);t&&(e.checked?t.style.color=n.inputBorderFocus:t.style.color=n.ratingInactive)})}async handleSubmit(e){if(!this.formElement)return;const t=this.formElement.querySelector(".wabbit-submit"),n=this.formElement.querySelector(".wabbit-message");if(t&&n){t.disabled=!0,t.textContent="Submitting...",n.style.display="none",n.className="wabbit-message";try{const i=new FormData(this.formElement),a={};for(const[e,t]of i.entries())if(e.endsWith("[]")){const n=e.replace("[]","");a[n]||(a[n]=[]),a[n].push(t)}else a[e]=t;const r=await this.apiClient.post(`/api/forms/${this.config.formId}/submit`,{responses:a,metadata:{referrer:document.referrer,userAgent:navigator.userAgent}},{requireAuth:!1});if(r.success&&r.data?.success){const i=r.data.message||e||"Thank you! Your submission has been received.";this.showSuccess(i,n),this.formElement.reset(),this.config.onSubmit&&this.config.onSubmit(a,r.data.submissionId),setTimeout(()=>{t.disabled=!1,t.textContent="Submit"},2e3)}else{const e=r.data?.error||r.error||"Failed to submit form",i=this.formatErrorMessage(e);this.showError(i,n),t.disabled=!1,t.textContent="Submit",this.config.onError&&this.config.onError(new Error(e))}}catch(e){console.error("[Wabbit] Submission error:",e);const i=e instanceof Error?e.message:"Network error. Please try again.",a=this.formatErrorMessage(i);this.showError(a,n),t.disabled=!1,t.textContent="Submit",this.config.onError&&this.config.onError(e instanceof Error?e:new Error(String(e)))}}}formatErrorMessage(e){if(!e)return"An error occurred. Please try again.";let t=e.replace(/^HTTP\s+\d+\s*/i,"").replace(/^\d+\s+[A-Z\s]+:\s*/i,"").replace(/\b\d{3}\s+[A-Z\s]+\b/gi,"").trim();return t&&0!==t.length?(t=t.replace(/^(Error|Failed|Error:)\s*/i,""),t):"An error occurred. Please try again."}showSuccess(e,t){const n=t||this.formElement?.querySelector(".wabbit-message");n&&(n.textContent=e,n.className="wabbit-message wabbit-message-success",n.style.display="block")}showError(e,t){if(this.container&&!t){const t=this.styles.getColors(this.currentTheme);return void(this.container.innerHTML=`<p style="color: ${t.errorColor}; padding: 1rem; border: 1px solid ${t.errorBorder}; border-radius: 0.5rem; background-color: ${t.errorBg};">${c(e)}</p>`)}const n=t||this.formElement?.querySelector(".wabbit-message");n&&(n.textContent=e,n.className="wabbit-message wabbit-message-error",n.style.display="block")}setupThemeWatcher(){const e=this.config.theme||"auto";"auto"===e?this.themeCleanup=p(e=>{this.currentTheme=e,this.updateFormTheme()}):(this.currentTheme=e,this.styles.updateTheme(e))}updateFormTheme(){if(this.styles.updateTheme(this.currentTheme),this.formElement){this.formElement.querySelectorAll('.wabbit-rating input[type="radio"]').forEach(e=>{e.checked&&this.updateRatingStars(e)})}}calculateHoverColor(e){if(e.startsWith("#")){const t=parseInt(e.slice(1),16);return`#${(Math.max(0,Math.floor(.9*(t>>16)))<<16|Math.max(0,Math.floor(.9*(t>>8&255)))<<8|Math.max(0,Math.floor(.9*(255&t)))).toString(16).padStart(6,"0")}`}return e}getApiUrlFromScript(){const e=document.currentScript||document.querySelector('script[src*="embed"]');if(e&&e instanceof HTMLScriptElement&&e.src)try{return new URL(e.src).origin}catch{}return"https://platform.insourcedata.ai"}destroy(){this.themeCleanup&&(this.themeCleanup(),this.themeCleanup=null),this.formObserver&&(this.formObserver.disconnect(),this.formObserver=null),this.styles&&this.styles.destroy(),this.container&&(this.container.innerHTML=""),this.container=null,this.formElement=null}}var k=Object.freeze({__proto__:null,FormWidget:E});class S{constructor(e){this.overlay=null,this.modal=null,this.isOpen=!1,this.config=e}show(e,t){this.isOpen||(this.onSubmitCallback=e,this.onDismissCallback=t,this.isOpen=!0,this.render())}hide(){this.isOpen&&(this.isOpen=!1,this.destroy())}render(){const e="dark"===u();this.overlay=document.createElement("div"),this.overlay.className="wabbit-email-capture-overlay",this.overlay.addEventListener("click",e=>{e.target===this.overlay&&this.handleDismiss()}),this.modal=document.createElement("div"),this.modal.className="wabbit-email-capture-modal "+(e?"dark":"");const t=(this.config.fields||["email"]).map(e=>this.renderField(e)).join("");this.modal.innerHTML=`\n <button class="wabbit-email-capture-close ${e?"dark":""}" aria-label="Close">\n <svg width="20" height="20" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />\n </svg>\n </button>\n <div class="wabbit-email-capture-content">\n <h2 class="wabbit-email-capture-title">\n ${this.config.title||"Save this conversation?"}\n </h2>\n <p class="wabbit-email-capture-description">\n ${this.config.description||"Enter your email to continue this chat later"}\n </p>\n <form class="wabbit-email-capture-form">\n ${t}\n <div class="wabbit-email-capture-checkbox">\n <input type="checkbox" id="wabbit-dont-show-again" />\n <label for="wabbit-dont-show-again">Don't show this again</label>\n </div>\n <div class="wabbit-email-capture-buttons">\n <button type="submit" class="wabbit-email-capture-button wabbit-email-capture-button-primary">\n Save Conversation\n </button>\n <button type="button" class="wabbit-email-capture-button wabbit-email-capture-button-secondary">\n Maybe Later\n </button>\n </div>\n </form>\n </div>\n `,this.attachEventListeners(),this.overlay.appendChild(this.modal),document.body.appendChild(this.overlay)}renderField(e){const t={email:{label:"Email",type:"email",placeholder:"your@email.com",required:!0},name:{label:"Name",type:"text",placeholder:"Your name",required:!1},company:{label:"Company",type:"text",placeholder:"Your company",required:!1}}[e];return`\n <div class="wabbit-email-capture-field">\n <label class="wabbit-email-capture-label" for="wabbit-field-${e}">\n ${t.label}\n </label>\n <input\n type="${t.type}"\n id="wabbit-field-${e}"\n name="${e}"\n placeholder="${t.placeholder}"\n class="wabbit-email-capture-input"\n ${t.required?"required":""}\n />\n <div class="wabbit-email-capture-error" id="wabbit-error-${e}" style="display: none;"></div>\n </div>\n `}attachEventListeners(){if(!this.modal)return;const e=this.modal.querySelector(".wabbit-email-capture-close");e&&e.addEventListener("click",()=>this.handleDismiss());const t=this.modal.querySelector("form");t&&t.addEventListener("submit",e=>this.handleSubmit(e));const n=this.modal.querySelector(".wabbit-email-capture-button-secondary");n&&n.addEventListener("click",()=>this.handleDismiss())}async handleSubmit(e){if(e.preventDefault(),!this.modal||!this.onSubmitCallback)return;const t=this.modal.querySelector("form");if(!t)return;const n=new FormData(t),i={email:n.get("email")||"",name:n.get("name")||void 0,company:n.get("company")||void 0};if(!i.email||!this.isValidEmail(i.email))return void this.showError("email","Please enter a valid email address");const a=t.querySelector("#wabbit-dont-show-again")?.checked||!1;this.setFormDisabled(!0);try{await this.onSubmitCallback(i,a),this.hide()}catch(e){this.showError("email",e instanceof Error?e.message:"Failed to save email"),this.setFormDisabled(!1)}}handleDismiss(){this.onDismissCallback&&this.onDismissCallback(),this.hide()}setFormDisabled(e){if(!this.modal)return;this.modal.querySelectorAll("input, button").forEach(t=>{t.style.opacity=e?"0.5":"1",t.style.pointerEvents=e?"none":"auto"});const t=this.modal.querySelector(".wabbit-email-capture-button-primary");t&&(t.disabled=e,t.textContent=e?"Saving...":"Save Conversation")}showError(e,t){if(!this.modal)return;const n=this.modal.querySelector(`#wabbit-error-${e}`);n&&(n.textContent=t,n.style.display="block")}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}destroy(){this.overlay&&(this.overlay.remove(),this.overlay=null),this.modal=null,this.isOpen=!1}}class ${constructor(e){this.messageCount=0,this.emailCaptured=!1,this.wsClient=null,this.config=e,this.modal=new S(e),this.onCaptureCallback=e.onCapture}init(){!function(e="#6366f1"){const t="wabbit-email-capture-styles",n=document.getElementById(t);n&&n.remove();const i=document.createElement("style");i.id=t,i.setAttribute("data-wabbit","email-capture-styles"),i.textContent=`\n /* Email Capture Modal Styles */\n .wabbit-email-capture-overlay {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n animation: wabbit-fade-in 0.2s ease-out;\n padding: 1rem;\n box-sizing: border-box;\n overflow-y: auto;\n }\n\n .wabbit-email-capture-modal {\n position: relative;\n background: white;\n border-radius: 0.5rem;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n padding: 1.5rem;\n width: calc(100% - 2rem);\n max-width: 28rem;\n margin: 1rem;\n animation: wabbit-slide-up 0.3s ease-out;\n box-sizing: border-box;\n overflow: hidden;\n }\n\n .wabbit-email-capture-modal.dark {\n background: #1f2937;\n color: #f9fafb;\n }\n\n .wabbit-email-capture-close {\n position: absolute;\n top: 1rem;\n right: 1rem;\n background: none;\n border: none;\n color: #6b7280;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.25rem;\n transition: all 0.2s;\n }\n\n .wabbit-email-capture-close:hover {\n color: #374151;\n background-color: #f3f4f6;\n }\n\n .wabbit-email-capture-close.dark:hover {\n color: #d1d5db;\n background-color: #374151;\n }\n\n .wabbit-email-capture-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-title {\n font-size: 1.25rem;\n font-weight: 600;\n color: #111827;\n margin-bottom: 0.5rem;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-title {\n color: #f9fafb;\n }\n\n .wabbit-email-capture-description {\n font-size: 0.875rem;\n color: #6b7280;\n margin-bottom: 1.5rem;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-description {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-form {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-label {\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-label {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-input {\n width: 100%;\n padding: 0.75rem;\n border: 1px solid #d1d5db;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n transition: all 0.2s;\n background: white;\n color: #111827;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-input {\n background: #374151;\n border-color: #4b5563;\n color: #f9fafb;\n }\n\n .wabbit-email-capture-input:focus {\n outline: none;\n border-color: ${e};\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n }\n\n .wabbit-email-capture-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-error {\n font-size: 0.875rem;\n color: #dc2626;\n margin-top: 0.25rem;\n }\n\n .wabbit-email-capture-checkbox {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .wabbit-email-capture-checkbox input[type="checkbox"] {\n width: 1rem;\n height: 1rem;\n accent-color: ${e};\n cursor: pointer;\n }\n\n .wabbit-email-capture-checkbox label {\n font-size: 0.875rem;\n color: #6b7280;\n cursor: pointer;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-checkbox label {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-buttons {\n display: flex;\n gap: 0.75rem;\n margin-top: 0.5rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-button {\n flex: 1;\n padding: 0.75rem 1.5rem;\n border: none;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-sizing: border-box;\n min-width: 0;\n }\n\n .wabbit-email-capture-button-primary {\n background-color: ${e};\n color: white;\n }\n\n .wabbit-email-capture-button-primary:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n }\n\n .wabbit-email-capture-button-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-button-secondary {\n background-color: white;\n color: #374151;\n border: 1px solid #d1d5db;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-button-secondary {\n background-color: #374151;\n color: #d1d5db;\n border-color: #4b5563;\n }\n\n .wabbit-email-capture-button-secondary:hover:not(:disabled) {\n background-color: #f9fafb;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-button-secondary:hover:not(:disabled) {\n background-color: #4b5563;\n }\n\n @keyframes wabbit-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes wabbit-slide-up {\n from {\n opacity: 0;\n transform: translateY(1rem);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,document.head.appendChild(i)}("#6366f1");if("true"===s("wabbit_email_capture_dismissed"))return void console.log("[Wabbit] Email capture dismissed by user");return"true"===s("wabbit_email_captured")?(this.emailCaptured=!0,void console.log("[Wabbit] Email already captured")):void 0}setWebSocketClient(e){this.wsClient=e}handleMessage(){if(this.emailCaptured)return;this.messageCount++;const e=this.config.triggerAfterMessages||3;this.messageCount>=e&&this.showModal()}showModal(){this.emailCaptured||this.modal.show((e,t)=>this.handleEmailSubmit(e,t),()=>this.handleDismiss())}async handleEmailSubmit(e,t){if(t&&o("wabbit_email_capture_dismissed","true"),this.wsClient&&this.wsClient.ws&&this.wsClient.ws.readyState===WebSocket.OPEN)return new Promise((t,n)=>{const i=setTimeout(()=>{n(new Error("Email capture timeout"))},5e3),a=r=>{try{const s=JSON.parse(r.data);"email_confirmed"===s.type&&(clearTimeout(i),this.wsClient.ws.removeEventListener("message",a),s.success?(this.emailCaptured=!0,o("wabbit_email_captured","true"),this.onCaptureCallback&&this.onCaptureCallback({email:e.email,name:e.name||"",company:e.company||""}),t()):n(new Error(s.message||"Failed to save email")))}catch(e){}};this.wsClient.ws.addEventListener("message",a),this.wsClient.ws.send(JSON.stringify({type:"provide_email",email:e.email,name:e.name,company:e.company}))});this.emailCaptured=!0,o("wabbit_email_captured","true"),this.onCaptureCallback&&this.onCaptureCallback({email:e.email,name:e.name||"",company:e.company||""})}handleDismiss(){}destroy(){this.modal&&this.modal.destroy(),this.wsClient=null}}var F=Object.freeze({__proto__:null,EmailCaptureWidget:$});function W(e){return i.init(e)}function M(){return i.getInstance()}function T(){return i.destroy()}function B(e,t){return i.getChatPageUrl(e,t)}function A(e,t){return i.openChatPage(e,t)}const I={init:W,getInstance:M,destroy:T,getChatPageUrl:B,openChatPage:A};e.ApiClient=x,e.ChatBubble=b,e.ChatPanel=m,e.ChatWebSocketClient=l,e.ChatWidget=f,e.EmailCaptureModal=S,e.EmailCaptureWidget=$,e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){this.events.has(e)||this.events.set(e,[]),this.events.get(e).push(t)}off(e,t){const n=this.events.get(e);if(n){const e=n.indexOf(t);e>-1&&n.splice(e,1)}}emit(e,...t){const n=this.events.get(e);n&&n.forEach(n=>{try{n(...t)}catch(t){console.error(`[Wabbit] Error in event handler for "${e}":`,t)}})}removeAllListeners(e){e?this.events.delete(e):this.events.clear()}listenerCount(e){return this.events.get(e)?.length||0}},e.FormRenderer=v,e.FormStyles=C,e.FormWidget=E,e.SafeStorage=a,e.Wabbit=i,e.createElement=h,e.default=I,e.destroy=T,e.detectTheme=u,e.escapeHtml=c,e.getChatPageUrl=B,e.getInstance=M,e.init=W,e.mergeConfig=n,e.onDOMReady=d,e.openChatPage=A,e.storage=r,e.validateConfig=t,e.watchTheme=p,Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Wabbit={})}(this,function(e){"use strict";function t(e){if(!e.apiKey)throw new Error("[Wabbit] API key is required");if("string"!=typeof e.apiKey)throw new Error("[Wabbit] API key must be a string");if(e.chat?.enabled){if(!e.chat.collectionId)throw new Error("[Wabbit] collectionId is required when chat is enabled");if("inline"===e.chat.mode&&!e.chat.container)throw new Error('[Wabbit] container is required when chat mode is "inline"')}if(e.forms?.enabled&&!e.forms.formId)throw new Error("[Wabbit] formId is required when forms is enabled")}function n(e){const t=function(e){if(e)return e;if("undefined"!=typeof window&&window.WABBIT_API_URL)return window.WABBIT_API_URL;if("undefined"!=typeof window){const e=window.location.hostname;if("localhost"===e||"127.0.0.1"===e||"0.0.0.0"===e)return"http://localhost:3000"}return"https://platform.insourcedata.ai"}(e.apiUrl),n=function(e,t){return e||("undefined"!=typeof window&&window.WABBIT_WS_URL?window.WABBIT_WS_URL:t&&(t.includes("localhost")||t.includes("127.0.0.1"))?"ws://localhost:8003/ws/chat":"wss://chat.insourcedata.ai/ws/chat")}(e.wsUrl,t);return{...e,apiUrl:t,wsUrl:n,chat:e.chat?{...e.chat,mode:e.chat.mode||"widget",position:e.chat.position||"bottom-right",triggerType:e.chat.triggerType||"button",theme:e.chat.theme||"auto",primaryColor:e.chat.primaryColor||"#6366f1",placeholder:e.chat.placeholder||"Type your message...",showHeader:e.chat.showHeader??!0,headerTitle:e.chat.headerTitle||"AI Assistant"}:void 0,forms:e.forms?{...e.forms,theme:e.forms.theme||"auto"}:void 0,emailCapture:e.emailCapture?{...e.emailCapture,triggerAfterMessages:e.emailCapture.triggerAfterMessages||3,fields:e.emailCapture.fields||["email"]}:void 0}}class i{constructor(e){this.chatWidget=null,this.formsWidget=null,this.emailCaptureWidget=null,this.config=e}static init(e){if(i.instance)return console.warn("[Wabbit] SDK already initialized. Returning existing instance."),i.instance;t(e);const a=n(e);i.instance=new i(a);let r=null,s=!1;if(a.chat?.enabled&&a.chat){const t=a.chat,n=t.collectionId,o=(a.wsUrl||t.wsUrl||"wss://chat.insourcedata.ai/ws/chat").replace(/^wss:\/\//,"https://").replace(/^ws:\/\//,"http://").replace(/\/ws\/chat.*$/,""),l=fetch(`${o}/api/email-capture/config/${n}`).then(e=>e.json()).then(e=>e.success&&e.config?.enabled?e.config:null).catch(e=>(console.warn("[Wabbit] Failed to fetch email capture config:",e),null));Promise.resolve().then(function(){return y}).then(async({ChatWidget:n})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before chat widget could initialize");const o=await l;if(s=!!o,o){const{EmailCaptureWidget:e}=await Promise.resolve().then(function(){return F});if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before email capture widget could initialize");const t="message_count"===o.trigger?.type?o.trigger.messageCount:3,n=["email"];o.fields?.name?.enabled&&n.push("name"),o.fields?.company?.enabled&&n.push("company");const s=new e({enabled:!0,triggerAfterMessages:t,title:o.modal?.title,description:o.modal?.description,fields:n,onCapture:a.emailCapture?.onCapture});s.init(),i.instance.emailCaptureWidget=s,r=s,console.log("[Wabbit] Email capture initialized from server config")}const c=t.onChatReady||e.onChatReady,d={enabled:t.enabled,collectionId:t.collectionId,apiKey:t.apiKey||a.apiKey,apiUrl:t.apiUrl||a.apiUrl,wsUrl:a.wsUrl||t.wsUrl,mode:t.mode,container:t.container,position:t.position,triggerType:t.triggerType,triggerDelay:t.triggerDelay,theme:t.theme,primaryColor:t.primaryColor,welcomeMessage:t.welcomeMessage,placeholder:t.placeholder,showHeader:t.showHeader,headerTitle:t.headerTitle,onChatReady:()=>{if(r&&i.instance?.chatWidget){const e=i.instance.chatWidget;e.wsClient&&r.setWebSocketClient(e.wsClient)}c&&c()},onUserMessage:s?()=>{r&&r.handleMessage()}:void 0},h=new n(d);h.init(),i.instance.chatWidget=h})}return a.forms?.enabled&&a.forms&&Promise.resolve().then(function(){return S}).then(({FormWidget:e})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before form widget could initialize");const t=a.forms,n=new e({enabled:t.enabled,containerId:t.containerId,formId:t.formId,apiKey:t.apiKey||a.apiKey,apiUrl:t.apiUrl||a.apiUrl,theme:t.theme,primaryColor:t.primaryColor,onSubmit:t.onSubmit,onError:t.onError,onLoad:t.onLoad});n.init(),i.instance.formsWidget=n}),i.instance&&i.instance.initLegacyForms(e),e.onReady&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{e.onReady?.()}):e.onReady()),i.instance}static getInstance(){return i.instance}static destroy(){if(i.instance){i.instance.chatWidget&&i.instance.chatWidget.destroy(),i.instance.formsWidget&&i.instance.formsWidget.destroy();document.querySelectorAll("[data-wabbit-form-id]").forEach(e=>{const t=e.__wabbitFormWidget;t&&"function"==typeof t.destroy&&t.destroy()}),i.instance.legacyFormObserver&&(i.instance.legacyFormObserver.disconnect(),i.instance.legacyFormObserver=null),i.instance.emailCaptureWidget&&i.instance.emailCaptureWidget.destroy(),i.instance=null}}static getChatPageUrl(e,t){const n=t?.baseUrl||"undefined"!=typeof window&&window.WABBIT_BASE_URL||("undefined"==typeof window||"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname?"https://platform.insourcedata.ai":"http://localhost:3000"),i=new URL(`/c/${e}`,n);return t?.initialMessage&&i.searchParams.set("q",t.initialMessage),t?.theme&&"auto"!==t.theme&&i.searchParams.set("theme",t.theme),t?.primaryColor&&i.searchParams.set("color",t.primaryColor.replace("#","")),i.toString()}static openChatPage(e,t){const n=i.getChatPageUrl(e,t);window.open(n,"_blank","noopener,noreferrer")}getConfig(){return{...this.config}}get chat(){return this.chatWidget}get forms(){return this.formsWidget}get emailCapture(){return this.emailCaptureWidget}initLegacyForms(e){e.apiKey&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.initLegacyFormsOnReady(e)}):this.initLegacyFormsOnReady(e))}initLegacyFormsOnReady(e){const t=document.querySelectorAll("[data-wabbit-form-id]");0!==t.length&&(console.log("[Wabbit] Found",t.length,"legacy form container(s)"),t.forEach(t=>{const n=t.getAttribute("data-wabbit-form-id");n&&(t.querySelector('[data-wabbit-form-instance="true"]')?console.warn(`[Wabbit] Form ${n} already initialized`):Promise.resolve().then(function(){return S}).then(({FormWidget:i})=>{const a=new i({enabled:!0,containerId:void 0,formId:n,apiKey:e.apiKey,apiUrl:e.apiUrl,theme:e.forms?.theme||"auto",primaryColor:e.forms?.primaryColor,onSubmit:e.forms?.onSubmit,onError:e.forms?.onError,onLoad:e.forms?.onLoad});a.findContainer=()=>t,a.init(),t.__wabbitFormWidget=a}))}),this.setupLegacyFormObserver(e))}setupLegacyFormObserver(e){if(this.legacyFormObserver)return;const t=new MutationObserver(t=>{for(const n of t)if(n.addedNodes.length){if(Array.from(n.addedNodes).some(e=>{if(1!==e.nodeType)return!1;const t=e;return t.hasAttribute?.("data-wabbit-form-id")||t.querySelector?.("[data-wabbit-form-id]")})){console.log("[Wabbit] Detected dynamically added legacy form container"),this.initLegacyFormsOnReady(e);break}}});t.observe(document.body,{childList:!0,subtree:!0}),this.legacyFormObserver=t}}i.instance=null;class a{constructor(e=localStorage,t="wabbit_"){this.storage=e,this.prefix=t}get(e){try{const t=this.storage.getItem(this.prefix+e);return null===t?null:JSON.parse(t)}catch(t){return console.error(`[Wabbit] Failed to get storage item "${e}":`,t),null}}set(e,t){try{return this.storage.setItem(this.prefix+e,JSON.stringify(t)),!0}catch(t){return console.error(`[Wabbit] Failed to set storage item "${e}":`,t),!1}}remove(e){this.storage.removeItem(this.prefix+e)}clear(){if(void 0!==this.storage.length&&this.storage.key){const e=[];for(let t=0;t<this.storage.length;t++){const n=this.storage.key(t);n&&n.startsWith(this.prefix)&&e.push(n)}e.forEach(e=>this.storage.removeItem(e))}else{["session_id","email_capture_dismissed"].forEach(e=>this.remove(e))}}}const r=new a;function s(e){try{return localStorage.getItem("wabbit_"+e)}catch{return null}}function o(e,t){try{localStorage.setItem("wabbit_"+e,t)}catch(t){console.error(`[Wabbit] Failed to set storage item "${e}":`,t)}}class l{constructor(e,t,n=null){this.ws=null,this.status="disconnected",this.reconnectAttempts=0,this.maxReconnectAttempts=3,this.reconnectDelay=1e3,this.onStatusChange=null,this.onWelcome=null,this.onMessage=null,this.onMessageHistory=null,this.onError=null,this.onDisconnect=null,this.apiKey=e,this.wsUrl=t,this.sessionId=n||this.getStoredSessionId()}setStatus(e){this.status=e,this.onStatusChange&&this.onStatusChange(e)}getStatus(){return this.status}async connect(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;this.setStatus("connecting");const e=new URLSearchParams({api_key:this.apiKey});this.sessionId&&e.append("session_id",this.sessionId);const t=`${this.wsUrl}?${e.toString()}`;try{this.ws=new WebSocket(t),this.ws.onopen=()=>{this.setStatus("connected"),this.reconnectAttempts=0,console.log("[Wabbit] WebSocket connected")},this.ws.onmessage=e=>{try{const t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error("[Wabbit] Failed to parse message:",e)}},this.ws.onerror=e=>{console.error("[Wabbit] WebSocket error:",e),this.onError&&this.onError("Connection error occurred")},this.ws.onclose=()=>{console.log("[Wabbit] WebSocket closed"),this.setStatus("disconnected"),this.onDisconnect&&this.onDisconnect(),this.attemptReconnect()}}catch(e){console.error("[Wabbit] Failed to connect:",e),this.onError&&this.onError("Failed to establish connection"),this.setStatus("disconnected")}}handleMessage(e){switch(e.type){case"welcome":this.sessionId=e.session_id,this.sessionId&&r.set("session_id",this.sessionId),this.onWelcome&&this.onWelcome(e.session_id,e.collection_id,e.message||"Connected");break;case"message_history":if(this.onMessageHistory&&e.messages&&Array.isArray(e.messages)){const t=e.messages.map(e=>({id:e.id||crypto.randomUUID(),role:e.role,content:e.content,timestamp:new Date(e.timestamp),metadata:e.metadata}));this.onMessageHistory(t)}break;case"assistant_message":if(this.onMessage){const t={id:e.message_id||crypto.randomUUID(),role:"assistant",content:e.content,timestamp:new Date,metadata:e.metadata};this.onMessage(t)}break;case"error":this.onError&&this.onError(e.message||"An error occurred");break;default:console.log("[Wabbit] Unknown message type:",e.type)}}sendMessage(e,t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return void(this.onError&&this.onError("Not connected to chat service"));const n={type:"message",content:e,metadata:t||{}};this.ws.send(JSON.stringify(n))}disconnect(){this.ws&&(this.ws.close(),this.ws=null),this.setStatus("disconnected")}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return void console.log("[Wabbit] Max reconnect attempts reached");this.reconnectAttempts++,this.setStatus("reconnecting");const e=this.reconnectDelay*Math.pow(2,this.reconnectAttempts-1);console.log(`[Wabbit] Attempting to reconnect in ${e}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.connect()},e)}clearSession(){this.sessionId=null,r.remove("session_id")}getStoredSessionId(){return r.get("session_id")||null}}function c(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function d(e){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}function h(e,t,n){const i=document.createElement(e);return t&&Object.entries(t).forEach(([e,t])=>{i.setAttribute(e,t)}),n&&n.forEach(e=>{"string"==typeof e?i.appendChild(document.createTextNode(e)):i.appendChild(e)}),i}class b{constructor(e){this.element=null,this.options=e}render(){return this.element||(this.element=h("button",{class:`wabbit-chat-bubble ${this.options.position}`,"aria-label":"Open chat",type:"button"}),this.element.innerHTML='\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <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>\n </svg>\n ',this.element.addEventListener("click",this.options.onClick),document.body.appendChild(this.element)),this.element}show(){this.element&&(this.element.style.display="flex")}hide(){this.element&&(this.element.style.display="none")}destroy(){this.element&&(this.element.removeEventListener("click",this.options.onClick),this.element.remove(),this.element=null)}}class m{constructor(e){this.element=null,this.messagesContainer=null,this.inputElement=null,this.sendButton=null,this.messages=[],this.isWaitingForResponse=!1,this.closeButton=null,this.eventCleanup=[],this.options=e}render(){if(this.element)return this.element;const e="inline"===this.options.mode;if(this.element=h("div",{class:e?"wabbit-chat-panel wabbit-chat-panel-inline":`wabbit-chat-panel ${this.options.position}`}),!1!==this.options.showHeader){const t=this.createHeader(e);this.element.appendChild(t)}this.messagesContainer=h("div",{class:"wabbit-chat-messages"});const t=this.createInputArea();return this.element.appendChild(this.messagesContainer),this.element.appendChild(t),e&&this.options.container?(this.options.container.appendChild(this.element),this.element.style.display="flex"):(document.body.appendChild(this.element),this.element.style.display="none"),this.options.welcomeMessage&&this.addSystemMessage(this.options.welcomeMessage),setTimeout(()=>this.scrollToBottom(),100),this.element}createHeader(e){const t=h("div",{class:"wabbit-chat-panel-header"}),n=h("div",{class:"wabbit-chat-panel-header-title"}),i=h("div",{class:"wabbit-chat-panel-header-icon"});i.textContent="AI";const a=h("div",{class:"wabbit-chat-panel-header-text"}),r=h("h3");r.textContent=this.options.headerTitle||"AI Assistant";const s=h("p");if(s.textContent="Powered by Wabbit",a.appendChild(r),a.appendChild(s),n.appendChild(i),n.appendChild(a),t.appendChild(n),!e){this.closeButton=h("button",{class:"wabbit-chat-panel-close","aria-label":"Close chat",type:"button"}),this.closeButton.innerHTML="×";const e=this.options.onClose;this.closeButton.addEventListener("click",e),this.eventCleanup.push(()=>{this.closeButton?.removeEventListener("click",e)}),t.appendChild(this.closeButton)}return t}createInputArea(){const e=h("div",{class:"wabbit-chat-input-area"}),t=h("div",{class:"wabbit-chat-input-wrapper"});this.inputElement=document.createElement("textarea"),this.inputElement.className="wabbit-chat-input",this.inputElement.placeholder=this.options.placeholder||"Type your message...",this.inputElement.rows=1,this.inputElement.disabled=this.options.disabled||!1;const n=()=>{this.inputElement.style.height="auto",this.inputElement.style.height=`${Math.min(this.inputElement.scrollHeight,120)}px`,this.updateSendButtonState()};this.inputElement.addEventListener("input",n),this.eventCleanup.push(()=>{this.inputElement?.removeEventListener("input",n)});const i=e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSend())};this.inputElement.addEventListener("keydown",i),this.eventCleanup.push(()=>{this.inputElement?.removeEventListener("keydown",i)}),this.sendButton=h("button",{class:"wabbit-chat-send-button",type:"button","aria-label":"Send message"}),this.sendButton.innerHTML='\n <svg class="wabbit-chat-send-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="22" y1="2" x2="11" y2="13"></line>\n <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>\n </svg>\n ';const a=()=>this.handleSend();return this.sendButton.addEventListener("click",a),this.eventCleanup.push(()=>{this.sendButton?.removeEventListener("click",a)}),this.updateSendButtonState(),t.appendChild(this.inputElement),t.appendChild(this.sendButton),e.appendChild(t),e}addMessage(e){this.messages.push(e),this.renderMessage(e),this.scrollToBottom()}setMessages(e){this.messages=e,this.messagesContainer&&(this.messagesContainer.innerHTML="",e.forEach(e=>this.renderMessage(e)),setTimeout(()=>this.scrollToBottom(),100))}addSystemMessage(e){const t={id:`system-${Date.now()}`,role:"system",content:e,timestamp:new Date};this.addMessage(t)}setWaitingForResponse(e){if(this.isWaitingForResponse=e,this.messagesContainer){const t=this.messagesContainer.querySelector(".wabbit-chat-typing");if(t&&t.remove(),e){const e=h("div",{class:"wabbit-chat-typing"});e.innerHTML='\n <div class="wabbit-chat-typing-dot"></div>\n <div class="wabbit-chat-typing-dot"></div>\n <div class="wabbit-chat-typing-dot"></div>\n ',this.messagesContainer.appendChild(e),this.scrollToBottom()}}this.updateSendButtonState()}setDisabled(e){this.options.disabled=e,this.inputElement&&(this.inputElement.disabled=e,this.updateSendButtonState())}renderMessage(e){if(!this.messagesContainer)return;const t=h("div",{class:`wabbit-chat-message wabbit-chat-message-${e.role}`}),n=h("div",{class:"wabbit-chat-message-bubble"}),i=h("div",{class:"wabbit-chat-message-content"});"assistant"===e.role?i.innerHTML=this.formatMessage(e.content):i.textContent=e.content,n.appendChild(i),t.appendChild(n),this.messagesContainer.appendChild(t)}formatMessage(e){let t=c(e);return t=t.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),t=t.replace(/\*(.+?)\*/g,"<em>$1</em>"),t=t.replace(/`(.+?)`/g,'<code style="background: rgba(0,0,0,0.1); padding: 2px 4px; border-radius: 3px;">$1</code>'),t=t.replace(/\n/g,"<br>"),t}handleSend(){if(!this.inputElement||this.isWaitingForResponse)return;const e=this.inputElement.value.trim();e&&(this.inputElement.value="",this.inputElement.style.height="auto",this.options.onSendMessage(e))}updateSendButtonState(){if(!this.sendButton||!this.inputElement)return;const e=this.inputElement.value.trim().length>0,t=this.options.disabled||this.isWaitingForResponse||!e;t?this.sendButton.setAttribute("disabled","true"):this.sendButton.removeAttribute("disabled"),this.sendButton instanceof HTMLButtonElement&&(this.sendButton.disabled=t)}scrollToBottom(){this.messagesContainer&&(this.messagesContainer.scrollTop=this.messagesContainer.scrollHeight)}show(){this.element&&(this.element.style.display="flex",setTimeout(()=>{this.scrollToBottom(),this.inputElement&&this.inputElement.focus()},100))}hide(){this.element&&(this.element.style.display="none")}destroy(){this.eventCleanup.forEach(e=>e()),this.eventCleanup=[],this.element&&(this.element.remove(),this.element=null,this.messagesContainer=null,this.inputElement=null,this.sendButton=null,this.closeButton=null)}}function u(){const e=document.documentElement,t=e.getAttribute("data-theme");return"light"===t||"dark"===t?t:e.classList.contains("dark")?"dark":"light"}function p(e){const t=new MutationObserver(()=>{e(u())});t.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","class"]});const n=window.matchMedia("(prefers-color-scheme: dark)"),i=()=>{e(u())};return n.addEventListener("change",i),e(u()),()=>{t.disconnect(),n.removeEventListener("change",i)}}function g(e="#6366f1",t){const n="wabbit-chat-styles",i=document.getElementById(n);i&&i.remove();const a="dark"===("auto"!==t&&t?t:u())?{"--wabbit-bg-base":"#1A1816","--wabbit-bg-elevated":"#2D2826","--wabbit-bg-hover":"#3D3935","--wabbit-text-primary":"#F5F1ED","--wabbit-text-secondary":"#A39C94","--wabbit-text-muted":"#6B6560","--wabbit-border-subtle":"#3D3935","--wabbit-primary":e}:{"--wabbit-bg-base":"#FAF8F6","--wabbit-bg-elevated":"#FFFFFF","--wabbit-bg-hover":"#F2F0EE","--wabbit-text-primary":"#2D2826","--wabbit-text-secondary":"#5A5450","--wabbit-text-muted":"#8A847E","--wabbit-border-subtle":"#E6E3E0","--wabbit-primary":e},r=`\n :root {\n ${Object.entries(a).map(([e,t])=>`${e}: ${t};`).join("\n ")}\n }\n\n /* Chat Bubble */\n .wabbit-chat-bubble {\n position: fixed;\n z-index: 9999;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n border: none;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n color: white;\n font-size: 24px;\n }\n\n .wabbit-chat-bubble:hover {\n transform: scale(1.1);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n\n .wabbit-chat-bubble:active {\n transform: scale(0.95);\n }\n\n .wabbit-chat-bubble.bottom-right {\n bottom: 20px;\n right: 20px;\n }\n\n .wabbit-chat-bubble.bottom-left {\n bottom: 20px;\n left: 20px;\n }\n\n /* Chat Panel */\n .wabbit-chat-panel {\n position: fixed;\n z-index: 9998;\n width: 380px;\n max-width: calc(100vw - 40px);\n height: 600px;\n max-height: calc(100vh - 100px);\n background: var(--wabbit-bg-elevated);\n border: 1px solid var(--wabbit-border-subtle);\n border-radius: 16px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--wabbit-text-primary);\n }\n\n .wabbit-chat-panel.bottom-right {\n bottom: 90px;\n right: 20px;\n }\n\n .wabbit-chat-panel.bottom-left {\n bottom: 90px;\n left: 20px;\n }\n\n @media (max-width: 480px) {\n .wabbit-chat-panel {\n width: calc(100vw - 20px);\n height: calc(100vh - 20px);\n max-height: calc(100vh - 20px);\n bottom: 10px !important;\n left: 10px !important;\n right: 10px !important;\n border-radius: 12px;\n }\n }\n\n /* Panel Header */\n .wabbit-chat-panel-header {\n background: rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n border-bottom: 1px solid var(--wabbit-border-subtle);\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .wabbit-chat-panel-header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .wabbit-chat-panel-header-icon {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 16px;\n font-weight: 600;\n }\n\n .wabbit-chat-panel-header-text h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--wabbit-text-primary);\n }\n\n .wabbit-chat-panel-header-text p {\n margin: 0;\n font-size: 12px;\n color: var(--wabbit-text-muted);\n }\n\n .wabbit-chat-panel-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--wabbit-text-secondary);\n font-size: 24px;\n line-height: 1;\n padding: 4px;\n transition: color 0.2s;\n }\n\n .wabbit-chat-panel-close:hover {\n color: var(--wabbit-text-primary);\n }\n\n /* Messages Area */\n .wabbit-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .wabbit-chat-message {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .wabbit-chat-message-user {\n align-items: flex-end;\n }\n\n .wabbit-chat-message-assistant {\n align-items: flex-start;\n }\n\n .wabbit-chat-message-system {\n align-items: center;\n }\n\n .wabbit-chat-message-bubble {\n max-width: 85%;\n padding: 12px 16px;\n border-radius: 16px;\n word-wrap: break-word;\n white-space: pre-wrap;\n }\n\n .wabbit-chat-message-user .wabbit-chat-message-bubble {\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n color: white;\n border-bottom-right-radius: 4px;\n }\n\n .wabbit-chat-message-assistant .wabbit-chat-message-bubble {\n background: var(--wabbit-bg-hover);\n color: var(--wabbit-text-primary);\n border: 1px solid var(--wabbit-border-subtle);\n border-bottom-left-radius: 4px;\n }\n\n .wabbit-chat-message-system .wabbit-chat-message-bubble {\n background: rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n border: 1px solid rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.3);\n color: var(--wabbit-primary);\n text-align: center;\n font-size: 12px;\n padding: 8px 12px;\n }\n\n .wabbit-chat-message-content {\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* Typing Indicator */\n .wabbit-chat-typing {\n display: flex;\n gap: 4px;\n padding: 12px 16px;\n }\n\n .wabbit-chat-typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--wabbit-text-muted);\n animation: wabbit-typing 1.4s infinite;\n }\n\n .wabbit-chat-typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n .wabbit-chat-typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n @keyframes wabbit-typing {\n 0%, 60%, 100% {\n transform: translateY(0);\n opacity: 0.7;\n }\n 30% {\n transform: translateY(-10px);\n opacity: 1;\n }\n }\n\n /* Input Area */\n .wabbit-chat-input-area {\n border-top: 1px solid var(--wabbit-border-subtle);\n padding: 12px;\n background: var(--wabbit-bg-elevated);\n }\n\n .wabbit-chat-input-wrapper {\n display: flex;\n gap: 8px;\n align-items: flex-end;\n }\n\n .wabbit-chat-input {\n flex: 1;\n resize: none;\n background: var(--wabbit-bg-hover);\n border: 1px solid var(--wabbit-border-subtle);\n border-radius: 12px;\n padding: 10px 12px;\n color: var(--wabbit-text-primary);\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n min-height: 44px;\n max-height: 120px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .wabbit-chat-input:focus {\n outline: none;\n border-color: var(--wabbit-primary);\n box-shadow: 0 0 0 3px rgba(var(--wabbit-primary-rgb, 99, 102, 241), 0.1);\n }\n\n .wabbit-chat-input::placeholder {\n color: var(--wabbit-text-muted);\n }\n\n .wabbit-chat-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-chat-send-button {\n width: 44px;\n height: 44px;\n border-radius: 12px;\n background: linear-gradient(135deg, var(--wabbit-primary), ${w(e,.2)});\n border: none;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s, transform 0.2s;\n flex-shrink: 0;\n }\n\n .wabbit-chat-send-button:hover:not(:disabled) {\n opacity: 0.9;\n transform: scale(1.05);\n }\n\n .wabbit-chat-send-button:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n .wabbit-chat-send-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-chat-send-icon {\n width: 20px;\n height: 20px;\n }\n\n /* Scrollbar */\n .wabbit-chat-messages::-webkit-scrollbar {\n width: 6px;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-thumb {\n background: var(--wabbit-border-subtle);\n border-radius: 3px;\n }\n\n .wabbit-chat-messages::-webkit-scrollbar-thumb:hover {\n background: var(--wabbit-text-muted);\n }\n\n /* Animations */\n @keyframes wabbit-fade-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .wabbit-chat-panel {\n animation: wabbit-fade-in 0.3s ease-out;\n }\n\n .wabbit-chat-message {\n animation: wabbit-fade-in 0.2s ease-out;\n }\n\n /* ========================================\n * INLINE MODE STYLES\n * ======================================== */\n\n /* Inline Chat Panel - renders inside container instead of fixed position */\n .wabbit-chat-panel.wabbit-chat-panel-inline {\n position: relative !important;\n width: 100%;\n height: 100%;\n min-height: 400px;\n max-height: none;\n max-width: none;\n bottom: auto !important;\n right: auto !important;\n left: auto !important;\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: none; /* Disable slide-in animation for inline */\n }\n\n /* Inline mode messages area fills available space */\n .wabbit-chat-panel-inline .wabbit-chat-messages {\n flex: 1;\n min-height: 200px;\n }\n\n /* Full-height variant for inline mode (used in standalone chat pages) */\n .wabbit-chat-panel-inline.wabbit-chat-panel-fullheight {\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n }\n\n /* Mobile responsive for inline mode */\n @media (max-width: 480px) {\n .wabbit-chat-panel.wabbit-chat-panel-inline {\n border-radius: 0;\n min-height: 300px;\n }\n }\n `,s=document.createElement("style");s.id=n,s.setAttribute("data-wabbit","true"),s.textContent=r,document.head.appendChild(s)}function w(e,t){const n=e.replace("#",""),i=parseInt(n.substr(0,2),16),a=parseInt(n.substr(2,2),16),r=parseInt(n.substr(4,2),16),s=Math.max(0,Math.min(255,Math.round(i+(255-i)*t))),o=Math.max(0,Math.min(255,Math.round(a+(255-a)*t))),l=Math.max(0,Math.min(255,Math.round(r+(255-r)*t)));return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}`}class f{constructor(e){this.wsClient=null,this.bubble=null,this.panel=null,this.isOpen=!1,this.cleanup=[],this.themeCleanup=null,this.onChatReadyCallback=null,this.chatReadyFired=!1,this.config=e,this.onChatReadyCallback=e.onChatReady||null}async init(){await new Promise(e=>{d(()=>{e()})});const e="inline"===this.config.mode;let t=null;if(e&&(t=this.resolveContainer(),!t))return void console.error(`[Wabbit] Container not found: ${this.config.container}`);g(this.config.primaryColor||"#6366f1",this.config.theme),this.setupThemeWatcher();const n=this.getWebSocketUrl();this.wsClient=new l(this.config.apiKey||"",n,null),this.setupWebSocketHandlers(),e||(this.bubble=new b({position:this.config.position||"bottom-right",onClick:()=>this.toggle()})),this.panel=new m({position:this.config.position||"bottom-right",welcomeMessage:this.config.welcomeMessage,placeholder:this.config.placeholder,onSendMessage:e=>this.handleSendMessage(e),onClose:()=>this.close(),disabled:!0,mode:this.config.mode||"widget",container:t||void 0,showHeader:this.config.showHeader,headerTitle:this.config.headerTitle}),this.bubble&&this.bubble.render(),this.panel.render(),e?this.isOpen=!0:(this.panel&&this.panel.hide(),this.bubble&&this.bubble.show(),this.isOpen=!1,this.handleTriggerType()),await this.wsClient.connect()}resolveContainer(){if(!this.config.container)return null;const e=this.config.container,t=e.startsWith("#")?e.slice(1):e;return document.getElementById(t)||document.querySelector(e)}setupWebSocketHandlers(){this.wsClient&&(this.wsClient.onWelcome=(e,t,n)=>{console.log("[Wabbit] Chat connected:",e),this.panel&&(this.panel.setDisabled(!1),n&&this.panel.addSystemMessage(n)),!this.chatReadyFired&&this.onChatReadyCallback&&(this.chatReadyFired=!0,requestAnimationFrame(()=>{console.log("[Wabbit] Chat ready, firing onChatReady callback"),this.onChatReadyCallback&&this.onChatReadyCallback()}))},this.wsClient.onMessageHistory=e=>{console.log("[Wabbit] Loaded message history:",e.length),this.panel&&this.panel.setMessages(e)},this.wsClient.onMessage=e=>{this.panel&&(this.panel.addMessage(e),this.panel.setWaitingForResponse(!1))},this.wsClient.onError=e=>{console.error("[Wabbit] Chat error:",e),this.panel&&(this.panel.addSystemMessage(`Error: ${e}`),this.panel.setWaitingForResponse(!1))},this.wsClient.onStatusChange=e=>{this.panel&&this.panel.setDisabled("connected"!==e)},this.wsClient.onDisconnect=()=>{this.panel&&(this.panel.addSystemMessage("Disconnected from chat service"),this.panel.setDisabled(!0))})}handleTriggerType(){switch(this.config.triggerType||"button"){case"auto":const e=this.config.triggerDelay||5e3;setTimeout(()=>{this.open()},e);break;case"scroll":let t=!1;const n=()=>{t||(t=!0,this.open(),window.removeEventListener("scroll",n))};window.addEventListener("scroll",n),this.cleanup.push(()=>{window.removeEventListener("scroll",n)})}}getWebSocketUrl(){if(this.config.wsUrl)return this.config.wsUrl;const e=this.config.apiUrl||"https://platform.insourcedata.ai";return`${e.startsWith("https")?"wss":"ws"}://${e.replace(/^https?:\/\//,"").replace(/\/$/,"")}/ws/chat`}handleSendMessage(e){if(!this.wsClient)return;const t={id:`user-${Date.now()}`,role:"user",content:e,timestamp:new Date};this.panel&&(this.panel.addMessage(t),this.panel.setWaitingForResponse(!0)),this.wsClient.sendMessage(e),this.config.onUserMessage&&this.config.onUserMessage(e)}open(){"inline"!==this.config.mode&&(this.isOpen||(this.isOpen=!0,this.panel&&this.panel.show(),this.bubble&&this.bubble.hide()))}close(){"inline"!==this.config.mode&&this.isOpen&&(this.isOpen=!1,this.panel&&this.panel.hide(),this.bubble&&this.bubble.show())}toggle(){"inline"!==this.config.mode&&(this.isOpen?this.close():this.open())}sendMessage(e){this.handleSendMessage(e)}setupThemeWatcher(){"auto"===(this.config.theme||"auto")&&(this.themeCleanup=p(()=>{g(this.config.primaryColor||"#6366f1","auto")}))}destroy(){this.cleanup.forEach(e=>e()),this.cleanup=[],this.themeCleanup&&(this.themeCleanup(),this.themeCleanup=null),this.wsClient&&(this.wsClient.disconnect(),this.wsClient=null),this.bubble&&(this.bubble.destroy(),this.bubble=null),this.panel&&(this.panel.destroy(),this.panel=null)}}var y=Object.freeze({__proto__:null,ChatWidget:f});class v{constructor(e){this.styles=e}render(e,t){const n=this.styles.getColors(t),i=e.fields;let a='<form class="wabbit-form" data-wabbit-form-instance="true">';return i.forEach(e=>{a+=this.renderField(e,n)}),a+='<button\n type="submit"\n class="wabbit-submit"\n >Submit</button>',a+='<div class="wabbit-message" style="display: none;"></div>',a+="</form>",a}renderField(e,t){let n='<div class="wabbit-field">';const i=["text","email","number","textarea","select"].includes(e.type)?`wabbit-input-${e.id}`:void 0;switch(n+=`<label${i?` for="${c(i)}"`:""} style="display: block; font-weight: 600; margin-bottom: 0.5rem; color: ${t.labelColor} !important; font-size: 0.875rem;">${c(e.label)}${e.required?' <span style="color: #E07A5F;">*</span>':""}</label>`,e.type){case"text":case"email":case"number":i&&(n+=this.renderTextInput(e,t,i));break;case"textarea":i&&(n+=this.renderTextarea(e,t,i));break;case"select":i&&(n+=this.renderSelect(e,t,i));break;case"radio":n+=this.renderRadio(e,t);break;case"checkbox":n+=this.renderCheckbox(e,t);break;case"rating":n+=this.renderRating(e,t)}return n+="</div>",n}renderTextInput(e,t,n){return`<input\n type="${e.type}"\n id="${c(n)}"\n name="${c(e.id)}"\n placeholder="${e.placeholder?c(e.placeholder):""}"\n ${e.required?"required":""}\n />`}renderTextarea(e,t,n){return`<textarea\n id="${c(n)}"\n name="${c(e.id)}"\n placeholder="${e.placeholder?c(e.placeholder):""}"\n ${e.required?"required":""}\n rows="4"\n ></textarea>`}renderSelect(e,t,n){if(!e.options||0===e.options.length)return"";let i=`<select id="${c(n)}" name="${c(e.id)}" ${e.required?"required":""}>`;return i+='<option value="">Select...</option>',e.options.forEach(e=>{i+=`<option value="${c(e)}">${c(e)}</option>`}),i+="</select>",i}renderRadio(e,t){if(!e.options||0===e.options.length)return"";let n='<div class="wabbit-radio-group">';return e.options.forEach((t,i)=>{const a=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="radio"\n name="${c(e.id)}"\n value="${c(t)}"\n id="${c(a)}"\n ${e.required&&0===i?"required":""}\n />\n <span>${c(t)}</span>\n </label>\n </div>`}),n+="</div>",n}renderCheckbox(e,t){if(!e.options||0===e.options.length)return"";let n='<div class="wabbit-checkbox-group">';return e.options.forEach((t,i)=>{const a=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="checkbox"\n name="${c(e.id)}[]"\n value="${c(t)}"\n id="${c(a)}"\n />\n <span>${c(t)}</span>\n </label>\n </div>`}),n+="</div>",n}renderRating(e,t){const n=e.max||5;let i='<div class="wabbit-rating">';for(let t=1;t<=n;t++){const n=`${e.id}_${t}`;i+=`<input\n type="radio"\n name="${c(e.id)}"\n value="${t}"\n id="${c(n)}"\n ${e.required&&1===t?"required":""}\n />`,i+=`<label for="${c(n)}">★</label>`}return i+="</div>",i}}class C{constructor(e,t){if(this.styleElement=null,this.currentTheme="light",this._primaryColor="#C15F3C",this.themes={dark:{formBg:"#1A1816",labelColor:"#F5F1ED",inputBg:"#2D2826",inputText:"#F5F1ED",inputBorder:"#3D3935",inputBorderFocus:"#C15F3C",placeholderColor:"#6B6560",radioColor:"#A39C94",ratingInactive:"#3D3935",errorBg:"rgba(224, 122, 95, 0.1)",errorColor:"#E07A5F",errorBorder:"#E07A5F",successBg:"rgba(132, 169, 140, 0.1)",successColor:"#84A98C",successBorder:"#84A98C",buttonBg:"#C15F3C",buttonBgHover:"#AB4E2F"},light:{formBg:"#FAF8F6",labelColor:"#2D2826",inputBg:"#FFFFFF",inputText:"#2D2826",inputBorder:"#D4CFCA",inputBorderFocus:"#C15F3C",placeholderColor:"#8A847E",radioColor:"#5A5450",ratingInactive:"#D4CFCA",errorBg:"rgba(193, 84, 56, 0.1)",errorColor:"#C15438",errorBorder:"#C15438",successBg:"rgba(92, 122, 99, 0.1)",successColor:"#5C7A63",successBorder:"#5C7A63",buttonBg:"#C15F3C",buttonBgHover:"#AB4E2F"}},this.styleId=t?`wabbit-form-styles-${t.replace(/[^a-zA-Z0-9]/g,"-")}`:`wabbit-form-styles-${Math.random().toString(36).substr(2,9)}`,e){this._primaryColor=e,this.themes.dark.inputBorderFocus=e,this.themes.light.inputBorderFocus=e,this.themes.dark.buttonBg=e,this.themes.light.buttonBg=e;const t=this.darkenColor(e,10);this.themes.dark.buttonBgHover=t,this.themes.light.buttonBgHover=t}this.injectStyles()}getColors(e){const t=e||this.currentTheme;return this.themes[t]}updateTheme(e){this.currentTheme=e,this.injectStyles()}updatePrimaryColor(e){this._primaryColor=e,this.themes.dark.inputBorderFocus=e,this.themes.light.inputBorderFocus=e,this.themes.dark.buttonBg=e,this.themes.light.buttonBg=e;const t=this.darkenColor(e,10);this.themes.dark.buttonBgHover=t,this.themes.light.buttonBgHover=t,this.injectStyles()}getPrimaryColor(){return this._primaryColor}darkenColor(e,t){if(e.startsWith("#")){const n=parseInt(e.slice(1),16);return`#${(Math.max(0,Math.floor((n>>16)*(1-t/100)))<<16|Math.max(0,Math.floor((n>>8&255)*(1-t/100)))<<8|Math.max(0,Math.floor((255&n)*(1-t/100)))).toString(16).padStart(6,"0")}`}return e}injectStyles(){this.styleElement=document.getElementById(this.styleId),this.styleElement||(this.styleElement=document.createElement("style"),this.styleElement.id=this.styleId,this.styleElement.setAttribute("data-wabbit","form-styles"),document.head.appendChild(this.styleElement));const e=this.getColors(),t=this.generateCSS(e);this.styleElement.textContent=t}generateCSS(e){return`\n /* Wabbit Form Styles */\n .wabbit-form {\n max-width: 600px;\n margin: 0 auto;\n font-family: Inter, system-ui, sans-serif;\n background-color: ${e.formBg};\n padding: 1.5rem;\n border-radius: 0.5rem;\n }\n\n .wabbit-field {\n margin-bottom: 1.5rem;\n }\n\n /* Label color is set via inline style in FormRenderer for theme-aware rendering */\n /* This ensures the correct theme color is applied at render time */\n\n .wabbit-field input[type="text"],\n .wabbit-field input[type="email"],\n .wabbit-field input[type="number"],\n .wabbit-field textarea,\n .wabbit-field select {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid ${e.inputBorder};\n border-radius: 0.5rem;\n font-size: 1rem;\n background-color: ${e.inputBg};\n color: ${e.inputText};\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .wabbit-field input[type="text"]:focus,\n .wabbit-field input[type="email"]:focus,\n .wabbit-field input[type="number"]:focus,\n .wabbit-field textarea:focus,\n .wabbit-field select:focus {\n outline: none;\n border-color: var(--wabbit-primary-color);\n box-shadow: 0 0 0 3px rgba(193, 95, 60, 0.1);\n }\n\n .wabbit-field input::placeholder,\n .wabbit-field textarea::placeholder {\n color: ${e.placeholderColor};\n opacity: 1;\n }\n\n .wabbit-field textarea {\n resize: vertical;\n }\n\n .wabbit-field .wabbit-radio-group,\n .wabbit-field .wabbit-checkbox-group {\n margin-bottom: 0.5rem;\n }\n\n .wabbit-field .wabbit-radio-group label,\n .wabbit-field .wabbit-checkbox-group label {\n display: flex;\n align-items: center;\n cursor: pointer;\n color: ${e.radioColor};\n margin-bottom: 0.5rem;\n }\n\n .wabbit-field input[type="radio"],\n .wabbit-field input[type="checkbox"] {\n margin-right: 0.5rem;\n accent-color: var(--wabbit-primary-color);\n }\n\n .wabbit-rating {\n display: flex;\n gap: 0.25rem;\n }\n\n .wabbit-rating input[type="radio"] {\n display: none;\n }\n\n .wabbit-rating label {\n cursor: pointer;\n font-size: 1.5rem;\n color: ${e.ratingInactive};\n transition: color 0.2s;\n }\n\n .wabbit-rating label:hover {\n color: var(--wabbit-primary-color);\n }\n\n .wabbit-rating input[type="radio"]:checked ~ label,\n .wabbit-rating label:has(+ input[type="radio"]:checked) {\n color: var(--wabbit-primary-color);\n }\n\n .wabbit-submit {\n width: 100%;\n padding: 0.75rem 1.5rem;\n background-color: var(--wabbit-primary-color);\n color: white;\n border: none;\n border-radius: 0.5rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s, transform 0.15s;\n }\n\n .wabbit-submit:hover:not(:disabled) {\n background-color: var(--wabbit-primary-color-hover);\n transform: translateY(-1px);\n }\n\n .wabbit-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .wabbit-message {\n display: none;\n margin-top: 1rem;\n padding: 0.75rem;\n border-radius: 0.5rem;\n }\n\n .wabbit-message.wabbit-message-success {\n background-color: ${e.successBg};\n color: ${e.successColor};\n border: 1px solid ${e.successBorder};\n }\n\n .wabbit-message.wabbit-message-error {\n background-color: ${e.errorBg};\n color: ${e.errorColor};\n border: 1px solid ${e.errorBorder};\n }\n `}destroy(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}}class x{constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.apiKey=e.apiKey||"",this.timeout=e.timeout||3e4}async get(e,t){return this.request("GET",e,void 0,t)}async post(e,t,n){return this.request("POST",e,t,n)}async request(e,t,n,i){const a=`${this.baseUrl}${t}`,r={"Content-Type":"application/json"};!1!==i?.requireAuth&&this.apiKey&&(r["X-API-Key"]=this.apiKey);const s=new AbortController,o=setTimeout(()=>s.abort(),this.timeout),l={method:e,headers:r,mode:"cors",signal:s.signal};n&&"GET"!==e&&(l.body=JSON.stringify(n));try{const e=await fetch(a,l);if(clearTimeout(o),!e.ok){let t;try{const n=await e.json();t=n.detail?n.detail:n.error?n.error:n.message?n.message:JSON.stringify(n)}catch{const n=await e.text();t=n||(e.statusText||"An error occurred")}return{success:!1,error:t}}return{success:!0,data:await e.json()}}catch(e){return clearTimeout(o),e instanceof Error&&"AbortError"===e.name?{success:!1,error:`Request timeout after ${this.timeout}ms`}:e instanceof TypeError&&e.message.includes("CORS")?{success:!1,error:"CORS error: Please check server configuration"}:{success:!1,error:e instanceof Error?e.message:"Unknown error"}}}}class E{constructor(e){this.container=null,this.formElement=null,this.currentTheme="light",this.themeCleanup=null,this.formObserver=null,this.config=e;const t=e.apiUrl||this.getApiUrlFromScript();this.apiClient=new x({baseUrl:t,apiKey:e.apiKey}),this.styles=new C(e.primaryColor,e.containerId),this.renderer=new v(this.styles)}init(){d(()=>{const e=this.config.theme||"auto";this.currentTheme="auto"===e?u():e,this.styles.updateTheme(this.currentTheme),this.setupThemeWatcher(),this.loadForm()})}async loadForm(){try{if(this.container=this.findContainer(),!this.container)throw new Error(`Container not found: ${this.config.containerId||"data-wabbit-form-id"}`);const e=await this.apiClient.get(`/api/forms/${this.config.formId}/definition`,{requireAuth:!1});if(!e.success||!e.data)throw new Error(e.error||"Failed to load form definition");const t=e.data,n=this.renderer.render(t,this.currentTheme);this.container.innerHTML=n;const i=this.config.primaryColor||"#C15F3C";this.container.style.setProperty("--wabbit-primary-color",i);const a=this.calculateHoverColor(i);if(this.container.style.setProperty("--wabbit-primary-color-hover",a),console.log(`[Wabbit] Form in container "${this.config.containerId}" using primary color: ${i}`),this.formElement=this.container.querySelector("form"),!this.formElement)throw new Error("Form element not found after rendering");this.attachSubmitHandler(t.settings.successMessage),this.setupRatingInteractions(),this.config.onLoad&&this.config.onLoad()}catch(e){console.error("[Wabbit] Form load error:",e),this.showError(e instanceof Error?e.message:"Failed to load form"),this.config.onError&&this.config.onError(e instanceof Error?e:new Error(String(e)))}}findContainer(){if(this.config.containerId){const e=document.getElementById(this.config.containerId)||document.querySelector(this.config.containerId);if(e)return e}const e=document.querySelector(`[data-wabbit-form-id="${this.config.formId}"]`);return e||null}attachSubmitHandler(e){this.formElement&&this.formElement.addEventListener("submit",async t=>{t.preventDefault(),await this.handleSubmit(e)})}setupRatingInteractions(){if(!this.formElement)return;this.formElement.querySelectorAll('.wabbit-rating input[type="radio"]').forEach(e=>{const t=this.formElement.querySelector(`label[for="${e.id}"]`);if(!t)return;const n=e;n.addEventListener("change",()=>{this.updateRatingStars(n)}),t.addEventListener("mouseenter",()=>{const e=this.styles.getColors(this.currentTheme);t.style.color=e.inputBorderFocus}),t.addEventListener("mouseleave",()=>{this.updateRatingStars(n)})})}updateRatingStars(e){if(!this.formElement)return;const t=e.name,n=this.styles.getColors(this.currentTheme),i=this.formElement.querySelectorAll(`input[name="${t}"]`),a=this.formElement.querySelectorAll(`label[for^="${t}_"]`);i.forEach(e=>{const t=Array.from(a).find(t=>t.getAttribute("for")===e.id);t&&(e.checked?t.style.color=n.inputBorderFocus:t.style.color=n.ratingInactive)})}async handleSubmit(e){if(!this.formElement)return;const t=this.formElement.querySelector(".wabbit-submit"),n=this.formElement.querySelector(".wabbit-message");if(t&&n){t.disabled=!0,t.textContent="Submitting...",n.style.display="none",n.className="wabbit-message";try{const i=new FormData(this.formElement),a={};for(const[e,t]of i.entries())if(e.endsWith("[]")){const n=e.replace("[]","");a[n]||(a[n]=[]),a[n].push(t)}else a[e]=t;const r=await this.apiClient.post(`/api/forms/${this.config.formId}/submit`,{responses:a,metadata:{referrer:document.referrer,userAgent:navigator.userAgent}},{requireAuth:!1});if(r.success&&r.data?.success){const i=r.data.message||e||"Thank you! Your submission has been received.";this.showSuccess(i,n),this.formElement.reset(),this.config.onSubmit&&this.config.onSubmit(a,r.data.submissionId),setTimeout(()=>{t.disabled=!1,t.textContent="Submit"},2e3)}else{const e=r.data?.error||r.error||"Failed to submit form",i=this.formatErrorMessage(e);this.showError(i,n),t.disabled=!1,t.textContent="Submit",this.config.onError&&this.config.onError(new Error(e))}}catch(e){console.error("[Wabbit] Submission error:",e);const i=e instanceof Error?e.message:"Network error. Please try again.",a=this.formatErrorMessage(i);this.showError(a,n),t.disabled=!1,t.textContent="Submit",this.config.onError&&this.config.onError(e instanceof Error?e:new Error(String(e)))}}}formatErrorMessage(e){if(!e)return"An error occurred. Please try again.";let t=e.replace(/^HTTP\s+\d+\s*/i,"").replace(/^\d+\s+[A-Z\s]+:\s*/i,"").replace(/\b\d{3}\s+[A-Z\s]+\b/gi,"").trim();return t&&0!==t.length?(t=t.replace(/^(Error|Failed|Error:)\s*/i,""),t):"An error occurred. Please try again."}showSuccess(e,t){const n=t||this.formElement?.querySelector(".wabbit-message");n&&(n.textContent=e,n.className="wabbit-message wabbit-message-success",n.style.display="block")}showError(e,t){if(this.container&&!t){const t=this.styles.getColors(this.currentTheme);return void(this.container.innerHTML=`<p style="color: ${t.errorColor}; padding: 1rem; border: 1px solid ${t.errorBorder}; border-radius: 0.5rem; background-color: ${t.errorBg};">${c(e)}</p>`)}const n=t||this.formElement?.querySelector(".wabbit-message");n&&(n.textContent=e,n.className="wabbit-message wabbit-message-error",n.style.display="block")}setupThemeWatcher(){const e=this.config.theme||"auto";"auto"===e?this.themeCleanup=p(e=>{this.currentTheme=e,this.updateFormTheme()}):(this.currentTheme=e,this.styles.updateTheme(e))}updateFormTheme(){if(this.styles.updateTheme(this.currentTheme),this.formElement){this.formElement.querySelectorAll('.wabbit-rating input[type="radio"]').forEach(e=>{e.checked&&this.updateRatingStars(e)})}}calculateHoverColor(e){if(e.startsWith("#")){const t=parseInt(e.slice(1),16);return`#${(Math.max(0,Math.floor(.9*(t>>16)))<<16|Math.max(0,Math.floor(.9*(t>>8&255)))<<8|Math.max(0,Math.floor(.9*(255&t)))).toString(16).padStart(6,"0")}`}return e}getApiUrlFromScript(){const e=document.currentScript||document.querySelector('script[src*="embed"]');if(e&&e instanceof HTMLScriptElement&&e.src)try{return new URL(e.src).origin}catch{}return"https://platform.insourcedata.ai"}destroy(){this.themeCleanup&&(this.themeCleanup(),this.themeCleanup=null),this.formObserver&&(this.formObserver.disconnect(),this.formObserver=null),this.styles&&this.styles.destroy(),this.container&&(this.container.innerHTML=""),this.container=null,this.formElement=null}}var S=Object.freeze({__proto__:null,FormWidget:E});class k{constructor(e){this.overlay=null,this.modal=null,this.isOpen=!1,this.config=e}show(e,t){this.isOpen||(this.onSubmitCallback=e,this.onDismissCallback=t,this.isOpen=!0,this.render())}hide(){this.isOpen&&(this.isOpen=!1,this.destroy())}render(){const e="dark"===u();this.overlay=document.createElement("div"),this.overlay.className="wabbit-email-capture-overlay",this.overlay.addEventListener("click",e=>{e.target===this.overlay&&this.handleDismiss()}),this.modal=document.createElement("div"),this.modal.className="wabbit-email-capture-modal "+(e?"dark":"");const t=(this.config.fields||["email"]).map(e=>this.renderField(e)).join("");this.modal.innerHTML=`\n <button class="wabbit-email-capture-close ${e?"dark":""}" aria-label="Close">\n <svg width="20" height="20" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />\n </svg>\n </button>\n <div class="wabbit-email-capture-content">\n <h2 class="wabbit-email-capture-title">\n ${this.config.title||"Save this conversation?"}\n </h2>\n <p class="wabbit-email-capture-description">\n ${this.config.description||"Enter your email to continue this chat later"}\n </p>\n <form class="wabbit-email-capture-form">\n ${t}\n <div class="wabbit-email-capture-checkbox">\n <input type="checkbox" id="wabbit-dont-show-again" />\n <label for="wabbit-dont-show-again">Don't show this again</label>\n </div>\n <div class="wabbit-email-capture-buttons">\n <button type="submit" class="wabbit-email-capture-button wabbit-email-capture-button-primary">\n Save Conversation\n </button>\n <button type="button" class="wabbit-email-capture-button wabbit-email-capture-button-secondary">\n Maybe Later\n </button>\n </div>\n </form>\n </div>\n `,this.attachEventListeners(),this.overlay.appendChild(this.modal),document.body.appendChild(this.overlay)}renderField(e){const t={email:{label:"Email",type:"email",placeholder:"your@email.com",required:!0},name:{label:"Name",type:"text",placeholder:"Your name",required:!1},company:{label:"Company",type:"text",placeholder:"Your company",required:!1}}[e];return`\n <div class="wabbit-email-capture-field">\n <label class="wabbit-email-capture-label" for="wabbit-field-${e}">\n ${t.label}\n </label>\n <input\n type="${t.type}"\n id="wabbit-field-${e}"\n name="${e}"\n placeholder="${t.placeholder}"\n class="wabbit-email-capture-input"\n ${t.required?"required":""}\n />\n <div class="wabbit-email-capture-error" id="wabbit-error-${e}" style="display: none;"></div>\n </div>\n `}attachEventListeners(){if(!this.modal)return;const e=this.modal.querySelector(".wabbit-email-capture-close");e&&e.addEventListener("click",()=>this.handleDismiss());const t=this.modal.querySelector("form");t&&t.addEventListener("submit",e=>this.handleSubmit(e));const n=this.modal.querySelector(".wabbit-email-capture-button-secondary");n&&n.addEventListener("click",()=>this.handleDismiss())}async handleSubmit(e){if(e.preventDefault(),!this.modal||!this.onSubmitCallback)return;const t=this.modal.querySelector("form");if(!t)return;const n=new FormData(t),i={email:n.get("email")||"",name:n.get("name")||void 0,company:n.get("company")||void 0};if(!i.email||!this.isValidEmail(i.email))return void this.showError("email","Please enter a valid email address");const a=t.querySelector("#wabbit-dont-show-again")?.checked||!1;this.setFormDisabled(!0);try{await this.onSubmitCallback(i,a),this.hide()}catch(e){this.showError("email",e instanceof Error?e.message:"Failed to save email"),this.setFormDisabled(!1)}}handleDismiss(){this.onDismissCallback&&this.onDismissCallback(),this.hide()}setFormDisabled(e){if(!this.modal)return;this.modal.querySelectorAll("input, button").forEach(t=>{t.style.opacity=e?"0.5":"1",t.style.pointerEvents=e?"none":"auto"});const t=this.modal.querySelector(".wabbit-email-capture-button-primary");t&&(t.disabled=e,t.textContent=e?"Saving...":"Save Conversation")}showError(e,t){if(!this.modal)return;const n=this.modal.querySelector(`#wabbit-error-${e}`);n&&(n.textContent=t,n.style.display="block")}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}destroy(){this.overlay&&(this.overlay.remove(),this.overlay=null),this.modal=null,this.isOpen=!1}}class ${constructor(e){this.messageCount=0,this.emailCaptured=!1,this.wsClient=null,this.config=e,this.modal=new k(e),this.onCaptureCallback=e.onCapture}init(){!function(e="#6366f1"){const t="wabbit-email-capture-styles",n=document.getElementById(t);n&&n.remove();const i=document.createElement("style");i.id=t,i.setAttribute("data-wabbit","email-capture-styles"),i.textContent=`\n /* Email Capture Modal Styles */\n .wabbit-email-capture-overlay {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n animation: wabbit-fade-in 0.2s ease-out;\n padding: 1rem;\n box-sizing: border-box;\n overflow-y: auto;\n }\n\n .wabbit-email-capture-modal {\n position: relative;\n background: white;\n border-radius: 0.5rem;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n padding: 1.5rem;\n width: calc(100% - 2rem);\n max-width: 28rem;\n margin: 1rem;\n animation: wabbit-slide-up 0.3s ease-out;\n box-sizing: border-box;\n overflow: hidden;\n }\n\n .wabbit-email-capture-modal.dark {\n background: #1f2937;\n color: #f9fafb;\n }\n\n .wabbit-email-capture-close {\n position: absolute;\n top: 1rem;\n right: 1rem;\n background: none;\n border: none;\n color: #6b7280;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.25rem;\n transition: all 0.2s;\n }\n\n .wabbit-email-capture-close:hover {\n color: #374151;\n background-color: #f3f4f6;\n }\n\n .wabbit-email-capture-close.dark:hover {\n color: #d1d5db;\n background-color: #374151;\n }\n\n .wabbit-email-capture-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-title {\n font-size: 1.25rem;\n font-weight: 600;\n color: #111827;\n margin-bottom: 0.5rem;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-title {\n color: #f9fafb;\n }\n\n .wabbit-email-capture-description {\n font-size: 0.875rem;\n color: #6b7280;\n margin-bottom: 1.5rem;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-description {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-form {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-label {\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-label {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-input {\n width: 100%;\n padding: 0.75rem;\n border: 1px solid #d1d5db;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n transition: all 0.2s;\n background: white;\n color: #111827;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-input {\n background: #374151;\n border-color: #4b5563;\n color: #f9fafb;\n }\n\n .wabbit-email-capture-input:focus {\n outline: none;\n border-color: ${e};\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n }\n\n .wabbit-email-capture-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-error {\n font-size: 0.875rem;\n color: #dc2626;\n margin-top: 0.25rem;\n }\n\n .wabbit-email-capture-checkbox {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .wabbit-email-capture-checkbox input[type="checkbox"] {\n width: 1rem;\n height: 1rem;\n accent-color: ${e};\n cursor: pointer;\n }\n\n .wabbit-email-capture-checkbox label {\n font-size: 0.875rem;\n color: #6b7280;\n cursor: pointer;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-checkbox label {\n color: #d1d5db;\n }\n\n .wabbit-email-capture-buttons {\n display: flex;\n gap: 0.75rem;\n margin-top: 0.5rem;\n width: 100%;\n box-sizing: border-box;\n }\n\n .wabbit-email-capture-button {\n flex: 1;\n padding: 0.75rem 1.5rem;\n border: none;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-sizing: border-box;\n min-width: 0;\n }\n\n .wabbit-email-capture-button-primary {\n background-color: ${e};\n color: white;\n }\n\n .wabbit-email-capture-button-primary:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n }\n\n .wabbit-email-capture-button-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .wabbit-email-capture-button-secondary {\n background-color: white;\n color: #374151;\n border: 1px solid #d1d5db;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-button-secondary {\n background-color: #374151;\n color: #d1d5db;\n border-color: #4b5563;\n }\n\n .wabbit-email-capture-button-secondary:hover:not(:disabled) {\n background-color: #f9fafb;\n }\n\n .wabbit-email-capture-modal.dark .wabbit-email-capture-button-secondary:hover:not(:disabled) {\n background-color: #4b5563;\n }\n\n @keyframes wabbit-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes wabbit-slide-up {\n from {\n opacity: 0;\n transform: translateY(1rem);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `,document.head.appendChild(i)}("#6366f1");if("true"===s("wabbit_email_capture_dismissed"))return void console.log("[Wabbit] Email capture dismissed by user");return"true"===s("wabbit_email_captured")?(this.emailCaptured=!0,void console.log("[Wabbit] Email already captured")):void 0}setWebSocketClient(e){this.wsClient=e}handleMessage(){if(this.emailCaptured)return;this.messageCount++;const e=this.config.triggerAfterMessages||3;this.messageCount>=e&&this.showModal()}showModal(){this.emailCaptured||this.modal.show((e,t)=>this.handleEmailSubmit(e,t),()=>this.handleDismiss())}async handleEmailSubmit(e,t){if(t&&o("wabbit_email_capture_dismissed","true"),this.wsClient&&this.wsClient.ws&&this.wsClient.ws.readyState===WebSocket.OPEN)return new Promise((t,n)=>{const i=setTimeout(()=>{n(new Error("Email capture timeout"))},5e3),a=r=>{try{const s=JSON.parse(r.data);"email_confirmed"===s.type&&(clearTimeout(i),this.wsClient.ws.removeEventListener("message",a),s.success?(this.emailCaptured=!0,o("wabbit_email_captured","true"),this.onCaptureCallback&&this.onCaptureCallback({email:e.email,name:e.name||"",company:e.company||""}),t()):n(new Error(s.message||"Failed to save email")))}catch(e){}};this.wsClient.ws.addEventListener("message",a),this.wsClient.ws.send(JSON.stringify({type:"provide_email",email:e.email,name:e.name,company:e.company}))});this.emailCaptured=!0,o("wabbit_email_captured","true"),this.onCaptureCallback&&this.onCaptureCallback({email:e.email,name:e.name||"",company:e.company||""})}handleDismiss(){}destroy(){this.modal&&this.modal.destroy(),this.wsClient=null}}var F=Object.freeze({__proto__:null,EmailCaptureWidget:$});function W(e){return i.init(e)}function M(){return i.getInstance()}function T(){return i.destroy()}function A(e,t){return i.getChatPageUrl(e,t)}function B(e,t){return i.openChatPage(e,t)}const I={init:W,getInstance:M,destroy:T,getChatPageUrl:A,openChatPage:B};function L(){if(i.getInstance())return;const e=document.querySelectorAll("[data-wabbit-form-id]");if(0===e.length)return;console.log("[Wabbit] Auto-initializing",e.length,"form(s)");const t=(()=>{const e=document.currentScript||document.querySelector('script[src*="wabbit"]')||document.querySelector('script[src*="embed"]');if(e&&e instanceof HTMLScriptElement&&e.src)try{return new URL(e.src).origin}catch{}return"https://platform.insourcedata.ai"})();e.forEach(e=>{const n=e.getAttribute("data-wabbit-form-id");n&&(e.__wabbitFormWidget||Promise.resolve().then(function(){return S}).then(({FormWidget:i})=>{try{const a=new i({enabled:!0,formId:n,apiUrl:t,theme:"auto"});a.findContainer=()=>e,a.init(),e.__wabbitFormWidget=a,console.log("[Wabbit] Form auto-initialized:",n)}catch(e){console.error("[Wabbit] Failed to auto-initialize form:",n,e)}}))})}if("undefined"!=typeof document){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",L):L();const e=new MutationObserver(e=>{for(const t of e)if(t.addedNodes.length){if(Array.from(t.addedNodes).some(e=>{if(1!==e.nodeType)return!1;const t=e;return t.hasAttribute?.("data-wabbit-form-id")||t.querySelector?.("[data-wabbit-form-id]")})){console.log("[Wabbit] Detected dynamically added form container"),L();break}}});"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{e.observe(document.body,{childList:!0,subtree:!0})}):e.observe(document.body,{childList:!0,subtree:!0})}e.ApiClient=x,e.ChatBubble=b,e.ChatPanel=m,e.ChatWebSocketClient=l,e.ChatWidget=f,e.EmailCaptureModal=k,e.EmailCaptureWidget=$,e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){this.events.has(e)||this.events.set(e,[]),this.events.get(e).push(t)}off(e,t){const n=this.events.get(e);if(n){const e=n.indexOf(t);e>-1&&n.splice(e,1)}}emit(e,...t){const n=this.events.get(e);n&&n.forEach(n=>{try{n(...t)}catch(t){console.error(`[Wabbit] Error in event handler for "${e}":`,t)}})}removeAllListeners(e){e?this.events.delete(e):this.events.clear()}listenerCount(e){return this.events.get(e)?.length||0}},e.FormRenderer=v,e.FormStyles=C,e.FormWidget=E,e.SafeStorage=a,e.Wabbit=i,e.createElement=h,e.default=I,e.destroy=T,e.detectTheme=u,e.escapeHtml=c,e.getChatPageUrl=A,e.getInstance=M,e.init=W,e.mergeConfig=n,e.onDOMReady=d,e.openChatPage=B,e.storage=r,e.validateConfig=t,e.watchTheme=p,Object.defineProperty(e,"__esModule",{value:!0})});
2
2
  //# sourceMappingURL=wabbit-embed.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wabbit-embed.umd.min.js","sources":["../src/core/config.ts","../src/core/wabbit.ts","../src/utils/storage.ts","../src/chat/WebSocketClient.ts","../src/utils/dom.ts","../src/chat/ChatBubble.ts","../src/chat/ChatPanel.ts","../src/utils/theme.ts","../src/chat/styles.ts","../src/chat/ChatWidget.ts","../src/forms/FormRenderer.ts","../src/forms/FormStyles.ts","../src/core/api.ts","../src/forms/FormWidget.ts","../src/email-capture/EmailCaptureModal.ts","../src/email-capture/EmailCaptureWidget.ts","../src/email-capture/EmailCaptureStyles.ts","../src/index.ts","../src/core/events.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["validateConfig","config","apiKey","Error","chat","enabled","collectionId","mode","container","forms","formId","mergeConfig","apiUrl","userConfig","window","WABBIT_API_URL","hostname","location","detectApiUrl","wsUrl","WABBIT_WS_URL","includes","detectWebSocketUrl","position","triggerType","theme","primaryColor","placeholder","showHeader","headerTitle","undefined","emailCapture","triggerAfterMessages","fields","Wabbit","constructor","this","chatWidget","formsWidget","emailCaptureWidget","init","instance","console","warn","mergedConfig","emailCaptureWidgetRef","emailCaptureEnabled","emailCaptureConfigPromise","fetch","then","res","json","data","success","catch","err","Promise","resolve","ChatWidget$1","async","ChatWidget","serverEmailConfig","EmailCaptureWidget","EmailCaptureWidget$1","trigger","type","messageCount","name","push","company","title","modal","description","onCapture","log","userOnChatReady","onChatReady","chatConfig","triggerDelay","welcomeMessage","wsClient","setWebSocketClient","onUserMessage","handleMessage","FormWidget$1","FormWidget","formWidget","containerId","onSubmit","onError","onLoad","initLegacyForms","onReady","document","readyState","addEventListener","getInstance","destroy","querySelectorAll","forEach","widget","__wabbitFormWidget","legacyFormObserver","disconnect","getChatPageUrl","options","baseUrl","WABBIT_BASE_URL","url","URL","initialMessage","searchParams","set","replace","toString","openChatPage","open","getConfig","initLegacyFormsOnReady","containers","length","getAttribute","querySelector","findContainer","setupLegacyFormObserver","observer","MutationObserver","mutations","mutation","addedNodes","Array","from","some","node","nodeType","element","hasAttribute","observe","body","childList","subtree","SafeStorage","storage","localStorage","prefix","get","key","item","getItem","JSON","parse","error","value","setItem","stringify","remove","removeItem","clear","keys","i","startsWith","getStorageItem","setStorageItem","ChatWebSocketClient","sessionId","ws","status","reconnectAttempts","maxReconnectAttempts","reconnectDelay","onStatusChange","onWelcome","onMessage","onMessageHistory","onDisconnect","getStoredSessionId","setStatus","getStatus","connect","WebSocket","OPEN","CONNECTING","params","URLSearchParams","api_key","append","onopen","onmessage","event","onerror","onclose","attemptReconnect","session_id","collection_id","message","messages","isArray","map","msg","id","crypto","randomUUID","role","content","timestamp","Date","metadata","message_id","sendMessage","send","close","delay","Math","pow","setTimeout","clearSession","escapeHtml","text","div","createElement","textContent","innerHTML","onDOMReady","callback","tag","attributes","children","Object","entries","setAttribute","child","appendChild","createTextNode","ChatBubble","render","class","onClick","show","style","display","hide","removeEventListener","ChatPanel","messagesContainer","inputElement","sendButton","isWaitingForResponse","closeButton","eventCleanup","isInline","header","createHeader","inputArea","createInputArea","addSystemMessage","scrollToBottom","headerIcon","headerText","headerH3","headerP","closeHandler","onClose","inputWrapper","className","rows","disabled","inputHandler","height","min","scrollHeight","updateSendButtonState","keydownHandler","e","shiftKey","preventDefault","handleSend","sendClickHandler","addMessage","renderMessage","setMessages","now","setWaitingForResponse","waiting","existing","typing","setDisabled","messageDiv","bubble","formatMessage","formatted","trim","onSendMessage","hasText","removeAttribute","HTMLButtonElement","scrollTop","focus","cleanup","detectTheme","htmlEl","documentElement","dataTheme","classList","contains","watchTheme","attributeFilter","mediaQuery","matchMedia","handleChange","injectChatStyles","styleId","getElementById","cssVars","styles","join","adjustColor","head","color","amount","hex","r","parseInt","substr","g","b","newR","max","round","newG","newB","padStart","panel","isOpen","themeCleanup","onChatReadyCallback","chatReadyFired","isInlineMode","containerElement","resolveContainer","setupThemeWatcher","getWebSocketUrl","setupWebSocketHandlers","toggle","handleSendMessage","handleTriggerType","selector","idWithoutHash","slice","_collectionId","requestAnimationFrame","hasScrolled","scrollHandler","userMessage","fn","FormRenderer","formData","colors","getColors","html","field","renderField","inputId","labelColor","label","required","renderTextInput","renderTextarea","renderSelect","renderRadio","renderCheckbox","renderRating","_colors","opt","idx","radioId","checkboxId","starId","FormStyles","styleElement","currentTheme","_primaryColor","themes","dark","formBg","inputBg","inputText","inputBorder","inputBorderFocus","placeholderColor","radioColor","ratingInactive","errorBg","errorColor","errorBorder","successBg","successColor","successBorder","buttonBg","buttonBgHover","light","random","hoverColor","darkenColor","injectStyles","effectiveTheme","updateTheme","updatePrimaryColor","getPrimaryColor","percent","num","floor","css","generateCSS","ApiClient","timeout","endpoint","request","post","method","requestOptions","headers","requireAuth","controller","AbortController","timeoutId","abort","fetchOptions","signal","response","clearTimeout","ok","errorText","errorJson","detail","statusText","TypeError","formElement","formObserver","getApiUrlFromScript","apiClient","renderer","themeMode","loadForm","setProperty","calculateHoverColor","attachSubmitHandler","settings","successMessage","setupRatingInteractions","showError","String","dataAttrContainer","handleSubmit","input","updateRatingStars","checkedInput","fieldName","allInputs","allLabels","find","l","checked","submitButton","FormData","responses","endsWith","fieldId","referrer","userAgent","navigator","showSuccess","reset","submissionId","rawError","errorMessage","formatErrorMessage","updateFormTheme","scriptTag","currentScript","HTMLScriptElement","src","origin","EmailCaptureModal","overlay","onDismiss","onSubmitCallback","onDismissCallback","isDark","target","handleDismiss","formFields","attachEventListeners","email","form","maybeLaterButton","isValidEmail","dontShowAgain","setFormDisabled","opacity","pointerEvents","errorElement","test","emailCaptured","onCaptureCallback","injectEmailCaptureStyles","triggerAfter","showModal","handleEmailSubmit","reject","messageHandler","WabbitClass","WabbitSDK","events","Map","on","handler","has","off","handlers","index","indexOf","splice","emit","args","removeAllListeners","delete","listenerCount"],"mappings":"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"}
1
+ {"version":3,"file":"wabbit-embed.umd.min.js","sources":["../src/core/config.ts","../src/core/wabbit.ts","../src/utils/storage.ts","../src/chat/WebSocketClient.ts","../src/utils/dom.ts","../src/chat/ChatBubble.ts","../src/chat/ChatPanel.ts","../src/utils/theme.ts","../src/chat/styles.ts","../src/chat/ChatWidget.ts","../src/forms/FormRenderer.ts","../src/forms/FormStyles.ts","../src/core/api.ts","../src/forms/FormWidget.ts","../src/email-capture/EmailCaptureModal.ts","../src/email-capture/EmailCaptureWidget.ts","../src/email-capture/EmailCaptureStyles.ts","../src/index.ts","../src/core/events.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["validateConfig","config","apiKey","Error","chat","enabled","collectionId","mode","container","forms","formId","mergeConfig","apiUrl","userConfig","window","WABBIT_API_URL","hostname","location","detectApiUrl","wsUrl","WABBIT_WS_URL","includes","detectWebSocketUrl","position","triggerType","theme","primaryColor","placeholder","showHeader","headerTitle","undefined","emailCapture","triggerAfterMessages","fields","Wabbit","constructor","this","chatWidget","formsWidget","emailCaptureWidget","init","instance","console","warn","mergedConfig","emailCaptureWidgetRef","emailCaptureEnabled","chatServiceUrl","replace","emailCaptureConfigPromise","fetch","then","res","json","data","success","catch","err","Promise","resolve","ChatWidget$1","async","ChatWidget","serverEmailConfig","EmailCaptureWidget","EmailCaptureWidget$1","trigger","type","messageCount","name","push","company","title","modal","description","onCapture","log","userOnChatReady","onChatReady","chatConfig","triggerDelay","welcomeMessage","wsClient","setWebSocketClient","onUserMessage","handleMessage","FormWidget$1","FormWidget","formWidget","containerId","onSubmit","onError","onLoad","initLegacyForms","onReady","document","readyState","addEventListener","getInstance","destroy","querySelectorAll","forEach","widget","__wabbitFormWidget","legacyFormObserver","disconnect","getChatPageUrl","options","baseUrl","WABBIT_BASE_URL","url","URL","initialMessage","searchParams","set","toString","openChatPage","open","getConfig","initLegacyFormsOnReady","containers","length","getAttribute","querySelector","findContainer","setupLegacyFormObserver","observer","MutationObserver","mutations","mutation","addedNodes","Array","from","some","node","nodeType","element","hasAttribute","observe","body","childList","subtree","SafeStorage","storage","localStorage","prefix","get","key","item","getItem","JSON","parse","error","value","setItem","stringify","remove","removeItem","clear","keys","i","startsWith","getStorageItem","setStorageItem","ChatWebSocketClient","sessionId","ws","status","reconnectAttempts","maxReconnectAttempts","reconnectDelay","onStatusChange","onWelcome","onMessage","onMessageHistory","onDisconnect","getStoredSessionId","setStatus","getStatus","connect","WebSocket","OPEN","CONNECTING","params","URLSearchParams","api_key","append","onopen","onmessage","event","onerror","onclose","attemptReconnect","session_id","collection_id","message","messages","isArray","map","msg","id","crypto","randomUUID","role","content","timestamp","Date","metadata","message_id","sendMessage","send","close","delay","Math","pow","setTimeout","clearSession","escapeHtml","text","div","createElement","textContent","innerHTML","onDOMReady","callback","tag","attributes","children","Object","entries","setAttribute","child","appendChild","createTextNode","ChatBubble","render","class","onClick","show","style","display","hide","removeEventListener","ChatPanel","messagesContainer","inputElement","sendButton","isWaitingForResponse","closeButton","eventCleanup","isInline","header","createHeader","inputArea","createInputArea","addSystemMessage","scrollToBottom","headerIcon","headerText","headerH3","headerP","closeHandler","onClose","inputWrapper","className","rows","disabled","inputHandler","height","min","scrollHeight","updateSendButtonState","keydownHandler","e","shiftKey","preventDefault","handleSend","sendClickHandler","addMessage","renderMessage","setMessages","now","setWaitingForResponse","waiting","existing","typing","setDisabled","messageDiv","bubble","formatMessage","formatted","trim","onSendMessage","hasText","removeAttribute","HTMLButtonElement","scrollTop","focus","cleanup","detectTheme","htmlEl","documentElement","dataTheme","classList","contains","watchTheme","attributeFilter","mediaQuery","matchMedia","handleChange","injectChatStyles","styleId","getElementById","cssVars","styles","join","adjustColor","head","color","amount","hex","r","parseInt","substr","g","b","newR","max","round","newG","newB","padStart","panel","isOpen","themeCleanup","onChatReadyCallback","chatReadyFired","isInlineMode","containerElement","resolveContainer","setupThemeWatcher","getWebSocketUrl","setupWebSocketHandlers","toggle","handleSendMessage","handleTriggerType","selector","idWithoutHash","slice","_collectionId","requestAnimationFrame","hasScrolled","scrollHandler","userMessage","fn","FormRenderer","formData","colors","getColors","html","field","renderField","inputId","labelColor","label","required","renderTextInput","renderTextarea","renderSelect","renderRadio","renderCheckbox","renderRating","_colors","opt","idx","radioId","checkboxId","starId","FormStyles","styleElement","currentTheme","_primaryColor","themes","dark","formBg","inputBg","inputText","inputBorder","inputBorderFocus","placeholderColor","radioColor","ratingInactive","errorBg","errorColor","errorBorder","successBg","successColor","successBorder","buttonBg","buttonBgHover","light","random","hoverColor","darkenColor","injectStyles","effectiveTheme","updateTheme","updatePrimaryColor","getPrimaryColor","percent","num","floor","css","generateCSS","ApiClient","timeout","endpoint","request","post","method","requestOptions","headers","requireAuth","controller","AbortController","timeoutId","abort","fetchOptions","signal","response","clearTimeout","ok","errorText","errorJson","detail","statusText","TypeError","formElement","formObserver","getApiUrlFromScript","apiClient","renderer","themeMode","loadForm","setProperty","calculateHoverColor","attachSubmitHandler","settings","successMessage","setupRatingInteractions","showError","String","dataAttrContainer","handleSubmit","input","updateRatingStars","checkedInput","fieldName","allInputs","allLabels","find","l","checked","submitButton","FormData","responses","endsWith","fieldId","referrer","userAgent","navigator","showSuccess","reset","submissionId","rawError","errorMessage","formatErrorMessage","updateFormTheme","scriptTag","currentScript","HTMLScriptElement","src","origin","EmailCaptureModal","overlay","onDismiss","onSubmitCallback","onDismissCallback","isDark","target","handleDismiss","formFields","attachEventListeners","email","form","maybeLaterButton","isValidEmail","dontShowAgain","setFormDisabled","opacity","pointerEvents","errorElement","test","emailCaptured","onCaptureCallback","injectEmailCaptureStyles","triggerAfter","showModal","handleEmailSubmit","reject","messageHandler","WabbitClass","WabbitSDK","autoInitForms","getApiUrl","events","Map","on","handler","has","off","handlers","index","indexOf","splice","emit","args","removeAllListeners","delete","listenerCount"],"mappings":"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"}