@wabbit-dashboard/embed 1.0.10 → 1.0.12

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&&!e.chat.collectionId)throw new Error("[Wabbit] collectionId is required when chat is enabled");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,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..."}: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 r=n(e);if(i.instance=new i(r),r.chat?.enabled&&r.chat&&Promise.resolve().then(function(){return y}).then(({ChatWidget:e})=>{const t=r.chat,n=new e({enabled:t.enabled,collectionId:t.collectionId,apiKey:t.apiKey||r.apiKey,apiUrl:t.apiUrl||r.apiUrl,wsUrl:r.wsUrl||t.wsUrl,position:t.position,triggerType:t.triggerType,triggerDelay:t.triggerDelay,theme:t.theme,primaryColor:t.primaryColor,welcomeMessage:t.welcomeMessage,placeholder:t.placeholder});n.init(),i.instance.chatWidget=n}),r.forms?.enabled&&r.forms&&Promise.resolve().then(function(){return S}).then(({FormWidget:e})=>{const t=r.forms,n=new e({enabled:t.enabled,containerId:t.containerId,formId:t.formId,apiKey:t.apiKey||r.apiKey,apiUrl:t.apiUrl||r.apiUrl,theme:t.theme,primaryColor:t.primaryColor,onSubmit:t.onSubmit,onError:t.onError,onLoad:t.onLoad});n.init(),i.instance.formsWidget=n}),r.emailCapture?.enabled){const e=r.emailCapture;Promise.resolve().then(function(){return F}).then(({EmailCaptureWidget:t})=>{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.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}}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 r=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});r.findContainer=()=>t,r.init(),t.__wabbitFormWidget=r}))}),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 r{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 a=new r;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&&a.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,a.remove("session_id")}getStoredSessionId(){return a.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 b(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 h{constructor(e){this.element=null,this.options=e}render(){return this.element||(this.element=b("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.options=e}render(){if(this.element)return this.element;this.element=b("div",{class:`wabbit-chat-panel ${this.options.position}`});const e=b("div",{class:"wabbit-chat-panel-header"}),t=b("div",{class:"wabbit-chat-panel-header-title"}),n=b("div",{class:"wabbit-chat-panel-header-icon"});n.textContent="AI";const i=b("div",{class:"wabbit-chat-panel-header-text"}),r=b("h3");r.textContent="AI Assistant";const a=b("p");a.textContent="Powered by Wabbit",i.appendChild(r),i.appendChild(a),t.appendChild(n),t.appendChild(i);const s=b("button",{class:"wabbit-chat-panel-close","aria-label":"Close chat",type:"button"});s.innerHTML="×",s.addEventListener("click",this.options.onClose),e.appendChild(t),e.appendChild(s),this.messagesContainer=b("div",{class:"wabbit-chat-messages"});const o=b("div",{class:"wabbit-chat-input-area"}),l=b("div",{class:"wabbit-chat-input-wrapper"});return 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,this.inputElement.addEventListener("input",()=>{this.inputElement.style.height="auto",this.inputElement.style.height=`${Math.min(this.inputElement.scrollHeight,120)}px`}),this.inputElement.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSend())}),this.sendButton=b("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 ',this.sendButton.addEventListener("click",()=>this.handleSend()),this.updateSendButtonState(),l.appendChild(this.inputElement),l.appendChild(this.sendButton),o.appendChild(l),this.element.appendChild(e),this.element.appendChild(this.messagesContainer),this.element.appendChild(o),document.body.appendChild(this.element),this.element.style.display="none",this.options.welcomeMessage&&this.addSystemMessage(this.options.welcomeMessage),this.element}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=b("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=b("div",{class:`wabbit-chat-message wabbit-chat-message-${e.role}`}),n=b("div",{class:"wabbit-chat-message-bubble"}),i=b("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;this.sendButton.setAttribute("disabled",t?"true":"false"),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.inputElement&&this.inputElement.focus()},100))}hide(){this.element&&(this.element.style.display="none")}destroy(){this.element&&(this.element.remove(),this.element=null,this.messagesContainer=null,this.inputElement=null,this.sendButton=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 r="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},a=`\n :root {\n ${Object.entries(r).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 `,s=document.createElement("style");s.id=n,s.setAttribute("data-wabbit","true"),s.textContent=a,document.head.appendChild(s)}function w(e,t){const n=e.replace("#",""),i=parseInt(n.substr(0,2),16),r=parseInt(n.substr(2,2),16),a=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(r+(255-r)*t))),l=Math.max(0,Math.min(255,Math.round(a+(255-a)*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.config=e}async init(){await new Promise(e=>{d(()=>{e()})}),g(this.config.primaryColor||"#6366f1",this.config.theme),this.setupThemeWatcher();const e=this.getWebSocketUrl();this.wsClient=new l(this.config.apiKey||"",e,null),this.setupWebSocketHandlers(),this.bubble=new h({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}),this.bubble.render(),this.panel.render(),this.panel&&this.panel.hide(),this.bubble&&this.bubble.show(),this.isOpen=!1,this.handleTriggerType(),await this.wsClient.connect()}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.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(){this.isOpen||(this.isOpen=!0,this.panel&&this.panel.show(),this.bubble&&this.bubble.hide())}close(){this.isOpen&&(this.isOpen=!1,this.panel&&this.panel.hide(),this.bubble&&this.bubble.show())}toggle(){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 x{constructor(e){this.styles=e}render(e,t){const n=this.styles.getColors(t),i=e.fields;let r='<form class="wabbit-form" data-wabbit-form-instance="true">';return i.forEach(e=>{r+=this.renderField(e,n)}),r+='<button\n type="submit"\n class="wabbit-submit"\n >Submit</button>',r+='<div class="wabbit-message" style="display: none;"></div>',r+="</form>",r}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 r=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="radio"\n name="${c(e.id)}"\n value="${c(t)}"\n id="${c(r)}"\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 r=`${e.id}_${i}`;n+=`<div>\n <label>\n <input\n type="checkbox"\n name="${c(e.id)}[]"\n value="${c(t)}"\n id="${c(r)}"\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 C{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 r=`${this.baseUrl}${t}`,a={"Content-Type":"application/json"};!1!==i?.requireAuth&&this.apiKey&&(a["X-API-Key"]=this.apiKey);const s=new AbortController,o=setTimeout(()=>s.abort(),this.timeout),l={method:e,headers:a,mode:"cors",signal:s.signal};n&&"GET"!==e&&(l.body=JSON.stringify(n));try{const e=await fetch(r,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 C({baseUrl:t,apiKey:e.apiKey}),this.styles=new v(e.primaryColor,e.containerId),this.renderer=new x(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 r=this.calculateHoverColor(i);if(this.container.style.setProperty("--wabbit-primary-color-hover",r),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}"]`),r=this.formElement.querySelectorAll(`label[for^="${t}_"]`);i.forEach(e=>{const t=Array.from(r).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),r={};for(const[e,t]of i.entries())if(e.endsWith("[]")){const n=e.replace("[]","");r[n]||(r[n]=[]),r[n].push(t)}else r[e]=t;const a=await this.apiClient.post(`/api/forms/${this.config.formId}/submit`,{responses:r,metadata:{referrer:document.referrer,userAgent:navigator.userAgent}},{requireAuth:!1});if(a.success&&a.data?.success){const i=a.data.message||e||"Thank you! Your submission has been received.";this.showSuccess(i,n),this.formElement.reset(),this.config.onSubmit&&this.config.onSubmit(r,a.data.submissionId),setTimeout(()=>{t.disabled=!1,t.textContent="Submit"},2e3)}else{const e=a.data?.error||a.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.",r=this.formatErrorMessage(i);this.showError(r,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 r=t.querySelector("#wabbit-dont-show-again")?.checked||!1;this.setFormDisabled(!0);try{await this.onSubmitCallback(i,r),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),r=a=>{try{const s=JSON.parse(a.data);"email_confirmed"===s.type&&(clearTimeout(i),this.wsClient.ws.removeEventListener("message",r),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",r),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()}const A={init:M,getInstance:W,destroy:T};e.ApiClient=C,e.ChatBubble=h,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=x,e.FormStyles=v,e.FormWidget=E,e.SafeStorage=r,e.Wabbit=i,e.createElement=b,e.default=A,e.destroy=T,e.detectTheme=u,e.escapeHtml=c,e.getInstance=W,e.init=M,e.mergeConfig=n,e.onDOMReady=d,e.storage=a,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);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})});
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","forms","formId","mergeConfig","apiUrl","userConfig","window","WABBIT_API_URL","hostname","location","detectApiUrl","wsUrl","WABBIT_WS_URL","includes","detectWebSocketUrl","position","triggerType","theme","primaryColor","placeholder","undefined","emailCapture","triggerAfterMessages","fields","Wabbit","constructor","this","chatWidget","formsWidget","emailCaptureWidget","init","instance","console","warn","mergedConfig","Promise","resolve","then","ChatWidget$1","ChatWidget","triggerDelay","welcomeMessage","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","container","widget","__wabbitFormWidget","legacyFormObserver","disconnect","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","set","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","url","toString","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","options","render","class","onClick","show","style","display","hide","removeEventListener","ChatPanel","messagesContainer","inputElement","sendButton","isWaitingForResponse","header","headerTitle","headerIcon","headerText","headerH3","headerP","closeButton","onClose","inputArea","inputWrapper","className","rows","disabled","height","min","scrollHeight","e","shiftKey","preventDefault","handleSend","updateSendButtonState","addSystemMessage","addMessage","renderMessage","scrollToBottom","setMessages","now","setWaitingForResponse","waiting","existing","typing","setDisabled","messageDiv","bubble","formatMessage","formatted","replace","trim","onSendMessage","hasText","HTMLButtonElement","scrollTop","focus","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","cleanup","themeCleanup","setupThemeWatcher","getWebSocketUrl","setupWebSocketHandlers","toggle","handleTriggerType","_collectionId","open","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","slice","floor","css","generateCSS","ApiClient","baseUrl","timeout","endpoint","request","post","method","requestOptions","headers","requireAuth","controller","AbortController","timeoutId","abort","fetchOptions","mode","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","URL","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","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wabbit-dashboard/embed",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
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",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "https://github.com/insourcedata/wabbit.git",
21
+ "url": "git+https://github.com/insourcedata/wabbit.git",
22
22
  "directory": "packages/embed"
23
23
  },
24
24
  "scripts": {