@cliniq360/eigi-chat 1.8.0 → 1.8.2

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/eigi-chat.js CHANGED
@@ -33,7 +33,7 @@ var Ct={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24
33
33
  *
34
34
  * This source code is licensed under the ISC license.
35
35
  * See the LICENSE file in the root directory of this source tree.
36
- */function Rt({agentName:e,avatarUrl:t,tncEnabled:n,tncContent:r,onTalk:i,onChat:a,onClose:o,className:s}){const[l,c]=x.useState(!n||!r),[u,d]=x.useState(n&&r),f=x.useRef(null),p=x.useCallback(e=>{const t=e.target;t.scrollHeight-t.scrollTop<=t.clientHeight+20&&(c(!0),d(!1))},[]),h=x.useCallback(e=>{e&&(f.current=e,setTimeout(()=>{e.scrollHeight>e.clientHeight||(c(!0),d(!1))},100))},[]);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in relative min-h-0",s),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("button",{onClick:o,className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),b.jsx("div",{ref:h,onScroll:p,className:"flex-1 min-h-0 overflow-y-auto",children:b.jsxs("div",{className:"flex flex-col items-center px-6 py-8 pt-14",children:[b.jsx(St,{src:t,alt:e,size:"2xl",className:"mb-6 shadow-lg"}),b.jsx("h1",{className:"text-2xl font-semibold mb-2 text-center",style:{color:"var(--widget-text-primary, #111827)"},children:"Welcome!"}),b.jsxs("p",{className:"text-lg mb-6 text-center",style:{color:"var(--widget-text-secondary, #6B7280)"},children:["I'm ",b.jsx("span",{className:"font-medium",children:e})]}),n&&r&&b.jsx("div",{className:"w-full max-w-md mb-6 p-4 rounded-lg",style:{backgroundColor:"var(--widget-background-secondary, #F9FAFB)",border:"1px solid var(--widget-border, #E5E7EB)"},children:b.jsx("p",{className:"text-sm leading-relaxed whitespace-pre-wrap",style:{color:"var(--widget-text-secondary, #6B7280)"},children:r})}),n&&b.jsx("p",{className:"text-xs mb-8 text-center max-w-sm",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"By continuing, you agree to the terms above."})]})}),u&&b.jsxs("div",{className:"flex flex-col items-center py-2 pointer-events-none",style:{background:"linear-gradient(transparent, var(--widget-background, #FFFFFF) 30%)"},children:[b.jsx(Pt,{className:"h-5 w-5 animate-bounce",style:{color:"var(--widget-primary-color, #3B82F6)"}}),b.jsx("span",{className:"text-xs",style:{color:"var(--widget-primary-color, #3B82F6)"},children:"Scroll to continue"})]}),b.jsx("div",{className:"p-6 pb-safe shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",paddingBottom:"max(1.5rem, env(safe-area-inset-bottom, 0px))"},children:b.jsxs("div",{className:"flex gap-4 max-w-md mx-auto",children:[b.jsxs(kt,{onClick:i,variant:"default",size:"xl",className:"flex-1",disabled:!l,children:[b.jsx(Lt,{className:"h-5 w-5"}),"Talk"]}),b.jsxs(kt,{onClick:a,variant:"secondary",size:"xl",className:"flex-1",disabled:!l,children:[b.jsx(Ot,{className:"h-5 w-5"}),"Chat"]})]})})]})}function Dt(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function Bt(...e){return t=>{let n=!1;const r=e.map(e=>{const r=Dt(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){const n=r[t];"function"==typeof n?n():Dt(e[t],null)}}}}function zt(...e){return x.useCallback(Bt(...e),e)}function Ut(e){const t=Vt(e),n=x.forwardRef((e,n)=>{const r=e,{children:i}=r,a=u(r,["children"]),o=x.Children.toArray(i),s=o.find(Wt);if(s){const e=s.props.children,r=o.map(t=>t===s?x.Children.count(e)>1?x.Children.only(null):x.isValidElement(e)?e.props.children:null:t);return b.jsx(t,c(l({},a),{ref:n,children:x.isValidElement(e)?x.cloneElement(e,void 0,r):null}))}return b.jsx(t,c(l({},a),{ref:n,children:i}))});return n.displayName=`${e}.Slot`,n}function Vt(e){const t=x.forwardRef((e,t)=>{const n=e,{children:r}=n,i=u(n,["children"]);if(x.isValidElement(r)){const e=function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,i=r&&"isReactWarning"in r&&r.isReactWarning;if(i)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,i=r&&"isReactWarning"in r&&r.isReactWarning,i)return e.props.ref;return e.props.ref||e.ref}(r),n=function(e,t){const n=l({},t);for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{const t=a(...e);return i(...e),t}:i&&(n[r]=i):"style"===r?n[r]=l(l({},i),a):"className"===r&&(n[r]=[i,a].filter(Boolean).join(" "))}return l(l({},e),n)}(i,r.props);return r.type!==x.Fragment&&(n.ref=t?Bt(t,e):e),x.cloneElement(r,n)}return x.Children.count(r)>1?x.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}z();var $t=Symbol("radix.slottable");function Wt(e){return x.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===$t}var qt=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{const n=Ut(`Primitive.${t}`),r=x.forwardRef((e,r)=>{const i=e,{asChild:a}=i,o=u(i,["asChild"]),s=a?n:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),b.jsx(s,c(l({},o),{ref:r}))});return r.displayName=`Primitive.${t}`,c(l({},e),{[t]:r})},{}),Ht=(null==globalThis?void 0:globalThis.document)?x.useLayoutEffect:()=>{};var Jt=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=x.useState(),r=x.useRef(null),i=x.useRef(e),a=x.useRef("none"),o=e?"mounted":"unmounted",[s,l]=function(e,t){return x.useReducer((e,n)=>{const r=t[e][n];return null!=r?r:e},e)}(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return x.useEffect(()=>{const e=Qt(r.current);a.current="mounted"===s?e:"none"},[s]),Ht(()=>{const t=r.current,n=i.current;if(n!==e){const r=a.current,o=Qt(t);if(e)l("MOUNT");else if("none"===o||"none"===(null==t?void 0:t.display))l("UNMOUNT");else{l(n&&r!==o?"ANIMATION_OUT":"UNMOUNT")}i.current=e}},[e,l]),Ht(()=>{var e;if(t){let n;const o=null!=(e=t.ownerDocument.defaultView)?e:window,s=e=>{const a=Qt(r.current).includes(CSS.escape(e.animationName));if(e.target===t&&a&&(l("ANIMATION_END"),!i.current)){const e=t.style.animationFillMode;t.style.animationFillMode="forwards",n=o.setTimeout(()=>{"forwards"===t.style.animationFillMode&&(t.style.animationFillMode=e)})}},c=e=>{e.target===t&&(a.current=Qt(r.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",s),t.addEventListener("animationend",s),()=>{o.clearTimeout(n),t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",s),t.removeEventListener("animationend",s)}}l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:x.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}(t),i="function"==typeof n?n({present:r.isPresent}):x.Children.only(n),a=zt(r.ref,function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,i=r&&"isReactWarning"in r&&r.isReactWarning;if(i)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,i=r&&"isReactWarning"in r&&r.isReactWarning,i)return e.props.ref;return e.props.ref||e.ref}(i));return"function"==typeof n||r.isPresent?x.cloneElement(i,{ref:a}):null};function Qt(e){return(null==e?void 0:e.animationName)||"none"}function Gt(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){const r=n.reduce((t,{useScope:n,scopeName:r})=>{const i=n(e)[`__scope${r}`];return l(l({},t),i)},{});return x.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function Yt(e){const t=x.useRef(e);return x.useEffect(()=>{t.current=e}),x.useMemo(()=>(...e)=>{var n;return null==(n=t.current)?void 0:n.call(t,...e)},[])}Jt.displayName="Presence";var Kt=x.createContext(void 0);function Xt(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}var Zt="ScrollArea",[en]=function(e,t=[]){let n=[];const r=()=>{const t=n.map(e=>x.createContext(e));return function(n){const r=(null==n?void 0:n[e])||t;return x.useMemo(()=>({[`__scope${e}`]:c(l({},n),{[e]:r})}),[n,r])}};return r.scopeName=e,[function(t,r){const i=x.createContext(r),a=n.length;n=[...n,r];const o=t=>{var n;const r=t,{scope:o,children:s}=r,l=u(r,["scope","children"]),c=(null==(n=null==o?void 0:o[e])?void 0:n[a])||i,d=x.useMemo(()=>l,Object.values(l));return b.jsx(c.Provider,{value:d,children:s})};return o.displayName=t+"Provider",[o,function(n,o){var s;const l=(null==(s=null==o?void 0:o[e])?void 0:s[a])||i,c=x.useContext(l);if(c)return c;if(void 0!==r)return r;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},Gt(r,...t)]}(Zt),[tn,nn]=en(Zt),rn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,type:i="hover",dir:a,scrollHideDelay:o=600}=n,s=u(n,["__scopeScrollArea","type","dir","scrollHideDelay"]),[d,f]=x.useState(null),[p,h]=x.useState(null),[m,g]=x.useState(null),[v,y]=x.useState(null),[w,k]=x.useState(null),[S,_]=x.useState(0),[C,E]=x.useState(0),[T,M]=x.useState(!1),[P,A]=x.useState(!1),O=zt(t,e=>f(e)),N=function(e){const t=x.useContext(Kt);return e||t||"ltr"}(a);return b.jsx(tn,{scope:r,type:i,dir:N,scrollHideDelay:o,scrollArea:d,viewport:p,onViewportChange:h,content:m,onContentChange:g,scrollbarX:v,onScrollbarXChange:y,scrollbarXEnabled:T,onScrollbarXEnabledChange:M,scrollbarY:w,onScrollbarYChange:k,scrollbarYEnabled:P,onScrollbarYEnabledChange:A,onCornerWidthChange:_,onCornerHeightChange:E,children:b.jsx(qt.div,c(l({dir:N},s),{ref:O,style:l({position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":C+"px"},e.style)}))})});rn.displayName=Zt;var an="ScrollAreaViewport",on=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,children:i,nonce:a}=n,o=u(n,["__scopeScrollArea","children","nonce"]),s=nn(an,r),d=zt(t,x.useRef(null),s.onViewportChange);return b.jsxs(b.Fragment,{children:[b.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),b.jsx(qt.div,c(l({"data-radix-scroll-area-viewport":""},o),{ref:d,style:l({overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden"},e.style),children:b.jsx("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:i})}))]})});on.displayName=an;var sn="ScrollAreaScrollbar",ln=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:s}=a,d="horizontal"===e.orientation;return x.useEffect(()=>(d?o(!0):s(!0),()=>{d?o(!1):s(!1)}),[d,o,s]),"hover"===a.type?b.jsx(cn,c(l({},i),{ref:t,forceMount:r})):"scroll"===a.type?b.jsx(un,c(l({},i),{ref:t,forceMount:r})):"auto"===a.type?b.jsx(dn,c(l({},i),{ref:t,forceMount:r})):"always"===a.type?b.jsx(fn,c(l({},i),{ref:t})):null});ln.displayName=sn;var cn=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),[o,s]=x.useState(!1);return x.useEffect(()=>{const e=a.scrollArea;let t=0;if(e){const n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener("pointerenter",n),e.addEventListener("pointerleave",r),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",n),e.removeEventListener("pointerleave",r)}}},[a.scrollArea,a.scrollHideDelay]),b.jsx(Jt,{present:r||o,children:b.jsx(dn,c(l({"data-state":o?"visible":"hidden"},i),{ref:t}))})}),un=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),o="horizontal"===e.orientation,s=On(()=>f("SCROLL_END"),100),[d,f]=(p="hidden",h={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},x.useReducer((e,t)=>{const n=h[e][t];return null!=n?n:e},p));var p,h;return x.useEffect(()=>{if("idle"===d){const e=window.setTimeout(()=>f("HIDE"),a.scrollHideDelay);return()=>window.clearTimeout(e)}},[d,a.scrollHideDelay,f]),x.useEffect(()=>{const e=a.viewport,t=o?"scrollLeft":"scrollTop";if(e){let n=e[t];const r=()=>{const r=e[t];n!==r&&(f("SCROLL"),s()),n=r};return e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[a.viewport,o,f,s]),b.jsx(Jt,{present:r||"hidden"!==d,children:b.jsx(fn,c(l({"data-state":"hidden"===d?"hidden":"visible"},i),{ref:t,onPointerEnter:Xt(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:Xt(e.onPointerLeave,()=>f("POINTER_LEAVE"))}))})}),dn=x.forwardRef((e,t)=>{const n=nn(sn,e.__scopeScrollArea),r=e,{forceMount:i}=r,a=u(r,["forceMount"]),[o,s]=x.useState(!1),d="horizontal"===e.orientation,f=On(()=>{if(n.viewport){const e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;s(d?e:t)}},10);return Nn(n.viewport,f),Nn(n.content,f),b.jsx(Jt,{present:i||o,children:b.jsx(fn,c(l({"data-state":o?"visible":"hidden"},a),{ref:t}))})}),fn=x.forwardRef((e,t)=>{const n=e,{orientation:r="vertical"}=n,i=u(n,["orientation"]),a=nn(sn,e.__scopeScrollArea),o=x.useRef(null),s=x.useRef(0),[d,f]=x.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=Cn(d.viewport,d.content),h=c(l({},i),{sizes:d,onSizesChange:f,hasThumb:Boolean(p>0&&p<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:e=>s.current=e});function m(e,t){return function(e,t,n,r="ltr"){const i=En(n),a=i/2,o=t||a,s=i-o,l=n.scrollbar.paddingStart+o,c=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d="ltr"===r?[0,u]:[-1*u,0];return Mn([l,c],d)(e)}(e,s.current,d,t)}return"horizontal"===r?b.jsx(pn,c(l({},h),{ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){const e=Tn(a.viewport.scrollLeft,d,a.dir);o.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollLeft=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollLeft=m(e,a.dir))}})):"vertical"===r?b.jsx(hn,c(l({},h),{ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){const e=Tn(a.viewport.scrollTop,d);o.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollTop=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollTop=m(e))}})):null}),pn=x.forwardRef((e,t)=>{const n=e,{sizes:r,onSizesChange:i}=n,a=u(n,["sizes","onSizesChange"]),o=nn(sn,e.__scopeScrollArea),[s,d]=x.useState(),f=x.useRef(null),p=zt(t,f,o.onScrollbarXChange);return x.useEffect(()=>{f.current&&d(getComputedStyle(f.current))},[f]),b.jsx(vn,c(l({"data-orientation":"horizontal"},a),{ref:p,sizes:r,style:l({bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":En(r)+"px"},e.style),onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(o.viewport){const r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),Pn(r,n)&&t.preventDefault()}},onResize:()=>{f.current&&o.viewport&&s&&i({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:xn(s.paddingLeft),paddingEnd:xn(s.paddingRight)}})}}))}),hn=x.forwardRef((e,t)=>{const n=e,{sizes:r,onSizesChange:i}=n,a=u(n,["sizes","onSizesChange"]),o=nn(sn,e.__scopeScrollArea),[s,d]=x.useState(),f=x.useRef(null),p=zt(t,f,o.onScrollbarYChange);return x.useEffect(()=>{f.current&&d(getComputedStyle(f.current))},[f]),b.jsx(vn,c(l({"data-orientation":"vertical"},a),{ref:p,sizes:r,style:l({top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":En(r)+"px"},e.style),onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(o.viewport){const r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),Pn(r,n)&&t.preventDefault()}},onResize:()=>{f.current&&o.viewport&&s&&i({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:xn(s.paddingTop),paddingEnd:xn(s.paddingBottom)}})}}))}),[mn,gn]=en(sn),vn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,sizes:i,hasThumb:a,onThumbChange:o,onThumbPointerUp:s,onThumbPointerDown:d,onThumbPositionChange:f,onDragScroll:p,onWheelScroll:h,onResize:m}=n,g=u(n,["__scopeScrollArea","sizes","hasThumb","onThumbChange","onThumbPointerUp","onThumbPointerDown","onThumbPositionChange","onDragScroll","onWheelScroll","onResize"]),v=nn(sn,r),[y,w]=x.useState(null),k=zt(t,e=>w(e)),S=x.useRef(null),_=x.useRef(""),C=v.viewport,E=i.content-i.viewport,T=Yt(h),M=Yt(f),P=On(m,10);function A(e){if(S.current){const t=e.clientX-S.current.left,n=e.clientY-S.current.top;p({x:t,y:n})}}return x.useEffect(()=>{const e=e=>{const t=e.target;(null==y?void 0:y.contains(t))&&T(e,E)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[C,y,E,T]),x.useEffect(M,[i,M]),Nn(y,P),Nn(v.content,P),b.jsx(mn,{scope:r,scrollbar:y,hasThumb:a,onThumbChange:Yt(o),onThumbPointerUp:Yt(s),onThumbPositionChange:M,onThumbPointerDown:Yt(d),children:b.jsx(qt.div,c(l({},g),{ref:k,style:l({position:"absolute"},g.style),onPointerDown:Xt(e.onPointerDown,e=>{if(0===e.button){e.target.setPointerCapture(e.pointerId),S.current=y.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),A(e)}}),onPointerMove:Xt(e.onPointerMove,A),onPointerUp:Xt(e.onPointerUp,e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=_.current,v.viewport&&(v.viewport.style.scrollBehavior=""),S.current=null})}))})}),yn="ScrollAreaThumb",bn=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=gn(yn,e.__scopeScrollArea);return b.jsx(Jt,{present:r||a.hasThumb,children:b.jsx(wn,l({ref:t},i))})}),wn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,style:i}=n,a=u(n,["__scopeScrollArea","style"]),o=nn(yn,r),s=gn(yn,r),{onThumbPositionChange:d}=s,f=zt(t,e=>s.onThumbChange(e)),p=x.useRef(void 0),h=On(()=>{p.current&&(p.current(),p.current=void 0)},100);return x.useEffect(()=>{const e=o.viewport;if(e){const t=()=>{if(h(),!p.current){const t=An(e,d);p.current=t,d()}};return d(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[o.viewport,h,d]),b.jsx(qt.div,c(l({"data-state":s.hasThumb?"visible":"hidden"},a),{ref:f,style:l({width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)"},i),onPointerDownCapture:Xt(e.onPointerDownCapture,e=>{const t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;s.onThumbPointerDown({x:n,y:r})}),onPointerUp:Xt(e.onPointerUp,s.onThumbPointerUp)}))});bn.displayName=yn;var kn="ScrollAreaCorner",Sn=x.forwardRef((e,t)=>{const n=nn(kn,e.__scopeScrollArea),r=Boolean(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&r?b.jsx(_n,c(l({},e),{ref:t})):null});Sn.displayName=kn;var _n=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r}=n,i=u(n,["__scopeScrollArea"]),a=nn(kn,r),[o,s]=x.useState(0),[d,f]=x.useState(0),p=Boolean(o&&d);return Nn(a.scrollbarX,()=>{var e;const t=(null==(e=a.scrollbarX)?void 0:e.offsetHeight)||0;a.onCornerHeightChange(t),f(t)}),Nn(a.scrollbarY,()=>{var e;const t=(null==(e=a.scrollbarY)?void 0:e.offsetWidth)||0;a.onCornerWidthChange(t),s(t)}),p?b.jsx(qt.div,c(l({},i),{ref:t,style:l({width:o,height:d,position:"absolute",right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:0},e.style)})):null});function xn(e){return e?parseInt(e,10):0}function Cn(e,t){const n=e/t;return isNaN(n)?0:n}function En(e){const t=Cn(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Tn(e,t,n="ltr"){const r=En(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,l=function(e,[t,n]){return Math.min(n,Math.max(t,e))}(e,"ltr"===n?[0,o]:[-1*o,0]);return Mn([0,o],[0,s])(l)}function Mn(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Pn(e,t){return e>0&&e<t}var An=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function i(){const a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)}(),()=>window.cancelAnimationFrame(r)};function On(e,t){const n=Yt(e),r=x.useRef(0);return x.useEffect(()=>()=>window.clearTimeout(r.current),[]),x.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Nn(e,t){const n=Yt(t);Ht(()=>{let t=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Ln=rn,jn=on,In=Sn;const Fn=x.forwardRef((e,t)=>{var n=e,{className:r,children:i}=n,a=u(n,["className","children"]);return b.jsxs(Ln,c(l({ref:t,className:vt("relative overflow-hidden",r)},a),{children:[b.jsx(jn,{className:"h-full w-full rounded-[inherit]",children:i}),b.jsx(Rn,{}),b.jsx(In,{})]}))});Fn.displayName=Ln.displayName;const Rn=x.forwardRef((e,t)=>{var n=e,{className:r,orientation:i="vertical"}=n,a=u(n,["className","orientation"]);return b.jsx(ln,c(l({ref:t,orientation:i,className:vt("flex touch-none select-none transition-colors","vertical"===i&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===i&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r)},a),{children:b.jsx(bn,{className:"relative flex-1 rounded-full",style:{backgroundColor:"var(--widget-border, #E5E7EB)"}})}))});function Dn({messages:e,streamingContent:t,isStreaming:n,className:r}){const i=x.useRef(null);return x.useEffect(()=>{var e;null==(e=i.current)||e.scrollIntoView({behavior:"smooth"})},[e,t]),b.jsx(Fn,{className:vt("flex-1 px-4",r),children:b.jsxs("div",{className:"py-4 space-y-4",children:[e.map(e=>b.jsx(Bn,{message:e},e.id)),n&&t&&b.jsx(Bn,{message:{type:"assistant",text:t,isStreaming:!0}}),b.jsx("div",{ref:i})]})})}function Bn({message:e}){const t="user"===e.type;e.type;const n="system"===e.type;return"separator"===e.type?b.jsx("div",{className:"flex items-center justify-center py-2",children:b.jsx("div",{className:"px-3 py-1 rounded-full text-xs",style:{backgroundColor:"var(--widget-system-message-bg, #F3F4F6)",color:"var(--widget-system-message-text, #6B7280)"},children:e.text})}):n?b.jsx("div",{className:"flex justify-center",children:b.jsx("div",{className:"max-w-[85%] px-4 py-2 rounded-lg text-sm",style:{backgroundColor:"var(--widget-system-message-bg, #FEF3C7)",color:"var(--widget-system-message-text, #92400E)"},children:e.text})}):b.jsx("div",{className:vt("flex",t?"justify-end":"justify-start"),children:b.jsxs("div",{className:vt("max-w-[85%] px-4 py-3 rounded-2xl text-sm leading-relaxed",t?"rounded-br-md":"rounded-bl-md",e.isTranscript&&"italic opacity-80"),style:{backgroundColor:t?"var(--widget-user-message-bg, #3B82F6)":"var(--widget-bot-message-bg, #F3F4F6)",color:t?"var(--widget-user-message-text, #FFFFFF)":"var(--widget-bot-message-text, #111827)"},children:[e.text,e.isStreaming&&b.jsx("span",{className:"inline-block w-2 h-4 ml-1 animate-pulse bg-current opacity-50"})]})})}function zn({onSend:e,disabled:t,placeholder:n="Type a message...",className:r}){const[i,a]=x.useState(""),o=x.useRef(null),s=n=>{var r;n.preventDefault(),i.trim()&&!t&&(e(i.trim()),a(""),null==(r=o.current)||r.focus())};return b.jsxs("form",{onSubmit:s,className:vt("flex items-center gap-2 p-4 pb-safe shrink-0",r),style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",backgroundColor:"var(--widget-background, #FFFFFF)",paddingBottom:"max(1rem, env(safe-area-inset-bottom, 0px))"},children:[b.jsx("input",{ref:o,type:"text",value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),s(e))},placeholder:n,disabled:t,className:"flex-1 h-11 px-4 rounded-full outline-none transition-all",style:{backgroundColor:"var(--widget-input-bg, #F9FAFB)",color:"var(--widget-input-text, #111827)",border:"1px solid var(--widget-input-border, #E5E7EB)",fontFamily:"var(--widget-font-family, inherit)",fontSize:"var(--widget-font-size-base, 14px)"}}),b.jsx(kt,{type:"submit",variant:"default",size:"icon",disabled:!i.trim()||t,className:"shrink-0 rounded-full h-11 w-11",children:b.jsx(It,{className:"h-5 w-5"})})]})}function Un(e,t,n={}){const{chatSession:r,messages:i,isChatInitialized:a,isStreaming:o,streamingContent:s,setChatSession:u,addMessage:f,setStreaming:p}=H(),h=x.useRef(null),m=x.useRef(null),g=x.useRef(!1),v=x.useCallback(()=>d(null,null,function*(){if(!g.current&&!a&&e&&t){g.current=!0;try{const r=yield function(e,t){return d(this,arguments,function*(e,t,n={}){const r=`${Q}/v1/widgets/chat/sessions`,i=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":t},body:JSON.stringify({agent_id:e,conversation_metadata:n})});if(!i.ok){const e=yield i.json().catch(()=>({}));throw new Error(e.detail||e.message||`HTTP ${i.status}`)}const a=yield i.json();return a.session_id,a})}(e,t,n);u(r),m.current=r.session_id,r.first_message&&f({type:"assistant",text:r.first_message,isTranscript:!1})}catch(r){f({type:"system",text:`Error: ${r.message}`})}}}),[e,t,n,a,u,f]),y=x.useCallback(i=>d(null,null,function*(){if(i.trim()&&!o){f({type:"user",text:i,isTranscript:!1});try{h.current=new AbortController,p(!0,""),m.current,i.substring(0,50);const a=yield function(e,t,n,r,i){return d(this,null,function*(){const a=`${Q}/v1/widgets/chat/messages`;n.substring(0,50);const o=yield fetch(a,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":i},body:JSON.stringify({agent_id:e,session_id:t,message:n,metadata:r})});if(!o.ok){const e=yield o.text();throw new Error(`Server error (${o.status}): ${e||"Unknown error"}`)}return{response:o,sessionId:o.headers.get("X-Session-ID")}})}(e,m.current||(null==r?void 0:r.session_id),i,c(l({},n),{agent_id:e}),t);a.sessionId&&(m.current=a.sessionId);const o=a.response.body.getReader(),s=new TextDecoder;let u="";try{for(;;){const{done:e,value:t}=yield o.read();if(e)break;u+=s.decode(t,{stream:!0}),p(!0,u)}}finally{o.releaseLock()}u.trim()&&f({type:"assistant",text:u,isTranscript:!1}),p(!1,"")}catch(a){"AbortError"!==a.name&&f({type:"system",text:`Error: ${a.message}`}),p(!1,"")}}}),[e,t,r,n,o,f,p]),b=x.useCallback(()=>{h.current&&(h.current.abort(),p(!1,""))},[p]);return{messages:i,isStreaming:o,streamingContent:s,isInitialized:a,initializeChat:v,sendMessage:y,cancelStream:b}}function Vn({agentId:e,agentName:t,promptToken:n,metadata:r,onClose:i,onSwitchToTalk:a,className:o}){const{messages:s,isStreaming:l,streamingContent:c,isInitialized:u,initializeChat:d,sendMessage:f}=Un(e,n,r);return x.useEffect(()=>{!u&&n&&d()},[u,n,d]),b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in",o),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3",style:{backgroundColor:"var(--widget-header-bg, #F9FAFB)",borderBottom:"1px solid var(--widget-header-border, #E5E7EB)"},children:[b.jsx("button",{onClick:i,className:"p-2 rounded-full hover:opacity-80 transition-opacity",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-5 w-5"})}),b.jsx("h2",{className:"text-base font-semibold",style:{color:"var(--widget-header-text, #111827)"},children:t}),b.jsx(kt,{onClick:a,variant:"ghost",size:"icon-sm",className:"rounded-full",title:"Switch to voice",children:b.jsx(Lt,{className:"h-5 w-5",style:{color:"var(--widget-icon-active, #3B82F6)"}})})]}),b.jsx(Dn,{messages:s,streamingContent:c,isStreaming:l,className:"flex-1"}),b.jsx(zn,{onSend:f,disabled:l,placeholder:"Type a message..."})]})}Rn.displayName=ln.displayName;const $n={sm:48,md:80,lg:120,xl:160,"2xl":200},Wn=x.forwardRef((e,t)=>{var n=e,{children:r,loading:i=!0,size:a="lg",strokeWidth:o=4,gap:s=8,trackColor:d,spinnerColor:f,duration:p=1.5,className:h}=n,m=u(n,["children","loading","size","strokeWidth","gap","trackColor","spinnerColor","duration","className"]);const g="string"==typeof a?$n[a]||120:a,v=(g-o)/2,y=2*Math.PI*v,w=g/2,k=g-2*s-2*o,S=x.useId(),_=`\n @keyframes loader-spin-${S.replace(/:/g,"")} {\n 0% {\n transform: rotate(-90deg);\n }\n 100% {\n transform: rotate(270deg);\n }\n }\n \n @keyframes loader-dash-${S.replace(/:/g,"")} {\n 0% {\n stroke-dashoffset: ${y};\n }\n 50% {\n stroke-dashoffset: ${.25*y};\n }\n 100% {\n stroke-dashoffset: ${y};\n }\n }\n `;return b.jsxs("div",c(l({ref:t,className:vt("relative inline-flex items-center justify-center",h),style:{width:g,height:g}},m),{children:[i&&b.jsx("style",{children:_}),i&&b.jsxs("svg",{className:"absolute inset-0 w-full h-full pointer-events-none",viewBox:`0 0 ${g} ${g}`,"aria-hidden":"true",children:[b.jsx("circle",{cx:w,cy:w,r:v,fill:"none",stroke:d||"var(--widget-border, #E5E7EB)",strokeWidth:o}),b.jsx("circle",{cx:w,cy:w,r:v,fill:"none",stroke:f||"var(--widget-primary-color, #3B82F6)",strokeWidth:o,strokeLinecap:"round",strokeDasharray:y,strokeDashoffset:.25*y,style:{transformOrigin:"center",animation:`loader-spin-${S.replace(/:/g,"")} ${p}s linear infinite, loader-dash-${S.replace(/:/g,"")} ${1.33*p}s ease-in-out infinite`}})]}),b.jsx("div",{className:"relative z-10 flex items-center justify-center overflow-hidden rounded-full",style:{width:k,height:k},children:r})]}))});Wn.displayName="Loader";x.forwardRef((e,t)=>{var n=e,{size:r="md",strokeWidth:i=3,color:a,trackColor:o,duration:s=1,className:d}=n,f=u(n,["size","strokeWidth","color","trackColor","duration","className"]);const p="string"==typeof r?{xs:16,sm:20,md:24,lg:32,xl:40}[r]||24:r,h=(p-i)/2,m=2*Math.PI*h,g=p/2,v=x.useId(),y=`\n @keyframes simple-spin-${v.replace(/:/g,"")} {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `;return b.jsxs("span",c(l({ref:t,className:vt("inline-flex items-center justify-center",d),role:"status","aria-label":"Loading"},f),{children:[b.jsx("style",{children:y}),b.jsxs("svg",{width:p,height:p,viewBox:`0 0 ${p} ${p}`,fill:"none",style:{animation:`simple-spin-${v.replace(/:/g,"")} ${s}s linear infinite`},children:[o&&b.jsx("circle",{cx:g,cy:g,r:h,stroke:o,strokeWidth:i,fill:"none",opacity:.25}),b.jsx("circle",{cx:g,cy:g,r:h,stroke:a||"var(--widget-primary-color, #3B82F6)",strokeWidth:i,strokeLinecap:"round",fill:"none",strokeDasharray:m,strokeDashoffset:.75*m})]}),b.jsx("span",{className:"sr-only",children:"Loading..."})]}))}).displayName="SpinnerLoader";function qn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Hn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jn(e){return(Jn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Qn(e){var t=function(e){if("object"!=Jn(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Jn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Jn(t)?t:t+""}function Gn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Qn(r.key),r)}}function Yn(e,t,n){return t&&Gn(e.prototype,t),n&&Gn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Kn(e,t){if(t&&("object"==Jn(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function Xn(e){return(Xn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Zn(e,t){return(Zn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function er(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Zn(e,t)}function tr(e,t,n){return(t=Qn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nr(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(r,i)}function rr(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){nr(a,r,i,o,s,"next",e)}function s(e){nr(a,r,i,o,s,"throw",e)}o(void 0)})}}function ir(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ar(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(u){c=!0,i=u}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ir(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ir(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}x.forwardRef((e,t)=>{var n=e,{dotSize:r=8,gap:i=6,color:a,duration:o=1.4,className:s}=n,d=u(n,["dotSize","gap","color","duration","className"]);const f=x.useId(),p=`\n @keyframes dots-bounce-${f.replace(/:/g,"")} {\n 0%, 80%, 100% {\n transform: scale(0.6);\n opacity: 0.5;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n }\n `;return b.jsxs("span",c(l({ref:t,className:vt("inline-flex items-center",s),style:{gap:i},role:"status","aria-label":"Loading"},d),{children:[b.jsx("style",{children:p}),[0,1,2].map(e=>b.jsx("span",{style:{width:r,height:r,borderRadius:"50%",backgroundColor:a||"var(--widget-primary-color, #3B82F6)",animation:`dots-bounce-${f.replace(/:/g,"")} ${o}s ease-in-out infinite`,animationDelay:e*(o/3)+"s"}},e)),b.jsx("span",{className:"sr-only",children:"Loading..."})]}))}).displayName="DotsLoader";var or,sr,lr={exports:{}},cr=function(){if(or)return lr.exports;or=1;var e,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}lr.exports=i,lr.exports.once=function(e,t){return new Promise(function(n,r){function i(n){e.removeListener(t,a),r(n)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",i),n([].slice.call(arguments))}var o,s;h(e,t,a,{once:!0}),"error"!==t&&(s=i,"function"==typeof(o=e).on&&h(o,"error",s,{once:!0}))})},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var a=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function l(e,t,n,r){var i,a,l,c;if(o(n),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),a=e._events),l=a[t]),void 0===l)l=a[t]=n,++e._eventsCount;else if("function"==typeof l?l=a[t]=r?[n,l]:[l,n]:r?l.unshift(n):l.push(n),(i=s(e))>0&&l.length>i&&!l.warned){l.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=l.length,c=u,console&&console.warn&&console.warn(c)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=c.bind(r);return i.listener=n,r.wrapFn=i,i}function d(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):p(i,i.length)}function f(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function p(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function h(e,t,n,r){if("function"==typeof e.on)r.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,function i(a){r.once&&e.removeEventListener(t,i),n(a)})}}return Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),i.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},i.prototype.getMaxListeners=function(){return s(this)},i.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,a=this._events;if(void 0!==a)i=i&&void 0===a.error;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[e];if(void 0===l)return!1;if("function"==typeof l)n(l,this,t);else{var c=l.length,u=p(l,c);for(r=0;r<c;++r)n(u[r],this,t)}return!0},i.prototype.addListener=function(e,t){return l(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return l(this,e,t,!0)},i.prototype.once=function(e,t){return o(t),this.on(e,u(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,u(this,e,t)),this},i.prototype.removeListener=function(e,t){var n,r,i,a,s;if(o(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,a=n.length-1;a>=0;a--)if(n[a]===t||n[a].listener===t){s=n[a].listener,i=a;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,s||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,a=Object.keys(n);for(r=0;r<a.length;++r)"removeListener"!==(i=a[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},lr.exports}(),ur=(sr=cr)&&sr.__esModule&&Object.prototype.hasOwnProperty.call(sr,"default")?sr.default:sr,dr=Object.prototype.hasOwnProperty;function fr(e,t,n){for(n of e.keys())if(pr(n,t))return n}function pr(e,t){var n,r,i;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&pr(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((i=r)&&"object"==typeof i&&!(i=fr(t,i)))return!1;if(!t.has(i))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((i=r[0])&&"object"==typeof i&&!(i=fr(t,i)))return!1;if(!pr(r[1],t.get(i)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||"object"==typeof e){for(n in r=0,e){if(dr.call(e,n)&&++r&&!dr.call(t,n))return!1;if(!(n in t)||!pr(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}const hr={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},mr={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},gr={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},vr={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},yr={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};class br{static getFirstMatch(e,t){const n=t.match(e);return n&&n.length>0&&n[1]||""}static getSecondMatch(e,t){const n=t.match(e);return n&&n.length>1&&n[2]||""}static matchAndReturnConst(e,t,n){if(e.test(t))return n}static getWindowsVersionName(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}static getMacOSVersionName(e){const t=e.split(".").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}}static getAndroidVersionName(e){const t=e.split(".").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0}static getVersionPrecision(e){return e.split(".").length}static compareVersions(e,t,n=!1){const r=br.getVersionPrecision(e),i=br.getVersionPrecision(t);let a=Math.max(r,i),o=0;const s=br.map([e,t],e=>{const t=a-br.getVersionPrecision(e),n=e+new Array(t+1).join(".0");return br.map(n.split("."),e=>new Array(20-e.length).join("0")+e).reverse()});for(n&&(o=a-Math.min(r,i)),a-=1;a>=o;){if(s[0][a]>s[1][a])return 1;if(s[0][a]===s[1][a]){if(a===o)return 0;a-=1}else if(s[0][a]<s[1][a])return-1}}static map(e,t){const n=[];let r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n}static find(e,t){let n,r;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(n=0,r=e.length;n<r;n+=1){const r=e[n];if(t(r,n))return r}}static assign(e,...t){const n=e;let r,i;if(Object.assign)return Object.assign(e,...t);for(r=0,i=t.length;r<i;r+=1){const e=t[r];"object"==typeof e&&null!==e&&Object.keys(e).forEach(t=>{n[t]=e[t]})}return e}static getBrowserAlias(e){return hr[e]}static getBrowserTypeByAlias(e){return mr[e]||""}}const wr=/version\/(\d+(\.?_?\d+)+)/i,kr=[{test:[/googlebot/i],describe(e){const t={name:"Googlebot"},n=br.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/opera/i],describe(e){const t={name:"Opera"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe(e){const t={name:"Opera"},n=br.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe(e){const t={name:"Samsung Internet for Android"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe(e){const t={name:"NAVER Whale Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe(e){const t={name:"MZ Browser"},n=br.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/focus/i],describe(e){const t={name:"Focus"},n=br.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/swing/i],describe(e){const t={name:"Swing"},n=br.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/coast/i],describe(e){const t={name:"Opera Coast"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe(e){const t={name:"Opera Touch"},n=br.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe(e){const t={name:"Yandex Browser"},n=br.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe(e){const t={name:"UC Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe(e){const t={name:"Maxthon"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe(e){const t={name:"Epiphany"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe(e){const t={name:"Puffin"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe(e){const t={name:"Sleipnir"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe(e){const t={name:"K-Meleon"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe(e){const t={name:"WeChat"},n=br.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe(e){const t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=br.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe(e){const t={name:"Internet Explorer"},n=br.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe(e){const t={name:"Microsoft Edge"},n=br.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe(e){const t={name:"Microsoft Edge"},n=br.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe(e){const t={name:"Vivaldi"},n=br.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe(e){const t={name:"SeaMonkey"},n=br.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe(e){const t={name:"Sailfish"},n=br.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe(e){const t={name:"Amazon Silk"},n=br.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe(e){const t={name:"PhantomJS"},n=br.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe(e){const t={name:"SlimerJS"},n=br.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe(e){const t={name:"BlackBerry"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe(e){const t={name:"WebOS Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe(e){const t={name:"Bada"},n=br.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe(e){const t={name:"Tizen"},n=br.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe(e){const t={name:"QupZilla"},n=br.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe(e){const t={name:"Firefox"},n=br.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe(e){const t={name:"Electron"},n=br.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe(e){const t={name:"Miui"},n=br.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe(e){const t={name:"Chromium"},n=br.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe(e){const t={name:"Chrome"},n=br.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe(e){const t={name:"Google Search"},n=br.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t={name:"Android Browser"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe(e){const t={name:"PlayStation 4"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe(e){const t={name:"Safari"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/.*/i],describe(e){const t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:br.getFirstMatch(t,e),version:br.getSecondMatch(t,e)}}}];var Sr=[{test:[/Roku\/DVP/],describe(e){const t=br.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:vr.Roku,version:t}}},{test:[/windows phone/i],describe(e){const t=br.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:vr.WindowsPhone,version:t}}},{test:[/windows /i],describe(e){const t=br.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=br.getWindowsVersionName(t);return{name:vr.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe(e){const t={name:vr.iOS},n=br.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe(e){const t=br.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=br.getMacOSVersionName(t),r={name:vr.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe(e){const t=br.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:vr.iOS,version:t}}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t=br.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=br.getAndroidVersionName(t),r={name:vr.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe(e){const t=br.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:vr.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe(e){const t=br.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||br.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||br.getFirstMatch(/\bbb(\d+)/i,e);return{name:vr.BlackBerry,version:t}}},{test:[/bada/i],describe(e){const t=br.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:vr.Bada,version:t}}},{test:[/tizen/i],describe(e){const t=br.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:vr.Tizen,version:t}}},{test:[/linux/i],describe:()=>({name:vr.Linux})},{test:[/CrOS/],describe:()=>({name:vr.ChromeOS})},{test:[/PlayStation 4/],describe(e){const t=br.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:vr.PlayStation4,version:t}}}],_r=[{test:[/googlebot/i],describe:()=>({type:"bot",vendor:"Google"})},{test:[/huawei/i],describe(e){const t=br.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:gr.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:()=>({type:gr.tablet,vendor:"Nexus"})},{test:[/ipad/i],describe:()=>({type:gr.tablet,vendor:"Apple",model:"iPad"})},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:()=>({type:gr.tablet,vendor:"Apple",model:"iPad"})},{test:[/kftt build/i],describe:()=>({type:gr.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"})},{test:[/silk/i],describe:()=>({type:gr.tablet,vendor:"Amazon"})},{test:[/tablet(?! pc)/i],describe:()=>({type:gr.tablet})},{test(e){const t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe(e){const t=br.getFirstMatch(/(ipod|iphone)/i,e);return{type:gr.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:()=>({type:gr.mobile,vendor:"Nexus"})},{test:[/[^-]mobi/i],describe:()=>({type:gr.mobile})},{test:e=>"blackberry"===e.getBrowserName(!0),describe:()=>({type:gr.mobile,vendor:"BlackBerry"})},{test:e=>"bada"===e.getBrowserName(!0),describe:()=>({type:gr.mobile})},{test:e=>"windows phone"===e.getBrowserName(),describe:()=>({type:gr.mobile,vendor:"Microsoft"})},{test(e){const t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:()=>({type:gr.tablet})},{test:e=>"android"===e.getOSName(!0),describe:()=>({type:gr.mobile})},{test:e=>"macos"===e.getOSName(!0),describe:()=>({type:gr.desktop,vendor:"Apple"})},{test:e=>"windows"===e.getOSName(!0),describe:()=>({type:gr.desktop})},{test:e=>"linux"===e.getOSName(!0),describe:()=>({type:gr.desktop})},{test:e=>"playstation 4"===e.getOSName(!0),describe:()=>({type:gr.tv})},{test:e=>"roku"===e.getOSName(!0),describe:()=>({type:gr.tv})}],xr=[{test:e=>"microsoft edge"===e.getBrowserName(!0),describe(e){if(/\sedg\//i.test(e))return{name:yr.Blink};const t=br.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:yr.EdgeHTML,version:t}}},{test:[/trident/i],describe(e){const t={name:yr.Trident},n=br.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:e=>e.test(/presto/i),describe(e){const t={name:yr.Presto},n=br.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe(e){const t={name:yr.Gecko},n=br.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:()=>({name:yr.Blink})},{test:[/(apple)?webkit/i],describe(e){const t={name:yr.WebKit},n=br.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];class Cr{constructor(e,t=!1){if(null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}getUA(){return this._ua}test(e){return e.test(this._ua)}parseBrowser(){this.parsedResult.browser={};const e=br.find(kr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.browser=e.describe(this.getUA())),this.parsedResult.browser}getBrowser(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}getBrowserName(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""}getBrowserVersion(){return this.getBrowser().version}getOS(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}parseOS(){this.parsedResult.os={};const e=br.find(Sr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.os=e.describe(this.getUA())),this.parsedResult.os}getOSName(e){const{name:t}=this.getOS();return e?String(t).toLowerCase()||"":t||""}getOSVersion(){return this.getOS().version}getPlatform(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}getPlatformType(e=!1){const{type:t}=this.getPlatform();return e?String(t).toLowerCase()||"":t||""}parsePlatform(){this.parsedResult.platform={};const e=br.find(_r,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.platform=e.describe(this.getUA())),this.parsedResult.platform}getEngine(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}getEngineName(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""}parseEngine(){this.parsedResult.engine={};const e=br.find(xr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.engine=e.describe(this.getUA())),this.parsedResult.engine}parse(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}getResult(){return br.assign({},this.parsedResult)}satisfies(e){const t={};let n=0;const r={};let i=0;if(Object.keys(e).forEach(a=>{const o=e[a];"string"==typeof o?(r[a]=o,i+=1):"object"==typeof o&&(t[a]=o,n+=1)}),n>0){const e=Object.keys(t),n=br.find(e,e=>this.isOS(e));if(n){const e=this.satisfies(t[n]);if(void 0!==e)return e}const r=br.find(e,e=>this.isPlatform(e));if(r){const e=this.satisfies(t[r]);if(void 0!==e)return e}}if(i>0){const e=Object.keys(r),t=br.find(e,e=>this.isBrowser(e,!0));if(void 0!==t)return this.compareVersion(r[t])}}isBrowser(e,t=!1){const n=this.getBrowserName().toLowerCase();let r=e.toLowerCase();const i=br.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n}compareVersion(e){let t=[0],n=e,r=!1;const i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(r=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(br.compareVersions(i,n,r))>-1}isOS(e){return this.getOSName(!0)===String(e).toLowerCase()}isPlatform(e){return this.getPlatformType(!0)===String(e).toLowerCase()}isEngine(e){return this.getEngineName(!0)===String(e).toLowerCase()}is(e,t=!1){return this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)}some(e=[]){return e.some(e=>this.is(e))}}
36
+ */function Rt({agentName:e,avatarUrl:t,tncEnabled:n,tncContent:r,onTalk:i,onChat:a,onClose:o,className:s}){const[l,c]=x.useState(!n||!r),[u,d]=x.useState(n&&r),f=x.useRef(null),p=x.useCallback(e=>{const t=e.target;t.scrollHeight-t.scrollTop<=t.clientHeight+20&&(c(!0),d(!1))},[]),h=x.useCallback(e=>{e&&(f.current=e,setTimeout(()=>{e.scrollHeight>e.clientHeight||(c(!0),d(!1))},100))},[]);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in relative min-h-0",s),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("button",{onClick:o,className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),b.jsx("div",{ref:h,onScroll:p,className:"flex-1 min-h-0 overflow-y-auto",children:b.jsxs("div",{className:"flex flex-col items-center px-6 py-8 pt-14",children:[b.jsx(St,{src:t,alt:e,size:"2xl",className:"mb-6 shadow-lg"}),b.jsx("h1",{className:"text-2xl font-semibold mb-2 text-center",style:{color:"var(--widget-text-primary, #111827)"},children:"Welcome!"}),b.jsxs("p",{className:"text-lg mb-6 text-center",style:{color:"var(--widget-text-secondary, #6B7280)"},children:["I'm ",b.jsx("span",{className:"font-medium",children:e})]}),n&&r&&b.jsx("div",{className:"w-full max-w-md mb-6 p-4 rounded-lg",style:{backgroundColor:"var(--widget-background-secondary, #F9FAFB)",border:"1px solid var(--widget-border, #E5E7EB)"},children:b.jsx("p",{className:"text-sm leading-relaxed whitespace-pre-wrap",style:{color:"var(--widget-text-secondary, #6B7280)"},children:r})}),n&&b.jsx("p",{className:"text-xs mb-8 text-center max-w-sm",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"By continuing, you agree to the terms above."})]})}),u&&b.jsxs("div",{className:"flex flex-col items-center py-2 pointer-events-none",style:{background:"linear-gradient(transparent, var(--widget-background, #FFFFFF) 30%)"},children:[b.jsx(Pt,{className:"h-5 w-5 animate-bounce",style:{color:"var(--widget-primary-color, #3B82F6)"}}),b.jsx("span",{className:"text-xs",style:{color:"var(--widget-primary-color, #3B82F6)"},children:"Scroll to continue"})]}),b.jsx("div",{className:"p-6 pb-safe shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",paddingBottom:"max(1.5rem, env(safe-area-inset-bottom, 0px))"},children:b.jsxs("div",{className:"flex gap-4 max-w-md mx-auto",children:[b.jsxs(kt,{onClick:i,variant:"default",size:"xl",className:"flex-1",disabled:!l,children:[b.jsx(Lt,{className:"h-5 w-5"}),"Talk"]}),b.jsxs(kt,{onClick:a,variant:"secondary",size:"xl",className:"flex-1",disabled:!l,children:[b.jsx(Ot,{className:"h-5 w-5"}),"Chat"]})]})})]})}function Dt(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function Bt(...e){return t=>{let n=!1;const r=e.map(e=>{const r=Dt(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){const n=r[t];"function"==typeof n?n():Dt(e[t],null)}}}}function zt(...e){return x.useCallback(Bt(...e),e)}function Ut(e){const t=Vt(e),n=x.forwardRef((e,n)=>{const r=e,{children:i}=r,a=u(r,["children"]),o=x.Children.toArray(i),s=o.find(Wt);if(s){const e=s.props.children,r=o.map(t=>t===s?x.Children.count(e)>1?x.Children.only(null):x.isValidElement(e)?e.props.children:null:t);return b.jsx(t,c(l({},a),{ref:n,children:x.isValidElement(e)?x.cloneElement(e,void 0,r):null}))}return b.jsx(t,c(l({},a),{ref:n,children:i}))});return n.displayName=`${e}.Slot`,n}function Vt(e){const t=x.forwardRef((e,t)=>{const n=e,{children:r}=n,i=u(n,["children"]);if(x.isValidElement(r)){const e=function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,i=r&&"isReactWarning"in r&&r.isReactWarning;if(i)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,i=r&&"isReactWarning"in r&&r.isReactWarning,i)return e.props.ref;return e.props.ref||e.ref}(r),n=function(e,t){const n=l({},t);for(const r in t){const i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{const t=a(...e);return i(...e),t}:i&&(n[r]=i):"style"===r?n[r]=l(l({},i),a):"className"===r&&(n[r]=[i,a].filter(Boolean).join(" "))}return l(l({},e),n)}(i,r.props);return r.type!==x.Fragment&&(n.ref=t?Bt(t,e):e),x.cloneElement(r,n)}return x.Children.count(r)>1?x.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}z();var $t=Symbol("radix.slottable");function Wt(e){return x.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===$t}var qt=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{const n=Ut(`Primitive.${t}`),r=x.forwardRef((e,r)=>{const i=e,{asChild:a}=i,o=u(i,["asChild"]),s=a?n:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),b.jsx(s,c(l({},o),{ref:r}))});return r.displayName=`Primitive.${t}`,c(l({},e),{[t]:r})},{}),Ht=(null==globalThis?void 0:globalThis.document)?x.useLayoutEffect:()=>{};var Jt=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=x.useState(),r=x.useRef(null),i=x.useRef(e),a=x.useRef("none"),o=e?"mounted":"unmounted",[s,l]=function(e,t){return x.useReducer((e,n)=>{const r=t[e][n];return null!=r?r:e},e)}(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return x.useEffect(()=>{const e=Qt(r.current);a.current="mounted"===s?e:"none"},[s]),Ht(()=>{const t=r.current,n=i.current;if(n!==e){const r=a.current,o=Qt(t);if(e)l("MOUNT");else if("none"===o||"none"===(null==t?void 0:t.display))l("UNMOUNT");else{l(n&&r!==o?"ANIMATION_OUT":"UNMOUNT")}i.current=e}},[e,l]),Ht(()=>{var e;if(t){let n;const o=null!=(e=t.ownerDocument.defaultView)?e:window,s=e=>{const a=Qt(r.current).includes(CSS.escape(e.animationName));if(e.target===t&&a&&(l("ANIMATION_END"),!i.current)){const e=t.style.animationFillMode;t.style.animationFillMode="forwards",n=o.setTimeout(()=>{"forwards"===t.style.animationFillMode&&(t.style.animationFillMode=e)})}},c=e=>{e.target===t&&(a.current=Qt(r.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",s),t.addEventListener("animationend",s),()=>{o.clearTimeout(n),t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",s),t.removeEventListener("animationend",s)}}l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:x.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}(t),i="function"==typeof n?n({present:r.isPresent}):x.Children.only(n),a=zt(r.ref,function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,i=r&&"isReactWarning"in r&&r.isReactWarning;if(i)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,i=r&&"isReactWarning"in r&&r.isReactWarning,i)return e.props.ref;return e.props.ref||e.ref}(i));return"function"==typeof n||r.isPresent?x.cloneElement(i,{ref:a}):null};function Qt(e){return(null==e?void 0:e.animationName)||"none"}function Gt(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){const r=n.reduce((t,{useScope:n,scopeName:r})=>{const i=n(e)[`__scope${r}`];return l(l({},t),i)},{});return x.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function Yt(e){const t=x.useRef(e);return x.useEffect(()=>{t.current=e}),x.useMemo(()=>(...e)=>{var n;return null==(n=t.current)?void 0:n.call(t,...e)},[])}Jt.displayName="Presence";var Kt=x.createContext(void 0);function Xt(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}var Zt="ScrollArea",[en]=function(e,t=[]){let n=[];const r=()=>{const t=n.map(e=>x.createContext(e));return function(n){const r=(null==n?void 0:n[e])||t;return x.useMemo(()=>({[`__scope${e}`]:c(l({},n),{[e]:r})}),[n,r])}};return r.scopeName=e,[function(t,r){const i=x.createContext(r),a=n.length;n=[...n,r];const o=t=>{var n;const r=t,{scope:o,children:s}=r,l=u(r,["scope","children"]),c=(null==(n=null==o?void 0:o[e])?void 0:n[a])||i,d=x.useMemo(()=>l,Object.values(l));return b.jsx(c.Provider,{value:d,children:s})};return o.displayName=t+"Provider",[o,function(n,o){var s;const l=(null==(s=null==o?void 0:o[e])?void 0:s[a])||i,c=x.useContext(l);if(c)return c;if(void 0!==r)return r;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},Gt(r,...t)]}(Zt),[tn,nn]=en(Zt),rn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,type:i="hover",dir:a,scrollHideDelay:o=600}=n,s=u(n,["__scopeScrollArea","type","dir","scrollHideDelay"]),[d,f]=x.useState(null),[p,h]=x.useState(null),[m,g]=x.useState(null),[v,y]=x.useState(null),[w,k]=x.useState(null),[S,_]=x.useState(0),[C,E]=x.useState(0),[T,M]=x.useState(!1),[P,A]=x.useState(!1),O=zt(t,e=>f(e)),N=function(e){const t=x.useContext(Kt);return e||t||"ltr"}(a);return b.jsx(tn,{scope:r,type:i,dir:N,scrollHideDelay:o,scrollArea:d,viewport:p,onViewportChange:h,content:m,onContentChange:g,scrollbarX:v,onScrollbarXChange:y,scrollbarXEnabled:T,onScrollbarXEnabledChange:M,scrollbarY:w,onScrollbarYChange:k,scrollbarYEnabled:P,onScrollbarYEnabledChange:A,onCornerWidthChange:_,onCornerHeightChange:E,children:b.jsx(qt.div,c(l({dir:N},s),{ref:O,style:l({position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":C+"px"},e.style)}))})});rn.displayName=Zt;var an="ScrollAreaViewport",on=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,children:i,nonce:a}=n,o=u(n,["__scopeScrollArea","children","nonce"]),s=nn(an,r),d=zt(t,x.useRef(null),s.onViewportChange);return b.jsxs(b.Fragment,{children:[b.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),b.jsx(qt.div,c(l({"data-radix-scroll-area-viewport":""},o),{ref:d,style:l({overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden"},e.style),children:b.jsx("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:i})}))]})});on.displayName=an;var sn="ScrollAreaScrollbar",ln=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:s}=a,d="horizontal"===e.orientation;return x.useEffect(()=>(d?o(!0):s(!0),()=>{d?o(!1):s(!1)}),[d,o,s]),"hover"===a.type?b.jsx(cn,c(l({},i),{ref:t,forceMount:r})):"scroll"===a.type?b.jsx(un,c(l({},i),{ref:t,forceMount:r})):"auto"===a.type?b.jsx(dn,c(l({},i),{ref:t,forceMount:r})):"always"===a.type?b.jsx(fn,c(l({},i),{ref:t})):null});ln.displayName=sn;var cn=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),[o,s]=x.useState(!1);return x.useEffect(()=>{const e=a.scrollArea;let t=0;if(e){const n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener("pointerenter",n),e.addEventListener("pointerleave",r),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",n),e.removeEventListener("pointerleave",r)}}},[a.scrollArea,a.scrollHideDelay]),b.jsx(Jt,{present:r||o,children:b.jsx(dn,c(l({"data-state":o?"visible":"hidden"},i),{ref:t}))})}),un=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=nn(sn,e.__scopeScrollArea),o="horizontal"===e.orientation,s=On(()=>f("SCROLL_END"),100),[d,f]=(p="hidden",h={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},x.useReducer((e,t)=>{const n=h[e][t];return null!=n?n:e},p));var p,h;return x.useEffect(()=>{if("idle"===d){const e=window.setTimeout(()=>f("HIDE"),a.scrollHideDelay);return()=>window.clearTimeout(e)}},[d,a.scrollHideDelay,f]),x.useEffect(()=>{const e=a.viewport,t=o?"scrollLeft":"scrollTop";if(e){let n=e[t];const r=()=>{const r=e[t];n!==r&&(f("SCROLL"),s()),n=r};return e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[a.viewport,o,f,s]),b.jsx(Jt,{present:r||"hidden"!==d,children:b.jsx(fn,c(l({"data-state":"hidden"===d?"hidden":"visible"},i),{ref:t,onPointerEnter:Xt(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:Xt(e.onPointerLeave,()=>f("POINTER_LEAVE"))}))})}),dn=x.forwardRef((e,t)=>{const n=nn(sn,e.__scopeScrollArea),r=e,{forceMount:i}=r,a=u(r,["forceMount"]),[o,s]=x.useState(!1),d="horizontal"===e.orientation,f=On(()=>{if(n.viewport){const e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;s(d?e:t)}},10);return Nn(n.viewport,f),Nn(n.content,f),b.jsx(Jt,{present:i||o,children:b.jsx(fn,c(l({"data-state":o?"visible":"hidden"},a),{ref:t}))})}),fn=x.forwardRef((e,t)=>{const n=e,{orientation:r="vertical"}=n,i=u(n,["orientation"]),a=nn(sn,e.__scopeScrollArea),o=x.useRef(null),s=x.useRef(0),[d,f]=x.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=Cn(d.viewport,d.content),h=c(l({},i),{sizes:d,onSizesChange:f,hasThumb:Boolean(p>0&&p<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:e=>s.current=e});function m(e,t){return function(e,t,n,r="ltr"){const i=En(n),a=i/2,o=t||a,s=i-o,l=n.scrollbar.paddingStart+o,c=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d="ltr"===r?[0,u]:[-1*u,0];return Mn([l,c],d)(e)}(e,s.current,d,t)}return"horizontal"===r?b.jsx(pn,c(l({},h),{ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){const e=Tn(a.viewport.scrollLeft,d,a.dir);o.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollLeft=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollLeft=m(e,a.dir))}})):"vertical"===r?b.jsx(hn,c(l({},h),{ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){const e=Tn(a.viewport.scrollTop,d);o.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollTop=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollTop=m(e))}})):null}),pn=x.forwardRef((e,t)=>{const n=e,{sizes:r,onSizesChange:i}=n,a=u(n,["sizes","onSizesChange"]),o=nn(sn,e.__scopeScrollArea),[s,d]=x.useState(),f=x.useRef(null),p=zt(t,f,o.onScrollbarXChange);return x.useEffect(()=>{f.current&&d(getComputedStyle(f.current))},[f]),b.jsx(vn,c(l({"data-orientation":"horizontal"},a),{ref:p,sizes:r,style:l({bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":En(r)+"px"},e.style),onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(o.viewport){const r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),Pn(r,n)&&t.preventDefault()}},onResize:()=>{f.current&&o.viewport&&s&&i({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:xn(s.paddingLeft),paddingEnd:xn(s.paddingRight)}})}}))}),hn=x.forwardRef((e,t)=>{const n=e,{sizes:r,onSizesChange:i}=n,a=u(n,["sizes","onSizesChange"]),o=nn(sn,e.__scopeScrollArea),[s,d]=x.useState(),f=x.useRef(null),p=zt(t,f,o.onScrollbarYChange);return x.useEffect(()=>{f.current&&d(getComputedStyle(f.current))},[f]),b.jsx(vn,c(l({"data-orientation":"vertical"},a),{ref:p,sizes:r,style:l({top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":En(r)+"px"},e.style),onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(o.viewport){const r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),Pn(r,n)&&t.preventDefault()}},onResize:()=>{f.current&&o.viewport&&s&&i({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:xn(s.paddingTop),paddingEnd:xn(s.paddingBottom)}})}}))}),[mn,gn]=en(sn),vn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,sizes:i,hasThumb:a,onThumbChange:o,onThumbPointerUp:s,onThumbPointerDown:d,onThumbPositionChange:f,onDragScroll:p,onWheelScroll:h,onResize:m}=n,g=u(n,["__scopeScrollArea","sizes","hasThumb","onThumbChange","onThumbPointerUp","onThumbPointerDown","onThumbPositionChange","onDragScroll","onWheelScroll","onResize"]),v=nn(sn,r),[y,w]=x.useState(null),k=zt(t,e=>w(e)),S=x.useRef(null),_=x.useRef(""),C=v.viewport,E=i.content-i.viewport,T=Yt(h),M=Yt(f),P=On(m,10);function A(e){if(S.current){const t=e.clientX-S.current.left,n=e.clientY-S.current.top;p({x:t,y:n})}}return x.useEffect(()=>{const e=e=>{const t=e.target;(null==y?void 0:y.contains(t))&&T(e,E)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[C,y,E,T]),x.useEffect(M,[i,M]),Nn(y,P),Nn(v.content,P),b.jsx(mn,{scope:r,scrollbar:y,hasThumb:a,onThumbChange:Yt(o),onThumbPointerUp:Yt(s),onThumbPositionChange:M,onThumbPointerDown:Yt(d),children:b.jsx(qt.div,c(l({},g),{ref:k,style:l({position:"absolute"},g.style),onPointerDown:Xt(e.onPointerDown,e=>{if(0===e.button){e.target.setPointerCapture(e.pointerId),S.current=y.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),A(e)}}),onPointerMove:Xt(e.onPointerMove,A),onPointerUp:Xt(e.onPointerUp,e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=_.current,v.viewport&&(v.viewport.style.scrollBehavior=""),S.current=null})}))})}),yn="ScrollAreaThumb",bn=x.forwardRef((e,t)=>{const n=e,{forceMount:r}=n,i=u(n,["forceMount"]),a=gn(yn,e.__scopeScrollArea);return b.jsx(Jt,{present:r||a.hasThumb,children:b.jsx(wn,l({ref:t},i))})}),wn=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r,style:i}=n,a=u(n,["__scopeScrollArea","style"]),o=nn(yn,r),s=gn(yn,r),{onThumbPositionChange:d}=s,f=zt(t,e=>s.onThumbChange(e)),p=x.useRef(void 0),h=On(()=>{p.current&&(p.current(),p.current=void 0)},100);return x.useEffect(()=>{const e=o.viewport;if(e){const t=()=>{if(h(),!p.current){const t=An(e,d);p.current=t,d()}};return d(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[o.viewport,h,d]),b.jsx(qt.div,c(l({"data-state":s.hasThumb?"visible":"hidden"},a),{ref:f,style:l({width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)"},i),onPointerDownCapture:Xt(e.onPointerDownCapture,e=>{const t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;s.onThumbPointerDown({x:n,y:r})}),onPointerUp:Xt(e.onPointerUp,s.onThumbPointerUp)}))});bn.displayName=yn;var kn="ScrollAreaCorner",Sn=x.forwardRef((e,t)=>{const n=nn(kn,e.__scopeScrollArea),r=Boolean(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&r?b.jsx(_n,c(l({},e),{ref:t})):null});Sn.displayName=kn;var _n=x.forwardRef((e,t)=>{const n=e,{__scopeScrollArea:r}=n,i=u(n,["__scopeScrollArea"]),a=nn(kn,r),[o,s]=x.useState(0),[d,f]=x.useState(0),p=Boolean(o&&d);return Nn(a.scrollbarX,()=>{var e;const t=(null==(e=a.scrollbarX)?void 0:e.offsetHeight)||0;a.onCornerHeightChange(t),f(t)}),Nn(a.scrollbarY,()=>{var e;const t=(null==(e=a.scrollbarY)?void 0:e.offsetWidth)||0;a.onCornerWidthChange(t),s(t)}),p?b.jsx(qt.div,c(l({},i),{ref:t,style:l({width:o,height:d,position:"absolute",right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:0},e.style)})):null});function xn(e){return e?parseInt(e,10):0}function Cn(e,t){const n=e/t;return isNaN(n)?0:n}function En(e){const t=Cn(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Tn(e,t,n="ltr"){const r=En(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,l=function(e,[t,n]){return Math.min(n,Math.max(t,e))}(e,"ltr"===n?[0,o]:[-1*o,0]);return Mn([0,o],[0,s])(l)}function Mn(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Pn(e,t){return e>0&&e<t}var An=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function i(){const a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)}(),()=>window.cancelAnimationFrame(r)};function On(e,t){const n=Yt(e),r=x.useRef(0);return x.useEffect(()=>()=>window.clearTimeout(r.current),[]),x.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Nn(e,t){const n=Yt(t);Ht(()=>{let t=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Ln=rn,jn=on,In=Sn;const Fn=x.forwardRef((e,t)=>{var n=e,{className:r,children:i}=n,a=u(n,["className","children"]);return b.jsxs(Ln,c(l({ref:t,className:vt("relative overflow-hidden",r)},a),{children:[b.jsx(jn,{className:"h-full w-full rounded-[inherit]",children:i}),b.jsx(Rn,{}),b.jsx(In,{})]}))});Fn.displayName=Ln.displayName;const Rn=x.forwardRef((e,t)=>{var n=e,{className:r,orientation:i="vertical"}=n,a=u(n,["className","orientation"]);return b.jsx(ln,c(l({ref:t,orientation:i,className:vt("flex touch-none select-none transition-colors","vertical"===i&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===i&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r)},a),{children:b.jsx(bn,{className:"relative flex-1 rounded-full",style:{backgroundColor:"var(--widget-border, #E5E7EB)"}})}))});function Dn({messages:e,streamingContent:t,isStreaming:n,className:r}){const i=x.useRef(null);return x.useEffect(()=>{var e;null==(e=i.current)||e.scrollIntoView({behavior:"smooth"})},[e,t]),b.jsx(Fn,{className:vt("flex-1 px-4",r),children:b.jsxs("div",{className:"py-4 space-y-4",children:[e.map(e=>b.jsx(Bn,{message:e},e.id)),n&&t&&b.jsx(Bn,{message:{type:"assistant",text:t,isStreaming:!0}}),b.jsx("div",{ref:i})]})})}function Bn({message:e}){const t="user"===e.type;e.type;const n="system"===e.type;return"separator"===e.type?b.jsx("div",{className:"flex items-center justify-center py-2",children:b.jsx("div",{className:"px-3 py-1 rounded-full text-xs",style:{backgroundColor:"var(--widget-system-message-bg, #F3F4F6)",color:"var(--widget-system-message-text, #6B7280)"},children:e.text})}):n?b.jsx("div",{className:"flex justify-center",children:b.jsx("div",{className:"max-w-[85%] px-4 py-2 rounded-lg text-sm",style:{backgroundColor:"var(--widget-system-message-bg, #FEF3C7)",color:"var(--widget-system-message-text, #92400E)"},children:e.text})}):b.jsx("div",{className:vt("flex",t?"justify-end":"justify-start"),children:b.jsxs("div",{className:vt("max-w-[85%] px-4 py-3 rounded-2xl text-sm leading-relaxed",t?"rounded-br-md":"rounded-bl-md",e.isTranscript&&"italic opacity-80"),style:{backgroundColor:t?"var(--widget-user-message-bg, #3B82F6)":"var(--widget-bot-message-bg, #F3F4F6)",color:t?"var(--widget-user-message-text, #FFFFFF)":"var(--widget-bot-message-text, #111827)"},children:[e.text,e.isStreaming&&b.jsx("span",{className:"inline-block w-2 h-4 ml-1 animate-pulse bg-current opacity-50"})]})})}function zn({onSend:e,disabled:t,placeholder:n="Type a message...",className:r}){const[i,a]=x.useState(""),o=x.useRef(null),s=n=>{var r;n.preventDefault(),i.trim()&&!t&&(e(i.trim()),a(""),null==(r=o.current)||r.focus())};return b.jsxs("form",{onSubmit:s,className:vt("flex items-center gap-2 p-4 pb-safe shrink-0",r),style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",backgroundColor:"var(--widget-background, #FFFFFF)",paddingBottom:"max(1rem, env(safe-area-inset-bottom, 0px))"},children:[b.jsx("input",{ref:o,type:"text",value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),s(e))},placeholder:n,disabled:t,className:"flex-1 h-11 px-4 rounded-full outline-none transition-all",style:{backgroundColor:"var(--widget-input-bg, #F9FAFB)",color:"var(--widget-input-text, #111827)",border:"1px solid var(--widget-input-border, #E5E7EB)",fontFamily:"var(--widget-font-family, inherit)",fontSize:"var(--widget-font-size-base, 14px)"}}),b.jsx(kt,{type:"submit",variant:"default",size:"icon",disabled:!i.trim()||t,className:"shrink-0 rounded-full h-11 w-11",children:b.jsx(It,{className:"h-5 w-5"})})]})}function Un(e,t,n={}){const{chatSession:r,messages:i,isChatInitialized:a,isStreaming:o,streamingContent:s,setChatSession:u,addMessage:f,setStreaming:p}=H(),h=x.useRef(null),m=x.useRef(null),g=x.useRef(!1),v=x.useCallback(()=>d(null,null,function*(){if(!g.current&&!a&&e&&t){g.current=!0;try{const r=yield function(e,t){return d(this,arguments,function*(e,t,n={}){const r=`${Q}/v1/widgets/chat/sessions?agent_id=${e}`,i=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":t},body:JSON.stringify({agent_id:e,conversation_metadata:n})});if(!i.ok){const e=yield i.json().catch(()=>({}));throw new Error(e.detail||e.message||`HTTP ${i.status}`)}const a=yield i.json();return a.session_id,a})}(e,t,n);u(r),m.current=r.session_id,r.first_message&&f({type:"assistant",text:r.first_message,isTranscript:!1})}catch(r){f({type:"system",text:`Error: ${r.message}`})}}}),[e,t,n,a,u,f]),y=x.useCallback(i=>d(null,null,function*(){if(i.trim()&&!o){f({type:"user",text:i,isTranscript:!1});try{h.current=new AbortController,p(!0,""),m.current,i.substring(0,50);const a=yield function(e,t,n,r,i){return d(this,null,function*(){const a=`${Q}/v1/widgets/chat/messages`;n.substring(0,50);const o=yield fetch(a,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":i},body:JSON.stringify({agent_id:e,session_id:t,message:n,metadata:r})});if(!o.ok){const e=yield o.text();throw new Error(`Server error (${o.status}): ${e||"Unknown error"}`)}return{response:o,sessionId:o.headers.get("X-Session-ID")}})}(e,m.current||(null==r?void 0:r.session_id),i,c(l({},n),{agent_id:e}),t);a.sessionId&&(m.current=a.sessionId);const o=a.response.body.getReader(),s=new TextDecoder;let u="";try{for(;;){const{done:e,value:t}=yield o.read();if(e)break;u+=s.decode(t,{stream:!0}),p(!0,u)}}finally{o.releaseLock()}u.trim()&&f({type:"assistant",text:u,isTranscript:!1}),p(!1,"")}catch(a){"AbortError"!==a.name&&f({type:"system",text:`Error: ${a.message}`}),p(!1,"")}}}),[e,t,r,n,o,f,p]),b=x.useCallback(()=>{h.current&&(h.current.abort(),p(!1,""))},[p]);return{messages:i,isStreaming:o,streamingContent:s,isInitialized:a,initializeChat:v,sendMessage:y,cancelStream:b}}function Vn({agentId:e,agentName:t,promptToken:n,metadata:r,onClose:i,onSwitchToTalk:a,className:o}){const{messages:s,isStreaming:l,streamingContent:c,isInitialized:u,initializeChat:d,sendMessage:f}=Un(e,n,r);return x.useEffect(()=>{!u&&n&&d()},[u,n,d]),b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in",o),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsxs("div",{className:"flex items-center justify-between px-4 py-3",style:{backgroundColor:"var(--widget-header-bg, #F9FAFB)",borderBottom:"1px solid var(--widget-header-border, #E5E7EB)"},children:[b.jsx("button",{onClick:i,className:"p-2 rounded-full hover:opacity-80 transition-opacity",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-5 w-5"})}),b.jsx("h2",{className:"text-base font-semibold",style:{color:"var(--widget-header-text, #111827)"},children:t}),b.jsx(kt,{onClick:a,variant:"ghost",size:"icon-sm",className:"rounded-full",title:"Switch to voice",children:b.jsx(Lt,{className:"h-5 w-5",style:{color:"var(--widget-icon-active, #3B82F6)"}})})]}),b.jsx(Dn,{messages:s,streamingContent:c,isStreaming:l,className:"flex-1"}),b.jsx(zn,{onSend:f,disabled:l,placeholder:"Type a message..."})]})}Rn.displayName=ln.displayName;const $n={sm:48,md:80,lg:120,xl:160,"2xl":200},Wn=x.forwardRef((e,t)=>{var n=e,{children:r,loading:i=!0,size:a="lg",strokeWidth:o=4,gap:s=8,trackColor:d,spinnerColor:f,duration:p=1.5,className:h}=n,m=u(n,["children","loading","size","strokeWidth","gap","trackColor","spinnerColor","duration","className"]);const g="string"==typeof a?$n[a]||120:a,v=(g-o)/2,y=2*Math.PI*v,w=g/2,k=g-2*s-2*o,S=x.useId(),_=`\n @keyframes loader-spin-${S.replace(/:/g,"")} {\n 0% {\n transform: rotate(-90deg);\n }\n 100% {\n transform: rotate(270deg);\n }\n }\n \n @keyframes loader-dash-${S.replace(/:/g,"")} {\n 0% {\n stroke-dashoffset: ${y};\n }\n 50% {\n stroke-dashoffset: ${.25*y};\n }\n 100% {\n stroke-dashoffset: ${y};\n }\n }\n `;return b.jsxs("div",c(l({ref:t,className:vt("relative inline-flex items-center justify-center",h),style:{width:g,height:g}},m),{children:[i&&b.jsx("style",{children:_}),i&&b.jsxs("svg",{className:"absolute inset-0 w-full h-full pointer-events-none",viewBox:`0 0 ${g} ${g}`,"aria-hidden":"true",children:[b.jsx("circle",{cx:w,cy:w,r:v,fill:"none",stroke:d||"var(--widget-border, #E5E7EB)",strokeWidth:o}),b.jsx("circle",{cx:w,cy:w,r:v,fill:"none",stroke:f||"var(--widget-primary-color, #3B82F6)",strokeWidth:o,strokeLinecap:"round",strokeDasharray:y,strokeDashoffset:.25*y,style:{transformOrigin:"center",animation:`loader-spin-${S.replace(/:/g,"")} ${p}s linear infinite, loader-dash-${S.replace(/:/g,"")} ${1.33*p}s ease-in-out infinite`}})]}),b.jsx("div",{className:"relative z-10 flex items-center justify-center overflow-hidden rounded-full",style:{width:k,height:k},children:r})]}))});Wn.displayName="Loader";x.forwardRef((e,t)=>{var n=e,{size:r="md",strokeWidth:i=3,color:a,trackColor:o,duration:s=1,className:d}=n,f=u(n,["size","strokeWidth","color","trackColor","duration","className"]);const p="string"==typeof r?{xs:16,sm:20,md:24,lg:32,xl:40}[r]||24:r,h=(p-i)/2,m=2*Math.PI*h,g=p/2,v=x.useId(),y=`\n @keyframes simple-spin-${v.replace(/:/g,"")} {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `;return b.jsxs("span",c(l({ref:t,className:vt("inline-flex items-center justify-center",d),role:"status","aria-label":"Loading"},f),{children:[b.jsx("style",{children:y}),b.jsxs("svg",{width:p,height:p,viewBox:`0 0 ${p} ${p}`,fill:"none",style:{animation:`simple-spin-${v.replace(/:/g,"")} ${s}s linear infinite`},children:[o&&b.jsx("circle",{cx:g,cy:g,r:h,stroke:o,strokeWidth:i,fill:"none",opacity:.25}),b.jsx("circle",{cx:g,cy:g,r:h,stroke:a||"var(--widget-primary-color, #3B82F6)",strokeWidth:i,strokeLinecap:"round",fill:"none",strokeDasharray:m,strokeDashoffset:.75*m})]}),b.jsx("span",{className:"sr-only",children:"Loading..."})]}))}).displayName="SpinnerLoader";function qn(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Hn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jn(e){return(Jn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Qn(e){var t=function(e){if("object"!=Jn(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Jn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Jn(t)?t:t+""}function Gn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Qn(r.key),r)}}function Yn(e,t,n){return t&&Gn(e.prototype,t),n&&Gn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Kn(e,t){if(t&&("object"==Jn(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function Xn(e){return(Xn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Zn(e,t){return(Zn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function er(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Zn(e,t)}function tr(e,t,n){return(t=Qn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nr(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(r,i)}function rr(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){nr(a,r,i,o,s,"next",e)}function s(e){nr(a,r,i,o,s,"throw",e)}o(void 0)})}}function ir(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ar(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(u){c=!0,i=u}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ir(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ir(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}x.forwardRef((e,t)=>{var n=e,{dotSize:r=8,gap:i=6,color:a,duration:o=1.4,className:s}=n,d=u(n,["dotSize","gap","color","duration","className"]);const f=x.useId(),p=`\n @keyframes dots-bounce-${f.replace(/:/g,"")} {\n 0%, 80%, 100% {\n transform: scale(0.6);\n opacity: 0.5;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n }\n `;return b.jsxs("span",c(l({ref:t,className:vt("inline-flex items-center",s),style:{gap:i},role:"status","aria-label":"Loading"},d),{children:[b.jsx("style",{children:p}),[0,1,2].map(e=>b.jsx("span",{style:{width:r,height:r,borderRadius:"50%",backgroundColor:a||"var(--widget-primary-color, #3B82F6)",animation:`dots-bounce-${f.replace(/:/g,"")} ${o}s ease-in-out infinite`,animationDelay:e*(o/3)+"s"}},e)),b.jsx("span",{className:"sr-only",children:"Loading..."})]}))}).displayName="DotsLoader";var or,sr,lr={exports:{}},cr=function(){if(or)return lr.exports;or=1;var e,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}lr.exports=i,lr.exports.once=function(e,t){return new Promise(function(n,r){function i(n){e.removeListener(t,a),r(n)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",i),n([].slice.call(arguments))}var o,s;h(e,t,a,{once:!0}),"error"!==t&&(s=i,"function"==typeof(o=e).on&&h(o,"error",s,{once:!0}))})},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var a=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function l(e,t,n,r){var i,a,l,c;if(o(n),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),a=e._events),l=a[t]),void 0===l)l=a[t]=n,++e._eventsCount;else if("function"==typeof l?l=a[t]=r?[n,l]:[l,n]:r?l.unshift(n):l.push(n),(i=s(e))>0&&l.length>i&&!l.warned){l.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=l.length,c=u,console&&console.warn&&console.warn(c)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=c.bind(r);return i.listener=n,r.wrapFn=i,i}function d(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):p(i,i.length)}function f(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function p(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function h(e,t,n,r){if("function"==typeof e.on)r.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,function i(a){r.once&&e.removeEventListener(t,i),n(a)})}}return Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),i.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},i.prototype.getMaxListeners=function(){return s(this)},i.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,a=this._events;if(void 0!==a)i=i&&void 0===a.error;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[e];if(void 0===l)return!1;if("function"==typeof l)n(l,this,t);else{var c=l.length,u=p(l,c);for(r=0;r<c;++r)n(u[r],this,t)}return!0},i.prototype.addListener=function(e,t){return l(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return l(this,e,t,!0)},i.prototype.once=function(e,t){return o(t),this.on(e,u(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,u(this,e,t)),this},i.prototype.removeListener=function(e,t){var n,r,i,a,s;if(o(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,a=n.length-1;a>=0;a--)if(n[a]===t||n[a].listener===t){s=n[a].listener,i=a;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,s||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,a=Object.keys(n);for(r=0;r<a.length;++r)"removeListener"!==(i=a[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},i.prototype.listenerCount=f,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},lr.exports}(),ur=(sr=cr)&&sr.__esModule&&Object.prototype.hasOwnProperty.call(sr,"default")?sr.default:sr,dr=Object.prototype.hasOwnProperty;function fr(e,t,n){for(n of e.keys())if(pr(n,t))return n}function pr(e,t){var n,r,i;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&pr(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((i=r)&&"object"==typeof i&&!(i=fr(t,i)))return!1;if(!t.has(i))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((i=r[0])&&"object"==typeof i&&!(i=fr(t,i)))return!1;if(!pr(r[1],t.get(i)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||"object"==typeof e){for(n in r=0,e){if(dr.call(e,n)&&++r&&!dr.call(t,n))return!1;if(!(n in t)||!pr(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}const hr={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},mr={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},gr={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},vr={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},yr={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};class br{static getFirstMatch(e,t){const n=t.match(e);return n&&n.length>0&&n[1]||""}static getSecondMatch(e,t){const n=t.match(e);return n&&n.length>1&&n[2]||""}static matchAndReturnConst(e,t,n){if(e.test(t))return n}static getWindowsVersionName(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}static getMacOSVersionName(e){const t=e.split(".").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}}static getAndroidVersionName(e){const t=e.split(".").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0}static getVersionPrecision(e){return e.split(".").length}static compareVersions(e,t,n=!1){const r=br.getVersionPrecision(e),i=br.getVersionPrecision(t);let a=Math.max(r,i),o=0;const s=br.map([e,t],e=>{const t=a-br.getVersionPrecision(e),n=e+new Array(t+1).join(".0");return br.map(n.split("."),e=>new Array(20-e.length).join("0")+e).reverse()});for(n&&(o=a-Math.min(r,i)),a-=1;a>=o;){if(s[0][a]>s[1][a])return 1;if(s[0][a]===s[1][a]){if(a===o)return 0;a-=1}else if(s[0][a]<s[1][a])return-1}}static map(e,t){const n=[];let r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n}static find(e,t){let n,r;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(n=0,r=e.length;n<r;n+=1){const r=e[n];if(t(r,n))return r}}static assign(e,...t){const n=e;let r,i;if(Object.assign)return Object.assign(e,...t);for(r=0,i=t.length;r<i;r+=1){const e=t[r];"object"==typeof e&&null!==e&&Object.keys(e).forEach(t=>{n[t]=e[t]})}return e}static getBrowserAlias(e){return hr[e]}static getBrowserTypeByAlias(e){return mr[e]||""}}const wr=/version\/(\d+(\.?_?\d+)+)/i,kr=[{test:[/googlebot/i],describe(e){const t={name:"Googlebot"},n=br.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/opera/i],describe(e){const t={name:"Opera"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe(e){const t={name:"Opera"},n=br.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe(e){const t={name:"Samsung Internet for Android"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe(e){const t={name:"NAVER Whale Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe(e){const t={name:"MZ Browser"},n=br.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/focus/i],describe(e){const t={name:"Focus"},n=br.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/swing/i],describe(e){const t={name:"Swing"},n=br.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/coast/i],describe(e){const t={name:"Opera Coast"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe(e){const t={name:"Opera Touch"},n=br.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe(e){const t={name:"Yandex Browser"},n=br.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe(e){const t={name:"UC Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe(e){const t={name:"Maxthon"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe(e){const t={name:"Epiphany"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe(e){const t={name:"Puffin"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe(e){const t={name:"Sleipnir"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe(e){const t={name:"K-Meleon"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe(e){const t={name:"WeChat"},n=br.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe(e){const t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=br.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe(e){const t={name:"Internet Explorer"},n=br.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe(e){const t={name:"Microsoft Edge"},n=br.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe(e){const t={name:"Microsoft Edge"},n=br.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe(e){const t={name:"Vivaldi"},n=br.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe(e){const t={name:"SeaMonkey"},n=br.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe(e){const t={name:"Sailfish"},n=br.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe(e){const t={name:"Amazon Silk"},n=br.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe(e){const t={name:"PhantomJS"},n=br.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe(e){const t={name:"SlimerJS"},n=br.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe(e){const t={name:"BlackBerry"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe(e){const t={name:"WebOS Browser"},n=br.getFirstMatch(wr,e)||br.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe(e){const t={name:"Bada"},n=br.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe(e){const t={name:"Tizen"},n=br.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe(e){const t={name:"QupZilla"},n=br.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe(e){const t={name:"Firefox"},n=br.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe(e){const t={name:"Electron"},n=br.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe(e){const t={name:"Miui"},n=br.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe(e){const t={name:"Chromium"},n=br.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe(e){const t={name:"Chrome"},n=br.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe(e){const t={name:"Google Search"},n=br.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t={name:"Android Browser"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe(e){const t={name:"PlayStation 4"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe(e){const t={name:"Safari"},n=br.getFirstMatch(wr,e);return n&&(t.version=n),t}},{test:[/.*/i],describe(e){const t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:br.getFirstMatch(t,e),version:br.getSecondMatch(t,e)}}}];var Sr=[{test:[/Roku\/DVP/],describe(e){const t=br.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:vr.Roku,version:t}}},{test:[/windows phone/i],describe(e){const t=br.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:vr.WindowsPhone,version:t}}},{test:[/windows /i],describe(e){const t=br.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=br.getWindowsVersionName(t);return{name:vr.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe(e){const t={name:vr.iOS},n=br.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe(e){const t=br.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=br.getMacOSVersionName(t),r={name:vr.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe(e){const t=br.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:vr.iOS,version:t}}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t=br.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=br.getAndroidVersionName(t),r={name:vr.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe(e){const t=br.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:vr.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe(e){const t=br.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||br.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||br.getFirstMatch(/\bbb(\d+)/i,e);return{name:vr.BlackBerry,version:t}}},{test:[/bada/i],describe(e){const t=br.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:vr.Bada,version:t}}},{test:[/tizen/i],describe(e){const t=br.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:vr.Tizen,version:t}}},{test:[/linux/i],describe:()=>({name:vr.Linux})},{test:[/CrOS/],describe:()=>({name:vr.ChromeOS})},{test:[/PlayStation 4/],describe(e){const t=br.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:vr.PlayStation4,version:t}}}],_r=[{test:[/googlebot/i],describe:()=>({type:"bot",vendor:"Google"})},{test:[/huawei/i],describe(e){const t=br.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:gr.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:()=>({type:gr.tablet,vendor:"Nexus"})},{test:[/ipad/i],describe:()=>({type:gr.tablet,vendor:"Apple",model:"iPad"})},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:()=>({type:gr.tablet,vendor:"Apple",model:"iPad"})},{test:[/kftt build/i],describe:()=>({type:gr.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"})},{test:[/silk/i],describe:()=>({type:gr.tablet,vendor:"Amazon"})},{test:[/tablet(?! pc)/i],describe:()=>({type:gr.tablet})},{test(e){const t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe(e){const t=br.getFirstMatch(/(ipod|iphone)/i,e);return{type:gr.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:()=>({type:gr.mobile,vendor:"Nexus"})},{test:[/[^-]mobi/i],describe:()=>({type:gr.mobile})},{test:e=>"blackberry"===e.getBrowserName(!0),describe:()=>({type:gr.mobile,vendor:"BlackBerry"})},{test:e=>"bada"===e.getBrowserName(!0),describe:()=>({type:gr.mobile})},{test:e=>"windows phone"===e.getBrowserName(),describe:()=>({type:gr.mobile,vendor:"Microsoft"})},{test(e){const t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:()=>({type:gr.tablet})},{test:e=>"android"===e.getOSName(!0),describe:()=>({type:gr.mobile})},{test:e=>"macos"===e.getOSName(!0),describe:()=>({type:gr.desktop,vendor:"Apple"})},{test:e=>"windows"===e.getOSName(!0),describe:()=>({type:gr.desktop})},{test:e=>"linux"===e.getOSName(!0),describe:()=>({type:gr.desktop})},{test:e=>"playstation 4"===e.getOSName(!0),describe:()=>({type:gr.tv})},{test:e=>"roku"===e.getOSName(!0),describe:()=>({type:gr.tv})}],xr=[{test:e=>"microsoft edge"===e.getBrowserName(!0),describe(e){if(/\sedg\//i.test(e))return{name:yr.Blink};const t=br.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:yr.EdgeHTML,version:t}}},{test:[/trident/i],describe(e){const t={name:yr.Trident},n=br.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:e=>e.test(/presto/i),describe(e){const t={name:yr.Presto},n=br.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe(e){const t={name:yr.Gecko},n=br.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:()=>({name:yr.Blink})},{test:[/(apple)?webkit/i],describe(e){const t={name:yr.WebKit},n=br.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];class Cr{constructor(e,t=!1){if(null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}getUA(){return this._ua}test(e){return e.test(this._ua)}parseBrowser(){this.parsedResult.browser={};const e=br.find(kr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.browser=e.describe(this.getUA())),this.parsedResult.browser}getBrowser(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}getBrowserName(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""}getBrowserVersion(){return this.getBrowser().version}getOS(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}parseOS(){this.parsedResult.os={};const e=br.find(Sr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.os=e.describe(this.getUA())),this.parsedResult.os}getOSName(e){const{name:t}=this.getOS();return e?String(t).toLowerCase()||"":t||""}getOSVersion(){return this.getOS().version}getPlatform(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}getPlatformType(e=!1){const{type:t}=this.getPlatform();return e?String(t).toLowerCase()||"":t||""}parsePlatform(){this.parsedResult.platform={};const e=br.find(_r,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.platform=e.describe(this.getUA())),this.parsedResult.platform}getEngine(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}getEngineName(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""}parseEngine(){this.parsedResult.engine={};const e=br.find(xr,e=>{if("function"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error("Browser's test function is not valid")});return e&&(this.parsedResult.engine=e.describe(this.getUA())),this.parsedResult.engine}parse(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}getResult(){return br.assign({},this.parsedResult)}satisfies(e){const t={};let n=0;const r={};let i=0;if(Object.keys(e).forEach(a=>{const o=e[a];"string"==typeof o?(r[a]=o,i+=1):"object"==typeof o&&(t[a]=o,n+=1)}),n>0){const e=Object.keys(t),n=br.find(e,e=>this.isOS(e));if(n){const e=this.satisfies(t[n]);if(void 0!==e)return e}const r=br.find(e,e=>this.isPlatform(e));if(r){const e=this.satisfies(t[r]);if(void 0!==e)return e}}if(i>0){const e=Object.keys(r),t=br.find(e,e=>this.isBrowser(e,!0));if(void 0!==t)return this.compareVersion(r[t])}}isBrowser(e,t=!1){const n=this.getBrowserName().toLowerCase();let r=e.toLowerCase();const i=br.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n}compareVersion(e){let t=[0],n=e,r=!1;const i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(r=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(br.compareVersions(i,n,r))>-1}isOS(e){return this.getOSName(!0)===String(e).toLowerCase()}isPlatform(e){return this.getPlatformType(!0)===String(e).toLowerCase()}isEngine(e){return this.getEngineName(!0)===String(e).toLowerCase()}is(e,t=!1){return this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)}some(e=[]){return e.some(e=>this.is(e))}}
37
37
  /*!
38
38
  * Bowser - a browser detector
39
39
  * https://github.com/lancedikson/bowser
@@ -45,4 +45,4 @@ var Ct={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24
45
45
  * https://github.com/lancedikson/bowser
46
46
  * MIT License | (c) Dustin Diaz 2012-2015
47
47
  * MIT License | (c) Denis Demchenko 2015-2019
48
- */class Vu{static getParser(e,t=!1){if("string"!=typeof e)throw new Error("UserAgent should be a string");return new Uu(e,t)}static parse(e){return new Uu(e).getResult()}static get BROWSER_MAP(){return Ou}static get ENGINE_MAP(){return ju}static get OS_MAP(){return Lu}static get PLATFORMS_MAP(){return Nu}}function $u(e,t){return Object.keys(t).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})}),e}function Wu(e){return e&&e.__esModule?e.default:e}function qu(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var Hu={},Ju={};qu(Ju,"PipecatClient",()=>Ud);var Qu;Qu=JSON.parse('{"name":"@pipecat-ai/client-js","version":"1.5.0","license":"BSD-2-Clause","main":"dist/index.js","module":"dist/index.module.js","types":"dist/index.d.ts","source":"index.ts","repository":{"type":"git","url":"git+https://github.com/pipecat-ai/pipecat-client-web.git"},"files":["dist","package.json","README.md"],"scripts":{"build":"jest --silent --passWithNoTests && parcel build --no-cache","dev":"parcel watch","lint":"eslint . --report-unused-disable-directives --max-warnings 0","test":"jest"},"jest":{"preset":"ts-jest","testEnvironment":"jsdom"},"devDependencies":{"@jest/globals":"^29.7.0","@types/clone-deep":"^4.0.4","@types/jest":"^29.5.12","@types/uuid":"^10.0.0","eslint":"^9.11.1","eslint-config-prettier":"^9.1.0","eslint-plugin-simple-import-sort":"^12.1.1","jest":"^29.7.0","jest-environment-jsdom":"^30.0.2","ts-jest":"^29.2.5"},"dependencies":{"@types/events":"^3.0.3","bowser":"^2.11.0","clone-deep":"^4.0.1","events":"^3.3.0","typed-emitter":"^2.1.0","uuid":"^10.0.0"}}');var Gu,Yu,Ku={},Xu={};qu(Xu,"TransportStateEnum",()=>Gu),(Yu=Gu||(Gu={})).DISCONNECTED="disconnected",Yu.INITIALIZING="initializing",Yu.INITIALIZED="initialized",Yu.AUTHENTICATING="authenticating",Yu.AUTHENTICATED="authenticated",Yu.CONNECTING="connecting",Yu.CONNECTED="connected",Yu.READY="ready",Yu.DISCONNECTING="disconnecting",Yu.ERROR="error";var Zu={};qu(Zu,"RTVIError",()=>ed),qu(Zu,"ConnectionTimeoutError",()=>td),qu(Zu,"StartBotError",()=>nd),qu(Zu,"TransportStartError",()=>rd),qu(Zu,"InvalidTransportParamsError",()=>id),qu(Zu,"BotNotReadyError",()=>ad),qu(Zu,"BotAlreadyStartedError",()=>od),qu(Zu,"UnsupportedFeatureError",()=>sd),qu(Zu,"DeviceError",()=>ld);class ed extends Error{constructor(e,t){super(e),this.status=t}}class td extends ed{constructor(e){super(null!=e?e:"Bot did not enter ready state within the specified timeout period.")}}class nd extends ed{constructor(e,t){super(null!=e?e:"Failed to connect / invalid auth bundle from base url",null!=t?t:500),this.error="invalid-request-error"}}class rd extends ed{constructor(e){super(null!=e?e:"Unable to connect to transport")}}class id extends ed{constructor(e){super(null!=e?e:"Invalid transport connection parameters")}}class ad extends ed{constructor(e){super(null!=e?e:"Attempt to call action on transport when not in 'ready' state.")}}class od extends ed{constructor(e){super(null!=e?e:"Pipecat client has already been started. Please call disconnect() before starting again.")}}class sd extends ed{constructor(e,t,n){let r=`${e} not supported${n?`: ${n}`:""}`;t&&(r=`${t} does not support ${e}${n?`: ${n}`:""}`),super(r),this.feature=e}}class ld extends ed{constructor(e,t,n,r){super(null!=n?n:`Device error for ${e.join(", ")}: ${t}`),this.devices=e,this.type=t,this.details=r}}var cd,ud,dd={};qu(dd,"RTVIEvent",()=>cd),(ud=cd||(cd={})).Connected="connected",ud.Disconnected="disconnected",ud.TransportStateChanged="transportStateChanged",ud.BotStarted="botStarted",ud.BotConnected="botConnected",ud.BotReady="botReady",ud.BotDisconnected="botDisconnected",ud.Error="error",ud.ServerMessage="serverMessage",ud.ServerResponse="serverResponse",ud.MessageError="messageError",ud.Metrics="metrics",ud.BotStartedSpeaking="botStartedSpeaking",ud.BotStoppedSpeaking="botStoppedSpeaking",ud.UserStartedSpeaking="userStartedSpeaking",ud.UserStoppedSpeaking="userStoppedSpeaking",ud.UserTranscript="userTranscript",ud.BotOutput="botOutput",ud.BotTranscript="botTranscript",ud.BotLlmText="botLlmText",ud.BotLlmStarted="botLlmStarted",ud.BotLlmStopped="botLlmStopped",ud.LLMFunctionCall="llmFunctionCall",ud.BotLlmSearchResponse="botLlmSearchResponse",ud.BotTtsText="botTtsText",ud.BotTtsStarted="botTtsStarted",ud.BotTtsStopped="botTtsStopped",ud.ParticipantConnected="participantConnected",ud.ParticipantLeft="participantLeft",ud.TrackStarted="trackStarted",ud.TrackStopped="trackStopped",ud.ScreenTrackStarted="screenTrackStarted",ud.ScreenTrackStopped="screenTrackStopped",ud.ScreenShareError="screenShareError",ud.LocalAudioLevel="localAudioLevel",ud.RemoteAudioLevel="remoteAudioLevel",ud.AvailableCamsUpdated="availableCamsUpdated",ud.AvailableMicsUpdated="availableMicsUpdated",ud.AvailableSpeakersUpdated="availableSpeakersUpdated",ud.CamUpdated="camUpdated",ud.MicUpdated="micUpdated",ud.SpeakerUpdated="speakerUpdated",ud.DeviceError="deviceError";var fd={};qu(fd,"RTVI_PROTOCOL_VERSION",()=>pd),qu(fd,"RTVI_MESSAGE_LABEL",()=>hd),qu(fd,"RTVIMessageType",()=>md),qu(fd,"AggregationType",()=>vd),qu(fd,"setAboutClient",()=>wd),qu(fd,"RTVIMessage",()=>kd);const pd="1.0.0",hd="rtvi-ai";var md,gd,vd,yd;let bd;function wd(e){bd=bd?l(l({},bd),e):e}(gd=md||(md={})).CLIENT_READY="client-ready",gd.DISCONNECT_BOT="disconnect-bot",gd.CLIENT_MESSAGE="client-message",gd.SEND_TEXT="send-text",gd.APPEND_TO_CONTEXT="append-to-context",gd.BOT_READY="bot-ready",gd.ERROR="error",gd.METRICS="metrics",gd.SERVER_MESSAGE="server-message",gd.SERVER_RESPONSE="server-response",gd.ERROR_RESPONSE="error-response",gd.APPEND_TO_CONTEXT_RESULT="append-to-context-result",gd.USER_TRANSCRIPTION="user-transcription",gd.BOT_OUTPUT="bot-output",gd.BOT_TRANSCRIPTION="bot-transcription",gd.USER_STARTED_SPEAKING="user-started-speaking",gd.USER_STOPPED_SPEAKING="user-stopped-speaking",gd.BOT_STARTED_SPEAKING="bot-started-speaking",gd.BOT_STOPPED_SPEAKING="bot-stopped-speaking",gd.USER_LLM_TEXT="user-llm-text",gd.BOT_LLM_TEXT="bot-llm-text",gd.BOT_LLM_STARTED="bot-llm-started",gd.BOT_LLM_STOPPED="bot-llm-stopped",gd.LLM_FUNCTION_CALL="llm-function-call",gd.LLM_FUNCTION_CALL_RESULT="llm-function-call-result",gd.BOT_LLM_SEARCH_RESPONSE="bot-llm-search-response",gd.BOT_TTS_TEXT="bot-tts-text",gd.BOT_TTS_STARTED="bot-tts-started",gd.BOT_TTS_STOPPED="bot-tts-stopped",(yd=vd||(vd={})).WORD="word",yd.SENTENCE="sentence";class kd{constructor(e,t,n){this.label=hd,this.type=e,this.data=t,this.id=n||Pu().slice(0,8)}static clientReady(){return new kd(md.CLIENT_READY,{version:pd,about:bd||{library:Qu.name,library_version:Qu.version}})}static disconnectBot(){return new kd(md.DISCONNECT_BOT,{})}static error(e,t=!1){return new kd(md.ERROR,{message:e,fatal:t})}}function Sd(e,t,n){const r=n.value;return n.value=function(...e){if("ready"===this.state)return r.apply(this,e);throw new ad(`Attempt to call ${t.toString()} when transport not in ready state. Await connect() first.`)},n}function _d(e,t,n){const r=n.value,i=["authenticating","connecting","connected","ready"];return n.value=function(...e){if(i.includes(this.state))throw new od(`Attempt to call ${t.toString()} when client already started. Please call disconnect() before starting again.`);return r.apply(this,e)},n}$u(Ku,Xu),$u(Ku,Zu),$u(Ku,dd),$u(Ku,fd);var xd={};qu(xd,"MessageDispatcher",()=>Ad);var Cd,Ed,Td={};qu(Td,"LogLevel",()=>Cd),qu(Td,"logger",()=>Pd),(Ed=Cd||(Cd={}))[Ed.NONE=0]="NONE",Ed[Ed.ERROR=1]="ERROR",Ed[Ed.WARN=2]="WARN",Ed[Ed.INFO=3]="INFO",Ed[Ed.DEBUG=4]="DEBUG";class Md{constructor(){this.level=Cd.DEBUG}static getInstance(){return Md.instance||(Md.instance=new Md),Md.instance}setLevel(e){this.level=e}debug(...e){this.level>=Cd.DEBUG&&console.debug(...e)}info(...e){this.level>=Cd.INFO&&console.info(...e)}warn(...e){this.level>=Cd.WARN&&console.warn(...e)}error(...e){this.level>=Cd.ERROR&&console.error(...e)}}const Pd=Md.getInstance();class Ad{constructor(e){this._queue=new Array,this._gcInterval=void 0,this._queue=[],this._sendMethod=e}disconnect(){this.clearQueue(),clearInterval(this._gcInterval),this._gcInterval=void 0}dispatch(e,t=md.CLIENT_MESSAGE,n=1e4){this._gcInterval||(this._gcInterval=setInterval(()=>{this._gc()},2e3));const r=new kd(t,e),i=new Promise((e,t)=>{this._queue.push({message:r,timestamp:Date.now(),timeout:n,resolve:e,reject:t})});Pd.debug("[MessageDispatcher] dispatch",r);try{this._sendMethod(r)}catch(sr){return Pd.error("[MessageDispatcher] Error sending message",sr),Promise.reject(sr)}return this._gc(),i}clearQueue(){this._queue=[]}_resolveReject(e,t=!0){const n=this._queue.find(t=>t.message.id===e.id);return n&&(t?(Pd.debug("[MessageDispatcher] Resolve",e),n.resolve(e)):(Pd.debug("[MessageDispatcher] Reject",e),n.reject(e)),this._queue=this._queue.filter(t=>t.message.id!==e.id),Pd.debug("[MessageDispatcher] Queue",this._queue)),e}resolve(e){return this._resolveReject(e,!0)}reject(e){return this._resolveReject(e,!1)}_gc(){const e=[];this._queue=this._queue.filter(t=>{const n=Date.now()-t.timestamp<t.timeout;return n||e.push(t),n}),e.forEach(e=>{e.message.type===md.CLIENT_MESSAGE&&e.reject(new kd(md.ERROR_RESPONSE,{error:"Timed out waiting for response",msgType:e.message.data.t,data:e.message.data.d,fatal:!1}))}),Pd.debug("[MessageDispatcher] GC",this._queue)}}var Od={};function Nd(e){if("object"==typeof e&&null!==e&&Object.keys(e).includes("endpoint")){const t=e.endpoint;return"string"==typeof t||t instanceof URL||"undefined"!=typeof Request&&t instanceof Request}return!1}function Ld(e,t){return d(this,null,function*(){let n;return t||(t=new AbortController),new Promise((r,i)=>{d(null,null,function*(){var a;e.timeout&&(n=setTimeout(()=>d(null,null,function*(){t.abort(),i(new Error("Timed out"))}),e.timeout)),Pd.debug(`[Pipecat Client] Fetching from ${e.endpoint}`),fetch(e.endpoint,{method:"POST",mode:"cors",headers:new Headers(l({"Content-Type":"application/json"},Object.fromEntries((null!=(a=e.headers)?a:new Headers).entries()))),body:JSON.stringify(e.requestData),signal:null==t?void 0:t.signal}).then(t=>{Pd.debug(`[Pipecat Client] Received response from ${e.endpoint}`,t),t.ok||i(t),t.json().then(e=>r(e))}).catch(e=>{Pd.error(`[Pipecat Client] Error fetching: ${e}`),i(e)}).finally(()=>{n&&clearTimeout(n)})})})})}qu(Od,"isAPIRequest",()=>Nd),qu(Od,"makeRequest",()=>Ld);var jd={};qu(jd,"Transport",()=>Id),qu(jd,"TransportWrapper",()=>Fd);class Id{constructor(){this._state="disconnected"}connect(e){this._abortController=new AbortController;let t=e;try{t=this._validateConnectionParams(e)}catch(sr){throw new ed(`Invalid connection params: ${sr.message}. Please check your connection params and try again.`)}return this._connect(t)}get startBotParams(){return this._startBotParams}set startBotParams(e){this._startBotParams=e}disconnect(){return this._abortController&&this._abortController.abort(),this._disconnect()}}class Fd{constructor(e){this._transport=e,this._proxy=new Proxy(this._transport,{get:(e,t,n)=>{if("function"==typeof e[t]){let n;switch(String(t)){case"initialize":n="Direct calls to initialize() are disabled and used internally by the PipecatClient.";break;case"initDevices":n="Direct calls to initDevices() are disabled. Please use the PipecatClient.initDevices() wrapper or let PipecatClient.connect() call it for you.";break;case"sendReadyMessage":n="Direct calls to sendReadyMessage() are disabled and used internally by the PipecatClient.";break;case"connect":n="Direct calls to connect() are disabled. Please use the PipecatClient.connect() wrapper.";break;case"disconnect":n="Direct calls to disconnect() are disabled. Please use the PipecatClient.disconnect() wrapper."}return n?()=>{throw new Error(n)}:(...n)=>e[t](...n)}return Reflect.get(e,t,n)}})}get proxy(){return this._proxy}}var Rd={};function Dd(){var e,t,n,r,i,a;let o={library:Qu.name,library_version:Qu.version,platform_details:{}},s=null;if(null==(e=null==window?void 0:window.navigator)?void 0:e.userAgent)try{s=Vu.parse(window.navigator.userAgent)}catch(l){}return(null==(t=null==s?void 0:s.browser)?void 0:t.name)&&(o.platform_details.browser=s.browser.name),"Safari"!==(null==(n=null==s?void 0:s.browser)?void 0:n.name)||s.browser.version?(null==(r=null==s?void 0:s.browser)?void 0:r.version)&&(o.platform_details.browser_version=s.browser.version):o.platform_details.browser_version="Web View",(null==(i=null==s?void 0:s.platform)?void 0:i.type)&&(o.platform_details.platform_type=s.platform.type),(null==(a=null==s?void 0:s.engine)?void 0:a.name)&&(o.platform_details.engine=s.engine.name),(null==s?void 0:s.os)&&(o.platform=s.os.name,o.platform_version=s.os.version),o}qu(Rd,"learnAboutClient",()=>Dd);var Bd=function(e,t,n,r){var i,a=arguments.length,o=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o};class zd extends Su{}class Ud extends zd{constructor(e){var t,n,r;super(),this._functionCallCallbacks={},this._botTranscriptionWarned=!1,wd(Dd()),this._transport=e.transport,this._transportWrapper=new Fd(this._transport);const i=c(l({},e.callbacks),{onMessageError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onMessageError)||r.call(n,t),this.emit(cd.MessageError,t)},onError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onError)||r.call(n,t);try{this.emit(cd.Error,t)}catch(sr){Pd.debug("Could not emit error",t)}const i=t.data;(null==i?void 0:i.fatal)&&(Pd.error("Fatal error reported. Disconnecting..."),this.disconnect())},onConnected:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onConnected)||n.call(t),this.emit(cd.Connected)},onDisconnected:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onDisconnected)||n.call(t),this.emit(cd.Disconnected)},onTransportStateChanged:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onTransportStateChanged)||r.call(n,t),this.emit(cd.TransportStateChanged,t)},onParticipantJoined:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onParticipantJoined)||r.call(n,t),this.emit(cd.ParticipantConnected,t)},onParticipantLeft:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onParticipantLeft)||r.call(n,t),this.emit(cd.ParticipantLeft,t)},onTrackStarted:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onTrackStarted)||i.call(r,t,n),this.emit(cd.TrackStarted,t,n)},onTrackStopped:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onTrackStopped)||i.call(r,t,n),this.emit(cd.TrackStopped,t,n)},onScreenTrackStarted:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onScreenTrackStarted)||i.call(r,t,n),this.emit(cd.ScreenTrackStarted,t,n)},onScreenTrackStopped:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onScreenTrackStopped)||i.call(r,t,n),this.emit(cd.ScreenTrackStopped,t,n)},onScreenShareError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onScreenShareError)||r.call(n,t),this.emit(cd.ScreenShareError,t)},onAvailableCamsUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableCamsUpdated)||r.call(n,t),this.emit(cd.AvailableCamsUpdated,t)},onAvailableMicsUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableMicsUpdated)||r.call(n,t),this.emit(cd.AvailableMicsUpdated,t)},onAvailableSpeakersUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableSpeakersUpdated)||r.call(n,t),this.emit(cd.AvailableSpeakersUpdated,t)},onCamUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onCamUpdated)||r.call(n,t),this.emit(cd.CamUpdated,t)},onMicUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onMicUpdated)||r.call(n,t),this.emit(cd.MicUpdated,t)},onSpeakerUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onSpeakerUpdated)||r.call(n,t),this.emit(cd.SpeakerUpdated,t)},onDeviceError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onDeviceError)||r.call(n,t),this.emit(cd.DeviceError,t)},onBotStarted:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotStarted)||r.call(n,t),this.emit(cd.BotStarted,t)},onBotConnected:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotConnected)||r.call(n,t),this.emit(cd.BotConnected,t)},onBotReady:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotReady)||r.call(n,t),this.emit(cd.BotReady,t)},onBotDisconnected:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotDisconnected)||r.call(n,t),this.emit(cd.BotDisconnected,t)},onBotStartedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotStartedSpeaking)||n.call(t),this.emit(cd.BotStartedSpeaking)},onBotStoppedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotStoppedSpeaking)||n.call(t),this.emit(cd.BotStoppedSpeaking)},onRemoteAudioLevel:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onRemoteAudioLevel)||i.call(r,t,n),this.emit(cd.RemoteAudioLevel,t,n)},onUserStartedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onUserStartedSpeaking)||n.call(t),this.emit(cd.UserStartedSpeaking)},onUserStoppedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onUserStoppedSpeaking)||n.call(t),this.emit(cd.UserStoppedSpeaking)},onLocalAudioLevel:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onLocalAudioLevel)||r.call(n,t),this.emit(cd.LocalAudioLevel,t)},onUserTranscript:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onUserTranscript)||r.call(n,t),this.emit(cd.UserTranscript,t)},onBotOutput:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotOutput)||r.call(n,t),this.emit(cd.BotOutput,t)},onBotTranscript:t=>{var n,r;this._botTranscriptionWarned||(Pd.warn("[Pipecat Client] Bot transcription is deprecated. Please use the onBotOutput instead."),this._botTranscriptionWarned=!0),null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotTranscript)||r.call(n,t),this.emit(cd.BotTranscript,t)},onBotLlmText:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotLlmText)||r.call(n,t),this.emit(cd.BotLlmText,t)},onBotLlmStarted:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotLlmStarted)||n.call(t),this.emit(cd.BotLlmStarted)},onBotLlmStopped:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotLlmStopped)||n.call(t),this.emit(cd.BotLlmStopped)},onBotTtsText:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotTtsText)||r.call(n,t),this.emit(cd.BotTtsText,t)},onBotTtsStarted:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotTtsStarted)||n.call(t),this.emit(cd.BotTtsStarted)},onBotTtsStopped:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotTtsStopped)||n.call(t),this.emit(cd.BotTtsStopped)}});this._options=c(l({},e),{callbacks:i,enableMic:null==(t=e.enableMic)||t,enableCam:null!=(n=e.enableCam)&&n,enableScreenShare:null!=(r=e.enableScreenShare)&&r}),this._initialize(),Pd.debug("[Pipecat Client] Initialized",this.version)}setLogLevel(e){Pd.setLevel(e)}initDevices(){return d(this,null,function*(){Pd.debug("[Pipecat Client] Initializing devices..."),yield this._transport.initDevices()})}startBot(e){return d(this,null,function*(){var t,n,r,i,a,o;let s;this._transport.state="authenticating",this._transport.startBotParams=e,this._abortController=new AbortController;try{s=yield Ld(e,this._abortController)}catch(sr){let a,o="An unknown error occurred while starting the bot.";if(sr instanceof Response){const r=yield sr.json();o=null!=(n=null!=(t=r.info)?t:r.detail)?n:sr.statusText,a=sr.status}else sr instanceof Error&&(o=sr.message);throw null==(i=null==(r=this._options.callbacks)?void 0:r.onError)||i.call(r,new kd(md.ERROR_RESPONSE,{message:o,fatal:!0})),new nd(o,a)}return this._transport.state="authenticated",null==(o=null==(a=this._options.callbacks)?void 0:a.onBotStarted)||o.call(a,s),s})}connect(e){return d(this,null,function*(){return e&&Nd(e)?(Pd.warn("Calling connect with an API endpoint is deprecated. Use startBotAndConnect() instead."),this.startBotAndConnect(e)):new Promise((t,n)=>{(()=>{d(this,null,function*(){this._connectResolve=t,"disconnected"===this._transport.state&&(yield this._transport.initDevices());try{yield this._transport.connect(e),yield this._transport.sendReadyMessage()}catch(sr){return this.disconnect(),void n(sr)}})})()})})}startBotAndConnect(e){return d(this,null,function*(){"disconnected"===this._transport.state&&(yield this._transport.initDevices());const t=yield this.startBot(e);return this.connect(t)})}disconnect(){return d(this,null,function*(){yield this._transport.disconnect(),this._messageDispatcher.disconnect()})}_initialize(){this._transport.initialize(this._options,this.handleMessage.bind(this)),this._messageDispatcher=new Ad(this._transport.sendMessage.bind(this._transport))}get connected(){return["connected","ready"].includes(this._transport.state)}get transport(){return this._transportWrapper.proxy}get state(){return this._transport.state}get version(){return Wu(Qu).version}getAllMics(){return d(this,null,function*(){return yield this._transport.getAllMics()})}getAllCams(){return d(this,null,function*(){return yield this._transport.getAllCams()})}getAllSpeakers(){return d(this,null,function*(){return yield this._transport.getAllSpeakers()})}get selectedMic(){return this._transport.selectedMic}get selectedCam(){return this._transport.selectedCam}get selectedSpeaker(){return this._transport.selectedSpeaker}updateMic(e){this._transport.updateMic(e)}updateCam(e){this._transport.updateCam(e)}updateSpeaker(e){this._transport.updateSpeaker(e)}enableMic(e){this._transport.enableMic(e)}get isMicEnabled(){return this._transport.isMicEnabled}enableCam(e){this._transport.enableCam(e)}get isCamEnabled(){return this._transport.isCamEnabled}tracks(){return this._transport.tracks()}enableScreenShare(e){return this._transport.enableScreenShare(e)}get isSharingScreen(){return this._transport.isSharingScreen}sendClientMessage(e,t){this._transport.sendMessage(new kd(md.CLIENT_MESSAGE,{t:e,d:t}))}sendClientRequest(e,t,n){return d(this,null,function*(){const r={t:e,d:t};return(yield this._messageDispatcher.dispatch(r,md.CLIENT_MESSAGE,n)).data.d})}registerFunctionCallHandler(e,t){this._functionCallCallbacks[e]=t}unregisterFunctionCallHandler(e){delete this._functionCallCallbacks[e]}unregisterAllFunctionCallHandlers(){this._functionCallCallbacks={}}appendToContext(e){return d(this,null,function*(){return Pd.warn("appendToContext() is deprecated. Use sendText() instead."),yield this._transport.sendMessage(new kd(md.APPEND_TO_CONTEXT,{role:e.role,content:e.content,run_immediately:e.run_immediately})),!0})}sendText(e){return d(this,arguments,function*(e,t={}){yield this._transport.sendMessage(new kd(md.SEND_TEXT,{content:e,options:t}))})}disconnectBot(){this._transport.sendMessage(new kd(md.DISCONNECT_BOT,{}))}handleMessage(e){var t,n,r,i,a,o,s,l,c,u,d,f,p,h,m,g,v,y,b,w,k,S,_,x,C,E,T,M,P,A,O,N,L,j,I,F,R,D,B,z,U;switch(Pd.debug("[RTVI Message]",e),e.type){case md.BOT_READY:{const i=e.data,a=i.version?i.version.split(".").map(Number):[0,0,0];Pd.debug(`[Pipecat Client] Bot is ready. Version: ${i.version}`),a[0]<1&&Pd.warn("[Pipecat Client] Bot version is less than 1.0.0, which may not be compatible with this client."),null==(t=this._connectResolve)||t.call(this,e.data),null==(r=null==(n=this._options.callbacks)?void 0:n.onBotReady)||r.call(n,e.data);break}case md.ERROR:null==(a=null==(i=this._options.callbacks)?void 0:i.onError)||a.call(i,e);break;case md.SERVER_RESPONSE:this._messageDispatcher.resolve(e);break;case md.ERROR_RESPONSE:{const t=this._messageDispatcher.reject(e);null==(s=null==(o=this._options.callbacks)?void 0:o.onMessageError)||s.call(o,t);break}case md.USER_STARTED_SPEAKING:null==(c=null==(l=this._options.callbacks)?void 0:l.onUserStartedSpeaking)||c.call(l);break;case md.USER_STOPPED_SPEAKING:null==(d=null==(u=this._options.callbacks)?void 0:u.onUserStoppedSpeaking)||d.call(u);break;case md.BOT_STARTED_SPEAKING:null==(p=null==(f=this._options.callbacks)?void 0:f.onBotStartedSpeaking)||p.call(f);break;case md.BOT_STOPPED_SPEAKING:null==(m=null==(h=this._options.callbacks)?void 0:h.onBotStoppedSpeaking)||m.call(h);break;case md.USER_TRANSCRIPTION:{const t=e.data;null==(v=null==(g=this._options.callbacks)?void 0:g.onUserTranscript)||v.call(g,t);break}case md.BOT_OUTPUT:null==(b=null==(y=this._options.callbacks)?void 0:y.onBotOutput)||b.call(y,e.data);break;case md.BOT_TRANSCRIPTION:null==(k=null==(w=this._options.callbacks)?void 0:w.onBotTranscript)||k.call(w,e.data);break;case md.BOT_LLM_TEXT:null==(_=null==(S=this._options.callbacks)?void 0:S.onBotLlmText)||_.call(S,e.data);break;case md.BOT_LLM_STARTED:null==(C=null==(x=this._options.callbacks)?void 0:x.onBotLlmStarted)||C.call(x);break;case md.BOT_LLM_STOPPED:null==(T=null==(E=this._options.callbacks)?void 0:E.onBotLlmStopped)||T.call(E);break;case md.BOT_TTS_TEXT:null==(P=null==(M=this._options.callbacks)?void 0:M.onBotTtsText)||P.call(M,e.data);break;case md.BOT_TTS_STARTED:null==(O=null==(A=this._options.callbacks)?void 0:A.onBotTtsStarted)||O.call(A);break;case md.BOT_TTS_STOPPED:null==(L=null==(N=this._options.callbacks)?void 0:N.onBotTtsStopped)||L.call(N);break;case md.METRICS:null==(I=null==(j=this._options.callbacks)?void 0:j.onMetrics)||I.call(j,e.data),this.emit(cd.Metrics,e.data);break;case md.SERVER_MESSAGE:null==(R=null==(F=this._options.callbacks)?void 0:F.onServerMessage)||R.call(F,e.data),this.emit(cd.ServerMessage,e.data);break;case md.LLM_FUNCTION_CALL:{const t=e.data,n=this._functionCallCallbacks[t.function_name];if(n){n({functionName:t.function_name,arguments:t.args}).then(e=>{null!=e&&this._transport.sendMessage(new kd(md.LLM_FUNCTION_CALL_RESULT,{function_name:t.function_name,tool_call_id:t.tool_call_id,arguments:t.args,result:e}))})}null==(B=null==(D=this._options.callbacks)?void 0:D.onLLMFunctionCall)||B.call(D,t),this.emit(cd.LLMFunctionCall,t);break}case md.BOT_LLM_SEARCH_RESPONSE:{const t=e.data;null==(U=null==(z=this._options.callbacks)?void 0:z.onBotLlmSearchResponse)||U.call(z,t),this.emit(cd.BotLlmSearchResponse,t);break}default:Pd.debug("[Pipecat Client] Unrecognized message type",e.type)}}}function Vd(e){return e&&e.__esModule?e.default:e}function $d(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}Bd([_d],Ud.prototype,"startBot",null),Bd([_d],Ud.prototype,"connect",null),Bd([_d],Ud.prototype,"startBotAndConnect",null),Bd([Sd],Ud.prototype,"sendClientMessage",null),Bd([Sd],Ud.prototype,"sendClientRequest",null),Bd([Sd],Ud.prototype,"appendToContext",null),Bd([Sd],Ud.prototype,"sendText",null),Bd([Sd],Ud.prototype,"disconnectBot",null),$u(Hu,Ju),$u(Hu,xd),$u(Hu,Td),$u(Hu,Od),$u(Hu,jd),$u(Hu,Rd);var Wd={};$d(Wd,"DailyRTVIMessageType",()=>sf),$d(Wd,"DailyTransport",()=>uf);class qd{static floatTo16BitPCM(e){const t=new ArrayBuffer(2*e.length),n=new DataView(t);let r=0;for(let i=0;i<e.length;i++,r+=2){let t=Math.max(-1,Math.min(1,e[i]));n.setInt16(r,t<0?32768*t:32767*t,!0)}return t}static mergeBuffers(e,t){const n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer}_packData(e,t){return[new Uint8Array([t,t>>8]),new Uint8Array([t,t>>8,t>>16,t>>24])][e]}pack(e,t){if(!(null==t?void 0:t.bitsPerSample))throw new Error('Missing "bitsPerSample"');if(!(null==t?void 0:t.channels))throw new Error('Missing "channels"');if(!(null==t?void 0:t.data))throw new Error('Missing "data"');const{bitsPerSample:n,channels:r,data:i}=t,a=["RIFF",this._packData(1,52),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,r.length),this._packData(1,e),this._packData(1,e*r.length*n/8),this._packData(0,r.length*n/8),this._packData(0,n),"data",this._packData(1,r[0].length*r.length*n/8),i],o=new Blob(a,{type:"audio/mpeg"});return{blob:o,url:URL.createObjectURL(o),channelCount:r.length,sampleRate:e,duration:i.byteLength/(r.length*e*2)}}}globalThis.WavPacker=qd;const Hd=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],Jd=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Qd=[],Gd=[];for(let Sf=1;Sf<=8;Sf++)for(let e=0;e<Hd.length;e++){const t=Hd[e];Qd.push(t/Math.pow(2,8-Sf)),Gd.push(Jd[e]+Sf)}const Yd=[32,2e3],Kd=Qd.filter((e,t)=>Qd[t]>Yd[0]&&Qd[t]<Yd[1]),Xd=Gd.filter((e,t)=>Qd[t]>Yd[0]&&Qd[t]<Yd[1]);class Zd{static getFrequencies(e,t,n,r="frequency",i=-100,a=-30){n||(n=new Float32Array(e.frequencyBinCount),e.getFloatFrequencyData(n));const o=t/2,s=1/n.length*o;let l,c,u;if("music"===r||"voice"===r){const e="voice"===r?Kd:Qd,t=Array(e.length).fill(i);for(let r=0;r<n.length;r++){const i=r*s,a=n[r];for(let n=e.length-1;n>=0;n--)if(i>e[n]){t[n]=Math.max(t[n],a);break}}l=t,c="voice"===r?Kd:Qd,u="voice"===r?Xd:Gd}else l=Array.from(n),c=l.map((e,t)=>s*t),u=c.map(e=>`${e.toFixed(2)} Hz`);const d=l.map(e=>Math.max(0,Math.min((e-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:c,labels:u}}constructor(e,t=null){if(this.fftResults=[],t){const{length:n,sampleRate:r}=t,i=new OfflineAudioContext({length:n,sampleRate:r}),a=i.createBufferSource();a.buffer=t;const o=i.createAnalyser();o.fftSize=8192,o.smoothingTimeConstant=.1,a.connect(o);const s=1/60,l=n/r,c=e=>{const t=s*e;t<l&&i.suspend(t).then(()=>{const t=new Float32Array(o.frequencyBinCount);o.getFloatFrequencyData(t),this.fftResults.push(t),c(e+1)}),1===e?i.startRendering():i.resume()};a.start(0),c(1),this.audio=e,this.context=i,this.analyser=o,this.sampleRate=r,this.audioBuffer=t}else{const t=new AudioContext,n=t.createMediaElementSource(e),r=t.createAnalyser();r.fftSize=8192,r.smoothingTimeConstant=.1,n.connect(r),r.connect(t.destination),this.audio=e,this.context=t,this.analyser=r,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(e="frequency",t=-100,n=-30){let r=null;if(this.audioBuffer&&this.fftResults.length){const e=this.audio.currentTime/this.audio.duration,t=Math.min(e*this.fftResults.length|0,this.fftResults.length-1);r=this.fftResults[t]}return Zd.getFrequencies(this.analyser,this.sampleRate,r,e,t,n)}resumeIfSuspended(){return d(this,null,function*(){return"suspended"===this.context.state&&(yield this.context.resume()),!0})}}globalThis.AudioAnalysis=Zd;const ef=new Blob(["\nclass StreamProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.hasStarted = false;\n this.hasInterrupted = false;\n this.outputBuffers = [];\n this.bufferLength = 128;\n this.write = { buffer: new Float32Array(this.bufferLength), trackId: null };\n this.writeOffset = 0;\n this.trackSampleOffsets = {};\n this.port.onmessage = (event) => {\n if (event.data) {\n const payload = event.data;\n if (payload.event === 'write') {\n const int16Array = payload.buffer;\n const float32Array = new Float32Array(int16Array.length);\n for (let i = 0; i < int16Array.length; i++) {\n float32Array[i] = int16Array[i] / 0x8000; // Convert Int16 to Float32\n }\n this.writeData(float32Array, payload.trackId);\n } else if (\n payload.event === 'offset' ||\n payload.event === 'interrupt'\n ) {\n const requestId = payload.requestId;\n const trackId = this.write.trackId;\n const offset = this.trackSampleOffsets[trackId] || 0;\n this.port.postMessage({\n event: 'offset',\n requestId,\n trackId,\n offset,\n });\n if (payload.event === 'interrupt') {\n this.hasInterrupted = true;\n }\n } else {\n throw new Error(`Unhandled event \"${payload.event}\"`);\n }\n }\n };\n }\n\n writeData(float32Array, trackId = null) {\n let { buffer } = this.write;\n let offset = this.writeOffset;\n for (let i = 0; i < float32Array.length; i++) {\n buffer[offset++] = float32Array[i];\n if (offset >= buffer.length) {\n this.outputBuffers.push(this.write);\n this.write = { buffer: new Float32Array(this.bufferLength), trackId };\n buffer = this.write.buffer;\n offset = 0;\n }\n }\n this.writeOffset = offset;\n return true;\n }\n\n process(inputs, outputs, parameters) {\n const output = outputs[0];\n const outputChannelData = output[0];\n const outputBuffers = this.outputBuffers;\n if (this.hasInterrupted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else if (outputBuffers.length) {\n this.hasStarted = true;\n const { buffer, trackId } = outputBuffers.shift();\n for (let i = 0; i < outputChannelData.length; i++) {\n outputChannelData[i] = buffer[i] || 0;\n }\n if (trackId) {\n this.trackSampleOffsets[trackId] =\n this.trackSampleOffsets[trackId] || 0;\n this.trackSampleOffsets[trackId] += buffer.length;\n }\n return true;\n } else if (this.hasStarted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else {\n return true;\n }\n }\n}\n\nregisterProcessor('stream_processor', StreamProcessor);\n"],{type:"application/javascript"}),tf=URL.createObjectURL(ef);globalThis.WavStreamPlayer=class{constructor({sampleRate:e=44100}={}){this.scriptSrc=tf,this.sampleRate=e,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}connect(){return d(this,null,function*(){this.context=new AudioContext({sampleRate:this.sampleRate}),this._speakerID&&this.context.setSinkId(this._speakerID),"suspended"===this.context.state&&(yield this.context.resume());try{yield this.context.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const e=this.context.createAnalyser();return e.fftSize=8192,e.smoothingTimeConstant=.1,this.analyser=e,!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}updateSpeaker(e){return d(this,null,function*(){const t=this._speakerID;if(this._speakerID=e,this.context)try{"default"===e?yield this.context.setSinkId():yield this.context.setSinkId(e)}catch(sr){console.error(`Could not set sinkId to ${e}: ${sr}`),this._speakerID=t}})}_start(){const e=new AudioWorkletNode(this.context,"stream_processor");return e.connect(this.context.destination),e.port.onmessage=t=>{const{event:n}=t.data;if("stop"===n)e.disconnect(),this.stream=null;else if("offset"===n){const{requestId:e,trackId:n,offset:r}=t.data,i=r/this.sampleRate;this.trackSampleOffsets[e]={trackId:n,offset:r,currentTime:i}}},this.analyser.disconnect(),e.connect(this.analyser),this.stream=e,!0}add16BitPCM(e,t="default"){if("string"!=typeof t)throw new Error("trackId must be a string");if(this.interruptedTrackIds[t])return;let n;if(this.stream||this._start(),e instanceof Int16Array)n=e;else{if(!(e instanceof ArrayBuffer))throw new Error("argument must be Int16Array or ArrayBuffer");n=new Int16Array(e)}return this.stream.port.postMessage({event:"write",buffer:n,trackId:t}),n}getTrackSampleOffset(e=!1){return d(this,null,function*(){if(!this.stream)return null;const t=crypto.randomUUID();let n;for(this.stream.port.postMessage({event:e?"interrupt":"offset",requestId:t});!n;)n=this.trackSampleOffsets[t],yield new Promise(e=>setTimeout(()=>e(),1));const{trackId:r}=n;return e&&r&&(this.interruptedTrackIds[r]=!0),n})}interrupt(){return d(this,null,function*(){return this.getTrackSampleOffset(!0)})}};const nf=new Blob(["\nclass AudioProcessor extends AudioWorkletProcessor {\n\n constructor() {\n super();\n this.port.onmessage = this.receive.bind(this);\n this.initialize();\n }\n\n initialize() {\n this.foundAudio = false;\n this.recording = false;\n this.chunks = [];\n }\n\n /**\n * Concatenates sampled chunks into channels\n * Format is chunk[Left[], Right[]]\n */\n readChannelData(chunks, channel = -1, maxChannels = 9) {\n let channelLimit;\n if (channel !== -1) {\n if (chunks[0] && chunks[0].length - 1 < channel) {\n throw new Error(\n `Channel ${channel} out of range: max ${chunks[0].length}`\n );\n }\n channelLimit = channel + 1;\n } else {\n channel = 0;\n channelLimit = Math.min(chunks[0] ? chunks[0].length : 1, maxChannels);\n }\n const channels = [];\n for (let n = channel; n < channelLimit; n++) {\n const length = chunks.reduce((sum, chunk) => {\n return sum + chunk[n].length;\n }, 0);\n const buffers = chunks.map((chunk) => chunk[n]);\n const result = new Float32Array(length);\n let offset = 0;\n for (let i = 0; i < buffers.length; i++) {\n result.set(buffers[i], offset);\n offset += buffers[i].length;\n }\n channels[n] = result;\n }\n return channels;\n }\n\n /**\n * Combines parallel audio data into correct format,\n * channels[Left[], Right[]] to float32Array[LRLRLRLR...]\n */\n formatAudioData(channels) {\n if (channels.length === 1) {\n // Simple case is only one channel\n const float32Array = channels[0].slice();\n const meanValues = channels[0].slice();\n return { float32Array, meanValues };\n } else {\n const float32Array = new Float32Array(\n channels[0].length * channels.length\n );\n const meanValues = new Float32Array(channels[0].length);\n for (let i = 0; i < channels[0].length; i++) {\n const offset = i * channels.length;\n let meanValue = 0;\n for (let n = 0; n < channels.length; n++) {\n float32Array[offset + n] = channels[n][i];\n meanValue += channels[n][i];\n }\n meanValues[i] = meanValue / channels.length;\n }\n return { float32Array, meanValues };\n }\n }\n\n /**\n * Converts 32-bit float data to 16-bit integers\n */\n floatTo16BitPCM(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n let offset = 0;\n for (let i = 0; i < float32Array.length; i++, offset += 2) {\n let s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n }\n\n /**\n * Retrieves the most recent amplitude values from the audio stream\n * @param {number} channel\n */\n getValues(channel = -1) {\n const channels = this.readChannelData(this.chunks, channel);\n const { meanValues } = this.formatAudioData(channels);\n return { meanValues, channels };\n }\n\n /**\n * Exports chunks as an audio/wav file\n */\n export() {\n const channels = this.readChannelData(this.chunks);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const audioData = this.floatTo16BitPCM(float32Array);\n return {\n meanValues: meanValues,\n audio: {\n bitsPerSample: 16,\n channels: channels,\n data: audioData,\n },\n };\n }\n\n receive(e) {\n const { event, id } = e.data;\n let receiptData = {};\n switch (event) {\n case 'start':\n this.recording = true;\n break;\n case 'stop':\n this.recording = false;\n break;\n case 'clear':\n this.initialize();\n break;\n case 'export':\n receiptData = this.export();\n break;\n case 'read':\n receiptData = this.getValues();\n break;\n default:\n break;\n }\n // Always send back receipt\n this.port.postMessage({ event: 'receipt', id, data: receiptData });\n }\n\n sendChunk(chunk) {\n const channels = this.readChannelData([chunk]);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const rawAudioData = this.floatTo16BitPCM(float32Array);\n const monoAudioData = this.floatTo16BitPCM(meanValues);\n this.port.postMessage({\n event: 'chunk',\n data: {\n mono: monoAudioData,\n raw: rawAudioData,\n },\n });\n }\n\n process(inputList, outputList, parameters) {\n // Copy input to output (e.g. speakers)\n // Note that this creates choppy sounds with Mac products\n const sourceLimit = Math.min(inputList.length, outputList.length);\n for (let inputNum = 0; inputNum < sourceLimit; inputNum++) {\n const input = inputList[inputNum];\n const output = outputList[inputNum];\n const channelCount = Math.min(input.length, output.length);\n for (let channelNum = 0; channelNum < channelCount; channelNum++) {\n input[channelNum].forEach((sample, i) => {\n output[channelNum][i] = sample;\n });\n }\n }\n const inputs = inputList[0];\n // There's latency at the beginning of a stream before recording starts\n // Make sure we actually receive audio data before we start storing chunks\n let sliceIndex = 0;\n if (!this.foundAudio) {\n for (const channel of inputs) {\n sliceIndex = 0; // reset for each channel\n if (this.foundAudio) {\n break;\n }\n if (channel) {\n for (const value of channel) {\n if (value !== 0) {\n // find only one non-zero entry in any channel\n this.foundAudio = true;\n break;\n } else {\n sliceIndex++;\n }\n }\n }\n }\n }\n if (inputs && inputs[0] && this.foundAudio && this.recording) {\n // We need to copy the TypedArray, because the `process`\n // internals will reuse the same buffer to hold each input\n const chunk = inputs.map((input) => input.slice(sliceIndex));\n this.chunks.push(chunk);\n this.sendChunk(chunk);\n }\n return true;\n }\n}\n\nregisterProcessor('audio_processor', AudioProcessor);\n"],{type:"application/javascript"}),rf=URL.createObjectURL(nf);globalThis.WavRecorder=class{constructor({sampleRate:e=44100,outputToSpeakers:t=!1,debug:n=!1}={}){this.scriptSrc=rf,this.sampleRate=e,this.outputToSpeakers=t,this.debug=!!n,this._deviceChangeCallback=null,this._deviceErrorCallback=null,this._devices=[],this.deviceSelection=null,this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static decode(e,t=44100,n=-1){return d(this,null,function*(){const r=new AudioContext({sampleRate:t});let i,a;if(e instanceof Blob){if(-1!==n)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=e,i=yield a.arrayBuffer()}else if(e instanceof ArrayBuffer){if(-1!==n)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=e,a=new Blob([i],{type:"audio/wav"})}else{let t,r;if(e instanceof Int16Array){r=e,t=new Float32Array(e.length);for(let n=0;n<e.length;n++)t[n]=e[n]/32768}else if(e instanceof Float32Array)t=e;else{if(!(e instanceof Array))throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');t=new Float32Array(e)}if(-1===n)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(n<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');r||(r=qd.floatTo16BitPCM(t));const o={bitsPerSample:16,channels:[t],data:r};a=(new qd).pack(n,o).blob,i=yield a.arrayBuffer()}const o=yield r.decodeAudioData(i),s=o.getChannelData(0);return{blob:a,url:URL.createObjectURL(a),values:s,audioBuffer:o}})}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}_event(e){return d(this,arguments,function*(e,t={},n=null){if(!(n=n||this.processor))throw new Error("Can not send events without recording first");const r={event:e,id:this._lastEventId++,data:t};n.port.postMessage(r);const i=(new Date).valueOf();for(;!this.eventReceipts[r.id];){if((new Date).valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${e}" event`);yield new Promise(e=>setTimeout(()=>e(!0),1))}const a=this.eventReceipts[r.id];return delete this.eventReceipts[r.id],a})}listenForDeviceChange(e){if(null===e&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(null!==e){let t=0,n=[];const r=e=>e.map(e=>e.deviceId).sort().join(","),i=()=>d(this,null,function*(){let i=++t;const a=yield this.listDevices();i===t&&r(n)!==r(a)&&(n=a,e(a.slice()))});navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}listenForDeviceErrors(e){this._deviceErrorCallback=e}requestPermission(){return d(this,null,function*(){const e=yield navigator.permissions.query({name:"microphone"});if("denied"===e.state)this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:new Error("Microphone access denied")});else if("prompt"===e.state)try{const e=yield navigator.mediaDevices.getUserMedia({audio:!0});e.getTracks().forEach(e=>e.stop())}catch(sr){console.error("Error accessing microphone."),this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:sr})}return!0})}listDevices(){return d(this,null,function*(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");yield this.requestPermission();return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>"audioinput"===e.kind)})}begin(e){return d(this,null,function*(){var t;if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic","cam"],type:"undefined-mediadevices"}),new Error("Could not request user media");e=null!=e?e:null==(t=this.deviceSelection)?void 0:t.deviceId;try{const t={audio:!0};e&&(t.audio={deviceId:{exact:e}}),this.stream=yield navigator.mediaDevices.getUserMedia(t)}catch(s){throw this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:s}),new Error("Could not start media stream")}this.listDevices().then(t=>{e=this.stream.getAudioTracks()[0].getSettings().deviceId,console.log("find current device",t,e,this.stream.getAudioTracks()[0].getSettings()),this.deviceSelection=t.find(t=>t.deviceId===e),console.log("current device",this.deviceSelection)});const n=new AudioContext({sampleRate:this.sampleRate}),r=n.createMediaStreamSource(this.stream);try{yield n.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const i=new AudioWorkletNode(n,"audio_processor");i.port.onmessage=e=>{const{event:t,id:n,data:r}=e.data;if("receipt"===t)this.eventReceipts[n]=r;else if("chunk"===t)if(this._chunkProcessorSize){const e=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:qd.mergeBuffers(e.raw,r.raw),mono:qd.mergeBuffers(e.mono,r.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(r)};const a=r.connect(i),o=n.createAnalyser();return o.fftSize=8192,o.smoothingTimeConstant=.1,a.connect(o),this.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),o.connect(n.destination)),this.source=r,this.node=a,this.analyser=o,this.processor=i,console.log("begin completed"),!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}pause(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!this.recording)throw new Error("Already paused: please call .record() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),yield this._event("stop"),this.recording=!1,!0})}record(e=()=>{},t=8192){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(this.recording)throw new Error("Already recording: please call .pause() first");if("function"!=typeof e)throw new Error("chunkProcessor must be a function");return this._chunkProcessor=e,this._chunkProcessorSize=t,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),yield this._event("start"),this.recording=!0,!0})}clear(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return yield this._event("clear"),!0})}read(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");this.log("Reading ...");return yield this._event("read")})}save(e=!1){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const t=yield this._event("export");return(new qd).pack(this.sampleRate,t.audio)})}end(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),yield this._event("stop"),this.recording=!1;this.stream.getTracks().forEach(e=>e.stop()),this.log("Exporting ...");const t=yield this._event("export",{},e);this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null;return(new qd).pack(this.sampleRate,t.audio)})}quit(){return d(this,null,function*(){return this.listenForDeviceChange(null),this.deviceSelection=null,this.processor&&(yield this.end()),!0})}};class af{constructor({sampleRate:e=44100,outputToSpeakers:t=!1,debug:n=!1}={}){this.scriptSrc=rf,this.sampleRate=e,this.outputToSpeakers=t,this.debug=!!n,this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}_event(e){return d(this,arguments,function*(e,t={},n=null){if(!(n=n||this.processor))throw new Error("Can not send events without recording first");const r={event:e,id:this._lastEventId++,data:t};n.port.postMessage(r);const i=(new Date).valueOf();for(;!this.eventReceipts[r.id];){if((new Date).valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${e}" event`);yield new Promise(e=>setTimeout(()=>e(!0),1))}const a=this.eventReceipts[r.id];return delete this.eventReceipts[r.id],a})}begin(e){return d(this,null,function*(){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!e||"audio"!==e.kind)throw new Error("No audio track provided");this.stream=new MediaStream([e]);const t=new AudioContext({sampleRate:this.sampleRate}),n=t.createMediaStreamSource(this.stream);try{yield t.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const r=new AudioWorkletNode(t,"audio_processor");r.port.onmessage=e=>{const{event:t,id:n,data:r}=e.data;if("receipt"===t)this.eventReceipts[n]=r;else if("chunk"===t)if(this._chunkProcessorSize){const e=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:qd.mergeBuffers(e.raw,r.raw),mono:qd.mergeBuffers(e.mono,r.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(r)};const i=n.connect(r),a=t.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),a.connect(t.destination)),this.source=n,this.node=i,this.analyser=a,this.processor=r,!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}pause(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!this.recording)throw new Error("Already paused: please call .record() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),yield this._event("stop"),this.recording=!1,!0})}record(e=()=>{},t=8192){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(this.recording)throw new Error("Already recording: HELLO please call .pause() first");if("function"!=typeof e)throw new Error("chunkProcessor must be a function");return this._chunkProcessor=e,this._chunkProcessorSize=t,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),yield this._event("start"),this.recording=!0,!0})}clear(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return yield this._event("clear"),!0})}read(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");this.log("Reading ...");return yield this._event("read")})}save(e=!1){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const t=yield this._event("export");return(new qd).pack(this.sampleRate,t.audio)})}end(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),yield this._event("stop"),this.recording=!1,this.log("Exporting ...");const t=yield this._event("export",{},e);this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null;return(new qd).pack(this.sampleRate,t.audio)})}quit(){return d(this,null,function*(){return this.listenForDeviceChange(null),this.processor&&(yield this.end()),!0})}}globalThis.WavRecorder=WavRecorder;var of,sf,lf;of=JSON.parse('{"name":"@pipecat-ai/daily-transport","version":"1.5.0","license":"BSD-2-Clause","main":"dist/index.js","module":"dist/index.module.js","types":"dist/index.d.ts","source":"src/index.ts","repository":{"type":"git","url":"git+https://github.com/pipecat-ai/pipecat-client-web-transports.git"},"files":["dist","package.json","README.md"],"scripts":{"build":"parcel build --no-cache","dev":"parcel watch","lint":"eslint . --ext ts --report-unused-disable-directives --max-warnings 0"},"devDependencies":{"@pipecat-ai/client-js":"^1.5.0","eslint":"9.39.1","eslint-config-prettier":"^9.1.0","eslint-plugin-simple-import-sort":"^12.1.1"},"peerDependencies":{"@pipecat-ai/client-js":"~1.5.0"},"dependencies":{"@daily-co/daily-js":"^0.84.0"},"description":"Pipecat Daily Transport Package","author":"Daily.co","bugs":{"url":"https://github.com/pipecat-ai/pipecat-client-web-transports/issues"},"homepage":"https://github.com/pipecat-ai/pipecat-client-web-transports/blob/main/transports/daily-webrtc/README.md"}'),(lf=sf||(sf={})).AUDIO_BUFFERING_STARTED="audio-buffering-started",lf.AUDIO_BUFFERING_STOPPED="audio-buffering-stopped";class cf{constructor(e){this._daily=e,this._proxy=new Proxy(this._daily,{get:(e,t,n)=>{if("function"==typeof e[t]){let n;switch(String(t)){case"preAuth":n="Calls to preAuth() are disabled. Please use Transport.preAuth()";break;case"startCamera":n="Calls to startCamera() are disabled. Please use PipecatClient.initDevices()";break;case"join":n="Calls to join() are disabled. Please use PipecatClient.connect()";break;case"leave":n="Calls to leave() are disabled. Please use PipecatClient.disconnect()";break;case"destroy":n="Calls to destroy() are disabled."}return n?()=>{throw new Error(n)}:(...n)=>e[t](...n)}return Reflect.get(e,t,n)}})}get proxy(){return this._proxy}}class uf extends Id{constructor(e={}){var t;super(),this._botId="",this._selectedCam={},this._selectedMic={},this._selectedSpeaker={},this._currentAudioTrack=null,this._audioQueue=[],this._callbacks={};const n=e,{bufferLocalAudioUntilBotReady:r}=n,i=u(n,["bufferLocalAudioUntilBotReady"]);this._dailyFactoryOptions=i,void 0===(null==(t=this._dailyFactoryOptions.dailyConfig)?void 0:t.useDevicePreferenceCookies)&&(null==this._dailyFactoryOptions.dailyConfig&&(this._dailyFactoryOptions.dailyConfig={}),this._dailyFactoryOptions.dailyConfig.useDevicePreferenceCookies=!0),this._bufferLocalAudioUntilBotReady=r||!1,this._daily=Wc.createCallObject(c(l({},this._dailyFactoryOptions),{allowMultipleCallInstances:!0})),this._dailyWrapper=new cf(this._daily)}setupRecorder(){this._mediaStreamRecorder=new af({sampleRate:uf.RECORDER_SAMPLE_RATE})}handleUserAudioStream(e){this._audioQueue.push(e)}flushAudioQueue(){if(0!==this._audioQueue.length)for(Pd.debug(`Will flush audio queue: ${this._audioQueue.length}`);this._audioQueue.length>0;){const e=[];for(;e.length<10&&this._audioQueue.length>0;){const t=this._audioQueue.shift();t&&e.push(t)}e.length>0&&this._sendAudioBatch(e)}}_sendAudioBatch(e){const t={id:"raw-audio-batch",label:"rtvi-ai",type:"raw-audio-batch",data:{base64AudioBatch:e.map(e=>{const t=new Uint8Array(e);return btoa(String.fromCharCode(...t))}),sampleRate:uf.RECORDER_SAMPLE_RATE,numChannels:1}};this.sendMessage(t)}initialize(e,t){var n,r,i;this._bufferLocalAudioUntilBotReady&&this.setupRecorder(),this._callbacks=null!=(n=e.callbacks)?n:{},this._onMessage=t,null!=this._dailyFactoryOptions.startVideoOff&&null==e.enableCam||(this._dailyFactoryOptions.startVideoOff=!(null!=(r=e.enableCam)&&r)),null!=this._dailyFactoryOptions.startAudioOff&&null==e.enableMic||(this._dailyFactoryOptions.startAudioOff=!(null==(i=e.enableMic)||i)),this.attachEventListeners(),this.state="disconnected",Pd.debug("[Daily Transport] Initialized",Vd(of).version)}get dailyCallClient(){return this._dailyWrapper.proxy}get state(){return this._state}set state(e){var t,n;this._state!==e&&(this._state=e,null==(n=(t=this._callbacks).onTransportStateChanged)||n.call(t,e))}getSessionInfo(){return this._daily.meetingSessionSummary()}getAllCams(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"videoinput"===e.kind)})}updateCam(e){this._daily.setInputDevicesAsync({videoDeviceId:e}).then(e=>{this._selectedCam=e.camera})}get selectedCam(){return this._selectedCam}getAllMics(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"audioinput"===e.kind)})}updateMic(e){this._daily.setInputDevicesAsync({audioDeviceId:e}).then(e=>{this._selectedMic=e.mic})}get selectedMic(){return this._selectedMic}getAllSpeakers(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"audiooutput"===e.kind)})}updateSpeaker(e){this._daily.setOutputDeviceAsync({outputDeviceId:e}).then(e=>{this._selectedSpeaker=e.speaker}).catch(e=>{var t,n,r;null==(r=(n=this._callbacks).onDeviceError)||r.call(n,new ld(["speaker"],null!=(t=e.type)?t:"unknown",e.message))})}get selectedSpeaker(){return this._selectedSpeaker}enableMic(e){this._daily.setLocalAudio(e)}get isMicEnabled(){return this._daily.localAudio()}enableCam(e){this._daily.setLocalVideo(e)}get isCamEnabled(){return this._daily.localVideo()}enableScreenShare(e){e?this._daily.startScreenShare():this._daily.stopScreenShare()}get isSharingScreen(){return this._daily.localScreenAudio()||this._daily.localScreenVideo()}tracks(){var e,t,n,r,i,a,o,s,l,c,u,d,f,p,h,m,g;const v=null!=(e=this._daily.participants())?e:{},y=null==v?void 0:v[this._botId],b={local:{audio:null==(r=null==(n=null==(t=null==v?void 0:v.local)?void 0:t.tracks)?void 0:n.audio)?void 0:r.persistentTrack,screenAudio:null==(o=null==(a=null==(i=null==v?void 0:v.local)?void 0:i.tracks)?void 0:a.screenAudio)?void 0:o.persistentTrack,screenVideo:null==(c=null==(l=null==(s=null==v?void 0:v.local)?void 0:s.tracks)?void 0:l.screenVideo)?void 0:c.persistentTrack,video:null==(f=null==(d=null==(u=null==v?void 0:v.local)?void 0:u.tracks)?void 0:d.video)?void 0:f.persistentTrack}};return y&&(b.bot={audio:null==(h=null==(p=null==y?void 0:y.tracks)?void 0:p.audio)?void 0:h.persistentTrack,video:null==(g=null==(m=null==y?void 0:y.tracks)?void 0:m.video)?void 0:g.persistentTrack}),b}startRecording(){return d(this,null,function*(){var e,t;try{Pd.info("[Daily Transport] Initializing recording"),yield this._mediaStreamRecorder.record(e=>{this.handleUserAudioStream(e.mono)},uf.RECORDER_CHUNK_SIZE),null==(t=(e=this._callbacks).onAudioBufferingStarted)||t.call(e),Pd.info("[Daily Transport] Recording Initialized")}catch(sr){sr.message.includes("Already recording")||Pd.error("Error starting recording",sr)}})}preAuth(e){return d(this,null,function*(){this._dailyFactoryOptions=e,yield this._daily.preAuth(e)})}initDevices(){return d(this,null,function*(){var e,t,n,r,i,a,o,s,l,c,u,d;if(!this._daily)throw new ed("Transport instance not initialized");this.state="initializing";const f=yield this._daily.startCamera(this._dailyFactoryOptions),{devices:p}=yield this._daily.enumerateDevices(),h=p.filter(e=>"videoinput"===e.kind),m=p.filter(e=>"audioinput"===e.kind),g=p.filter(e=>"audiooutput"===e.kind);this._selectedCam=f.camera,this._selectedMic=f.mic,this._selectedSpeaker=f.speaker,null==(t=(e=this._callbacks).onAvailableCamsUpdated)||t.call(e,h),null==(r=(n=this._callbacks).onAvailableMicsUpdated)||r.call(n,m),null==(a=(i=this._callbacks).onAvailableSpeakersUpdated)||a.call(i,g),null==(s=(o=this._callbacks).onCamUpdated)||s.call(o,f.camera),null==(c=(l=this._callbacks).onMicUpdated)||c.call(l,f.mic),null==(d=(u=this._callbacks).onSpeakerUpdated)||d.call(u,f.speaker),this._daily.isLocalAudioLevelObserverRunning()||(yield this._daily.startLocalAudioLevelObserver(100)),this._daily.isRemoteParticipantsAudioLevelObserverRunning()||(yield this._daily.startRemoteParticipantsAudioLevelObserver(100)),this.state="initialized"})}_validateConnectionParams(e){if(null==e)return;if("object"!=typeof e)throw new ed("Invalid connection parameters");const t=e;return t.room_url?(t.url=t.room_url,delete t.room_url):t.dailyRoom&&(t.url=t.dailyRoom,delete t.dailyRoom),t.dailyToken&&(t.token=t.dailyToken,delete t.dailyToken),t.token||delete t.token,t}_connect(e){return d(this,null,function*(){var t,n,r;if(!this._daily)throw new ed("Transport instance not initialized");e&&(this._dailyFactoryOptions=l(l({},this._dailyFactoryOptions),e)),this.state="connecting";try{yield this._daily.join(this._dailyFactoryOptions)}catch(sr){throw Pd.error("Failed to join room",sr),this.state="error",new rd}(null==(t=this._abortController)?void 0:t.signal.aborted)||(this.state="connected",null==(r=(n=this._callbacks).onConnected)||r.call(n))})}sendReadyMessage(){return d(this,null,function*(){return new Promise(e=>{var t,n;const r=()=>{this.state="ready",this.flushAudioQueue(),this.sendMessage(kd.clientReady()),this.stopRecording(),e()};for(const a in this._daily.participants()){const i=this._daily.participants()[a];if(!i.local&&(null==(n=null==(t=i.tracks)?void 0:t.audio)?void 0:n.persistentTrack))return r(),void e()}const i=e=>{var t;(null==(t=e.participant)?void 0:t.local)||(this._daily.off("track-started",i),(()=>{const e=navigator.userAgent;return/iPad|iPhone|iPod/.test(e)||/Macintosh/.test(e)&&"ontouchend"in document})()?(Pd.debug("[Daily Transport] iOS device detected, adding 0.5 second delay before sending ready message"),setTimeout(r,500)):r())};this._daily.on("track-started",i)})})}stopRecording(){var e,t;this._mediaStreamRecorder&&"ended"!==this._mediaStreamRecorder.getStatus()&&(this._mediaStreamRecorder.end(),null==(t=(e=this._callbacks).onAudioBufferingStopped)||t.call(e))}attachEventListeners(){this._daily.on("available-devices-updated",this.handleAvailableDevicesUpdated.bind(this)),this._daily.on("selected-devices-updated",this.handleSelectedDevicesUpdated.bind(this)),this._daily.on("camera-error",this.handleDeviceError.bind(this)),this._daily.on("track-started",this.handleTrackStarted.bind(this)),this._daily.on("track-stopped",this.handleTrackStopped.bind(this)),this._daily.on("participant-joined",this.handleParticipantJoined.bind(this)),this._daily.on("participant-left",this.handleParticipantLeft.bind(this)),this._daily.on("local-audio-level",this.handleLocalAudioLevel.bind(this)),this._daily.on("remote-participants-audio-level",this.handleRemoteAudioLevel.bind(this)),this._daily.on("app-message",this.handleAppMessage.bind(this)),this._daily.on("left-meeting",this.handleLeftMeeting.bind(this)),this._daily.on("error",this.handleFatalError.bind(this)),this._daily.on("nonfatal-error",this.handleNonFatalError.bind(this))}_disconnect(){return d(this,null,function*(){this.state="disconnecting",this._daily.stopLocalAudioLevelObserver(),this._daily.stopRemoteParticipantsAudioLevelObserver(),this._audioQueue=[],this._currentAudioTrack=null,this.stopRecording(),yield this._daily.leave()})}sendMessage(e){this._daily.sendAppMessage(e,"*")}handleAppMessage(e){"rtvi-ai"===e.data.label&&this._onMessage({id:e.data.id,type:e.data.type,data:e.data.data})}handleAvailableDevicesUpdated(e){var t,n,r,i,a,o;null==(n=(t=this._callbacks).onAvailableCamsUpdated)||n.call(t,e.availableDevices.filter(e=>"videoinput"===e.kind)),null==(i=(r=this._callbacks).onAvailableMicsUpdated)||i.call(r,e.availableDevices.filter(e=>"audioinput"===e.kind)),null==(o=(a=this._callbacks).onAvailableSpeakersUpdated)||o.call(a,e.availableDevices.filter(e=>"audiooutput"===e.kind))}handleSelectedDevicesUpdated(e){var t,n,r,i,a,o,s,l,c;(null==(t=this._selectedCam)?void 0:t.deviceId)!==e.devices.camera&&(this._selectedCam=e.devices.camera,null==(r=(n=this._callbacks).onCamUpdated)||r.call(n,e.devices.camera)),(null==(i=this._selectedMic)?void 0:i.deviceId)!==e.devices.mic&&(this._selectedMic=e.devices.mic,null==(o=(a=this._callbacks).onMicUpdated)||o.call(a,e.devices.mic)),(null==(s=this._selectedSpeaker)?void 0:s.deviceId)!==e.devices.speaker&&(this._selectedSpeaker=e.devices.speaker,null==(c=(l=this._callbacks).onSpeakerUpdated)||c.call(l,e.devices.speaker))}handleDeviceError(e){var t,n;null==(n=(t=this._callbacks).onDeviceError)||n.call(t,(e=>{const t=[];switch(e.type){case"permissions":return e.blockedMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg,{blockedBy:e.blockedBy});case"not-found":return e.missingMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg);case"constraints":return e.failedMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg,{reason:e.reason});case"cam-in-use":return t.push("cam"),new ld(t,"in-use",e.msg);case"mic-in-use":return t.push("mic"),new ld(t,"in-use",e.msg);case"cam-mic-in-use":return t.push("cam"),t.push("mic"),new ld(t,"in-use",e.msg);default:return t.push("cam"),t.push("mic"),new ld(t,e.type,e.msg)}})(e.error))}handleLocalAudioTrack(e){return d(this,null,function*(){if("ready"==this.state||!this._bufferLocalAudioUntilBotReady)return;switch(this._mediaStreamRecorder.getStatus()){case"ended":try{yield this._mediaStreamRecorder.begin(e),yield this.startRecording()}catch(sr){}break;case"paused":yield this.startRecording();break;default:if(this._currentAudioTrack!==e)try{yield this._mediaStreamRecorder.end(),yield this._mediaStreamRecorder.begin(e),yield this.startRecording()}catch(sr){}else Pd.warn("track-started event received for current track and already recording")}this._currentAudioTrack=e})}handleTrackStarted(e){var t,n,r,i,a;"screenAudio"===e.type||"screenVideo"===e.type?null==(n=(t=this._callbacks).onScreenTrackStarted)||n.call(t,e.track,e.participant?df(e.participant):void 0):((null==(r=e.participant)?void 0:r.local)&&"audio"===e.track.kind&&this.handleLocalAudioTrack(e.track),null==(a=(i=this._callbacks).onTrackStarted)||a.call(i,e.track,e.participant?df(e.participant):void 0))}handleTrackStopped(e){var t,n,r,i;"screenAudio"===e.type||"screenVideo"===e.type?null==(n=(t=this._callbacks).onScreenTrackStopped)||n.call(t,e.track,e.participant?df(e.participant):void 0):null==(i=(r=this._callbacks).onTrackStopped)||i.call(r,e.track,e.participant?df(e.participant):void 0)}handleParticipantJoined(e){var t,n,r,i;const a=df(e.participant);null==(n=(t=this._callbacks).onParticipantJoined)||n.call(t,a),a.local||(this._botId=e.participant.session_id,null==(i=(r=this._callbacks).onBotConnected)||i.call(r,a))}handleParticipantLeft(e){var t,n,r,i;const a=df(e.participant);null==(n=(t=this._callbacks).onParticipantLeft)||n.call(t,a),a.local||(this._botId="",null==(i=(r=this._callbacks).onBotDisconnected)||i.call(r,a))}handleLocalAudioLevel(e){var t,n;null==(n=(t=this._callbacks).onLocalAudioLevel)||n.call(t,e.audioLevel)}handleRemoteAudioLevel(e){var t,n;const r=this._daily.participants(),i=Object.keys(e.participantsAudioLevel);for(let a=0;a<i.length;a++){const o=i[a],s=e.participantsAudioLevel[o];null==(n=(t=this._callbacks).onRemoteAudioLevel)||n.call(t,s,df(r[o]))}}handleLeftMeeting(){var e,t;this.state="disconnected",this._botId="",null==(t=(e=this._callbacks).onDisconnected)||t.call(e)}handleFatalError(e){var t,n;Pd.error("Daily fatal error",e.errorMsg),this.state="error",this._botId="",null==(n=(t=this._callbacks).onError)||n.call(t,kd.error(e.errorMsg,!0))}handleNonFatalError(e){var t,n;if("screen-share-error"===e.type)null==(n=(t=this._callbacks).onScreenShareError)||n.call(t,e.errorMsg)}}uf.RECORDER_SAMPLE_RATE=16e3,uf.RECORDER_CHUNK_SIZE=512;const df=e=>({id:e.user_id,local:e.local,name:e.user_name});function ff(e,t,n={}){const{pipecatClient:r,connectionState:i,isBotReady:a,isMicEnabled:o,isUserSpeaking:s,isBotSpeaking:u,remoteAudioStream:f,addMessage:p,setPipecatClient:h,setConnectionState:m,setIsBotReady:g,setIsMicEnabled:v,setIsUserSpeaking:y,setIsBotSpeaking:b,setRemoteAudioStream:w,startBotStream:k,appendBotStreamText:S,finalizeBotStream:_,updateUserTranscript:C,finalizeUserTranscript:E}=H(),T=x.useRef(null),M=x.useRef(!1),P=x.useRef(null),A=x.useRef(!1);x.useEffect(()=>{const e=T.current;if(e&&f)try{e.srcObject=f,e.volume=1;const t=e.play();t&&t.then(()=>{}).catch(e=>{})}catch(t){}return()=>{e&&(e.srcObject=null)}},[f]);const O=x.useCallback(()=>d(null,null,function*(){var r;if(!A.current&&"disconnected"===i){A.current=!0,m("connecting");try{if(!e||!t)throw new Error("Missing agent ID or prompt token");const r={agent_id:e,conversation_metadata:c(l({},n),{agent_id:e}),prompt_access_token:t,conversation_visibility:!1,conversation_config_type:"VOICE"},i=yield function(e){return d(this,null,function*(){const t=`${Q}/v1/widgets/sessions/daily`,n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":e.prompt_access_token},body:JSON.stringify(e)});if(!n.ok){const e=yield n.json().catch(()=>({}));throw new Error(e.detail||e.message||`HTTP ${n.status}`)}const r=yield n.json();return r.conversation_id,r})}(r);if(!(null==i?void 0:i.dailyRoom)||!(null==i?void 0:i.dailyToken))throw new Error("Invalid response from server");const{dailyRoom:a,dailyToken:s,conversation_id:u}=i,f=new Ud({transport:new uf,enableMic:o,enableCam:!1,timeout:3e4,callbacks:{onTransportStateChanged:e=>{m(e)},onConnected:()=>{p({type:"separator",text:"Voice call started"})},onBotReady:e=>{g(!0),m("ready")},onBotStartedSpeaking:()=>{b(!0),g(e=>e||(m("ready"),!0))},onBotStoppedSpeaking:()=>{b(!1)},onDisconnected:()=>{m("disconnected"),g(!1),b(!1),M.current||p({type:"separator",text:"Call disconnected"})},onTrackStarted:(e,t)=>{if("audio"===e.kind&&!(null==t?void 0:t.local)){const t=new MediaStream([e]);w(t)}},onUserStartedSpeaking:()=>{y(!0)},onUserStoppedSpeaking:()=>{y(!1)},onUserTranscript:e=>{var t;const n=null!=(t=null==e?void 0:e.text)?t:"",r=Boolean(null==e?void 0:e.final);n.trim()&&C(n,r)},onBotLlmStarted:()=>{k()},onBotLlmText:e=>{var t;const n=null!=(t=null==e?void 0:e.text)?t:"";n&&S(n)},onBotLlmStopped:()=>{_()},onBotTtsStarted:()=>{},onBotTtsText:e=>{},onBotTtsStopped:()=>{},onBotTranscript:e=>{var t;const n=(null==(t=null==e?void 0:e.text)?void 0:t.trim())||"";if(!n)return;const{botStreamingMessageId:r,botStreamingText:i,lastBotMessageText:a,messages:o}=H.getState();if(r||i)return;if(a&&n===a)return;const s=o.filter(e=>"assistant"===e.type).pop();(null==s?void 0:s.text)!==n&&p({type:"assistant",text:n,isTranscript:!0})},onMicStateChanged:e=>{v(e)},onError:e=>{var t,n;const r=(null==(t=null==e?void 0:e.data)?void 0:t.error)||(null==e?void 0:e.message)||"";r.includes("validation error")||r.includes("FunctionResponse")||!(null==(n=null==e?void 0:e.data)?void 0:n.fatal)?(p({type:"separator",text:"Agent disconnected"}),N()):(m("error"),p({type:"system",text:`Error: ${r}`}))}}});h(f),P.current=f,yield f.initDevices(),yield f.connect({url:a,token:s})}catch(a){A.current=!1,m("error");let e="Failed to start call";e=(null==(r=a.message)?void 0:r.includes("Failed to fetch"))?"Cannot reach server":"NotAllowedError"===a.name?"Microphone access denied":"NotFoundError"===a.name?"No microphone found":a.message,p({type:"system",text:`❌ ${e}`})}}}),[e,t,n,i,o,m,h,g,v,w,p]),N=x.useCallback(()=>d(null,null,function*(){var e;try{if(p({type:"separator",text:"Voice call ended"}),M.current=!0,A.current=!1,r&&"disconnected"!==i&&(yield r.disconnect()),null==(e=T.current)?void 0:e.srcObject){T.current.srcObject.getTracks().forEach(e=>e.stop()),T.current.srcObject=null}w(null),h(null),P.current=null,m("disconnected"),g(!1),setTimeout(()=>{M.current=!1},500)}catch(t){A.current=!1,h(null),P.current=null,m("disconnected"),g(!1)}}),[r,i,h,m,g,w,p]),L=x.useCallback(()=>{if(r&&a)try{const e=!o;r.enableMic(e),v(e)}catch(e){}},[r,o,a,v]),j=x.useCallback(e=>d(null,null,function*(){if(r)if(a)try{yield r.sendText(e),p({type:"user",text:e,isTranscript:!1})}catch(t){p({type:"system",text:`Error: ${t.message||"Failed to send text"}`})}else p({type:"system",text:"Please wait for the bot to be ready before sending text"})}),[r,a,p]);return x.useEffect(()=>()=>{var e;const t=P.current;if(t&&(M.current=!0,t.disconnect().catch(e=>{})),null==(e=T.current)?void 0:e.srcObject){T.current.srcObject.getTracks().forEach(e=>e.stop())}},[]),{connectionState:i,isBotReady:a,isMicEnabled:o,isUserSpeaking:s,isBotSpeaking:u,startCall:O,endCall:N,toggleMic:L,sendTextDuringCall:j,remoteAudioRef:T}}function pf({agentId:e,agentName:t,avatarUrl:n,promptToken:r,metadata:i,showTranscripts:a=!0,idlePromptMessages:o=[],onClose:s,className:l}){const{messages:c,botStreamingText:u,userTranscriptText:d}=H(),[f,p]=x.useState(""),[h,m]=x.useState(0),g=x.useRef(null),{connectionState:v,isBotReady:y,isMicEnabled:w,isUserSpeaking:k,isBotSpeaking:S,startCall:_,endCall:C,toggleMic:E,sendTextDuringCall:T,remoteAudioRef:M}=ff(e,r,i);x.useEffect(()=>("disconnected"===v&&_(),()=>{"disconnected"!==v&&C()}),[]);const P="connecting"===v||!y,A="ready"===v||"connected"===v,O="error"===v;x.useEffect(()=>{var e;null==(e=g.current)||e.scrollIntoView({behavior:"smooth"})},[c,u,d]),x.useEffect(()=>{if(!P||!(null==o?void 0:o.length))return;const e=setInterval(()=>{m(e=>(e+1)%o.length)},3e3);return()=>clearInterval(e)},[P,o]);const N=A&&k&&!d?{text:"Listening",animate:!0}:null,L=O?"error":P?"connecting":w?S?"speaking":k?"listening":"idle":"muted",j=c.filter(e=>e.isTranscript||"separator"===e.type||"system"===e.type||"user"===e.type||"assistant"===e.type);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in min-h-0 relative",l),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("audio",{ref:M,autoPlay:!0,playsInline:!0,style:{display:"none"}}),b.jsx("button",{onClick:()=>{C(),s()},className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),P&&b.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6",children:[b.jsx("div",{className:"mb-6",children:b.jsx(Wn,{loading:!0,size:180,strokeWidth:4,gap:6,children:b.jsx(St,{src:n,alt:t,size:"2xl",className:"shadow-lg"})})}),b.jsx("h2",{className:"text-xl font-semibold mb-2",style:{color:"var(--widget-text-primary, #111827)"},children:t}),b.jsx("p",{className:"text-sm mb-6",style:{color:"var(--widget-status-connecting, #F59E0B)"},children:"Connecting..."}),(null==o?void 0:o.length)>0&&b.jsx("div",{className:"text-center px-4 py-3 rounded-lg max-w-xs animate-fade-in",style:{backgroundColor:"var(--widget-idle-prompt-bg, #F3F4F6)",color:"var(--widget-idle-prompt-text, #6B7280)"},children:b.jsx("p",{className:"text-sm",children:o[h]})},h)]}),!P&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-3 px-4 py-3 shrink-0",style:{backgroundColor:"var(--widget-header-bg, #F9FAFB)",borderBottom:"1px solid var(--widget-header-border, #E5E7EB)"},children:[b.jsxs("div",{className:"flex-1 flex items-center gap-3",children:[b.jsxs("div",{className:"relative",children:[b.jsx(St,{src:n,alt:t,size:"sm"}),L&&b.jsx("span",{className:vt("absolute -bottom-0.5 -right-0.5 w-3 h-3 rounded-full border-2",("listening"===L||"speaking"===L||"connecting"===L)&&"animate-pulse"),style:{backgroundColor:"listening"===L?"var(--widget-status-success, #10B981)":"speaking"===L?"var(--widget-status-info, #3B82F6)":"connecting"===L?"var(--widget-status-warning, #F59E0B)":"idle"===L?"var(--widget-status-success, #10B981)":"muted"===L?"var(--widget-text-muted, #9CA3AF)":"var(--widget-status-error, #EF4444)",borderColor:"var(--widget-header-bg, #F9FAFB)"}})]}),b.jsxs("div",{children:[b.jsx("h2",{className:"text-sm font-semibold leading-tight",style:{color:"var(--widget-header-text, #111827)"},children:t}),L&&b.jsxs("span",{className:"text-xs",style:{color:"listening"===L?"var(--widget-status-success, #10B981)":"speaking"===L?"var(--widget-status-info, #3B82F6)":"error"===L?"var(--widget-status-error, #EF4444)":"var(--widget-text-muted, #9CA3AF)"},children:["listening"===L&&"Listening...","speaking"===L&&"Speaking...","connecting"===L&&"Connecting...","muted"===L&&"Muted","idle"===L&&"Ready","error"===L&&"Connection failed"]})]})]}),b.jsx("div",{className:"w-9"})]}),b.jsx(Fn,{className:"flex-1 min-h-0",children:b.jsxs("div",{className:"p-4 space-y-3 min-h-full",children:[0===j.length&&!N&&b.jsx("div",{className:"flex items-center justify-center h-full min-h-[200px]",children:b.jsx("p",{className:"text-sm",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"Start Conversation"})}),j.map(e=>b.jsx(hf,{message:e},e.id)),u&&b.jsx("div",{className:"flex justify-start",children:b.jsx("div",{className:"max-w-[80%] px-4 py-2.5 text-sm leading-relaxed rounded-2xl rounded-bl-md",style:{backgroundColor:"var(--widget-bot-message-bg, #F3F4F6)",color:"var(--widget-bot-message-text, #111827)"},children:u})}),d&&b.jsx("div",{className:"flex justify-end",children:b.jsx("div",{className:"max-w-[80%] px-4 py-2.5 text-sm leading-relaxed rounded-2xl rounded-br-md",style:{backgroundColor:"var(--widget-user-message-bg, #3B82F6)",color:"var(--widget-user-message-text, #FFFFFF)",opacity:.85},children:d})}),N&&b.jsx("div",{className:"flex justify-end",children:b.jsxs("div",{className:"flex items-center gap-2 px-4 py-2.5 rounded-2xl rounded-br-md text-sm",style:{backgroundColor:"var(--widget-user-message-bg, #3B82F6)",color:"var(--widget-user-message-text, #FFFFFF)"},children:[b.jsx("span",{children:N.text}),b.jsxs("span",{className:"flex gap-1",children:[b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"0ms"}}),b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"150ms"}}),b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"300ms"}})]})]})}),b.jsx("div",{ref:g})]})}),b.jsxs("div",{className:"shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",backgroundColor:"var(--widget-background, #FFFFFF)"},children:[b.jsxs("form",{onSubmit:e=>{e.preventDefault(),f.trim()&&A&&(T(f.trim()),p(""))},className:"flex items-center gap-2 px-4 py-2",children:[b.jsx("input",{type:"text",value:f,onChange:e=>p(e.target.value),placeholder:"Type a message...",disabled:!A,className:"flex-1 h-10 px-4 rounded-full outline-none transition-all text-sm",style:{backgroundColor:"var(--widget-input-bg, #F9FAFB)",color:"var(--widget-input-text, #111827)",border:"1px solid var(--widget-input-border, #E5E7EB)",fontFamily:"var(--widget-font-family, inherit)"}}),b.jsx(kt,{type:"submit",variant:"ghost",size:"icon",disabled:!f.trim()||!A,className:"shrink-0 rounded-full h-10 w-10",children:b.jsx(It,{className:"h-4 w-4"})})]}),b.jsxs("div",{className:"flex justify-center gap-4 px-4 pt-2",style:{paddingBottom:"max(1rem, env(safe-area-inset-bottom, 0px))"},children:[b.jsx(kt,{onClick:E,variant:w?"secondary":"outline",size:"icon-lg",className:"rounded-full h-12 w-12",disabled:!A,style:{backgroundColor:w?"var(--widget-button-secondary-bg, #F3F4F6)":"transparent",borderColor:w?void 0:"var(--widget-border, #E5E7EB)"},children:w?b.jsx(Lt,{className:"h-5 w-5",style:{color:"var(--widget-text-primary, #111827)"}}):b.jsx(Nt,{className:"h-5 w-5",style:{color:"var(--widget-text-muted, #9CA3AF)"}})}),b.jsx(kt,{onClick:()=>{C(),s()},variant:"destructive",size:"icon-lg",className:"rounded-full h-12 w-12",children:b.jsx(jt,{className:"h-5 w-5"})})]})]})]})]})}function hf({message:e}){const t="user"===e.type;e.type;const n="separator"===e.type,r="system"===e.type;return n?b.jsx("div",{className:"flex items-center justify-center py-1",children:b.jsx("div",{className:"px-3 py-1 rounded-full text-xs",style:{backgroundColor:"var(--widget-system-message-bg, #F3F4F6)",color:"var(--widget-text-muted, #9CA3AF)"},children:e.text})}):r?b.jsx("div",{className:"flex justify-center",children:b.jsx("div",{className:"max-w-[85%] px-4 py-2 rounded-lg text-sm",style:{backgroundColor:"var(--widget-status-error-bg, #FEE2E2)",color:"var(--widget-status-error, #DC2626)"},children:e.text})}):b.jsx("div",{className:vt("flex",t?"justify-end":"justify-start"),children:b.jsx("div",{className:vt("max-w-[80%] px-4 py-2.5 text-sm leading-relaxed",t?"rounded-2xl rounded-br-md":"rounded-2xl rounded-bl-md"),style:{backgroundColor:t?"var(--widget-user-message-bg, #3B82F6)":"var(--widget-bot-message-bg, #F3F4F6)",color:t?"var(--widget-user-message-text, #FFFFFF)":"var(--widget-bot-message-text, #111827)"},children:e.text})})}function mf({agentName:e,avatarUrl:t,variablesConfig:n=[],onSubmit:r,onClose:i,className:a}){const[o,s]=x.useState(()=>n.reduce((e,{key:t})=>c(l({},e),{[t]:""}),{})),[u,d]=x.useState({}),f=x.useMemo(()=>n.filter(e=>e.required).map(e=>e.key),[n]),p=x.useCallback(e=>e.split(/[_-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),[]),h=x.useCallback((e,t)=>{s(n=>c(l({},n),{[e]:t})),u[e]&&d(t=>c(l({},t),{[e]:null}))},[u]),m=x.useCallback(()=>{const e={};let t=!1;if(f.forEach(n=>{o[n]&&""!==o[n].trim()||(e[n]=`${p(n)} is required`,t=!0)}),t)return void d(e);const n=Object.fromEntries(Object.entries(o).filter(([e,t])=>t&&""!==t.trim()));r(n)},[o,f,p,r]),g=x.useCallback((e,t)=>{"Enter"===e.key&&t&&m()},[m]);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in relative min-h-0",a),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("button",{onClick:i,className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),b.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:b.jsxs("div",{className:"flex flex-col items-center px-6 py-8 pt-14",children:[b.jsx(St,{src:t,alt:e,size:"xl",className:"mb-4 shadow-lg"}),b.jsx("h1",{className:"text-xl font-semibold mb-2 text-center",style:{color:"var(--widget-text-primary, #111827)"},children:"Before we start"}),b.jsxs("p",{className:"text-sm mb-6 text-center max-w-sm",style:{color:"var(--widget-text-secondary, #6B7280)"},children:["Please provide the following information to personalize your experience with ",b.jsx("span",{className:"font-medium",children:e})]}),b.jsx("div",{className:"w-full max-w-md space-y-4",children:n.map(({key:e,required:t},r)=>b.jsxs("div",{className:"space-y-1",children:[b.jsxs("label",{htmlFor:`var-${e}`,className:"block text-sm font-medium",style:{color:"var(--widget-text-primary, #111827)"},children:[p(e),t&&b.jsx("span",{className:"ml-1",style:{color:"var(--widget-status-error, #DC2626)"},children:"*"}),!t&&b.jsx("span",{className:"ml-1 text-xs font-normal",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"(optional)"})]}),b.jsx("input",{id:`var-${e}`,type:"text",value:o[e],onChange:t=>h(e,t.target.value),onKeyDown:e=>g(e,r===n.length-1),placeholder:`Enter ${p(e).toLowerCase()}`,className:"w-full px-4 py-3 rounded-lg text-sm outline-none transition-colors",style:{backgroundColor:"var(--widget-input-bg, #FFFFFF)",color:"var(--widget-input-text, #111827)",border:u[e]?"2px solid var(--widget-border-error, #DC2626)":"1px solid var(--widget-input-border, #E5E7EB)"},autoFocus:0===r}),u[e]&&b.jsx("p",{className:"text-xs",style:{color:"var(--widget-status-error, #DC2626)"},children:u[e]})]},e))})]})}),b.jsx("div",{className:"p-6 pb-safe shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",paddingBottom:"max(1.5rem, env(safe-area-inset-bottom, 0px))"},children:b.jsx("div",{className:"max-w-md mx-auto",children:b.jsxs(kt,{onClick:m,variant:"default",size:"xl",className:"w-full",children:["Continue",b.jsx(Mt,{className:"h-5 w-5 ml-2"})]})})})]})}function gf({agentId:e,metadata:t={},widgetElement:n}){const{isOpen:r,currentScreen:i,setScreen:a,closeDialog:o,dynamicVariables:s,pendingScreen:c,setDynamicVariables:u,setPendingScreen:f}=H(),{agentName:p,avatarUrl:h,promptToken:m,themeConfig:g,tncConfig:v,interfaceConfig:y,appearanceConfig:w,dynamicVariablesConfig:k,isLoading:S,error:_}=function(e){var t,n,r;const{agentConfig:i,configLoading:a,configError:o,setAgentId:s,setAgentConfig:l,setConfigLoading:c,setConfigError:u}=H(),f=x.useRef(null),p=x.useRef(!1);x.useEffect(()=>{d(null,null,function*(){if(e){if(!(p.current||f.current===e&&i)){f.current&&f.current!==e&&(l(null),f.current=null);try{p.current=!0,c(!0),u(null),s(e);const t=yield G(e);if(!t||!t.widget_config)throw new Error("Invalid agent configuration structure");l(t),f.current=e}catch(_){u(_.message||"Failed to load configuration")}finally{p.current=!1,c(!1)}}}else u("Agent ID is required")})},[e,i,s,l,c,u]);const h=x.useCallback(()=>d(null,null,function*(){if(e)try{f.current=null,p.current=!0,c(!0),u(null);const t=yield G(e);if(!t||!t.widget_config)throw new Error("Invalid agent configuration structure");l(t),f.current=e}catch(_){u(_.message||"Failed to load configuration")}finally{p.current=!1,c(!1)}else u("Agent ID is required")}),[e,l,c,u]),m=(null==i?void 0:i.widget_config)||{},g=((null==i?void 0:i.dynamic_variables_keys)||[]).map(e=>({key:e,required:!0})),v=(null==(t=m.widget_dynamic_variables)?void 0:t.variables)||[],y=new Set(v.map(e=>e.key)),b=[...g.filter(e=>!y.has(e.key)),...v];return{agentConfig:i,agentName:(null==i?void 0:i.agent_name)||"AI Assistant",promptToken:(null==i?void 0:i.prompt_access_token)||null,dynamicVariablesConfig:b,interfaceConfig:m.widget_interface||{},appearanceConfig:m.widget_appearance||{},avatarConfig:m.widget_avatar||{},themeConfig:m.widget_theme||{},tncConfig:m.widget_tnc_config||{},avatarUrl:(null==(r=null==(n=null==i?void 0:i.MediaFiles)?void 0:n.find(e=>"avatar"===e.fileType))?void 0:r.mediaUrl)||null,isLoading:a,error:o,refresh:h}}(e),C=(null==k?void 0:k.length)>0&&0===Object.keys(s).length,E=x.useCallback(e=>{C?(f(e),a("variables")):a(e)},[C,f,a]),T=x.useCallback(e=>{u(e),c&&(a(c),f(null))},[c,u,a,f]),M=l(l({},t),s);if(x.useEffect(()=>{!r||S||!C||"chat"!==i&&"talk"!==i||(f(i),a("variables"))},[r,S,C,i,f,a]),!r)return null;if(S)return b.jsx(vf,{children:b.jsx(yf,{children:b.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-4",children:[b.jsx(At,{className:"h-12 w-12 animate-spin",style:{color:"var(--widget-primary-color, #3B82F6)"}}),b.jsx("p",{className:"text-sm",style:{color:"var(--widget-text-secondary, #6B7280)"},children:"Loading..."})]})})});if(_)return b.jsx(vf,{children:b.jsx(yf,{children:b.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-4 p-6",children:[b.jsx("div",{className:"text-4xl",role:"img","aria-label":"Error",children:"😕"}),b.jsx("h2",{className:"text-lg font-semibold",style:{color:"var(--widget-text-primary, #111827)"},children:"Something went wrong"}),b.jsx("p",{className:"text-sm text-center",style:{color:"var(--widget-text-secondary, #6B7280)"},children:_}),b.jsx("button",{onClick:o,className:"mt-4 px-6 py-2 rounded-lg text-sm font-medium",style:{backgroundColor:"var(--widget-button-secondary-bg, #F3F4F6)",color:"var(--widget-button-secondary-text, #374151)"},children:"Close"})]})})});return b.jsxs(vf,{onClick:o,children:[b.jsx(X,{theme:g,widgetElement:n}),b.jsx(yf,{onClick:e=>e.stopPropagation(),children:(()=>{switch(i){case"variables":return b.jsx(mf,{agentName:p,avatarUrl:h,variablesConfig:k,onSubmit:T,onClose:o});case"chat":return b.jsx(Vn,{agentId:e,agentName:p,promptToken:m,metadata:M,onClose:o,onSwitchToTalk:()=>a("talk")});case"talk":return b.jsx(pf,{agentId:e,agentName:p,avatarUrl:h,promptToken:m,metadata:M,showTranscripts:y.realtime_transcript_of_the_call,idlePromptMessages:w.idle_prompt_messages,onClose:o});default:return b.jsx(Rt,{agentName:p,avatarUrl:h,tncEnabled:v.tnc_enabled,tncContent:v.tnc_content,onTalk:()=>E("talk"),onChat:()=>E("chat"),onClose:o})}})()})]})}function vf({children:e,onClick:t}){return b.jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center animate-fade-in",style:{backgroundColor:"rgba(0, 0, 0, 0.5)",backdropFilter:"blur(4px)"},onClick:t,children:e})}function yf({children:e,onClick:t,className:n}){return b.jsx("div",{className:vt("relative w-full h-full overflow-hidden animate-scale-in","sm:max-w-lg sm:max-h-[90vh] sm:h-[700px] sm:rounded-2xl",n),style:{backgroundColor:"var(--widget-background, #FFFFFF)",boxShadow:"var(--widget-shadow-xl, 0 25px 50px -12px rgba(0, 0, 0, 0.25))"},onClick:t,children:e})}const bf='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--widget-font-family),system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-bottom-0\\.5{bottom:-.125rem}.-right-0\\.5{right:-.125rem}.right-4{right:1rem}.top-4{top:1rem}.z-10{z-index:10}.z-\\[9999\\]{z-index:9999}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1 / 1}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.min-h-0{min-height:0px}.min-h-\\[200px\\]{min-height:200px}.min-h-full{min-height:100%}.w-1\\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[85\\%\\]{max-width:85%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-bl-md{border-bottom-left-radius:.375rem}.rounded-br-md{border-bottom-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-current{background-color:currentColor}.bg-transparent{background-color:transparent}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\\[1px\\]{padding:1px}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-14{padding-top:3.5rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-2{--tw-ring-offset-width: 2px}.ring-offset-4{--tw-ring-offset-width: 4px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--widget-border, #e5e7eb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--widget-text-muted, #9ca3af)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.animate-fade-in{animation:fadeIn .3s ease-out}.animate-slide-up{animation:slideUp .4s ease-out}.animate-slide-down{animation:slideDown .4s ease-out}.animate-scale-in{animation:scaleIn .3s ease-out}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.animate-bounce{animation:bounce .6s ease-in-out infinite}@keyframes loaderSpin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}@keyframes loaderDash{0%{stroke-dashoffset:478}50%{stroke-dashoffset:120}to{stroke-dashoffset:478}}.animate-loader-spin{animation:loaderSpin 1.5s linear infinite,loaderDash 2s ease-in-out infinite;transform-origin:center}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.pt-safe{padding-top:env(safe-area-inset-top,0px)}.px-safe{padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:640px){.sm\\:h-\\[700px\\]{height:700px}.sm\\:max-h-\\[90vh\\]{max-height:90vh}.sm\\:max-w-lg{max-width:32rem}.sm\\:rounded-2xl{border-radius:1rem}}';class wf extends HTMLElement{constructor(){super(),this.root=null,this.shadow=null,this.themeStyleSheet=null,this.agentId=null,this.metadata={}}injectThemeCSS(e){if(this.shadow&&e)try{if(this.themeStyleSheet){const e=this.shadow.adoptedStyleSheets.indexOf(this.themeStyleSheet);e>-1&&(this.shadow.adoptedStyleSheets=this.shadow.adoptedStyleSheets.filter((t,n)=>n!==e))}const t=new CSSStyleSheet;t.replaceSync(e),this.shadow.adoptedStyleSheets=[...this.shadow.adoptedStyleSheets,t],this.themeStyleSheet=t}catch(t){const n=document.createElement("style");n.setAttribute("data-eigi-theme","true"),n.textContent=e;const r=this.shadow.querySelector("[data-eigi-theme]");r&&r.remove(),this.shadow.appendChild(n)}}connectedCallback(){this.agentId=this.getAttribute("agent-id");const e=this.getAttribute("metadata");if(e)try{this.metadata=JSON.parse(e)}catch(sr){}if(!this.agentId)return;const t=this.attachShadow({mode:"open"});this.shadow=t;try{const e=new CSSStyleSheet;e.replaceSync(bf),t.adoptedStyleSheets=[e]}catch(r){const e=document.createElement("style");e.textContent=bf,t.appendChild(e)}const n=document.createElement("div");n.id="eigi-chat-root",t.appendChild(n),this.root=V.createRoot(n),this.render(),this.agentId,"undefined"!=typeof window&&window.EigiChat&&(window.EigiChat._element=this,window.EigiChat._agentId=this.agentId,window.EigiChat._metadata=this.metadata,H.getState().setAgentId(this.agentId))}render(){this.root&&this.root.render(b.jsx(C.StrictMode,{children:b.jsx(gf,{agentId:this.agentId,metadata:this.metadata,widgetElement:this})}))}disconnectedCallback(){this.root&&(this.root.unmount(),this.root=null)}static get observedAttributes(){return["agent-id","metadata","action"]}attributeChangedCallback(e,t,n){if(t!==n)if("agent-id"===e)this.agentId=n,this.render();else if("metadata"===e){try{this.metadata=JSON.parse(n)}catch(sr){}this.render()}else"action"===e&&this.handleAction(n)}handleAction(e){if(!e)return;const t=H.getState();switch(e){case"open":t.openDialog();break;case"close":t.closeDialog();break;case"toggle":t.toggleDialog();break;case"openChat":t.openChat();break;case"openTalk":t.openTalk()}setTimeout(()=>{this.removeAttribute("action")},100)}}"undefined"==typeof window||customElements.get("eigi-chat")||customElements.define("eigi-chat",wf);const kf={_element:null,_agentId:null,_metadata:{},init({agentId:e,metadata:t={}}={}){e&&(this._agentId=e,this._metadata=t,H.getState().setAgentId(e),this._element?(this._element.setAttribute("agent-id",e),Object.keys(t).length>0&&this._element.setAttribute("metadata",JSON.stringify(t))):(this._element=document.createElement("eigi-chat"),this._element.setAttribute("agent-id",e),Object.keys(t).length>0&&this._element.setAttribute("metadata",JSON.stringify(t)),document.body.appendChild(this._element)))},open(){this._ensureInitialized(),H.getState().openDialog()},close(){H.getState().closeDialog()},toggle(){H.getState().toggleDialog()},isOpen:()=>H.getState().isOpen,openChat(){this._ensureInitialized(),H.getState().openChat()},openTalk(){this._ensureInitialized(),H.getState().openTalk()},_ensureInitialized(){!this._element&&this._agentId?this.init({agentId:this._agentId,metadata:this._metadata}):this._agentId}};if("undefined"!=typeof window){const e=document.querySelectorAll("script[data-agent-id]"),t=e[e.length-1];if(t){const e=t.getAttribute("data-agent-id"),n=t.getAttribute("data-metadata");let r={};if(n)try{r=JSON.parse(n)}catch(sr){}e&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{kf.init({agentId:e,metadata:r})}):kf.init({agentId:e,metadata:r}))}window.EigiChat=kf}return e.EigiChatAPI=kf,e.EigiChatElement=wf,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({});"undefined"!=typeof window&&window.EigiChatInternal&&(window.EigiChat=window.EigiChatInternal.EigiChatAPI,window.EigiChatElement=window.EigiChatInternal.EigiChatElement);
48
+ */class Vu{static getParser(e,t=!1){if("string"!=typeof e)throw new Error("UserAgent should be a string");return new Uu(e,t)}static parse(e){return new Uu(e).getResult()}static get BROWSER_MAP(){return Ou}static get ENGINE_MAP(){return ju}static get OS_MAP(){return Lu}static get PLATFORMS_MAP(){return Nu}}function $u(e,t){return Object.keys(t).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})}),e}function Wu(e){return e&&e.__esModule?e.default:e}function qu(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var Hu={},Ju={};qu(Ju,"PipecatClient",()=>Ud);var Qu;Qu=JSON.parse('{"name":"@pipecat-ai/client-js","version":"1.5.0","license":"BSD-2-Clause","main":"dist/index.js","module":"dist/index.module.js","types":"dist/index.d.ts","source":"index.ts","repository":{"type":"git","url":"git+https://github.com/pipecat-ai/pipecat-client-web.git"},"files":["dist","package.json","README.md"],"scripts":{"build":"jest --silent --passWithNoTests && parcel build --no-cache","dev":"parcel watch","lint":"eslint . --report-unused-disable-directives --max-warnings 0","test":"jest"},"jest":{"preset":"ts-jest","testEnvironment":"jsdom"},"devDependencies":{"@jest/globals":"^29.7.0","@types/clone-deep":"^4.0.4","@types/jest":"^29.5.12","@types/uuid":"^10.0.0","eslint":"^9.11.1","eslint-config-prettier":"^9.1.0","eslint-plugin-simple-import-sort":"^12.1.1","jest":"^29.7.0","jest-environment-jsdom":"^30.0.2","ts-jest":"^29.2.5"},"dependencies":{"@types/events":"^3.0.3","bowser":"^2.11.0","clone-deep":"^4.0.1","events":"^3.3.0","typed-emitter":"^2.1.0","uuid":"^10.0.0"}}');var Gu,Yu,Ku={},Xu={};qu(Xu,"TransportStateEnum",()=>Gu),(Yu=Gu||(Gu={})).DISCONNECTED="disconnected",Yu.INITIALIZING="initializing",Yu.INITIALIZED="initialized",Yu.AUTHENTICATING="authenticating",Yu.AUTHENTICATED="authenticated",Yu.CONNECTING="connecting",Yu.CONNECTED="connected",Yu.READY="ready",Yu.DISCONNECTING="disconnecting",Yu.ERROR="error";var Zu={};qu(Zu,"RTVIError",()=>ed),qu(Zu,"ConnectionTimeoutError",()=>td),qu(Zu,"StartBotError",()=>nd),qu(Zu,"TransportStartError",()=>rd),qu(Zu,"InvalidTransportParamsError",()=>id),qu(Zu,"BotNotReadyError",()=>ad),qu(Zu,"BotAlreadyStartedError",()=>od),qu(Zu,"UnsupportedFeatureError",()=>sd),qu(Zu,"DeviceError",()=>ld);class ed extends Error{constructor(e,t){super(e),this.status=t}}class td extends ed{constructor(e){super(null!=e?e:"Bot did not enter ready state within the specified timeout period.")}}class nd extends ed{constructor(e,t){super(null!=e?e:"Failed to connect / invalid auth bundle from base url",null!=t?t:500),this.error="invalid-request-error"}}class rd extends ed{constructor(e){super(null!=e?e:"Unable to connect to transport")}}class id extends ed{constructor(e){super(null!=e?e:"Invalid transport connection parameters")}}class ad extends ed{constructor(e){super(null!=e?e:"Attempt to call action on transport when not in 'ready' state.")}}class od extends ed{constructor(e){super(null!=e?e:"Pipecat client has already been started. Please call disconnect() before starting again.")}}class sd extends ed{constructor(e,t,n){let r=`${e} not supported${n?`: ${n}`:""}`;t&&(r=`${t} does not support ${e}${n?`: ${n}`:""}`),super(r),this.feature=e}}class ld extends ed{constructor(e,t,n,r){super(null!=n?n:`Device error for ${e.join(", ")}: ${t}`),this.devices=e,this.type=t,this.details=r}}var cd,ud,dd={};qu(dd,"RTVIEvent",()=>cd),(ud=cd||(cd={})).Connected="connected",ud.Disconnected="disconnected",ud.TransportStateChanged="transportStateChanged",ud.BotStarted="botStarted",ud.BotConnected="botConnected",ud.BotReady="botReady",ud.BotDisconnected="botDisconnected",ud.Error="error",ud.ServerMessage="serverMessage",ud.ServerResponse="serverResponse",ud.MessageError="messageError",ud.Metrics="metrics",ud.BotStartedSpeaking="botStartedSpeaking",ud.BotStoppedSpeaking="botStoppedSpeaking",ud.UserStartedSpeaking="userStartedSpeaking",ud.UserStoppedSpeaking="userStoppedSpeaking",ud.UserTranscript="userTranscript",ud.BotOutput="botOutput",ud.BotTranscript="botTranscript",ud.BotLlmText="botLlmText",ud.BotLlmStarted="botLlmStarted",ud.BotLlmStopped="botLlmStopped",ud.LLMFunctionCall="llmFunctionCall",ud.BotLlmSearchResponse="botLlmSearchResponse",ud.BotTtsText="botTtsText",ud.BotTtsStarted="botTtsStarted",ud.BotTtsStopped="botTtsStopped",ud.ParticipantConnected="participantConnected",ud.ParticipantLeft="participantLeft",ud.TrackStarted="trackStarted",ud.TrackStopped="trackStopped",ud.ScreenTrackStarted="screenTrackStarted",ud.ScreenTrackStopped="screenTrackStopped",ud.ScreenShareError="screenShareError",ud.LocalAudioLevel="localAudioLevel",ud.RemoteAudioLevel="remoteAudioLevel",ud.AvailableCamsUpdated="availableCamsUpdated",ud.AvailableMicsUpdated="availableMicsUpdated",ud.AvailableSpeakersUpdated="availableSpeakersUpdated",ud.CamUpdated="camUpdated",ud.MicUpdated="micUpdated",ud.SpeakerUpdated="speakerUpdated",ud.DeviceError="deviceError";var fd={};qu(fd,"RTVI_PROTOCOL_VERSION",()=>pd),qu(fd,"RTVI_MESSAGE_LABEL",()=>hd),qu(fd,"RTVIMessageType",()=>md),qu(fd,"AggregationType",()=>vd),qu(fd,"setAboutClient",()=>wd),qu(fd,"RTVIMessage",()=>kd);const pd="1.0.0",hd="rtvi-ai";var md,gd,vd,yd;let bd;function wd(e){bd=bd?l(l({},bd),e):e}(gd=md||(md={})).CLIENT_READY="client-ready",gd.DISCONNECT_BOT="disconnect-bot",gd.CLIENT_MESSAGE="client-message",gd.SEND_TEXT="send-text",gd.APPEND_TO_CONTEXT="append-to-context",gd.BOT_READY="bot-ready",gd.ERROR="error",gd.METRICS="metrics",gd.SERVER_MESSAGE="server-message",gd.SERVER_RESPONSE="server-response",gd.ERROR_RESPONSE="error-response",gd.APPEND_TO_CONTEXT_RESULT="append-to-context-result",gd.USER_TRANSCRIPTION="user-transcription",gd.BOT_OUTPUT="bot-output",gd.BOT_TRANSCRIPTION="bot-transcription",gd.USER_STARTED_SPEAKING="user-started-speaking",gd.USER_STOPPED_SPEAKING="user-stopped-speaking",gd.BOT_STARTED_SPEAKING="bot-started-speaking",gd.BOT_STOPPED_SPEAKING="bot-stopped-speaking",gd.USER_LLM_TEXT="user-llm-text",gd.BOT_LLM_TEXT="bot-llm-text",gd.BOT_LLM_STARTED="bot-llm-started",gd.BOT_LLM_STOPPED="bot-llm-stopped",gd.LLM_FUNCTION_CALL="llm-function-call",gd.LLM_FUNCTION_CALL_RESULT="llm-function-call-result",gd.BOT_LLM_SEARCH_RESPONSE="bot-llm-search-response",gd.BOT_TTS_TEXT="bot-tts-text",gd.BOT_TTS_STARTED="bot-tts-started",gd.BOT_TTS_STOPPED="bot-tts-stopped",(yd=vd||(vd={})).WORD="word",yd.SENTENCE="sentence";class kd{constructor(e,t,n){this.label=hd,this.type=e,this.data=t,this.id=n||Pu().slice(0,8)}static clientReady(){return new kd(md.CLIENT_READY,{version:pd,about:bd||{library:Qu.name,library_version:Qu.version}})}static disconnectBot(){return new kd(md.DISCONNECT_BOT,{})}static error(e,t=!1){return new kd(md.ERROR,{message:e,fatal:t})}}function Sd(e,t,n){const r=n.value;return n.value=function(...e){if("ready"===this.state)return r.apply(this,e);throw new ad(`Attempt to call ${t.toString()} when transport not in ready state. Await connect() first.`)},n}function _d(e,t,n){const r=n.value,i=["authenticating","connecting","connected","ready"];return n.value=function(...e){if(i.includes(this.state))throw new od(`Attempt to call ${t.toString()} when client already started. Please call disconnect() before starting again.`);return r.apply(this,e)},n}$u(Ku,Xu),$u(Ku,Zu),$u(Ku,dd),$u(Ku,fd);var xd={};qu(xd,"MessageDispatcher",()=>Ad);var Cd,Ed,Td={};qu(Td,"LogLevel",()=>Cd),qu(Td,"logger",()=>Pd),(Ed=Cd||(Cd={}))[Ed.NONE=0]="NONE",Ed[Ed.ERROR=1]="ERROR",Ed[Ed.WARN=2]="WARN",Ed[Ed.INFO=3]="INFO",Ed[Ed.DEBUG=4]="DEBUG";class Md{constructor(){this.level=Cd.DEBUG}static getInstance(){return Md.instance||(Md.instance=new Md),Md.instance}setLevel(e){this.level=e}debug(...e){this.level>=Cd.DEBUG&&console.debug(...e)}info(...e){this.level>=Cd.INFO&&console.info(...e)}warn(...e){this.level>=Cd.WARN&&console.warn(...e)}error(...e){this.level>=Cd.ERROR&&console.error(...e)}}const Pd=Md.getInstance();class Ad{constructor(e){this._queue=new Array,this._gcInterval=void 0,this._queue=[],this._sendMethod=e}disconnect(){this.clearQueue(),clearInterval(this._gcInterval),this._gcInterval=void 0}dispatch(e,t=md.CLIENT_MESSAGE,n=1e4){this._gcInterval||(this._gcInterval=setInterval(()=>{this._gc()},2e3));const r=new kd(t,e),i=new Promise((e,t)=>{this._queue.push({message:r,timestamp:Date.now(),timeout:n,resolve:e,reject:t})});Pd.debug("[MessageDispatcher] dispatch",r);try{this._sendMethod(r)}catch(sr){return Pd.error("[MessageDispatcher] Error sending message",sr),Promise.reject(sr)}return this._gc(),i}clearQueue(){this._queue=[]}_resolveReject(e,t=!0){const n=this._queue.find(t=>t.message.id===e.id);return n&&(t?(Pd.debug("[MessageDispatcher] Resolve",e),n.resolve(e)):(Pd.debug("[MessageDispatcher] Reject",e),n.reject(e)),this._queue=this._queue.filter(t=>t.message.id!==e.id),Pd.debug("[MessageDispatcher] Queue",this._queue)),e}resolve(e){return this._resolveReject(e,!0)}reject(e){return this._resolveReject(e,!1)}_gc(){const e=[];this._queue=this._queue.filter(t=>{const n=Date.now()-t.timestamp<t.timeout;return n||e.push(t),n}),e.forEach(e=>{e.message.type===md.CLIENT_MESSAGE&&e.reject(new kd(md.ERROR_RESPONSE,{error:"Timed out waiting for response",msgType:e.message.data.t,data:e.message.data.d,fatal:!1}))}),Pd.debug("[MessageDispatcher] GC",this._queue)}}var Od={};function Nd(e){if("object"==typeof e&&null!==e&&Object.keys(e).includes("endpoint")){const t=e.endpoint;return"string"==typeof t||t instanceof URL||"undefined"!=typeof Request&&t instanceof Request}return!1}function Ld(e,t){return d(this,null,function*(){let n;return t||(t=new AbortController),new Promise((r,i)=>{d(null,null,function*(){var a;e.timeout&&(n=setTimeout(()=>d(null,null,function*(){t.abort(),i(new Error("Timed out"))}),e.timeout)),Pd.debug(`[Pipecat Client] Fetching from ${e.endpoint}`),fetch(e.endpoint,{method:"POST",mode:"cors",headers:new Headers(l({"Content-Type":"application/json"},Object.fromEntries((null!=(a=e.headers)?a:new Headers).entries()))),body:JSON.stringify(e.requestData),signal:null==t?void 0:t.signal}).then(t=>{Pd.debug(`[Pipecat Client] Received response from ${e.endpoint}`,t),t.ok||i(t),t.json().then(e=>r(e))}).catch(e=>{Pd.error(`[Pipecat Client] Error fetching: ${e}`),i(e)}).finally(()=>{n&&clearTimeout(n)})})})})}qu(Od,"isAPIRequest",()=>Nd),qu(Od,"makeRequest",()=>Ld);var jd={};qu(jd,"Transport",()=>Id),qu(jd,"TransportWrapper",()=>Fd);class Id{constructor(){this._state="disconnected"}connect(e){this._abortController=new AbortController;let t=e;try{t=this._validateConnectionParams(e)}catch(sr){throw new ed(`Invalid connection params: ${sr.message}. Please check your connection params and try again.`)}return this._connect(t)}get startBotParams(){return this._startBotParams}set startBotParams(e){this._startBotParams=e}disconnect(){return this._abortController&&this._abortController.abort(),this._disconnect()}}class Fd{constructor(e){this._transport=e,this._proxy=new Proxy(this._transport,{get:(e,t,n)=>{if("function"==typeof e[t]){let n;switch(String(t)){case"initialize":n="Direct calls to initialize() are disabled and used internally by the PipecatClient.";break;case"initDevices":n="Direct calls to initDevices() are disabled. Please use the PipecatClient.initDevices() wrapper or let PipecatClient.connect() call it for you.";break;case"sendReadyMessage":n="Direct calls to sendReadyMessage() are disabled and used internally by the PipecatClient.";break;case"connect":n="Direct calls to connect() are disabled. Please use the PipecatClient.connect() wrapper.";break;case"disconnect":n="Direct calls to disconnect() are disabled. Please use the PipecatClient.disconnect() wrapper."}return n?()=>{throw new Error(n)}:(...n)=>e[t](...n)}return Reflect.get(e,t,n)}})}get proxy(){return this._proxy}}var Rd={};function Dd(){var e,t,n,r,i,a;let o={library:Qu.name,library_version:Qu.version,platform_details:{}},s=null;if(null==(e=null==window?void 0:window.navigator)?void 0:e.userAgent)try{s=Vu.parse(window.navigator.userAgent)}catch(l){}return(null==(t=null==s?void 0:s.browser)?void 0:t.name)&&(o.platform_details.browser=s.browser.name),"Safari"!==(null==(n=null==s?void 0:s.browser)?void 0:n.name)||s.browser.version?(null==(r=null==s?void 0:s.browser)?void 0:r.version)&&(o.platform_details.browser_version=s.browser.version):o.platform_details.browser_version="Web View",(null==(i=null==s?void 0:s.platform)?void 0:i.type)&&(o.platform_details.platform_type=s.platform.type),(null==(a=null==s?void 0:s.engine)?void 0:a.name)&&(o.platform_details.engine=s.engine.name),(null==s?void 0:s.os)&&(o.platform=s.os.name,o.platform_version=s.os.version),o}qu(Rd,"learnAboutClient",()=>Dd);var Bd=function(e,t,n,r){var i,a=arguments.length,o=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o};class zd extends Su{}class Ud extends zd{constructor(e){var t,n,r;super(),this._functionCallCallbacks={},this._botTranscriptionWarned=!1,wd(Dd()),this._transport=e.transport,this._transportWrapper=new Fd(this._transport);const i=c(l({},e.callbacks),{onMessageError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onMessageError)||r.call(n,t),this.emit(cd.MessageError,t)},onError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onError)||r.call(n,t);try{this.emit(cd.Error,t)}catch(sr){Pd.debug("Could not emit error",t)}const i=t.data;(null==i?void 0:i.fatal)&&(Pd.error("Fatal error reported. Disconnecting..."),this.disconnect())},onConnected:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onConnected)||n.call(t),this.emit(cd.Connected)},onDisconnected:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onDisconnected)||n.call(t),this.emit(cd.Disconnected)},onTransportStateChanged:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onTransportStateChanged)||r.call(n,t),this.emit(cd.TransportStateChanged,t)},onParticipantJoined:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onParticipantJoined)||r.call(n,t),this.emit(cd.ParticipantConnected,t)},onParticipantLeft:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onParticipantLeft)||r.call(n,t),this.emit(cd.ParticipantLeft,t)},onTrackStarted:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onTrackStarted)||i.call(r,t,n),this.emit(cd.TrackStarted,t,n)},onTrackStopped:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onTrackStopped)||i.call(r,t,n),this.emit(cd.TrackStopped,t,n)},onScreenTrackStarted:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onScreenTrackStarted)||i.call(r,t,n),this.emit(cd.ScreenTrackStarted,t,n)},onScreenTrackStopped:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onScreenTrackStopped)||i.call(r,t,n),this.emit(cd.ScreenTrackStopped,t,n)},onScreenShareError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onScreenShareError)||r.call(n,t),this.emit(cd.ScreenShareError,t)},onAvailableCamsUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableCamsUpdated)||r.call(n,t),this.emit(cd.AvailableCamsUpdated,t)},onAvailableMicsUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableMicsUpdated)||r.call(n,t),this.emit(cd.AvailableMicsUpdated,t)},onAvailableSpeakersUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onAvailableSpeakersUpdated)||r.call(n,t),this.emit(cd.AvailableSpeakersUpdated,t)},onCamUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onCamUpdated)||r.call(n,t),this.emit(cd.CamUpdated,t)},onMicUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onMicUpdated)||r.call(n,t),this.emit(cd.MicUpdated,t)},onSpeakerUpdated:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onSpeakerUpdated)||r.call(n,t),this.emit(cd.SpeakerUpdated,t)},onDeviceError:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onDeviceError)||r.call(n,t),this.emit(cd.DeviceError,t)},onBotStarted:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotStarted)||r.call(n,t),this.emit(cd.BotStarted,t)},onBotConnected:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotConnected)||r.call(n,t),this.emit(cd.BotConnected,t)},onBotReady:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotReady)||r.call(n,t),this.emit(cd.BotReady,t)},onBotDisconnected:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotDisconnected)||r.call(n,t),this.emit(cd.BotDisconnected,t)},onBotStartedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotStartedSpeaking)||n.call(t),this.emit(cd.BotStartedSpeaking)},onBotStoppedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotStoppedSpeaking)||n.call(t),this.emit(cd.BotStoppedSpeaking)},onRemoteAudioLevel:(t,n)=>{var r,i;null==(i=null==(r=null==e?void 0:e.callbacks)?void 0:r.onRemoteAudioLevel)||i.call(r,t,n),this.emit(cd.RemoteAudioLevel,t,n)},onUserStartedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onUserStartedSpeaking)||n.call(t),this.emit(cd.UserStartedSpeaking)},onUserStoppedSpeaking:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onUserStoppedSpeaking)||n.call(t),this.emit(cd.UserStoppedSpeaking)},onLocalAudioLevel:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onLocalAudioLevel)||r.call(n,t),this.emit(cd.LocalAudioLevel,t)},onUserTranscript:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onUserTranscript)||r.call(n,t),this.emit(cd.UserTranscript,t)},onBotOutput:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotOutput)||r.call(n,t),this.emit(cd.BotOutput,t)},onBotTranscript:t=>{var n,r;this._botTranscriptionWarned||(Pd.warn("[Pipecat Client] Bot transcription is deprecated. Please use the onBotOutput instead."),this._botTranscriptionWarned=!0),null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotTranscript)||r.call(n,t),this.emit(cd.BotTranscript,t)},onBotLlmText:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotLlmText)||r.call(n,t),this.emit(cd.BotLlmText,t)},onBotLlmStarted:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotLlmStarted)||n.call(t),this.emit(cd.BotLlmStarted)},onBotLlmStopped:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotLlmStopped)||n.call(t),this.emit(cd.BotLlmStopped)},onBotTtsText:t=>{var n,r;null==(r=null==(n=null==e?void 0:e.callbacks)?void 0:n.onBotTtsText)||r.call(n,t),this.emit(cd.BotTtsText,t)},onBotTtsStarted:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotTtsStarted)||n.call(t),this.emit(cd.BotTtsStarted)},onBotTtsStopped:()=>{var t,n;null==(n=null==(t=null==e?void 0:e.callbacks)?void 0:t.onBotTtsStopped)||n.call(t),this.emit(cd.BotTtsStopped)}});this._options=c(l({},e),{callbacks:i,enableMic:null==(t=e.enableMic)||t,enableCam:null!=(n=e.enableCam)&&n,enableScreenShare:null!=(r=e.enableScreenShare)&&r}),this._initialize(),Pd.debug("[Pipecat Client] Initialized",this.version)}setLogLevel(e){Pd.setLevel(e)}initDevices(){return d(this,null,function*(){Pd.debug("[Pipecat Client] Initializing devices..."),yield this._transport.initDevices()})}startBot(e){return d(this,null,function*(){var t,n,r,i,a,o;let s;this._transport.state="authenticating",this._transport.startBotParams=e,this._abortController=new AbortController;try{s=yield Ld(e,this._abortController)}catch(sr){let a,o="An unknown error occurred while starting the bot.";if(sr instanceof Response){const r=yield sr.json();o=null!=(n=null!=(t=r.info)?t:r.detail)?n:sr.statusText,a=sr.status}else sr instanceof Error&&(o=sr.message);throw null==(i=null==(r=this._options.callbacks)?void 0:r.onError)||i.call(r,new kd(md.ERROR_RESPONSE,{message:o,fatal:!0})),new nd(o,a)}return this._transport.state="authenticated",null==(o=null==(a=this._options.callbacks)?void 0:a.onBotStarted)||o.call(a,s),s})}connect(e){return d(this,null,function*(){return e&&Nd(e)?(Pd.warn("Calling connect with an API endpoint is deprecated. Use startBotAndConnect() instead."),this.startBotAndConnect(e)):new Promise((t,n)=>{(()=>{d(this,null,function*(){this._connectResolve=t,"disconnected"===this._transport.state&&(yield this._transport.initDevices());try{yield this._transport.connect(e),yield this._transport.sendReadyMessage()}catch(sr){return this.disconnect(),void n(sr)}})})()})})}startBotAndConnect(e){return d(this,null,function*(){"disconnected"===this._transport.state&&(yield this._transport.initDevices());const t=yield this.startBot(e);return this.connect(t)})}disconnect(){return d(this,null,function*(){yield this._transport.disconnect(),this._messageDispatcher.disconnect()})}_initialize(){this._transport.initialize(this._options,this.handleMessage.bind(this)),this._messageDispatcher=new Ad(this._transport.sendMessage.bind(this._transport))}get connected(){return["connected","ready"].includes(this._transport.state)}get transport(){return this._transportWrapper.proxy}get state(){return this._transport.state}get version(){return Wu(Qu).version}getAllMics(){return d(this,null,function*(){return yield this._transport.getAllMics()})}getAllCams(){return d(this,null,function*(){return yield this._transport.getAllCams()})}getAllSpeakers(){return d(this,null,function*(){return yield this._transport.getAllSpeakers()})}get selectedMic(){return this._transport.selectedMic}get selectedCam(){return this._transport.selectedCam}get selectedSpeaker(){return this._transport.selectedSpeaker}updateMic(e){this._transport.updateMic(e)}updateCam(e){this._transport.updateCam(e)}updateSpeaker(e){this._transport.updateSpeaker(e)}enableMic(e){this._transport.enableMic(e)}get isMicEnabled(){return this._transport.isMicEnabled}enableCam(e){this._transport.enableCam(e)}get isCamEnabled(){return this._transport.isCamEnabled}tracks(){return this._transport.tracks()}enableScreenShare(e){return this._transport.enableScreenShare(e)}get isSharingScreen(){return this._transport.isSharingScreen}sendClientMessage(e,t){this._transport.sendMessage(new kd(md.CLIENT_MESSAGE,{t:e,d:t}))}sendClientRequest(e,t,n){return d(this,null,function*(){const r={t:e,d:t};return(yield this._messageDispatcher.dispatch(r,md.CLIENT_MESSAGE,n)).data.d})}registerFunctionCallHandler(e,t){this._functionCallCallbacks[e]=t}unregisterFunctionCallHandler(e){delete this._functionCallCallbacks[e]}unregisterAllFunctionCallHandlers(){this._functionCallCallbacks={}}appendToContext(e){return d(this,null,function*(){return Pd.warn("appendToContext() is deprecated. Use sendText() instead."),yield this._transport.sendMessage(new kd(md.APPEND_TO_CONTEXT,{role:e.role,content:e.content,run_immediately:e.run_immediately})),!0})}sendText(e){return d(this,arguments,function*(e,t={}){yield this._transport.sendMessage(new kd(md.SEND_TEXT,{content:e,options:t}))})}disconnectBot(){this._transport.sendMessage(new kd(md.DISCONNECT_BOT,{}))}handleMessage(e){var t,n,r,i,a,o,s,l,c,u,d,f,p,h,m,g,v,y,b,w,k,S,_,x,C,E,T,M,P,A,O,N,L,j,I,F,R,D,B,z,U;switch(Pd.debug("[RTVI Message]",e),e.type){case md.BOT_READY:{const i=e.data,a=i.version?i.version.split(".").map(Number):[0,0,0];Pd.debug(`[Pipecat Client] Bot is ready. Version: ${i.version}`),a[0]<1&&Pd.warn("[Pipecat Client] Bot version is less than 1.0.0, which may not be compatible with this client."),null==(t=this._connectResolve)||t.call(this,e.data),null==(r=null==(n=this._options.callbacks)?void 0:n.onBotReady)||r.call(n,e.data);break}case md.ERROR:null==(a=null==(i=this._options.callbacks)?void 0:i.onError)||a.call(i,e);break;case md.SERVER_RESPONSE:this._messageDispatcher.resolve(e);break;case md.ERROR_RESPONSE:{const t=this._messageDispatcher.reject(e);null==(s=null==(o=this._options.callbacks)?void 0:o.onMessageError)||s.call(o,t);break}case md.USER_STARTED_SPEAKING:null==(c=null==(l=this._options.callbacks)?void 0:l.onUserStartedSpeaking)||c.call(l);break;case md.USER_STOPPED_SPEAKING:null==(d=null==(u=this._options.callbacks)?void 0:u.onUserStoppedSpeaking)||d.call(u);break;case md.BOT_STARTED_SPEAKING:null==(p=null==(f=this._options.callbacks)?void 0:f.onBotStartedSpeaking)||p.call(f);break;case md.BOT_STOPPED_SPEAKING:null==(m=null==(h=this._options.callbacks)?void 0:h.onBotStoppedSpeaking)||m.call(h);break;case md.USER_TRANSCRIPTION:{const t=e.data;null==(v=null==(g=this._options.callbacks)?void 0:g.onUserTranscript)||v.call(g,t);break}case md.BOT_OUTPUT:null==(b=null==(y=this._options.callbacks)?void 0:y.onBotOutput)||b.call(y,e.data);break;case md.BOT_TRANSCRIPTION:null==(k=null==(w=this._options.callbacks)?void 0:w.onBotTranscript)||k.call(w,e.data);break;case md.BOT_LLM_TEXT:null==(_=null==(S=this._options.callbacks)?void 0:S.onBotLlmText)||_.call(S,e.data);break;case md.BOT_LLM_STARTED:null==(C=null==(x=this._options.callbacks)?void 0:x.onBotLlmStarted)||C.call(x);break;case md.BOT_LLM_STOPPED:null==(T=null==(E=this._options.callbacks)?void 0:E.onBotLlmStopped)||T.call(E);break;case md.BOT_TTS_TEXT:null==(P=null==(M=this._options.callbacks)?void 0:M.onBotTtsText)||P.call(M,e.data);break;case md.BOT_TTS_STARTED:null==(O=null==(A=this._options.callbacks)?void 0:A.onBotTtsStarted)||O.call(A);break;case md.BOT_TTS_STOPPED:null==(L=null==(N=this._options.callbacks)?void 0:N.onBotTtsStopped)||L.call(N);break;case md.METRICS:null==(I=null==(j=this._options.callbacks)?void 0:j.onMetrics)||I.call(j,e.data),this.emit(cd.Metrics,e.data);break;case md.SERVER_MESSAGE:null==(R=null==(F=this._options.callbacks)?void 0:F.onServerMessage)||R.call(F,e.data),this.emit(cd.ServerMessage,e.data);break;case md.LLM_FUNCTION_CALL:{const t=e.data,n=this._functionCallCallbacks[t.function_name];if(n){n({functionName:t.function_name,arguments:t.args}).then(e=>{null!=e&&this._transport.sendMessage(new kd(md.LLM_FUNCTION_CALL_RESULT,{function_name:t.function_name,tool_call_id:t.tool_call_id,arguments:t.args,result:e}))})}null==(B=null==(D=this._options.callbacks)?void 0:D.onLLMFunctionCall)||B.call(D,t),this.emit(cd.LLMFunctionCall,t);break}case md.BOT_LLM_SEARCH_RESPONSE:{const t=e.data;null==(U=null==(z=this._options.callbacks)?void 0:z.onBotLlmSearchResponse)||U.call(z,t),this.emit(cd.BotLlmSearchResponse,t);break}default:Pd.debug("[Pipecat Client] Unrecognized message type",e.type)}}}function Vd(e){return e&&e.__esModule?e.default:e}function $d(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}Bd([_d],Ud.prototype,"startBot",null),Bd([_d],Ud.prototype,"connect",null),Bd([_d],Ud.prototype,"startBotAndConnect",null),Bd([Sd],Ud.prototype,"sendClientMessage",null),Bd([Sd],Ud.prototype,"sendClientRequest",null),Bd([Sd],Ud.prototype,"appendToContext",null),Bd([Sd],Ud.prototype,"sendText",null),Bd([Sd],Ud.prototype,"disconnectBot",null),$u(Hu,Ju),$u(Hu,xd),$u(Hu,Td),$u(Hu,Od),$u(Hu,jd),$u(Hu,Rd);var Wd={};$d(Wd,"DailyRTVIMessageType",()=>sf),$d(Wd,"DailyTransport",()=>uf);class qd{static floatTo16BitPCM(e){const t=new ArrayBuffer(2*e.length),n=new DataView(t);let r=0;for(let i=0;i<e.length;i++,r+=2){let t=Math.max(-1,Math.min(1,e[i]));n.setInt16(r,t<0?32768*t:32767*t,!0)}return t}static mergeBuffers(e,t){const n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer}_packData(e,t){return[new Uint8Array([t,t>>8]),new Uint8Array([t,t>>8,t>>16,t>>24])][e]}pack(e,t){if(!(null==t?void 0:t.bitsPerSample))throw new Error('Missing "bitsPerSample"');if(!(null==t?void 0:t.channels))throw new Error('Missing "channels"');if(!(null==t?void 0:t.data))throw new Error('Missing "data"');const{bitsPerSample:n,channels:r,data:i}=t,a=["RIFF",this._packData(1,52),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,r.length),this._packData(1,e),this._packData(1,e*r.length*n/8),this._packData(0,r.length*n/8),this._packData(0,n),"data",this._packData(1,r[0].length*r.length*n/8),i],o=new Blob(a,{type:"audio/mpeg"});return{blob:o,url:URL.createObjectURL(o),channelCount:r.length,sampleRate:e,duration:i.byteLength/(r.length*e*2)}}}globalThis.WavPacker=qd;const Hd=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],Jd=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Qd=[],Gd=[];for(let Sf=1;Sf<=8;Sf++)for(let e=0;e<Hd.length;e++){const t=Hd[e];Qd.push(t/Math.pow(2,8-Sf)),Gd.push(Jd[e]+Sf)}const Yd=[32,2e3],Kd=Qd.filter((e,t)=>Qd[t]>Yd[0]&&Qd[t]<Yd[1]),Xd=Gd.filter((e,t)=>Qd[t]>Yd[0]&&Qd[t]<Yd[1]);class Zd{static getFrequencies(e,t,n,r="frequency",i=-100,a=-30){n||(n=new Float32Array(e.frequencyBinCount),e.getFloatFrequencyData(n));const o=t/2,s=1/n.length*o;let l,c,u;if("music"===r||"voice"===r){const e="voice"===r?Kd:Qd,t=Array(e.length).fill(i);for(let r=0;r<n.length;r++){const i=r*s,a=n[r];for(let n=e.length-1;n>=0;n--)if(i>e[n]){t[n]=Math.max(t[n],a);break}}l=t,c="voice"===r?Kd:Qd,u="voice"===r?Xd:Gd}else l=Array.from(n),c=l.map((e,t)=>s*t),u=c.map(e=>`${e.toFixed(2)} Hz`);const d=l.map(e=>Math.max(0,Math.min((e-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:c,labels:u}}constructor(e,t=null){if(this.fftResults=[],t){const{length:n,sampleRate:r}=t,i=new OfflineAudioContext({length:n,sampleRate:r}),a=i.createBufferSource();a.buffer=t;const o=i.createAnalyser();o.fftSize=8192,o.smoothingTimeConstant=.1,a.connect(o);const s=1/60,l=n/r,c=e=>{const t=s*e;t<l&&i.suspend(t).then(()=>{const t=new Float32Array(o.frequencyBinCount);o.getFloatFrequencyData(t),this.fftResults.push(t),c(e+1)}),1===e?i.startRendering():i.resume()};a.start(0),c(1),this.audio=e,this.context=i,this.analyser=o,this.sampleRate=r,this.audioBuffer=t}else{const t=new AudioContext,n=t.createMediaElementSource(e),r=t.createAnalyser();r.fftSize=8192,r.smoothingTimeConstant=.1,n.connect(r),r.connect(t.destination),this.audio=e,this.context=t,this.analyser=r,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(e="frequency",t=-100,n=-30){let r=null;if(this.audioBuffer&&this.fftResults.length){const e=this.audio.currentTime/this.audio.duration,t=Math.min(e*this.fftResults.length|0,this.fftResults.length-1);r=this.fftResults[t]}return Zd.getFrequencies(this.analyser,this.sampleRate,r,e,t,n)}resumeIfSuspended(){return d(this,null,function*(){return"suspended"===this.context.state&&(yield this.context.resume()),!0})}}globalThis.AudioAnalysis=Zd;const ef=new Blob(["\nclass StreamProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.hasStarted = false;\n this.hasInterrupted = false;\n this.outputBuffers = [];\n this.bufferLength = 128;\n this.write = { buffer: new Float32Array(this.bufferLength), trackId: null };\n this.writeOffset = 0;\n this.trackSampleOffsets = {};\n this.port.onmessage = (event) => {\n if (event.data) {\n const payload = event.data;\n if (payload.event === 'write') {\n const int16Array = payload.buffer;\n const float32Array = new Float32Array(int16Array.length);\n for (let i = 0; i < int16Array.length; i++) {\n float32Array[i] = int16Array[i] / 0x8000; // Convert Int16 to Float32\n }\n this.writeData(float32Array, payload.trackId);\n } else if (\n payload.event === 'offset' ||\n payload.event === 'interrupt'\n ) {\n const requestId = payload.requestId;\n const trackId = this.write.trackId;\n const offset = this.trackSampleOffsets[trackId] || 0;\n this.port.postMessage({\n event: 'offset',\n requestId,\n trackId,\n offset,\n });\n if (payload.event === 'interrupt') {\n this.hasInterrupted = true;\n }\n } else {\n throw new Error(`Unhandled event \"${payload.event}\"`);\n }\n }\n };\n }\n\n writeData(float32Array, trackId = null) {\n let { buffer } = this.write;\n let offset = this.writeOffset;\n for (let i = 0; i < float32Array.length; i++) {\n buffer[offset++] = float32Array[i];\n if (offset >= buffer.length) {\n this.outputBuffers.push(this.write);\n this.write = { buffer: new Float32Array(this.bufferLength), trackId };\n buffer = this.write.buffer;\n offset = 0;\n }\n }\n this.writeOffset = offset;\n return true;\n }\n\n process(inputs, outputs, parameters) {\n const output = outputs[0];\n const outputChannelData = output[0];\n const outputBuffers = this.outputBuffers;\n if (this.hasInterrupted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else if (outputBuffers.length) {\n this.hasStarted = true;\n const { buffer, trackId } = outputBuffers.shift();\n for (let i = 0; i < outputChannelData.length; i++) {\n outputChannelData[i] = buffer[i] || 0;\n }\n if (trackId) {\n this.trackSampleOffsets[trackId] =\n this.trackSampleOffsets[trackId] || 0;\n this.trackSampleOffsets[trackId] += buffer.length;\n }\n return true;\n } else if (this.hasStarted) {\n this.port.postMessage({ event: 'stop' });\n return false;\n } else {\n return true;\n }\n }\n}\n\nregisterProcessor('stream_processor', StreamProcessor);\n"],{type:"application/javascript"}),tf=URL.createObjectURL(ef);globalThis.WavStreamPlayer=class{constructor({sampleRate:e=44100}={}){this.scriptSrc=tf,this.sampleRate=e,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}connect(){return d(this,null,function*(){this.context=new AudioContext({sampleRate:this.sampleRate}),this._speakerID&&this.context.setSinkId(this._speakerID),"suspended"===this.context.state&&(yield this.context.resume());try{yield this.context.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const e=this.context.createAnalyser();return e.fftSize=8192,e.smoothingTimeConstant=.1,this.analyser=e,!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}updateSpeaker(e){return d(this,null,function*(){const t=this._speakerID;if(this._speakerID=e,this.context)try{"default"===e?yield this.context.setSinkId():yield this.context.setSinkId(e)}catch(sr){console.error(`Could not set sinkId to ${e}: ${sr}`),this._speakerID=t}})}_start(){const e=new AudioWorkletNode(this.context,"stream_processor");return e.connect(this.context.destination),e.port.onmessage=t=>{const{event:n}=t.data;if("stop"===n)e.disconnect(),this.stream=null;else if("offset"===n){const{requestId:e,trackId:n,offset:r}=t.data,i=r/this.sampleRate;this.trackSampleOffsets[e]={trackId:n,offset:r,currentTime:i}}},this.analyser.disconnect(),e.connect(this.analyser),this.stream=e,!0}add16BitPCM(e,t="default"){if("string"!=typeof t)throw new Error("trackId must be a string");if(this.interruptedTrackIds[t])return;let n;if(this.stream||this._start(),e instanceof Int16Array)n=e;else{if(!(e instanceof ArrayBuffer))throw new Error("argument must be Int16Array or ArrayBuffer");n=new Int16Array(e)}return this.stream.port.postMessage({event:"write",buffer:n,trackId:t}),n}getTrackSampleOffset(e=!1){return d(this,null,function*(){if(!this.stream)return null;const t=crypto.randomUUID();let n;for(this.stream.port.postMessage({event:e?"interrupt":"offset",requestId:t});!n;)n=this.trackSampleOffsets[t],yield new Promise(e=>setTimeout(()=>e(),1));const{trackId:r}=n;return e&&r&&(this.interruptedTrackIds[r]=!0),n})}interrupt(){return d(this,null,function*(){return this.getTrackSampleOffset(!0)})}};const nf=new Blob(["\nclass AudioProcessor extends AudioWorkletProcessor {\n\n constructor() {\n super();\n this.port.onmessage = this.receive.bind(this);\n this.initialize();\n }\n\n initialize() {\n this.foundAudio = false;\n this.recording = false;\n this.chunks = [];\n }\n\n /**\n * Concatenates sampled chunks into channels\n * Format is chunk[Left[], Right[]]\n */\n readChannelData(chunks, channel = -1, maxChannels = 9) {\n let channelLimit;\n if (channel !== -1) {\n if (chunks[0] && chunks[0].length - 1 < channel) {\n throw new Error(\n `Channel ${channel} out of range: max ${chunks[0].length}`\n );\n }\n channelLimit = channel + 1;\n } else {\n channel = 0;\n channelLimit = Math.min(chunks[0] ? chunks[0].length : 1, maxChannels);\n }\n const channels = [];\n for (let n = channel; n < channelLimit; n++) {\n const length = chunks.reduce((sum, chunk) => {\n return sum + chunk[n].length;\n }, 0);\n const buffers = chunks.map((chunk) => chunk[n]);\n const result = new Float32Array(length);\n let offset = 0;\n for (let i = 0; i < buffers.length; i++) {\n result.set(buffers[i], offset);\n offset += buffers[i].length;\n }\n channels[n] = result;\n }\n return channels;\n }\n\n /**\n * Combines parallel audio data into correct format,\n * channels[Left[], Right[]] to float32Array[LRLRLRLR...]\n */\n formatAudioData(channels) {\n if (channels.length === 1) {\n // Simple case is only one channel\n const float32Array = channels[0].slice();\n const meanValues = channels[0].slice();\n return { float32Array, meanValues };\n } else {\n const float32Array = new Float32Array(\n channels[0].length * channels.length\n );\n const meanValues = new Float32Array(channels[0].length);\n for (let i = 0; i < channels[0].length; i++) {\n const offset = i * channels.length;\n let meanValue = 0;\n for (let n = 0; n < channels.length; n++) {\n float32Array[offset + n] = channels[n][i];\n meanValue += channels[n][i];\n }\n meanValues[i] = meanValue / channels.length;\n }\n return { float32Array, meanValues };\n }\n }\n\n /**\n * Converts 32-bit float data to 16-bit integers\n */\n floatTo16BitPCM(float32Array) {\n const buffer = new ArrayBuffer(float32Array.length * 2);\n const view = new DataView(buffer);\n let offset = 0;\n for (let i = 0; i < float32Array.length; i++, offset += 2) {\n let s = Math.max(-1, Math.min(1, float32Array[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return buffer;\n }\n\n /**\n * Retrieves the most recent amplitude values from the audio stream\n * @param {number} channel\n */\n getValues(channel = -1) {\n const channels = this.readChannelData(this.chunks, channel);\n const { meanValues } = this.formatAudioData(channels);\n return { meanValues, channels };\n }\n\n /**\n * Exports chunks as an audio/wav file\n */\n export() {\n const channels = this.readChannelData(this.chunks);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const audioData = this.floatTo16BitPCM(float32Array);\n return {\n meanValues: meanValues,\n audio: {\n bitsPerSample: 16,\n channels: channels,\n data: audioData,\n },\n };\n }\n\n receive(e) {\n const { event, id } = e.data;\n let receiptData = {};\n switch (event) {\n case 'start':\n this.recording = true;\n break;\n case 'stop':\n this.recording = false;\n break;\n case 'clear':\n this.initialize();\n break;\n case 'export':\n receiptData = this.export();\n break;\n case 'read':\n receiptData = this.getValues();\n break;\n default:\n break;\n }\n // Always send back receipt\n this.port.postMessage({ event: 'receipt', id, data: receiptData });\n }\n\n sendChunk(chunk) {\n const channels = this.readChannelData([chunk]);\n const { float32Array, meanValues } = this.formatAudioData(channels);\n const rawAudioData = this.floatTo16BitPCM(float32Array);\n const monoAudioData = this.floatTo16BitPCM(meanValues);\n this.port.postMessage({\n event: 'chunk',\n data: {\n mono: monoAudioData,\n raw: rawAudioData,\n },\n });\n }\n\n process(inputList, outputList, parameters) {\n // Copy input to output (e.g. speakers)\n // Note that this creates choppy sounds with Mac products\n const sourceLimit = Math.min(inputList.length, outputList.length);\n for (let inputNum = 0; inputNum < sourceLimit; inputNum++) {\n const input = inputList[inputNum];\n const output = outputList[inputNum];\n const channelCount = Math.min(input.length, output.length);\n for (let channelNum = 0; channelNum < channelCount; channelNum++) {\n input[channelNum].forEach((sample, i) => {\n output[channelNum][i] = sample;\n });\n }\n }\n const inputs = inputList[0];\n // There's latency at the beginning of a stream before recording starts\n // Make sure we actually receive audio data before we start storing chunks\n let sliceIndex = 0;\n if (!this.foundAudio) {\n for (const channel of inputs) {\n sliceIndex = 0; // reset for each channel\n if (this.foundAudio) {\n break;\n }\n if (channel) {\n for (const value of channel) {\n if (value !== 0) {\n // find only one non-zero entry in any channel\n this.foundAudio = true;\n break;\n } else {\n sliceIndex++;\n }\n }\n }\n }\n }\n if (inputs && inputs[0] && this.foundAudio && this.recording) {\n // We need to copy the TypedArray, because the `process`\n // internals will reuse the same buffer to hold each input\n const chunk = inputs.map((input) => input.slice(sliceIndex));\n this.chunks.push(chunk);\n this.sendChunk(chunk);\n }\n return true;\n }\n}\n\nregisterProcessor('audio_processor', AudioProcessor);\n"],{type:"application/javascript"}),rf=URL.createObjectURL(nf);globalThis.WavRecorder=class{constructor({sampleRate:e=44100,outputToSpeakers:t=!1,debug:n=!1}={}){this.scriptSrc=rf,this.sampleRate=e,this.outputToSpeakers=t,this.debug=!!n,this._deviceChangeCallback=null,this._deviceErrorCallback=null,this._devices=[],this.deviceSelection=null,this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static decode(e,t=44100,n=-1){return d(this,null,function*(){const r=new AudioContext({sampleRate:t});let i,a;if(e instanceof Blob){if(-1!==n)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=e,i=yield a.arrayBuffer()}else if(e instanceof ArrayBuffer){if(-1!==n)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=e,a=new Blob([i],{type:"audio/wav"})}else{let t,r;if(e instanceof Int16Array){r=e,t=new Float32Array(e.length);for(let n=0;n<e.length;n++)t[n]=e[n]/32768}else if(e instanceof Float32Array)t=e;else{if(!(e instanceof Array))throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');t=new Float32Array(e)}if(-1===n)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(n<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');r||(r=qd.floatTo16BitPCM(t));const o={bitsPerSample:16,channels:[t],data:r};a=(new qd).pack(n,o).blob,i=yield a.arrayBuffer()}const o=yield r.decodeAudioData(i),s=o.getChannelData(0);return{blob:a,url:URL.createObjectURL(a),values:s,audioBuffer:o}})}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}_event(e){return d(this,arguments,function*(e,t={},n=null){if(!(n=n||this.processor))throw new Error("Can not send events without recording first");const r={event:e,id:this._lastEventId++,data:t};n.port.postMessage(r);const i=(new Date).valueOf();for(;!this.eventReceipts[r.id];){if((new Date).valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${e}" event`);yield new Promise(e=>setTimeout(()=>e(!0),1))}const a=this.eventReceipts[r.id];return delete this.eventReceipts[r.id],a})}listenForDeviceChange(e){if(null===e&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(null!==e){let t=0,n=[];const r=e=>e.map(e=>e.deviceId).sort().join(","),i=()=>d(this,null,function*(){let i=++t;const a=yield this.listDevices();i===t&&r(n)!==r(a)&&(n=a,e(a.slice()))});navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}listenForDeviceErrors(e){this._deviceErrorCallback=e}requestPermission(){return d(this,null,function*(){const e=yield navigator.permissions.query({name:"microphone"});if("denied"===e.state)this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:new Error("Microphone access denied")});else if("prompt"===e.state)try{const e=yield navigator.mediaDevices.getUserMedia({audio:!0});e.getTracks().forEach(e=>e.stop())}catch(sr){console.error("Error accessing microphone."),this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:sr})}return!0})}listDevices(){return d(this,null,function*(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");yield this.requestPermission();return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>"audioinput"===e.kind)})}begin(e){return d(this,null,function*(){var t;if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic","cam"],type:"undefined-mediadevices"}),new Error("Could not request user media");e=null!=e?e:null==(t=this.deviceSelection)?void 0:t.deviceId;try{const t={audio:!0};e&&(t.audio={deviceId:{exact:e}}),this.stream=yield navigator.mediaDevices.getUserMedia(t)}catch(s){throw this._deviceErrorCallback&&this._deviceErrorCallback({devices:["mic"],type:"unknown",error:s}),new Error("Could not start media stream")}this.listDevices().then(t=>{e=this.stream.getAudioTracks()[0].getSettings().deviceId,console.log("find current device",t,e,this.stream.getAudioTracks()[0].getSettings()),this.deviceSelection=t.find(t=>t.deviceId===e),console.log("current device",this.deviceSelection)});const n=new AudioContext({sampleRate:this.sampleRate}),r=n.createMediaStreamSource(this.stream);try{yield n.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const i=new AudioWorkletNode(n,"audio_processor");i.port.onmessage=e=>{const{event:t,id:n,data:r}=e.data;if("receipt"===t)this.eventReceipts[n]=r;else if("chunk"===t)if(this._chunkProcessorSize){const e=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:qd.mergeBuffers(e.raw,r.raw),mono:qd.mergeBuffers(e.mono,r.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(r)};const a=r.connect(i),o=n.createAnalyser();return o.fftSize=8192,o.smoothingTimeConstant=.1,a.connect(o),this.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),o.connect(n.destination)),this.source=r,this.node=a,this.analyser=o,this.processor=i,console.log("begin completed"),!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}pause(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!this.recording)throw new Error("Already paused: please call .record() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),yield this._event("stop"),this.recording=!1,!0})}record(e=()=>{},t=8192){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(this.recording)throw new Error("Already recording: please call .pause() first");if("function"!=typeof e)throw new Error("chunkProcessor must be a function");return this._chunkProcessor=e,this._chunkProcessorSize=t,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),yield this._event("start"),this.recording=!0,!0})}clear(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return yield this._event("clear"),!0})}read(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");this.log("Reading ...");return yield this._event("read")})}save(e=!1){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const t=yield this._event("export");return(new qd).pack(this.sampleRate,t.audio)})}end(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),yield this._event("stop"),this.recording=!1;this.stream.getTracks().forEach(e=>e.stop()),this.log("Exporting ...");const t=yield this._event("export",{},e);this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null;return(new qd).pack(this.sampleRate,t.audio)})}quit(){return d(this,null,function*(){return this.listenForDeviceChange(null),this.deviceSelection=null,this.processor&&(yield this.end()),!0})}};class af{constructor({sampleRate:e=44100,outputToSpeakers:t=!1,debug:n=!1}={}){this.scriptSrc=rf,this.sampleRate=e,this.outputToSpeakers=t,this.debug=!!n,this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}_event(e){return d(this,arguments,function*(e,t={},n=null){if(!(n=n||this.processor))throw new Error("Can not send events without recording first");const r={event:e,id:this._lastEventId++,data:t};n.port.postMessage(r);const i=(new Date).valueOf();for(;!this.eventReceipts[r.id];){if((new Date).valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${e}" event`);yield new Promise(e=>setTimeout(()=>e(!0),1))}const a=this.eventReceipts[r.id];return delete this.eventReceipts[r.id],a})}begin(e){return d(this,null,function*(){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!e||"audio"!==e.kind)throw new Error("No audio track provided");this.stream=new MediaStream([e]);const t=new AudioContext({sampleRate:this.sampleRate}),n=t.createMediaStreamSource(this.stream);try{yield t.audioWorklet.addModule(this.scriptSrc)}catch(sr){throw console.error(sr),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const r=new AudioWorkletNode(t,"audio_processor");r.port.onmessage=e=>{const{event:t,id:n,data:r}=e.data;if("receipt"===t)this.eventReceipts[n]=r;else if("chunk"===t)if(this._chunkProcessorSize){const e=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:qd.mergeBuffers(e.raw,r.raw),mono:qd.mergeBuffers(e.mono,r.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(r)};const i=n.connect(r),a=t.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn("Warning: Output to speakers may affect sound quality,\nespecially due to system audio feedback preventative measures.\nuse only for debugging"),a.connect(t.destination)),this.source=n,this.node=i,this.analyser=a,this.processor=r,!0})}getFrequencies(e="frequency",t=-100,n=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Zd.getFrequencies(this.analyser,this.sampleRate,null,e,t,n)}pause(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!this.recording)throw new Error("Already paused: please call .record() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),yield this._event("stop"),this.recording=!1,!0})}record(e=()=>{},t=8192){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(this.recording)throw new Error("Already recording: HELLO please call .pause() first");if("function"!=typeof e)throw new Error("chunkProcessor must be a function");return this._chunkProcessor=e,this._chunkProcessorSize=t,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),yield this._event("start"),this.recording=!0,!0})}clear(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return yield this._event("clear"),!0})}read(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");this.log("Reading ...");return yield this._event("read")})}save(e=!1){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const t=yield this._event("export");return(new qd).pack(this.sampleRate,t.audio)})}end(){return d(this,null,function*(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),yield this._event("stop"),this.recording=!1,this.log("Exporting ...");const t=yield this._event("export",{},e);this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null;return(new qd).pack(this.sampleRate,t.audio)})}quit(){return d(this,null,function*(){return this.listenForDeviceChange(null),this.processor&&(yield this.end()),!0})}}globalThis.WavRecorder=WavRecorder;var of,sf,lf;of=JSON.parse('{"name":"@pipecat-ai/daily-transport","version":"1.5.0","license":"BSD-2-Clause","main":"dist/index.js","module":"dist/index.module.js","types":"dist/index.d.ts","source":"src/index.ts","repository":{"type":"git","url":"git+https://github.com/pipecat-ai/pipecat-client-web-transports.git"},"files":["dist","package.json","README.md"],"scripts":{"build":"parcel build --no-cache","dev":"parcel watch","lint":"eslint . --ext ts --report-unused-disable-directives --max-warnings 0"},"devDependencies":{"@pipecat-ai/client-js":"^1.5.0","eslint":"9.39.1","eslint-config-prettier":"^9.1.0","eslint-plugin-simple-import-sort":"^12.1.1"},"peerDependencies":{"@pipecat-ai/client-js":"~1.5.0"},"dependencies":{"@daily-co/daily-js":"^0.84.0"},"description":"Pipecat Daily Transport Package","author":"Daily.co","bugs":{"url":"https://github.com/pipecat-ai/pipecat-client-web-transports/issues"},"homepage":"https://github.com/pipecat-ai/pipecat-client-web-transports/blob/main/transports/daily-webrtc/README.md"}'),(lf=sf||(sf={})).AUDIO_BUFFERING_STARTED="audio-buffering-started",lf.AUDIO_BUFFERING_STOPPED="audio-buffering-stopped";class cf{constructor(e){this._daily=e,this._proxy=new Proxy(this._daily,{get:(e,t,n)=>{if("function"==typeof e[t]){let n;switch(String(t)){case"preAuth":n="Calls to preAuth() are disabled. Please use Transport.preAuth()";break;case"startCamera":n="Calls to startCamera() are disabled. Please use PipecatClient.initDevices()";break;case"join":n="Calls to join() are disabled. Please use PipecatClient.connect()";break;case"leave":n="Calls to leave() are disabled. Please use PipecatClient.disconnect()";break;case"destroy":n="Calls to destroy() are disabled."}return n?()=>{throw new Error(n)}:(...n)=>e[t](...n)}return Reflect.get(e,t,n)}})}get proxy(){return this._proxy}}class uf extends Id{constructor(e={}){var t;super(),this._botId="",this._selectedCam={},this._selectedMic={},this._selectedSpeaker={},this._currentAudioTrack=null,this._audioQueue=[],this._callbacks={};const n=e,{bufferLocalAudioUntilBotReady:r}=n,i=u(n,["bufferLocalAudioUntilBotReady"]);this._dailyFactoryOptions=i,void 0===(null==(t=this._dailyFactoryOptions.dailyConfig)?void 0:t.useDevicePreferenceCookies)&&(null==this._dailyFactoryOptions.dailyConfig&&(this._dailyFactoryOptions.dailyConfig={}),this._dailyFactoryOptions.dailyConfig.useDevicePreferenceCookies=!0),this._bufferLocalAudioUntilBotReady=r||!1,this._daily=Wc.createCallObject(c(l({},this._dailyFactoryOptions),{allowMultipleCallInstances:!0})),this._dailyWrapper=new cf(this._daily)}setupRecorder(){this._mediaStreamRecorder=new af({sampleRate:uf.RECORDER_SAMPLE_RATE})}handleUserAudioStream(e){this._audioQueue.push(e)}flushAudioQueue(){if(0!==this._audioQueue.length)for(Pd.debug(`Will flush audio queue: ${this._audioQueue.length}`);this._audioQueue.length>0;){const e=[];for(;e.length<10&&this._audioQueue.length>0;){const t=this._audioQueue.shift();t&&e.push(t)}e.length>0&&this._sendAudioBatch(e)}}_sendAudioBatch(e){const t={id:"raw-audio-batch",label:"rtvi-ai",type:"raw-audio-batch",data:{base64AudioBatch:e.map(e=>{const t=new Uint8Array(e);return btoa(String.fromCharCode(...t))}),sampleRate:uf.RECORDER_SAMPLE_RATE,numChannels:1}};this.sendMessage(t)}initialize(e,t){var n,r,i;this._bufferLocalAudioUntilBotReady&&this.setupRecorder(),this._callbacks=null!=(n=e.callbacks)?n:{},this._onMessage=t,null!=this._dailyFactoryOptions.startVideoOff&&null==e.enableCam||(this._dailyFactoryOptions.startVideoOff=!(null!=(r=e.enableCam)&&r)),null!=this._dailyFactoryOptions.startAudioOff&&null==e.enableMic||(this._dailyFactoryOptions.startAudioOff=!(null==(i=e.enableMic)||i)),this.attachEventListeners(),this.state="disconnected",Pd.debug("[Daily Transport] Initialized",Vd(of).version)}get dailyCallClient(){return this._dailyWrapper.proxy}get state(){return this._state}set state(e){var t,n;this._state!==e&&(this._state=e,null==(n=(t=this._callbacks).onTransportStateChanged)||n.call(t,e))}getSessionInfo(){return this._daily.meetingSessionSummary()}getAllCams(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"videoinput"===e.kind)})}updateCam(e){this._daily.setInputDevicesAsync({videoDeviceId:e}).then(e=>{this._selectedCam=e.camera})}get selectedCam(){return this._selectedCam}getAllMics(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"audioinput"===e.kind)})}updateMic(e){this._daily.setInputDevicesAsync({audioDeviceId:e}).then(e=>{this._selectedMic=e.mic})}get selectedMic(){return this._selectedMic}getAllSpeakers(){return d(this,null,function*(){const{devices:e}=yield this._daily.enumerateDevices();return e.filter(e=>"audiooutput"===e.kind)})}updateSpeaker(e){this._daily.setOutputDeviceAsync({outputDeviceId:e}).then(e=>{this._selectedSpeaker=e.speaker}).catch(e=>{var t,n,r;null==(r=(n=this._callbacks).onDeviceError)||r.call(n,new ld(["speaker"],null!=(t=e.type)?t:"unknown",e.message))})}get selectedSpeaker(){return this._selectedSpeaker}enableMic(e){this._daily.setLocalAudio(e)}get isMicEnabled(){return this._daily.localAudio()}enableCam(e){this._daily.setLocalVideo(e)}get isCamEnabled(){return this._daily.localVideo()}enableScreenShare(e){e?this._daily.startScreenShare():this._daily.stopScreenShare()}get isSharingScreen(){return this._daily.localScreenAudio()||this._daily.localScreenVideo()}tracks(){var e,t,n,r,i,a,o,s,l,c,u,d,f,p,h,m,g;const v=null!=(e=this._daily.participants())?e:{},y=null==v?void 0:v[this._botId],b={local:{audio:null==(r=null==(n=null==(t=null==v?void 0:v.local)?void 0:t.tracks)?void 0:n.audio)?void 0:r.persistentTrack,screenAudio:null==(o=null==(a=null==(i=null==v?void 0:v.local)?void 0:i.tracks)?void 0:a.screenAudio)?void 0:o.persistentTrack,screenVideo:null==(c=null==(l=null==(s=null==v?void 0:v.local)?void 0:s.tracks)?void 0:l.screenVideo)?void 0:c.persistentTrack,video:null==(f=null==(d=null==(u=null==v?void 0:v.local)?void 0:u.tracks)?void 0:d.video)?void 0:f.persistentTrack}};return y&&(b.bot={audio:null==(h=null==(p=null==y?void 0:y.tracks)?void 0:p.audio)?void 0:h.persistentTrack,video:null==(g=null==(m=null==y?void 0:y.tracks)?void 0:m.video)?void 0:g.persistentTrack}),b}startRecording(){return d(this,null,function*(){var e,t;try{Pd.info("[Daily Transport] Initializing recording"),yield this._mediaStreamRecorder.record(e=>{this.handleUserAudioStream(e.mono)},uf.RECORDER_CHUNK_SIZE),null==(t=(e=this._callbacks).onAudioBufferingStarted)||t.call(e),Pd.info("[Daily Transport] Recording Initialized")}catch(sr){sr.message.includes("Already recording")||Pd.error("Error starting recording",sr)}})}preAuth(e){return d(this,null,function*(){this._dailyFactoryOptions=e,yield this._daily.preAuth(e)})}initDevices(){return d(this,null,function*(){var e,t,n,r,i,a,o,s,l,c,u,d;if(!this._daily)throw new ed("Transport instance not initialized");this.state="initializing";const f=yield this._daily.startCamera(this._dailyFactoryOptions),{devices:p}=yield this._daily.enumerateDevices(),h=p.filter(e=>"videoinput"===e.kind),m=p.filter(e=>"audioinput"===e.kind),g=p.filter(e=>"audiooutput"===e.kind);this._selectedCam=f.camera,this._selectedMic=f.mic,this._selectedSpeaker=f.speaker,null==(t=(e=this._callbacks).onAvailableCamsUpdated)||t.call(e,h),null==(r=(n=this._callbacks).onAvailableMicsUpdated)||r.call(n,m),null==(a=(i=this._callbacks).onAvailableSpeakersUpdated)||a.call(i,g),null==(s=(o=this._callbacks).onCamUpdated)||s.call(o,f.camera),null==(c=(l=this._callbacks).onMicUpdated)||c.call(l,f.mic),null==(d=(u=this._callbacks).onSpeakerUpdated)||d.call(u,f.speaker),this._daily.isLocalAudioLevelObserverRunning()||(yield this._daily.startLocalAudioLevelObserver(100)),this._daily.isRemoteParticipantsAudioLevelObserverRunning()||(yield this._daily.startRemoteParticipantsAudioLevelObserver(100)),this.state="initialized"})}_validateConnectionParams(e){if(null==e)return;if("object"!=typeof e)throw new ed("Invalid connection parameters");const t=e;return t.room_url?(t.url=t.room_url,delete t.room_url):t.dailyRoom&&(t.url=t.dailyRoom,delete t.dailyRoom),t.dailyToken&&(t.token=t.dailyToken,delete t.dailyToken),t.token||delete t.token,t}_connect(e){return d(this,null,function*(){var t,n,r;if(!this._daily)throw new ed("Transport instance not initialized");e&&(this._dailyFactoryOptions=l(l({},this._dailyFactoryOptions),e)),this.state="connecting";try{yield this._daily.join(this._dailyFactoryOptions)}catch(sr){throw Pd.error("Failed to join room",sr),this.state="error",new rd}(null==(t=this._abortController)?void 0:t.signal.aborted)||(this.state="connected",null==(r=(n=this._callbacks).onConnected)||r.call(n))})}sendReadyMessage(){return d(this,null,function*(){return new Promise(e=>{var t,n;const r=()=>{this.state="ready",this.flushAudioQueue(),this.sendMessage(kd.clientReady()),this.stopRecording(),e()};for(const a in this._daily.participants()){const i=this._daily.participants()[a];if(!i.local&&(null==(n=null==(t=i.tracks)?void 0:t.audio)?void 0:n.persistentTrack))return r(),void e()}const i=e=>{var t;(null==(t=e.participant)?void 0:t.local)||(this._daily.off("track-started",i),(()=>{const e=navigator.userAgent;return/iPad|iPhone|iPod/.test(e)||/Macintosh/.test(e)&&"ontouchend"in document})()?(Pd.debug("[Daily Transport] iOS device detected, adding 0.5 second delay before sending ready message"),setTimeout(r,500)):r())};this._daily.on("track-started",i)})})}stopRecording(){var e,t;this._mediaStreamRecorder&&"ended"!==this._mediaStreamRecorder.getStatus()&&(this._mediaStreamRecorder.end(),null==(t=(e=this._callbacks).onAudioBufferingStopped)||t.call(e))}attachEventListeners(){this._daily.on("available-devices-updated",this.handleAvailableDevicesUpdated.bind(this)),this._daily.on("selected-devices-updated",this.handleSelectedDevicesUpdated.bind(this)),this._daily.on("camera-error",this.handleDeviceError.bind(this)),this._daily.on("track-started",this.handleTrackStarted.bind(this)),this._daily.on("track-stopped",this.handleTrackStopped.bind(this)),this._daily.on("participant-joined",this.handleParticipantJoined.bind(this)),this._daily.on("participant-left",this.handleParticipantLeft.bind(this)),this._daily.on("local-audio-level",this.handleLocalAudioLevel.bind(this)),this._daily.on("remote-participants-audio-level",this.handleRemoteAudioLevel.bind(this)),this._daily.on("app-message",this.handleAppMessage.bind(this)),this._daily.on("left-meeting",this.handleLeftMeeting.bind(this)),this._daily.on("error",this.handleFatalError.bind(this)),this._daily.on("nonfatal-error",this.handleNonFatalError.bind(this))}_disconnect(){return d(this,null,function*(){this.state="disconnecting",this._daily.stopLocalAudioLevelObserver(),this._daily.stopRemoteParticipantsAudioLevelObserver(),this._audioQueue=[],this._currentAudioTrack=null,this.stopRecording(),yield this._daily.leave()})}sendMessage(e){this._daily.sendAppMessage(e,"*")}handleAppMessage(e){"rtvi-ai"===e.data.label&&this._onMessage({id:e.data.id,type:e.data.type,data:e.data.data})}handleAvailableDevicesUpdated(e){var t,n,r,i,a,o;null==(n=(t=this._callbacks).onAvailableCamsUpdated)||n.call(t,e.availableDevices.filter(e=>"videoinput"===e.kind)),null==(i=(r=this._callbacks).onAvailableMicsUpdated)||i.call(r,e.availableDevices.filter(e=>"audioinput"===e.kind)),null==(o=(a=this._callbacks).onAvailableSpeakersUpdated)||o.call(a,e.availableDevices.filter(e=>"audiooutput"===e.kind))}handleSelectedDevicesUpdated(e){var t,n,r,i,a,o,s,l,c;(null==(t=this._selectedCam)?void 0:t.deviceId)!==e.devices.camera&&(this._selectedCam=e.devices.camera,null==(r=(n=this._callbacks).onCamUpdated)||r.call(n,e.devices.camera)),(null==(i=this._selectedMic)?void 0:i.deviceId)!==e.devices.mic&&(this._selectedMic=e.devices.mic,null==(o=(a=this._callbacks).onMicUpdated)||o.call(a,e.devices.mic)),(null==(s=this._selectedSpeaker)?void 0:s.deviceId)!==e.devices.speaker&&(this._selectedSpeaker=e.devices.speaker,null==(c=(l=this._callbacks).onSpeakerUpdated)||c.call(l,e.devices.speaker))}handleDeviceError(e){var t,n;null==(n=(t=this._callbacks).onDeviceError)||n.call(t,(e=>{const t=[];switch(e.type){case"permissions":return e.blockedMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg,{blockedBy:e.blockedBy});case"not-found":return e.missingMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg);case"constraints":return e.failedMedia.forEach(e=>{t.push("video"===e?"cam":"mic")}),new ld(t,e.type,e.msg,{reason:e.reason});case"cam-in-use":return t.push("cam"),new ld(t,"in-use",e.msg);case"mic-in-use":return t.push("mic"),new ld(t,"in-use",e.msg);case"cam-mic-in-use":return t.push("cam"),t.push("mic"),new ld(t,"in-use",e.msg);default:return t.push("cam"),t.push("mic"),new ld(t,e.type,e.msg)}})(e.error))}handleLocalAudioTrack(e){return d(this,null,function*(){if("ready"==this.state||!this._bufferLocalAudioUntilBotReady)return;switch(this._mediaStreamRecorder.getStatus()){case"ended":try{yield this._mediaStreamRecorder.begin(e),yield this.startRecording()}catch(sr){}break;case"paused":yield this.startRecording();break;default:if(this._currentAudioTrack!==e)try{yield this._mediaStreamRecorder.end(),yield this._mediaStreamRecorder.begin(e),yield this.startRecording()}catch(sr){}else Pd.warn("track-started event received for current track and already recording")}this._currentAudioTrack=e})}handleTrackStarted(e){var t,n,r,i,a;"screenAudio"===e.type||"screenVideo"===e.type?null==(n=(t=this._callbacks).onScreenTrackStarted)||n.call(t,e.track,e.participant?df(e.participant):void 0):((null==(r=e.participant)?void 0:r.local)&&"audio"===e.track.kind&&this.handleLocalAudioTrack(e.track),null==(a=(i=this._callbacks).onTrackStarted)||a.call(i,e.track,e.participant?df(e.participant):void 0))}handleTrackStopped(e){var t,n,r,i;"screenAudio"===e.type||"screenVideo"===e.type?null==(n=(t=this._callbacks).onScreenTrackStopped)||n.call(t,e.track,e.participant?df(e.participant):void 0):null==(i=(r=this._callbacks).onTrackStopped)||i.call(r,e.track,e.participant?df(e.participant):void 0)}handleParticipantJoined(e){var t,n,r,i;const a=df(e.participant);null==(n=(t=this._callbacks).onParticipantJoined)||n.call(t,a),a.local||(this._botId=e.participant.session_id,null==(i=(r=this._callbacks).onBotConnected)||i.call(r,a))}handleParticipantLeft(e){var t,n,r,i;const a=df(e.participant);null==(n=(t=this._callbacks).onParticipantLeft)||n.call(t,a),a.local||(this._botId="",null==(i=(r=this._callbacks).onBotDisconnected)||i.call(r,a))}handleLocalAudioLevel(e){var t,n;null==(n=(t=this._callbacks).onLocalAudioLevel)||n.call(t,e.audioLevel)}handleRemoteAudioLevel(e){var t,n;const r=this._daily.participants(),i=Object.keys(e.participantsAudioLevel);for(let a=0;a<i.length;a++){const o=i[a],s=e.participantsAudioLevel[o];null==(n=(t=this._callbacks).onRemoteAudioLevel)||n.call(t,s,df(r[o]))}}handleLeftMeeting(){var e,t;this.state="disconnected",this._botId="",null==(t=(e=this._callbacks).onDisconnected)||t.call(e)}handleFatalError(e){var t,n;Pd.error("Daily fatal error",e.errorMsg),this.state="error",this._botId="",null==(n=(t=this._callbacks).onError)||n.call(t,kd.error(e.errorMsg,!0))}handleNonFatalError(e){var t,n;if("screen-share-error"===e.type)null==(n=(t=this._callbacks).onScreenShareError)||n.call(t,e.errorMsg)}}uf.RECORDER_SAMPLE_RATE=16e3,uf.RECORDER_CHUNK_SIZE=512;const df=e=>({id:e.user_id,local:e.local,name:e.user_name});function ff(e,t,n={}){const{pipecatClient:r,connectionState:i,isBotReady:a,isMicEnabled:o,isUserSpeaking:s,isBotSpeaking:u,remoteAudioStream:f,addMessage:p,setPipecatClient:h,setConnectionState:m,setIsBotReady:g,setIsMicEnabled:v,setIsUserSpeaking:y,setIsBotSpeaking:b,setRemoteAudioStream:w,startBotStream:k,appendBotStreamText:S,finalizeBotStream:_,updateUserTranscript:C,finalizeUserTranscript:E}=H(),T=x.useRef(null),M=x.useRef(!1),P=x.useRef(null),A=x.useRef(!1);x.useEffect(()=>{const e=T.current;if(e&&f)try{e.srcObject=f,e.volume=1;const t=e.play();t&&t.then(()=>{}).catch(e=>{})}catch(t){}return()=>{e&&(e.srcObject=null)}},[f]);const O=x.useCallback(()=>d(null,null,function*(){var r;if(!A.current&&"disconnected"===i){A.current=!0,m("connecting");try{if(!e||!t)throw new Error("Missing agent ID or prompt token");const r={agent_id:e,conversation_metadata:c(l({},n),{agent_id:e}),prompt_access_token:t,conversation_visibility:!1,conversation_config_type:"VOICE"},i=yield function(e){return d(this,null,function*(){const t=`${Q}/v1/widgets/sessions/daily`,n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json","X-Prompt-Token":e.prompt_access_token},body:JSON.stringify(e)});if(!n.ok){const e=yield n.json().catch(()=>({}));throw new Error(e.detail||e.message||`HTTP ${n.status}`)}const r=yield n.json();return r.conversation_id,r})}(r);if(!(null==i?void 0:i.dailyRoom)||!(null==i?void 0:i.dailyToken))throw new Error("Invalid response from server");const{dailyRoom:a,dailyToken:s,conversation_id:u}=i,f=new Ud({transport:new uf,enableMic:o,enableCam:!1,timeout:3e4,callbacks:{onTransportStateChanged:e=>{m(e)},onConnected:()=>{p({type:"separator",text:"Voice call started"})},onBotReady:e=>{g(!0),m("ready")},onBotStartedSpeaking:()=>{b(!0),g(e=>e||(m("ready"),!0))},onBotStoppedSpeaking:()=>{b(!1)},onDisconnected:()=>{m("disconnected"),g(!1),b(!1),M.current||p({type:"separator",text:"Call disconnected"})},onTrackStarted:(e,t)=>{if("audio"===e.kind&&!(null==t?void 0:t.local)){const t=new MediaStream([e]);w(t)}},onUserStartedSpeaking:()=>{y(!0)},onUserStoppedSpeaking:()=>{y(!1)},onUserTranscript:e=>{var t;const n=null!=(t=null==e?void 0:e.text)?t:"",r=Boolean(null==e?void 0:e.final);n.trim()&&C(n,r)},onBotLlmStarted:()=>{k()},onBotLlmText:e=>{var t;const n=null!=(t=null==e?void 0:e.text)?t:"";n&&S(n)},onBotLlmStopped:()=>{_()},onBotTtsStarted:()=>{},onBotTtsText:e=>{},onBotTtsStopped:()=>{},onBotTranscript:e=>{var t;const n=(null==(t=null==e?void 0:e.text)?void 0:t.trim())||"";if(!n)return;const{botStreamingMessageId:r,botStreamingText:i,lastBotMessageText:a,messages:o}=H.getState();if(r||i)return;if(a&&n===a)return;const s=o.filter(e=>"assistant"===e.type).pop();(null==s?void 0:s.text)!==n&&p({type:"assistant",text:n,isTranscript:!0})},onMicStateChanged:e=>{v(e)},onError:e=>{var t,n;const r=(null==(t=null==e?void 0:e.data)?void 0:t.error)||(null==e?void 0:e.message)||"";r.includes("validation error")||r.includes("FunctionResponse")||!(null==(n=null==e?void 0:e.data)?void 0:n.fatal)?(p({type:"separator",text:"Agent disconnected"}),N()):(m("error"),p({type:"system",text:`Error: ${r}`}))}}});h(f),P.current=f,yield f.initDevices(),yield f.connect({url:a,token:s})}catch(a){A.current=!1,m("error");let e="Failed to start call";e=(null==(r=a.message)?void 0:r.includes("Failed to fetch"))?"Cannot reach server":"NotAllowedError"===a.name?"Microphone access denied":"NotFoundError"===a.name?"No microphone found":a.message,p({type:"system",text:`❌ ${e}`})}}}),[e,t,n,i,o,m,h,g,v,w,p]),N=x.useCallback(()=>d(null,null,function*(){var e;try{if(p({type:"separator",text:"Voice call ended"}),M.current=!0,A.current=!1,r&&"disconnected"!==i&&(yield r.disconnect()),null==(e=T.current)?void 0:e.srcObject){T.current.srcObject.getTracks().forEach(e=>e.stop()),T.current.srcObject=null}w(null),h(null),P.current=null,m("disconnected"),g(!1),setTimeout(()=>{M.current=!1},500)}catch(t){A.current=!1,h(null),P.current=null,m("disconnected"),g(!1)}}),[r,i,h,m,g,w,p]),L=x.useCallback(()=>{if(r&&a)try{const e=!o;r.enableMic(e),v(e)}catch(e){}},[r,o,a,v]),j=x.useCallback(e=>d(null,null,function*(){if(r)if(a)try{yield r.sendText(e),p({type:"user",text:e,isTranscript:!1})}catch(t){p({type:"system",text:`Error: ${t.message||"Failed to send text"}`})}else p({type:"system",text:"Please wait for the bot to be ready before sending text"})}),[r,a,p]);return x.useEffect(()=>()=>{var e;const t=P.current;if(t&&(M.current=!0,t.disconnect().catch(e=>{})),null==(e=T.current)?void 0:e.srcObject){T.current.srcObject.getTracks().forEach(e=>e.stop())}},[]),{connectionState:i,isBotReady:a,isMicEnabled:o,isUserSpeaking:s,isBotSpeaking:u,startCall:O,endCall:N,toggleMic:L,sendTextDuringCall:j,remoteAudioRef:T}}function pf({agentId:e,agentName:t,avatarUrl:n,promptToken:r,metadata:i,showTranscripts:a=!0,idlePromptMessages:o=[],onClose:s,className:l}){const{messages:c,botStreamingText:u,userTranscriptText:d}=H(),[f,p]=x.useState(""),[h,m]=x.useState(0),g=x.useRef(null),{connectionState:v,isBotReady:y,isMicEnabled:w,isUserSpeaking:k,isBotSpeaking:S,startCall:_,endCall:C,toggleMic:E,sendTextDuringCall:T,remoteAudioRef:M}=ff(e,r,i);x.useEffect(()=>("disconnected"===v&&_(),()=>{"disconnected"!==v&&C()}),[]);const P="connecting"===v||!y,A="ready"===v||"connected"===v,O="error"===v;x.useEffect(()=>{var e;null==(e=g.current)||e.scrollIntoView({behavior:"smooth"})},[c,u,d]),x.useEffect(()=>{if(!P||!(null==o?void 0:o.length))return;const e=setInterval(()=>{m(e=>(e+1)%o.length)},3e3);return()=>clearInterval(e)},[P,o]);const N=A&&k&&!d?{text:"Listening",animate:!0}:null,L=O?"error":P?"connecting":w?S?"speaking":k?"listening":"idle":"muted",j=c.filter(e=>e.isTranscript||"separator"===e.type||"system"===e.type||"user"===e.type||"assistant"===e.type);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in min-h-0 relative",l),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("audio",{ref:M,autoPlay:!0,playsInline:!0,style:{display:"none"}}),b.jsx("button",{onClick:()=>{C(),s()},className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),P&&b.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6",children:[b.jsx("div",{className:"mb-6",children:b.jsx(Wn,{loading:!0,size:180,strokeWidth:4,gap:6,children:b.jsx(St,{src:n,alt:t,size:"2xl",className:"shadow-lg"})})}),b.jsx("h2",{className:"text-xl font-semibold mb-2",style:{color:"var(--widget-text-primary, #111827)"},children:t}),b.jsx("p",{className:"text-sm mb-6",style:{color:"var(--widget-status-connecting, #F59E0B)"},children:"Connecting..."}),(null==o?void 0:o.length)>0&&b.jsx("div",{className:"text-center px-4 py-3 rounded-lg max-w-xs animate-fade-in",style:{backgroundColor:"var(--widget-idle-prompt-bg, #F3F4F6)",color:"var(--widget-idle-prompt-text, #6B7280)"},children:b.jsx("p",{className:"text-sm",children:o[h]})},h)]}),!P&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex items-center gap-3 px-4 py-3 shrink-0",style:{backgroundColor:"var(--widget-header-bg, #F9FAFB)",borderBottom:"1px solid var(--widget-header-border, #E5E7EB)"},children:[b.jsxs("div",{className:"flex-1 flex items-center gap-3",children:[b.jsxs("div",{className:"relative",children:[b.jsx(St,{src:n,alt:t,size:"sm"}),L&&b.jsx("span",{className:vt("absolute -bottom-0.5 -right-0.5 w-3 h-3 rounded-full border-2",("listening"===L||"speaking"===L||"connecting"===L)&&"animate-pulse"),style:{backgroundColor:"listening"===L?"var(--widget-status-success, #10B981)":"speaking"===L?"var(--widget-status-info, #3B82F6)":"connecting"===L?"var(--widget-status-warning, #F59E0B)":"idle"===L?"var(--widget-status-success, #10B981)":"muted"===L?"var(--widget-text-muted, #9CA3AF)":"var(--widget-status-error, #EF4444)",borderColor:"var(--widget-header-bg, #F9FAFB)"}})]}),b.jsxs("div",{children:[b.jsx("h2",{className:"text-sm font-semibold leading-tight",style:{color:"var(--widget-header-text, #111827)"},children:t}),L&&b.jsxs("span",{className:"text-xs",style:{color:"listening"===L?"var(--widget-status-success, #10B981)":"speaking"===L?"var(--widget-status-info, #3B82F6)":"error"===L?"var(--widget-status-error, #EF4444)":"var(--widget-text-muted, #9CA3AF)"},children:["listening"===L&&"Listening...","speaking"===L&&"Speaking...","connecting"===L&&"Connecting...","muted"===L&&"Muted","idle"===L&&"Ready","error"===L&&"Connection failed"]})]})]}),b.jsx("div",{className:"w-9"})]}),b.jsx(Fn,{className:"flex-1 min-h-0",children:b.jsxs("div",{className:"p-4 space-y-3 min-h-full",children:[0===j.length&&!N&&b.jsx("div",{className:"flex items-center justify-center h-full min-h-[200px]",children:b.jsx("p",{className:"text-sm",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"Start Conversation"})}),j.map(e=>b.jsx(hf,{message:e},e.id)),u&&b.jsx("div",{className:"flex justify-start",children:b.jsx("div",{className:"max-w-[80%] px-4 py-2.5 text-sm leading-relaxed rounded-2xl rounded-bl-md",style:{backgroundColor:"var(--widget-bot-message-bg, #F3F4F6)",color:"var(--widget-bot-message-text, #111827)"},children:u})}),d&&b.jsx("div",{className:"flex justify-end",children:b.jsx("div",{className:"max-w-[80%] px-4 py-2.5 text-sm leading-relaxed rounded-2xl rounded-br-md",style:{backgroundColor:"var(--widget-user-message-bg, #3B82F6)",color:"var(--widget-user-message-text, #FFFFFF)",opacity:.85},children:d})}),N&&b.jsx("div",{className:"flex justify-end",children:b.jsxs("div",{className:"flex items-center gap-2 px-4 py-2.5 rounded-2xl rounded-br-md text-sm",style:{backgroundColor:"var(--widget-user-message-bg, #3B82F6)",color:"var(--widget-user-message-text, #FFFFFF)"},children:[b.jsx("span",{children:N.text}),b.jsxs("span",{className:"flex gap-1",children:[b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"0ms"}}),b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"150ms"}}),b.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-current animate-bounce",style:{animationDelay:"300ms"}})]})]})}),b.jsx("div",{ref:g})]})}),b.jsxs("div",{className:"shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",backgroundColor:"var(--widget-background, #FFFFFF)"},children:[b.jsxs("form",{onSubmit:e=>{e.preventDefault(),f.trim()&&A&&(T(f.trim()),p(""))},className:"flex items-center gap-2 px-4 py-2",children:[b.jsx("input",{type:"text",value:f,onChange:e=>p(e.target.value),placeholder:"Type a message...",disabled:!A,className:"flex-1 h-10 px-4 rounded-full outline-none transition-all text-sm",style:{backgroundColor:"var(--widget-input-bg, #F9FAFB)",color:"var(--widget-input-text, #111827)",border:"1px solid var(--widget-input-border, #E5E7EB)",fontFamily:"var(--widget-font-family, inherit)"}}),b.jsx(kt,{type:"submit",variant:"ghost",size:"icon",disabled:!f.trim()||!A,className:"shrink-0 rounded-full h-10 w-10",children:b.jsx(It,{className:"h-4 w-4"})})]}),b.jsxs("div",{className:"flex justify-center gap-4 px-4 pt-2",style:{paddingBottom:"max(1rem, env(safe-area-inset-bottom, 0px))"},children:[b.jsx(kt,{onClick:E,variant:w?"secondary":"outline",size:"icon-lg",className:"rounded-full h-12 w-12",disabled:!A,style:{backgroundColor:w?"var(--widget-button-secondary-bg, #F3F4F6)":"transparent",borderColor:w?void 0:"var(--widget-border, #E5E7EB)"},children:w?b.jsx(Lt,{className:"h-5 w-5",style:{color:"var(--widget-text-primary, #111827)"}}):b.jsx(Nt,{className:"h-5 w-5",style:{color:"var(--widget-text-muted, #9CA3AF)"}})}),b.jsx(kt,{onClick:()=>{C(),s()},variant:"destructive",size:"icon-lg",className:"rounded-full h-12 w-12",children:b.jsx(jt,{className:"h-5 w-5"})})]})]})]})]})}function hf({message:e}){const t="user"===e.type;e.type;const n="separator"===e.type,r="system"===e.type;return n?b.jsx("div",{className:"flex items-center justify-center py-1",children:b.jsx("div",{className:"px-3 py-1 rounded-full text-xs",style:{backgroundColor:"var(--widget-system-message-bg, #F3F4F6)",color:"var(--widget-text-muted, #9CA3AF)"},children:e.text})}):r?b.jsx("div",{className:"flex justify-center",children:b.jsx("div",{className:"max-w-[85%] px-4 py-2 rounded-lg text-sm",style:{backgroundColor:"var(--widget-status-error-bg, #FEE2E2)",color:"var(--widget-status-error, #DC2626)"},children:e.text})}):b.jsx("div",{className:vt("flex",t?"justify-end":"justify-start"),children:b.jsx("div",{className:vt("max-w-[80%] px-4 py-2.5 text-sm leading-relaxed",t?"rounded-2xl rounded-br-md":"rounded-2xl rounded-bl-md"),style:{backgroundColor:t?"var(--widget-user-message-bg, #3B82F6)":"var(--widget-bot-message-bg, #F3F4F6)",color:t?"var(--widget-user-message-text, #FFFFFF)":"var(--widget-bot-message-text, #111827)"},children:e.text})})}function mf({agentName:e,avatarUrl:t,variablesConfig:n=[],onSubmit:r,onClose:i,className:a}){const[o,s]=x.useState(()=>n.reduce((e,{key:t})=>c(l({},e),{[t]:""}),{})),[u,d]=x.useState({}),f=x.useMemo(()=>n.filter(e=>e.required).map(e=>e.key),[n]),p=x.useCallback(e=>e.split(/[_-]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),[]),h=x.useCallback((e,t)=>{s(n=>c(l({},n),{[e]:t})),u[e]&&d(t=>c(l({},t),{[e]:null}))},[u]),m=x.useCallback(()=>{const e={};let t=!1;if(f.forEach(n=>{const r=o[n];var i;r&&""!==r.trim()?"email"!==n.toLowerCase()||(i=r.trim(),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(i))||(e[n]="Please enter a valid email address",t=!0):(e[n]=`${p(n)} is required`,t=!0)}),t)return void d(e);const n=Object.fromEntries(Object.entries(o).filter(([e,t])=>t&&""!==t.trim()));r(n)},[o,f,p,r]),g=x.useCallback((e,t)=>{"Enter"===e.key&&t&&m()},[m]);return b.jsxs("div",{className:vt("flex flex-col h-full w-full animate-fade-in relative min-h-0",a),style:{backgroundColor:"var(--widget-background, #FFFFFF)",fontFamily:"var(--widget-font-family, system-ui)"},children:[b.jsx("button",{onClick:i,className:"absolute top-4 right-4 p-2 rounded-full hover:opacity-80 transition-opacity z-10",style:{color:"var(--widget-icon-secondary, #6B7280)"},"aria-label":"Close",children:b.jsx(Ft,{className:"h-6 w-6"})}),b.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:b.jsxs("div",{className:"flex flex-col items-center px-6 py-8 pt-14",children:[b.jsx(St,{src:t,alt:e,size:"xl",className:"mb-4 shadow-lg"}),b.jsx("h1",{className:"text-xl font-semibold mb-2 text-center",style:{color:"var(--widget-text-primary, #111827)"},children:"Before we start"}),b.jsxs("p",{className:"text-sm mb-6 text-center max-w-sm",style:{color:"var(--widget-text-secondary, #6B7280)"},children:["Please provide the following information to personalize your experience with ",b.jsx("span",{className:"font-medium",children:e})]}),b.jsx("div",{className:"w-full max-w-md space-y-4",children:n.map(({key:e,required:t},r)=>b.jsxs("div",{className:"space-y-1",children:[b.jsxs("label",{htmlFor:`var-${e}`,className:"block text-sm font-medium",style:{color:"var(--widget-text-primary, #111827)"},children:[p(e),t&&b.jsx("span",{className:"ml-1",style:{color:"var(--widget-status-error, #DC2626)"},children:"*"}),!t&&b.jsx("span",{className:"ml-1 text-xs font-normal",style:{color:"var(--widget-text-muted, #9CA3AF)"},children:"(optional)"})]}),b.jsx("input",{id:`var-${e}`,type:"text",value:o[e],onChange:t=>h(e,t.target.value),onKeyDown:e=>g(e,r===n.length-1),placeholder:`Enter ${p(e).toLowerCase()}`,className:"w-full px-4 py-3 rounded-lg text-sm outline-none transition-colors",style:{backgroundColor:"var(--widget-input-bg, #FFFFFF)",color:"var(--widget-input-text, #111827)",border:u[e]?"2px solid var(--widget-border-error, #DC2626)":"1px solid var(--widget-input-border, #E5E7EB)"},autoFocus:0===r}),u[e]&&b.jsx("p",{className:"text-xs",style:{color:"var(--widget-status-error, #DC2626)"},children:u[e]})]},e))})]})}),b.jsx("div",{className:"p-6 pb-safe shrink-0",style:{borderTop:"1px solid var(--widget-border, #E5E7EB)",paddingBottom:"max(1.5rem, env(safe-area-inset-bottom, 0px))"},children:b.jsx("div",{className:"max-w-md mx-auto",children:b.jsxs(kt,{onClick:m,variant:"default",size:"xl",className:"w-full",children:["Continue",b.jsx(Mt,{className:"h-5 w-5 ml-2"})]})})})]})}function gf({agentId:e,metadata:t={},widgetElement:n}){const{isOpen:r,currentScreen:i,setScreen:a,closeDialog:o,dynamicVariables:s,pendingScreen:c,setDynamicVariables:u,setPendingScreen:f}=H(),{agentName:p,avatarUrl:h,promptToken:m,themeConfig:g,tncConfig:v,interfaceConfig:y,appearanceConfig:w,dynamicVariablesConfig:k,isLoading:S,error:_}=function(e){var t,n,r;const{agentConfig:i,configLoading:a,configError:o,setAgentId:s,setAgentConfig:l,setConfigLoading:c,setConfigError:u}=H(),f=x.useRef(null),p=x.useRef(!1);x.useEffect(()=>{d(null,null,function*(){if(e){if(!(p.current||f.current===e&&i)){f.current&&f.current!==e&&(l(null),f.current=null);try{p.current=!0,c(!0),u(null),s(e);const t=yield G(e);if(!t||!t.widget_config)throw new Error("Invalid agent configuration structure");l(t),f.current=e}catch(_){u(_.message||"Failed to load configuration")}finally{p.current=!1,c(!1)}}}else u("Agent ID is required")})},[e,i,s,l,c,u]);const h=x.useCallback(()=>d(null,null,function*(){if(e)try{f.current=null,p.current=!0,c(!0),u(null);const t=yield G(e);if(!t||!t.widget_config)throw new Error("Invalid agent configuration structure");l(t),f.current=e}catch(_){u(_.message||"Failed to load configuration")}finally{p.current=!1,c(!1)}else u("Agent ID is required")}),[e,l,c,u]),m=(null==i?void 0:i.widget_config)||{},g=((null==i?void 0:i.dynamic_variables_keys)||[]).map(e=>({key:e,required:!0})),v=(null==(t=m.widget_dynamic_variables)?void 0:t.variables)||[],y=new Set(v.map(e=>e.key)),b=[...g.filter(e=>!y.has(e.key)),...v];return{agentConfig:i,agentName:(null==i?void 0:i.agent_name)||"AI Assistant",promptToken:(null==i?void 0:i.prompt_access_token)||null,dynamicVariablesConfig:b,interfaceConfig:m.widget_interface||{},appearanceConfig:m.widget_appearance||{},avatarConfig:m.widget_avatar||{},themeConfig:m.widget_theme||{},tncConfig:m.widget_tnc_config||{},avatarUrl:(null==(r=null==(n=null==i?void 0:i.MediaFiles)?void 0:n.find(e=>"avatar"===e.fileType))?void 0:r.mediaUrl)||null,isLoading:a,error:o,refresh:h}}(e),C=(null==k?void 0:k.length)>0&&0===Object.keys(s).length,E=x.useCallback(e=>{C?(f(e),a("variables")):a(e)},[C,f,a]),T=x.useCallback(e=>{u(e),c&&(a(c),f(null))},[c,u,a,f]),M=l(l({},t),s);if(x.useEffect(()=>{!r||S||!C||"chat"!==i&&"talk"!==i||(f(i),a("variables"))},[r,S,C,i,f,a]),!r)return null;if(S)return b.jsx(vf,{children:b.jsx(yf,{children:b.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-4",children:[b.jsx(At,{className:"h-12 w-12 animate-spin",style:{color:"var(--widget-primary-color, #3B82F6)"}}),b.jsx("p",{className:"text-sm",style:{color:"var(--widget-text-secondary, #6B7280)"},children:"Loading..."})]})})});if(_)return b.jsx(vf,{children:b.jsx(yf,{children:b.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-4 p-6",children:[b.jsx("div",{className:"text-4xl",role:"img","aria-label":"Error",children:"😕"}),b.jsx("h2",{className:"text-lg font-semibold",style:{color:"var(--widget-text-primary, #111827)"},children:"Something went wrong"}),b.jsx("p",{className:"text-sm text-center",style:{color:"var(--widget-text-secondary, #6B7280)"},children:_}),b.jsx("button",{onClick:o,className:"mt-4 px-6 py-2 rounded-lg text-sm font-medium",style:{backgroundColor:"var(--widget-button-secondary-bg, #F3F4F6)",color:"var(--widget-button-secondary-text, #374151)"},children:"Close"})]})})});return b.jsxs(vf,{onClick:o,children:[b.jsx(X,{theme:g,widgetElement:n}),b.jsx(yf,{onClick:e=>e.stopPropagation(),children:(()=>{switch(i){case"variables":return b.jsx(mf,{agentName:p,avatarUrl:h,variablesConfig:k,onSubmit:T,onClose:o});case"chat":return b.jsx(Vn,{agentId:e,agentName:p,promptToken:m,metadata:M,onClose:o,onSwitchToTalk:()=>a("talk")});case"talk":return b.jsx(pf,{agentId:e,agentName:p,avatarUrl:h,promptToken:m,metadata:M,showTranscripts:y.realtime_transcript_of_the_call,idlePromptMessages:w.idle_prompt_messages,onClose:o});default:return b.jsx(Rt,{agentName:p,avatarUrl:h,tncEnabled:v.tnc_enabled,tncContent:v.tnc_content,onTalk:()=>E("talk"),onChat:()=>E("chat"),onClose:o})}})()})]})}function vf({children:e,onClick:t}){return b.jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center animate-fade-in",style:{backgroundColor:"rgba(0, 0, 0, 0.5)",backdropFilter:"blur(4px)"},onClick:t,children:e})}function yf({children:e,onClick:t,className:n}){return b.jsx("div",{className:vt("relative w-full h-full overflow-hidden animate-scale-in","sm:max-w-lg sm:max-h-[90vh] sm:h-[700px] sm:rounded-2xl",n),style:{backgroundColor:"var(--widget-background, #FFFFFF)",boxShadow:"var(--widget-shadow-xl, 0 25px 50px -12px rgba(0, 0, 0, 0.25))"},onClick:t,children:e})}const bf='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--widget-font-family),system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-bottom-0\\.5{bottom:-.125rem}.-right-0\\.5{right:-.125rem}.right-4{right:1rem}.top-4{top:1rem}.z-10{z-index:10}.z-\\[9999\\]{z-index:9999}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1 / 1}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.min-h-0{min-height:0px}.min-h-\\[200px\\]{min-height:200px}.min-h-full{min-height:100%}.w-1\\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[85\\%\\]{max-width:85%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-bl-md{border-bottom-left-radius:.375rem}.rounded-br-md{border-bottom-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-current{background-color:currentColor}.bg-transparent{background-color:transparent}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\\[1px\\]{padding:1px}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-14{padding-top:3.5rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-2{--tw-ring-offset-width: 2px}.ring-offset-4{--tw-ring-offset-width: 4px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--widget-border, #e5e7eb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--widget-text-muted, #9ca3af)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.animate-fade-in{animation:fadeIn .3s ease-out}.animate-slide-up{animation:slideUp .4s ease-out}.animate-slide-down{animation:slideDown .4s ease-out}.animate-scale-in{animation:scaleIn .3s ease-out}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.animate-bounce{animation:bounce .6s ease-in-out infinite}@keyframes loaderSpin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}@keyframes loaderDash{0%{stroke-dashoffset:478}50%{stroke-dashoffset:120}to{stroke-dashoffset:478}}.animate-loader-spin{animation:loaderSpin 1.5s linear infinite,loaderDash 2s ease-in-out infinite;transform-origin:center}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.pt-safe{padding-top:env(safe-area-inset-top,0px)}.px-safe{padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:640px){.sm\\:h-\\[700px\\]{height:700px}.sm\\:max-h-\\[90vh\\]{max-height:90vh}.sm\\:max-w-lg{max-width:32rem}.sm\\:rounded-2xl{border-radius:1rem}}';class wf extends HTMLElement{constructor(){super(),this.root=null,this.shadow=null,this.themeStyleSheet=null,this.agentId=null,this.metadata={}}injectThemeCSS(e){if(this.shadow&&e)try{if(this.themeStyleSheet){const e=this.shadow.adoptedStyleSheets.indexOf(this.themeStyleSheet);e>-1&&(this.shadow.adoptedStyleSheets=this.shadow.adoptedStyleSheets.filter((t,n)=>n!==e))}const t=new CSSStyleSheet;t.replaceSync(e),this.shadow.adoptedStyleSheets=[...this.shadow.adoptedStyleSheets,t],this.themeStyleSheet=t}catch(t){const n=document.createElement("style");n.setAttribute("data-eigi-theme","true"),n.textContent=e;const r=this.shadow.querySelector("[data-eigi-theme]");r&&r.remove(),this.shadow.appendChild(n)}}connectedCallback(){this.agentId=this.getAttribute("agent-id");const e=this.getAttribute("metadata");if(e)try{this.metadata=JSON.parse(e)}catch(sr){}if(!this.agentId)return;const t=this.attachShadow({mode:"open"});this.shadow=t;try{const e=new CSSStyleSheet;e.replaceSync(bf),t.adoptedStyleSheets=[e]}catch(r){const e=document.createElement("style");e.textContent=bf,t.appendChild(e)}const n=document.createElement("div");n.id="eigi-chat-root",t.appendChild(n),this.root=V.createRoot(n),this.render(),this.agentId,"undefined"!=typeof window&&window.EigiChat&&(window.EigiChat._element=this,window.EigiChat._agentId=this.agentId,window.EigiChat._metadata=this.metadata,H.getState().setAgentId(this.agentId))}render(){this.root&&this.root.render(b.jsx(C.StrictMode,{children:b.jsx(gf,{agentId:this.agentId,metadata:this.metadata,widgetElement:this})}))}disconnectedCallback(){this.root&&(this.root.unmount(),this.root=null)}static get observedAttributes(){return["agent-id","metadata","action"]}attributeChangedCallback(e,t,n){if(t!==n)if("agent-id"===e)this.agentId=n,this.render();else if("metadata"===e){try{this.metadata=JSON.parse(n)}catch(sr){}this.render()}else"action"===e&&this.handleAction(n)}handleAction(e){if(!e)return;const t=H.getState();switch(e){case"open":t.openDialog();break;case"close":t.closeDialog();break;case"toggle":t.toggleDialog();break;case"openChat":t.openChat();break;case"openTalk":t.openTalk()}setTimeout(()=>{this.removeAttribute("action")},100)}}"undefined"==typeof window||customElements.get("eigi-chat")||customElements.define("eigi-chat",wf);const kf={_element:null,_agentId:null,_metadata:{},init({agentId:e,metadata:t={}}={}){e&&(this._agentId=e,this._metadata=t,H.getState().setAgentId(e),this._element?(this._element.setAttribute("agent-id",e),Object.keys(t).length>0&&this._element.setAttribute("metadata",JSON.stringify(t))):(this._element=document.createElement("eigi-chat"),this._element.setAttribute("agent-id",e),Object.keys(t).length>0&&this._element.setAttribute("metadata",JSON.stringify(t)),document.body.appendChild(this._element)))},open(){this._ensureInitialized(),H.getState().openDialog()},close(){H.getState().closeDialog()},toggle(){H.getState().toggleDialog()},isOpen:()=>H.getState().isOpen,openChat(){this._ensureInitialized(),H.getState().openChat()},openTalk(){this._ensureInitialized(),H.getState().openTalk()},_ensureInitialized(){!this._element&&this._agentId?this.init({agentId:this._agentId,metadata:this._metadata}):this._agentId}};if("undefined"!=typeof window){const e=document.querySelectorAll("script[data-agent-id]"),t=e[e.length-1];if(t){const e=t.getAttribute("data-agent-id"),n=t.getAttribute("data-metadata");let r={};if(n)try{r=JSON.parse(n)}catch(sr){}e&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{kf.init({agentId:e,metadata:r})}):kf.init({agentId:e,metadata:r}))}window.EigiChat=kf}return e.EigiChatAPI=kf,e.EigiChatElement=wf,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({});"undefined"!=typeof window&&window.EigiChatInternal&&(window.EigiChat=window.EigiChatInternal.EigiChatAPI,window.EigiChatElement=window.EigiChatInternal.EigiChatElement);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cliniq360/eigi-chat",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Embeddable AI chat dialog with voice and text capabilities",
5
5
  "type": "module",
6
6
  "main": "./dist/eigi-chat.js",