@wabbit-dashboard/embed 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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);if(i.instance=new i(a),a.chat?.enabled&&a.chat&&Promise.resolve().then(function(){return y}).then(({ChatWidget:t})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before chat widget could initialize");const n=a.chat,r=new t({enabled:n.enabled,collectionId:n.collectionId,apiKey:n.apiKey||a.apiKey,apiUrl:n.apiUrl||a.apiUrl,wsUrl:a.wsUrl||n.wsUrl,mode:n.mode,container:n.container,position:n.position,triggerType:n.triggerType,triggerDelay:n.triggerDelay,theme:n.theme,primaryColor:n.primaryColor,welcomeMessage:n.welcomeMessage,placeholder:n.placeholder,showHeader:n.showHeader,headerTitle:n.headerTitle,onChatReady:n.onChatReady||e.onChatReady});r.init(),i.instance.chatWidget=r}),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}),a.emailCapture?.enabled){const e=a.emailCapture;Promise.resolve().then(function(){return F}).then(({EmailCaptureWidget:t})=>{if(!i.instance)return void console.warn("[Wabbit] Instance was destroyed before email capture widget could initialize");const n=new t({enabled:e.enabled,triggerAfterMessages:e.triggerAfterMessages,title:e.title,description:e.description,fields:e.fields,onCapture:e.onCapture});n.init(),i.instance.emailCaptureWidget=n,setTimeout(()=>{if(i.instance?.chatWidget){const e=i.instance.chatWidget;e.wsClient&&n.setWebSocketClient(e.wsClient);const t=e.handleSendMessage;t&&(e.handleSendMessage=function(e){t.call(this,e),n.handleMessage()})}},100)})}return 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)),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)}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 C{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 v{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 v(e.primaryColor,e.containerId),this.renderer=new C(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 M(e){return i.init(e)}function W(){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:M,getInstance:W,destroy:T,getChatPageUrl:B,openChatPage:A};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=C,e.FormStyles=v,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=W,e.init=M,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.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})});
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","Promise","resolve","then","ChatWidget$1","ChatWidget","triggerDelay","welcomeMessage","onChatReady","FormWidget$1","FormWidget","formWidget","containerId","onSubmit","onError","onLoad","EmailCaptureWidget$1","EmailCaptureWidget","title","description","onCapture","setTimeout","wsClient","setWebSocketClient","originalHandleSendMessage","handleSendMessage","content","call","handleMessage","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","log","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","push","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","data","onerror","onclose","attemptReconnect","type","session_id","collection_id","message","messages","isArray","map","msg","id","crypto","randomUUID","role","timestamp","Date","metadata","message_id","sendMessage","send","close","delay","Math","pow","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","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","fetch","clearTimeout","ok","errorText","errorJson","json","detail","statusText","success","name","TypeError","formElement","formObserver","getApiUrlFromScript","apiClient","renderer","themeMode","loadForm","setProperty","calculateHoverColor","attachSubmitHandler","settings","successMessage","setupRatingInteractions","showError","String","dataAttrContainer","async","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","modal","onDismiss","onSubmitCallback","onDismissCallback","isDark","target","handleDismiss","formFields","attachEventListeners","email","company","form","maybeLaterButton","isValidEmail","dontShowAgain","setFormDisabled","opacity","pointerEvents","errorElement","test","messageCount","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","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wabbit-dashboard/embed",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Wabbit Embed SDK - Unified widget library for embedding chat, forms, and email capture",
5
5
  "type": "module",
6
6
  "main": "./dist/wabbit-embed.cjs.js",