@enjoys/react-chatbot-plugin 1.9.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`react`);c=s(c);let l=require(`react/jsx-runtime`);function u(e,t){switch(t.type){case`TOGGLE_OPEN`:return{...e,isOpen:!e.isOpen};case`SET_OPEN`:return{...e,isOpen:t.payload};case`ADD_MESSAGE`:return{...e,messages:[...e.messages,t.payload]};case`ADD_MESSAGES`:return{...e,messages:[...e.messages,...t.payload]};case`SET_TYPING`:return{...e,isTyping:t.payload};case`DISMISS_WELCOME`:return{...e,showWelcome:!1};case`SET_STEP`:return{...e,currentStepId:t.payload};case`SET_DATA`:return{...e,collectedData:{...e.collectedData,...t.payload}};case`SET_LOGGED_IN`:return{...e,isLoggedIn:t.payload};case`CLEAR_QUICK_REPLIES`:{let t=-1;for(let n=e.messages.length-1;n>=0;n--)if(e.messages[n].quickReplies){t=n;break}if(t===-1)return e;let n=[...e.messages];return n[t]={...n[t],quickReplies:void 0},{...e,messages:n}}case`RESET_CHAT`:return{...e,messages:[],isTyping:!1,currentStepId:null,collectedData:{}};case`UPDATE_MESSAGE`:return{...e,messages:e.messages.map(e=>e.id===t.payload.id?{...e,...t.payload.updates}:e)};case`SET_LIVE_AGENT`:return{...e,isLiveAgent:t.payload};case`SET_AGENT_INFO`:return{...e,agentInfo:t.payload};default:return e}}var d=e=>({isOpen:e.defaultOpen??!1,messages:e.initialMessages??[],isTyping:!1,showWelcome:!!e.customizeChat?.welcomeScreen?.content,currentStepId:null,collectedData:{},isLoggedIn:!e.loginForm,isLiveAgent:!1,agentInfo:null}),f=(0,c.createContext)(null);function p(){let e=(0,c.useContext)(f);if(!e)throw Error(`useChatContext must be used within ChatProvider`);return e}var m={primaryColor:`#6C5CE7`,headerBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,headerText:`#FFFFFF`,bubbleBg:`rgba(241, 243, 249, 0.85)`,bubbleText:`#2D3436`,userBubbleBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,userBubbleText:`#FFFFFF`,fontFamily:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,fontSize:`14px`,borderRadius:`20px`,windowWidth:`400px`,windowHeight:`600px`,mode:`light`},h={headerBg:`linear-gradient(135deg, #2D1B69 0%, #4A3298 100%)`,headerText:`#F0F0FF`,bubbleBg:`rgba(45, 45, 70, 0.85)`,bubbleText:`#E8E8F0`,userBubbleBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,userBubbleText:`#FFFFFF`};function g(e){let t={...m,...e};return t.mode===`dark`?{...t,...h,...e}:t}function _(e){return{"--cb-primary":e.primaryColor,"--cb-header-bg":e.headerBg,"--cb-header-text":e.headerText,"--cb-bubble-bg":e.bubbleBg,"--cb-bubble-text":e.bubbleText,"--cb-user-bubble-bg":e.userBubbleBg,"--cb-user-bubble-text":e.userBubbleText,"--cb-font-family":e.fontFamily,"--cb-font-size":e.fontSize,"--cb-border-radius":e.borderRadius,"--cb-window-width":e.windowWidth,"--cb-window-height":e.windowHeight,"--cb-bg":e.mode===`dark`?`rgba(22, 22, 40, 0.95)`:`rgba(255, 255, 255, 0.92)`,"--cb-border":e.mode===`dark`?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.06)`,"--cb-input-bg":e.mode===`dark`?`rgba(40, 40, 65, 0.8)`:`rgba(245, 247, 252, 0.9)`,"--cb-input-border":e.mode===`dark`?`rgba(255,255,255,0.1)`:`rgba(0,0,0,0.06)`,"--cb-input-text":e.mode===`dark`?`#E0E0E0`:`#2D3436`,"--cb-branding-bg":e.mode===`dark`?`rgba(20, 20, 35, 0.8)`:`rgba(250, 250, 255, 0.8)`}}function v(e,t){let n=e.mode===`dark`;return{root:{fontFamily:e.fontFamily,fontSize:e.fontSize,lineHeight:`1.5`},launcher:{position:`fixed`,width:`62px`,height:`62px`,borderRadius:`50%`,background:e.headerBg,color:`#fff`,border:`none`,cursor:`pointer`,display:`flex`,alignItems:`center`,justifyContent:`center`,boxShadow:`0 6px 24px rgba(108, 92, 231, 0.4), 0 2px 8px rgba(0,0,0,0.1)`,transition:`all 0.3s cubic-bezier(0.4, 0, 0.2, 1)`,zIndex:9998,...t?.launcher},window:{position:`fixed`,width:e.windowWidth,height:e.windowHeight,maxHeight:`85vh`,borderRadius:e.borderRadius,overflow:`hidden`,display:`flex`,flexDirection:`column`,boxShadow:n?`0 20px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.05)`:`0 20px 60px rgba(108, 92, 231, 0.15), 0 8px 24px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04)`,backgroundColor:n?`rgba(22, 22, 40, 0.95)`:`rgba(255, 255, 255, 0.95)`,backdropFilter:`blur(20px)`,WebkitBackdropFilter:`blur(20px)`,border:n?`1px solid rgba(255,255,255,0.08)`:`1px solid rgba(255,255,255,0.8)`,zIndex:9999,animation:`cb-window-enter 0.35s cubic-bezier(0.4, 0, 0.2, 1)`,...t?.window},header:{background:e.headerBg,color:e.headerText,padding:`18px 20px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`12px`,flexShrink:0,position:`relative`,overflow:`hidden`,...t?.header},messageList:{flex:1,overflowY:`auto`,padding:`20px 16px`,display:`flex`,flexDirection:`column`,gap:`10px`,background:n?`linear-gradient(180deg, rgba(22, 22, 40, 0.98) 0%, rgba(30, 30, 50, 0.98) 100%)`:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.95) 100%)`,...t?.messageList},inputArea:{padding:`12px 16px 14px`,borderTop:`1px solid ${n?`rgba(255,255,255,0.06)`:`rgba(0,0,0,0.05)`}`,backgroundColor:n?`rgba(20, 20, 38, 0.9)`:`rgba(255, 255, 255, 0.95)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,flexShrink:0,...t?.inputArea},botBubble:{background:n?`rgba(45, 45, 70, 0.7)`:`rgba(241, 243, 249, 0.9)`,color:n?`#E8E8F0`:`#2D3436`,padding:`12px 16px`,borderRadius:`18px 18px 18px 4px`,maxWidth:`82%`,alignSelf:`flex-start`,wordBreak:`break-word`,whiteSpace:`pre-wrap`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,border:n?`1px solid rgba(255,255,255,0.06)`:`1px solid rgba(0,0,0,0.04)`,boxShadow:n?`0 2px 8px rgba(0,0,0,0.2)`:`0 2px 8px rgba(0,0,0,0.04)`,fontSize:`14px`,lineHeight:`1.55`,letterSpacing:`0.01em`},userBubble:{background:e.userBubbleBg,color:e.userBubbleText,padding:`12px 16px`,borderRadius:`18px 18px 4px 18px`,maxWidth:`82%`,alignSelf:`flex-end`,wordBreak:`break-word`,whiteSpace:`pre-wrap`,boxShadow:`0 4px 14px rgba(108, 92, 231, 0.25)`,fontSize:`14px`,lineHeight:`1.55`,letterSpacing:`0.01em`}}}var y=({size:e=18,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:t,children:(0,l.jsx)(`path`,{d:`M2.01 21L23 12 2.01 3 2 10l15 2-15 2z`})}),b=({size:e=28,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`})}),x=({size:e=20,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,l.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]}),S=({size:e=20,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})}),C=({size:e=20,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,l.jsx)(`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`}),(0,l.jsx)(`line`,{x1:`9`,y1:`9`,x2:`9.01`,y2:`9`}),(0,l.jsx)(`line`,{x1:`15`,y1:`9`,x2:`15.01`,y2:`9`})]}),w=({size:e=20,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`path`,{d:`M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48`})}),T=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`path`,{d:`M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z`}),(0,l.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]}),E=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,l.jsx)(`circle`,{cx:`8.5`,cy:`8.5`,r:`1.5`}),(0,l.jsx)(`polyline`,{points:`21 15 16 10 5 21`})]}),D=({size:e=14,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,l.jsx)(`line`,{x1:`15`,y1:`9`,x2:`9`,y2:`15`}),(0,l.jsx)(`line`,{x1:`9`,y1:`9`,x2:`15`,y2:`15`})]}),O=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`polyline`,{points:`1 4 1 10 7 10`}),(0,l.jsx)(`path`,{d:`M3.51 15a9 9 0 1 0 2.13-9.36L1 10`})]}),k=({onClick:e,isOpen:t,position:n,styles:r,icon:i,closeIcon:a,zIndex:o})=>{let{props:s}=p(),c=s.icons,u=n===`bottom-left`?{bottom:`24px`,left:`24px`}:{bottom:`24px`,right:`24px`};return(0,l.jsx)(`button`,{onClick:e,"aria-label":t?`Close chat`:`Open chat`,style:{...r.launcher,...u,...o==null?{}:{zIndex:o},transform:t?`scale(0.92) rotate(90deg)`:`scale(1)`,animation:t?`none`:`cb-launcher-pulse 3s ease-in-out infinite`},children:t?a??c?.close??(0,l.jsx)(x,{size:22}):i??c?.chatBubble??(0,l.jsx)(b,{size:26})})},A=({config:e,styles:t,onClose:n,onRestart:r,logo:i,logoWidth:a})=>{let{props:o}=p(),s=o.icons;return(0,l.jsxs)(`div`,{style:t.header,children:[(0,l.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,bottom:0,background:`linear-gradient(135deg, rgba(255,255,255,0.12) 0%, transparent 50%)`,pointerEvents:`none`}}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`12px`,flex:1,position:`relative`,zIndex:1},children:[e.avatar&&(0,l.jsxs)(`div`,{style:{position:`relative`},children:[(0,l.jsx)(`img`,{src:e.avatar,alt:``,style:{width:`40px`,height:`40px`,borderRadius:`50%`,objectFit:`cover`,border:`2px solid rgba(255,255,255,0.3)`}}),(0,l.jsx)(`span`,{style:{position:`absolute`,bottom:`1px`,right:`1px`,width:`10px`,height:`10px`,backgroundColor:`#2ECC71`,borderRadius:`50%`,border:`2px solid rgba(255,255,255,0.8)`}})]}),i&&!e.avatar&&(0,l.jsx)(`img`,{src:i,alt:``,style:{width:a??`36px`,height:`auto`,objectFit:`contain`,filter:`brightness(1.1)`}}),!e.avatar&&!i&&(0,l.jsx)(`div`,{style:{width:`40px`,height:`40px`,borderRadius:`50%`,background:`rgba(255,255,255,0.2)`,backdropFilter:`blur(4px)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`18px`,fontWeight:700,color:`rgba(255,255,255,0.9)`,border:`1px solid rgba(255,255,255,0.2)`},children:(e.title??`C`).charAt(0).toUpperCase()}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{style:{fontWeight:600,fontSize:`16px`,letterSpacing:`-0.01em`},children:e.title??`Chat with us`}),e.subtitle&&(0,l.jsxs)(`div`,{style:{fontSize:`12px`,opacity:.8,display:`flex`,alignItems:`center`,gap:`5px`,marginTop:`1px`},children:[(0,l.jsx)(`span`,{style:{width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`#2ECC71`,display:`inline-block`}}),e.subtitle]})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`2px`,position:`relative`,zIndex:1},children:[e.showRestart&&r&&(0,l.jsx)(`button`,{onClick:r,"aria-label":`Restart conversation`,title:`Restart conversation`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:s?.restart??(0,l.jsx)(O,{size:16})}),e.showMinimize&&(0,l.jsx)(`button`,{onClick:n,"aria-label":`Minimize chat`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:s?.minimize??(0,l.jsx)(S,{size:16})}),e.showClose!==!1&&(0,l.jsx)(`button`,{onClick:n,"aria-label":`Close chat`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:s?.close??(0,l.jsx)(x,{size:18})})]})]})},j=({content:e,onDismiss:t,primaryColor:n})=>(0,l.jsxs)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,overflow:`auto`,background:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.98) 100%)`},children:[(0,l.jsx)(`div`,{style:{flex:1,padding:`28px 24px`,overflow:`auto`},children:e}),(0,l.jsx)(`div`,{style:{padding:`16px 20px`,borderTop:`1px solid rgba(0,0,0,0.05)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,flexShrink:0},children:(0,l.jsx)(`button`,{onClick:t,style:{width:`100%`,padding:`14px`,background:`linear-gradient(135deg, ${n} 0%, ${ee(n,30)} 100%)`,color:`#fff`,border:`none`,borderRadius:`14px`,fontSize:`15px`,fontWeight:600,cursor:`pointer`,fontFamily:`inherit`,letterSpacing:`0.02em`,boxShadow:`0 6px 20px ${n}44`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 8px 28px ${n}55`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 6px 20px ${n}44`},children:`Start Chat`})})]});function ee(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var te=({field:e,value:t,onChange:n,error:r})=>{let i=e.type===`textarea`,a=e.type===`textarea`?void 0:e.type,o={width:`100%`,padding:`10px 14px`,border:`1.5px solid ${r?`rgba(229, 62, 62, 0.5)`:`rgba(0,0,0,0.08)`}`,borderRadius:`12px`,fontSize:`13px`,fontFamily:`inherit`,outline:`none`,boxSizing:`border-box`,transition:`all 0.2s ease`,backgroundColor:`rgba(245, 247, 252, 0.6)`,color:`#2D3436`,letterSpacing:`0.01em`};return(0,l.jsxs)(`div`,{style:{marginBottom:`14px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500,color:`#2D3436`},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`3px`},children:`*`})]}),i?(0,l.jsx)(`textarea`,{value:t,onChange:e=>n(e.target.value),placeholder:e.placeholder,required:e.required,rows:3,style:{...o,resize:`vertical`},minLength:e.validation?.minLength,maxLength:e.validation?.maxLength}):(0,l.jsx)(`input`,{type:a,value:t,onChange:e=>n(e.target.value),placeholder:e.placeholder,required:e.required,style:o,min:e.validation?.min,max:e.validation?.max,minLength:e.validation?.minLength,maxLength:e.validation?.maxLength,pattern:e.validation?.pattern}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},ne=({field:e,value:t,onChange:n,error:r})=>{let i=e.type===`multiselect`||e.multiple,a=e=>{n(i?Array.from(e.target.selectedOptions,e=>e.value):e.target.value)},o=i?Array.isArray(t)?t:[t].filter(Boolean):typeof t==`string`?t:``;return(0,l.jsxs)(`div`,{style:{marginBottom:`14px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500,color:`#2D3436`},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`3px`},children:`*`})]}),(0,l.jsxs)(`select`,{value:o,onChange:a,multiple:i,required:e.required,style:{width:`100%`,padding:`10px 14px`,border:`1.5px solid ${r?`rgba(229, 62, 62, 0.5)`:`rgba(0,0,0,0.08)`}`,borderRadius:`12px`,fontSize:`13px`,fontFamily:`inherit`,outline:`none`,backgroundColor:`rgba(245, 247, 252, 0.6)`,color:`#2D3436`,boxSizing:`border-box`,transition:`all 0.2s ease`,...i?{minHeight:`80px`}:{}},children:[!i&&(0,l.jsx)(`option`,{value:``,children:`Select...`}),e.options?.map(e=>(0,l.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),i&&(0,l.jsx)(`div`,{style:{fontSize:`11px`,color:`#888`,marginTop:`2px`},children:`Hold Ctrl/Cmd to select multiple`}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},re=({field:e,value:t,onChange:n,error:r})=>(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`},children:e.options?.map(r=>(0,l.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`,fontSize:`13px`},children:[(0,l.jsx)(`input`,{type:`radio`,name:e.name,value:r.value,checked:t===r.value,onChange:()=>n(r.value),style:{margin:0}}),r.label]},r.value))}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]}),ie=({field:e,value:t,onChange:n,error:r})=>{let i=e=>{t.includes(e)?n(t.filter(t=>t!==e)):n([...t,e])};return(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`},children:e.options?.map(e=>(0,l.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`,fontSize:`13px`},children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:t.includes(e.value),onChange:()=>i(e.value),style:{margin:0}}),e.label]},e.value))}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},M=({field:e,value:t,onChange:n,error:r,primaryColor:i})=>{let a=(0,c.useRef)(null),o=t?Array.from(t).map(e=>e.name).join(`, `):``;return(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`4px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`input`,{ref:a,type:`file`,accept:e.accept,multiple:e.multiple,onChange:e=>n(e.target.files),style:{display:`none`}}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>a.current?.click(),style:{padding:`8px 16px`,border:`1px dashed ${r?`#E53E3E`:`#D1D5DB`}`,borderRadius:`8px`,backgroundColor:`#FAFAFA`,cursor:`pointer`,fontSize:`13px`,color:`#555`,width:`100%`,textAlign:`left`},children:o||e.placeholder||`Choose file(s)...`}),o&&(0,l.jsxs)(`div`,{style:{fontSize:`12px`,color:i,marginTop:`4px`},children:[Array.from(t).length,` file(s) selected`]}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},N=({config:e,onSubmit:t,primaryColor:n,renderFormField:r})=>{let[i,a]=(0,c.useState)(()=>{let t={};for(let n of e.fields)n.defaultValue===void 0?n.type===`checkbox`||n.type===`multiselect`?t[n.name]=[]:n.type===`file`?t[n.name]=null:t[n.name]=``:t[n.name]=n.defaultValue;return t}),[o,s]=(0,c.useState)({}),[u,d]=(0,c.useState)(!1),f=(0,c.useCallback)((e,t)=>{a(n=>({...n,[e]:t})),s(t=>{let n={...t};return delete n[e],n})},[]),p=()=>{let t={};for(let n of e.fields){let e=i[n.name];if(n.required&&(e===``||e==null||Array.isArray(e)&&e.length===0)){t[n.name]=n.validation?.message??`${n.label||n.name} is required`;continue}if(n.validation?.pattern&&typeof e==`string`&&e)try{new RegExp(n.validation.pattern).test(e)||(t[n.name]=n.validation.message??`Invalid format`)}catch{}}return s(t),Object.keys(t).length===0};return u?(0,l.jsx)(`div`,{style:{padding:`16px`,background:`linear-gradient(135deg, rgba(46, 213, 115, 0.1), rgba(46, 213, 115, 0.05))`,borderRadius:`14px`,fontSize:`14px`,color:`#2ecc71`,textAlign:`center`,fontWeight:500,border:`1px solid rgba(46, 213, 115, 0.15)`,animation:`cb-fade-in 0.3s ease-out`},children:`✓ Submitted successfully`}):(0,l.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),p()&&(d(!0),t(i))},style:{background:`rgba(255, 255, 255, 0.7)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,borderRadius:`16px`,padding:`20px`,border:`1px solid rgba(0,0,0,0.06)`,boxShadow:`0 4px 16px rgba(0,0,0,0.04)`,animation:`cb-slide-up 0.35s ease-out`},children:[e.title&&(0,l.jsx)(`div`,{style:{fontWeight:600,fontSize:`15px`,marginBottom:`4px`,color:`#2D3436`,letterSpacing:`-0.01em`},children:e.title}),e.description&&(0,l.jsx)(`div`,{style:{fontSize:`12px`,color:`rgba(0,0,0,0.45)`,marginBottom:`16px`,lineHeight:`1.5`},children:e.description}),e.fields.map(e=>(0,l.jsx)(ae,{field:e,value:i[e.name],onChange:t=>f(e.name,t),error:o[e.name],primaryColor:n,renderFormField:r},e.name)),(0,l.jsx)(`button`,{type:`submit`,style:{width:`100%`,padding:`12px`,background:`linear-gradient(135deg, ${n} 0%, ${oe(n,30)} 100%)`,color:`#fff`,border:`none`,borderRadius:`12px`,fontSize:`14px`,fontWeight:600,cursor:`pointer`,marginTop:`8px`,fontFamily:`inherit`,letterSpacing:`0.02em`,boxShadow:`0 4px 14px ${n}33`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 6px 20px ${n}44`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 4px 14px ${n}33`},children:e.submitLabel??`Submit`})]})},ae=({field:e,value:t,onChange:n,error:r,primaryColor:i,renderFormField:a})=>{let o=a?.[e.type];switch(e.type){case`text`:case`email`:case`password`:case`number`:case`tel`:case`url`:case`textarea`:case`date`:case`time`:{let i={type:e.type,field:e,value:String(t??``),onChange:n,error:r},a=(0,l.jsx)(te,{field:e,value:String(t??``),onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`select`:case`multiselect`:{let i={type:e.type,field:e,value:t,onChange:n,error:r},a=(0,l.jsx)(ne,{field:e,value:t,onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`radio`:{let i={type:`radio`,field:e,value:String(t??``),onChange:n,error:r},a=(0,l.jsx)(re,{field:e,value:String(t??``),onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`checkbox`:{let i={type:`checkbox`,field:e,value:t??[],onChange:n,error:r},a=(0,l.jsx)(ie,{field:e,value:t??[],onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`file`:{let a={type:`file`,field:e,value:t,onChange:n,error:r,primaryColor:i},s=(0,l.jsx)(M,{field:e,value:t,onChange:n,error:r,primaryColor:i});return o?(0,l.jsx)(l.Fragment,{children:o(a,s)}):s}case`hidden`:return(0,l.jsx)(`input`,{type:`hidden`,name:e.name,value:String(t??``)});default:return null}};function oe(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var se=({config:e,onLogin:t,primaryColor:n,renderFormField:r})=>(0,l.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,justifyContent:`center`,padding:`24px`,overflow:`auto`,background:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.98) 100%)`},children:(0,l.jsx)(N,{config:e,onSubmit:t,primaryColor:n,renderFormField:r})});function ce(e,t={}){let n={bold:t.bold??!0,italic:t.italic??!0,code:t.code??!0,links:t.links??!0,lists:t.lists??!0,strikethrough:t.strikethrough??!0,headings:t.headings??!1},r=e.split(/(```[\s\S]*?```)/g),i=[];return r.forEach((e,t)=>{if(n.code&&e.startsWith("```")&&e.endsWith("```")){let n=e.slice(3,-3).replace(/^\w*\n/,``);i.push((0,l.jsx)(`pre`,{style:{background:`rgba(0,0,0,0.06)`,borderRadius:`6px`,padding:`8px 12px`,overflowX:`auto`,fontSize:`13px`,margin:`4px 0`},children:(0,l.jsx)(`code`,{children:n})},t))}else i.push(...le(e,n,t))}),(0,l.jsx)(l.Fragment,{children:i})}function le(e,t,n){let r=e.split(`
2
- `),i=[],a=[],o=0,s=()=>{a.length>0&&(i.push((0,l.jsx)(`ul`,{style:{margin:`4px 0`,paddingLeft:`20px`},children:a},`${n}-ul-${o++}`)),a=[])};return r.forEach((e,r)=>{let o=`${n}-${r}`;if(t.headings){let n=e.match(/^(#{1,3})\s+(.+)$/);if(n){s();let e=n[1].length,r=P(n[2],t);i.push((0,l.jsx)(`div`,{style:{fontWeight:700,fontSize:{1:`1.4em`,2:`1.2em`,3:`1.05em`}[e],margin:`6px 0 2px`},children:r},o));return}}if(t.lists&&/^[\-\*•]\s+/.test(e)){let n=e.replace(/^[\-\*•]\s+/,``);a.push((0,l.jsx)(`li`,{children:P(n,t)},o));return}if(t.lists&&/^\d+\.\s+/.test(e)){s();let n=e.replace(/^\d+\.\s+/,``);i.push((0,l.jsxs)(`div`,{style:{paddingLeft:`20px`},children:[e.match(/^\d+/)[0],`. `,P(n,t)]},o));return}if(s(),e.trim()===``){i.push((0,l.jsx)(`br`,{},o));return}i.push((0,l.jsx)(`span`,{style:{display:`block`},children:P(e,t)},o))}),s(),i}function P(e,t){let n=[];if(t.code&&n.push("`([^`]+)`"),t.bold&&n.push(`\\*\\*([^*]+)\\*\\*`,`__([^_]+)__`),t.strikethrough&&n.push(`~~([^~]+)~~`),t.italic&&n.push(`\\*([^*]+)\\*`,`(?<!\\w)_([^_]+)_(?!\\w)`),t.links&&n.push(`\\[([^\\]]+)\\]\\((https?:\\/\\/[^)]+)\\)`),n.length===0)return e;let r=new RegExp(n.join(`|`),`g`),i=[],a=0,o=0,s;for(;(s=r.exec(e))!==null;){s.index>a&&i.push(e.slice(a,s.index));let n=s[0];if(t.code&&n.startsWith("`")&&n.endsWith("`"))i.push((0,l.jsx)(`code`,{style:{background:`rgba(0,0,0,0.06)`,borderRadius:`3px`,padding:`1px 4px`,fontSize:`0.9em`},children:n.slice(1,-1)},o++));else if(t.bold&&(n.startsWith(`**`)||n.startsWith(`__`))){let e=(n.startsWith(`**`),n.slice(2,-2));i.push((0,l.jsx)(`strong`,{children:P(e,{...t,bold:!1})},o++))}else if(t.strikethrough&&n.startsWith(`~~`))i.push((0,l.jsx)(`del`,{children:P(n.slice(2,-2),{...t,strikethrough:!1})},o++));else if(t.italic&&(n.startsWith(`*`)||n.startsWith(`_`))){let e=n.slice(1,-1);i.push((0,l.jsx)(`em`,{children:P(e,{...t,italic:!1})},o++))}else if(t.links&&n.startsWith(`[`)){let e=n.match(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/);e&&i.push((0,l.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noopener noreferrer`,style:{color:`inherit`,textDecoration:`underline`},children:e[1]},o++))}else i.push(n);a=s.index+n.length}return a<e.length&&i.push(e.slice(a)),i.length===1?i[0]:(0,l.jsx)(l.Fragment,{children:i})}var F=({message:e,styles:t})=>{let{props:n}=p(),r=e.sender===`bot`,i=e.sender===`agent`,a=e.sender===`system`,o=r||a||i?t.botBubble:t.userBubble;if(!(e.text||e.attachments&&e.attachments.length>0))return null;let s=e.agentName??e.metadata?.agentName,c=a?{background:`transparent`,border:`none`,boxShadow:`none`,color:`#999`,fontSize:`12px`,alignSelf:`center`,padding:`6px 12px`,backdropFilter:`none`,WebkitBackdropFilter:`none`}:{};return(0,l.jsxs)(`div`,{style:{...o,...c,animation:`cb-fade-in 0.3s ease-out`},children:[i&&s&&(0,l.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,opacity:.7,marginBottom:`4px`},children:s}),e.text&&(0,l.jsx)(`span`,{style:{display:`block`},children:n.markdown?ce(e.text,n.markdown===!0?{}:n.markdown):e.text}),e.attachments&&e.attachments.length>0&&(0,l.jsx)(`div`,{style:{marginTop:e.text?`10px`:0,display:`flex`,flexDirection:`column`,gap:`6px`},children:e.attachments.map((e,t)=>(0,l.jsx)(ue,{attachment:e,isBot:r},t))})]})},ue=({attachment:e,isBot:t})=>{let{props:n}=p(),r=n.icons;return e.type.startsWith(`image/`)&&e.url?(0,l.jsxs)(`div`,{style:{borderRadius:`12px`,overflow:`hidden`,maxWidth:`220px`},children:[(0,l.jsx)(`img`,{src:e.url,alt:e.name,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`}}),(0,l.jsx)(`div`,{style:{fontSize:`11px`,padding:`4px 0`,opacity:.6},children:e.name})]}):(0,l.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,style:{display:`flex`,alignItems:`center`,gap:`8px`,padding:`8px 12px`,backgroundColor:t?`rgba(0,0,0,0.04)`:`rgba(255,255,255,0.15)`,borderRadius:`10px`,textDecoration:`none`,color:`inherit`,fontSize:`13px`,border:t?`1px solid rgba(0,0,0,0.06)`:`1px solid rgba(255,255,255,0.15)`,transition:`background 0.2s ease`},children:[r?.file??(0,l.jsx)(T,{size:16}),(0,l.jsx)(`span`,{style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1},children:e.name}),e.size&&(0,l.jsx)(`span`,{style:{fontSize:`11px`,opacity:.5,flexShrink:0},children:de(e.size)})]})};function de(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}var I=({replies:e,onSelect:t,primaryColor:n})=>(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`8px`,alignSelf:`flex-start`,maxWidth:`90%`,animation:`cb-slide-up 0.35s ease-out`,padding:`4px 0`},children:e.map(e=>(0,l.jsx)(`button`,{onClick:()=>t(e.value,e.label),style:{padding:`8px 18px`,borderRadius:`22px`,border:`1.5px solid ${n}`,backgroundColor:`rgba(108, 92, 231, 0.06)`,color:n,cursor:`pointer`,fontSize:`13px`,fontWeight:500,fontFamily:`inherit`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,letterSpacing:`0.01em`},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=n,e.currentTarget.style.color=`#fff`,e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 4px 14px ${n}44`},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=`rgba(108, 92, 231, 0.06)`,e.currentTarget.style.color=n,e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`none`},children:e.label},e.value))}),L=({color:e})=>{let t={width:`7px`,height:`7px`,borderRadius:`50%`,backgroundColor:e,opacity:.35,animation:`cb-typing-bounce 1.4s infinite ease-in-out`};return(0,l.jsxs)(`div`,{style:{display:`flex`,gap:`5px`,padding:`14px 18px`,background:`rgba(241, 243, 249, 0.8)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderRadius:`18px 18px 18px 4px`,alignSelf:`flex-start`,alignItems:`center`,border:`1px solid rgba(0,0,0,0.04)`,boxShadow:`0 2px 8px rgba(0,0,0,0.04)`,animation:`cb-fade-in 0.3s ease-out`},children:[(0,l.jsx)(`span`,{style:{...t,animationDelay:`0s`}}),(0,l.jsx)(`span`,{style:{...t,animationDelay:`0.2s`}}),(0,l.jsx)(`span`,{style:{...t,animationDelay:`0.4s`}})]})},R=({messages:e,isTyping:t,styles:n,primaryColor:r,onQuickReply:i,onFormSubmit:a,components:o,onComponentComplete:s,collectedData:u,currentStepId:d,renderFormField:f,customizeChat:p})=>{let m=(0,c.useRef)(null);(0,c.useEffect)(()=>{m.current?.scrollIntoView({behavior:`smooth`})},[e,t]);let h=p?.messageBubble?.component??F,g=p?.quickReplies?.component??I,_=p?.typingIndicator?.component??L;return(0,l.jsxs)(`div`,{style:n.messageList,className:`cb-scrollbar`,children:[e.map(e=>(0,l.jsxs)(c.default.Fragment,{children:[(0,l.jsx)(h,{message:e,styles:n}),e.quickReplies&&e.quickReplies.length>0&&(0,l.jsx)(g,{replies:e.quickReplies,onSelect:i,primaryColor:r}),e.form&&(0,l.jsx)(`div`,{style:{alignSelf:`flex-start`,width:`92%`,animation:`cb-slide-up 0.35s ease-out`},children:(0,l.jsx)(N,{config:e.form,onSubmit:t=>a(e.form.id,t),primaryColor:r,renderFormField:f})}),e.component&&o?.[e.component]&&(0,l.jsx)(`div`,{style:{alignSelf:`flex-start`,width:`92%`,animation:`cb-slide-up 0.35s ease-out`},children:c.default.createElement(o[e.component],{stepId:d??``,data:u??{},onComplete:e=>s?.(e)})})]},e.id)),t&&(0,l.jsx)(_,{color:r}),(0,l.jsx)(`div`,{ref:m})]})},z=[{name:`Smileys`,emojis:`😀.😃.😄.😁.😅.😂.🤣.😊.😇.🙂.😉.😍.🥰.😘.😋.😜.🤪.🤗.🤔.🤫.🤭.😏.😐.😑.😶.😌.😴.🤤.😷.🤒`.split(`.`)},{name:`Gestures`,emojis:`👍.👎.👌.✌️.🤞.🤟.🤘.👋.🤚.✋.🖖.👏.🙌.🤝.🙏.💪.🖐️.☝️.👆.👇.👈.👉.🤙.🫡.🫶.🫰.🫳.🫴.🫲.🫱`.split(`.`)},{name:`Hearts`,emojis:`❤️.🧡.💛.💚.💙.💜.🖤.🤍.🤎.💔.❣️.💕.💞.💓.💗.💖.💘.💝.💟.♥️.🫀.💌.💐.🌹.🌺.🌸.🌼.🌻.🌷.💮`.split(`.`)},{name:`Objects`,emojis:`🔥.⭐.✨.💯.🎉.🎊.🎯.🚀.💡.📌.📎.🔗.💻.📱.☎️.📧.📝.📋.📊.📈.🗂️.📁.🔒.🔑.⚙️.🛠️.🔧.📦.🏷️.✅`.split(`.`)}],B=({onSelect:e,onClose:t,primaryColor:n})=>{let[r,i]=(0,c.useState)(0),a=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{a.current&&!a.current.contains(e.target)&&t()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[t]);let o=z[r]?.emojis??[];return(0,l.jsxs)(`div`,{ref:a,style:{position:`absolute`,bottom:`100%`,left:0,width:`280px`,backgroundColor:`rgba(255, 255, 255, 0.92)`,backdropFilter:`blur(20px)`,WebkitBackdropFilter:`blur(20px)`,borderRadius:`16px`,boxShadow:`0 8px 32px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04)`,border:`1px solid rgba(255,255,255,0.8)`,overflow:`hidden`,zIndex:10,marginBottom:`8px`,animation:`cb-slide-up 0.25s ease-out`},children:[(0,l.jsx)(`div`,{style:{display:`flex`,borderBottom:`1px solid rgba(0,0,0,0.06)`,padding:`6px`,gap:`3px`},children:z.map((e,t)=>(0,l.jsx)(`button`,{onClick:()=>i(t),title:e.name,style:{flex:1,padding:`6px 4px`,border:`none`,borderRadius:`8px`,cursor:`pointer`,fontSize:`11px`,fontWeight:600,fontFamily:`inherit`,letterSpacing:`0.02em`,background:t===r?`linear-gradient(135deg, ${n}, ${n}CC)`:`transparent`,color:t===r?`#fff`:`rgba(0,0,0,0.4)`,transition:`all 0.2s ease`,boxShadow:t===r?`0 2px 8px ${n}33`:`none`},children:e.name},e.name))}),(0,l.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(8, 1fr)`,gap:`2px`,padding:`8px`,maxHeight:`180px`,overflowY:`auto`},children:o.map(n=>(0,l.jsx)(`button`,{onClick:()=>{e(n),t()},style:{width:`30px`,height:`30px`,border:`none`,backgroundColor:`transparent`,cursor:`pointer`,fontSize:`18px`,borderRadius:`6px`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:`all 0.15s ease`},onMouseEnter:e=>e.currentTarget.style.backgroundColor=`rgba(108, 92, 231, 0.08)`,onMouseLeave:e=>e.currentTarget.style.backgroundColor=`transparent`,children:n},n))})]})},V=({config:e,onFiles:t,selectedFiles:n,onRemoveFile:r,primaryColor:i})=>{let{props:a}=p(),o=a.icons,s=(0,c.useRef)(null);return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`input`,{ref:s,type:`file`,accept:e.accept,multiple:e.multiple!==!1,onChange:r=>{let i=r.target.files;if(!i||i.length===0)return;let a=Array.from(i);if(e.maxSize&&a.filter(t=>t.size>e.maxSize).length>0){alert(`File(s) too large. Max size: ${U(e.maxSize)}`);return}let o=e.maxFiles??5;if(n.length+a.length>o){alert(`Maximum ${o} files allowed`);return}t(a),s.current&&(s.current.value=``)},style:{display:`none`}}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>s.current?.click(),"aria-label":`Attach file`,title:`Attach file`,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,color:`#999`,borderRadius:`6px`,transition:`color 0.15s ease`},onMouseEnter:e=>e.currentTarget.style.color=i,onMouseLeave:e=>e.currentTarget.style.color=`#999`,children:o?.attachment??(0,l.jsx)(w,{size:20})})]})},H=({files:e,onRemove:t,primaryColor:n})=>e.length===0?null:(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`6px`,padding:`8px 12px 0`},children:e.map((e,r)=>(0,l.jsx)(fe,{file:e,onRemove:()=>t(r),primaryColor:n},`${e.name}-${r}`))}),fe=({file:e,onRemove:t,primaryColor:n})=>{let{props:r}=p(),i=r.icons,a=e.type.startsWith(`image/`);return(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,padding:`4px 8px`,backgroundColor:`#F3F4F6`,borderRadius:`8px`,fontSize:`12px`,maxWidth:`200px`},children:[(0,l.jsx)(`span`,{style:{color:n,flexShrink:0},children:a?i?.image??(0,l.jsx)(E,{size:14}):i?.file??(0,l.jsx)(T,{size:14})}),(0,l.jsx)(`span`,{style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,color:`#555`},children:e.name}),(0,l.jsx)(`span`,{style:{color:`#999`,fontSize:`11px`,flexShrink:0},children:U(e.size)}),(0,l.jsx)(`button`,{onClick:t,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`0`,display:`flex`,color:`#999`,flexShrink:0},children:i?.remove??(0,l.jsx)(D,{size:14})})]})};function U(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}var W=({onSend:e,placeholder:t=`Type a message...`,primaryColor:n,isDark:r=!1,disabled:i,styleOverride:a,enableEmoji:o=!1,fileUpload:s,onFileUpload:u})=>{let{props:d}=p(),f=d.icons,[m,h]=(0,c.useState)(``),[g,_]=(0,c.useState)(!1),[v,b]=(0,c.useState)([]),x=(0,c.useRef)(null),S=(0,c.useCallback)(()=>{let t=m.trim();!t&&v.length===0||(e(t,v.length>0?v:void 0),h(``),b([]),x.current?.focus())},[m,v,e]),w=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),S())},T=e=>{h(t=>t+e),x.current?.focus()},E=e=>{b(t=>[...t,...e]),u?.(e)},D=e=>{b(t=>t.filter((t,n)=>n!==e))},O=m.trim()||v.length>0;return(0,l.jsxs)(`div`,{style:{position:`relative`,...a},children:[v.length>0&&(0,l.jsx)(H,{files:v,onRemove:D,primaryColor:n}),g&&(0,l.jsx)(B,{onSelect:T,onClose:()=>_(!1),primaryColor:n}),(0,l.jsxs)(`div`,{style:{display:`flex`,gap:`8px`,alignItems:`flex-end`,background:r?`rgba(40, 40, 65, 0.5)`:`rgba(245, 247, 252, 0.7)`,borderRadius:`16px`,border:`1px solid ${r?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.05)`}`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,padding:`6px 6px 6px 12px`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`2px`,flexShrink:0,paddingBottom:`2px`},children:[o&&(0,l.jsx)(`button`,{type:`button`,onClick:()=>_(!g),"aria-label":`Emoji`,title:`Emoji`,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`6px`,display:`flex`,color:g?n:r?`rgba(255,255,255,0.35)`:`rgba(0,0,0,0.3)`,borderRadius:`8px`,transition:`all 0.2s ease`},children:f?.emoji??(0,l.jsx)(C,{size:20})}),s?.enabled&&(0,l.jsx)(V,{config:s,onFiles:E,selectedFiles:v,onRemoveFile:D,primaryColor:n})]}),(0,l.jsx)(`textarea`,{ref:x,value:m,onChange:e=>h(e.target.value),onKeyDown:w,placeholder:t,disabled:i,rows:1,style:{flex:1,padding:`8px 2px`,border:`none`,borderRadius:`12px`,outline:`none`,resize:`none`,fontFamily:`inherit`,fontSize:`14px`,lineHeight:`1.45`,maxHeight:`100px`,overflowY:`auto`,backgroundColor:`transparent`,color:r?`#E0E0E0`:`#2D3436`,letterSpacing:`0.01em`}}),(0,l.jsx)(`button`,{onClick:S,disabled:i||!O,"aria-label":`Send message`,style:{width:`36px`,height:`36px`,borderRadius:`12px`,background:O?`linear-gradient(135deg, ${n} 0%, ${pe(n,30)} 100%)`:r?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.06)`,color:O?`#fff`:r?`rgba(255,255,255,0.25)`:`rgba(0,0,0,0.2)`,border:`none`,cursor:O?`pointer`:`default`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:O?`0 4px 12px ${n}44`:`none`},children:f?.send??(0,l.jsx)(y,{size:16})})]})]})};function pe(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var G=({config:e,primaryColor:t})=>{if(e.showBranding===!1)return null;let n=e.poweredBy??`React ChatBot`;return(0,l.jsxs)(`div`,{style:{padding:`8px 16px`,textAlign:`center`,fontSize:`11px`,color:`rgba(0,0,0,0.35)`,background:`rgba(250, 250, 255, 0.7)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderTop:`1px solid rgba(0,0,0,0.04)`,flexShrink:0,letterSpacing:`0.02em`},children:[`Powered by`,` `,e.poweredByUrl?(0,l.jsx)(`a`,{href:e.poweredByUrl,target:`_blank`,rel:`noopener noreferrer`,style:{color:t,textDecoration:`none`,fontWeight:600,transition:`opacity 0.2s ease`},children:n}):(0,l.jsx)(`span`,{style:{color:t,fontWeight:600},children:n})]})},me=0,K=()=>`msg_${Date.now()}_${++me}`,q=e=>new Promise(t=>setTimeout(t,e)),he=class{constructor(e){this.collectedData={},this.stepHistory=[],this.startStep=e.startStep,this.steps=new Map(e.steps.map(e=>[e.id,e]))}getStartStepId(){return this.startStep}getStep(e){return this.steps.get(e)}getData(){return{...this.collectedData}}setData(e,t){this.collectedData[e]=t}mergeData(e){Object.assign(this.collectedData,e)}pushHistory(e){this.stepHistory.push(e)}popHistory(){return this.stepHistory.pop(),this.stepHistory.pop()}canGoBack(){return this.stepHistory.length>1}reset(){this.collectedData={},this.stepHistory=[]}resolveNext(e,t){if(e.condition){let{field:t,operator:n,value:r,then:i,else:a}=e.condition,o=this.collectedData[t];return this.evaluate(o,n,r)?i:a}if(t&&e.quickReplies){let n=e.quickReplies.find(e=>e.value===t);if(n?.next)return n.next}return e.next}stepExpectsQuickReply(e){return!!(e.quickReplies&&e.quickReplies.length>0)}stepExpectsForm(e){return!!e.form}matchQuickReply(e,t){if(!e.quickReplies)return;let n=t.toLowerCase().trim();return n?e.quickReplies.find(e=>e.value.toLowerCase()===n)||e.quickReplies.find(e=>e.label.toLowerCase().replace(/[^\w\s]/g,``).trim()===n)||e.quickReplies.find(e=>n.includes(e.value.toLowerCase())||e.label.toLowerCase().includes(n)):void 0}buildMessages(e){let t=[],n=e.messages??(e.message?[e.message]:[]);for(let e of n)t.push({id:K(),sender:`bot`,text:e,timestamp:Date.now()});return e.quickReplies&&t.length>0&&(t[t.length-1].quickReplies=e.quickReplies),e.form&&t.push({id:K(),sender:`bot`,timestamp:Date.now(),form:e.form}),e.component&&t.push({id:K(),sender:`bot`,timestamp:Date.now(),component:e.component}),t}evaluate(e,t,n){switch(t){case`eq`:return String(e)===String(n);case`neq`:return String(e)!==String(n);case`contains`:return String(e).includes(String(n));case`gt`:return Number(e)>Number(n);case`lt`:return Number(e)<Number(n);default:return!1}}},J=class{constructor(e,t,n){this.driver=e,this.events=t,this.sessionId=n}sendUserMessage(e,t){this.driver.send(this.events.userMessage,{text:e,sessionId:this.sessionId,timestamp:Date.now(),...t?.length?{attachments:t}:{}})}sendUserTyping(){this.driver.send(this.events.userTyping,{sessionId:this.sessionId,timestamp:Date.now()})}requestTransfer(e){this.driver.send(this.events.transferRequest,{sessionId:this.sessionId,department:e,timestamp:Date.now()})}initSession(){this.driver.send(this.events.sessionInit,{sessionId:this.sessionId,timestamp:Date.now()})}on(e,t){this.driver.on(e,t)}off(e,t){this.driver.off(e,t)}isConnected(){return this.driver.isConnected()}destroy(){this.driver.destroy()}},ge=class{constructor(e){this.listeners=new Map,this.ws=e,this.boundOnMessage=this.handleMessage.bind(this),this.ws.addEventListener(`message`,this.boundOnMessage)}send(e,t){this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({event:e,data:t}))}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.get(e)?.delete(t)}isConnected(){return this.ws.readyState===WebSocket.OPEN}destroy(){this.ws.removeEventListener(`message`,this.boundOnMessage),this.listeners.clear()}handleMessage(e){try{let t=JSON.parse(String(e.data));if(t.event){let e=this.listeners.get(t.event);e&&e.forEach(e=>e(t.data))}}catch{}}},_e=class{constructor(e){this.registeredHandlers=[],this.socket=e}send(e,t){this.socket.emit(e,t)}on(e,t){this.socket.on(e,t),this.registeredHandlers.push({event:e,handler:t})}off(e,t){this.socket.off(e,t),this.registeredHandlers=this.registeredHandlers.filter(n=>!(n.event===e&&n.handler===t))}isConnected(){return this.socket.connected}destroy(){for(let{event:e,handler:t}of this.registeredHandlers)this.socket.off(e,t);this.registeredHandlers=[]}},Y={agentMessage:`agent:message`,userMessage:`user:message`,agentJoined:`agent:joined`,agentLeft:`agent:left`,agentTyping:`agent:typing`,userTyping:`user:typing`,sessionInit:`session:init`,sessionHistory:`session:history`,transferRequest:`transfer:request`,transferAccepted:`transfer:accepted`,queueUpdate:`queue:update`};function ve(e){return{...Y,...e}}function ye(e){if(e.sessionId)return e.sessionId;let t=(e.storageKey??`chatbot_live_`)+`session_id`;if(typeof localStorage<`u`){let e=localStorage.getItem(t);if(e)return e;let n=K();return localStorage.setItem(t,n),n}return K()}function be({config:e,dispatch:t,messages:n}){let r=(0,c.useRef)(null),i=(0,c.useRef)(!1),a=(0,c.useRef)(null),o=(0,c.useRef)(null),s=(0,c.useRef)(n);return s.current=n,(0,c.useEffect)(()=>{if(!e)return;let n=ve(e.events),c=ye(e),l=new J(e.type===`socketio`?new _e(e.instance):new ge(e.instance),n,c);r.current=l;let u=n=>{let r=n;if(!r.text&&!r.attachments?.length)return;let i={id:K(),sender:`agent`,text:r.text,timestamp:Date.now(),...r.attachments?.length?{attachments:r.attachments}:{},metadata:r.agent?{agentName:r.agent.name,agentAvatar:r.agent.avatar}:void 0};t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGE`,payload:i}),Se([...s.current,i],e)},d=n=>{let r=n;a.current=r,i.current=!0,t({type:`SET_LIVE_AGENT`,payload:!0}),t({type:`SET_AGENT_INFO`,payload:r}),t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:`${r.name} joined the chat`,timestamp:Date.now()}}),e.onAgentJoined?.(r)},f=n=>{let r=n;a.current=null,i.current=!1,t({type:`SET_LIVE_AGENT`,payload:!1}),t({type:`SET_AGENT_INFO`,payload:null}),t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:`${r.name} left the chat`,timestamp:Date.now()}}),e.onAgentLeft?.(r)},p=()=>{t({type:`SET_TYPING`,payload:!0}),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{t({type:`SET_TYPING`,payload:!1})},3e3)},m=e=>{let n=e;n.agent&&(a.current=n.agent,i.current=!0,t({type:`SET_LIVE_AGENT`,payload:!0}),t({type:`SET_AGENT_INFO`,payload:n.agent})),t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:n.message??`Connected to ${n.agent?.name??`an agent`}`,timestamp:Date.now()}})},h=n=>{let r=n,i=r.estimatedWait?` Estimated wait: ~${r.estimatedWait} min.`:``;t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:`You are #${r.position} in queue.${i}`,timestamp:Date.now()}}),e.onQueueUpdate?.(r.position,r.estimatedWait)},g=n=>{let r=n;r.messages?.length&&(t({type:`ADD_MESSAGES`,payload:r.messages}),e.onSessionRestored?.(r.messages.length))};if(l.on(n.agentMessage,u),l.on(n.agentJoined,d),l.on(n.agentLeft,f),l.on(n.agentTyping,p),l.on(n.transferAccepted,m),l.on(n.queueUpdate,h),l.on(n.sessionHistory,g),e.persistSession!==!1){let n=Ce(e);n.length&&(t({type:`ADD_MESSAGES`,payload:n}),e.onSessionRestored?.(n.length))}return l.initSession(),e.onConnect?.(),()=>{l.off(n.agentMessage,u),l.off(n.agentJoined,d),l.off(n.agentLeft,f),l.off(n.agentTyping,p),l.off(n.transferAccepted,m),l.off(n.queueUpdate,h),l.off(n.sessionHistory,g),o.current&&clearTimeout(o.current),l.destroy(),r.current=null,e.onDisconnect?.()}},[e,t]),{adapter:r,sendLiveMessage:(0,c.useCallback)((e,t)=>{r.current?.sendUserMessage(e,t)},[]),sendTyping:(0,c.useCallback)(()=>{r.current?.sendUserTyping()},[]),requestTransfer:(0,c.useCallback)(e=>{r.current?.requestTransfer(e),t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:e?`Requesting transfer to ${e}…`:`Requesting a live agent…`,timestamp:Date.now()}})},[t]),isLive:i,agentInfo:a}}function xe(e){return`${e.storageKey??`chatbot_live_`}${e.sessionId??`default`}`}function Se(e,t){if(t.persistSession!==!1&&!(typeof localStorage>`u`))try{localStorage.setItem(xe(t),JSON.stringify(e))}catch{}}function Ce(e){if(typeof localStorage>`u`)return[];try{let t=localStorage.getItem(xe(e));if(!t)return[];let n=JSON.parse(t);return Array.isArray(n)?n:[]}catch{return[]}}var we={"/help":`Show available commands`,"/cancel":`Cancel current step and go back`,"/back":`Go back to the previous step`,"/restart":`Restart the conversation from the beginning`},Te=[`hi`,`hello`,`hey`,`howdy`,`hola`,`greetings`,`good morning`,`good afternoon`,`good evening`,`sup`,`yo`,`hii`,`hiii`];function Ee(e,t){let n=t.caseSensitive?e:e.toLowerCase();for(let r of t.patterns){let i=t.caseSensitive?r:r.toLowerCase();switch(t.matchType??`contains`){case`exact`:if(n===i)return!0;break;case`startsWith`:if(n.startsWith(i))return!0;break;case`regex`:try{if(new RegExp(i,t.caseSensitive?``:`i`).test(e))return!0}catch{}break;default:if(n.includes(i))return!0;break}}return!1}function De(e,t){return[...t].sort((e,t)=>(t.priority??0)-(e.priority??0)).find(t=>Ee(e,t))}function Oe(e,t){let n=e;if(t.transform)switch(t.transform){case`trim`:n=n.trim();break;case`lowercase`:n=n.toLowerCase();break;case`uppercase`:n=n.toUpperCase();break;case`email`:n=n.trim().toLowerCase();break}if(t.validation){let e=t.validation;if(e.required&&!n.trim())return{valid:!1,value:n,error:e.message??`This field is required.`};if(e.minLength&&n.length<e.minLength)return{valid:!1,value:n,error:e.message??`Must be at least ${e.minLength} characters.`};if(e.maxLength&&n.length>e.maxLength)return{valid:!1,value:n,error:e.message??`Must be at most ${e.maxLength} characters.`};if(e.pattern)try{if(!new RegExp(e.pattern).test(n))return{valid:!1,value:n,error:e.message??`Invalid format.`}}catch{}}return{valid:!0,value:n}}function ke(){let{state:e,dispatch:t,props:n,pluginManager:r}=p(),i=(0,c.useRef)(null),a=(0,c.useRef)(!1),o=(0,c.useRef)(e);o.current=e;let s=(0,c.useRef)(n);s.current=n;let{sendLiveMessage:l,sendTyping:u,requestTransfer:d}=be({config:n.liveAgent,dispatch:t,messages:e.messages});(0,c.useEffect)(()=>{n.flow&&(i.current=new he(n.flow),a.current=!1)},[n.flow]);let f=(0,c.useCallback)(async(e,n)=>{t({type:`SET_TYPING`,payload:!0}),await q(400);let i={id:K(),sender:`bot`,text:e,timestamp:Date.now(),...n},a=r?await r.onMessage(i):i;t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGE`,payload:a}),s.current.callbacks?.onMessageReceive?.(a)},[t,r]),m=(0,c.useCallback)(e=>{t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`system`,text:e,timestamp:Date.now()}})},[t]),h=(0,c.useRef)(async()=>{});h.current=async e=>{let n=i.current;if(!n)return;let a=n.getStep(e);if(!a)return;n.pushHistory(e),t({type:`SET_STEP`,payload:e}),r?.emitEvent(`stepChange`,{stepId:e}),t({type:`SET_TYPING`,payload:!0}),await q(a.delay??500);let o=n.buildMessages(a);if(t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGES`,payload:o}),o.forEach(e=>s.current.callbacks?.onMessageReceive?.(e)),a.asyncAction){let e=s.current.actionHandlers?.[a.asyncAction.handler];if(e){let r=K();t({type:`ADD_MESSAGE`,payload:{id:r,sender:`bot`,text:a.asyncAction.loadingMessage??`Processing...`,timestamp:Date.now()}});let i={updateMessage:e=>{t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:e}}})}};try{let o=await e(n.getData(),i);o.data&&(n.mergeData(o.data),t({type:`SET_DATA`,payload:o.data})),t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:o.message??(o.status===`success`?a.asyncAction.successMessage??`Done!`:a.asyncAction.errorMessage??`Something went wrong.`)}}});let s=g(a,o);s&&(await q(600),h.current(s))}catch{t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:a.asyncAction.errorMessage??`❌ Something went wrong.`}}}),a.asyncAction.onError&&(await q(600),h.current(a.asyncAction.onError))}return}}a.component&&s.current.components?.[a.component]||!a.quickReplies&&!a.form&&!a.input&&a.next&&(await q(300),h.current(a.next))};function g(e,t){return t.next?t.next:e.asyncAction?.routes?.[t.status]?e.asyncAction.routes[t.status]:t.status===`success`&&e.asyncAction?.onSuccess?e.asyncAction.onSuccess:t.status===`error`&&e.asyncAction?.onError?e.asyncAction.onError:e.next}let _=(0,c.useCallback)(e=>h.current(e),[]),v=(0,c.useCallback)(()=>{let e=i.current;if(!e||!e.canGoBack()){m(`There is no previous step to go back to.`);return}t({type:`CLEAR_QUICK_REPLIES`});let n=e.popHistory();n?_(n):m(`There is no previous step to go back to.`)},[t,_,m]),y=(0,c.useCallback)(()=>{let e=i.current;e&&e.reset(),a.current=!1,t({type:`RESET_CHAT`}),e&&(a.current=!0,_(e.getStartStepId()))},[t,_]),b=(0,c.useRef)(()=>!1);b.current=e=>{let t=e.trim().toLowerCase();if(!t.startsWith(`/`))return!1;switch(t){case`/help`:return m(`Available commands:
3
- ${Object.entries(we).map(([e,t])=>`**${e}** — ${t}`).join(`
4
- `)}`),!0;case`/cancel`:case`/back`:return v(),!0;case`/restart`:return y(),!0;default:return m(`Unknown command: ${t}. Type /help for available commands.`),!0}};let x=(0,c.useCallback)(e=>{let n=i.current,a=o.current.currentStepId;if(!n||!a)return;let c=n.getStep(a);if(!c)return;e?.data&&(n.mergeData(e.data),t({type:`SET_DATA`,payload:e.data})),e?.message&&t({type:`ADD_MESSAGE`,payload:{id:K(),sender:`bot`,text:e.message,timestamp:Date.now()}});let l=e?.next??c.next;l?_(l):(r?.emitEvent(`flowEnd`,n.getData()),s.current.callbacks?.onFlowEnd?.(n.getData()),t({type:`SET_STEP`,payload:null}))},[t,_,r]),S=(0,c.useCallback)(async e=>{if(b.current(e))return;let n={id:K(),sender:`user`,text:e,timestamp:Date.now()},a=r?await r.onMessage(n):n;if(t({type:`ADD_MESSAGE`,payload:a}),s.current.callbacks?.onMessageSend?.(a),s.current.callbacks?.onSubmit?.({message:a.text}),o.current.isLiveAgent){l(a.text??``);return}let c=o.current.currentStepId,u=s.current.typingDelay??0;if(i.current&&c){let n=i.current.getStep(c);if(n){if(n.asyncAction||n.component){f(`Please wait, I'm still processing. You can type /back to go back.`);return}if(i.current.stepExpectsQuickReply(n)){let a=i.current.matchQuickReply(n,e);if(a){t({type:`CLEAR_QUICK_REPLIES`}),i.current.setData(n.id,a.value);let e=i.current.resolveNext(n,a.value);e?_(e):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}else f(`I didn't quite get that. Please choose one of the options below:`,{quickReplies:n.quickReplies})}else if(i.current.stepExpectsForm(n))f(`Please fill out the form above to continue.`);else if(n.input){let a=Oe(e,n.input);if(!a.valid){f(a.error??`Invalid input. Please try again.`);return}i.current.setData(n.id,a.value);let o=i.current.resolveNext(n,a.value);o?_(o):(f(`Thanks for your message! Our team will get back to you soon. 🙌`),r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}else{i.current.setData(n.id,e);let a=i.current.resolveNext(n,e);a?_(a):(f(`Thanks for your message! Our team will get back to you soon. 🙌`),r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}return}}let d=[...s.current.keywords??[]];if(s.current.greetingResponse&&d.push({patterns:Te,response:s.current.greetingResponse,matchType:`exact`,priority:-1}),d.length>0){let t=De(e.trim(),d);if(t){if(t.next&&i.current){u>0&&await q(u),_(t.next);return}if(t.response){u>0&&await q(u),await f(t.response);return}}}let p=s.current.fallbackMessage;if(p){let t=typeof p==`function`?p(e):p;if(t){u>0&&await q(u),await f(t);return}}s.current.callbacks?.onUnhandledMessage?.(e,{currentStepId:c})},[t,f,_,r]),C=(0,c.useCallback)(()=>{let e=i.current;!e||a.current||(a.current=!0,_(e.getStartStepId()))},[_]);return(0,c.useEffect)(()=>{n.flow&&!e.showWelcome&&e.isLoggedIn&&!a.current&&C()},[n.flow,e.showWelcome,e.isLoggedIn,C]),{state:e,sendMessage:S,addBotMessage:f,handleQuickReply:(0,c.useCallback)(async(e,n)=>{t({type:`CLEAR_QUICK_REPLIES`});let a={id:K(),sender:`user`,text:n,timestamp:Date.now()};t({type:`ADD_MESSAGE`,payload:a}),await r?.onMessage(a),r?.emitEvent(`quickReply`,{value:e,label:n}),s.current.callbacks?.onQuickReply?.(e,n);let c=o.current.currentStepId;if(i.current&&c){let n=i.current.getStep(c);if(n){i.current.setData(n.id,e);let a=i.current.resolveNext(n,e);a?_(a):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}}},[t,_,r]),handleFormSubmit:(0,c.useCallback)(async(e,n)=>{t({type:`SET_DATA`,payload:n}),i.current&&i.current.mergeData(n);let a=s.current.loginForm?.id===e?s.current.loginForm:i.current&&o.current.currentStepId?i.current.getStep(o.current.currentStepId)?.form:void 0,c=new Map;if(a)for(let e of a.fields){let t=e.options?new Map(e.options.map(e=>[e.value,e.label])):void 0;c.set(e.name,{label:e.label??e.name,optionMap:t})}let l=Object.entries(n).filter(([,e])=>e!==void 0&&e!==``).map(([e,t])=>{let n=c.get(e),r=n?.label??e,i=String(t);return`${r}: ${n?.optionMap?.get(i)??i}`}).join(`
5
- `),u={id:K(),sender:`user`,text:l,formData:n,timestamp:Date.now()};t({type:`ADD_MESSAGE`,payload:u}),await r?.onMessage(u),await r?.onSubmit(n),await s.current.callbacks?.onFormSubmit?.(e,n);let d=o.current.currentStepId;if(i.current&&d){let e=i.current.getStep(d);if(e){let n=i.current.resolveNext(e);n?_(n):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}}},[t,_,r]),handleLogin:(0,c.useCallback)(async e=>{await r?.onSubmit(e),r?.emitEvent(`login`,e),await s.current.callbacks?.onLogin?.(e),t({type:`SET_LOGGED_IN`,payload:!0})},[t,r]),toggleChat:(0,c.useCallback)(()=>{let e=!o.current.isOpen;t({type:`TOGGLE_OPEN`}),e?(r?.emitEvent(`open`),s.current.callbacks?.onOpen?.()):(r?.emitEvent(`close`),s.current.callbacks?.onClose?.())},[t,r]),dismissWelcome:(0,c.useCallback)(()=>{t({type:`DISMISS_WELCOME`})},[t]),startFlow:C,processFlowStep:_,goBack:v,restartSession:y,handleComponentComplete:x,requestTransfer:d,sendTyping:u}}var Ae=({styles:e,position:t,zIndex:n,hidden:r})=>{let{props:i,dispatch:a}=p(),o=g(i.theme),s=o.mode===`dark`,{state:u,sendMessage:d,handleQuickReply:f,handleFormSubmit:m,handleLogin:h,toggleChat:_,dismissWelcome:v,restartSession:y,handleComponentComplete:b}=ke(),x=t===`bottom-left`?{bottom:`96px`,left:`24px`}:{bottom:`96px`,right:`24px`},S=(0,c.useCallback)((e,t)=>{if(t&&t.length>0){let n=t.map(e=>({name:e.name,url:URL.createObjectURL(e),type:e.type,size:e.size}));e?(a({type:`ADD_MESSAGE`,payload:{id:K(),sender:`user`,text:e,timestamp:Date.now(),attachments:n}}),d(e)):a({type:`ADD_MESSAGE`,payload:{id:K(),sender:`user`,timestamp:Date.now(),attachments:n}}),i.callbacks?.onFileUpload?.(t)}else e&&d(e)},[d,a,i.callbacks]),C=i.customizeChat?.header?.config??{title:`Chat with us`},w=i.customizeChat?.branding?.config,T=i.customizeChat?.welcomeScreen?.content,E=(0,l.jsx)(A,{config:C,styles:e,onClose:_,onRestart:y,logo:w?.logo,logoWidth:w?.logoWidth}),D=(0,l.jsx)(W,{onSend:S,placeholder:i.inputPlaceholder,primaryColor:o.primaryColor,isDark:s,enableEmoji:i.enableEmoji,fileUpload:i.fileUpload,onFileUpload:i.callbacks?.onFileUpload});return r?(0,l.jsx)(`div`,{style:{display:`none`}}):(0,l.jsxs)(`div`,{style:{...e.window,...x,...n==null?{}:{zIndex:n}},children:[i.customizeChat?.header?.component??E,u.showWelcome&&T?i.customizeChat?.welcomeScreen?.component??(0,l.jsx)(j,{content:T,onDismiss:v,primaryColor:o.primaryColor}):!u.isLoggedIn&&i.loginForm?i.customizeChat?.loginScreen?.component??(0,l.jsx)(se,{config:i.loginForm,onLogin:h,primaryColor:o.primaryColor,renderFormField:i.renderFormField}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(R,{messages:u.messages,isTyping:u.isTyping,styles:e,primaryColor:o.primaryColor,onQuickReply:f,onFormSubmit:m,components:i.components,onComponentComplete:b,collectedData:u.collectedData,currentStepId:u.currentStepId,renderFormField:i.renderFormField,customizeChat:i.customizeChat}),(0,l.jsx)(`div`,{style:e.inputArea,children:i.customizeChat?.input?.component??D}),w&&(i.customizeChat?.branding?.component??(0,l.jsx)(G,{config:w,primaryColor:o.primaryColor}))]})]})},je=class{constructor(){this.plugins=[],this.context=null,this.eventHandlers=new Map}register(e){this.plugins=[...e]}setContext(e){this.context={...e,on:(e,t)=>this.on(e,t),emit:(e,...t)=>this.emit(e,...t)}}getContext(){return this.context}on(e,t){this.eventHandlers.has(e)||this.eventHandlers.set(e,new Set),this.eventHandlers.get(e).add(t)}emit(e,...t){let n=this.eventHandlers.get(e);n&&n.forEach(e=>e(...t))}async init(){if(!this.context)return;let e=this.context;await Promise.allSettled(this.plugins.map(async t=>{try{await t.onInit?.(e)}catch{}}))}async onMessage(e){if(!this.context)return e;let t=e;for(let e of this.plugins)try{let n=await e.onMessage?.(t,this.context);n&&typeof n==`object`&&`id`in n&&(t=n)}catch{}return this.dispatchEvent({type:`message`,payload:t,timestamp:Date.now()}),t}async onSubmit(e){if(this.context){for(let t of this.plugins)try{await t.onSubmit?.(e,this.context)}catch{}this.dispatchEvent({type:`submit`,payload:e,timestamp:Date.now()})}}emitEvent(e,t){this.dispatchEvent({type:e,payload:t,timestamp:Date.now()}),this.emit(e,t)}async destroy(){if(this.context){for(let e of this.plugins)try{await e.onDestroy?.(this.context)}catch{}this.eventHandlers.clear(),this.plugins=[]}}dispatchEvent(e){if(this.context)for(let t of this.plugins)try{t.onEvent?.(e,this.context)}catch{}}},Me=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`react`);c=s(c);let l=require(`react/jsx-runtime`);function u(e,t){switch(t.type){case`TOGGLE_OPEN`:return{...e,isOpen:!e.isOpen};case`SET_OPEN`:return{...e,isOpen:t.payload};case`ADD_MESSAGE`:return{...e,messages:[...e.messages,t.payload]};case`ADD_MESSAGES`:return{...e,messages:[...e.messages,...t.payload]};case`SET_TYPING`:return{...e,isTyping:t.payload};case`DISMISS_WELCOME`:return{...e,showWelcome:!1};case`SET_STEP`:return{...e,currentStepId:t.payload};case`SET_DATA`:return{...e,collectedData:{...e.collectedData,...t.payload}};case`SET_LOGGED_IN`:return{...e,isLoggedIn:t.payload};case`CLEAR_QUICK_REPLIES`:{let t=-1;for(let n=e.messages.length-1;n>=0;n--)if(e.messages[n].quickReplies){t=n;break}if(t===-1)return e;let n=[...e.messages];return n[t]={...n[t],quickReplies:void 0},{...e,messages:n}}case`RESET_CHAT`:return{...e,messages:[],isTyping:!1,currentStepId:null,collectedData:{}};case`UPDATE_MESSAGE`:return{...e,messages:e.messages.map(e=>e.id===t.payload.id?{...e,...t.payload.updates}:e)};case`SET_LIVE_AGENT`:return{...e,isLiveAgent:t.payload};case`SET_AGENT_INFO`:return{...e,agentInfo:t.payload};default:return e}}var d=e=>({isOpen:e.defaultOpen??!1,messages:e.initialMessages??[],isTyping:!1,showWelcome:!!e.customizeChat?.welcomeScreen?.content,currentStepId:null,collectedData:{},isLoggedIn:!e.loginForm,isLiveAgent:!1,agentInfo:null}),f=(0,c.createContext)(null);function p(){let e=(0,c.useContext)(f);if(!e)throw Error(`useChatContext must be used within ChatProvider`);return e}var m={primaryColor:`#6C5CE7`,headerBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,headerText:`#FFFFFF`,bubbleBg:`rgba(241, 243, 249, 0.85)`,bubbleText:`#2D3436`,userBubbleBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,userBubbleText:`#FFFFFF`,fontFamily:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,fontSize:`14px`,borderRadius:`20px`,windowWidth:`400px`,windowHeight:`600px`,mode:`light`},h={headerBg:`linear-gradient(135deg, #2D1B69 0%, #4A3298 100%)`,headerText:`#F0F0FF`,bubbleBg:`rgba(45, 45, 70, 0.85)`,bubbleText:`#E8E8F0`,userBubbleBg:`linear-gradient(135deg, #6C5CE7 0%, #A29BFE 100%)`,userBubbleText:`#FFFFFF`};function g(e){let t={...m,...e};return t.mode===`dark`?{...t,...h,...e}:t}function _(e){return{"--cb-primary":e.primaryColor,"--cb-header-bg":e.headerBg,"--cb-header-text":e.headerText,"--cb-bubble-bg":e.bubbleBg,"--cb-bubble-text":e.bubbleText,"--cb-user-bubble-bg":e.userBubbleBg,"--cb-user-bubble-text":e.userBubbleText,"--cb-font-family":e.fontFamily,"--cb-font-size":e.fontSize,"--cb-border-radius":e.borderRadius,"--cb-window-width":e.windowWidth,"--cb-window-height":e.windowHeight,"--cb-bg":e.mode===`dark`?`rgba(22, 22, 40, 0.95)`:`rgba(255, 255, 255, 0.92)`,"--cb-border":e.mode===`dark`?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.06)`,"--cb-input-bg":e.mode===`dark`?`rgba(40, 40, 65, 0.8)`:`rgba(245, 247, 252, 0.9)`,"--cb-input-border":e.mode===`dark`?`rgba(255,255,255,0.1)`:`rgba(0,0,0,0.06)`,"--cb-input-text":e.mode===`dark`?`#E0E0E0`:`#2D3436`,"--cb-branding-bg":e.mode===`dark`?`rgba(20, 20, 35, 0.8)`:`rgba(250, 250, 255, 0.8)`}}function v(e,t){let n=e.mode===`dark`;return{root:{fontFamily:e.fontFamily,fontSize:e.fontSize,lineHeight:`1.5`},launcher:{position:`fixed`,width:`62px`,height:`62px`,borderRadius:`50%`,background:e.headerBg,color:`#fff`,border:`none`,cursor:`pointer`,display:`flex`,alignItems:`center`,justifyContent:`center`,boxShadow:`0 6px 24px rgba(108, 92, 231, 0.4), 0 2px 8px rgba(0,0,0,0.1)`,transition:`all 0.3s cubic-bezier(0.4, 0, 0.2, 1)`,zIndex:9998,...t?.launcher},window:{position:`fixed`,width:e.windowWidth,height:e.windowHeight,maxHeight:`85vh`,borderRadius:e.borderRadius,overflow:`hidden`,display:`flex`,flexDirection:`column`,boxShadow:n?`0 20px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.05)`:`0 20px 60px rgba(108, 92, 231, 0.15), 0 8px 24px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04)`,backgroundColor:n?`rgba(22, 22, 40, 0.95)`:`rgba(255, 255, 255, 0.95)`,backdropFilter:`blur(20px)`,WebkitBackdropFilter:`blur(20px)`,border:n?`1px solid rgba(255,255,255,0.08)`:`1px solid rgba(255,255,255,0.8)`,zIndex:9999,animation:`cb-window-enter 0.35s cubic-bezier(0.4, 0, 0.2, 1)`,...t?.window},header:{background:e.headerBg,color:e.headerText,padding:`18px 20px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`12px`,flexShrink:0,position:`relative`,overflow:`hidden`,...t?.header},messageList:{flex:1,overflowY:`auto`,padding:`20px 16px`,display:`flex`,flexDirection:`column`,gap:`10px`,background:n?`linear-gradient(180deg, rgba(22, 22, 40, 0.98) 0%, rgba(30, 30, 50, 0.98) 100%)`:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.95) 100%)`,...t?.messageList},inputArea:{padding:`12px 16px 14px`,borderTop:`1px solid ${n?`rgba(255,255,255,0.06)`:`rgba(0,0,0,0.05)`}`,backgroundColor:n?`rgba(20, 20, 38, 0.9)`:`rgba(255, 255, 255, 0.95)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,flexShrink:0,...t?.inputArea},botBubble:{background:n?`rgba(45, 45, 70, 0.7)`:`rgba(241, 243, 249, 0.9)`,color:n?`#E8E8F0`:`#2D3436`,padding:`12px 16px`,borderRadius:`18px 18px 18px 4px`,maxWidth:`82%`,alignSelf:`flex-start`,wordBreak:`break-word`,whiteSpace:`pre-wrap`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,border:n?`1px solid rgba(255,255,255,0.06)`:`1px solid rgba(0,0,0,0.04)`,boxShadow:n?`0 2px 8px rgba(0,0,0,0.2)`:`0 2px 8px rgba(0,0,0,0.04)`,fontSize:`14px`,lineHeight:`1.55`,letterSpacing:`0.01em`},userBubble:{background:e.userBubbleBg,color:e.userBubbleText,padding:`12px 16px`,borderRadius:`18px 18px 4px 18px`,maxWidth:`82%`,alignSelf:`flex-end`,wordBreak:`break-word`,whiteSpace:`pre-wrap`,boxShadow:`0 4px 14px rgba(108, 92, 231, 0.25)`,fontSize:`14px`,lineHeight:`1.55`,letterSpacing:`0.01em`}}}var y=({size:e=18,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:t,children:(0,l.jsx)(`path`,{d:`M2.01 21L23 12 2.01 3 2 10l15 2-15 2z`})}),b=({size:e=28,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`})}),x=({size:e=20,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,l.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]}),S=({size:e=20,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})}),C=({size:e=20,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,l.jsx)(`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`}),(0,l.jsx)(`line`,{x1:`9`,y1:`9`,x2:`9.01`,y2:`9`}),(0,l.jsx)(`line`,{x1:`15`,y1:`9`,x2:`15.01`,y2:`9`})]}),w=({size:e=20,color:t=`currentColor`})=>(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,l.jsx)(`path`,{d:`M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48`})}),T=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`path`,{d:`M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z`}),(0,l.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]}),E=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,l.jsx)(`circle`,{cx:`8.5`,cy:`8.5`,r:`1.5`}),(0,l.jsx)(`polyline`,{points:`21 15 16 10 5 21`})]}),D=({size:e=14,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,l.jsx)(`line`,{x1:`15`,y1:`9`,x2:`9`,y2:`15`}),(0,l.jsx)(`line`,{x1:`9`,y1:`9`,x2:`15`,y2:`15`})]}),O=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`polyline`,{points:`1 4 1 10 7 10`}),(0,l.jsx)(`path`,{d:`M3.51 15a9 9 0 1 0 2.13-9.36L1 10`})]}),k=({size:e=16,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,l.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),ee=({size:e=18,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`path`,{d:`M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z`}),(0,l.jsx)(`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`}),(0,l.jsx)(`line`,{x1:`12`,y1:`19`,x2:`12`,y2:`23`}),(0,l.jsx)(`line`,{x1:`8`,y1:`23`,x2:`16`,y2:`23`})]}),te=({size:e=14,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,l.jsx)(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})]}),A=({size:e=14,color:t=`currentColor`})=>(0,l.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`polyline`,{points:`3 6 5 6 21 6`}),(0,l.jsx)(`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`})]}),j=({onClick:e,isOpen:t,position:n,styles:r,icon:i,closeIcon:a,zIndex:o})=>{let{props:s}=p(),c=s.icons,u=n===`bottom-left`?{bottom:`24px`,left:`24px`}:{bottom:`24px`,right:`24px`};return(0,l.jsx)(`button`,{onClick:e,"aria-label":t?`Close chat`:`Open chat`,style:{...r.launcher,...u,...o==null?{}:{zIndex:o},transform:t?`scale(0.92) rotate(90deg)`:`scale(1)`,animation:t?`none`:`cb-launcher-pulse 3s ease-in-out infinite`},children:t?a??c?.close??(0,l.jsx)(x,{size:22}):i??c?.chatBubble??(0,l.jsx)(b,{size:26})})},M=({config:e,styles:t,onClose:n,onRestart:r,logo:i,logoWidth:a,onSearchChange:o})=>{let{props:s}=p(),u=s.icons,[d,f]=(0,c.useState)(!1),[m,h]=(0,c.useState)(``),g=()=>{let e=!d;f(e),e||(h(``),o?.(``))},_=e=>{h(e),o?.(e)};return(0,l.jsxs)(`div`,{style:t.header,children:[(0,l.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,bottom:0,background:`linear-gradient(135deg, rgba(255,255,255,0.12) 0%, transparent 50%)`,pointerEvents:`none`}}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`12px`,flex:1,position:`relative`,zIndex:1},children:[e.avatar&&(0,l.jsxs)(`div`,{style:{position:`relative`},children:[(0,l.jsx)(`img`,{src:e.avatar,alt:``,style:{width:`40px`,height:`40px`,borderRadius:`50%`,objectFit:`cover`,border:`2px solid rgba(255,255,255,0.3)`}}),(0,l.jsx)(`span`,{style:{position:`absolute`,bottom:`1px`,right:`1px`,width:`10px`,height:`10px`,backgroundColor:`#2ECC71`,borderRadius:`50%`,border:`2px solid rgba(255,255,255,0.8)`}})]}),i&&!e.avatar&&(0,l.jsx)(`img`,{src:i,alt:``,style:{width:a??`36px`,height:`auto`,objectFit:`contain`,filter:`brightness(1.1)`}}),!e.avatar&&!i&&(0,l.jsx)(`div`,{style:{width:`40px`,height:`40px`,borderRadius:`50%`,background:`rgba(255,255,255,0.2)`,backdropFilter:`blur(4px)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:`18px`,fontWeight:700,color:`rgba(255,255,255,0.9)`,border:`1px solid rgba(255,255,255,0.2)`},children:(e.title??`C`).charAt(0).toUpperCase()}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{style:{fontWeight:600,fontSize:`16px`,letterSpacing:`-0.01em`},children:e.title??`Chat with us`}),e.subtitle&&(0,l.jsxs)(`div`,{style:{fontSize:`12px`,opacity:.8,display:`flex`,alignItems:`center`,gap:`5px`,marginTop:`1px`},children:[(0,l.jsx)(`span`,{style:{width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`#2ECC71`,display:`inline-block`}}),e.subtitle]})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`2px`,position:`relative`,zIndex:1},children:[s.enableSearch&&(0,l.jsx)(`button`,{onClick:g,"aria-label":`Search messages`,title:`Search messages`,style:{background:d?`rgba(255,255,255,0.25)`:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=d?`rgba(255,255,255,0.25)`:`rgba(255,255,255,0.1)`,children:u?.search??(0,l.jsx)(k,{size:15})}),e.showRestart&&r&&(0,l.jsx)(`button`,{onClick:r,"aria-label":`Restart conversation`,title:`Restart conversation`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:u?.restart??(0,l.jsx)(O,{size:16})}),e.showMinimize&&(0,l.jsx)(`button`,{onClick:n,"aria-label":`Minimize chat`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:u?.minimize??(0,l.jsx)(S,{size:16})}),e.showClose!==!1&&(0,l.jsx)(`button`,{onClick:n,"aria-label":`Close chat`,style:{background:`rgba(255,255,255,0.1)`,border:`none`,color:`inherit`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,borderRadius:`8px`,transition:`background 0.2s ease`},onMouseEnter:e=>e.currentTarget.style.background=`rgba(255,255,255,0.2)`,onMouseLeave:e=>e.currentTarget.style.background=`rgba(255,255,255,0.1)`,children:u?.close??(0,l.jsx)(x,{size:18})})]}),d&&(0,l.jsx)(`div`,{style:{position:`absolute`,bottom:`-40px`,left:0,right:0,padding:`6px 12px`,background:`inherit`,zIndex:5},children:(0,l.jsx)(`input`,{type:`text`,value:m,onChange:e=>_(e.target.value),placeholder:`Search messages...`,autoFocus:!0,style:{width:`100%`,padding:`6px 10px`,borderRadius:`8px`,border:`1px solid rgba(255,255,255,0.2)`,background:`rgba(255,255,255,0.15)`,color:`inherit`,fontSize:`13px`,outline:`none`}})})]})},N=({content:e,onDismiss:t,primaryColor:n})=>(0,l.jsxs)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,overflow:`auto`,background:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.98) 100%)`},children:[(0,l.jsx)(`div`,{style:{flex:1,padding:`28px 24px`,overflow:`auto`},children:e}),(0,l.jsx)(`div`,{style:{padding:`16px 20px`,borderTop:`1px solid rgba(0,0,0,0.05)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,flexShrink:0},children:(0,l.jsx)(`button`,{onClick:t,style:{width:`100%`,padding:`14px`,background:`linear-gradient(135deg, ${n} 0%, ${P(n,30)} 100%)`,color:`#fff`,border:`none`,borderRadius:`14px`,fontSize:`15px`,fontWeight:600,cursor:`pointer`,fontFamily:`inherit`,letterSpacing:`0.02em`,boxShadow:`0 6px 20px ${n}44`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 8px 28px ${n}55`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 6px 20px ${n}44`},children:`Start Chat`})})]});function P(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var F=({field:e,value:t,onChange:n,error:r})=>{let i=e.type===`textarea`,a=e.type===`textarea`?void 0:e.type===`datetime`?`datetime-local`:e.type,o={width:`100%`,padding:`10px 14px`,border:`1.5px solid ${r?`rgba(229, 62, 62, 0.5)`:`rgba(0,0,0,0.08)`}`,borderRadius:`12px`,fontSize:`13px`,fontFamily:`inherit`,outline:`none`,boxSizing:`border-box`,transition:`all 0.2s ease`,backgroundColor:`rgba(245, 247, 252, 0.6)`,color:`#2D3436`,letterSpacing:`0.01em`};return(0,l.jsxs)(`div`,{style:{marginBottom:`14px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500,color:`#2D3436`},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`3px`},children:`*`})]}),i?(0,l.jsx)(`textarea`,{value:t,onChange:e=>n(e.target.value),placeholder:e.placeholder,required:e.required,rows:3,style:{...o,resize:`vertical`},minLength:e.validation?.minLength,maxLength:e.validation?.maxLength}):(0,l.jsx)(`input`,{type:a,value:t,onChange:e=>n(e.target.value),placeholder:e.placeholder,required:e.required,style:o,min:e.validation?.min,max:e.validation?.max,minLength:e.validation?.minLength,maxLength:e.validation?.maxLength,pattern:e.validation?.pattern}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},ne=({field:e,value:t,onChange:n,error:r})=>{let i=e.type===`multiselect`||e.multiple,a=e=>{n(i?Array.from(e.target.selectedOptions,e=>e.value):e.target.value)},o=i?Array.isArray(t)?t:[t].filter(Boolean):typeof t==`string`?t:``;return(0,l.jsxs)(`div`,{style:{marginBottom:`14px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500,color:`#2D3436`},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`3px`},children:`*`})]}),(0,l.jsxs)(`select`,{value:o,onChange:a,multiple:i,required:e.required,style:{width:`100%`,padding:`10px 14px`,border:`1.5px solid ${r?`rgba(229, 62, 62, 0.5)`:`rgba(0,0,0,0.08)`}`,borderRadius:`12px`,fontSize:`13px`,fontFamily:`inherit`,outline:`none`,backgroundColor:`rgba(245, 247, 252, 0.6)`,color:`#2D3436`,boxSizing:`border-box`,transition:`all 0.2s ease`,...i?{minHeight:`80px`}:{}},children:[!i&&(0,l.jsx)(`option`,{value:``,children:`Select...`}),e.options?.map(e=>(0,l.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),i&&(0,l.jsx)(`div`,{style:{fontSize:`11px`,color:`#888`,marginTop:`2px`},children:`Hold Ctrl/Cmd to select multiple`}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},re=({field:e,value:t,onChange:n,error:r})=>(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`},children:e.options?.map(r=>(0,l.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`,fontSize:`13px`},children:[(0,l.jsx)(`input`,{type:`radio`,name:e.name,value:r.value,checked:t===r.value,onChange:()=>n(r.value),style:{margin:0}}),r.label]},r.value))}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]}),ie=({field:e,value:t,onChange:n,error:r})=>{let i=e=>{t.includes(e)?n(t.filter(t=>t!==e)):n([...t,e])};return(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`6px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`},children:e.options?.map(e=>(0,l.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,cursor:`pointer`,fontSize:`13px`},children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:t.includes(e.value),onChange:()=>i(e.value),style:{margin:0}}),e.label]},e.value))}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},ae=({field:e,value:t,onChange:n,error:r,primaryColor:i})=>{let a=(0,c.useRef)(null),o=t?Array.from(t).map(e=>e.name).join(`, `):``;return(0,l.jsxs)(`div`,{style:{marginBottom:`12px`},children:[e.label&&(0,l.jsxs)(`label`,{style:{display:`block`,marginBottom:`4px`,fontSize:`13px`,fontWeight:500},children:[e.label,e.required&&(0,l.jsx)(`span`,{style:{color:`#E53E3E`,marginLeft:`2px`},children:`*`})]}),(0,l.jsx)(`input`,{ref:a,type:`file`,accept:e.accept,multiple:e.multiple,onChange:e=>n(e.target.files),style:{display:`none`}}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>a.current?.click(),style:{padding:`8px 16px`,border:`1px dashed ${r?`#E53E3E`:`#D1D5DB`}`,borderRadius:`8px`,backgroundColor:`#FAFAFA`,cursor:`pointer`,fontSize:`13px`,color:`#555`,width:`100%`,textAlign:`left`},children:o||e.placeholder||`Choose file(s)...`}),o&&(0,l.jsxs)(`div`,{style:{fontSize:`12px`,color:i,marginTop:`4px`},children:[Array.from(t).length,` file(s) selected`]}),r&&(0,l.jsx)(`div`,{style:{color:`#E53E3E`,fontSize:`12px`,marginTop:`2px`},children:r})]})},I=({config:e,onSubmit:t,primaryColor:n,renderFormField:r})=>{let[i,a]=(0,c.useState)(()=>{let t={};for(let n of e.fields)n.defaultValue===void 0?n.type===`checkbox`||n.type===`multiselect`?t[n.name]=[]:n.type===`file`?t[n.name]=null:t[n.name]=``:t[n.name]=n.defaultValue;return t}),[o,s]=(0,c.useState)({}),[u,d]=(0,c.useState)(!1),f=(0,c.useCallback)((e,t)=>{a(n=>({...n,[e]:t})),s(t=>{let n={...t};return delete n[e],n})},[]),p=()=>{let t={};for(let n of e.fields){let e=i[n.name];if(n.required&&(e===``||e==null||Array.isArray(e)&&e.length===0)){t[n.name]=n.validation?.message??`${n.label||n.name} is required`;continue}if(n.validation?.pattern&&typeof e==`string`&&e)try{new RegExp(n.validation.pattern).test(e)||(t[n.name]=n.validation.message??`Invalid format`)}catch{}}return s(t),Object.keys(t).length===0};return u?(0,l.jsx)(`div`,{style:{padding:`16px`,background:`linear-gradient(135deg, rgba(46, 213, 115, 0.1), rgba(46, 213, 115, 0.05))`,borderRadius:`14px`,fontSize:`14px`,color:`#2ecc71`,textAlign:`center`,fontWeight:500,border:`1px solid rgba(46, 213, 115, 0.15)`,animation:`cb-fade-in 0.3s ease-out`},children:`✓ Submitted successfully`}):(0,l.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),p()&&(d(!0),t(i))},style:{background:`rgba(255, 255, 255, 0.7)`,backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`,borderRadius:`16px`,padding:`20px`,border:`1px solid rgba(0,0,0,0.06)`,boxShadow:`0 4px 16px rgba(0,0,0,0.04)`,animation:`cb-slide-up 0.35s ease-out`},children:[e.title&&(0,l.jsx)(`div`,{style:{fontWeight:600,fontSize:`15px`,marginBottom:`4px`,color:`#2D3436`,letterSpacing:`-0.01em`},children:e.title}),e.description&&(0,l.jsx)(`div`,{style:{fontSize:`12px`,color:`rgba(0,0,0,0.45)`,marginBottom:`16px`,lineHeight:`1.5`},children:e.description}),e.fields.map(e=>(0,l.jsx)(oe,{field:e,value:i[e.name],onChange:t=>f(e.name,t),error:o[e.name],primaryColor:n,renderFormField:r},e.name)),(0,l.jsx)(`button`,{type:`submit`,style:{width:`100%`,padding:`12px`,background:`linear-gradient(135deg, ${n} 0%, ${se(n,30)} 100%)`,color:`#fff`,border:`none`,borderRadius:`12px`,fontSize:`14px`,fontWeight:600,cursor:`pointer`,marginTop:`8px`,fontFamily:`inherit`,letterSpacing:`0.02em`,boxShadow:`0 4px 14px ${n}33`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 6px 20px ${n}44`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 4px 14px ${n}33`},children:e.submitLabel??`Submit`})]})},oe=({field:e,value:t,onChange:n,error:r,primaryColor:i,renderFormField:a})=>{let o=a?.[e.type];switch(e.type){case`text`:case`email`:case`password`:case`number`:case`tel`:case`url`:case`textarea`:case`date`:case`time`:case`datetime`:case`color`:case`range`:{let i={type:e.type,field:e,value:String(t??``),onChange:n,error:r},a=(0,l.jsx)(F,{field:e,value:String(t??``),onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`select`:case`multiselect`:{let i={type:e.type,field:e,value:t,onChange:n,error:r},a=(0,l.jsx)(ne,{field:e,value:t,onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`radio`:{let i={type:`radio`,field:e,value:String(t??``),onChange:n,error:r},a=(0,l.jsx)(re,{field:e,value:String(t??``),onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`checkbox`:{let i={type:`checkbox`,field:e,value:t??[],onChange:n,error:r},a=(0,l.jsx)(ie,{field:e,value:t??[],onChange:n,error:r});return o?(0,l.jsx)(l.Fragment,{children:o(i,a)}):a}case`file`:{let a={type:`file`,field:e,value:t,onChange:n,error:r,primaryColor:i},s=(0,l.jsx)(ae,{field:e,value:t,onChange:n,error:r,primaryColor:i});return o?(0,l.jsx)(l.Fragment,{children:o(a,s)}):s}case`hidden`:return(0,l.jsx)(`input`,{type:`hidden`,name:e.name,value:String(t??``)});default:return null}};function se(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var L=({config:e,onLogin:t,primaryColor:n,renderFormField:r})=>(0,l.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,justifyContent:`center`,padding:`24px`,overflow:`auto`,background:`linear-gradient(180deg, rgba(248, 249, 254, 0.95) 0%, rgba(255, 255, 255, 0.98) 100%)`},children:(0,l.jsx)(I,{config:e,onSubmit:t,primaryColor:n,renderFormField:r})});function ce(e,t={}){let n={bold:t.bold??!0,italic:t.italic??!0,code:t.code??!0,links:t.links??!0,lists:t.lists??!0,strikethrough:t.strikethrough??!0,headings:t.headings??!1},r=e.split(/(```[\s\S]*?```)/g),i=[];return r.forEach((e,t)=>{if(n.code&&e.startsWith("```")&&e.endsWith("```")){let n=e.slice(3,-3).replace(/^\w*\n/,``);i.push((0,l.jsx)(`pre`,{style:{background:`rgba(0,0,0,0.06)`,borderRadius:`6px`,padding:`8px 12px`,overflowX:`auto`,fontSize:`13px`,margin:`4px 0`},children:(0,l.jsx)(`code`,{children:n})},t))}else i.push(...le(e,n,t))}),(0,l.jsx)(l.Fragment,{children:i})}function le(e,t,n){let r=e.split(`
2
+ `),i=[],a=[],o=0,s=()=>{a.length>0&&(i.push((0,l.jsx)(`ul`,{style:{margin:`4px 0`,paddingLeft:`20px`},children:a},`${n}-ul-${o++}`)),a=[])};return r.forEach((e,r)=>{let o=`${n}-${r}`;if(t.headings){let n=e.match(/^(#{1,3})\s+(.+)$/);if(n){s();let e=n[1].length,r=R(n[2],t);i.push((0,l.jsx)(`div`,{style:{fontWeight:700,fontSize:{1:`1.4em`,2:`1.2em`,3:`1.05em`}[e],margin:`6px 0 2px`},children:r},o));return}}if(t.lists&&/^[\-\*•]\s+/.test(e)){let n=e.replace(/^[\-\*•]\s+/,``);a.push((0,l.jsx)(`li`,{children:R(n,t)},o));return}if(t.lists&&/^\d+\.\s+/.test(e)){s();let n=e.replace(/^\d+\.\s+/,``);i.push((0,l.jsxs)(`div`,{style:{paddingLeft:`20px`},children:[e.match(/^\d+/)[0],`. `,R(n,t)]},o));return}if(s(),e.trim()===``){i.push((0,l.jsx)(`br`,{},o));return}i.push((0,l.jsx)(`span`,{style:{display:`block`},children:R(e,t)},o))}),s(),i}function R(e,t){let n=[];if(t.code&&n.push("`([^`]+)`"),t.bold&&n.push(`\\*\\*([^*]+)\\*\\*`,`__([^_]+)__`),t.strikethrough&&n.push(`~~([^~]+)~~`),t.italic&&n.push(`\\*([^*]+)\\*`,`(?<!\\w)_([^_]+)_(?!\\w)`),t.links&&n.push(`\\[([^\\]]+)\\]\\((https?:\\/\\/[^)]+)\\)`),n.length===0)return e;let r=new RegExp(n.join(`|`),`g`),i=[],a=0,o=0,s;for(;(s=r.exec(e))!==null;){s.index>a&&i.push(e.slice(a,s.index));let n=s[0];if(t.code&&n.startsWith("`")&&n.endsWith("`"))i.push((0,l.jsx)(`code`,{style:{background:`rgba(0,0,0,0.06)`,borderRadius:`3px`,padding:`1px 4px`,fontSize:`0.9em`},children:n.slice(1,-1)},o++));else if(t.bold&&(n.startsWith(`**`)||n.startsWith(`__`))){let e=(n.startsWith(`**`),n.slice(2,-2));i.push((0,l.jsx)(`strong`,{children:R(e,{...t,bold:!1})},o++))}else if(t.strikethrough&&n.startsWith(`~~`))i.push((0,l.jsx)(`del`,{children:R(n.slice(2,-2),{...t,strikethrough:!1})},o++));else if(t.italic&&(n.startsWith(`*`)||n.startsWith(`_`))){let e=n.slice(1,-1);i.push((0,l.jsx)(`em`,{children:R(e,{...t,italic:!1})},o++))}else if(t.links&&n.startsWith(`[`)){let e=n.match(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/);e&&i.push((0,l.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noopener noreferrer`,style:{color:`inherit`,textDecoration:`underline`},children:e[1]},o++))}else i.push(n);a=s.index+n.length}return a<e.length&&i.push(e.slice(a)),i.length===1?i[0]:(0,l.jsx)(l.Fragment,{children:i})}var ue=({message:e,styles:t})=>{let{props:n}=p(),r=e.sender===`bot`,i=e.sender===`agent`,a=e.sender===`system`,o=r||a||i?t.botBubble:t.userBubble;if(!(e.text||e.attachments&&e.attachments.length>0))return null;let s=e.agentName??e.metadata?.agentName,c=a?{background:`transparent`,border:`none`,boxShadow:`none`,color:`#999`,fontSize:`12px`,alignSelf:`center`,padding:`6px 12px`,backdropFilter:`none`,WebkitBackdropFilter:`none`}:{};return(0,l.jsxs)(`div`,{style:{...o,...c,animation:`cb-fade-in 0.3s ease-out`},children:[i&&s&&(0,l.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,opacity:.7,marginBottom:`4px`},children:s}),e.text&&(0,l.jsx)(`span`,{style:{display:`block`},children:n.markdown?ce(e.text,n.markdown===!0?{}:n.markdown):e.text}),e.attachments&&e.attachments.length>0&&(0,l.jsx)(`div`,{style:{marginTop:e.text?`10px`:0,display:`flex`,flexDirection:`column`,gap:`6px`},children:e.attachments.map((e,t)=>(0,l.jsx)(de,{attachment:e,isBot:r},t))}),n.enableReactions&&(r||i)&&!a&&(0,l.jsx)(me,{message:e}),n.showReadReceipts&&e.sender===`user`&&e.status&&(0,l.jsxs)(`div`,{style:{fontSize:`10px`,opacity:.5,textAlign:`right`,marginTop:`2px`},children:[e.status===`sent`&&`✓`,e.status===`delivered`&&`✓✓`,e.status===`read`&&(0,l.jsx)(`span`,{style:{color:`#3B82F6`},children:`✓✓`})]}),n.allowMessageEdit&&e.sender===`user`&&!a&&(0,l.jsx)(he,{message:e})]})},de=({attachment:e,isBot:t})=>{let{props:n}=p(),r=n.icons;return e.type.startsWith(`image/`)&&e.url?(0,l.jsxs)(`div`,{style:{borderRadius:`12px`,overflow:`hidden`,maxWidth:`220px`},children:[(0,l.jsx)(`img`,{src:e.url,alt:e.name,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`}}),(0,l.jsx)(`div`,{style:{fontSize:`11px`,padding:`4px 0`,opacity:.6},children:e.name})]}):(0,l.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,style:{display:`flex`,alignItems:`center`,gap:`8px`,padding:`8px 12px`,backgroundColor:t?`rgba(0,0,0,0.04)`:`rgba(255,255,255,0.15)`,borderRadius:`10px`,textDecoration:`none`,color:`inherit`,fontSize:`13px`,border:t?`1px solid rgba(0,0,0,0.06)`:`1px solid rgba(255,255,255,0.15)`,transition:`background 0.2s ease`},children:[r?.file??(0,l.jsx)(T,{size:16}),(0,l.jsx)(`span`,{style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1},children:e.name}),e.size&&(0,l.jsx)(`span`,{style:{fontSize:`11px`,opacity:.5,flexShrink:0},children:fe(e.size)})]})};function fe(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}var pe=[`👍`,`👎`,`❤️`,`😂`,`😮`],me=({message:e})=>{let{props:t,dispatch:n}=p(),[r,i]=(0,c.useState)(!1),a=Array.isArray(t.enableReactions)?t.enableReactions:pe,o=e.reactions??[],s=r=>{let a=o.find(e=>e.emoji===r),s=!a?.reacted,c=a?o.map(e=>e.emoji===r?{...e,count:s?e.count+1:Math.max(0,e.count-1),reacted:s}:e):[...o,{emoji:r,count:1,reacted:!0}];n({type:`UPDATE_MESSAGE`,payload:{id:e.id,updates:{reactions:c.filter(e=>e.count>0)}}}),t.callbacks?.onReaction?.(e.id,r,s),i(!1)};return(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`4px`,marginTop:`6px`,flexWrap:`wrap`},children:[o.map(e=>(0,l.jsxs)(`button`,{onClick:()=>s(e.emoji),style:{display:`inline-flex`,alignItems:`center`,gap:`3px`,padding:`2px 6px`,borderRadius:`12px`,border:e.reacted?`1px solid rgba(108,92,231,0.4)`:`1px solid rgba(0,0,0,0.08)`,background:e.reacted?`rgba(108,92,231,0.1)`:`rgba(0,0,0,0.03)`,cursor:`pointer`,fontSize:`12px`,transition:`all 0.15s ease`},children:[(0,l.jsx)(`span`,{children:e.emoji}),e.count>0&&(0,l.jsx)(`span`,{style:{fontSize:`11px`,opacity:.7},children:e.count})]},e.emoji)),(0,l.jsxs)(`div`,{style:{position:`relative`},children:[(0,l.jsx)(`button`,{onClick:()=>i(!r),style:{width:`22px`,height:`22px`,borderRadius:`50%`,border:`1px solid rgba(0,0,0,0.08)`,background:`rgba(0,0,0,0.03)`,cursor:`pointer`,fontSize:`11px`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:`all 0.15s ease`},"aria-label":`React`,children:`+`}),r&&(0,l.jsx)(`div`,{style:{position:`absolute`,bottom:`100%`,left:0,marginBottom:`4px`,display:`flex`,gap:`2px`,padding:`4px 6px`,borderRadius:`16px`,background:`#fff`,boxShadow:`0 2px 12px rgba(0,0,0,0.15)`,border:`1px solid rgba(0,0,0,0.08)`,zIndex:10},children:a.map(e=>(0,l.jsx)(`button`,{onClick:()=>s(e),style:{background:`none`,border:`none`,cursor:`pointer`,fontSize:`16px`,padding:`2px`,borderRadius:`4px`,transition:`transform 0.1s`},onMouseEnter:e=>e.currentTarget.style.transform=`scale(1.3)`,onMouseLeave:e=>e.currentTarget.style.transform=`scale(1)`,children:e},e))})]})]})},he=({message:e})=>{let{dispatch:t,props:n}=p(),[r,i]=(0,c.useState)(!1),[a,o]=(0,c.useState)(e.text??``),s=n.icons,u=()=>{a.trim()&&t({type:`UPDATE_MESSAGE`,payload:{id:e.id,updates:{text:a.trim(),metadata:{...e.metadata,edited:!0}}}}),i(!1)},d=()=>{t({type:`UPDATE_MESSAGE`,payload:{id:e.id,updates:{text:void 0,metadata:{...e.metadata,deleted:!0}}}})};return r?(0,l.jsxs)(`div`,{style:{marginTop:`4px`,display:`flex`,gap:`4px`},children:[(0,l.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),onKeyDown:e=>e.key===`Enter`&&u(),autoFocus:!0,style:{flex:1,padding:`4px 8px`,borderRadius:`8px`,border:`1px solid rgba(0,0,0,0.1)`,fontSize:`13px`,outline:`none`}}),(0,l.jsx)(`button`,{onClick:u,style:{background:`none`,border:`none`,cursor:`pointer`,fontSize:`12px`,color:`#10B981`},children:`✓`}),(0,l.jsx)(`button`,{onClick:()=>i(!1),style:{background:`none`,border:`none`,cursor:`pointer`,fontSize:`12px`,color:`#999`},children:`✕`})]}):(0,l.jsxs)(`div`,{style:{display:`flex`,gap:`4px`,marginTop:`4px`,opacity:.4,transition:`opacity 0.15s`},onMouseEnter:e=>e.currentTarget.style.opacity=`1`,onMouseLeave:e=>e.currentTarget.style.opacity=`0.4`,children:[(0,l.jsx)(`button`,{onClick:()=>i(!0),style:{background:`none`,border:`none`,cursor:`pointer`,display:`flex`,padding:`2px`},"aria-label":`Edit`,children:s?.edit??(0,l.jsx)(te,{size:12})}),(0,l.jsx)(`button`,{onClick:d,style:{background:`none`,border:`none`,cursor:`pointer`,display:`flex`,padding:`2px`,color:`#EF4444`},"aria-label":`Delete`,children:s?.trash??(0,l.jsx)(A,{size:12})}),!!e.metadata?.edited&&(0,l.jsx)(`span`,{style:{fontSize:`10px`,opacity:.5},children:`(edited)`})]})},ge=({replies:e,onSelect:t,primaryColor:n})=>(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`8px`,alignSelf:`flex-start`,maxWidth:`90%`,animation:`cb-slide-up 0.35s ease-out`,padding:`4px 0`},children:e.map(e=>(0,l.jsx)(`button`,{onClick:()=>t(e.value,e.label),style:{padding:`8px 18px`,borderRadius:`22px`,border:`1.5px solid ${n}`,backgroundColor:`rgba(108, 92, 231, 0.06)`,color:n,cursor:`pointer`,fontSize:`13px`,fontWeight:500,fontFamily:`inherit`,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,letterSpacing:`0.01em`},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=n,e.currentTarget.style.color=`#fff`,e.currentTarget.style.transform=`translateY(-1px)`,e.currentTarget.style.boxShadow=`0 4px 14px ${n}44`},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=`rgba(108, 92, 231, 0.06)`,e.currentTarget.style.color=n,e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`none`},children:e.label},e.value))}),_e=({color:e})=>{let t={width:`7px`,height:`7px`,borderRadius:`50%`,backgroundColor:e,opacity:.35,animation:`cb-typing-bounce 1.4s infinite ease-in-out`};return(0,l.jsxs)(`div`,{style:{display:`flex`,gap:`5px`,padding:`14px 18px`,background:`rgba(241, 243, 249, 0.8)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderRadius:`18px 18px 18px 4px`,alignSelf:`flex-start`,alignItems:`center`,border:`1px solid rgba(0,0,0,0.04)`,boxShadow:`0 2px 8px rgba(0,0,0,0.04)`,animation:`cb-fade-in 0.3s ease-out`},children:[(0,l.jsx)(`span`,{style:{...t,animationDelay:`0s`}}),(0,l.jsx)(`span`,{style:{...t,animationDelay:`0.2s`}}),(0,l.jsx)(`span`,{style:{...t,animationDelay:`0.4s`}})]})},ve=({cards:e,primaryColor:t,onCardAction:n})=>(0,l.jsx)(`div`,{style:{display:`flex`,gap:`10px`,overflowX:`auto`,padding:`4px 2px 8px`,scrollSnapType:`x mandatory`,WebkitOverflowScrolling:`touch`,maxWidth:`100%`},children:e.map((e,r)=>(0,l.jsxs)(`div`,{style:{minWidth:`200px`,maxWidth:`220px`,borderRadius:`12px`,border:`1px solid rgba(0,0,0,0.08)`,overflow:`hidden`,flexShrink:0,scrollSnapAlign:`start`,background:`rgba(255,255,255,0.95)`,boxShadow:`0 2px 8px rgba(0,0,0,0.06)`},children:[e.image&&(0,l.jsx)(`img`,{src:e.image,alt:e.title,style:{width:`100%`,height:`120px`,objectFit:`cover`,display:`block`}}),(0,l.jsxs)(`div`,{style:{padding:`10px 12px`},children:[(0,l.jsx)(`div`,{style:{fontWeight:600,fontSize:`13px`,marginBottom:`2px`,color:`#1a1a2e`},children:e.title}),e.subtitle&&(0,l.jsx)(`div`,{style:{fontSize:`12px`,color:`#666`,lineHeight:`1.4`},children:e.subtitle}),e.buttons&&e.buttons.length>0&&(0,l.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`,marginTop:`8px`},children:e.buttons.map((e,r)=>(0,l.jsx)(`button`,{onClick:()=>{e.url?window.open(e.url,`_blank`,`noopener,noreferrer`):(e.value||e.next)&&n?.(e.value??e.next??``)},style:{padding:`6px 10px`,borderRadius:`8px`,border:`1px solid ${t}`,background:`transparent`,color:t,fontSize:`12px`,fontWeight:500,cursor:`pointer`,transition:`all 0.15s ease`,textAlign:`center`},onMouseEnter:e=>{e.currentTarget.style.background=t,e.currentTarget.style.color=`#fff`},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`,e.currentTarget.style.color=t},children:e.label},r))})]})]},r))}),ye=({messages:e,isTyping:t,styles:n,primaryColor:r,onQuickReply:i,onFormSubmit:a,components:o,onComponentComplete:s,collectedData:u,currentStepId:d,renderFormField:f,customizeChat:p,searchQuery:m})=>{let h=(0,c.useRef)(null);(0,c.useEffect)(()=>{h.current?.scrollIntoView({behavior:`smooth`})},[e,t]);let g=p?.messageBubble?.component??ue,_=p?.quickReplies?.component??ge,v=p?.typingIndicator?.component??_e,y=m?e.filter(e=>e.text?.toLowerCase().includes(m.toLowerCase())):e;return(0,l.jsxs)(`div`,{style:n.messageList,className:`cb-scrollbar`,children:[y.map(e=>(0,l.jsxs)(c.default.Fragment,{children:[(0,l.jsx)(g,{message:e,styles:n}),e.cards&&e.cards.length>0&&(0,l.jsx)(ve,{cards:e.cards,primaryColor:r,onCardAction:e=>i(e,e)}),e.quickReplies&&e.quickReplies.length>0&&(0,l.jsx)(_,{replies:e.quickReplies,onSelect:i,primaryColor:r}),e.form&&(0,l.jsx)(`div`,{style:{alignSelf:`flex-start`,width:`92%`,animation:`cb-slide-up 0.35s ease-out`},children:(0,l.jsx)(I,{config:e.form,onSubmit:t=>a(e.form.id,t),primaryColor:r,renderFormField:f})}),e.component&&o?.[e.component]&&(0,l.jsx)(`div`,{style:{alignSelf:`flex-start`,width:`92%`,animation:`cb-slide-up 0.35s ease-out`},children:c.default.createElement(o[e.component],{stepId:d??``,data:u??{},onComplete:e=>s?.(e)})})]},e.id)),t&&(0,l.jsx)(v,{color:r}),(0,l.jsx)(`div`,{ref:h})]})},be=[{name:`Smileys`,emojis:`😀.😃.😄.😁.😅.😂.🤣.😊.😇.🙂.😉.😍.🥰.😘.😋.😜.🤪.🤗.🤔.🤫.🤭.😏.😐.😑.😶.😌.😴.🤤.😷.🤒`.split(`.`)},{name:`Gestures`,emojis:`👍.👎.👌.✌️.🤞.🤟.🤘.👋.🤚.✋.🖖.👏.🙌.🤝.🙏.💪.🖐️.☝️.👆.👇.👈.👉.🤙.🫡.🫶.🫰.🫳.🫴.🫲.🫱`.split(`.`)},{name:`Hearts`,emojis:`❤️.🧡.💛.💚.💙.💜.🖤.🤍.🤎.💔.❣️.💕.💞.💓.💗.💖.💘.💝.💟.♥️.🫀.💌.💐.🌹.🌺.🌸.🌼.🌻.🌷.💮`.split(`.`)},{name:`Objects`,emojis:`🔥.⭐.✨.💯.🎉.🎊.🎯.🚀.💡.📌.📎.🔗.💻.📱.☎️.📧.📝.📋.📊.📈.🗂️.📁.🔒.🔑.⚙️.🛠️.🔧.📦.🏷️.✅`.split(`.`)}],xe=({onSelect:e,onClose:t,primaryColor:n})=>{let[r,i]=(0,c.useState)(0),a=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{a.current&&!a.current.contains(e.target)&&t()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[t]);let o=be[r]?.emojis??[];return(0,l.jsxs)(`div`,{ref:a,style:{position:`absolute`,bottom:`100%`,left:0,width:`280px`,backgroundColor:`rgba(255, 255, 255, 0.92)`,backdropFilter:`blur(20px)`,WebkitBackdropFilter:`blur(20px)`,borderRadius:`16px`,boxShadow:`0 8px 32px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04)`,border:`1px solid rgba(255,255,255,0.8)`,overflow:`hidden`,zIndex:10,marginBottom:`8px`,animation:`cb-slide-up 0.25s ease-out`},children:[(0,l.jsx)(`div`,{style:{display:`flex`,borderBottom:`1px solid rgba(0,0,0,0.06)`,padding:`6px`,gap:`3px`},children:be.map((e,t)=>(0,l.jsx)(`button`,{onClick:()=>i(t),title:e.name,style:{flex:1,padding:`6px 4px`,border:`none`,borderRadius:`8px`,cursor:`pointer`,fontSize:`11px`,fontWeight:600,fontFamily:`inherit`,letterSpacing:`0.02em`,background:t===r?`linear-gradient(135deg, ${n}, ${n}CC)`:`transparent`,color:t===r?`#fff`:`rgba(0,0,0,0.4)`,transition:`all 0.2s ease`,boxShadow:t===r?`0 2px 8px ${n}33`:`none`},children:e.name},e.name))}),(0,l.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(8, 1fr)`,gap:`2px`,padding:`8px`,maxHeight:`180px`,overflowY:`auto`},children:o.map(n=>(0,l.jsx)(`button`,{onClick:()=>{e(n),t()},style:{width:`30px`,height:`30px`,border:`none`,backgroundColor:`transparent`,cursor:`pointer`,fontSize:`18px`,borderRadius:`6px`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:`all 0.15s ease`},onMouseEnter:e=>e.currentTarget.style.backgroundColor=`rgba(108, 92, 231, 0.08)`,onMouseLeave:e=>e.currentTarget.style.backgroundColor=`transparent`,children:n},n))})]})},z=({config:e,onFiles:t,selectedFiles:n,onRemoveFile:r,primaryColor:i})=>{let{props:a}=p(),o=a.icons,s=(0,c.useRef)(null);return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`input`,{ref:s,type:`file`,accept:e.accept,multiple:e.multiple!==!1,onChange:r=>{let i=r.target.files;if(!i||i.length===0)return;let a=Array.from(i);if(e.maxSize&&a.filter(t=>t.size>e.maxSize).length>0){alert(`File(s) too large. Max size: ${V(e.maxSize)}`);return}let o=e.maxFiles??5;if(n.length+a.length>o){alert(`Maximum ${o} files allowed`);return}t(a),s.current&&(s.current.value=``)},style:{display:`none`}}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>s.current?.click(),"aria-label":`Attach file`,title:`Attach file`,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`6px`,display:`flex`,alignItems:`center`,color:`#999`,borderRadius:`6px`,transition:`color 0.15s ease`},onMouseEnter:e=>e.currentTarget.style.color=i,onMouseLeave:e=>e.currentTarget.style.color=`#999`,children:o?.attachment??(0,l.jsx)(w,{size:20})})]})},B=({files:e,onRemove:t,primaryColor:n})=>e.length===0?null:(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`6px`,padding:`8px 12px 0`},children:e.map((e,r)=>(0,l.jsx)(Se,{file:e,onRemove:()=>t(r),primaryColor:n},`${e.name}-${r}`))}),Se=({file:e,onRemove:t,primaryColor:n})=>{let{props:r}=p(),i=r.icons,a=e.type.startsWith(`image/`);return(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,padding:`4px 8px`,backgroundColor:`#F3F4F6`,borderRadius:`8px`,fontSize:`12px`,maxWidth:`200px`},children:[(0,l.jsx)(`span`,{style:{color:n,flexShrink:0},children:a?i?.image??(0,l.jsx)(E,{size:14}):i?.file??(0,l.jsx)(T,{size:14})}),(0,l.jsx)(`span`,{style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,color:`#555`},children:e.name}),(0,l.jsx)(`span`,{style:{color:`#999`,fontSize:`11px`,flexShrink:0},children:V(e.size)}),(0,l.jsx)(`button`,{onClick:t,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`0`,display:`flex`,color:`#999`,flexShrink:0},children:i?.remove??(0,l.jsx)(D,{size:14})})]})};function V(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}var H=({onSend:e,placeholder:t=`Type a message...`,primaryColor:n,isDark:r=!1,disabled:i,styleOverride:a,enableEmoji:o=!1,fileUpload:s,onFileUpload:u})=>{let{props:d}=p(),f=d.icons,[m,h]=(0,c.useState)(``),[g,_]=(0,c.useState)(!1),[v,b]=(0,c.useState)([]),[x,S]=(0,c.useState)(!1),w=(0,c.useRef)(null),T=(0,c.useRef)(null),E=d.enableVoice,D=!!E&&typeof window<`u`&&(`SpeechRecognition`in window||`webkitSpeechRecognition`in window),O=(0,c.useCallback)(()=>{if(!D)return;if(x){T.current?.stop?.(),S(!1);return}let e=window.SpeechRecognition??window.webkitSpeechRecognition;if(!e)return;let t=new e,n=typeof E==`object`?E.lang:void 0,r=typeof E==`object`?E.continuous:!1;t.lang=n??navigator.language,t.continuous=r??!1,t.interimResults=!0,t.onresult=e=>{h(Array.from(e.results).map(e=>e[0].transcript).join(``))},t.onend=()=>S(!1),t.onerror=()=>S(!1),t.start(),T.current=t,S(!0)},[D,E,x]),k=(0,c.useCallback)(()=>{let t=m.trim();!t&&v.length===0||(e(t,v.length>0?v:void 0),h(``),b([]),w.current?.focus())},[m,v,e]),te=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),k())},A=(0,c.useRef)(null),j=e=>{h(e),d.showUserTyping&&d.callbacks?.onUserTyping&&(d.callbacks.onUserTyping(!0),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>d.callbacks?.onUserTyping?.(!1),2e3))},M=e=>{h(t=>t+e),w.current?.focus()},N=e=>{b(t=>[...t,...e]),u?.(e)},P=e=>{b(t=>t.filter((t,n)=>n!==e))},F=m.trim()||v.length>0;return(0,l.jsxs)(`div`,{style:{position:`relative`,...a},children:[v.length>0&&(0,l.jsx)(B,{files:v,onRemove:P,primaryColor:n}),g&&(0,l.jsx)(xe,{onSelect:M,onClose:()=>_(!1),primaryColor:n}),(0,l.jsxs)(`div`,{style:{display:`flex`,gap:`8px`,alignItems:`flex-end`,background:r?`rgba(40, 40, 65, 0.5)`:`rgba(245, 247, 252, 0.7)`,borderRadius:`16px`,border:`1px solid ${r?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.05)`}`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,padding:`6px 6px 6px 12px`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`2px`,flexShrink:0,paddingBottom:`2px`},children:[o&&(0,l.jsx)(`button`,{type:`button`,onClick:()=>_(!g),"aria-label":`Emoji`,title:`Emoji`,style:{background:`none`,border:`none`,cursor:`pointer`,padding:`6px`,display:`flex`,color:g?n:r?`rgba(255,255,255,0.35)`:`rgba(0,0,0,0.3)`,borderRadius:`8px`,transition:`all 0.2s ease`},children:f?.emoji??(0,l.jsx)(C,{size:20})}),s?.enabled&&(0,l.jsx)(z,{config:s,onFiles:N,selectedFiles:v,onRemoveFile:P,primaryColor:n}),D&&(0,l.jsx)(`button`,{type:`button`,onClick:O,"aria-label":x?`Stop listening`:`Voice input`,title:x?`Stop listening`:`Voice input`,style:{background:x?n:`none`,border:`none`,cursor:`pointer`,padding:`6px`,display:`flex`,color:x?`#fff`:r?`rgba(255,255,255,0.35)`:`rgba(0,0,0,0.3)`,borderRadius:`8px`,transition:`all 0.2s ease`,animation:x?`cb-pulse 1.5s infinite`:`none`},children:f?.mic??(0,l.jsx)(ee,{size:18})})]}),(0,l.jsx)(`textarea`,{ref:w,value:m,onChange:e=>j(e.target.value),onKeyDown:te,placeholder:t,disabled:i,rows:1,style:{flex:1,padding:`8px 2px`,border:`none`,borderRadius:`12px`,outline:`none`,resize:`none`,fontFamily:`inherit`,fontSize:`14px`,lineHeight:`1.45`,maxHeight:`100px`,overflowY:`auto`,backgroundColor:`transparent`,color:r?`#E0E0E0`:`#2D3436`,letterSpacing:`0.01em`}}),(0,l.jsx)(`button`,{onClick:k,disabled:i||!F,"aria-label":`Send message`,style:{width:`36px`,height:`36px`,borderRadius:`12px`,background:F?`linear-gradient(135deg, ${n} 0%, ${Ce(n,30)} 100%)`:r?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.06)`,color:F?`#fff`:r?`rgba(255,255,255,0.25)`:`rgba(0,0,0,0.2)`,border:`none`,cursor:F?`pointer`:`default`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,transition:`all 0.25s cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:F?`0 4px 12px ${n}44`:`none`},children:f?.send??(0,l.jsx)(y,{size:16})})]})]})};function Ce(e,t){let n=parseInt(e.replace(`#`,``),16),r=Math.min(255,(n>>16&255)+t),i=Math.min(255,(n>>8&255)+t),a=Math.min(255,(n&255)+t);return`#${(r<<16|i<<8|a).toString(16).padStart(6,`0`)}`}var we=({config:e,primaryColor:t})=>{if(e.showBranding===!1)return null;let n=e.poweredBy??`React ChatBot`;return(0,l.jsxs)(`div`,{style:{padding:`8px 16px`,textAlign:`center`,fontSize:`11px`,color:`rgba(0,0,0,0.35)`,background:`rgba(250, 250, 255, 0.7)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderTop:`1px solid rgba(0,0,0,0.04)`,flexShrink:0,letterSpacing:`0.02em`},children:[`Powered by`,` `,e.poweredByUrl?(0,l.jsx)(`a`,{href:e.poweredByUrl,target:`_blank`,rel:`noopener noreferrer`,style:{color:t,textDecoration:`none`,fontWeight:600,transition:`opacity 0.2s ease`},children:n}):(0,l.jsx)(`span`,{style:{color:t,fontWeight:600},children:n})]})},Te=0,U=()=>`msg_${Date.now()}_${++Te}`,W=e=>new Promise(t=>setTimeout(t,e)),G=class{constructor(e){this.collectedData={},this.stepHistory=[],this.startStep=e.startStep,this.steps=new Map(e.steps.map(e=>[e.id,e]))}getStartStepId(){return this.startStep}getStep(e){return this.steps.get(e)}getData(){return{...this.collectedData}}setData(e,t){this.collectedData[e]=t}mergeData(e){Object.assign(this.collectedData,e)}pushHistory(e){this.stepHistory.push(e)}popHistory(){return this.stepHistory.pop(),this.stepHistory.pop()}canGoBack(){return this.stepHistory.length>1}reset(){this.collectedData={},this.stepHistory=[]}resolveNext(e,t){if(e.condition){let{field:t,operator:n,value:r,then:i,else:a}=e.condition,o=this.collectedData[t];return this.evaluate(o,n,r)?i:a}if(t&&e.quickReplies){let n=e.quickReplies.find(e=>e.value===t);if(n?.next)return n.next}return e.next}isStepVisible(e){if(!e.visibleIf)return!0;let{field:t,operator:n,value:r}=e.visibleIf;return this.evaluate(this.collectedData[t],n,r)}getSubFlowStartStep(e){if(e.subFlow)return e.subFlow.steps.find(t=>t.id===e.subFlow.startStep)}stepExpectsQuickReply(e){return!!(e.quickReplies&&e.quickReplies.length>0)}stepExpectsForm(e){return!!e.form}matchQuickReply(e,t){if(!e.quickReplies)return;let n=t.toLowerCase().trim();return n?e.quickReplies.find(e=>e.value.toLowerCase()===n)||e.quickReplies.find(e=>e.label.toLowerCase().replace(/[^\w\s]/g,``).trim()===n)||e.quickReplies.find(e=>n.includes(e.value.toLowerCase())||e.label.toLowerCase().includes(n)):void 0}buildMessages(e){let t=[],n=e.messages??(e.message?[e.message]:[]);for(let e of n)t.push({id:U(),sender:`bot`,text:e,timestamp:Date.now()});return e.quickReplies&&t.length>0&&(t[t.length-1].quickReplies=e.quickReplies),e.form&&t.push({id:U(),sender:`bot`,timestamp:Date.now(),form:e.form}),e.component&&t.push({id:U(),sender:`bot`,timestamp:Date.now(),component:e.component}),t}evaluate(e,t,n){switch(t){case`eq`:return String(e)===String(n);case`neq`:return String(e)!==String(n);case`contains`:return String(e).includes(String(n));case`gt`:return Number(e)>Number(n);case`lt`:return Number(e)<Number(n);default:return!1}}},K=class{constructor(e,t,n){this.driver=e,this.events=t,this.sessionId=n}sendUserMessage(e,t){this.driver.send(this.events.userMessage,{text:e,sessionId:this.sessionId,timestamp:Date.now(),...t?.length?{attachments:t}:{}})}sendUserTyping(){this.driver.send(this.events.userTyping,{sessionId:this.sessionId,timestamp:Date.now()})}requestTransfer(e){this.driver.send(this.events.transferRequest,{sessionId:this.sessionId,department:e,timestamp:Date.now()})}initSession(){this.driver.send(this.events.sessionInit,{sessionId:this.sessionId,timestamp:Date.now()})}on(e,t){this.driver.on(e,t)}off(e,t){this.driver.off(e,t)}isConnected(){return this.driver.isConnected()}destroy(){this.driver.destroy()}},Ee=class{constructor(e){this.listeners=new Map,this.ws=e,this.boundOnMessage=this.handleMessage.bind(this),this.ws.addEventListener(`message`,this.boundOnMessage)}send(e,t){this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({event:e,data:t}))}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.get(e)?.delete(t)}isConnected(){return this.ws.readyState===WebSocket.OPEN}destroy(){this.ws.removeEventListener(`message`,this.boundOnMessage),this.listeners.clear()}handleMessage(e){try{let t=JSON.parse(String(e.data));if(t.event){let e=this.listeners.get(t.event);e&&e.forEach(e=>e(t.data))}}catch{}}},De=class{constructor(e){this.registeredHandlers=[],this.socket=e}send(e,t){this.socket.emit(e,t)}on(e,t){this.socket.on(e,t),this.registeredHandlers.push({event:e,handler:t})}off(e,t){this.socket.off(e,t),this.registeredHandlers=this.registeredHandlers.filter(n=>!(n.event===e&&n.handler===t))}isConnected(){return this.socket.connected}destroy(){for(let{event:e,handler:t}of this.registeredHandlers)this.socket.off(e,t);this.registeredHandlers=[]}},q={agentMessage:`agent:message`,userMessage:`user:message`,agentJoined:`agent:joined`,agentLeft:`agent:left`,agentTyping:`agent:typing`,userTyping:`user:typing`,sessionInit:`session:init`,sessionHistory:`session:history`,transferRequest:`transfer:request`,transferAccepted:`transfer:accepted`,queueUpdate:`queue:update`};function Oe(e){return{...q,...e}}function ke(e){if(e.sessionId)return e.sessionId;let t=(e.storageKey??`chatbot_live_`)+`session_id`;if(typeof localStorage<`u`){let e=localStorage.getItem(t);if(e)return e;let n=U();return localStorage.setItem(t,n),n}return U()}function Ae({config:e,dispatch:t,messages:n}){let r=(0,c.useRef)(null),i=(0,c.useRef)(!1),a=(0,c.useRef)(null),o=(0,c.useRef)(null),s=(0,c.useRef)(n);return s.current=n,(0,c.useEffect)(()=>{if(!e)return;let n=Oe(e.events),c=ke(e),l=new K(e.type===`socketio`?new De(e.instance):new Ee(e.instance),n,c);r.current=l;let u=n=>{let r=n;if(!r.text&&!r.attachments?.length)return;let i={id:U(),sender:`agent`,text:r.text,timestamp:Date.now(),...r.attachments?.length?{attachments:r.attachments}:{},metadata:r.agent?{agentName:r.agent.name,agentAvatar:r.agent.avatar}:void 0};t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGE`,payload:i}),Me([...s.current,i],e)},d=n=>{let r=n;a.current=r,i.current=!0,t({type:`SET_LIVE_AGENT`,payload:!0}),t({type:`SET_AGENT_INFO`,payload:r}),t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:`${r.name} joined the chat`,timestamp:Date.now()}}),e.onAgentJoined?.(r)},f=n=>{let r=n;a.current=null,i.current=!1,t({type:`SET_LIVE_AGENT`,payload:!1}),t({type:`SET_AGENT_INFO`,payload:null}),t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:`${r.name} left the chat`,timestamp:Date.now()}}),e.onAgentLeft?.(r)},p=()=>{t({type:`SET_TYPING`,payload:!0}),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{t({type:`SET_TYPING`,payload:!1})},3e3)},m=e=>{let n=e;n.agent&&(a.current=n.agent,i.current=!0,t({type:`SET_LIVE_AGENT`,payload:!0}),t({type:`SET_AGENT_INFO`,payload:n.agent})),t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:n.message??`Connected to ${n.agent?.name??`an agent`}`,timestamp:Date.now()}})},h=n=>{let r=n,i=r.estimatedWait?` Estimated wait: ~${r.estimatedWait} min.`:``;t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:`You are #${r.position} in queue.${i}`,timestamp:Date.now()}}),e.onQueueUpdate?.(r.position,r.estimatedWait)},g=n=>{let r=n;r.messages?.length&&(t({type:`ADD_MESSAGES`,payload:r.messages}),e.onSessionRestored?.(r.messages.length))};if(l.on(n.agentMessage,u),l.on(n.agentJoined,d),l.on(n.agentLeft,f),l.on(n.agentTyping,p),l.on(n.transferAccepted,m),l.on(n.queueUpdate,h),l.on(n.sessionHistory,g),e.persistSession!==!1){let n=Ne(e);n.length&&(t({type:`ADD_MESSAGES`,payload:n}),e.onSessionRestored?.(n.length))}return l.initSession(),e.onConnect?.(),()=>{l.off(n.agentMessage,u),l.off(n.agentJoined,d),l.off(n.agentLeft,f),l.off(n.agentTyping,p),l.off(n.transferAccepted,m),l.off(n.queueUpdate,h),l.off(n.sessionHistory,g),o.current&&clearTimeout(o.current),l.destroy(),r.current=null,e.onDisconnect?.()}},[e,t]),{adapter:r,sendLiveMessage:(0,c.useCallback)((e,t)=>{r.current?.sendUserMessage(e,t)},[]),sendTyping:(0,c.useCallback)(()=>{r.current?.sendUserTyping()},[]),requestTransfer:(0,c.useCallback)(e=>{r.current?.requestTransfer(e),t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:e?`Requesting transfer to ${e}…`:`Requesting a live agent…`,timestamp:Date.now()}})},[t]),isLive:i,agentInfo:a}}function je(e){return`${e.storageKey??`chatbot_live_`}${e.sessionId??`default`}`}function Me(e,t){if(t.persistSession!==!1&&!(typeof localStorage>`u`))try{localStorage.setItem(je(t),JSON.stringify(e))}catch{}}function Ne(e){if(typeof localStorage>`u`)return[];try{let t=localStorage.getItem(je(e));if(!t)return[];let n=JSON.parse(t);return Array.isArray(n)?n:[]}catch{return[]}}var Pe={"/help":`Show available commands`,"/cancel":`Cancel current step and go back`,"/back":`Go back to the previous step`,"/restart":`Restart the conversation from the beginning`},Fe=[`hi`,`hello`,`hey`,`howdy`,`hola`,`greetings`,`good morning`,`good afternoon`,`good evening`,`sup`,`yo`,`hii`,`hiii`];function Ie(e,t){let n=t.caseSensitive?e:e.toLowerCase();for(let r of t.patterns){let i=t.caseSensitive?r:r.toLowerCase();switch(t.matchType??`contains`){case`exact`:if(n===i)return!0;break;case`startsWith`:if(n.startsWith(i))return!0;break;case`regex`:try{if(new RegExp(i,t.caseSensitive?``:`i`).test(e))return!0}catch{}break;default:if(n.includes(i))return!0;break}}return!1}function Le(e,t){return[...t].sort((e,t)=>(t.priority??0)-(e.priority??0)).find(t=>Ie(e,t))}function Re(e,t,n){let r=e,i=!1;for(let e of n){let n=!1,a=e(r,t,()=>{n=!0});if(a&&(r=a),!n){i=!0;break}}return i?null:r}function ze(e,t){let n=e;if(t.transform)switch(t.transform){case`trim`:n=n.trim();break;case`lowercase`:n=n.toLowerCase();break;case`uppercase`:n=n.toUpperCase();break;case`email`:n=n.trim().toLowerCase();break}if(t.validation){let e=t.validation;if(e.required&&!n.trim())return{valid:!1,value:n,error:e.message??`This field is required.`};if(e.minLength&&n.length<e.minLength)return{valid:!1,value:n,error:e.message??`Must be at least ${e.minLength} characters.`};if(e.maxLength&&n.length>e.maxLength)return{valid:!1,value:n,error:e.message??`Must be at most ${e.maxLength} characters.`};if(e.pattern)try{if(!new RegExp(e.pattern).test(n))return{valid:!1,value:n,error:e.message??`Invalid format.`}}catch{}}return{valid:!0,value:n}}function Be(){let{state:e,dispatch:t,props:n,pluginManager:r}=p(),i=(0,c.useRef)(null),a=(0,c.useRef)(!1),o=(0,c.useRef)(e);o.current=e;let s=(0,c.useRef)(n);s.current=n;let{sendLiveMessage:l,sendTyping:u,requestTransfer:d}=Ae({config:n.liveAgent,dispatch:t,messages:e.messages});(0,c.useEffect)(()=>{n.flow&&(i.current=new G(n.flow),a.current=!1)},[n.flow]);let f=(0,c.useCallback)(async(e,n)=>{t({type:`SET_TYPING`,payload:!0}),await W(400);let i={id:U(),sender:`bot`,text:e,timestamp:Date.now(),...n},a=r?await r.onMessage(i):i;t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGE`,payload:a}),s.current.callbacks?.onMessageReceive?.(a)},[t,r]),m=(0,c.useCallback)(e=>{t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`system`,text:e,timestamp:Date.now()}})},[t]),h=(0,c.useRef)(async()=>{});h.current=async e=>{let n=i.current;if(!n)return;let a=n.getStep(e);if(!a)return;if(!n.isStepVisible(a)){let e=n.resolveNext(a);e&&await h.current(e);return}if(a.subFlow&&n.getSubFlowStartStep(a)){a.subFlow.steps.forEach(e=>{n.steps.set(e.id,{...e,next:e.next??a.onSubFlowComplete})}),await h.current(a.subFlow.startStep);return}n.pushHistory(e),t({type:`SET_STEP`,payload:e}),r?.emitEvent(`stepChange`,{stepId:e}),t({type:`SET_TYPING`,payload:!0}),await W(a.delay??500);let o=n.buildMessages(a);if(t({type:`SET_TYPING`,payload:!1}),t({type:`ADD_MESSAGES`,payload:o}),o.forEach(e=>s.current.callbacks?.onMessageReceive?.(e)),a.asyncAction){let e=s.current.actionHandlers?.[a.asyncAction.handler];if(e){let r=U();t({type:`ADD_MESSAGE`,payload:{id:r,sender:`bot`,text:a.asyncAction.loadingMessage??`Processing...`,timestamp:Date.now()}});let i={updateMessage:e=>{t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:e}}})}};try{let o=await e(n.getData(),i);o.data&&(n.mergeData(o.data),t({type:`SET_DATA`,payload:o.data})),t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:o.message??(o.status===`success`?a.asyncAction.successMessage??`Done!`:a.asyncAction.errorMessage??`Something went wrong.`)}}});let s=g(a,o);s&&(await W(600),h.current(s))}catch{t({type:`UPDATE_MESSAGE`,payload:{id:r,updates:{text:a.asyncAction.errorMessage??`❌ Something went wrong.`}}}),a.asyncAction.onError&&(await W(600),h.current(a.asyncAction.onError))}return}}a.component&&s.current.components?.[a.component]||!a.quickReplies&&!a.form&&!a.input&&a.next&&(await W(300),h.current(a.next))};function g(e,t){return t.next?t.next:e.asyncAction?.routes?.[t.status]?e.asyncAction.routes[t.status]:t.status===`success`&&e.asyncAction?.onSuccess?e.asyncAction.onSuccess:t.status===`error`&&e.asyncAction?.onError?e.asyncAction.onError:e.next}let _=(0,c.useCallback)(e=>h.current(e),[]),v=(0,c.useCallback)(()=>{let e=i.current;if(!e||!e.canGoBack()){m(`There is no previous step to go back to.`);return}t({type:`CLEAR_QUICK_REPLIES`});let n=e.popHistory();n?_(n):m(`There is no previous step to go back to.`)},[t,_,m]),y=(0,c.useCallback)(()=>{let e=i.current;e&&e.reset(),a.current=!1,t({type:`RESET_CHAT`}),e&&(a.current=!0,_(e.getStartStepId()))},[t,_]),b=(0,c.useRef)(()=>!1);b.current=e=>{let t=e.trim().toLowerCase();if(!t.startsWith(`/`))return!1;switch(t){case`/help`:return m(`Available commands:
3
+ ${Object.entries(Pe).map(([e,t])=>`**${e}** — ${t}`).join(`
4
+ `)}`),!0;case`/cancel`:case`/back`:return v(),!0;case`/restart`:return y(),!0;default:return m(`Unknown command: ${t}. Type /help for available commands.`),!0}};let x=(0,c.useCallback)(e=>{let n=i.current,a=o.current.currentStepId;if(!n||!a)return;let c=n.getStep(a);if(!c)return;e?.data&&(n.mergeData(e.data),t({type:`SET_DATA`,payload:e.data})),e?.message&&t({type:`ADD_MESSAGE`,payload:{id:U(),sender:`bot`,text:e.message,timestamp:Date.now()}});let l=e?.next??c.next;l?_(l):(r?.emitEvent(`flowEnd`,n.getData()),s.current.callbacks?.onFlowEnd?.(n.getData()),t({type:`SET_STEP`,payload:null}))},[t,_,r]),S=(0,c.useCallback)(async e=>{if(b.current(e))return;let n={id:U(),sender:`user`,text:e,timestamp:Date.now()},a=s.current.middleware;if(a&&a.length>0){let e=Re(n,i.current?.getData()??{},a);if(!e)return;Object.assign(n,e)}let c=r?await r.onMessage(n):n;if(t({type:`ADD_MESSAGE`,payload:c}),s.current.callbacks?.onMessageSend?.(c),s.current.callbacks?.onSubmit?.({message:c.text}),o.current.isLiveAgent){l(c.text??``);return}let u=o.current.currentStepId,d=s.current.typingDelay??0;if(i.current&&u){let n=i.current.getStep(u);if(n){if(n.asyncAction||n.component){f(`Please wait, I'm still processing. You can type /back to go back.`);return}if(i.current.stepExpectsQuickReply(n)){let a=i.current.matchQuickReply(n,e);if(a){t({type:`CLEAR_QUICK_REPLIES`}),i.current.setData(n.id,a.value);let e=i.current.resolveNext(n,a.value);e?_(e):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}else f(`I didn't quite get that. Please choose one of the options below:`,{quickReplies:n.quickReplies})}else if(i.current.stepExpectsForm(n))f(`Please fill out the form above to continue.`);else if(n.input){let a=ze(e,n.input);if(!a.valid){f(a.error??`Invalid input. Please try again.`);return}i.current.setData(n.id,a.value);let o=i.current.resolveNext(n,a.value);o?_(o):(f(`Thanks for your message! Our team will get back to you soon. 🙌`),r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}else{i.current.setData(n.id,e);let a=i.current.resolveNext(n,e);a?_(a):(f(`Thanks for your message! Our team will get back to you soon. 🙌`),r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}return}}let p=[...s.current.keywords??[]];if(s.current.greetingResponse&&p.push({patterns:Fe,response:s.current.greetingResponse,matchType:`exact`,priority:-1}),p.length>0){let t=Le(e.trim(),p);if(t){if(t.next&&i.current){d>0&&await W(d),_(t.next);return}if(t.response){d>0&&await W(d),await f(t.response);return}}}let m=s.current.fallbackMessage;if(m){let t=typeof m==`function`?m(e):m;if(t){d>0&&await W(d),await f(t);return}}s.current.callbacks?.onUnhandledMessage?.(e,{currentStepId:u})},[t,f,_,r]),C=(0,c.useCallback)(()=>{let e=i.current;!e||a.current||(a.current=!0,_(e.getStartStepId()))},[_]);return(0,c.useEffect)(()=>{n.flow&&!e.showWelcome&&e.isLoggedIn&&!a.current&&C()},[n.flow,e.showWelcome,e.isLoggedIn,C]),{state:e,sendMessage:S,addBotMessage:f,handleQuickReply:(0,c.useCallback)(async(e,n)=>{t({type:`CLEAR_QUICK_REPLIES`});let a={id:U(),sender:`user`,text:n,timestamp:Date.now()};t({type:`ADD_MESSAGE`,payload:a}),await r?.onMessage(a),r?.emitEvent(`quickReply`,{value:e,label:n}),s.current.callbacks?.onQuickReply?.(e,n);let c=o.current.currentStepId;if(i.current&&c){let n=i.current.getStep(c);if(n){i.current.setData(n.id,e);let a=i.current.resolveNext(n,e);a?_(a):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}}},[t,_,r]),handleFormSubmit:(0,c.useCallback)(async(e,n)=>{t({type:`SET_DATA`,payload:n}),i.current&&i.current.mergeData(n);let a=s.current.loginForm?.id===e?s.current.loginForm:i.current&&o.current.currentStepId?i.current.getStep(o.current.currentStepId)?.form:void 0,c=new Map;if(a)for(let e of a.fields){let t=e.options?new Map(e.options.map(e=>[e.value,e.label])):void 0;c.set(e.name,{label:e.label??e.name,optionMap:t})}let l=Object.entries(n).filter(([,e])=>e!==void 0&&e!==``).map(([e,t])=>{let n=c.get(e),r=n?.label??e,i=String(t);return`${r}: ${n?.optionMap?.get(i)??i}`}).join(`
5
+ `),u={id:U(),sender:`user`,text:l,formData:n,timestamp:Date.now()};t({type:`ADD_MESSAGE`,payload:u}),await r?.onMessage(u),await r?.onSubmit(n),await s.current.callbacks?.onFormSubmit?.(e,n);let d=o.current.currentStepId;if(i.current&&d){let e=i.current.getStep(d);if(e){let n=i.current.resolveNext(e);n?_(n):(r?.emitEvent(`flowEnd`,i.current.getData()),s.current.callbacks?.onFlowEnd?.(i.current.getData()),t({type:`SET_STEP`,payload:null}))}}},[t,_,r]),handleLogin:(0,c.useCallback)(async e=>{await r?.onSubmit(e),r?.emitEvent(`login`,e),await s.current.callbacks?.onLogin?.(e),t({type:`SET_LOGGED_IN`,payload:!0})},[t,r]),toggleChat:(0,c.useCallback)(()=>{let e=!o.current.isOpen;t({type:`TOGGLE_OPEN`}),e?(r?.emitEvent(`open`),s.current.callbacks?.onOpen?.()):(r?.emitEvent(`close`),s.current.callbacks?.onClose?.())},[t,r]),dismissWelcome:(0,c.useCallback)(()=>{t({type:`DISMISS_WELCOME`})},[t]),startFlow:C,processFlowStep:_,goBack:v,restartSession:y,handleComponentComplete:x,requestTransfer:d,sendTyping:u}}var Ve=({styles:e,position:t,zIndex:n,hidden:r})=>{let{props:i,dispatch:a}=p(),o=g(i.theme),s=o.mode===`dark`,{state:u,sendMessage:d,handleQuickReply:f,handleFormSubmit:m,handleLogin:h,toggleChat:_,dismissWelcome:v,restartSession:y,handleComponentComplete:b}=Be(),x=t===`bottom-left`?{bottom:`96px`,left:`24px`}:{bottom:`96px`,right:`24px`},S=(0,c.useCallback)((e,t)=>{if(t&&t.length>0){let n=t.map(e=>({name:e.name,url:URL.createObjectURL(e),type:e.type,size:e.size}));e?(a({type:`ADD_MESSAGE`,payload:{id:U(),sender:`user`,text:e,timestamp:Date.now(),attachments:n}}),d(e)):a({type:`ADD_MESSAGE`,payload:{id:U(),sender:`user`,timestamp:Date.now(),attachments:n}}),i.callbacks?.onFileUpload?.(t)}else e&&d(e)},[d,a,i.callbacks]),C=i.customizeChat?.header?.config??{title:`Chat with us`},w=i.customizeChat?.branding?.config,T=i.customizeChat?.welcomeScreen?.content,[E,D]=(0,c.useState)(``),O=(0,l.jsx)(M,{config:C,styles:e,onClose:_,onRestart:y,logo:w?.logo,logoWidth:w?.logoWidth,onSearchChange:D}),k=(0,l.jsx)(H,{onSend:S,placeholder:i.inputPlaceholder,primaryColor:o.primaryColor,isDark:s,enableEmoji:i.enableEmoji,fileUpload:i.fileUpload,onFileUpload:i.callbacks?.onFileUpload});return r?(0,l.jsx)(`div`,{style:{display:`none`}}):(0,l.jsxs)(`div`,{style:{...e.window,...x,...n==null?{}:{zIndex:n}},children:[i.customizeChat?.header?.component??O,u.showWelcome&&T?i.customizeChat?.welcomeScreen?.component??(0,l.jsx)(N,{content:T,onDismiss:v,primaryColor:o.primaryColor}):!u.isLoggedIn&&i.loginForm?i.customizeChat?.loginScreen?.component??(0,l.jsx)(L,{config:i.loginForm,onLogin:h,primaryColor:o.primaryColor,renderFormField:i.renderFormField}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ye,{messages:u.messages,isTyping:u.isTyping,styles:e,primaryColor:o.primaryColor,onQuickReply:f,onFormSubmit:m,components:i.components,onComponentComplete:b,collectedData:u.collectedData,currentStepId:u.currentStepId,renderFormField:i.renderFormField,customizeChat:i.customizeChat,searchQuery:E}),(0,l.jsx)(`div`,{style:e.inputArea,children:i.customizeChat?.input?.component??k}),w&&(i.customizeChat?.branding?.component??(0,l.jsx)(we,{config:w,primaryColor:o.primaryColor}))]})]})},He=class{constructor(){this.plugins=[],this.context=null,this.eventHandlers=new Map}register(e){this.plugins=[...e]}setContext(e){this.context={...e,on:(e,t)=>this.on(e,t),emit:(e,...t)=>this.emit(e,...t)}}getContext(){return this.context}on(e,t){this.eventHandlers.has(e)||this.eventHandlers.set(e,new Set),this.eventHandlers.get(e).add(t)}emit(e,...t){let n=this.eventHandlers.get(e);n&&n.forEach(e=>e(...t))}async init(){if(!this.context)return;let e=this.context;await Promise.allSettled(this.plugins.map(async t=>{try{await t.onInit?.(e)}catch{}}))}async onMessage(e){if(!this.context)return e;let t=e;for(let e of this.plugins)try{let n=await e.onMessage?.(t,this.context);n&&typeof n==`object`&&`id`in n&&(t=n)}catch{}return this.dispatchEvent({type:`message`,payload:t,timestamp:Date.now()}),t}async onSubmit(e){if(this.context){for(let t of this.plugins)try{await t.onSubmit?.(e,this.context)}catch{}this.dispatchEvent({type:`submit`,payload:e,timestamp:Date.now()})}}emitEvent(e,t){this.dispatchEvent({type:e,payload:t,timestamp:Date.now()}),this.emit(e,t)}async destroy(){if(this.context){for(let e of this.plugins)try{await e.onDestroy?.(this.context)}catch{}this.eventHandlers.clear(),this.plugins=[]}}dispatchEvent(e){if(this.context)for(let t of this.plugins)try{t.onEvent?.(e,this.context)}catch{}}},Ue=`
6
6
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
7
7
 
8
8
  @keyframes cb-window-enter {
@@ -43,7 +43,7 @@ ${Object.entries(we).map(([e,t])=>`**${e}** — ${t}`).join(`
43
43
  .cb-scrollbar::-webkit-scrollbar-thumb:hover {
44
44
  background: rgba(108, 92, 231, 0.35);
45
45
  }
46
- `,X=!1;function Ne(){if(X||typeof document>`u`)return;if(document.querySelector(`style[data-chatbot-styles]`)){X=!0;return}let e=document.createElement(`style`);e.setAttribute(`data-chatbot-styles`,``),e.textContent=Me,document.head.appendChild(e),X=!0}var Pe=e=>{let[t,n]=(0,c.useReducer)(u,e,d),r=g(e.theme),i=v(r,e.style),a=_(r),o=e.position??`bottom-right`,s=e.showLauncher!==!1,p=(0,c.useRef)(null),m=(0,c.useRef)(t);m.current=t,(0,c.useEffect)(()=>{Ne()},[]),(0,c.useEffect)(()=>{if(e.plugins&&e.plugins.length>0){let t=new je;return t.register(e.plugins),t.setContext({sendMessage:e=>{n({type:`ADD_MESSAGE`,payload:{id:K(),sender:`user`,text:e,timestamp:Date.now()}})},addBotMessage:e=>{n({type:`ADD_MESSAGE`,payload:{id:K(),sender:`bot`,text:e,timestamp:Date.now()}})},getMessages:()=>m.current.messages,getData:()=>m.current.collectedData,setData:(e,t)=>n({type:`SET_DATA`,payload:{[e]:t}})}),t.init(),p.current=t,()=>{t.destroy()}}},[e.plugins]);let h=(0,c.useCallback)(()=>{let r=!t.isOpen;n({type:`TOGGLE_OPEN`}),r?e.callbacks?.onOpen?.():e.callbacks?.onClose?.()},[t.isOpen,e.callbacks]);return(0,l.jsx)(f.Provider,{value:{state:t,dispatch:n,props:e,pluginManager:p.current},children:(0,l.jsxs)(`div`,{style:{...i.root,...a},className:e.className,children:[(0,l.jsx)(Ae,{styles:i,position:o,zIndex:e.zIndex,hidden:!t.isOpen}),s&&(e.customizeChat?.launcher?.component??(0,l.jsx)(k,{onClick:h,isOpen:t.isOpen,position:o,styles:i,icon:e.launcherIcon,closeIcon:e.closeIcon,zIndex:e.zIndex}))]})})};function Fe(e){let t=e?.sessionId??`sess_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,n=0,r=0,i=0,a={},o=0,s=(n,r)=>{e?.onTrack?.(n,{sessionId:t,...r})};return{name:`analytics`,onInit(){n=0,r=0,i=Date.now(),o=i,s(`chatbot:init`,{timestamp:i})},onMessage(e){n++,s(`chatbot:message`,{sender:e.sender,messageCount:n,elapsed:Date.now()-i})},onSubmit(e){r++,s(`chatbot:submit`,{formSubmissions:r,fields:Object.keys(e),elapsed:Date.now()-i})},onEvent(e){switch(e.type){case`open`:s(`chatbot:open`);break;case`close`:s(`chatbot:close`,{duration:Date.now()-i});break;case`stepChange`:{let t=Date.now(),n=e.payload;n?.stepId&&(a[n.stepId]=t-o,o=t,s(`chatbot:step`,{stepId:n.stepId,stepDuration:a[n.stepId]}));break}case`flowEnd`:s(`chatbot:flowEnd`,{totalMessages:n,totalForms:r,duration:Date.now()-i,stepTimings:a});break;case`quickReply`:s(`chatbot:quickReply`,e.payload);break}},onDestroy(){s(`chatbot:destroy`,{totalMessages:n,totalFormSubmissions:r,sessionDuration:Date.now()-i,stepTimings:a})}}}var Ie={debug:0,info:1,warn:2,error:3};function Le(e){let t=Ie[e?.level??`debug`],n=e?.prefix??`[ChatBot]`,r=e?.logger??console,i=(e,...i)=>{Ie[e]>=t&&r[e](n,...i)};return{name:`logger`,onInit(){i(`info`,`Initialized`)},onMessage(e){i(`debug`,`Message [${e.sender}]:`,e.text??`(no text)`)},onSubmit(e){i(`info`,`Form submitted:`,Object.keys(e))},onEvent(e){i(`debug`,`Event [${e.type}]:`,e.payload??``)},onDestroy(){i(`info`,`Destroyed`)}}}async function Z(e,t,n,r=1e4){let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`,...n},body:JSON.stringify(t),signal:i.signal})}finally{clearTimeout(a)}}async function Re(e,t,n=1e4){let r=new AbortController,i=setTimeout(()=>r.abort(),n);try{return await(await fetch(e,{headers:{Accept:`application/json`,...t},signal:r.signal})).json()}finally{clearTimeout(i)}}function ze(e){let t=new Set(e.events??[`message`,`submit`]),n=e.timeout??1e4,r=async(t,r)=>{try{await Z(e.url,{type:t,payload:r,timestamp:Date.now()},e.headers,n)}catch{}};return{name:`webhook`,async onInit(){t.has(`init`)&&await r(`init`,{})},async onMessage(e){t.has(`message`)&&await r(`message`,e)},async onSubmit(e){t.has(`submit`)&&await r(`submit`,e)},onEvent(e){t.has(e.type)&&r(e.type,e.payload)},async onDestroy(){t.has(`destroy`)&&await r(`destroy`,{})}}}function Be(e){let t=new Set(e.events??[`submit`,`flowEnd`]),n=async(t,n)=>{let r=e.mapFields?e.mapFields(n):n;try{await Z(e.endpoint,{provider:e.provider,type:t,data:r,timestamp:Date.now()},e.headers)}catch{}};return{name:`crm`,async onSubmit(e){t.has(`submit`)&&await n(`submit`,e)},onEvent(e){t.has(e.type)&&e.payload&&n(e.type,e.payload)}}}function Ve(e){let t=new Set(e.triggers??[`flowEnd`]),n=async(t,n)=>{let r=e.mapPayload?e.mapPayload(n):n;try{await Z(e.endpoint,{template:e.template,trigger:t,data:r,timestamp:Date.now()},e.headers)}catch{}};return{name:`email`,async onSubmit(e){t.has(`submit`)&&await n(`submit`,e)},onEvent(e){t.has(e.type)&&e.payload&&n(e.type,e.payload)}}}function He(e){let t=e.endpoint??(e.provider===`openai`?`https://api.openai.com/v1/chat/completions`:e.provider===`anthropic`?`https://api.anthropic.com/v1/messages`:e.endpoint??``),n=e.model??(e.provider===`openai`?`gpt-3.5-turbo`:`claude-3-haiku-20240307`),r=[];e.systemPrompt&&r.push({role:`system`,content:e.systemPrompt});let i=()=>{let t={...e.headers};return e.apiKey&&(e.provider===`anthropic`?(t[`x-api-key`]=e.apiKey,t[`anthropic-version`]=`2023-06-01`):t.Authorization=`Bearer ${e.apiKey}`),t},a=()=>e.provider===`anthropic`?{model:n,max_tokens:1024,system:e.systemPrompt,messages:r.filter(e=>e.role!==`system`)}:{model:n,messages:r},o=e=>{let t=e;return t.choices?t.choices[0]?.message?.content??``:t.content?t.content[0]?.text??``:String(t)};return{name:`ai`,async onMessage(n,s){if(!(n.sender!==`user`||!n.text)&&!(e.shouldRespond&&!e.shouldRespond(n.text))&&t){r.push({role:`user`,content:n.text});try{let n=await(await Z(t,a(),i(),e.timeout??3e4)).json(),c=e.parseResponse?e.parseResponse(n):o(n);c&&(r.push({role:`assistant`,content:c}),s.addBotMessage(c))}catch{}}}}}function Ue(e){let t=e?.rules??[],n=e?.fallbackIntent??`unknown`,r=e=>{let r=e.toLowerCase().trim();for(let n of t)for(let t of n.patterns){let i=t.toLowerCase();switch(n.matchType??`contains`){case`exact`:if(r===i)return n.intent;break;case`regex`:try{if(new RegExp(i,`i`).test(e))return n.intent}catch{}break;default:if(r.includes(i))return n.intent;break}}return n};return{name:`intent`,onMessage(t,n){if(t.sender!==`user`||!t.text)return;let i=r(t.text);n.emit(`intent:detected`,{intent:i,text:t.text}),e?.onIntentDetected?.(i,t.text,n)}}}function We(e){let t=e?.delay??1e3;return{name:`typing`,async onMessage(n,r){n.sender===`bot`&&(e?.onTypingStart?.(),r.emit(`typing:start`,{}),await new Promise(e=>setTimeout(e,t)),e?.onTypingEnd?.(),r.emit(`typing:end`,{}))}}}var Q=class{constructor(){this.timers=new Map,this.intervals=new Map}setTimeout(e,t,n){this.clearTimeout(e),this.timers.set(e,setTimeout(()=>{this.timers.delete(e),t()},n))}setInterval(e,t,n){this.clearInterval(e),this.intervals.set(e,setInterval(t,n))}clearTimeout(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e))}clearInterval(e){let t=this.intervals.get(e);t&&(clearInterval(t),this.intervals.delete(e))}destroy(){this.timers.forEach(e=>clearTimeout(e)),this.intervals.forEach(e=>clearInterval(e)),this.timers.clear(),this.intervals.clear()}};function Ge(e){let t=e?.timeout??3e4,n=e?.message??`Are you still there? Let me know if you need help! 👋`,r=e?.maxReplies??2,i=new Q,a=0,o=!1;return{name:`autoReply`,onInit(e){o=!0,a=0},onMessage(e,s){e.sender===`user`&&(a=0,i.clearTimeout(`idle`),o&&i.setTimeout(`idle`,()=>{a<r&&(a++,s.addBotMessage(n))},t))},onEvent(e,t){e.type===`open`?o=!0:e.type===`close`&&(o=!1,i.clearTimeout(`idle`))},onDestroy(){i.destroy()}}}function Ke(e){let t=e?.validators??{},n=e?.sanitize??!0,r=e?.profanityList??[],i=e=>e.replace(/[<>&"']/g,e=>({"<":`&lt;`,">":`&gt;`,"&":`&amp;`,'"':`&quot;`,"'":`&#39;`})[e]??e),a=t=>{if(!e?.blockProfanity||!r.length)return null;let n=t.toLowerCase();for(let e of r)if(n.includes(e.toLowerCase()))return`Message contains inappropriate content.`;return null};return{name:`validation`,onMessage(r,o){if(r.sender!==`user`||!r.text)return;let s=a(r.text);if(s)return e?.onValidationFail?.(r.text,s),o.emit(`validation:fail`,{text:r.text,error:s}),{...r,text:`***`};for(let[n,i]of Object.entries(t)){let t=i(r.text);t&&(e?.onValidationFail?.(r.text,t),o.emit(`validation:fail`,{text:r.text,validator:n,error:t}))}if(n)return{...r,text:i(r.text)}}}}function qe(e){return{name:`upload`,onInit(t){t.on(`file:upload`,async(...n)=>{let r=n[0];if(r?.length)for(let n of r){if(e.maxSize&&n.size>e.maxSize){e.onUploadError?.({name:n.name},Error(`File too large: ${n.size} > ${e.maxSize}`));continue}if(e.allowedTypes?.length&&!e.allowedTypes.some(e=>n.type.startsWith(e))){e.onUploadError?.({name:n.name},Error(`File type not allowed: ${n.type}`));continue}e.onUploadStart?.({name:n.name,size:n.size});try{let r=new FormData;r.append(`file`,n),r.append(`storage`,e.storage??`custom`);let i=await fetch(e.endpoint,{method:`POST`,headers:e.headers,body:r});if(!i.ok)throw Error(`Upload failed: ${i.status}`);let a=await i.json();e.onUploadComplete?.({name:n.name,url:a.url??``}),t.emit(`file:uploaded`,{name:n.name,url:a.url})}catch(t){e.onUploadError?.({name:n.name},t)}}})}}}function $(e=`local`){let t=e===`session`?sessionStorage:localStorage;return{get:e=>{try{return t.getItem(e)}catch{return null}},set:(e,n)=>{try{t.setItem(e,n)}catch{}},remove:e=>{try{t.removeItem(e)}catch{}}}}function Je(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function Ye(e){let t=e?.storageKey??`chatbot_history`,n=$(e?.storage??`local`),r=e?.maxMessages??100,i=e?.ttl??0,a=e=>{let i={messages:e.getMessages().slice(-r),savedAt:Date.now()};n.set(t,JSON.stringify(i))};return{name:`persistence`,onInit(e){let r=Je(n.get(t),null);if(r?.messages?.length){if(i>0&&Date.now()-r.savedAt>i){n.remove(t);return}for(let t of r.messages)t.sender===`bot`&&t.text&&e.addBotMessage(t.text)}},onMessage(e,t){a(t)},onSubmit(e,t){a(t)},onDestroy(e){a(e)}}}function Xe(e){let t=e.syncInterval??0,n=e.sessionKey??`chat_${Date.now()}`,r=null,i=t=>{Z(e.endpoint,{session:n,messages:t.getMessages(),data:t.getData(),timestamp:Date.now()},e.headers).catch(()=>{})};return{name:`sync`,async onInit(a){try{let t=await Re(`${e.endpoint}?session=${encodeURIComponent(n)}`,e.headers);if(t.data)for(let[e,n]of Object.entries(t.data))a.setData(e,n)}catch{}t>0&&(r=setInterval(()=>i(a),t))},onSubmit(e,t){i(t)},onEvent(e,t){e.type===`flowEnd`&&i(t)},onDestroy(e){r&&clearInterval(r),i(e)}}}function Ze(e){let t=e.tokenKey??`chatbot_auth_token`,n=$(e.storage??`local`),r=t=>{if(e.validateToken)return!e.validateToken(t);if(e.type===`jwt`)try{let e=JSON.parse(atob(t.split(`.`)[1]));return e.exp?e.exp*1e3<Date.now():!1}catch{return!0}return!1};return{name:`auth`,onInit(i){let a=n.get(t);a&&(r(a)?(n.remove(t),e.onAuthExpired?.(i),i.emit(`auth:expired`,{})):(i.setData(`authToken`,a),e.onAuth?.(a,i),i.emit(`auth:restored`,{token:a}))),i.on(`auth:login`,(...e)=>{let r=e[0];r&&(n.set(t,r),i.setData(`authToken`,r),i.emit(`auth:success`,{token:r}))}),i.on(`auth:logout`,()=>{n.remove(t),i.setData(`authToken`,void 0),i.emit(`auth:loggedOut`,{})})}}}function Qe(e){let t=e?.limit??10,n=e?.window??6e4,r=[];return{name:`rateLimit`,onMessage(i,a){if(i.sender!==`user`)return;let o=Date.now();for(;r.length>0&&o-r[0]>n;)r.shift();if(r.push(o),r.length>t){let t=Math.ceil((r[0]+n-o)/1e3);return e?.onLimited?.(t),a.emit(`rateLimit:exceeded`,{remaining:t}),a.addBotMessage(e?.warningMessage??`Too many messages. Please wait ${t}s.`),{...i,text:``}}}}}function $e(e){let t=e?.title??`New Message`,n=e?.onlyWhenHidden??!0,r=()=>typeof Notification<`u`&&Notification.permission===`granted`,i=()=>r()&&(!n||document.hidden);return{name:`push`,async onInit(){e?.requestPermission!==!1&&typeof Notification<`u`&&Notification.permission===`default`&&await Notification.requestPermission()},onMessage(n){n.sender===`bot`&&n.text&&i()&&new Notification(t,{body:n.text.slice(0,200),icon:e?.icon,tag:`chatbot-msg`})}}}function et(e){let t=Math.min(1,Math.max(0,e?.volume??.5)),n=e?.onlyWhenHidden??!1,r=null,i=()=>{r||=new AudioContext;let e=r.createOscillator(),n=r.createGain();e.connect(n),n.connect(r.destination),e.frequency.value=800,n.gain.value=t*.3,e.start(),n.gain.exponentialRampToValueAtTime(.001,r.currentTime+.15),e.stop(r.currentTime+.15)},a=()=>{if(!(n&&!document.hidden))if(e?.src){let n=new Audio(e.src);n.volume=t,n.play().catch(()=>{})}else try{i()}catch{}};return{name:`sound`,onMessage(e){e.sender===`bot`&&a()},onDestroy(){r?.close().catch(()=>{}),r=null}}}function tt(e){let t=null,n=!1;return{name:`agent`,onInit(r){r.on(`agent:connect`,()=>{t||!e.socketUrl||(t=new WebSocket(e.socketUrl),t.onopen=()=>{n=!0,r.addBotMessage(e.connectMessage??`🧑‍💼 You are now connected to a live agent.`),e.onAgentConnect?.(r),r.emit(`agent:connected`,{})},t.onmessage=t=>{let n=typeof t.data==`string`?t.data:``;n&&(r.addBotMessage(n),e.onAgentMessage?.(n,r))},t.onclose=()=>{n=!1,t=null,r.addBotMessage(e.disconnectMessage??`🧑‍💼 The agent has disconnected.`),e.onAgentDisconnect?.(r),r.emit(`agent:disconnected`,{})},t.onerror=()=>{t?.close()})}),r.on(`agent:disconnect`,()=>{t?.close()})},onMessage(e){n&&e.sender===`user`&&t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`message`,text:e.text,timestamp:Date.now()}))},onDestroy(){t?.close(),t=null,n=!1}}}function nt(e){return{name:`transfer`,onInit(t){t.on(`transfer:request`,async(...n)=>{let r=n[0]??`default`;t.addBotMessage(e.transferMessage??`Transferring you to **${r}**. Please hold...`),e.onTransfer?.(r,t);try{let n=await(await Z(e.endpoint,{department:r,messages:t.getMessages(),data:t.getData(),timestamp:Date.now()},e.headers)).json();e.onTransferComplete?.(n,t),t.emit(`transfer:complete`,{department:r,result:n})}catch(e){t.addBotMessage(`Transfer failed. Please try again later.`),t.emit(`transfer:error`,{department:r,error:String(e)})}})}}}function rt(e){let t=e?.storageKey??`chatbot_theme`,n=$(`local`),r=e?.cssVariable??`--cb-theme-mode`,i=e=>{typeof document<`u`&&(document.documentElement.style.setProperty(r,e),document.documentElement.setAttribute(`data-chatbot-theme`,e))};return{name:`theme`,onInit(r){let a=n.get(t)??e?.defaultMode??`light`;i(a),r.setData(`theme`,a),r.on(`theme:set`,(...a)=>{let o=a[0];o&&(n.set(t,o),i(o),r.setData(`theme`,o),e?.onThemeChange?.(o,r),r.emit(`theme:changed`,{mode:o}))}),r.on(`theme:toggle`,()=>{let e=(n.get(t)??`light`)===`light`?`dark`:`light`;r.emit(`theme:set`,e)})}}}function it(e){return{name:`component`,onInit(t){if(t.on(`component:inject`,(...n)=>{let r=n[0];r&&(t.emit(`component:render`,{component:r}),e?.onRender?.(r,t))}),e?.components)for(let[n,r]of Object.entries(e.components))t.on(`component:${n}`,()=>{t.emit(`component:render`,{component:r})})}}}function at(e){let t=new Set(e.fields??[`name`,`email`,`phone`]),n=$(`local`),r=e.storageKey??`chatbot_lead`,i=(i,a)=>{let o={},s=!1;for(let[e,n]of Object.entries(i))t.has(e)&&n&&(o[e]=n,s=!0);if(s){let t={...JSON.parse(n.get(r)??`{}`),...o,updatedAt:Date.now()};n.set(r,JSON.stringify(t)),e.onLeadCaptured?.(t,a),a.emit(`lead:captured`,t),e.endpoint&&Z(e.endpoint,t,e.headers).catch(()=>{})}};return{name:`lead`,onSubmit(e,t){i(e,t)},onEvent(e,t){e.type===`flowEnd`&&e.payload&&i(e.payload,t),e.type===`login`&&e.payload&&i(e.payload,t)}}}function ot(e){let t=new Q,n=new Map;return{name:`campaign`,onInit(r){e.campaigns.forEach((i,a)=>{let o=i.maxShows??1,s=()=>{let t=n.get(a)??0;t>=o||(n.set(a,t+1),r.addBotMessage(i.message),i.flowStep&&r.emit(`campaign:flowStart`,{step:i.flowStep}),e.onTrigger?.(i,r),r.emit(`campaign:triggered`,{trigger:i.trigger,idx:a}))};switch(i.trigger){case`pageLoad`:t.setTimeout(`campaign_${a}`,s,i.delay??0);break;case`idle`:t.setTimeout(`campaign_${a}`,s,i.delay??3e4);break;case`exitIntent`:if(typeof document<`u`){let e=t=>{t.clientY<=0&&(s(),document.removeEventListener(`mouseleave`,e))};document.addEventListener(`mouseleave`,e)}break;case`scroll`:if(typeof window<`u`){let e=()=>{window.scrollY/(document.body.scrollHeight-window.innerHeight)>.7&&(s(),window.removeEventListener(`scroll`,e))};window.addEventListener(`scroll`,e,{passive:!0})}break;case`custom`:r.on(`campaign:fire:${a}`,s);break}})},onDestroy(){t.destroy()}}}function st(e){let t=new Q;return{name:`scheduler`,onInit(n){e.messages?.forEach((r,i)=>{let a=`sched_${i}`;r.repeat&&r.interval?t.setTimeout(`${a}_init`,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message),t.setInterval(a,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message)},r.interval)},r.delay):t.setTimeout(a,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message)},r.delay)}),n.on(`scheduler:add`,(...r)=>{let i=r[0];if(i){let r=`sched_dyn_${Date.now()}`;t.setTimeout(r,()=>{n.addBotMessage(i.message),e.onScheduledMessage?.(i.message)},i.delay)}})},onDestroy(){t.destroy()}}}function ct(e){let t=new Q;return{name:`reminder`,onInit(n){e?.reminders?.forEach((r,i)=>{t.setTimeout(`reminder_${i}`,()=>{n.addBotMessage(r.message),e?.onReminder?.(r.message),n.emit(`reminder:sent`,{message:r.message,idx:i})},r.delay)}),n.on(`reminder:set`,(...r)=>{let i=r[0];i&&t.setTimeout(`reminder_${i.id}`,()=>{n.addBotMessage(i.message),e?.onReminder?.(i.message),n.emit(`reminder:sent`,i)},i.delay)}),n.on(`reminder:cancel`,(...e)=>{let n=e[0];n&&t.clearTimeout(`reminder_${n}`)})},onDestroy(){t.destroy()}}}function lt(e){let t=$(`local`),n=e.storageKey??`chatbot_locale`,r=e.defaultLocale??`en`,i=t=>e.translations[r]?.[t]??e.translations[e.defaultLocale??`en`]?.[t]??t;return{name:`i18n`,onInit(a){let o=t.get(n);o&&e.translations[o]&&(r=o),a.setData(`locale`,r),a.setData(`t`,i),a.on(`i18n:setLocale`,(...i)=>{let o=i[0];o&&e.translations[o]&&(r=o,t.set(n,o),a.setData(`locale`,o),e.onLocaleChange?.(o,a),a.emit(`i18n:localeChanged`,{locale:o}))}),a.on(`i18n:translate`,(...e)=>{let t=e[0];t&&a.emit(`i18n:translated`,{key:t,value:i(t)})})},onMessage(e){if(e.sender===`bot`&&e.text){let t=e.text.replace(/\{\{t:([^}]+)\}\}/g,(e,t)=>i(t));if(t!==e.text)return{...e,text:t}}}}}function ut(e){e?.groupName,e?.logState,e?.logEvents,e?.logMessages;let t=[];return{name:`debug`,onInit(e){typeof window<`u`&&(window.__chatbotDebug={getMessages:()=>e.getMessages(),getData:()=>e.getData(),getEventLog:()=>[...t],sendMessage:t=>e.sendMessage(t),emit:(t,...n)=>e.emit(t,...n)})},onMessage(e){},onEvent(e){t.push({type:e.type,payload:e.payload,time:Date.now()})},onDestroy(){t=[],typeof window<`u`&&delete window.__chatbotDebug}}}function dt(e){let t=e?.position??`top-right`,n=e?.shortcutKey??`F2`,r=null,i=!1,a={messages:0,events:[],data:{},currentStep:null},o=()=>{let e=document.createElement(`div`);e.id=`chatbot-devtools`;let n={"top-left":`top:8px;left:8px`,"top-right":`top:8px;right:8px`,"bottom-left":`bottom:80px;left:8px`,"bottom-right":`bottom:80px;right:8px`};return e.style.cssText=`
46
+ `,J=!1;function We(){if(J||typeof document>`u`)return;if(document.querySelector(`style[data-chatbot-styles]`)){J=!0;return}let e=document.createElement(`style`);e.setAttribute(`data-chatbot-styles`,``),e.textContent=Ue,document.head.appendChild(e),J=!0}var Ge=e=>{let[t,n]=(0,c.useReducer)(u,e,d),r=g(e.theme),i=v(r,e.style),a=_(r),o=e.position??`bottom-right`,s=e.showLauncher!==!1,p=(0,c.useRef)(null),m=(0,c.useRef)(t);m.current=t,(0,c.useEffect)(()=>{We()},[]),(0,c.useEffect)(()=>{if(e.plugins&&e.plugins.length>0){let t=new He;return t.register(e.plugins),t.setContext({sendMessage:e=>{n({type:`ADD_MESSAGE`,payload:{id:U(),sender:`user`,text:e,timestamp:Date.now()}})},addBotMessage:e=>{n({type:`ADD_MESSAGE`,payload:{id:U(),sender:`bot`,text:e,timestamp:Date.now()}})},getMessages:()=>m.current.messages,getData:()=>m.current.collectedData,setData:(e,t)=>n({type:`SET_DATA`,payload:{[e]:t}})}),t.init(),p.current=t,()=>{t.destroy()}}},[e.plugins]);let h=(0,c.useCallback)(()=>{let r=!t.isOpen;n({type:`TOGGLE_OPEN`}),r?e.callbacks?.onOpen?.():e.callbacks?.onClose?.()},[t.isOpen,e.callbacks]);return e.headless?null:(0,l.jsx)(f.Provider,{value:{state:t,dispatch:n,props:e,pluginManager:p.current},children:(0,l.jsxs)(`div`,{style:{...i.root,...a},className:e.className,children:[(0,l.jsx)(Ve,{styles:i,position:o,zIndex:e.zIndex,hidden:!t.isOpen}),s&&(e.customizeChat?.launcher?.component??(0,l.jsx)(j,{onClick:h,isOpen:t.isOpen,position:o,styles:i,icon:e.launcherIcon,closeIcon:e.closeIcon,zIndex:e.zIndex}))]})})};function Ke(){let e=new Map,t=t=>(e.has(t)||e.set(t,new Set),e.get(t));return{on(e,n){return t(e).add(n),()=>t(e).delete(n)},once(e,n){let r=(...i)=>{t(e).delete(r),n(...i)};return t(e).add(r),()=>t(e).delete(r)},emit(t,...n){let r=e.get(t);r&&r.forEach(e=>e(...n))},off(e,n){t(e).delete(n)},clear(t){t?e.delete(t):e.clear()}}}function qe(e={}){let t=Ke(),n=[...e.initialMessages??[]],r={},i=null,a=null;e.flow&&(a=new G(e.flow));let o={sendMessage:e=>d.sendMessage(e),addBotMessage:e=>d.addBotMessage(e),getMessages:()=>[...n],getData:()=>({...r}),setData:(e,t)=>{r[e]=t},on:(e,n)=>{t.on(e,n)},emit:(e,...n)=>{t.emit(e,...n)}},s=e.plugins??[],c=async()=>{for(let e of s)await e.onInit?.(o)},l=r=>{n.push(r),e.onMessage?.(r),t.emit(`message`,r)},u=async e=>{if(!a)return;let n=a.getStep(e);if(!n)return;if(!a.isStepVisible(n)){let e=a.resolveNext(n);e&&await u(e);return}i=e,a.pushHistory(e),t.emit(`stepChange`,{stepId:e});let r=a.buildMessages(n);for(let e of r)l(e)},d={async sendMessage(e){let t={id:U(),sender:`user`,text:e,timestamp:Date.now()};for(let e of s)if(e.onMessage){let n=await e.onMessage(t,o);n&&(t=n)}if(l(t),a&&i){let t=a.getStep(i);if(t){if(t.input)a.setData(t.id,e);else if(t.quickReplies){let n=a.matchQuickReply(t,e);n&&a.setData(t.id,n.value)}let n=a.resolveNext(t,e);n&&await u(n)}}for(let e of s)e.onEvent?.({type:`message:sent`,payload:t,timestamp:Date.now()},o)},addBotMessage(e){l({id:U(),sender:`bot`,text:e,timestamp:Date.now()})},getMessages:()=>[...n],getData:()=>({...r,...a?.getData()??{}}),setData:(e,t)=>{r[e]=t,a?.setData(e,t)},getCurrentStep:()=>i,async goToStep(e){await u(e)},reset(){n.length=0,Object.keys(r).forEach(e=>delete r[e]),i=null,a?.reset()},bus:t,async destroy(){for(let e of s)await e.onDestroy?.(o);t.clear()}};return c().then(()=>{a&&u(a.getStartStepId())}),d}function Je(e){let t=e?.sessionId??`sess_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,n=0,r=0,i=0,a={},o=0,s=(n,r)=>{e?.onTrack?.(n,{sessionId:t,...r})};return{name:`analytics`,onInit(){n=0,r=0,i=Date.now(),o=i,s(`chatbot:init`,{timestamp:i})},onMessage(e){n++,s(`chatbot:message`,{sender:e.sender,messageCount:n,elapsed:Date.now()-i})},onSubmit(e){r++,s(`chatbot:submit`,{formSubmissions:r,fields:Object.keys(e),elapsed:Date.now()-i})},onEvent(e){switch(e.type){case`open`:s(`chatbot:open`);break;case`close`:s(`chatbot:close`,{duration:Date.now()-i});break;case`stepChange`:{let t=Date.now(),n=e.payload;n?.stepId&&(a[n.stepId]=t-o,o=t,s(`chatbot:step`,{stepId:n.stepId,stepDuration:a[n.stepId]}));break}case`flowEnd`:s(`chatbot:flowEnd`,{totalMessages:n,totalForms:r,duration:Date.now()-i,stepTimings:a});break;case`quickReply`:s(`chatbot:quickReply`,e.payload);break}},onDestroy(){s(`chatbot:destroy`,{totalMessages:n,totalFormSubmissions:r,sessionDuration:Date.now()-i,stepTimings:a})}}}var Ye={debug:0,info:1,warn:2,error:3};function Xe(e){let t=Ye[e?.level??`debug`],n=e?.prefix??`[ChatBot]`,r=e?.logger??console,i=(e,...i)=>{Ye[e]>=t&&r[e](n,...i)};return{name:`logger`,onInit(){i(`info`,`Initialized`)},onMessage(e){i(`debug`,`Message [${e.sender}]:`,e.text??`(no text)`)},onSubmit(e){i(`info`,`Form submitted:`,Object.keys(e))},onEvent(e){i(`debug`,`Event [${e.type}]:`,e.payload??``)},onDestroy(){i(`info`,`Destroyed`)}}}async function Y(e,t,n,r=1e4){let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`,...n},body:JSON.stringify(t),signal:i.signal})}finally{clearTimeout(a)}}async function Ze(e,t,n=1e4){let r=new AbortController,i=setTimeout(()=>r.abort(),n);try{return await(await fetch(e,{headers:{Accept:`application/json`,...t},signal:r.signal})).json()}finally{clearTimeout(i)}}function Qe(e){let t=new Set(e.events??[`message`,`submit`]),n=e.timeout??1e4,r=async(t,r)=>{try{await Y(e.url,{type:t,payload:r,timestamp:Date.now()},e.headers,n)}catch{}};return{name:`webhook`,async onInit(){t.has(`init`)&&await r(`init`,{})},async onMessage(e){t.has(`message`)&&await r(`message`,e)},async onSubmit(e){t.has(`submit`)&&await r(`submit`,e)},onEvent(e){t.has(e.type)&&r(e.type,e.payload)},async onDestroy(){t.has(`destroy`)&&await r(`destroy`,{})}}}function $e(e){let t=new Set(e.events??[`submit`,`flowEnd`]),n=async(t,n)=>{let r=e.mapFields?e.mapFields(n):n;try{await Y(e.endpoint,{provider:e.provider,type:t,data:r,timestamp:Date.now()},e.headers)}catch{}};return{name:`crm`,async onSubmit(e){t.has(`submit`)&&await n(`submit`,e)},onEvent(e){t.has(e.type)&&e.payload&&n(e.type,e.payload)}}}function et(e){let t=new Set(e.triggers??[`flowEnd`]),n=async(t,n)=>{let r=e.mapPayload?e.mapPayload(n):n;try{await Y(e.endpoint,{template:e.template,trigger:t,data:r,timestamp:Date.now()},e.headers)}catch{}};return{name:`email`,async onSubmit(e){t.has(`submit`)&&await n(`submit`,e)},onEvent(e){t.has(e.type)&&e.payload&&n(e.type,e.payload)}}}function tt(e){let t=e.endpoint??(e.provider===`openai`?`https://api.openai.com/v1/chat/completions`:e.provider===`anthropic`?`https://api.anthropic.com/v1/messages`:e.endpoint??``),n=e.model??(e.provider===`openai`?`gpt-3.5-turbo`:`claude-3-haiku-20240307`),r=[];e.systemPrompt&&r.push({role:`system`,content:e.systemPrompt});let i=()=>{let t={...e.headers};return e.apiKey&&(e.provider===`anthropic`?(t[`x-api-key`]=e.apiKey,t[`anthropic-version`]=`2023-06-01`):t.Authorization=`Bearer ${e.apiKey}`),t},a=()=>e.provider===`anthropic`?{model:n,max_tokens:1024,system:e.systemPrompt,messages:r.filter(e=>e.role!==`system`)}:{model:n,messages:r},o=e=>{let t=e;return t.choices?t.choices[0]?.message?.content??``:t.content?t.content[0]?.text??``:String(t)};return{name:`ai`,async onMessage(n,s){if(!(n.sender!==`user`||!n.text)&&!(e.shouldRespond&&!e.shouldRespond(n.text))&&t){r.push({role:`user`,content:n.text});try{let n=await(await Y(t,a(),i(),e.timeout??3e4)).json(),c=e.parseResponse?e.parseResponse(n):o(n);c&&(r.push({role:`assistant`,content:c}),s.addBotMessage(c))}catch{}}}}}function nt(e){let t=e?.rules??[],n=e?.fallbackIntent??`unknown`,r=e=>{let r=e.toLowerCase().trim();for(let n of t)for(let t of n.patterns){let i=t.toLowerCase();switch(n.matchType??`contains`){case`exact`:if(r===i)return n.intent;break;case`regex`:try{if(new RegExp(i,`i`).test(e))return n.intent}catch{}break;default:if(r.includes(i))return n.intent;break}}return n};return{name:`intent`,onMessage(t,n){if(t.sender!==`user`||!t.text)return;let i=r(t.text);n.emit(`intent:detected`,{intent:i,text:t.text}),e?.onIntentDetected?.(i,t.text,n)}}}function rt(e){let t=e?.delay??1e3;return{name:`typing`,async onMessage(n,r){n.sender===`bot`&&(e?.onTypingStart?.(),r.emit(`typing:start`,{}),await new Promise(e=>setTimeout(e,t)),e?.onTypingEnd?.(),r.emit(`typing:end`,{}))}}}var X=class{constructor(){this.timers=new Map,this.intervals=new Map}setTimeout(e,t,n){this.clearTimeout(e),this.timers.set(e,setTimeout(()=>{this.timers.delete(e),t()},n))}setInterval(e,t,n){this.clearInterval(e),this.intervals.set(e,setInterval(t,n))}clearTimeout(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e))}clearInterval(e){let t=this.intervals.get(e);t&&(clearInterval(t),this.intervals.delete(e))}destroy(){this.timers.forEach(e=>clearTimeout(e)),this.intervals.forEach(e=>clearInterval(e)),this.timers.clear(),this.intervals.clear()}};function it(e){let t=e?.timeout??3e4,n=e?.message??`Are you still there? Let me know if you need help! 👋`,r=e?.maxReplies??2,i=new X,a=0,o=!1;return{name:`autoReply`,onInit(e){o=!0,a=0},onMessage(e,s){e.sender===`user`&&(a=0,i.clearTimeout(`idle`),o&&i.setTimeout(`idle`,()=>{a<r&&(a++,s.addBotMessage(n))},t))},onEvent(e,t){e.type===`open`?o=!0:e.type===`close`&&(o=!1,i.clearTimeout(`idle`))},onDestroy(){i.destroy()}}}function at(e){let t=e?.validators??{},n=e?.sanitize??!0,r=e?.profanityList??[],i=e=>e.replace(/[<>&"']/g,e=>({"<":`&lt;`,">":`&gt;`,"&":`&amp;`,'"':`&quot;`,"'":`&#39;`})[e]??e),a=t=>{if(!e?.blockProfanity||!r.length)return null;let n=t.toLowerCase();for(let e of r)if(n.includes(e.toLowerCase()))return`Message contains inappropriate content.`;return null};return{name:`validation`,onMessage(r,o){if(r.sender!==`user`||!r.text)return;let s=a(r.text);if(s)return e?.onValidationFail?.(r.text,s),o.emit(`validation:fail`,{text:r.text,error:s}),{...r,text:`***`};for(let[n,i]of Object.entries(t)){let t=i(r.text);t&&(e?.onValidationFail?.(r.text,t),o.emit(`validation:fail`,{text:r.text,validator:n,error:t}))}if(n)return{...r,text:i(r.text)}}}}function ot(e){return{name:`upload`,onInit(t){t.on(`file:upload`,async(...n)=>{let r=n[0];if(r?.length)for(let n of r){if(e.maxSize&&n.size>e.maxSize){e.onUploadError?.({name:n.name},Error(`File too large: ${n.size} > ${e.maxSize}`));continue}if(e.allowedTypes?.length&&!e.allowedTypes.some(e=>n.type.startsWith(e))){e.onUploadError?.({name:n.name},Error(`File type not allowed: ${n.type}`));continue}e.onUploadStart?.({name:n.name,size:n.size});try{let r=new FormData;r.append(`file`,n),r.append(`storage`,e.storage??`custom`);let i=await fetch(e.endpoint,{method:`POST`,headers:e.headers,body:r});if(!i.ok)throw Error(`Upload failed: ${i.status}`);let a=await i.json();e.onUploadComplete?.({name:n.name,url:a.url??``}),t.emit(`file:uploaded`,{name:n.name,url:a.url})}catch(t){e.onUploadError?.({name:n.name},t)}}})}}}function Z(e=`local`){let t=e===`session`?sessionStorage:localStorage;return{get:e=>{try{return t.getItem(e)}catch{return null}},set:(e,n)=>{try{t.setItem(e,n)}catch{}},remove:e=>{try{t.removeItem(e)}catch{}}}}function st(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function ct(e){let t=e?.storageKey??`chatbot_history`,n=Z(e?.storage??`local`),r=e?.maxMessages??100,i=e?.ttl??0,a=e=>{let i={messages:e.getMessages().slice(-r),savedAt:Date.now()};n.set(t,JSON.stringify(i))};return{name:`persistence`,onInit(e){let r=st(n.get(t),null);if(r?.messages?.length){if(i>0&&Date.now()-r.savedAt>i){n.remove(t);return}for(let t of r.messages)t.sender===`bot`&&t.text&&e.addBotMessage(t.text)}},onMessage(e,t){a(t)},onSubmit(e,t){a(t)},onDestroy(e){a(e)}}}function lt(e){let t=e.syncInterval??0,n=e.sessionKey??`chat_${Date.now()}`,r=null,i=t=>{Y(e.endpoint,{session:n,messages:t.getMessages(),data:t.getData(),timestamp:Date.now()},e.headers).catch(()=>{})};return{name:`sync`,async onInit(a){try{let t=await Ze(`${e.endpoint}?session=${encodeURIComponent(n)}`,e.headers);if(t.data)for(let[e,n]of Object.entries(t.data))a.setData(e,n)}catch{}t>0&&(r=setInterval(()=>i(a),t))},onSubmit(e,t){i(t)},onEvent(e,t){e.type===`flowEnd`&&i(t)},onDestroy(e){r&&clearInterval(r),i(e)}}}function ut(e){let t=e.tokenKey??`chatbot_auth_token`,n=Z(e.storage??`local`),r=t=>{if(e.validateToken)return!e.validateToken(t);if(e.type===`jwt`)try{let e=JSON.parse(atob(t.split(`.`)[1]));return e.exp?e.exp*1e3<Date.now():!1}catch{return!0}return!1};return{name:`auth`,onInit(i){let a=n.get(t);a&&(r(a)?(n.remove(t),e.onAuthExpired?.(i),i.emit(`auth:expired`,{})):(i.setData(`authToken`,a),e.onAuth?.(a,i),i.emit(`auth:restored`,{token:a}))),i.on(`auth:login`,(...e)=>{let r=e[0];r&&(n.set(t,r),i.setData(`authToken`,r),i.emit(`auth:success`,{token:r}))}),i.on(`auth:logout`,()=>{n.remove(t),i.setData(`authToken`,void 0),i.emit(`auth:loggedOut`,{})})}}}function dt(e){let t=e?.limit??10,n=e?.window??6e4,r=[];return{name:`rateLimit`,onMessage(i,a){if(i.sender!==`user`)return;let o=Date.now();for(;r.length>0&&o-r[0]>n;)r.shift();if(r.push(o),r.length>t){let t=Math.ceil((r[0]+n-o)/1e3);return e?.onLimited?.(t),a.emit(`rateLimit:exceeded`,{remaining:t}),a.addBotMessage(e?.warningMessage??`Too many messages. Please wait ${t}s.`),{...i,text:``}}}}}function ft(e){let t=e?.title??`New Message`,n=e?.onlyWhenHidden??!0,r=()=>typeof Notification<`u`&&Notification.permission===`granted`,i=()=>r()&&(!n||document.hidden);return{name:`push`,async onInit(){e?.requestPermission!==!1&&typeof Notification<`u`&&Notification.permission===`default`&&await Notification.requestPermission()},onMessage(n){n.sender===`bot`&&n.text&&i()&&new Notification(t,{body:n.text.slice(0,200),icon:e?.icon,tag:`chatbot-msg`})}}}function pt(e){let t=Math.min(1,Math.max(0,e?.volume??.5)),n=e?.onlyWhenHidden??!1,r=null,i=()=>{r||=new AudioContext;let e=r.createOscillator(),n=r.createGain();e.connect(n),n.connect(r.destination),e.frequency.value=800,n.gain.value=t*.3,e.start(),n.gain.exponentialRampToValueAtTime(.001,r.currentTime+.15),e.stop(r.currentTime+.15)},a=()=>{if(!(n&&!document.hidden))if(e?.src){let n=new Audio(e.src);n.volume=t,n.play().catch(()=>{})}else try{i()}catch{}};return{name:`sound`,onMessage(e){e.sender===`bot`&&a()},onDestroy(){r?.close().catch(()=>{}),r=null}}}function mt(e){let t=null,n=!1;return{name:`agent`,onInit(r){r.on(`agent:connect`,()=>{t||!e.socketUrl||(t=new WebSocket(e.socketUrl),t.onopen=()=>{n=!0,r.addBotMessage(e.connectMessage??`🧑‍💼 You are now connected to a live agent.`),e.onAgentConnect?.(r),r.emit(`agent:connected`,{})},t.onmessage=t=>{let n=typeof t.data==`string`?t.data:``;n&&(r.addBotMessage(n),e.onAgentMessage?.(n,r))},t.onclose=()=>{n=!1,t=null,r.addBotMessage(e.disconnectMessage??`🧑‍💼 The agent has disconnected.`),e.onAgentDisconnect?.(r),r.emit(`agent:disconnected`,{})},t.onerror=()=>{t?.close()})}),r.on(`agent:disconnect`,()=>{t?.close()})},onMessage(e){n&&e.sender===`user`&&t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`message`,text:e.text,timestamp:Date.now()}))},onDestroy(){t?.close(),t=null,n=!1}}}function ht(e){return{name:`transfer`,onInit(t){t.on(`transfer:request`,async(...n)=>{let r=n[0]??`default`;t.addBotMessage(e.transferMessage??`Transferring you to **${r}**. Please hold...`),e.onTransfer?.(r,t);try{let n=await(await Y(e.endpoint,{department:r,messages:t.getMessages(),data:t.getData(),timestamp:Date.now()},e.headers)).json();e.onTransferComplete?.(n,t),t.emit(`transfer:complete`,{department:r,result:n})}catch(e){t.addBotMessage(`Transfer failed. Please try again later.`),t.emit(`transfer:error`,{department:r,error:String(e)})}})}}}function gt(e){let t=e?.storageKey??`chatbot_theme`,n=Z(`local`),r=e?.cssVariable??`--cb-theme-mode`,i=e=>{typeof document<`u`&&(document.documentElement.style.setProperty(r,e),document.documentElement.setAttribute(`data-chatbot-theme`,e))};return{name:`theme`,onInit(r){let a=n.get(t)??e?.defaultMode??`light`;i(a),r.setData(`theme`,a),r.on(`theme:set`,(...a)=>{let o=a[0];o&&(n.set(t,o),i(o),r.setData(`theme`,o),e?.onThemeChange?.(o,r),r.emit(`theme:changed`,{mode:o}))}),r.on(`theme:toggle`,()=>{let e=(n.get(t)??`light`)===`light`?`dark`:`light`;r.emit(`theme:set`,e)})}}}function _t(e){return{name:`component`,onInit(t){if(t.on(`component:inject`,(...n)=>{let r=n[0];r&&(t.emit(`component:render`,{component:r}),e?.onRender?.(r,t))}),e?.components)for(let[n,r]of Object.entries(e.components))t.on(`component:${n}`,()=>{t.emit(`component:render`,{component:r})})}}}function vt(e){let t=new Set(e.fields??[`name`,`email`,`phone`]),n=Z(`local`),r=e.storageKey??`chatbot_lead`,i=(i,a)=>{let o={},s=!1;for(let[e,n]of Object.entries(i))t.has(e)&&n&&(o[e]=n,s=!0);if(s){let t={...JSON.parse(n.get(r)??`{}`),...o,updatedAt:Date.now()};n.set(r,JSON.stringify(t)),e.onLeadCaptured?.(t,a),a.emit(`lead:captured`,t),e.endpoint&&Y(e.endpoint,t,e.headers).catch(()=>{})}};return{name:`lead`,onSubmit(e,t){i(e,t)},onEvent(e,t){e.type===`flowEnd`&&e.payload&&i(e.payload,t),e.type===`login`&&e.payload&&i(e.payload,t)}}}function yt(e){let t=new X,n=new Map;return{name:`campaign`,onInit(r){e.campaigns.forEach((i,a)=>{let o=i.maxShows??1,s=()=>{let t=n.get(a)??0;t>=o||(n.set(a,t+1),r.addBotMessage(i.message),i.flowStep&&r.emit(`campaign:flowStart`,{step:i.flowStep}),e.onTrigger?.(i,r),r.emit(`campaign:triggered`,{trigger:i.trigger,idx:a}))};switch(i.trigger){case`pageLoad`:t.setTimeout(`campaign_${a}`,s,i.delay??0);break;case`idle`:t.setTimeout(`campaign_${a}`,s,i.delay??3e4);break;case`exitIntent`:if(typeof document<`u`){let e=t=>{t.clientY<=0&&(s(),document.removeEventListener(`mouseleave`,e))};document.addEventListener(`mouseleave`,e)}break;case`scroll`:if(typeof window<`u`){let e=()=>{window.scrollY/(document.body.scrollHeight-window.innerHeight)>.7&&(s(),window.removeEventListener(`scroll`,e))};window.addEventListener(`scroll`,e,{passive:!0})}break;case`custom`:r.on(`campaign:fire:${a}`,s);break}})},onDestroy(){t.destroy()}}}function bt(e){let t=new X;return{name:`scheduler`,onInit(n){e.messages?.forEach((r,i)=>{let a=`sched_${i}`;r.repeat&&r.interval?t.setTimeout(`${a}_init`,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message),t.setInterval(a,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message)},r.interval)},r.delay):t.setTimeout(a,()=>{n.addBotMessage(r.message),e.onScheduledMessage?.(r.message)},r.delay)}),n.on(`scheduler:add`,(...r)=>{let i=r[0];if(i){let r=`sched_dyn_${Date.now()}`;t.setTimeout(r,()=>{n.addBotMessage(i.message),e.onScheduledMessage?.(i.message)},i.delay)}})},onDestroy(){t.destroy()}}}function xt(e){let t=new X;return{name:`reminder`,onInit(n){e?.reminders?.forEach((r,i)=>{t.setTimeout(`reminder_${i}`,()=>{n.addBotMessage(r.message),e?.onReminder?.(r.message),n.emit(`reminder:sent`,{message:r.message,idx:i})},r.delay)}),n.on(`reminder:set`,(...r)=>{let i=r[0];i&&t.setTimeout(`reminder_${i.id}`,()=>{n.addBotMessage(i.message),e?.onReminder?.(i.message),n.emit(`reminder:sent`,i)},i.delay)}),n.on(`reminder:cancel`,(...e)=>{let n=e[0];n&&t.clearTimeout(`reminder_${n}`)})},onDestroy(){t.destroy()}}}function St(e){let t=Z(`local`),n=e.storageKey??`chatbot_locale`,r=e.defaultLocale??`en`,i=t=>e.translations[r]?.[t]??e.translations[e.defaultLocale??`en`]?.[t]??t;return{name:`i18n`,onInit(a){let o=t.get(n);o&&e.translations[o]&&(r=o),a.setData(`locale`,r),a.setData(`t`,i),a.on(`i18n:setLocale`,(...i)=>{let o=i[0];o&&e.translations[o]&&(r=o,t.set(n,o),a.setData(`locale`,o),e.onLocaleChange?.(o,a),a.emit(`i18n:localeChanged`,{locale:o}))}),a.on(`i18n:translate`,(...e)=>{let t=e[0];t&&a.emit(`i18n:translated`,{key:t,value:i(t)})})},onMessage(e){if(e.sender===`bot`&&e.text){let t=e.text.replace(/\{\{t:([^}]+)\}\}/g,(e,t)=>i(t));if(t!==e.text)return{...e,text:t}}}}}function Ct(e){e?.groupName,e?.logState,e?.logEvents,e?.logMessages;let t=[];return{name:`debug`,onInit(e){typeof window<`u`&&(window.__chatbotDebug={getMessages:()=>e.getMessages(),getData:()=>e.getData(),getEventLog:()=>[...t],sendMessage:t=>e.sendMessage(t),emit:(t,...n)=>e.emit(t,...n)})},onMessage(e){},onEvent(e){t.push({type:e.type,payload:e.payload,time:Date.now()})},onDestroy(){t=[],typeof window<`u`&&delete window.__chatbotDebug}}}function wt(e){let t=e?.position??`top-right`,n=e?.shortcutKey??`F2`,r=null,i=!1,a={messages:0,events:[],data:{},currentStep:null},o=()=>{let e=document.createElement(`div`);e.id=`chatbot-devtools`;let n={"top-left":`top:8px;left:8px`,"top-right":`top:8px;right:8px`,"bottom-left":`bottom:80px;left:8px`,"bottom-right":`bottom:80px;right:8px`};return e.style.cssText=`
47
47
  position:fixed;${n[t]};z-index:99999;width:320px;max-height:400px;overflow:auto;
48
48
  background:#1a1a2e;color:#e0e0e0;font-family:monospace;font-size:11px;
49
49
  border-radius:8px;padding:12px;box-shadow:0 4px 20px rgba(0,0,0,0.4);display:none;
@@ -54,6 +54,99 @@ ${Object.entries(we).map(([e,t])=>`**${e}** — ${t}`).join(`
54
54
  <div style="margin-bottom:6px;"><b>Data:</b><pre style="margin:4px 0;white-space:pre-wrap;font-size:10px;">${JSON.stringify(a.data,null,2)}</pre></div>
55
55
  <div><b>Recent Events (${a.events.length}):</b></div>
56
56
  ${a.events.slice(-10).map(e=>`<div style="color:#888;font-size:10px;">${e.type}</div>`).join(``)}
57
- `)},c=()=>{r||=o(),i=!i,r.style.display=i?`block`:`none`,i&&s()},l=null;return{name:`devtools`,onInit(e){typeof document>`u`||(l=e=>{e.key===n&&c()},document.addEventListener(`keydown`,l),a.messages=e.getMessages().length,a.data=e.getData())},onMessage(t,n){a.messages=n.getMessages().length+1,a.data=n.getData(),e?.onStateUpdate?.(a),i&&s()},onEvent(t,n){a.events.push({type:t.type,time:t.timestamp}),t.type===`stepChange`&&(a.currentStep=t.payload?.stepId??null),a.data=n.getData(),e?.onStateUpdate?.(a),i&&s()},onDestroy(){l&&=(document.removeEventListener(`keydown`,l),null),r?.remove(),r=null}}}function ft(e){let t=new Set(e?.allowedTypes??[`image`,`video`,`audio`,`card`]),n=n=>{if(!n)return n;let r=n;return t.has(`image`)&&(r=r.replace(/\[image:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`image`,n),`![image](${n})`))),t.has(`video`)&&(r=r.replace(/\[video:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`video`,n),`🎬 [Watch video](${n})`))),t.has(`audio`)&&(r=r.replace(/\[audio:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`audio`,n),`🔊 [Listen](${n})`))),r};return{name:`media`,onInit(e){e.on(`media:send`,(...r)=>{let i=r[0];if(i&&t.has(i.type)){let t=i.caption?`${n(`[${i.type}:${i.url}]`)}
58
- ${i.caption}`:n(`[${i.type}:${i.url}]`);e.addBotMessage(t)}})},onMessage(e){if(e.sender===`bot`&&e.text){let t=n(e.text);if(t!==e.text)return{...e,text:t}}}}}function pt(e){let t={bold:e?.enableBold??!0,italic:e?.enableItalic??!0,code:e?.enableCode??!0,links:e?.enableLinks??!0,lists:e?.enableLists??!0,lineBreaks:e?.enableLineBreaks??!0},n=e=>{let n=e;return t.code&&(n=n.replace(/```([^`]+)```/g,`<pre><code>$1</code></pre>`),n=n.replace(/`([^`]+)`/g,`<code>$1</code>`)),t.bold&&(n=n.replace(/\*\*([^*]+)\*\*/g,`<strong>$1</strong>`),n=n.replace(/__([^_]+)__/g,`<strong>$1</strong>`)),t.italic&&(n=n.replace(/\*([^*]+)\*/g,`<em>$1</em>`),n=n.replace(/(?<!\w)_([^_]+)_(?!\w)/g,`<em>$1</em>`)),t.links&&(n=n.replace(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/g,`<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>`)),t.lists&&(n=n.replace(/^[•\-\*]\s+(.+)$/gm,`<li>$1</li>`),n=n.replace(/(<li>.*<\/li>\n?)+/g,`<ul>$&</ul>`)),t.lineBreaks&&(n=n.replace(/\n/g,`<br>`)),n};return{name:`markdown`,onMessage(e){if(e.sender===`bot`&&e.text){let t=n(e.text);if(t!==e.text)return{...e,text:t}}}}}function mt(e){let t=null,n={...Y,...e.events},r=e.sessionId??`live_${Date.now()}`;return{name:`liveAgent`,onInit(i){t=new J(e.type===`socketio`?new _e(e.instance):new ge(e.instance),n,r),t.on(n.agentMessage,e=>{let t=e;t.text&&i.addBotMessage(t.text)}),t.on(n.agentJoined,t=>{let n=t;i.addBotMessage(`🟢 ${n.name} joined the chat`),e.onAgentJoined?.(n)}),t.on(n.agentLeft,t=>{let n=t;i.addBotMessage(`🔴 ${n.name} left the chat`),e.onAgentLeft?.(n)}),t.on(n.queueUpdate,t=>{let n=t,r=n.estimatedWait?` Estimated wait: ~${n.estimatedWait} min.`:``;i.addBotMessage(`You are #${n.position} in queue.${r}`),e.onQueueUpdate?.(n.position,n.estimatedWait)}),i.on(`liveAgent:transfer`,(...e)=>{let n=e[0];t?.requestTransfer(n)}),i.on(`liveAgent:send`,(...e)=>{let n=e[0];n&&t?.sendUserMessage(n)}),t.initSession(),e.onConnect?.()},onMessage(e,n){return e.sender===`user`&&t?.isConnected()&&t.sendUserMessage(e.text??``),e},onDestroy(){t?.destroy(),t=null,e.onDisconnect?.()}}}exports.AttachmentIcon=w,exports.Branding=G,exports.ChatBot=Pe,exports.ChatBubbleIcon=b,exports.ChatContext=f,exports.ChatHeader=A,exports.ChatInput=W,exports.ChatWindow=Ae,exports.CheckboxField=ie,exports.CloseIcon=x,exports.DEFAULT_LIVE_AGENT_EVENTS=Y,exports.DynamicForm=N,exports.EmojiIcon=C,exports.EmojiPicker=B,exports.FileIcon=T,exports.FilePreviewList=H,exports.FileUploadButton=V,exports.FileUploadField=M,exports.FlowEngine=he,exports.ImageIcon=E,exports.Launcher=k,exports.LiveAgentAdapter=J,exports.LoginScreen=se,exports.MessageBubble=F,exports.MessageList=R,exports.MinimizeIcon=S,exports.PluginManager=je,exports.QuickReplies=I,exports.RadioField=re,exports.RemoveIcon=D,exports.RestartIcon=O,exports.SelectField=ne,exports.SendIcon=y,exports.TextField=te,exports.TypingIndicator=L,exports.WelcomeScreen=j,exports.agentPlugin=tt,exports.aiPlugin=He,exports.analyticsPlugin=Fe,exports.authPlugin=Ze,exports.autoReplyPlugin=Ge,exports.buildCSSVariables=_,exports.buildStyles=v,exports.campaignPlugin=ot,exports.componentPlugin=it,exports.crmPlugin=Be,exports.debugPlugin=ut,exports.devtoolsPlugin=dt,exports.emailPlugin=Ve,exports.i18nPlugin=lt,exports.intentPlugin=Ue,exports.leadPlugin=at,exports.liveAgentPlugin=mt,exports.loggerPlugin=Le,exports.markdownPlugin=pt,exports.mediaPlugin=ft,exports.persistencePlugin=Ye,exports.pushPlugin=$e,exports.rateLimitPlugin=Qe,exports.reminderPlugin=ct,exports.renderMarkdown=ce,exports.resolveTheme=g,exports.schedulerPlugin=st,exports.soundPlugin=et,exports.syncPlugin=Xe,exports.themePlugin=rt,exports.transferPlugin=nt,exports.typingPlugin=We,exports.uploadPlugin=qe,exports.useChat=ke,exports.useChatContext=p,exports.useLiveAgent=be,exports.validationPlugin=Ke,exports.webhookPlugin=ze;
57
+ `)},c=()=>{r||=o(),i=!i,r.style.display=i?`block`:`none`,i&&s()},l=null;return{name:`devtools`,onInit(e){typeof document>`u`||(l=e=>{e.key===n&&c()},document.addEventListener(`keydown`,l),a.messages=e.getMessages().length,a.data=e.getData())},onMessage(t,n){a.messages=n.getMessages().length+1,a.data=n.getData(),e?.onStateUpdate?.(a),i&&s()},onEvent(t,n){a.events.push({type:t.type,time:t.timestamp}),t.type===`stepChange`&&(a.currentStep=t.payload?.stepId??null),a.data=n.getData(),e?.onStateUpdate?.(a),i&&s()},onDestroy(){l&&=(document.removeEventListener(`keydown`,l),null),r?.remove(),r=null}}}function Tt(e){let t=new Set(e?.allowedTypes??[`image`,`video`,`audio`,`card`]),n=n=>{if(!n)return n;let r=n;return t.has(`image`)&&(r=r.replace(/\[image:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`image`,n),`![image](${n})`))),t.has(`video`)&&(r=r.replace(/\[video:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`video`,n),`🎬 [Watch video](${n})`))),t.has(`audio`)&&(r=r.replace(/\[audio:([^\]]+)\]/g,(t,n)=>(e?.onMediaRender?.(`audio`,n),`🔊 [Listen](${n})`))),r};return{name:`media`,onInit(e){e.on(`media:send`,(...r)=>{let i=r[0];if(i&&t.has(i.type)){let t=i.caption?`${n(`[${i.type}:${i.url}]`)}
58
+ ${i.caption}`:n(`[${i.type}:${i.url}]`);e.addBotMessage(t)}})},onMessage(e){if(e.sender===`bot`&&e.text){let t=n(e.text);if(t!==e.text)return{...e,text:t}}}}}function Et(e){let t={bold:e?.enableBold??!0,italic:e?.enableItalic??!0,code:e?.enableCode??!0,links:e?.enableLinks??!0,lists:e?.enableLists??!0,lineBreaks:e?.enableLineBreaks??!0},n=e=>{let n=e;return t.code&&(n=n.replace(/```([^`]+)```/g,`<pre><code>$1</code></pre>`),n=n.replace(/`([^`]+)`/g,`<code>$1</code>`)),t.bold&&(n=n.replace(/\*\*([^*]+)\*\*/g,`<strong>$1</strong>`),n=n.replace(/__([^_]+)__/g,`<strong>$1</strong>`)),t.italic&&(n=n.replace(/\*([^*]+)\*/g,`<em>$1</em>`),n=n.replace(/(?<!\w)_([^_]+)_(?!\w)/g,`<em>$1</em>`)),t.links&&(n=n.replace(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/g,`<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>`)),t.lists&&(n=n.replace(/^[•\-\*]\s+(.+)$/gm,`<li>$1</li>`),n=n.replace(/(<li>.*<\/li>\n?)+/g,`<ul>$&</ul>`)),t.lineBreaks&&(n=n.replace(/\n/g,`<br>`)),n};return{name:`markdown`,onMessage(e){if(e.sender===`bot`&&e.text){let t=n(e.text);if(t!==e.text)return{...e,text:t}}}}}function Dt(e){let t=null,n={...q,...e.events},r=e.sessionId??`live_${Date.now()}`;return{name:`liveAgent`,onInit(i){t=new K(e.type===`socketio`?new De(e.instance):new Ee(e.instance),n,r),t.on(n.agentMessage,e=>{let t=e;t.text&&i.addBotMessage(t.text)}),t.on(n.agentJoined,t=>{let n=t;i.addBotMessage(`🟢 ${n.name} joined the chat`),e.onAgentJoined?.(n)}),t.on(n.agentLeft,t=>{let n=t;i.addBotMessage(`🔴 ${n.name} left the chat`),e.onAgentLeft?.(n)}),t.on(n.queueUpdate,t=>{let n=t,r=n.estimatedWait?` Estimated wait: ~${n.estimatedWait} min.`:``;i.addBotMessage(`You are #${n.position} in queue.${r}`),e.onQueueUpdate?.(n.position,n.estimatedWait)}),i.on(`liveAgent:transfer`,(...e)=>{let n=e[0];t?.requestTransfer(n)}),i.on(`liveAgent:send`,(...e)=>{let n=e[0];n&&t?.sendUserMessage(n)}),t.initSession(),e.onConnect?.()},onMessage(e,n){return e.sender===`user`&&t?.isConnected()&&t.sendUserMessage(e.text??``),e},onDestroy(){t?.destroy(),t=null,e.onDisconnect?.()}}}function Ot(e){let t=new Set,n=e?.storageKey??`cb_tags`;return{name:`tags`,onInit(e){try{let e=localStorage.getItem(n);e&&JSON.parse(e).forEach(e=>t.add(e))}catch{}e.emit(`tags:loaded`,Array.from(t))},onEvent(r,i){r.type===`tags:add`&&typeof r.payload==`string`&&(t.add(r.payload),localStorage.setItem(n,JSON.stringify(Array.from(t))),e?.onTagAdded?.(r.payload),i.emit(`tags:updated`,Array.from(t))),r.type===`tags:remove`&&typeof r.payload==`string`&&(t.delete(r.payload),localStorage.setItem(n,JSON.stringify(Array.from(t))),e?.onTagRemoved?.(r.payload),i.emit(`tags:updated`,Array.from(t))),r.type===`tags:get`&&i.emit(`tags:current`,Array.from(t))}}}function kt(e){let t={scale:e?.scale??5,prompt:e?.prompt??`How was your experience?`,triggers:e?.triggers??[`flowEnd`]};return{name:`rating`,onEvent(n,r){(t.triggers.includes(`flowEnd`)&&n.type===`flowEnd`||t.triggers.includes(`agentDisconnect`)&&n.type===`agent:left`||t.triggers.includes(`custom`)&&n.type===`rating:show`)&&r.addBotMessage(`${t.prompt} (Rate 1-${t.scale})`),n.type===`rating:submit`&&typeof n.payload==`number`&&(e?.onRate?.(n.payload),e?.endpoint&&fetch(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify({rating:n.payload,timestamp:Date.now()})}).catch(()=>{}),r.addBotMessage(`Thanks for your ${n.payload}/${t.scale} rating! 🙏`))}}}function At(e){let t=e?.storageKey??`cb_offline_queue`,n=[],r=()=>{try{let e=localStorage.getItem(t);e&&(n=JSON.parse(e))}catch{}},i=()=>{localStorage.setItem(t,JSON.stringify(n))};return{name:`offline`,onInit(t){r(),window.addEventListener(`online`,()=>{n.length>0&&(n.forEach(e=>t.sendMessage(e.text)),e?.onFlush?.(n.length),n=[],i()),e?.showOfflineIndicator&&t.addBotMessage(`🟢 Back online!`)}),window.addEventListener(`offline`,()=>{e?.showOfflineIndicator&&t.addBotMessage(`🔴 You are offline. Messages will be sent when you reconnect.`)})},onMessage(e,t){if(e.sender===`user`&&!navigator.onLine){n.push({text:e.text??``,timestamp:Date.now()}),i(),t.addBotMessage(`📥 Message queued — will send when online.`);return}}}}function jt(e){let t=new Map,n=[];return{name:`proactive`,onInit(r){e.rules.forEach((i,a)=>{t.set(a,0);let o=i.maxShows??1,s=i.delay??5e3,c=()=>{let n=t.get(a)??0;n>=o||(t.set(a,n+1),e.onTrigger?.(i),r.addBotMessage(i.message),i.flowStep&&r.emit(`flow:goto`,i.flowStep))};if(!(typeof window>`u`))switch(i.trigger){case`pageLoad`:n.push(setTimeout(c,s));break;case`idle`:{let e,t=()=>{clearTimeout(e),e=setTimeout(c,s)};[`mousemove`,`keydown`,`scroll`,`touchstart`].forEach(e=>document.addEventListener(e,t,{passive:!0})),e=setTimeout(c,s);break}case`scroll`:window.addEventListener(`scroll`,()=>{window.scrollY/(document.body.scrollHeight-window.innerHeight)*100>=50&&c()},{passive:!0});break;case`exitIntent`:document.addEventListener(`mouseleave`,e=>{e.clientY<=0&&c()});break;case`custom`:break}})},onEvent(n,r){if(n.type===`proactive:trigger`&&typeof n.payload==`number`){let i=e.rules[n.payload];if(i){let a=t.get(n.payload)??0;a<(i.maxShows??1)&&(t.set(n.payload,a+1),e.onTrigger?.(i),r.addBotMessage(i.message))}}},onDestroy(){n.forEach(clearTimeout)}}}function Mt(e){let t=e.storageKey??`cb_persona`,n=e.personas.find(t=>t.id===e.defaultPersona)??e.personas[0];return{name:`persona`,onInit(r){try{let r=localStorage.getItem(t);if(r){let t=e.personas.find(e=>e.id===r);t&&(n=t)}}catch{}r.emit(`persona:current`,n)},onEvent(r,i){if(r.type===`persona:switch`&&typeof r.payload==`string`){let a=e.personas.find(e=>e.id===r.payload);a&&(n=a,localStorage.setItem(t,a.id),e.onSwitch?.(a),i.emit(`persona:current`,a),a.greeting&&i.addBotMessage(a.greeting),a.flowId&&i.emit(`flow:goto`,a.flowId))}r.type===`persona:get`&&i.emit(`persona:current`,n),r.type===`persona:list`&&i.emit(`persona:all`,e.personas)},onMessage(e){if(e.sender===`bot`)return{...e,metadata:{...e.metadata,persona:n.id,personaName:n.name,personaAvatar:n.avatar}}}}}function Nt(e={}){let t=e.maxPins??10,n=e.storageKey??`chatbot_pinned`,r=[],i=()=>{if(e.persist)try{r=JSON.parse(localStorage.getItem(n)??`[]`)}catch{r=[]}},a=()=>{e.persist&&localStorage.setItem(n,JSON.stringify(r))};return{name:`pin`,onInit(e){i()},onEvent(n,i){n.type===`pin:add`&&typeof n.payload==`string`&&!r.includes(n.payload)&&r.length<t&&(r.push(n.payload),a(),e.onPin?.(n.payload),i.emit(`pin:updated`,[...r])),n.type===`pin:remove`&&typeof n.payload==`string`&&(r=r.filter(e=>e!==n.payload),a(),e.onUnpin?.(n.payload),i.emit(`pin:updated`,[...r])),n.type===`pin:list`&&i.emit(`pin:current`,[...r]),n.type===`pin:clear`&&(r=[],a(),i.emit(`pin:updated`,[]))}}}function Pt(e={}){let t=e.storageKey??`chatbot_theme_mode`,n=e.defaultMode??`light`;return{name:`themeToggle`,onInit(r){if(e.persist!==!1){let e=localStorage.getItem(t);(e===`light`||e===`dark`)&&(n=e)}r.setData(`__themeMode`,n),r.emit(`theme:mode`,n)},onEvent(r,i){r.type===`theme:toggle`&&(n=n===`light`?`dark`:`light`,e.persist!==!1&&localStorage.setItem(t,n),i.setData(`__themeMode`,n),e.onToggle?.(n),i.emit(`theme:mode`,n)),r.type===`theme:set`&&(r.payload===`light`||r.payload===`dark`)&&(n=r.payload,e.persist!==!1&&localStorage.setItem(t,n),i.setData(`__themeMode`,n),e.onToggle?.(n),i.emit(`theme:mode`,n)),r.type===`theme:get`&&i.emit(`theme:mode`,n)}}}function Ft(e={}){let t=e.triggers??[`flowEnd`],n=e.duration??3e3,r=e.particleCount??50,i=e.colors??[`#6C5CE7`,`#A29BFE`,`#fd79a8`,`#fdcb6e`,`#00b894`,`#0984e3`],a=()=>{if(typeof document>`u`)return;e.onFire?.();let t=document.createElement(`div`);t.style.cssText=`position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:999999;overflow:hidden;`,document.body.appendChild(t);for(let e=0;e<r;e++){let e=document.createElement(`div`),r=i[Math.floor(Math.random()*i.length)],a=Math.random()*100,o=Math.random()*500,s=Math.random()*8+4,c=Math.random()*360;e.style.cssText=`
59
+ position:absolute;top:-10px;left:${a}%;
60
+ width:${s}px;height:${s}px;
61
+ background:${r};border-radius:${Math.random()>.5?`50%`:`0`};
62
+ transform:rotate(${c}deg);
63
+ animation:confetti-fall ${n}ms ease-in ${o}ms forwards;
64
+ opacity:0.9;
65
+ `,t.appendChild(e)}if(!document.getElementById(`confetti-style`)){let e=document.createElement(`style`);e.id=`confetti-style`,e.textContent=`
66
+ @keyframes confetti-fall {
67
+ 0% { transform: translateY(0) rotate(0deg); opacity: 1; }
68
+ 100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
69
+ }
70
+ `,document.head.appendChild(e)}setTimeout(()=>t.remove(),n+1e3)};return{name:`confetti`,onEvent(e,n){t.includes(e.type)&&a(),e.type===`confetti:fire`&&a()}}}function It(e={}){let t=e.storageKey??`chatbot_priority`,n=e.maxLabels??5,r=e.defaultPriority??`medium`,i=[],a=()=>{if(e.persist!==!1)try{let e=JSON.parse(localStorage.getItem(t)??`{}`);e.priority&&(r=e.priority),e.labels&&(i=e.labels)}catch{}},o=()=>{e.persist!==!1&&localStorage.setItem(t,JSON.stringify({priority:r,labels:i}))},s=()=>{e.webhookUrl&&fetch(e.webhookUrl,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({priority:r,labels:i,timestamp:Date.now()})}).catch(()=>{})};return{name:`priority`,onInit(e){a(),e.setData(`__priority`,r),e.setData(`__labels`,i)},onEvent(t,a){t.type===`priority:set`&&typeof t.payload==`string`&&[`low`,`medium`,`high`,`urgent`].includes(t.payload)&&(r=t.payload,o(),s(),e.onPriorityChange?.(r),a.setData(`__priority`,r),a.emit(`priority:changed`,r)),t.type===`label:add`&&typeof t.payload==`string`&&!i.includes(t.payload)&&i.length<n&&(i.push(t.payload),o(),e.onLabelsChange?.([...i]),a.setData(`__labels`,[...i]),a.emit(`labels:updated`,[...i])),t.type===`label:remove`&&typeof t.payload==`string`&&(i=i.filter(e=>e!==t.payload),o(),e.onLabelsChange?.([...i]),a.setData(`__labels`,[...i]),a.emit(`labels:updated`,[...i])),t.type===`priority:get`&&a.emit(`priority:current`,{priority:r,labels:i})}}}function Lt(e={}){let t=e.viewerRole??`user`;return{name:`whisper`,onMessage(e,n){if(!(e.metadata?.whisper===!0&&t===`user`))return e},onEvent(n,r){if(n.type===`whisper:send`&&typeof n.payload==`string`){let i={sender:`bot`,text:n.payload,metadata:{whisper:!0,from:`supervisor`}};t!==`user`&&r.addBotMessage(`🔇 ${n.payload}`),e.onWhisper?.(i),e.webhookUrl&&fetch(e.webhookUrl,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:`whisper`,text:n.payload,timestamp:Date.now()})}).catch(()=>{}),r.emit(`whisper:sent`,i)}}}}function Rt(e={}){let t=e.checkInterval??1e3,n=e.maxScheduled??20,r=e.storageKey??`chatbot_scheduled`,i=[],a=null,o=()=>{if(e.persist!==!1)try{i=JSON.parse(localStorage.getItem(r)??`[]`)}catch{i=[]}},s=()=>{e.persist!==!1&&localStorage.setItem(r,JSON.stringify(i))};return{name:`messageSchedule`,onInit(n){o(),a=setInterval(()=>{let t=Date.now(),r=i.filter(e=>e.scheduledAt<=t);if(r.length!==0){i=i.filter(e=>e.scheduledAt>t),s();for(let t of r)t.sender===`user`?n.sendMessage(t.text):n.addBotMessage(t.text),e.onFire?.(t),n.emit(`schedule:fired`,t)}},t)},onEvent(e,t){if(e.type===`schedule:add`){let r=e.payload;r?.text&&r?.scheduledAt&&i.length<n&&(i.push({id:r.id??`sched_${Date.now()}`,text:r.text,scheduledAt:r.scheduledAt,sender:r.sender??`bot`}),s(),t.emit(`schedule:added`,r))}e.type===`schedule:remove`&&typeof e.payload==`string`&&(i=i.filter(t=>t.id!==e.payload),s(),t.emit(`schedule:updated`,[...i])),e.type===`schedule:list`&&t.emit(`schedule:current`,[...i]),e.type===`schedule:clear`&&(i=[],s(),t.emit(`schedule:updated`,[]))},onDestroy(e){a&&clearInterval(a)}}}function zt(e={}){let t=0,n=!1,r=e.originalTitle??(typeof document<`u`?document.title:``),i=()=>{e.updateTitle&&typeof document<`u`&&(document.title=t>0?`(${t}) ${r}`:r)},a=()=>{if(e.playSound&&e.soundUrl&&typeof Audio<`u`){let t=new Audio(e.soundUrl);t.volume=.5,t.play().catch(()=>{})}};return{name:`notificationBadge`,onInit(e){e.setData(`__unreadCount`,0),e.on(`chatOpen`,()=>{n=!0,t=0,e.setData(`__unreadCount`,0),e.emit(`badge:count`,0),i()}),e.on(`chatClose`,()=>{n=!1})},onMessage(r,o){return r.sender===`bot`&&!n&&(t++,o.setData(`__unreadCount`,t),o.emit(`badge:count`,t),i(),a(),e.browserNotification&&typeof Notification<`u`&&Notification.permission===`granted`&&new Notification(`New message`,{body:r.text??`You have a new message`})),r},onEvent(e,n){e.type===`badge:reset`&&(t=0,n.setData(`__unreadCount`,0),n.emit(`badge:count`,0),i()),e.type===`badge:get`&&n.emit(`badge:count`,t)}}}function Bt(e){let t=e.filter(e=>e.sender===`user`&&e.text),n=e.filter(e=>e.sender===`bot`&&e.text),r=[];r.push(`📊 Conversation Summary (${e.length} messages)`),r.push(`• User messages: ${t.length}`),r.push(`• Bot messages: ${n.length}`),t.length>0&&(r.push(`• First user message: "${t[0].text.slice(0,60)}..."`),r.push(`• Last user message: "${t[t.length-1].text.slice(0,60)}..."`));let i=t.flatMap(e=>(e.text??``).toLowerCase().split(/\s+/)).filter(e=>e.length>3),a=new Map;i.forEach(e=>a.set(e,(a.get(e)??0)+1));let o=[...a.entries()].sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e);return o.length>0&&r.push(`• Key topics: ${o.join(`, `)}`),r.join(`
71
+ `)}function Vt(e={}){let t=e.maxMessages??50;return{name:`summary`,onEvent(n,r){if(n.type===`summary:generate`){let n=r.getMessages().slice(-t);if(e.endpoint)fetch(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify({messages:n.map(e=>({sender:e.sender,text:e.text}))})}).then(e=>e.json()).then(t=>{let n=t.summary??`Unable to generate summary.`;e.onSummary?.(n),r.addBotMessage(n),r.emit(`summary:result`,n)}).catch(()=>{if(e.localFallback!==!1){let t=Bt(n);e.onSummary?.(t),r.addBotMessage(t),r.emit(`summary:result`,t)}});else if(e.localFallback!==!1){let t=Bt(n);e.onSummary?.(t),r.addBotMessage(t),r.emit(`summary:result`,t)}}}}}function Q(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(r.includes(n))return 1;let i=n.split(/\s+/);return i.filter(e=>r.includes(e)).length/i.length}function Ht(e,t,n,r){return t.map(t=>({article:t,score:Math.max(Q(e,t.title),Q(e,t.content),...(t.tags??[]).map(t=>Q(e,t)))})).filter(e=>e.score>=n).sort((e,t)=>t.score-e.score).slice(0,r).map(e=>e.article)}function Ut(e={}){let t=e.threshold??.3,n=e.maxResults??3,r=async(r,i)=>{let a=[];if(e.endpoint)try{let t=`${e.endpoint}?q=${encodeURIComponent(r)}&limit=${n}`,i=await(await fetch(t,{headers:e.headers})).json();a=i.articles??i.results??i}catch{}if(a.length===0&&e.articles&&(a=Ht(r,e.articles,t,n)),a.length>0){e.onResult?.(a);let t=a.map((e,t)=>`${t+1}. **${e.title}**
72
+ ${e.content.slice(0,100)}${e.url?`
73
+ [Read more](${e.url})`:``}`).join(`
74
+
75
+ `);i.addBotMessage(`📚 I found these articles:
76
+
77
+ ${t}`),i.emit(`kb:results`,a)}};return{name:`knowledgeBase`,onMessage(t,n){return e.autoSearch&&t.sender===`user`&&t.text&&r(t.text,n),t},onEvent(e,t){e.type===`kb:search`&&typeof e.payload==`string`&&r(e.payload,t)}}}function Wt(e){let t=e.targetLang??`en`,n=e.sourceLang??`auto`,r=async r=>{try{let i=await(await fetch(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify({text:r,from:n,to:t})})).json();return i.translatedText??i.translation??i.text??r}catch{return r}};return{name:`translation`,async onMessage(n,i){if(!n.text||!(n.sender===`bot`&&e.translateIncoming!==!1||n.sender===`user`&&e.translateOutgoing===!0))return n;let a=await r(n.text);return e.onTranslate?.(n.text,a,t),e.showOriginal?{...n,text:`${a}
78
+
79
+ _Original: ${n.text}_`}:{...n,text:a}},onEvent(e,n){e.type===`translation:setLang`&&typeof e.payload==`string`&&(t=e.payload,n.setData(`__targetLang`,t),n.emit(`translation:langChanged`,t)),e.type===`translation:getLang`&&n.emit(`translation:currentLang`,t)}}}function $(e){return new Date(e).toLocaleString()}function Gt(e,t){let n=[];t.header&&n.push(t.header,``),n.push(`Chat Transcript — ${$(Date.now())}`,`─`.repeat(40),``);for(let r of e){let e=t.includeTimestamps===!1?``:`[${$(r.timestamp)}] `,i=r.sender===`user`?`You`:r.sender===`bot`?`Bot`:`System`;n.push(`${e}${i}: ${r.text??`[attachment]`}`)}return n.join(`
80
+ `)}function Kt(e,t){let n=[`timestamp,sender,text`];for(let t of e){let e=(t.text??``).replace(/"/g,`""`);n.push(`"${$(t.timestamp)}","${t.sender}","${e}"`)}return n.join(`
81
+ `)}function qt(e,t){let n=e.map(e=>`<p>${t.includeTimestamps===!1?``:`<span style="color:#888">[${$(e.timestamp)}]</span> `}${e.sender===`user`?`<b>You</b>`:e.sender===`bot`?`<b>Bot</b>`:`<b>System</b>`}: ${e.text??`<i>[attachment]</i>`}</p>`).join(`
82
+ `);return`<!DOCTYPE html><html><head><title>Chat Transcript</title></head><body><h1>Chat Transcript</h1><p>${$(Date.now())}</p><hr/>${n}</body></html>`}function Jt(e,t,n){if(typeof document>`u`)return;let r=new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}function Yt(e={}){let t=e.format??`text`,n=e.filename??`chat-transcript`;return{name:`transcriptExport`,onEvent(r,i){if(r.type===`transcript:export`){let a=typeof r.payload==`string`?r.payload:t,o=i.getMessages(),s,c,l;switch(a){case`json`:s=JSON.stringify(o,null,2),c=`application/json`,l=`json`;break;case`csv`:s=Kt(o,e),c=`text/csv`,l=`csv`;break;case`html`:s=qt(o,e),c=`text/html`,l=`html`;break;default:s=Gt(o,e),c=`text/plain`,l=`txt`}e.onExport?.(s,a),Jt(s,`${n}-${Date.now()}.${l}`,c),i.emit(`transcript:exported`,{format:a,size:s.length})}}}}var Xt=/```(\w*)\n([\s\S]*?)```/g,Zt=/`([^`]+)`/g;function Qt(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function $t(e={}){let t=e.theme??`dark`,n=e.copyButton!==!1,r=e.maxHeight??300,i=!1,a=()=>{if(i||typeof document>`u`)return;i=!0;let e=t===`dark`?`#1e1e2e`:`#f5f5f5`,a=t===`dark`?`#cdd6f4`:`#333`,o=t===`dark`?`#313244`:`#ddd`,s=document.createElement(`style`);s.id=`chatbot-code-highlight`,s.textContent=`
83
+ .chatbot-code-block {
84
+ position: relative;
85
+ background: ${e};
86
+ color: ${a};
87
+ border: 1px solid ${o};
88
+ border-radius: 6px;
89
+ padding: 12px;
90
+ margin: 4px 0;
91
+ font-family: 'Fira Code', 'JetBrains Mono', monospace;
92
+ font-size: 13px;
93
+ line-height: 1.5;
94
+ overflow-x: auto;
95
+ max-height: ${r}px;
96
+ overflow-y: auto;
97
+ white-space: pre;
98
+ }
99
+ .chatbot-code-lang {
100
+ position: absolute;
101
+ top: 4px;
102
+ right: ${n?`40px`:`8px`};
103
+ font-size: 10px;
104
+ opacity: 0.6;
105
+ text-transform: uppercase;
106
+ }
107
+ .chatbot-code-copy {
108
+ position: absolute;
109
+ top: 4px;
110
+ right: 8px;
111
+ background: transparent;
112
+ border: 1px solid ${o};
113
+ border-radius: 4px;
114
+ color: ${a};
115
+ font-size: 11px;
116
+ padding: 2px 6px;
117
+ cursor: pointer;
118
+ opacity: 0.7;
119
+ }
120
+ .chatbot-code-copy:hover { opacity: 1; }
121
+ .chatbot-code-inline {
122
+ background: ${e};
123
+ color: ${a};
124
+ padding: 2px 5px;
125
+ border-radius: 3px;
126
+ font-family: monospace;
127
+ font-size: 0.9em;
128
+ }
129
+ `,document.head.appendChild(s)};return{name:`codeHighlight`,onInit(e){a()},onMessage(e,t){if(!e.text||e.sender===`user`)return e;let r=e.text;return r=r.replace(Xt,(e,t,r)=>{let i=Qt(r.trim());return`<div class="chatbot-code-block">${t?`<span class="chatbot-code-lang">${t}</span>`:``}${n?`<button class="chatbot-code-copy" onclick="navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent)">Copy</button>`:``}<code>${i}</code></div>`}),r=r.replace(Zt,(e,t)=>`<span class="chatbot-code-inline">${Qt(t)}</span>`),{...e,text:r}}}}function en(e={}){let t=new Map,n=new Map,r=new Map;return{name:`poll`,onEvent(i,a){if(i.type===`poll:create`){let e=i.payload;if(!e?.id||!e?.question||!e?.options?.length)return;t.set(e.id,e),n.set(e.id,Object.fromEntries(e.options.map(e=>[e.value,0]))),r.set(e.id,[]);let o=e.options.map((e,t)=>` ${t+1}. ${e.label}`).join(`
130
+ `);a.addBotMessage(`📊 **Poll: ${e.question}**
131
+
132
+ ${o}
133
+
134
+ _Reply with the option number or value to vote._`),a.emit(`poll:created`,e)}if(i.type===`poll:vote`){let o=i.payload;if(!o?.pollId||!o?.value)return;let s=t.get(o.pollId),c=n.get(o.pollId);if(!s||!c)return;let l=s.options.find(e=>e.value===o.value||e.label===o.value);if(!l)return;let u=r.get(o.pollId)??[];if(!s.multiSelect&&u.length>0)return;c[l.value]=(c[l.value]??0)+1,u.push(l.value),r.set(o.pollId,u),e.onVote?.(o.pollId,l.value),a.emit(`poll:voted`,{pollId:o.pollId,value:l.value});let d=Object.values(c).reduce((e,t)=>e+t,0);if(s.closeAfter&&d>=s.closeAfter){let t={pollId:s.id,votes:c,totalVotes:d,userVote:u};e.onClose?.(t),a.emit(`poll:closed`,t);let n=s.options.map(e=>{let t=c[e.value]??0,n=d>0?Math.round(t/d*100):0,r=`█`.repeat(Math.round(n/10))+`░`.repeat(10-Math.round(n/10));return` ${e.label}: ${r} ${n}% (${t})`}).join(`
135
+ `);a.addBotMessage(`📊 **Poll Results: ${s.question}**
136
+
137
+ ${n}
138
+
139
+ Total votes: ${d}`),e.webhookUrl&&fetch(e.webhookUrl,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).catch(()=>{})}}if(i.type===`poll:results`&&typeof i.payload==`string`){let e=n.get(i.payload);if(e){let t=Object.values(e).reduce((e,t)=>e+t,0);a.emit(`poll:result`,{pollId:i.payload,votes:e,totalVotes:t})}}if(i.type===`poll:close`&&typeof i.payload==`string`){let r=t.get(i.payload),o=n.get(i.payload);if(r&&o){let t=Object.values(o).reduce((e,t)=>e+t,0),n={pollId:r.id,votes:o,totalVotes:t};e.onClose?.(n),a.emit(`poll:closed`,n)}}}}}function tn(e){return{name:`payment`,onEvent(t,n){if(t.type===`payment:request`){let r=t.payload;if(!r?.amount||!r?.currency)return;n.addBotMessage(`💳 Payment request: **${r.currency.toUpperCase()} ${r.amount.toFixed(2)}**${r.description?`
140
+ ${r.description}`:``}
141
+
142
+ _Processing payment..._`),fetch(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify({amount:r.amount,currency:r.currency,gateway:e.gateway,metadata:r.metadata})}).then(e=>e.json()).then(t=>{if(t.error)throw Error(t.error);t.checkoutUrl?(n.addBotMessage(`💳 [Click here to complete payment](${t.checkoutUrl})`),n.emit(`payment:redirect`,t.checkoutUrl)):n.emit(`payment:confirm`,{clientSecret:t.clientSecret,orderId:t.orderId,gateway:e.gateway,amount:r.amount,currency:r.currency})}).catch(t=>{let i={success:!1,error:t.message,amount:r.amount,currency:r.currency};e.onError?.(t.message),n.addBotMessage(`❌ Payment failed: ${t.message}`),n.emit(`payment:failed`,i),e.errorStep&&n.emit(`flow:goto`,e.errorStep)})}if(t.type===`payment:confirmed`){let r=t.payload;r?.success?(e.onSuccess?.(r),n.addBotMessage(`✅ Payment successful! Transaction: ${r.transactionId??`confirmed`}`),n.emit(`payment:success`,r),e.successStep&&n.emit(`flow:goto`,e.successStep)):(e.onError?.(r?.error??`Unknown error`),n.addBotMessage(`❌ Payment failed: ${r?.error??`Unknown error`}`),n.emit(`payment:failed`,r),e.errorStep&&n.emit(`flow:goto`,e.errorStep))}}}}function nn(e){return{name:`booking`,onEvent(t,n){if(t.type===`booking:getSlots`){let r=typeof t.payload==`string`?t.payload:new Date().toISOString().split(`T`)[0];n.addBotMessage(`📅 Checking available slots for ${r}...`),fetch(`${e.slotsEndpoint}?date=${r}`,{headers:e.headers}).then(e=>e.json()).then(t=>{let i=(t.slots??t).filter(e=>e.available);if(i.length===0){n.addBotMessage(`📅 No available slots for this date. Please try another day.`),n.emit(`booking:noSlots`,r);return}let a=e.slotsMessage?e.slotsMessage(i):`📅 Available slots for ${r}:
143
+
144
+ ${i.map((e,t)=>` ${t+1}. ${e.time}`).join(`
145
+ `)}
146
+
147
+ _Reply with the slot number or time to book._`;n.addBotMessage(a),n.setData(`__availableSlots`,i),n.emit(`booking:slots`,i)}).catch(e=>{n.addBotMessage(`📅 Unable to fetch available slots. Please try again.`),n.emit(`booking:error`,e.message)})}if(t.type===`booking:confirm`){let r=t.payload;if(!r)return;n.addBotMessage(`📅 Confirming your appointment...`),fetch(e.bookEndpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify(r)}).then(e=>e.json()).then(t=>{e.onBooked?.(t),n.addBotMessage(`✅ Appointment confirmed!
148
+
149
+ 📅 Date: ${t.date}
150
+ ⏰ Time: ${t.time}
151
+ 🆔 Booking ID: ${t.bookingId}`),n.setData(`__lastBooking`,t),n.emit(`booking:confirmed`,t),e.successStep&&n.emit(`flow:goto`,e.successStep)}).catch(e=>{n.addBotMessage(`❌ Booking failed: ${e.message}. Please try again.`),n.emit(`booking:error`,e.message)})}t.type===`booking:cancel`&&typeof t.payload==`string`&&fetch(`${e.bookEndpoint}/${t.payload}`,{method:`DELETE`,headers:e.headers}).then(()=>{e.onCancelled?.(t.payload),n.addBotMessage(`🗑️ Booking ${t.payload} has been cancelled.`),n.emit(`booking:cancelled`,t.payload)}).catch(()=>{n.addBotMessage(`❌ Unable to cancel booking. Please try again.`)})}}}function rn(e,t,n){switch(n){case`openstreetmap`:return`https://www.openstreetmap.org/?mlat=${e}&mlon=${t}#map=15/${e}/${t}`;case`apple`:return`https://maps.apple.com/?ll=${e},${t}`;default:return`https://www.google.com/maps?q=${e},${t}`}}function an(e={}){let t=e.mapProvider??`google`,n=e.timeout??1e4;return{name:`location`,onEvent(r,i){if(r.type===`location:share`){if(typeof navigator>`u`||!navigator.geolocation){i.addBotMessage(`📍 Location sharing is not supported in this browser.`);return}navigator.geolocation.getCurrentPosition(n=>{let{latitude:r,longitude:a}=n.coords,o=rn(r,a,t);e.onLocation?.(r,a);let s=e.messageFormat?e.messageFormat(r,a,o):`📍 Location shared: [${r.toFixed(5)}, ${a.toFixed(5)}](${o})`;i.sendMessage(s),i.emit(`location:shared`,{lat:r,lng:a,url:o})},e=>{i.addBotMessage(`📍 Unable to get location: ${e.message}`),i.emit(`location:error`,e.message)},{enableHighAccuracy:e.highAccuracy??!1,timeout:n,maximumAge:0})}}}}exports.AttachmentIcon=w,exports.Branding=we,exports.ChatBot=Ge,exports.ChatBubbleIcon=b,exports.ChatContext=f,exports.ChatHeader=M,exports.ChatInput=H,exports.ChatWindow=Ve,exports.CheckboxField=ie,exports.CloseIcon=x,exports.DEFAULT_LIVE_AGENT_EVENTS=q,exports.DynamicForm=I,exports.EmojiIcon=C,exports.EmojiPicker=xe,exports.FileIcon=T,exports.FilePreviewList=B,exports.FileUploadButton=z,exports.FileUploadField=ae,exports.FlowEngine=G,exports.ImageIcon=E,exports.Launcher=j,exports.LiveAgentAdapter=K,exports.LoginScreen=L,exports.MessageBubble=ue,exports.MessageList=ye,exports.MinimizeIcon=S,exports.PluginManager=He,exports.QuickReplies=ge,exports.RadioField=re,exports.RemoveIcon=D,exports.RestartIcon=O,exports.SelectField=ne,exports.SendIcon=y,exports.TextField=F,exports.TypingIndicator=_e,exports.WelcomeScreen=N,exports.agentPlugin=mt,exports.aiPlugin=tt,exports.analyticsPlugin=Je,exports.authPlugin=ut,exports.autoReplyPlugin=it,exports.bookingPlugin=nn,exports.buildCSSVariables=_,exports.buildStyles=v,exports.campaignPlugin=yt,exports.codeHighlightPlugin=$t,exports.componentPlugin=_t,exports.confettiPlugin=Ft,exports.createEventBus=Ke,exports.createHeadlessBot=qe,exports.crmPlugin=$e,exports.debugPlugin=Ct,exports.devtoolsPlugin=wt,exports.emailPlugin=et,exports.i18nPlugin=St,exports.intentPlugin=nt,exports.knowledgeBasePlugin=Ut,exports.leadPlugin=vt,exports.liveAgentPlugin=Dt,exports.locationPlugin=an,exports.loggerPlugin=Xe,exports.markdownPlugin=Et,exports.mediaPlugin=Tt,exports.messageSchedulePlugin=Rt,exports.notificationBadgePlugin=zt,exports.offlinePlugin=At,exports.paymentPlugin=tn,exports.persistencePlugin=ct,exports.personaPlugin=Mt,exports.pinPlugin=Nt,exports.pollPlugin=en,exports.priorityPlugin=It,exports.proactivePlugin=jt,exports.pushPlugin=ft,exports.rateLimitPlugin=dt,exports.ratingPlugin=kt,exports.reminderPlugin=xt,exports.renderMarkdown=ce,exports.resolveTheme=g,exports.schedulerPlugin=bt,exports.soundPlugin=pt,exports.summaryPlugin=Vt,exports.syncPlugin=lt,exports.tagsPlugin=Ot,exports.themePlugin=gt,exports.themeTogglePlugin=Pt,exports.transcriptExportPlugin=Yt,exports.transferPlugin=ht,exports.translationPlugin=Wt,exports.typingPlugin=rt,exports.uploadPlugin=ot,exports.useChat=Be,exports.useChatContext=p,exports.useLiveAgent=Ae,exports.validationPlugin=at,exports.webhookPlugin=Qe,exports.whisperPlugin=Lt;
59
152
  //# sourceMappingURL=index.cjs.map