obi-sdk 0.19.54 → 0.19.55-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -130,4 +130,4 @@ ${t}</tr>
130
130
  `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
131
131
  `}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${xa(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let i=this.parser.parseInline(n),r=u3(t);if(r===null)return i;t=r;let a='<a href="'+t+'"';return e&&(a+=' title="'+xa(e)+'"'),a+=">"+i+"</a>",a}image({href:t,title:e,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let r=u3(t);if(r===null)return xa(n);t=r;let a=`<img src="${t}" alt="${n}"`;return e&&(a+=` title="${xa(e)}"`),a+=">",a}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:xa(t.text)}},Bb=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},gr=class $b{constructor(e){gt(this,"options"),gt(this,"renderer"),gt(this,"textRenderer"),this.options=e||ms,this.options.renderer=this.options.renderer||new up,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Bb}static parse(e,n){return new $b(n).parse(e)}static parseInline(e,n){return new $b(n).parseInline(e)}parse(e){var i,r;let n="";for(let a=0;a<e.length;a++){let o=e[a];if((r=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&r[o.type]){let l=o,c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=c||"";continue}}let s=o;switch(s.type){case"space":{n+=this.renderer.space(s);break}case"hr":{n+=this.renderer.hr(s);break}case"heading":{n+=this.renderer.heading(s);break}case"code":{n+=this.renderer.code(s);break}case"table":{n+=this.renderer.table(s);break}case"blockquote":{n+=this.renderer.blockquote(s);break}case"list":{n+=this.renderer.list(s);break}case"checkbox":{n+=this.renderer.checkbox(s);break}case"html":{n+=this.renderer.html(s);break}case"def":{n+=this.renderer.def(s);break}case"paragraph":{n+=this.renderer.paragraph(s);break}case"text":{n+=this.renderer.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(e,n=this.renderer){var r,a;let i="";for(let o=0;o<e.length;o++){let s=e[o];if((a=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&a[s.type]){let c=this.options.extensions.renderers[s.type].call({parser:this},s);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){i+=c||"";continue}}let l=s;switch(l.type){case"escape":{i+=n.text(l);break}case"html":{i+=n.html(l);break}case"link":{i+=n.link(l);break}case"image":{i+=n.image(l);break}case"checkbox":{i+=n.checkbox(l);break}case"strong":{i+=n.strong(l);break}case"em":{i+=n.em(l);break}case"codespan":{i+=n.codespan(l);break}case"br":{i+=n.br(l);break}case"del":{i+=n.del(l);break}case"text":{i+=n.text(l);break}default:{let c='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return i}},dp,Du=(dp=class{constructor(t){gt(this,"options"),gt(this,"block"),this.options=t||ms}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?mr.lex:mr.lexInline}provideParser(){return this.block?gr.parse:gr.parseInline}},gt(dp,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),gt(dp,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),dp),Hz=class{constructor(...t){gt(this,"defaults",Ab()),gt(this,"options",this.setOptions),gt(this,"parse",this.parseMarkdown(!0)),gt(this,"parseInline",this.parseMarkdown(!1)),gt(this,"Parser",gr),gt(this,"Renderer",up),gt(this,"TextRenderer",Bb),gt(this,"Lexer",mr),gt(this,"Tokenizer",cp),gt(this,"Hooks",Du),this.use(...t)}walkTokens(t,e){var i,r;let n=[];for(let a of t)switch(n=n.concat(e.call(this,a)),a.type){case"table":{let o=a;for(let s of o.header)n=n.concat(this.walkTokens(s.tokens,e));for(let s of o.rows)for(let l of s)n=n.concat(this.walkTokens(l.tokens,e));break}case"list":{let o=a;n=n.concat(this.walkTokens(o.items,e));break}default:{let o=a;(r=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&r[o.type]?this.defaults.extensions.childTokens[o.type].forEach(s=>{let l=o[s].flat(1/0);n=n.concat(this.walkTokens(l,e))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let a=e.renderers[r.name];a?e.renderers[r.name]=function(...o){let s=r.renderer.apply(this,o);return s===!1&&(s=a.apply(this,o)),s}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=e[r.level];a?a.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),i.extensions=e),n.renderer){let r=this.defaults.renderer||new up(this.defaults);for(let a in n.renderer){if(!(a in r))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let o=a,s=n.renderer[o],l=r[o];r[o]=(...c)=>{let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u||""}}i.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new cp(this.defaults);for(let a in n.tokenizer){if(!(a in r))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let o=a,s=n.tokenizer[o],l=r[o];r[o]=(...c)=>{let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Du;for(let a in n.hooks){if(!(a in r))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let o=a,s=n.hooks[o],l=r[o];Du.passThroughHooks.has(a)?r[o]=c=>{if(this.defaults.async&&Du.passThroughHooksRespectAsync.has(a))return(async()=>{let d=await s.call(r,c);return l.call(r,d)})();let u=s.call(r,c);return l.call(r,u)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await s.apply(r,c);return d===!1&&(d=await l.apply(r,c)),d})();let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,a=n.walkTokens;i.walkTokens=function(o){let s=[];return s.push(a.call(this,o)),r&&(s=s.concat(r.call(this,o))),s}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return mr.lex(t,e??this.defaults)}parser(t,e){return gr.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let i={...n},r={...this.defaults,...i},a=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=t),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(e):e,s=await(r.hooks?await r.hooks.provideLexer():t?mr.lex:mr.lexInline)(o,r),l=r.hooks?await r.hooks.processAllTokens(s):s;r.walkTokens&&await Promise.all(this.walkTokens(l,r.walkTokens));let c=await(r.hooks?await r.hooks.provideParser():t?gr.parse:gr.parseInline)(l,r);return r.hooks?await r.hooks.postprocess(c):c})().catch(a);try{r.hooks&&(e=r.hooks.preprocess(e));let o=(r.hooks?r.hooks.provideLexer():t?mr.lex:mr.lexInline)(e,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let s=(r.hooks?r.hooks.provideParser():t?gr.parse:gr.parseInline)(o,r);return r.hooks&&(s=r.hooks.postprocess(s)),s}catch(o){return a(o)}}}onError(t,e){return n=>{if(n.message+=`
132
132
  Please report this to https://github.com/markedjs/marked.`,t){let i="<p>An error occurred:</p><pre>"+xa(n.message+"",!0)+"</pre>";return e?Promise.resolve(i):i}if(e)return Promise.reject(n);throw n}}},gs=new Hz;function it(t,e){return gs.parse(t,e)}it.options=it.setOptions=function(t){return gs.setOptions(t),it.defaults=gs.defaults,JE(it.defaults),it},it.getDefaults=Ab,it.defaults=ms,it.use=function(...t){return gs.use(...t),it.defaults=gs.defaults,JE(it.defaults),it},it.walkTokens=function(t,e){return gs.walkTokens(t,e)},it.parseInline=gs.parseInline,it.Parser=gr,it.parser=gr.parse,it.Renderer=up,it.TextRenderer=Bb,it.Lexer=mr,it.lexer=mr.lex,it.Tokenizer=cp,it.Hooks=Du,it.parse=it,it.options,it.setOptions,it.use,it.walkTokens,it.parseInline,gr.parse,mr.lex;const Vz="_base_1ne03_1",Gz={base:Vz},Wz=["p","br","strong","em","u","a","ul","ol","li","h1","h2","h3","h4","h5","h6","code","pre","blockquote","hr"],Yz=["href","title","target","rel"];it.setOptions({breaks:!0,gfm:!0});function Kz(t){const{content:e,className:n,...i}=t,r=w.useMemo(()=>{if(!e)return"";const a=it.parse(e,{async:!1});return oz.sanitize(a,{ALLOWED_TAGS:[...Wz],ALLOWED_ATTR:[...Yz],ALLOW_DATA_ATTR:!1})},[e]);return r?f.jsx("div",{className:he(Gz.base,n),dangerouslySetInnerHTML:{__html:r},...i}):null}const Xz="_controlBar_6shmw_1",Jz="_popoverAnchor_6shmw_11",$z="_confirmationPopover_6shmw_15",Qz="_confirmationPopoverAlignRight_6shmw_30",Zz="_confirmationPopoverAlignCenter_6shmw_33",eF="_confirmationMessage_6shmw_53",tF="_confirmationActions_6shmw_60",nF="_confirmationButton_6shmw_65",iF="_confirmationButtonCancel_6shmw_83",rF="_confirmationButtonNeutral_6shmw_91",aF="_confirmationButtonDanger_6shmw_99",oF="_controlButton_6shmw_108",sF="_controlButtonIconOnly_6shmw_130",lF="_controlButtonDisabled_6shmw_135",cF="_controlButtonDanger_6shmw_162",uF="_controlButtonContent_6shmw_178",dF="_controlButtonIcon_6shmw_130",hF="_controlButtonLabel_6shmw_194",fF="_controlButtonChevron_6shmw_201",pF="_controlButtonNotificationDot_6shmw_210",mF="_deviceSplitButton_6shmw_222",gF="_deviceSplitButtonEnabled_6shmw_226",vF="_dualButtonContent_6shmw_307",bF="_dualButtonIcon_6shmw_317",yF="_dualButtonLabel_6shmw_326",_F="_screenShareButton_6shmw_340",xF="_screenShareButtonCompact_6shmw_351",We={controlBar:Xz,popoverAnchor:Jz,confirmationPopover:$z,confirmationPopoverAlignRight:Qz,confirmationPopoverAlignCenter:Zz,confirmationMessage:eF,confirmationActions:tF,confirmationButton:nF,confirmationButtonCancel:iF,confirmationButtonNeutral:rF,confirmationButtonDanger:aF,controlButton:oF,controlButtonIconOnly:sF,controlButtonDisabled:lF,controlButtonDanger:cF,controlButtonContent:uF,controlButtonIcon:dF,controlButtonLabel:hF,controlButtonChevron:fF,controlButtonNotificationDot:pF,deviceSplitButton:mF,deviceSplitButtonEnabled:gF,dualButtonContent:vF,dualButtonIcon:bF,dualButtonLabel:yF,screenShareButton:_F,screenShareButtonCompact:xF},SF="_inline_1gpyx_1",kF="_vertical_1gpyx_6",TF="_divider_1gpyx_10",wF="_dividerVertical_1gpyx_16",CF="_customDivider_1gpyx_21",Pu={inline:SF,vertical:kF,divider:TF,dividerVertical:wF,customDivider:CF},f3={none:"0px",xxs:"var(--space-xxs)",xs:"var(--space-xs)",sm:"var(--space-sm)",md:"var(--space-md)",lg:"var(--space-lg)",xl:"var(--space-xl)","2xl":"var(--space-2xl)","3xl":"var(--space-3xl)","4xl":"var(--space-4xl)","5xl":"var(--space-5xl)"};function vr(t){if(t!==void 0){if(typeof t=="number")return`${t}px`;if(t in f3)return f3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function EF(t,e){const{as:n,direction:i="horizontal",gap:r,align:a="center",justify:o,wrap:s=!1,divider:l,className:c,style:u,children:d,...h}=t,p=n??"div",b={display:"flex",flexDirection:i==="horizontal"?"row":"column",flexWrap:s?"wrap":"nowrap",alignItems:a,...o?{justifyContent:o}:{},...u};if(r!==void 0){const y=vr(r);y&&(b.gap=y)}const m=ai.Children.toArray(d).filter(y=>y!=null&&typeof y!="boolean"),S=y=>!l||y===0?null:l===!0||l==="line"?f.jsx("span",{"aria-hidden":"true",className:he(Pu.divider,i==="vertical"&&Pu.dividerVertical)},`inline-divider-${y}`):f.jsx("span",{"aria-hidden":"true",className:Pu.customDivider,children:l},`inline-divider-${y}`),g=[];return m.forEach((y,x)=>{if(x>0){const v=S(x);v&&g.push(v)}g.push(y)}),f.jsx(p,{ref:e,className:he(Pu.inline,i==="vertical"&&Pu.vertical,c),style:b,...h,children:g})}const Ub=ai.forwardRef(EF);Ub.displayName="Inline";function RF(){const[t,e]=w.useState(()=>typeof window>"u"?!1:window.innerWidth<768);return w.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const n=window.matchMedia("(max-width: 767px)"),i=()=>{e(n.matches)};return i(),typeof n.addEventListener=="function"?(n.addEventListener("change",i),()=>n.removeEventListener("change",i)):(n.addListener(i),()=>n.removeListener(i))},[]),t}function zb(t){const{icon:e,label:n,showChevron:i=!1,variant:r="default",disabled:a,className:o="",size:s="md",iconOnly:l=!1,showNotificationDot:c=!1,isOn:u,"aria-label":d,...h}=t,p=he(We.controlButton,a&&We.controlButtonDisabled,l&&We.controlButtonIconOnly,r==="danger"&&We.controlButtonDanger,o),b=Number.parseInt(vb[s],10),m=r==="danger"?"outline":"primary",S=r==="danger"?"danger":"default",g=f.jsxs(f.Fragment,{children:[f.jsxs("span",{className:We.controlButtonContent,children:[e?f.jsx("span",{className:We.controlButtonIcon,children:ai.isValidElement(e)&&e.props.size===void 0?ai.cloneElement(e,{size:b}):e}):null,l?null:f.jsx("span",{className:We.controlButtonLabel,children:n}),l||!i?null:f.jsx("span",{className:We.controlButtonChevron,"aria-hidden":"true",children:f.jsx(bb,{size:16})})]}),c?f.jsx("span",{className:We.controlButtonNotificationDot,"aria-hidden":"true"}):null]});return typeof u=="boolean"?f.jsx(ep,{...h,type:"button",disabled:a,variant:m,color:S,isOn:u,"aria-label":d||n,className:p,"data-has-notification":c?"true":void 0,children:g}):f.jsx(ps,{...h,type:"button",disabled:a,variant:m,color:S,"aria-label":d||n,className:p,"data-has-notification":c?"true":void 0,children:g})}function AF(t){const{audioDevices:e,currentMicrophoneId:n,isMicrophoneEnabled:i,isScreenShareActive:r,widgetState:a,canPublishData:o,browserSupportsScreenSharing:s,screenShareButtonVariant:l="default",onMicDeviceSelect:c,onMicToggle:u,onChatToggle:d,onLeave:h,onScreenShareToggle:p,showChatNotification:b=!1,isLanguageSelectorEnabled:m=!0,languages:S=[],selectedLanguage:g=null,defaultLanguageCode:y=null,isMultilingual:x=!1,onLanguageChange:v,isChatOpen:k=a==="chat"}=t,T=S.length,C=!m||T===0,R=RF(),A=R?"xs":"sm",N=R,[O,U]=w.useState(!1),[W,L]=w.useState(!1),X=w.useRef(null),P=w.useRef(null);w.useEffect(()=>{const j=be=>{const qt=be.composedPath();O&&X.current&&!qt.includes(X.current)&&U(!1),W&&P.current&&!qt.includes(P.current)&&L(!1)},me=be=>{be.key==="Escape"&&(O&&U(!1),W&&L(!1))};if(O||W)return document.addEventListener("mousedown",j),document.addEventListener("keydown",me),()=>{document.removeEventListener("mousedown",j),document.removeEventListener("keydown",me)}},[O,W]),w.useEffect(()=>{r||U(!1)},[r]);const G=w.useMemo(()=>e.map(j=>({label:j.label||`Microphone ${j.deviceId.slice(0,8)}`,value:j.deviceId})),[e]),J=w.useMemo(()=>n?G.find(j=>j.value===n)??null:null,[n,G]),te=w.useCallback(j=>{j.value,c(j.value)},[c]),Z={microphone:!0,screenShare:s,chat:o},F=w.useCallback(()=>{if(r){U(!0);return}p()},[r,p]),ee=w.useCallback(()=>{U(!1),p()},[p]),$=w.useCallback(()=>{U(!1)},[]),ue=w.useCallback(()=>{L(!0)},[]),B=w.useCallback(()=>{L(!1),h()},[h]),ve=w.useCallback(()=>{L(!1)},[]);return f.jsx("div",{className:We.controlBar,"data-testid":"control-bar","data-controls":JSON.stringify(Z),"data-language-option-count":T>0?String(T):void 0,"data-default-language-code":y??void 0,children:f.jsxs(Ub,{gap:A,align:"center",justify:"center",wrap:N,children:[f.jsx(mU,{onClick:u,buttonAriaLabel:i?"Mute microphone":"Unmute microphone",options:G,value:J,onChange:te,variant:"primary",menuPlacement:"top",menuDisabled:G.length===0,menuAriaLabel:"Select microphone device",listboxAriaLabel:"Microphone devices",ariaPressed:i,className:he(We.deviceSplitButton,i&&We.deviceSplitButtonEnabled),children:f.jsxs("span",{className:We.dualButtonContent,children:[f.jsx("span",{className:We.dualButtonIcon,children:i?f.jsx(kE,{}):f.jsx(TE,{})}),f.jsx("span",{className:We.dualButtonLabel,children:"Microphone"})]})}),o?f.jsx(zb,{icon:f.jsx(yE,{}),label:"Chat",onClick:d,isOn:k,"aria-label":"Toggle chat",showNotificationDot:b}):null,s?f.jsxs("div",{ref:X,className:We.popoverAnchor,children:[f.jsx(zb,{icon:f.jsx(wE,{}),label:r?"Share screen off":"Share screen",className:l==="compact"?We.screenShareButtonCompact:We.screenShareButton,iconOnly:l==="compact",onClick:F,isOn:r,"aria-label":r?"Stop screen sharing":"Start screen sharing"}),O?f.jsxs("div",{className:he(We.confirmationPopover,We.confirmationPopoverAlignCenter),role:"dialog","aria-label":"Stop screen sharing confirmation","data-testid":"confirm-stop-share",children:[f.jsx("p",{className:We.confirmationMessage,children:"Stop screen sharing?"}),f.jsxs("div",{className:We.confirmationActions,children:[f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonCancel),onClick:$,children:"Cancel"}),f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonNeutral),onClick:ee,children:"Stop"})]})]}):null]}):null,f.jsx(DE,{languages:S,value:g,onChange:v,defaultLanguageCode:y,variant:"control-bar",disabled:C}),f.jsxs("div",{ref:P,className:We.popoverAnchor,children:[f.jsx(zb,{icon:f.jsx(SE,{}),label:"Leave",variant:"danger",onClick:ue,"aria-label":"Leave meeting"}),W?f.jsxs("div",{className:he(We.confirmationPopover,We.confirmationPopoverAlignRight),role:"dialog","aria-label":"Leave meeting confirmation","data-testid":"confirm-leave",children:[f.jsx("p",{className:We.confirmationMessage,children:"Would you like to end the call?"}),f.jsxs("div",{className:We.confirmationActions,children:[f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonCancel),onClick:ve,children:"Cancel"}),f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonDanger),onClick:B,children:"Leave"})]})]}):null]})]})})}function NF(t){return f.jsx(AF,{...t})}const OF="_controlBar_1n8jn_1",MF="_controlButton_1n8jn_12",DF="_controlButtonDisabled_1n8jn_35",PF="_controlButtonDanger_1n8jn_62",LF="_controlButtonIconOnly_1n8jn_78",IF="_screenShareButton_1n8jn_83",jF="_controlButtonContent_1n8jn_88",BF="_controlButtonIcon_1n8jn_78",UF="_controlButtonLabel_1n8jn_103",zF="_controlButtonNotificationDot_1n8jn_108",FF="_popoverAnchor_1n8jn_198",qF="_confirmationPopover_1n8jn_202",HF="_confirmationMessage_1n8jn_216",VF="_confirmationActions_1n8jn_223",GF="_confirmationButton_1n8jn_228",WF="_confirmationButtonCancel_1n8jn_246",YF="_confirmationButtonDanger_1n8jn_254",dn={controlBar:OF,controlButton:MF,controlButtonDisabled:DF,controlButtonDanger:PF,controlButtonIconOnly:LF,screenShareButton:IF,controlButtonContent:jF,controlButtonIcon:BF,controlButtonLabel:UF,controlButtonNotificationDot:zF,popoverAnchor:FF,confirmationPopover:qF,confirmationMessage:HF,confirmationActions:VF,confirmationButton:GF,confirmationButtonCancel:WF,confirmationButtonDanger:YF};function hp(t){const{icon:e,label:n,variant:i="default",disabled:r,className:a="",iconOnly:o=!1,showNotificationDot:s=!1,isOn:l,"aria-label":c,...u}=t,d=he(dn.controlButton,r&&dn.controlButtonDisabled,o&&dn.controlButtonIconOnly,i==="danger"&&dn.controlButtonDanger,a),h=i==="danger"?"outline":"primary",p=i==="danger"?"danger":"default",b=f.jsxs(f.Fragment,{children:[f.jsxs("span",{className:dn.controlButtonContent,children:[e?f.jsx("span",{className:dn.controlButtonIcon,children:ai.isValidElement(e)&&e.props.size===void 0?ai.cloneElement(e,{size:20}):e}):null,o?null:f.jsx("span",{className:dn.controlButtonLabel,children:n})]}),s?f.jsx("span",{className:dn.controlButtonNotificationDot,"aria-hidden":"true"}):null]});return typeof l=="boolean"?f.jsx(ep,{...u,type:"button",disabled:r,variant:h,color:p,size:"xs",isOn:l,"aria-label":c||n,className:d,"data-has-notification":s?"true":void 0,children:b}):f.jsx(ps,{...u,type:"button",disabled:r,variant:h,color:p,size:"xs","aria-label":c||n,className:d,"data-has-notification":s?"true":void 0,children:b})}function KF(t){const{isMicrophoneEnabled:e,isChatOpen:n,isScreenShareActive:i,showChatNotification:r=!1,onMicToggle:a,onChatToggle:o,onScreenShareToggle:s,onLeave:l,languages:c=[],selectedLanguage:u=null,defaultLanguageCode:d=null,isMultilingual:h=!1,onLanguageChange:p,isLanguageSelectorEnabled:b=!0,className:m,testId:S,...g}=t,y=!b||c.length===0,[x,v]=w.useState(!1),k=w.useRef(null);w.useEffect(()=>{const O=W=>{const L=W.composedPath();x&&k.current&&!L.includes(k.current)&&v(!1)},U=W=>{W.key==="Escape"&&x&&v(!1)};if(x)return document.addEventListener("mousedown",O),document.addEventListener("keydown",U),()=>{document.removeEventListener("mousedown",O),document.removeEventListener("keydown",U)}},[x]);const T=w.useCallback(()=>{a()},[a]),C=w.useCallback(()=>{s()},[s]),R=w.useCallback(()=>{v(!0)},[]),A=w.useCallback(()=>{v(!1),l()},[l]),N=w.useCallback(()=>{v(!1)},[]);return f.jsx("div",{...g,className:he(dn.controlBar,m),"data-testid":S,children:f.jsxs(Ub,{gap:"xs",align:"center",justify:"center",wrap:!1,children:[f.jsx(hp,{icon:e?f.jsx(kE,{size:18}):f.jsx(TE,{size:18}),label:"Microphone",iconOnly:!0,isOn:e,onClick:T,"aria-label":e?"Mute microphone":"Unmute microphone"}),f.jsx(hp,{icon:f.jsx(yE,{}),label:"Chat",iconOnly:!0,isOn:n,onClick:o,"aria-label":"Toggle chat",showNotificationDot:r}),f.jsx(hp,{icon:f.jsx(wE,{}),label:"Screen share",iconOnly:!0,className:dn.screenShareButton,isOn:i,onClick:C,"aria-label":i?"Stop screen sharing":"Start screen sharing"}),f.jsx(DE,{languages:c,value:u,onChange:p,defaultLanguageCode:d,variant:"pip",disabled:y}),f.jsxs("div",{ref:k,className:dn.popoverAnchor,children:[f.jsx(hp,{icon:f.jsx(SE,{size:16}),label:"Hang up",iconOnly:!0,variant:"danger",onClick:R,"aria-label":"Hang up"}),x?f.jsxs("div",{className:dn.confirmationPopover,role:"dialog","aria-label":"Hang up confirmation","data-testid":"confirm-leave",children:[f.jsx("p",{className:dn.confirmationMessage,children:"Would you like to end the call?"}),f.jsxs("div",{className:dn.confirmationActions,children:[f.jsx("button",{type:"button",className:he(dn.confirmationButton,dn.confirmationButtonCancel),onClick:N,children:"Cancel"}),f.jsx("button",{type:"button",className:he(dn.confirmationButton,dn.confirmationButtonDanger),onClick:A,children:"Leave"})]})]}):null]})]})})}function XF(t){return f.jsx(KF,{...t})}const JF="_container_zht0b_1",$F="_containerGradient_zht0b_14",QF="_containerFlat_zht0b_24",ZF="_halo_zht0b_28",eq="_outerRing_zht0b_38",tq="_circle_zht0b_42",nq="_image_zht0b_72",iq="_captionContainer_zht0b_88",rq="_captionRegion_zht0b_99",Sa={container:JF,containerGradient:$F,containerFlat:QF,halo:ZF,outerRing:eq,circle:tq,image:nq,captionContainer:iq,captionRegion:rq},aq="_statusText_1dkze_6",oq={statusText:aq},sq={idle:null,thinking:"Thinking...",searching:"Searching..."};function lq(t){const{status:e,size:n="md"}=t,i=e?sq[e]:null,r=i!==null;return f.jsx("div",{className:oq.statusText,"data-visible":r,"data-size":n,"aria-live":"polite",children:i})}const cq="https://obi-static.s3.ap-southeast-2.amazonaws.com/images/obi-avatar.png",uq={sm:{haloSize:"4.5rem",maxBorderWidth:5,outerRingScalePower:.55,glowSize:"20px"},md:{haloSize:"8rem",maxBorderWidth:8,outerRingScalePower:.7,glowSize:"35px"},lg:{haloSize:"10rem",maxBorderWidth:10,outerRingScalePower:.75,glowSize:"42px"}};function p3(t){const{audioPower:e,size:n="md",background:i="gradient",imageSrc:r=cq,accentColor:a,ariaLabel:o="Avatar placeholder",status:s,captionsText:l,className:c,style:u,...d}=t,h=uq[n],p=Math.min(1,Math.max(0,e)),b=p>.01,m=b?Math.min(1,p/.5):0,S=b?Math.max(1,m*h.maxBorderWidth):0,g=1.02,y=b?g+p*h.outerRingScalePower:g,x=b?.2+p*.35:0,v={...u??{},...a?{"--avatar-fallback-accent":a}:{}},k={"--avatar-fallback-halo-size":h.haloSize,"--avatar-fallback-border-width":`${S}px`,"--avatar-fallback-secondary-border-scale":y.toString(),"--avatar-fallback-secondary-border-opacity":x.toString(),"--avatar-fallback-glow-size":h.glowSize},T=l!=null&&l!=="";return f.jsxs("div",{...d,className:he(Sa.container,i==="gradient"?Sa.containerGradient:Sa.containerFlat,c),style:v,"data-testid":"avatar-fallback","aria-label":o,role:"img",children:[f.jsxs("div",{className:Sa.halo,style:k,children:[f.jsx("div",{className:Sa.outerRing,"aria-hidden":"true"}),f.jsx("div",{className:Sa.circle,children:f.jsx("img",{className:Sa.image,src:r,alt:"","aria-hidden":"true"})}),f.jsx(lq,{status:s,size:n})]}),T&&f.jsx("div",{className:Sa.captionContainer,children:f.jsx("div",{className:Sa.captionRegion,"data-size":n,role:"status","aria-live":"polite","aria-atomic":"true",children:l})})]})}const dq="_container_1k3qg_11",hq="_screenshot_1k3qg_20",fq="_flash_1k3qg_30",Fb={container:dq,screenshot:hq,flash:fq};function pq(t){const{isActive:e,imageUrl:n,onComplete:i,duration:r=2e3}=t,[a,o]=w.useState(!1),s=w.useRef(null),l=w.useRef(i);return w.useEffect(()=>{l.current=i},[i]),w.useEffect(()=>{if(!e){o(!1),s.current&&(clearTimeout(s.current),s.current=null);return}if(!s.current)return o(!0),s.current=setTimeout(()=>{var c;o(!1),s.current=null,(c=l.current)==null||c.call(l)},r),()=>{s.current&&(clearTimeout(s.current),s.current=null)}},[e,r]),a?f.jsxs("div",{className:Fb.container,"aria-live":"polite","aria-label":"Screenshot captured",children:[n&&f.jsx("img",{src:n,alt:"Captured screenshot",className:Fb.screenshot}),f.jsx("div",{className:Fb.flash})]}):null}const mq="_container_13ukq_1",gq="_dragging_13ukq_5",vq="_placeholder_13ukq_9",bq="_handleButton_13ukq_15",yq="_customHandle_13ukq_105",Ll={container:mq,dragging:gq,placeholder:vq,handleButton:bq,"handle-top":"_handle-top_13ukq_65","handle-bottom":"_handle-bottom_13ukq_75","handle-left":"_handle-left_13ukq_85","handle-right":"_handle-right_13ukq_95",customHandle:yq};function _q(t){const{disabled:e,lingerMs:n,isDragging:i}=t,[r,a]=w.useState(!1),o=w.useRef(null),s=w.useCallback(()=>{o.current!==null&&(window.clearTimeout(o.current),o.current=null)},[]),l=w.useCallback(()=>{e||(s(),a(!0))},[s,e]),c=w.useCallback(()=>{e||i||(s(),o.current=window.setTimeout(()=>{a(!1),o.current=null},n))},[s,e,i,n]);return w.useEffect(()=>{i&&l()},[i,l]),w.useEffect(()=>s,[s]),{isHandleVisible:r,showHandle:l,scheduleHideHandle:c}}function xq(t){const{initialPosition:e,preserveSpace:n,onPositionChange:i}=t,r=w.useRef(null),[a,o]=w.useState(!!e),[s,l]=w.useState(!1),[c,u]=w.useState(null),[d,h]=w.useState(()=>e??{x:0,y:0}),p=w.useRef(d);s||(p.current=d);const b=w.useRef(null),m=w.useRef(!1),S=w.useRef(!1);w.useEffect(()=>{e&&(S.current||(o(!0),h(e),p.current=e))},[e==null?void 0:e.x,e==null?void 0:e.y]),w.useEffect(()=>{if(e||m.current)return;const v=r.current;if(!v)return;const k=v.getBoundingClientRect(),T={x:k.left,y:k.top};m.current=!0,o(!0),h(T),p.current=T,u(n?{width:k.width,height:k.height}:null)},[e,n]);const g=w.useCallback(v=>{const k=b.current;if(!(!k||v.pointerId!==k.pointerId)){b.current=null,S.current=!0,h(p.current),l(!1);try{v.currentTarget.releasePointerCapture(k.pointerId)}catch{}}},[]),y=w.useCallback(v=>{v.button===0&&(v.preventDefault(),v.currentTarget.setPointerCapture(v.pointerId),b.current={pointerId:v.pointerId,startClientX:v.clientX,startClientY:v.clientY,startX:p.current.x,startY:p.current.y},l(!0))},[]),x=w.useCallback(v=>{const k=b.current;if(!k||v.pointerId!==k.pointerId)return;const T={x:k.startX+(v.clientX-k.startClientX),y:k.startY+(v.clientY-k.startClientY)};p.current=T,r.current&&(r.current.style.transform=`translate3d(${T.x}px, ${T.y}px, 0)`),i==null||i(T)},[i]);return{containerRef:r,isFixed:a,isDragging:s,position:d,placeholderSize:c,onPointerDown:y,onPointerMove:x,endDrag:g}}function Sq(t){const{children:e,className:n,handle:i="top",initialPosition:r,disabled:a=!1,preserveSpace:o=!0,zIndex:s=1e3,onPositionChange:l,handleAriaLabel:c="Drag",handleLingerMs:u=350,style:d,...h}=t,{containerRef:p,isFixed:b,isDragging:m,position:S,placeholderSize:g,onPointerDown:y,onPointerMove:x,endDrag:v}=xq({initialPosition:r,preserveSpace:o,onPositionChange:l}),{isHandleVisible:k,showHandle:T,scheduleHideHandle:C}=_q({disabled:a,lingerMs:u,isDragging:m}),R=typeof e=="function",A=w.useMemo(()=>{const O=U=>f.jsx("div",{className:he(Ll.customHandle,U.className),onPointerDown:y,onPointerMove:x,onPointerUp:v,onPointerCancel:v,children:U.children});return O.displayName="Draggable.Handle",O},[y,x,v]),N={...d,position:b?"fixed":"relative",top:b?0:d==null?void 0:d.top,left:b?0:d==null?void 0:d.left,transform:b?`translate3d(${S.x}px, ${S.y}px, 0)`:d==null?void 0:d.transform,zIndex:b?s:d==null?void 0:d.zIndex};return f.jsxs(f.Fragment,{children:[o&&b&&g?f.jsx("div",{className:Ll.placeholder,style:{width:g.width,height:g.height}}):null,f.jsxs("div",{ref:p,className:he(Ll.container,m?Ll.dragging:null,n),"data-handle-visible":R?void 0:a?"false":k||m?"true":"false",style:N,onMouseEnter:R?void 0:T,onMouseLeave:R?void 0:C,...h,children:[!R&&!a?f.jsx("button",{type:"button",className:he(Ll.handleButton,Ll[`handle-${i}`]),"aria-label":c,onMouseEnter:T,onMouseLeave:C,onPointerDown:O=>{T(),y(O)},onPointerMove:x,onPointerUp:v,onPointerCancel:v}):null,R?e({Handle:A}):e]})]})}const kq="_container_gzwdo_1",Tq="_captionRegion_gzwdo_14",wq="_status_gzwdo_22",Cq="_captionText_gzwdo_29",fp={container:kq,captionRegion:Tq,status:wq,captionText:Cq},Eq={idle:null,thinking:"Thinking...",searching:"Searching..."};function Rq(t){const{text:e,status:n,className:i,...r}=t,a=n?Eq[n]:null;return f.jsx("div",{...r,className:he(fp.container,i),"data-testid":"pip-captions-panel",children:f.jsxs("div",{className:fp.captionRegion,role:"status","aria-live":"polite","aria-atomic":"true",children:[a?f.jsx("div",{className:fp.status,children:a}):null,f.jsx("div",{className:fp.captionText,children:e})]})})}const Aq="_panel_1laxg_1",Nq="_row_1laxg_22",Oq="_stepContent_1laxg_29",Mq="_stepLabel_1laxg_37",Dq="_currentStep_1laxg_44",Pq="_nextStep_1laxg_51",Lq="_skipButtonContainer_1laxg_65",Iq="_circleButton_1laxg_73",jq="_arrowPlaceholder_1laxg_100",Bq="_skipButton_1laxg_65",Xi={panel:Aq,row:Nq,stepContent:Oq,stepLabel:Mq,currentStep:Dq,nextStep:Pq,skipButtonContainer:Lq,circleButton:Iq,arrowPlaceholder:jq,skipButton:Bq},Uq="_truncatedText_1u580_1",zq={truncatedText:Uq};function m3(t){const{children:e,maxLines:n=2,className:i,"data-testid":r}=t;return f.jsx("div",{className:`${zq.truncatedText} ${i||""}`,style:{WebkitLineClamp:n},"data-testid":r,children:e})}function Fq(t,e,n){var c;const i=t.length,r=n&&i>0&&((c=t[i-1])==null?void 0:c.title)==="Conclusion",a=r?t.slice(0,-1):t.slice(),o=a.length;if(o===0)return{visibleSteps:a,currentIndex:null};const s=typeof e=="number"&&Number.isFinite(e)?e:1;if(r&&s===i)return{visibleSteps:a,currentIndex:null};const l=Math.min(Math.max(s,1),o)-1;return{visibleSteps:a,currentIndex:l}}function qb(t,e){return e<=0||typeof t!="number"||!Number.isFinite(t)?0:Math.min(Math.max(Math.trunc(t),1),e)-1}function qq(t){var C;const{steps:e,currentStep:n,onStepClick:i,hideTrailingConclusionStep:r=!0,className:a,testId:o,...s}=t,{visibleSteps:l,currentIndex:c}=w.useMemo(()=>Fq(e,n,r),[n,r,e]),[u,d]=w.useState(()=>qb(n,l.length)),h=w.useRef(!1);w.useEffect(()=>{if(!h.current)d(qb(n,l.length));else{const R=qb(n,l.length);u===R&&(h.current=!1)}},[n,l,u]);const p=l.length,b=l[u],m=u>0,S=u<p-1,g=S?(C=l[u+1])==null?void 0:C.title:void 0,y=p===0?0:u+1,x=c!==null&&b&&u!==c,v=()=>{m&&(h.current=!0,d(R=>Math.max(R-1,0)))},k=()=>{S&&(h.current=!0,d(R=>Math.min(R+1,p-1)))},T=()=>{!x||!b||!i||(h.current=!1,i(u,b))};return f.jsxs("div",{...s,className:he(Xi.panel,a),"data-testid":o,role:"group","aria-label":"Course progress",children:[f.jsxs("div",{className:Xi.row,children:[m?f.jsx("button",{type:"button",className:Xi.circleButton,"aria-label":"Previous step",onClick:v,children:f.jsx(_E,{size:14})}):f.jsx("span",{className:Xi.arrowPlaceholder,"aria-hidden":"true"}),f.jsxs("div",{className:Xi.stepContent,children:[f.jsxs(pi,{className:Xi.stepLabel,"aria-live":"polite",children:["Step ",y,"/",p]}),f.jsx(m3,{maxLines:2,children:f.jsx(pi,{className:Xi.currentStep,"data-testid":"pip-outline-current-step",children:(b==null?void 0:b.title)??"No steps available"})}),g?f.jsx(m3,{maxLines:2,children:f.jsxs(pi,{variant:"muted",className:Xi.nextStep,children:["Next: ",g]})}):null]}),S?f.jsx("button",{type:"button",className:Xi.circleButton,"aria-label":"Next step",onClick:k,children:f.jsx(IB,{size:14})}):f.jsx("span",{className:Xi.arrowPlaceholder,"aria-hidden":"true"})]}),x?f.jsx("div",{className:Xi.skipButtonContainer,children:f.jsx("button",{type:"button",className:Xi.skipButton,"aria-label":"Skip to this step",onClick:T,children:f.jsx(FB,{size:14})})}):null]})}const Hq="_window_zm5au_1",Vq="_exitButton_zm5au_14",Gq="_content_zm5au_47",Wq="_contentTopOverlay_zm5au_58",Yq="_dragHandle_zm5au_68",Kq="_contentBottomOverlay_zm5au_78",Xq="_controls_zm5au_87",Jq="_messagesPanelWrapper_zm5au_95",So={window:Hq,exitButton:Vq,content:Gq,contentTopOverlay:Wq,dragHandle:Yq,contentBottomOverlay:Kq,controls:Xq,messagesPanelWrapper:Jq};function $q(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}function Qq(t){const{onExit:e,controlBarProps:n,isCourseOutlineSelected:i,onCourseOutlineToggle:r,isCaptionsEnabled:a=!1,onCaptionsToggle:o,courseOutline:s,messagesPanel:l,avatarFallbackProps:c,contentTopOverlaySlot:u,screenshotUrl:d,cameraShotTrigger:h,className:p,testId:b,...m}=t,S=i,g=n.isChatOpen&&!S&&l,y=c==null?void 0:c.captionsText,x=a&&$q(y),[v,k]=w.useState(!1),T=w.useRef(h),C=w.useCallback(()=>{k(!1)},[]);w.useEffect(()=>{h&&h>0&&h!==T.current&&k(!0),T.current=h},[h]);const R=w.useCallback(()=>f.jsx(p3,{audioPower:(c==null?void 0:c.audioPower)??0,size:"sm",background:"flat",imageSrc:c==null?void 0:c.imageSrc,ariaLabel:c==null?void 0:c.ariaLabel,status:c==null?void 0:c.status}),[c]),A=S?s?f.jsx(qq,{steps:s.steps,currentStep:s.currentStep,onStepClick:s.onStepClick,hideTrailingConclusionStep:s.hideTrailingConclusionStep}):R():g?f.jsx("div",{className:So.messagesPanelWrapper,children:l}):x?f.jsx(Rq,{text:y}):R();return f.jsxs("div",{...m,className:he(So.window,p),"data-testid":b,role:"group","aria-label":"Picture-in-Picture",children:[f.jsxs("div",{className:So.content,children:[f.jsx("div",{className:So.contentTopOverlay,children:u}),f.jsx("button",{type:"button",className:So.exitButton,onClick:e,"aria-label":"Exit PiP",children:f.jsx(BB,{size:14})}),A,!g&&f.jsxs("div",{className:So.contentBottomOverlay,children:[f.jsx(ep,{isOn:i,onClick:r,variant:"primary",size:"xs","aria-label":"Toggle course outline",children:f.jsx(qB,{size:18})}),f.jsx(ep,{isOn:a,onClick:o,variant:"primary",size:"xs","aria-label":"Toggle captions",children:f.jsx(LB,{size:18})})]}),f.jsx(pq,{isActive:v,imageUrl:d??null,onComplete:C})]}),f.jsx("div",{className:So.controls,children:f.jsx(XF,{...n})})]})}function Zq(t){const{initialPosition:e,onPositionChange:n,zIndex:i=1e3,...r}=t;return f.jsx(Sq,{initialPosition:e,onPositionChange:n,zIndex:i,preserveSpace:!1,children:({Handle:a})=>f.jsx(Qq,{...r,contentTopOverlaySlot:f.jsx(a,{className:So.dragHandle})})})}const eH="_root_ygi3o_1",tH="_overlay_ygi3o_7",nH="_caption_ygi3o_17",Hb={root:eH,overlay:tH,caption:nH};function iH(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}function rH(t){const{children:e,className:n,text:i}=t,r=iH(i);return f.jsxs("div",{className:he(Hb.root,n),children:[e,r?f.jsx("div",{className:Hb.overlay,role:"status","aria-live":"polite","aria-atomic":"true",children:f.jsx("div",{className:Hb.caption,children:i})}):null]})}const aH="_box_dc9yv_1",oH={box:aH},g3={none:"0px",panel:"var(--radius-panel)",card:"var(--radius-card)"},v3={surface:"var(--color-surface)",surfaceMuted:"var(--color-surface-muted)",surfaceAlt:"var(--color-surface-alt)",primarySoft:"var(--color-primary-soft)",primarySofter:"var(--color-primary-softer)",dangerSurface:"var(--color-danger-surface)"};function sH(t){if(t!==void 0){if(typeof t=="number")return`${t}px`;if(t in g3)return g3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function lH(t){if(t!==void 0){if(t in v3)return v3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function cH(t,e){const{as:n,className:i,padding:r,paddingX:a,paddingY:o,paddingTop:s,paddingBottom:l,paddingLeft:c,paddingRight:u,paddingSm:d,paddingMd:h,paddingLg:p,paddingXl:b,margin:m,marginX:S,marginY:g,marginTop:y,marginBottom:x,marginLeft:v,marginRight:k,radius:T,radiusTop:C,radiusBottom:R,radiusLeft:A,radiusRight:N,radiusTopLeft:O,radiusTopRight:U,radiusBottomLeft:W,radiusBottomRight:L,background:X,gap:P,style:G,...J}=t,te=n??"div",Z={...G},F=Z,ee={},$=(j,me)=>{if(me===void 0)return;const be=vr(me);be&&(Z[j]=be)},ue=(j,me)=>{if(me===void 0)return;const be=vr(me);be&&(Z[j]=be)},B=(j,me)=>{if(me===void 0)return;const be=sH(me);be&&(Z[j]=be)},ve={sm:d,md:h,lg:p,xl:b};if(r!==void 0){const j=vr(r);j&&(F["--box-padding"]=j)}for(const[j,me]of Object.entries(ve)){if(me===void 0)continue;const be=vr(me);be&&(F[`--box-padding-${j}`]=be,ee[`data-padding-${j}`]="")}if(a!==void 0){const j=vr(a);j&&(Z.paddingLeft=j,Z.paddingRight=j)}if(o!==void 0){const j=vr(o);j&&(Z.paddingTop=j,Z.paddingBottom=j)}if($("paddingTop",s),$("paddingBottom",l),$("paddingLeft",c),$("paddingRight",u),m!==void 0){const j=vr(m);j&&(Z.margin=j)}if(S!==void 0){const j=vr(S);j&&(Z.marginLeft=j,Z.marginRight=j)}if(g!==void 0){const j=vr(g);j&&(Z.marginTop=j,Z.marginBottom=j)}if(ue("marginTop",y),ue("marginBottom",x),ue("marginLeft",v),ue("marginRight",k),P!==void 0){const j=vr(P);j&&(Z.gap=j)}if(B("borderRadius",T),C!==void 0&&(B("borderTopLeftRadius",C),B("borderTopRightRadius",C)),R!==void 0&&(B("borderBottomLeftRadius",R),B("borderBottomRightRadius",R)),A!==void 0&&(B("borderTopLeftRadius",A),B("borderBottomLeftRadius",A)),N!==void 0&&(B("borderTopRightRadius",N),B("borderBottomRightRadius",N)),B("borderTopLeftRadius",O),B("borderTopRightRadius",U),B("borderBottomLeftRadius",W),B("borderBottomRightRadius",L),X!==void 0){const j=lH(X);j&&(Z.background=j)}return f.jsx(te,{ref:e,className:he(oH.box,i),style:Z,...ee,...J})}const pp=ai.forwardRef(cH);pp.displayName="Box";const uH="_panel_eawk4_1",dH="_selected_eawk4_10",b3={panel:uH,selected:dH};function Lu(t){const{children:e,className:n,selected:i,...r}=t;return f.jsx("div",{className:he(b3.panel,i?b3.selected:null,n),...r,children:e})}const hH="_root_yccm8_1",fH="_header_yccm8_8",pH="_icon_yccm8_15",mH="_text_yccm8_26",gH="_heading_yccm8_33",vH="_description_yccm8_41",bH="_body_yccm8_47",yH="_footer_yccm8_54",ko={root:hH,header:fH,icon:pH,text:mH,heading:gH,description:vH,body:bH,footer:yH};function y3(t){const{className:e,...n}=t;return f.jsx("div",{className:he(ko.icon,e),...n})}function _3(t){const{className:e,...n}=t;return f.jsx("h3",{className:he(ko.heading,e),...n})}function x3(t){const{className:e,...n}=t;return f.jsx("p",{className:he(ko.description,e),...n})}function S3(t){const{className:e,...n}=t;return f.jsx("div",{className:he(ko.footer,e),...n})}function _H(t){const e=w.Children.toArray(t),n=[];let i,r,a,o;for(const s of e){if(w.isValidElement(s)&&s.type===y3&&i===void 0){i=s;continue}if(w.isValidElement(s)&&s.type===_3&&r===void 0){r=s;continue}if(w.isValidElement(s)&&s.type===x3&&a===void 0){a=s;continue}if(w.isValidElement(s)&&s.type===S3&&o===void 0){o=s;continue}n.push(s)}return{icon:i,heading:r,description:a,footer:o,body:n}}function xH(t){const{children:e,className:n,...i}=t,r=_H(e),a=r.icon||r.heading||r.description;return f.jsxs(Lu,{className:he(ko.root,n),...i,children:[a?f.jsxs("div",{className:ko.header,children:[r.icon,r.heading||r.description?f.jsxs("div",{className:ko.text,children:[r.heading,r.description]}):null]}):null,r.body.length?f.jsx("div",{className:ko.body,children:r.body}):null,r.footer]})}const Vb=Object.assign(xH,{Icon:y3,Heading:_3,Description:x3,Footer:S3}),SH="_panel_1ts1h_1",kH="_header_1ts1h_10",TH="_title_1ts1h_19",wH="_scrollArea_1ts1h_29",CH="_scrollable_1ts1h_34",EH="_list_1ts1h_39",RH="_courseButton_1ts1h_45",AH="_courseCard_1ts1h_56",NH="_courseHeading_1ts1h_65",OH="_courseDescription_1ts1h_71",MH="_empty_1ts1h_80",br={panel:SH,header:kH,title:TH,scrollArea:wH,scrollable:CH,list:EH,courseButton:RH,courseCard:AH,courseHeading:NH,courseDescription:OH,empty:MH};function DH(t){const{selectionMode:e,selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r}=t,a=n!==void 0,[o,s]=w.useState(()=>i??[]),l=a?n:o,c=w.useCallback(d=>{a||s(d),r==null||r(d)},[a,r]),u=w.useCallback(d=>{const h=l.includes(d);if(e==="single"){c(h?[]:[d]);return}if(h){c(l.filter(p=>p!==d));return}c([...l,d])},[l,e,c]);return{selectedCourseIds:l,toggleCourseId:u}}function PH(t){const{title:e="Courses",ariaLabel:n,className:i,courses:r,selectionMode:a="multiple",selectedCourseIds:o,onCourseToggle:s,emptyMessage:l="No courses available",testId:c,...u}=t;return f.jsxs(Lu,{...u,className:he(br.panel,i),role:"region","aria-label":n??e,"data-testid":c,children:[f.jsx("div",{className:br.header,children:f.jsx(pi,{as:"h2",className:br.title,children:e})}),f.jsx("div",{className:br.scrollArea,children:f.jsx(Dl,{className:br.scrollable,children:r.length===0?f.jsx(pi,{variant:"muted",className:br.empty,"data-testid":"course-panel-empty",children:l}):f.jsx("div",{className:br.list,"data-testid":"course-panel-list",children:r.map(d=>{const h=o.includes(d.id),p=d.disabled===!0;return f.jsx("button",{type:"button",className:br.courseButton,"aria-pressed":h,"aria-disabled":p,disabled:p,onClick:()=>s==null?void 0:s(d.id,d),"data-testid":`course-panel-item-${d.id}`,children:f.jsxs(Vb,{selected:h,className:br.courseCard,children:[f.jsx(Vb.Heading,{className:br.courseHeading,children:d.title}),d.description?f.jsx(Vb.Description,{className:br.courseDescription,children:d.description}):null]})},d.id)})})})})]})}function LH(t){const{selectionMode:e="multiple",selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r,onCourseToggle:a,...o}=t,{selectedCourseIds:s,toggleCourseId:l}=DH({selectionMode:e,selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r}),c=w.useCallback((u,d)=>{l(u),a==null||a(u,d)},[a,l]);return f.jsx(PH,{...o,selectionMode:e,selectedCourseIds:s,onCourseToggle:c})}const IH="_panel_1je0q_1",jH="_header_1je0q_10",BH="_headerActions_1je0q_19",UH="_popoverAnchor_1je0q_27",zH="_backButton_1je0q_31",FH="_divider_1je0q_38",qH="_title_1je0q_44",HH="_scrollArea_1je0q_54",VH="_scrollable_1je0q_59",GH="_list_1je0q_64",WH="_section_1je0q_70",YH="_sectionHeader_1je0q_76",KH="_sectionTitle_1je0q_80",XH="_sectionTitleCompact_1je0q_88",JH="_item_1je0q_92",$H="_itemClickable_1je0q_106",QH="_itemCompleted_1je0q_110",ZH="_itemCurrent_1je0q_114",eV="_itemFuture_1je0q_118",tV="_itemDisabled_1je0q_123",nV="_row_1je0q_137",iV="_stepHeader_1je0q_144",rV="_stepNumber_1je0q_153",aV="_stepTitle_1je0q_159",oV="_checkIcon_1je0q_171",sV="_empty_1je0q_175",lV="_confirmationPopover_1je0q_180",cV="_confirmationMessage_1je0q_204",uV="_confirmationActions_1je0q_211",dV="_confirmationButton_1je0q_216",hV="_confirmationButtonCancel_1je0q_234",fV="_confirmationButtonNeutral_1je0q_242",Ae={panel:IH,header:jH,headerActions:BH,popoverAnchor:UH,backButton:zH,divider:FH,title:qH,scrollArea:HH,scrollable:VH,list:GH,section:WH,sectionHeader:YH,sectionTitle:KH,sectionTitleCompact:XH,item:JH,itemClickable:$H,itemCompleted:QH,itemCurrent:ZH,itemFuture:eV,itemDisabled:tV,row:nV,stepHeader:iV,stepNumber:rV,stepTitle:aV,checkIcon:oV,empty:sV,confirmationPopover:lV,confirmationMessage:cV,confirmationActions:uV,confirmationButton:dV,confirmationButtonCancel:hV,confirmationButtonNeutral:fV};function pV(t){var p;const{steps:e,currentStep:n,hideTrailingConclusionStep:i}=t,r=e.length,a=i&&r>0&&((p=e[r-1])==null?void 0:p.title)==="Conclusion",o=a?e.slice(0,-1):e.slice(),s=o.length,l=typeof n=="number"&&isFinite(n)?n:1;if(s===0)return{visibleSteps:o,completedIndices:[],currentIndex:null,futureIndices:[]};if(a&&l===r)return{visibleSteps:o,completedIndices:Array.from({length:s},(b,m)=>m),currentIndex:null,futureIndices:[]};const c=Math.min(Math.max(l,1),s)-1,u=Array.from({length:Math.max(0,c)},(b,m)=>m),d=Math.min(c,s-1),h=Array.from({length:Math.max(0,s-(d+1))},(b,m)=>d+1+m);return{visibleSteps:o,completedIndices:u,currentIndex:d,futureIndices:h}}function mV(t){const{title:e="Course Outline",ariaLabel:n,className:i,steps:r,currentStep:a,onStepClick:o,hideTrailingConclusionStep:s=!0,emptyMessage:l="No steps available",density:c="default",testId:u,onBackToCoursesConfirm:d,backToCoursesDisabled:h=!1,backToCoursesLabel:p="Back to courses",backToCoursesConfirmMessage:b="Going back will end this course. You can start another course from the list.",backToCoursesConfirmLabel:m="Back",backToCoursesCancelLabel:S="Cancel",showBackToCourses:g=!0,...y}=t,[x,v]=w.useState(!1),k=w.useRef(null),T=h||!d,C=w.useCallback(G=>(G+1).toString().padStart(2,"0"),[]),{visibleSteps:R,completedIndices:A,currentIndex:N,futureIndices:O}=w.useMemo(()=>pV({steps:r,currentStep:a,hideTrailingConclusionStep:s}),[a,s,r]),U=c==="compact"?"md":"lg",W=w.useCallback(()=>{T||v(G=>!G)},[T]),L=w.useCallback(()=>{v(!1)},[]),X=w.useCallback(()=>{v(!1),d&&d()},[d]);w.useEffect(()=>{if(!x)return;const G=te=>{const Z=te.composedPath();k.current&&!Z.includes(k.current)&&v(!1)},J=te=>{te.key==="Escape"&&v(!1)};return document.addEventListener("mousedown",G),document.addEventListener("keydown",J),()=>{document.removeEventListener("mousedown",G),document.removeEventListener("keydown",J)}},[x]),w.useEffect(()=>{T&&x&&v(!1)},[T,x]);const P=w.useCallback((G,J)=>{const te=R[G];if(!te)return null;const Z=typeof o=="function",F=Z&&te.disabled===!0,ee=Z&&!F,$=he(Ae.item,{[Ae.itemClickable]:ee,[Ae.itemCompleted]:J==="completed",[Ae.itemCurrent]:J==="current",[Ae.itemFuture]:J==="future",[Ae.itemDisabled]:F}),ue=f.jsxs("div",{className:Ae.row,children:[f.jsxs("div",{className:Ae.stepHeader,children:[f.jsx("span",{className:Ae.stepNumber,children:C(G)}),f.jsx("span",{className:Ae.stepTitle,children:te.title})]}),J==="completed"?f.jsx(Qf,{size:20,className:Ae.checkIcon}):null]});return Z?f.jsx(pp,{as:"button",type:"button",className:$,onClick:()=>{ee&&o(G,te)},disabled:F,"aria-current":J==="current"?"step":void 0,"aria-label":`Step ${C(G)}: ${te.title}`,"data-testid":`course-outline-item-${te.id}`,padding:U,radius:"panel",gap:"sm",children:ue},te.id):f.jsx(pp,{className:$,"aria-current":J==="current"?"step":void 0,"aria-label":`Step ${C(G)}: ${te.title}`,"data-testid":`course-outline-item-${te.id}`,padding:U,radius:"panel",gap:"sm",children:ue},te.id)},[C,U,o,R]);return f.jsxs(Lu,{...y,className:he(Ae.panel,i),role:"region","aria-label":n??e,"data-testid":u,children:[f.jsxs("div",{className:Ae.header,children:[f.jsx(pi,{as:"h2",className:Ae.title,children:e}),g?f.jsx("div",{className:Ae.headerActions,children:f.jsxs("div",{ref:k,className:Ae.popoverAnchor,children:[f.jsxs(ps,{type:"button",variant:"secondary",color:"default",size:"sm",className:Ae.backButton,onClick:W,disabled:T,"aria-label":p,"data-testid":"course-outline-back-button",children:[f.jsx(_E,{size:16,"aria-hidden":"true"}),f.jsx("span",{children:p})]}),x?f.jsxs("div",{className:Ae.confirmationPopover,role:"dialog","aria-label":"Back to courses confirmation","data-testid":"course-outline-back-confirm",children:[f.jsx("p",{className:Ae.confirmationMessage,children:b}),f.jsxs("div",{className:Ae.confirmationActions,children:[f.jsx("button",{type:"button",className:he(Ae.confirmationButton,Ae.confirmationButtonCancel),onClick:L,"data-testid":"course-outline-back-cancel",children:S}),f.jsx("button",{type:"button",className:he(Ae.confirmationButton,Ae.confirmationButtonNeutral),onClick:X,"data-testid":"course-outline-back-confirm-action",children:m})]})]}):null]})}):null]}),f.jsx("div",{className:Ae.divider,"aria-hidden":"true"}),f.jsx("div",{className:Ae.scrollArea,children:f.jsx(Dl,{className:Ae.scrollable,children:R.length===0?f.jsx(pi,{variant:"muted",className:Ae.empty,"data-testid":"course-outline-empty",children:l}):f.jsxs("div",{className:Ae.list,"data-testid":"course-outline-list",children:[A.length>0?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-completed",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Completed"})}),A.map(G=>P(G,"completed"))]}):null,N!==null?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-current",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Current"})}),P(N,"current")]}):null,O.length>0?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-upcoming",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Upcoming"})}),O.map(G=>P(G,"future"))]}):null]})})})]})}function gV(t){return f.jsx(mV,{...t})}const vV="_panel_h7cuf_1",bV="_messagesArea_h7cuf_20",yV="_messagesList_h7cuf_46",_V="_messageItem_h7cuf_53",xV="_messageMetadata_h7cuf_59",SV="_senderName_h7cuf_67",kV="_timestamp_h7cuf_71",TV="_messageBubble_h7cuf_75",wV="_agentMessage_h7cuf_85",CV="_agentActions_h7cuf_89",EV="_copyButton_h7cuf_95",RV="_copyButtonCopied_h7cuf_129",AV="_empty_h7cuf_133",NV="_composer_h7cuf_140",OV="_composerDisabled_h7cuf_160",MV="_composerInput_h7cuf_165",DV="_sendButton_h7cuf_180",Cn={panel:vV,messagesArea:bV,messagesList:yV,messageItem:_V,messageMetadata:xV,senderName:SV,timestamp:kV,messageBubble:TV,agentMessage:wV,agentActions:CV,copyButton:EV,copyButtonCopied:RV,empty:AV,composer:NV,composerDisabled:OV,composerInput:MV,sendButton:DV};function PV(t){const e=new Date(t),n=e.getHours(),i=e.getMinutes(),r=n>=12?"PM":"AM",a=n%12||12,o=i.toString().padStart(2,"0");return`${a}:${o}${r}`}function LV(t,e){var i,r;if(typeof t.isAgent=="boolean")return t.isAgent;const n=((i=t.from)==null?void 0:i.identity)??void 0;return n&&e&&n===e?!1:((r=t.attributes)==null?void 0:r.source)==="agent-rpc"?!0:n?n==="agent-avatar"||n.startsWith("agent-"):!1}function IV(t,e){var i,r,a;const n=(i=t.from)==null?void 0:i.identity;return n&&e&&n===e?"You":((r=t.from)==null?void 0:r.name)??((a=t.attributes)==null?void 0:a.senderName)??n??"Unknown"}async function jV(t){var n;if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText)){await navigator.clipboard.writeText(t);return}if(typeof document>"u")throw new Error("Clipboard unavailable");const e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",e.style.top="0",e.setAttribute("readonly","true"),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}function BV(t){const{messages:e,localIdentity:n,onSend:i,isSending:r=!1,inputPlaceholder:a="Type a message...",className:o,testId:s,...l}=t,[c,u]=w.useState(""),[d,h]=w.useState(null),p=w.useRef(null),b=w.useRef(null),m=w.useMemo(()=>{const v=e[e.length-1];return v?v.id??`${v.timestamp}-${e.length-1}`:null},[e]);w.useEffect(()=>{var v,k;(k=(v=p.current)==null?void 0:v.scrollIntoView)==null||k.call(v,{behavior:"smooth"})},[m]),w.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=null)},[]);const S=w.useCallback(async()=>{const v=c.trim();v.length!==0&&(await i(v),u(""))},[c,i]),g=w.useCallback(v=>{v.key==="Enter"&&(v.preventDefault(),S())},[S]),y=w.useCallback(async(v,k)=>{try{await jV(v.message??""),h(k),b.current&&window.clearTimeout(b.current),b.current=window.setTimeout(()=>{h(null),b.current=null},2e3)}catch(T){console.warn("[PiPChatPanel] Failed to copy message",T)}},[]),x=c.trim().length>0&&!r;return f.jsxs("div",{...l,className:he(Cn.panel,o),"data-testid":s,role:"region","aria-label":"Chat",children:[f.jsx("div",{className:Cn.messagesArea,children:e.length===0?f.jsx("div",{className:Cn.empty,"data-testid":"pip-chat-panel-empty",children:"No messages yet"}):f.jsxs("div",{className:Cn.messagesList,"data-testid":"pip-chat-panel-list",children:[e.map((v,k)=>{const T=v.id??`${v.timestamp}-${k}`,C=LV(v,n),R=d===T;return f.jsxs("div",{className:he(Cn.messageItem,C&&Cn.agentMessage),"data-testid":`pip-chat-panel-message-${T}`,children:[f.jsxs("div",{className:Cn.messageMetadata,children:[f.jsx("span",{className:Cn.senderName,children:IV(v,n)}),f.jsx("span",{className:Cn.timestamp,children:PV(v.timestamp)})]}),f.jsx("div",{className:Cn.messageBubble,children:v.message}),C?f.jsx("div",{className:Cn.agentActions,children:f.jsx("button",{type:"button",className:he(Cn.copyButton,R&&Cn.copyButtonCopied),onClick:()=>void y(v,T),"aria-label":R?"Copied":"Copy message",title:R?"Copied":"Copy message","data-testid":"pip-copy-agent-message","data-copied":R?"true":"false",children:f.jsx(xE,{size:14})})}):null]},T)}),f.jsx("div",{ref:p})]})}),f.jsxs("div",{className:he(Cn.composer,r&&Cn.composerDisabled),children:[f.jsx("input",{type:"text",className:Cn.composerInput,value:c,onChange:v=>u(v.target.value),onKeyDown:g,placeholder:a,disabled:r,"aria-label":"Message"}),f.jsx("button",{type:"button",className:Cn.sendButton,onClick:()=>void S(),disabled:!x,"aria-label":"Send message",children:f.jsx(CE,{size:16})})]})]})}const UV="_panel_k5ick_1",zV="_header_k5ick_11",FV="_title_k5ick_19",qV="_titleCompact_k5ick_29",HV="_headerActions_k5ick_33",VV="_closeButton_k5ick_39",GV="_divider_k5ick_67",WV="_body_k5ick_73",YV="_messagesArea_k5ick_81",KV="_scrollable_k5ick_86",XV="_messagesList_k5ick_90",JV="_messageItem_k5ick_98",$V="_messageMetadata_k5ick_104",QV="_senderName_k5ick_112",ZV="_timestamp_k5ick_116",eG="_messageBubble_k5ick_120",tG="_messageText_k5ick_124",nG="_agentMessage_k5ick_130",iG="_agentActions_k5ick_134",rG="_copyButton_k5ick_140",aG="_copyButtonCopied_k5ick_174",oG="_inputRow_k5ick_178",sG="_empty_k5ick_182",lG="_composer_k5ick_188",cG="_composerDefault_k5ick_203",uG="_composerCompact_k5ick_208",dG="_composerDisabled_k5ick_218",hG="_composerInputWrapper_k5ick_223",fG="_composerInput_k5ick_223",pG="_sendButton_k5ick_240",mG="_sendButtonCompact_k5ick_257",tt={panel:UV,header:zV,title:FV,titleCompact:qV,headerActions:HV,closeButton:VV,divider:GV,body:WV,messagesArea:YV,scrollable:KV,messagesList:XV,messageItem:JV,messageMetadata:$V,senderName:QV,timestamp:ZV,messageBubble:eG,messageText:tG,agentMessage:nG,agentActions:iG,copyButton:rG,copyButtonCopied:aG,inputRow:oG,empty:sG,composer:lG,composerDefault:cG,composerCompact:uG,composerDisabled:dG,composerInputWrapper:hG,composerInput:fG,sendButton:pG,sendButtonCompact:mG};function gG(t){const e=new Date(t),n=e.getHours(),i=e.getMinutes(),r=n>=12?"PM":"AM",a=n%12||12,o=i.toString().padStart(2,"0");return`${a}:${o}${r}`}function vG(t,e){var i,r;if(typeof t.isAgent=="boolean")return t.isAgent;const n=((i=t.from)==null?void 0:i.identity)??void 0;return n&&e&&n===e?!1:((r=t.attributes)==null?void 0:r.source)==="agent-rpc"?!0:n?n==="agent-avatar"||n.startsWith("agent-"):!1}function bG(t,e){var i,r,a;const n=(i=t.from)==null?void 0:i.identity;return n&&e&&n===e?"You":((r=t.from)==null?void 0:r.name)??((a=t.attributes)==null?void 0:a.senderName)??n??"Unknown"}async function yG(t){var n;if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText)){await navigator.clipboard.writeText(t);return}if(typeof document>"u")throw new Error("Clipboard unavailable");const e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",e.style.top="0",e.setAttribute("readonly","true"),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}function _G(t){const{disabled:e,placeholder:n,size:i="md",autoFocus:r,onSend:a}=t,[o,s]=w.useState(""),l=w.useCallback(async()=>{const p=o.trim();p.length!==0&&(await a(p),s(""))},[a,o]),c=w.useCallback(p=>{p.key==="Enter"&&(p.preventDefault(),l())},[l]),u=i==="sm"||i==="xs",d=u?18:24,h=o.trim().length>0&&e!==!0;return f.jsxs("div",{className:he(tt.composer,u?tt.composerCompact:tt.composerDefault,e?tt.composerDisabled:null),children:[f.jsx("div",{className:tt.composerInputWrapper,children:f.jsx(RE,{value:o,onChange:s,onKeyDown:c,className:tt.composerInput,placeholder:n??"Send a message ...",disabled:e,size:i,autoFocus:r,"aria-label":"Message"})}),f.jsx("button",{type:"button",className:he(tt.sendButton,u?tt.sendButtonCompact:null),onClick:()=>void l(),disabled:!h,"aria-label":"Send message",children:f.jsx(CE,{size:d})})]})}function k3(t){const{title:e="Messages",ariaLabel:n,className:i,messages:r,isSending:a=!1,localIdentity:o,onSend:s,onClose:l,showCloseButton:c=!0,emptyMessage:u="No messages yet",density:d="default",testId:h,formatTimestamp:p=gG,getSenderName:b,isAgentMessage:m,copyResetDelayMs:S=2e3,showAgentCopyButton:g=!0,inputPlaceholder:y,inputAutoFocus:x,...v}=t,k=w.useRef(null),[T,C]=w.useState(null),R=w.useRef(null),A=w.useCallback(X=>b?b(X):bG(X,o),[b,o]),N=w.useCallback(X=>m?m(X,o):vG(X,o),[m,o]),O=w.useMemo(()=>{const X=r[r.length-1];return X?X.id??`${X.timestamp}-${r.length-1}`:null},[r]);w.useEffect(()=>{var X,P;(P=(X=k.current)==null?void 0:X.scrollIntoView)==null||P.call(X,{behavior:"smooth"})},[O]),w.useEffect(()=>()=>{R.current&&(window.clearTimeout(R.current),R.current=null)},[]);const U=w.useCallback(X=>{C(X),R.current&&window.clearTimeout(R.current),R.current=window.setTimeout(()=>{C(null),R.current=null},S)},[S]),W=w.useCallback(async(X,P)=>{try{await yG(X.message??""),U(P)}catch(G){console.warn("[ChatPanel] Failed to copy message",G)}},[U]),L=d==="compact"?"sm":"md";return f.jsxs(Lu,{...v,className:he(tt.panel,i),role:"region","aria-label":n??e,"data-testid":h,children:[f.jsxs("div",{className:tt.header,children:[f.jsx(pi,{as:"h2",className:he(tt.title,d==="compact"?tt.titleCompact:null),children:e}),l&&c?f.jsx("div",{className:tt.headerActions,children:f.jsx("button",{type:"button",className:tt.closeButton,onClick:l,"aria-label":`Close ${e}`,children:f.jsx(Zf,{size:d==="compact"?18:20})})}):null]}),f.jsx("div",{className:tt.divider,"aria-hidden":"true"}),f.jsxs("div",{className:tt.body,children:[f.jsx("div",{className:tt.messagesArea,children:f.jsx(Dl,{className:tt.scrollable,children:r.length===0?f.jsx(pi,{variant:"muted",className:tt.empty,"data-testid":"chat-panel-empty",children:u}):f.jsxs("div",{className:tt.messagesList,"data-testid":"chat-panel-list",children:[r.map((X,P)=>{const G=X.id??`${X.timestamp}-${P}`,J=N(X),te=T===G;return f.jsxs("div",{className:he(tt.messageItem,J?tt.agentMessage:null),"data-testid":`chat-panel-message-${G}`,children:[f.jsxs("div",{className:tt.messageMetadata,children:[f.jsx("span",{className:tt.senderName,children:A(X)}),f.jsx("span",{className:tt.timestamp,children:p(X.timestamp)})]}),f.jsx(pp,{className:tt.messageBubble,padding:"md",radius:"panel",background:J?"surfaceMuted":"surface",children:f.jsx("div",{className:tt.messageText,children:X.message})}),J&&g?f.jsx("div",{className:tt.agentActions,children:f.jsx("button",{type:"button",className:he(tt.copyButton,te?tt.copyButtonCopied:null),onClick:()=>void W(X,G),"aria-label":te?"Copied":"Copy agent message",title:te?"Copied":"Copy agent message","data-testid":"copy-agent-message","data-copied":te?"true":"false",children:f.jsx(xE,{size:18})})}):null]},G)}),f.jsx("div",{ref:k})]})})}),f.jsx("div",{className:tt.inputRow,children:f.jsx(_G,{onSend:s,disabled:a,placeholder:y,size:L,autoFocus:x})})]})]})}const xG="_responsive_14d0j_2",Iu={responsive:xG,"showAboveWidth-sm":"_showAboveWidth-sm_14d0j_15","showAboveWidth-md":"_showAboveWidth-md_14d0j_24","showAboveWidth-lg":"_showAboveWidth-lg_14d0j_33","showAboveWidth-xl":"_showAboveWidth-xl_14d0j_42","hideAboveWidth-sm":"_hideAboveWidth-sm_14d0j_53","hideAboveWidth-md":"_hideAboveWidth-md_14d0j_59","hideAboveWidth-lg":"_hideAboveWidth-lg_14d0j_65","hideAboveWidth-xl":"_hideAboveWidth-xl_14d0j_71","showAboveHeight-short":"_showAboveHeight-short_14d0j_84","showAboveHeight-medium":"_showAboveHeight-medium_14d0j_93","hideAboveHeight-short":"_hideAboveHeight-short_14d0j_104","hideAboveHeight-medium":"_hideAboveHeight-medium_14d0j_110"};function SG(t){const{as:e,children:n,showAboveWidth:i,hideAboveWidth:r,showAboveHeight:a,hideAboveHeight:o,className:s,...l}=t,c=[Iu.responsive];return i&&c.push(Iu[`showAboveWidth-${i}`]),r&&c.push(Iu[`hideAboveWidth-${r}`]),a&&c.push(Iu[`showAboveHeight-${a}`]),o&&c.push(Iu[`hideAboveHeight-${o}`]),f.jsx(e??"div",{...l,className:he(c,s),children:n})}w.createContext("vertical");const kG="_container_1v6ko_1",TG="_video_1v6ko_7",wG="_chip_1v6ko_16",CG="_logo_1v6ko_34",mp={container:kG,video:TG,chip:wG,logo:CG},EG="https://obi-static.s3.ap-southeast-2.amazonaws.com/videos/greeting.mp4";function RG(t){const{agentName:e="Obi",greetingVideoSrc:n,className:i,...r}=t,a=w.useRef(null),o=()=>{var s;try{(s=a.current)==null||s.pause()}catch{}};return f.jsxs("div",{className:he(mp.container,i),...r,children:[f.jsx("video",{ref:a,className:mp.video,src:n??EG,autoPlay:!0,muted:!0,playsInline:!0,onEnded:o}),f.jsxs("div",{className:mp.chip,children:[f.jsx(UB,{size:12,className:mp.logo}),f.jsx("span",{children:e})]})]})}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const T3=50,Il="?",w3=/\(error: (.*)\)/,C3=/captureMessage|captureException/;function AG(...t){const e=t.sort((n,i)=>n[0]-i[0]).map(n=>n[1]);return(n,i=0,r=0)=>{const a=[],o=n.split(`
133
- `);for(let s=i;s<o.length;s++){const l=o[s];if(l.length>1024)continue;const c=w3.test(l)?l.replace(w3,"$1"):l;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){a.push(d);break}}if(a.length>=T3+r)break}}return NG(a.slice(r))}}function NG(t){if(!t.length)return[];const e=Array.from(t);return/sentryWrapped/.test(gp(e).function||"")&&e.pop(),e.reverse(),C3.test(gp(e).function||"")&&(e.pop(),C3.test(gp(e).function||"")&&e.pop()),e.slice(0,T3).map(n=>({...n,filename:n.filename||gp(e).filename,function:n.function||Il}))}function gp(t){return t[t.length-1]||{}}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const OG=30,MG=50;function Gb(t,e,n,i){const r={filename:t,function:e==="<anonymous>"?Il:e,in_app:!0};return n!==void 0&&(r.lineno=n),i!==void 0&&(r.colno=i),r}const DG=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,PG=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,LG=/\((\S*)(?::(\d+))(?::(\d+))\)/,IG=t=>{const e=DG.exec(t);if(e){const[,i,r,a]=e;return Gb(i,Il,+r,+a)}const n=PG.exec(t);if(n){if(n[2]&&n[2].indexOf("eval")===0){const a=LG.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}const[i,r]=E3(n[1]||Il,n[2]);return Gb(r,i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}},jG=[OG,IG],BG=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,UG=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;AG(...[jG,[MG,t=>{const e=BG.exec(t);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const r=UG.exec(e[3]);r&&(e[1]=e[1]||"eval",e[3]=r[1],e[4]=r[2],e[5]="")}let n=e[3],i=e[1]||Il;return[i,n]=E3(i,n),Gb(n,i,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}}]]);const E3=(t,e)=>{const n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:Il,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[t,e]};typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const Ji={shell:"_shell_8bsnr_1",layout:"_layout_8bsnr_11",layoutThree:"_layoutThree_8bsnr_23",leftPanel:"_leftPanel_8bsnr_27",middlePanel:"_middlePanel_8bsnr_36",rightPanel:"_rightPanel_8bsnr_37",videoFrame:"_videoFrame_8bsnr_41",captions:"_captions_8bsnr_52",controls:"_controls_8bsnr_58",coursePanel:"_coursePanel_8bsnr_71",returnToPiPOverlay:"_returnToPiPOverlay_8bsnr_82",returnToPiPButton:"_returnToPiPButton_8bsnr_94"};function Wb(...t){return t.filter(Boolean).join(" ")}function zG(t){const{captionsText:e,avatarAudioPower:n=0,avatarImageSrc:i,avatarAriaLabel:r,avatarStatus:a,controlBarProps:o,courses:s,coursePanelProps:l,middlePanel:c,rightPanel:u,isCourseOutlineOpen:d,onReturnToPiP:h,className:p}=t;return f.jsx("div",{className:Wb(Ji.shell,p),"data-testid":"course-dialog-content",children:f.jsxs("div",{className:Wb(Ji.layout,u?Ji.layoutThree:null),children:[f.jsxs("div",{className:Ji.leftPanel,children:[f.jsxs("div",{className:Ji.videoFrame,children:[d&&h&&f.jsx("div",{className:Ji.returnToPiPOverlay,children:f.jsx("button",{type:"button",className:Ji.returnToPiPButton,onClick:h,"aria-label":"Return to PiP","data-testid":"course-return-to-pip",children:f.jsx(jB,{size:14})})}),f.jsx(rH,{className:Ji.captions,text:e,children:f.jsx(p3,{audioPower:n,size:"lg",background:"flat",imageSrc:i,ariaLabel:r??"Agent avatar placeholder",status:a})})]}),f.jsx("div",{className:Ji.controls,children:f.jsx(NF,{...o})})]}),u?f.jsx("div",{className:Ji.rightPanel,"data-testid":"course-dialog-right-panel",children:u}):null,f.jsx("div",{className:Ji.middlePanel,"data-testid":"course-dialog-middle-panel",children:c??f.jsx(LH,{...l,courses:s,className:Wb(Ji.coursePanel,l==null?void 0:l.className)})})]})})}function R3(t){const{open:e,onClose:n,dialogProps:i,...r}=t;return f.jsx(IE,{open:e,onClose:n,variant:"ghost",...i,children:f.jsx(zG,{...r})})}const FG=80,qG=500,HG=1e3;function VG(t,e){const{delayMs:n=0}=e??{},r=t.filter(m=>{var g;const S=(g=m.participantInfo)==null?void 0:g.identity;return(S==null?void 0:S.startsWith("agent-"))??!1}).map(m=>m.text??"").join(" ").trim(),[a,o]=w.useState(""),[s,l]=w.useState(!1),c=w.useRef(""),u=w.useRef(null),d=w.useRef(null),h=w.useRef(null),p=m=>{h.current&&(clearTimeout(h.current),h.current=null),n>0?h.current=setTimeout(()=>{o(m)},n):o(m)},b=(m,S)=>m.startsWith(S)?m.slice(S.length).trim():m.trim();return w.useEffect(()=>{if(d.current&&(clearTimeout(d.current),d.current=null),s)return;const m=b(r,c.current);p(m),m.length>FG?(l(!0),u.current=setTimeout(()=>{l(!1),c.current=r},qG+n)):m.length>0&&(d.current=setTimeout(()=>{c.current=r,p("")},HG+n))},[r,s,n]),w.useEffect(()=>()=>{u.current&&clearTimeout(u.current),d.current&&clearTimeout(d.current),h.current&&clearTimeout(h.current)},[]),{caption:a,hasCaption:a.length>0}}const yr={layout:"_layout_k1q6c_1",left:"_left_k1q6c_10",copy:"_copy_k1q6c_17",description:"_description_k1q6c_25",descriptionScroller:"_descriptionScroller_k1q6c_31",cta:"_cta_k1q6c_36",disclaimer:"_disclaimer_k1q6c_43",right:"_right_k1q6c_47",mediaPanel:"_mediaPanel_k1q6c_56",agentStill:"_agentStill_k1q6c_63",dialogWithSmallClose:"_dialogWithSmallClose_k1q6c_88"};function GG(t){const{open:e,onClose:n,onStart:i,agentName:r,agentSubtitle:a,description:o,startLabel:s="Start Now",disclaimer:l="Sessions are securely recorded for quality improvement purposes.",showCloseButton:c=!1,isStarting:u=!1,greetingVideoSrc:d}=t;return f.jsx(IE,{open:e,onClose:n,size:"large",showCloseButton:c,className:yr.dialogWithSmallClose,children:f.jsxs("div",{className:yr.layout,children:[f.jsxs("div",{className:yr.left,children:[f.jsxs("div",{className:yr.copy,children:[f.jsx(pi,{variant:"heading",children:r}),f.jsx(pi,{variant:"subheading",children:a}),f.jsx(pi,{variant:"muted",as:"div",className:yr.description,children:f.jsx(Dl,{className:yr.descriptionScroller,children:f.jsx(Kz,{content:o})})})]}),f.jsxs("div",{className:yr.cta,children:[f.jsx(ps,{type:"button",size:"lg",fullWidth:!0,onClick:i,isLoading:u,children:s}),f.jsx(pi,{variant:"subscript",as:"p",className:yr.disclaimer,children:l})]})]}),f.jsx(SG,{showAboveWidth:"md",children:f.jsx("div",{className:yr.right,children:f.jsx(Lu,{className:yr.mediaPanel,children:f.jsx(RG,{agentName:r,greetingVideoSrc:d,className:yr.agentStill})})})})]})})}const WG={launcherPill:"_launcherPill_1fhyr_1"};function YG(t){const{label:e,onClick:n}=t;return f.jsx("button",{type:"button",className:WG.launcherPill,onClick:n,"data-testid":"ai-coach-pill",children:e})}const A3="__ama_course__",KG="ama_course";function XG(t){var gi,jl,Bl,Ee,Mn,Ul,To,qr,wo,Co,zl,pn,mn,Eo,Ro,Hr,Ao,It,No,Oo,Mo,Do,Fl,_,I,M,ge,Ie,ye;const{sdk:e,shadowHost:n}=t,i=!!e.passivePlanUuid,r=i?((gi=e.client)==null?void 0:gi.selectedPlanUuid)??null:null,a=((jl=e.client)==null?void 0:jl.session)??null,o=!!a&&(i&&!!r||!!((Bl=e.client)!=null&&Bl.selectedPlanUuid)),[s,l]=w.useState(()=>a),[c,u]=w.useState(()=>a!=null&&a.sessionUuid?$G(a.sessionUuid):null),d=(()=>{var q;return a?((q=a.roomId)==null?void 0:q.startsWith("obs-"))&&!c?"course-selection":"pip":r?"start-session":"hidden"})(),[h,p]=w.useState(()=>d),[b,m]=w.useState(!1),[S,g]=w.useState(!1),[y,x]=w.useState(!1),[v,k]=w.useState([]),[T,C]=w.useState(null),[R,A]=w.useState(0),[N,O]=w.useState(!1),[U,W]=w.useState(!1),[L,X]=w.useState(0),[P,G]=w.useState(null),[J,te]=w.useState([]),[Z,F]=w.useState(!1),[ee,$]=w.useState(!1),[ue,B]=w.useState(()=>o),ve=w.useRef(o),j=w.useRef(!1),me=()=>{p(q=>{const K=q==="course-selection",pe=q==="course-outline"&&j.current;return K||pe?(j.current=!1,O(!1),"pip"):q})},be=QG((Mn=(Ee=e.client)==null?void 0:Ee.product)==null?void 0:Mn.widget_url_blacklist),qt=ZG(s),{audioDevices:En}=eW();w.useEffect(()=>{s!=null&&s.sessionUuid&&N3(s.sessionUuid,c)},[c,s==null?void 0:s.sessionUuid]);const{caption:Te}=VG(J,{delayMs:0}),Le=typeof navigator<"u"&&!!((Ul=navigator.mediaDevices)!=null&&Ul.getDisplayMedia),ht=((qr=(To=s==null?void 0:s.room)==null?void 0:To.localParticipant)==null?void 0:qr.isScreenShareEnabled)??!1,lt=q=>{var Se;const K=((Se=e.client)==null?void 0:Se.identity)??q.identity,pe=typeof(K==null?void 0:K.first_name)=="string"?K.first_name.trim():"",je=typeof(K==null?void 0:K.last_name)=="string"?K.last_name.trim():"",ae=typeof(K==null?void 0:K.email)=="string"&&K.email.trim().length>0?K.email.trim():"";return{firstName:pe,lastName:je,email:ae}},hn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe,je].map(Qe=>Qe.trim());return ae.some(Qe=>Qe.length>0)?ae.join(":"):""},fn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe].filter(Boolean).join(" ").trim();return{name:ae.length>0?ae:void 0,email:je.length>0?je:void 0,screenShareSupported:Le}},At=(()=>{if(s!=null&&s.speakingState){if(s.speakingState==="thinking")return"thinking";if(s.speakingState==="busy")return"searching"}})(),tn=((Co=(wo=e.client)==null?void 0:wo.product)==null?void 0:Co.avatar_image_url)||((pn=(zl=e.client)==null?void 0:zl.product)==null?void 0:pn.logo_url)||void 0,Nn=((Eo=(mn=e.client)==null?void 0:mn.product)==null?void 0:Eo.greeting_video_url)||void 0,Ri=JG({sdk:e,session:s,isBlacklisted:be}),$i=!i&&Ri,fe=!!(s??((Ro=e.client)==null?void 0:Ro.session)??null),He=(s==null?void 0:s.clientType)==="meet"?hn(s):"",we=(Ao=(Hr=e.client)==null?void 0:Hr.product)==null?void 0:Ao.assistant_subtitle,ft=typeof we=="string"&&we.trim().length>0?we:"AI Coach",nn=()=>A(q=>q+1),Jn=async()=>{var K,pe;if(!s)return;const q=((pe=(K=s.room)==null?void 0:K.localParticipant)==null?void 0:pe.isScreenShareEnabled)??!1;try{q?await s.setScreenShareEnabled(!1):await s.shareScreen()}catch(je){console.error("[obi-sdk] failed to toggle screen share",je)}finally{nn()}},Ai=w.useRef(null),z=w.useRef(null),oe=w.useRef(!1),le=w.useRef({session:null,sessionUuid:null,started:!1}),Oe=w.useRef(null),Ne=w.useRef(new WeakMap),vt=(q,K)=>{if(!K)return;let pe=Ne.current.get(q);pe||(pe=new Set,Ne.current.set(q,pe)),pe.add(K)},On=q=>{if(!q||Ai.current===q)return;z.current&&(z.current(),z.current=null);const K=()=>nn(),pe=ie=>{u(ie),q!=null&&q.sessionUuid&&N3(q.sessionUuid,ie),Array.isArray(ie.stepNames)&&ie.stepNames.length>0&&ie.totalSteps>0&&p(bt=>bt==="pip"||bt==="course-outline"?bt:bt==="course-selection"?(j.current=!0,"course-outline"):bt)},je=ie=>{k(ie.courses),p("course-selection"),j.current=!1,u(null),q!=null&&q.sessionUuid&&O3(q.sessionUuid),C(null),W(!1)},ae=(ie,Ye)=>{},Se=ie=>{ie.isAgent},Qe=ie=>{G(ie),X(Date.now())},Xt=ie=>{if(!ie){G(null);return}G(ie),X(Date.now())};q.on("stateChanged",K),q.on("speakingStateChanged",K),q.on("paused",K),q.on("unpaused",K),q.on("chatMessagesChanged",K),q.on("chatMessageReceived",Se),q.on("courseProgress",pe),q.on("courseSelection",je),q.on("transcript",ae),q.on("screenCaptured",Qe),q.on("screenCaptureNotification",Xt),q.on("captions",te),q.on("introductionComplete",me),Ai.current=q,z.current=()=>{q.off("stateChanged",K),q.off("speakingStateChanged",K),q.off("paused",K),q.off("unpaused",K),q.off("chatMessagesChanged",K),q.off("chatMessageReceived",Se),q.off("courseProgress",pe),q.off("courseSelection",je),q.off("transcript",ae),q.off("screenCaptured",Qe),q.off("screenCaptureNotification",Xt),q.off("captions",te),q.off("introductionComplete",me)}},mi=q=>{var pe;return q?((pe=q.roomId)==null?void 0:pe.startsWith("obs-"))&&!c?"course-selection":"pip":"hidden"};w.useEffect(()=>{const q=()=>{Oe.current&&(Oe.current(),Oe.current=null)},K=ae=>{if(ae.clientType!=="meet")return;if(le.current.session&&le.current.session===ae||!!le.current.sessionUuid&&!!ae.sessionUuid&&le.current.sessionUuid===ae.sessionUuid){if(le.current.started||Oe.current)return}else le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!1},q();const Qe=async()=>{le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!0};const Ye=hn(ae);Ye&&vt(ae,Ye);try{await ae.sendHumanJoined(fn(ae))}catch(bt){console.error("[obi-sdk] failed to send human_joined handshake",bt)}},Xt=(Ye,bt)=>{Ye==="connecting"||Ye==="error"||(q(),Qe())},ie=ae.state;if(ie&&ie!=="connecting"&&ie!=="error"){Qe();return}ae.on("stateChanged",Xt),Oe.current=()=>{ae.off("stateChanged",Xt)}},pe=ae=>{var Se,Qe,Xt,ie;if(ae)if((Se=e.client)!=null&&Se.session)p(mi(((Xt=e.client)==null?void 0:Xt.session)??null));else{const bt=!!e.passivePlanUuid,Dn=bt&&!!((Qe=e.client)!=null&&Qe.selectedPlanUuid);if(bt&&!Dn)return;p("start-session")}else(ie=e.client)!=null&&ie.session||p("hidden")},je=()=>nn();if(e.on("showMenu",pe),e.on("configUpdated",je),e.client){e.client.session&&(l(e.client.session),On(e.client.session),p(mi(e.client.session))),e.client.on("sessionStarted",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1);const Qe=ve.current;ve.current=!1,Qe?(j.current=!0,p("course-outline")):(j.current=!1,p(mi(Se))),ta().track("session-started",{planId:Se.planId}),K(Se)}),e.client.on("sessionResumed",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1),j.current=!1,p(mi(Se)),K(Se)});const ae=()=>{var Xt;const Se=(Xt=e.client)==null?void 0:Xt.session;Se!=null&&Se.sessionUuid&&O3(Se.sessionUuid);const Qe=Ai.current;z.current&&(z.current(),z.current=null),l(null),Ai.current=null,m(!1),g(!1),x(!1),W(!1),B(!1),ve.current=!1,j.current=!1,q(),le.current={session:null,sessionUuid:null,started:!1},Qe&&Ne.current.delete(Qe),oe.current||p("hidden")};e.client.on("sessionStopped",ae),e.client.on("sessionShutdown",ae),e.client.on("stateChanged",nn)}return()=>{e.off("showMenu",pe),e.off("configUpdated",je),z.current&&z.current(),q()}},[e]),w.useEffect(()=>{const q=s;if(!q||q.clientType!=="meet")return;const K=q.state;if(!K||K==="connecting"||K==="error"||!He)return;const pe=Ne.current.get(q);pe!=null&&pe.has(He)||(vt(q,He),q.sendHumanJoined(fn(q)).catch(je=>console.error("[obi-sdk] failed to send human_joined update",je)))},[Le,He,s,s==null?void 0:s.state]),w.useLayoutEffect(()=>{var q,K;(K=(q=e.client)==null?void 0:q.product)!=null&&K.primary_color&&n.style.setProperty("--obi-color-primary",e.client.product.primary_color)},[(No=(It=e.client)==null?void 0:It.product)==null?void 0:No.primary_color,n]),w.useEffect(()=>{if(i&&!be&&!fe){if(!r){p("hidden");return}p("start-session")}},[fe,i,be,r]),w.useEffect(()=>{var Xt,ie;$(!1);const q=(Xt=e.client)==null?void 0:Xt.api,K=(ie=e.client)==null?void 0:ie.product;if(!q||!K)return;const pe=(K==null?void 0:K.uuid)??(K==null?void 0:K.product_uuid),je=(K==null?void 0:K.slug)??(K==null?void 0:K.product_slug),ae=(K==null?void 0:K.id)??(K==null?void 0:K.product_id),Se={};if(pe?Se.product_uuid=pe:je?Se.product_slug=je:ae!=null&&(Se.product_id=String(ae)),Object.keys(Se).length===0)return;let Qe=!1;return q.getFeatureFlags(Se).then(Ye=>{if(Qe)return;const Dn=((Ye==null?void 0:Ye.data)??[]).find(Xb=>(Xb==null?void 0:Xb.slug)===KG);if(!Dn)return;const{user_enabled:Zn,product_enabled:Pn,global_enabled:_r}=Dn;let Kb=!!_r;Pn!=null&&(Kb=!!Pn),Zn!=null&&(Kb=!!Zn),$(Kb)}).catch(Ye=>{console.error("[obi-sdk] failed to load AMA feature flag",Ye)}),()=>{Qe=!0}},[(Oo=e.client)==null?void 0:Oo.api,(Mo=e.client)==null?void 0:Mo.product]);const ka=(c==null?void 0:c.stepNames.map((q,K)=>({id:`step-${K+1}`,title:q})))??[],$n=(c==null?void 0:c.currentStep)??null,Qn=!0,Qi=(q,K)=>{s==null||s.say(`Can we jump to the section about ${K.title}?`)};if(be||i&&!r&&!fe)return null;if(h==="hidden")return $i?f.jsx(YG,{label:ft,onClick:()=>{e.updateShowMenu(!0)}}):null;if(h==="start-session"){const q=(Do=e.client)==null?void 0:Do.product,K=(Fl=e.client)==null?void 0:Fl.selectedPlan,pe=i&&!!r,je=i&&!!r||!!((_=e.client)!=null&&_.selectedPlanUuid),ae=(q==null?void 0:q.agent_name)||"Obi",Se=(q==null?void 0:q.assistant_subtitle)||"AI Assistant",Qe=pe&&(K==null?void 0:K.description)||(q==null?void 0:q.assistant_description)||"";return f.jsx(GG,{open:!0,onClose:()=>{m(!1),p("hidden")},onStart:()=>{ve.current=je,B(je),m(!0),e.startSession({withMicrophone:!0})},agentName:ae,agentSubtitle:Se,description:Qe,showCloseButton:!1,startLabel:"Start Session",isStarting:b,greetingVideoSrc:Nn})}if(h==="course-selection"){const q=(I=s==null?void 0:s.roomId)==null?void 0:I.startsWith("obs-"),K=((M=e.client)==null?void 0:M.plans)||[],pe=q&&v.length>0,je=pe?v.slice().sort((ie,Ye)=>ie.order!==void 0&&Ye.order!==void 0?ie.order-Ye.order:ie.order!==void 0?-1:Ye.order!==void 0?1:ie.name.localeCompare(Ye.name)).map(ie=>({id:ie.uuid,title:ie.name,description:ie.description||ie.overview||"",status:ie.completed?"completed":"available",duration:typeof ie.duration=="number"?`${ie.duration} min`:ie.duration})):K.map(ie=>{var Ye,bt;return{id:ie.uuid,title:ie.name,description:ie.description,status:(bt=(Ye=e.client)==null?void 0:Ye.planIsCompleted)!=null&&bt[K.indexOf(ie)]?"completed":"available",duration:ie.estimated_duration?`${ie.estimated_duration} min`:void 0}});pe&&ee&&je.push({id:A3,title:"Ask me anything",description:"Ask questions before choosing a course.",status:"available"});const ae=(s==null?void 0:s.languageCodes)||[],Se=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,Qe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:ae,selectedLanguage:Se,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},Xt=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ge=s==null?void 0:s.room)==null?void 0:ge.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0;return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:je,controlBarProps:Qe,coursePanelProps:{selectedCourseIds:T?[T]:void 0,onCourseToggle:async ie=>{var Ye,bt,Dn,Zn;if(pe){if(ie===A3){try{await((Ye=s==null?void 0:s.say)==null?void 0:Ye.call(s,"Please start an AMA session."))}catch(_r){console.error("[obi-sdk] failed to start AMA course",_r)}return}const Pn=v.find(_r=>_r.uuid===ie);if(Pn){C(ie);try{await((bt=s==null?void 0:s.say)==null?void 0:bt.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),C(null)}}}else{const Pn=K.find(_r=>_r.uuid===ie);if(Pn){(Dn=e.client)==null||Dn.selectPlan(Pn),p("pip");try{await((Zn=s==null?void 0:s.say)==null?void 0:Zn.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),p("course-selection")}}}}},rightPanel:Xt,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="course-outline"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},je=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((Ie=s==null?void 0:s.room)==null?void 0:Ie.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0,ae=!!c,Se=!ue,Qe=async()=>{if(!(!(s!=null&&s.endCourse)||U)){W(!0);try{await s.endCourse()}catch(ie){console.error("[obi-sdk] failed to end course",ie),W(!1)}}},Xt=f.jsx(gV,{steps:ka,currentStep:$n,hideTrailingConclusionStep:Qn,onStepClick:Qi,showBackToCourses:Se,...Se?{onBackToCoursesConfirm:Qe,backToCoursesDisabled:U}:{}});return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:[],controlBarProps:pe,middlePanel:Xt,rightPanel:je,isCourseOutlineOpen:ae,onReturnToPiP:ae?()=>p("pip"):void 0,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="pip"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe=280,je=250,ae=16,Se={x:window.innerWidth-pe-ae,y:window.innerHeight-je-ae},Qe={isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isChatOpen:y,isScreenShareActive:ht,onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>x(ie=>!ie),onScreenShareToggle:Jn,onLeave:()=>{s==null||s.stop()},languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0},Xt=y?f.jsx(BV,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ye=s==null?void 0:s.room)==null?void 0:ye.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},testId:"pip-chat-panel"}):void 0;return f.jsx(Zq,{initialPosition:Se,onExit:()=>{j.current=!1,p("course-outline")},controlBarProps:Qe,isCourseOutlineSelected:N&&!!c,onCourseOutlineToggle:c?()=>{O(ie=>!ie)}:void 0,isCaptionsEnabled:Z,onCaptionsToggle:()=>F(ie=>!ie),courseOutline:c?{steps:ka,currentStep:$n,onStepClick:Qi,hideTrailingConclusionStep:Qn}:void 0,messagesPanel:Xt,avatarFallbackProps:{audioPower:qt,imageSrc:tn,status:At,captionsText:Te},screenshotUrl:P,cameraShotTrigger:L})}return null}function JG(t){var l,c;const{sdk:e,session:n,isBlacklisted:i}=t;if(i)return!1;const r=e.client;if(!r||r.state!=="ready"||(n??r.session??null))return!1;let o=e.isActive;return((l=r.product)==null?void 0:l.name)==="Canibuild"&&(o=!0),!(!o||(e.widgetDisplay??((c=r.product)==null?void 0:c.widget_display))==="invisible")}function N3(t,e){if(!t)return;const n=`obi-widget-course-progress-${t}`;if(e===null){localStorage.removeItem(n);return}try{const i={...e,timestamp:Date.now()};localStorage.setItem(n,JSON.stringify(i))}catch(i){console.error("[obi-sdk] failed to save course progress",i)}}function $G(t){if(!t)return null;const e=`obi-widget-course-progress-${t}`;try{const n=localStorage.getItem(e);if(!n)return null;const i=JSON.parse(n);if(typeof i.currentStep!="number"||typeof i.totalSteps!="number"||!Array.isArray(i.stepNames))return console.warn("[obi-sdk] invalid course progress data, clearing",i),localStorage.removeItem(e),null;const r=24*60*60*1e3;return i.timestamp&&Date.now()-i.timestamp>r?(localStorage.removeItem(e),null):{currentStep:i.currentStep,totalSteps:i.totalSteps,stepNames:i.stepNames}}catch(n){return console.error("[obi-sdk] failed to load course progress",n),localStorage.removeItem(e),null}}function O3(t){if(!t)return;const e=`obi-widget-course-progress-${t}`;try{localStorage.removeItem(e)}catch(n){console.error("[obi-sdk] failed to clear course progress",n)}}function QG(t){const[e,n]=w.useState(()=>fs(t));return w.useEffect(()=>{n(fs(t))},[t]),w.useEffect(()=>{const i=()=>{n(fs(t))};return window.addEventListener("popstate",i),window.addEventListener("hashchange",i),()=>{window.removeEventListener("popstate",i),window.removeEventListener("hashchange",i)}},[t]),e}function ZG(t){const[e,n]=w.useState(0),i=w.useRef(null),r=w.useRef(0),a=w.useRef(0);return w.useEffect(()=>{if(!t){n(0),r.current=0,a.current=0;return}const o=()=>{const s=t.audioSpectrum();let l=0;if(s&&s.length>0){let b=0;for(let m=0;m<s.length;m++)b+=s[m];l=Math.min(1,Math.max(0,b/s.length))}const c=r.current,d=l>=c?.7:.15,h=c*d+l*(1-d);r.current=h;const p=h<.05?0:Math.min(1,h);Math.abs(p-a.current)>.01&&(a.current=p,n(p)),i.current=requestAnimationFrame(o)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[t]),e}function eW(){const[t,e]=w.useState({audioDevices:[]});return w.useEffect(()=>{var i;if(typeof navigator>"u"||!((i=navigator.mediaDevices)!=null&&i.enumerateDevices))return;const n=()=>{navigator.mediaDevices.enumerateDevices().then(r=>{e({audioDevices:r.filter(a=>a.kind==="audioinput")})})};return n(),navigator.mediaDevices.addEventListener("devicechange",n),()=>navigator.mediaDevices.removeEventListener("devicechange",n)},[]),t}function M3(){const t=window.location.hostname;return t.endsWith(".getcor.ai")||t.endsWith(".getcor.io")||t.endsWith(".clinic1.com")||t==="getcor.ai"||t==="getcor.io"||t==="localhost"||t==="127.0.0.1"||t==="::1"}const D3=M3();function tW(t){if(document.querySelector("#obi-host")||document.querySelector("obi-widget"))return;nW();const e=document.createElement("div");e.id="obi-host",e.style.position="fixed",e.style.zIndex="9999",document.body.appendChild(e);const n=e.attachShadow({mode:"open"}),i=document.createElement("div");i.id="obi-container",n.appendChild(i);const r=new CSSStyleSheet;r.replaceSync(TB);const a=[r];if(D3){const s=new CSSStyleSheet;s.replaceSync(xB),a.push(s);const l=new CSSStyleSheet;l.replaceSync(kB),a.push(l)}else{const s=new CSSStyleSheet;s.replaceSync(SB),a.push(s)}n.adoptedStyleSheets=a;const o=_B.createRoot(i);D3?o.render(f.jsx(XG,{sdk:t,shadowHost:e})):o.render(f.jsx(EB,{sdk:t,shadowHost:e})),console.log("[obi-sdk] widget mounted")}function nW(){P3("https://fonts.cdnfonts.com/css/satoshi"),P3("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap")}function P3(t){const e=document.createElement("link");e.href=t,e.rel="stylesheet",document.head.appendChild(e)}const L3="49206C6F7665204F6269_session",I3="obi-url-params",Yb="obi-client-heartbeat",iW=5e3,j3=4e4,B3=15e3;function rW(){return M3()?"meet":"sdk"}class aW extends _p{constructor(e){super(),this.client=null,this.isActive=!1,this.primaryColour="#9500FF",this.passivePlanUuid=null,this.commandLog=[],this.commandQueue=[],this._resumed=!1,this.heartbeatInterval=null,this.dispatchCommand=(n,i)=>{var r,a,o,s,l;switch(this.commandLog.push({commandType:n,args:i}),n){case"update":this.updateConfig(i);break;case"startSession":{if(i!=null&&i.planUuid){const c=(((r=this.client)==null?void 0:r.plans)||[]).find(u=>u.uuid===i.planUuid)||null;if(!c){console.warn("[obi] startSession command requires a valid planUuid",i);return}(o=(a=this.client)==null?void 0:a.selectPlan)==null||o.call(a,c)}this.updateActive(!0);break}case"stopSession":(l=(s=this.client)==null?void 0:s.stopSession)==null||l.call(s);break;case"say":this.say(i);break;default:console.warn("[obi] unknown command",{commandType:n,args:i})}},e&&this.createClient(e),this.parsePassiveParams()}async createClient(e){if(this.client){this.client.appToken!==e&&console.warn("[obi] client already exists with different app token");return}let n=null;const i=rW(),r=this.load();if(r)try{const a=this.parsePersistedSessionMetadata(r),o=a&&this.isPersistedSessionStale(a);o!=null&&o.stale&&a?(this.trackStaleSessionDiscard(a.sessionUuid,o.ageMs,o.reason),this.clearCachedClient()):(n=bh.deserialise(r,e,i,{apiBaseUrl:"https://app.coragents.ai",captureScreen:this.captureScreen.bind(this)}),n?this._resumed=!0:this.clearCachedClient())}catch(a){console.error("[obi] error loading cached client",a),this.clearCachedClient()}n||(n=new bh(e,i,{apiBaseUrl:"https://app.coragents.ai",captureScreen:this.captureScreen.bind(this)})),this.client=n,this.client.session&&this.startHeartbeat(this.client.session.sessionUuid),this.client.on("stateChanged",a=>{var o,s,l,c,u,d,h,p,b,m;a==="ready"&&this.updateConfig({isActive:((o=window==null?void 0:window.obiWidgetConfig)==null?void 0:o.isActive)??((s=this.client)==null?void 0:s.showWidget),primaryColour:((c=(l=this.client)==null?void 0:l.product)==null?void 0:c.primary_color)||"#9500FF",widgetDisplay:((u=window==null?void 0:window.obiWidgetConfig)==null?void 0:u.widgetDisplay)||((h=(d=this.client)==null?void 0:d.product)==null?void 0:h.widget_display)||"regular",completedWidgetDisplay:((p=window==null?void 0:window.obiWidgetConfig)==null?void 0:p.completedWidgetDisplay)||((m=(b=this.client)==null?void 0:b.product)==null?void 0:m.completed_widget_display)||"regular"})}),this.client.on("sessionStarted",()=>{var a,o;this.save(),this.startHeartbeat(((o=(a=this.client)==null?void 0:a.session)==null?void 0:o.sessionUuid)||null),this.passivePlanUuid=null}),this.client.on("sessionStopped",()=>{this.clearCachedClient(),this.passivePlanUuid=null}),this.client.on("sessionShutdown",()=>{this.clearCachedClient()}),this.client.on("trackEvent",(a,o)=>{}),this.client.session&&(this.client.session.isPaused,this.client.resumeSession(a=>{a.on("stateChanged",o=>{o!=="disconnecting"&&o!=="disconnected"&&o!=="error"&&o!=="connecting"&&this.save()}),a.on("paused",()=>{this.save()}),a.on("unpaused",()=>{this.save()})}))}_maybeActOnServerEngagement(){var s;const e=this.client;if(!e||e.state!=="ready")return;const n=e.product,i=(s=e.engagement)==null?void 0:s.style;if(!i||n&&fs(n.widget_url_blacklist||[])||!e.showWidget)return;const r=e.plans||[],a=e.planIsCompleted||[],o=r.length>0&&a.filter(Boolean).length===r.length;if(!(r.length===0||o)){if(i==="modal"){const l=a.findIndex(u=>!u),c=l>=0?r[l]:null;c&&e.selectPlan(c)}else i==="popover"&&setTimeout(()=>{this.showMessage("Don't forget to complete your onboarding",{autoCloseMs:1e4})},1e3);try{ta().track("engagement-prompt-shown",{style:i})}catch{}}}async initialise(e={}){var n;this.commandQueue=e.queuedCommands||[],this._resumed?(this._resumed=!1,this.dispatchCommandQueue()):this.client?this.client.initialise({planUuid:this.passivePlanUuid||void 0,identity:((n=window==null?void 0:window.obiWidgetConfig)==null?void 0:n.user)||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}this.dispatchCommandQueue()}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}):this.dispatchCommandQueue()}async updateConfig(e){await this.updateAppToken(e.apiKey),this.updateActive(e.isActive),this.updatePrimaryColour(e.primaryColour),this.updateWidgetDisplay(e.widgetDisplay),this.updateCompletedWidgetDisplay(e.completedWidgetDisplay),this.updateWidgetPosition(e.widgetPosition),await this.updateIdentity(e.user),this.updateShowMenu(e.showMenu),this.emit("configUpdated")}async updateAppToken(e){var n;e===void 0||e==((n=this.client)==null?void 0:n.appToken)||(this.passivePlanUuid,await this.createClient(e),this.client&&await this.client.initialise({planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}))}updateActive(e){e===void 0||e==this.isActive||(this.isActive=e)}updatePrimaryColour(e){e===void 0||e==this.primaryColour||(this.primaryColour=e)}updateWidgetDisplay(e){e===void 0||e==this.widgetDisplay||(this.widgetDisplay=e)}updateCompletedWidgetDisplay(e){e===void 0||e==this.completedWidgetDisplay||(this.completedWidgetDisplay=e)}updateWidgetPosition(e){e===void 0||e==this.widgetPosition||(this.widgetPosition=e)}async updateIdentity(e){var i,r;if(e===void 0||e==((i=this.client)==null?void 0:i.identity))return;(r=this.client)==null||r.identity;let n=e?{...e,extra:{...e,...(e==null?void 0:e.extra)||{}}}:void 0;await this.client.initialise({identity:n,planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(a=>{console.error("[obi] error initialising client",a),this.emit("error",a)}),e!=null&&e.email&&ta().identify((e==null?void 0:e.email)||"",n)}updateShowMenu(e){e!==void 0&&this.emit("showMenu",e)}async say(e){var n,i,r;await((r=(i=(n=this.client)==null?void 0:n.session)==null?void 0:i.say)==null?void 0:r.call(i,e))}async startSession(e){await this.client.startSession(this.client.selectedPlanUuid||null,n=>{n.on("stateChanged",i=>{i!=="disconnecting"&&i!=="disconnected"&&i!=="error"&&i!=="connecting"&&this.save()}),n.on("paused",()=>{this.save()}),n.on("unpaused",()=>{this.save()})},e)}dispatchCommandQueue(){const e=this.commandQueue;this.commandQueue=[],e.forEach(n=>{try{this.dispatchCommand(n[0],n[1]||[])}catch(i){console.error("[obi] error dispatching command",i)}})}parsePassiveParams(){if(this.passivePlanUuid){this.passivePlanUuid;return}let e={};e=JSON.parse(localStorage.getItem(I3)||"{}"),Object.keys(e).length===0&&new URLSearchParams(window.location.search).forEach((a,o)=>{e[o]=a});const n=e[L3];if(!n)return null;const i=new URL(window.location.href);i.searchParams.delete(L3),window.history.replaceState({},"",i.toString()),i.toString(),localStorage.removeItem(I3),this.passivePlanUuid=n}mountWidget(){tW(this)}showMessage(e,n){try{this.emit("showMessage",{text:e,autoCloseMs:n==null?void 0:n.autoCloseMs})}catch{}}async captureScreen(){try{await fO(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.text_segmentation)),await sR(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.css_line_breaks))}catch(e){throw console.error("[obi] error initialising unicode trie",e),e}try{return(await GN(document.documentElement,{useCORS:!0,allowTaint:!0,foreignObjectRendering:!0})).toDataURL("image/png")}catch(e){throw console.error("[obi] error capturing screen",e),e}}save(){var n;const e=((n=this.client)==null?void 0:n.serialise())||"";localStorage.setItem("obi-client",e)}load(){return localStorage.getItem("obi-client")}parsePersistedSessionMetadata(e){const n=JSON.parse(e),i=this.parseTimestampMs(n.serialisedAt);if(!n.session)return null;let r=null;if(typeof n.session=="string")try{r=JSON.parse(n.session)}catch{return null}else typeof n.session=="object"&&(r=n.session);return r?{sessionUuid:typeof r.sessionUuid=="string"?r.sessionUuid:null,startedAtMs:this.parseTimestampMs(r.startedAt),serialisedAtMs:i}:null}isPersistedSessionStale(e){const n=Date.now(),i=this.readHeartbeat();if(i&&i.sessionUuid&&e.sessionUuid&&i.sessionUuid===e.sessionUuid){const s=Math.max(0,n-i.updatedAtMs);return{stale:s>j3,reason:s>j3?"heartbeat-stale":"heartbeat-fresh",ageMs:s}}const r=[e.serialisedAtMs,e.startedAtMs].filter(s=>typeof s=="number"&&Number.isFinite(s));if(r.length===0)return{stale:!0,reason:"fallback-missing-timestamps",ageMs:null};const a=Math.max(...r),o=Math.max(0,n-a);return{stale:o>B3,reason:o>B3?"fallback-too-old":"fallback-recent",ageMs:o}}parseTimestampMs(e){if(typeof e=="number")return e;if(typeof e=="string"){const n=Number(e);if(!Number.isNaN(n))return n;const i=Date.parse(e);return Number.isFinite(i)?i:null}return null}readHeartbeat(){const e=localStorage.getItem(Yb);if(!e)return null;try{return JSON.parse(e)}catch{return null}}trackStaleSessionDiscard(e,n,i){try{ta().track("stale-session-discarded",{sessionUuid:e||void 0,ageMs:n??void 0,reason:i})}catch{}}startHeartbeat(e){if(!e){this.clearHeartbeat();return}this.stopHeartbeat(),this.writeHeartbeat(e),this.heartbeatInterval=setInterval(()=>{this.writeHeartbeat(e)},iW)}stopHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}writeHeartbeat(e){const n={sessionUuid:e,updatedAtMs:Date.now()};localStorage.setItem(Yb,JSON.stringify(n))}clearHeartbeat(){this.stopHeartbeat(),localStorage.removeItem(Yb)}clearCachedClient(){this.clearHeartbeat(),localStorage.removeItem("obi-client")}}async function U3(t,e){let n;try{n=window}catch{console.warn("[obi] no window object found"),n={}}return oW({appToken:t,window:n,init:e})}async function oW({appToken:t,window:e,init:n}){var a,o;if(e.obi){console.warn("[obi] obi object already found on window, skipping");return}n&&n(),t||(t=(a=e==null?void 0:e.obiWidgetConfig)==null?void 0:a.apiKey);let i;try{i=((o=e.ObiSDK)==null?void 0:o.q)||[]}catch{i=[]}const r=new aW(t);return e.ObiSDK=r.dispatchCommand,await r.initialise({queuedCommands:i}),e.obi=r,r.mountWidget(),r}function z3(){}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{U3(void 0,z3)}):U3(void 0,z3)})();
133
+ `);for(let s=i;s<o.length;s++){const l=o[s];if(l.length>1024)continue;const c=w3.test(l)?l.replace(w3,"$1"):l;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){a.push(d);break}}if(a.length>=T3+r)break}}return NG(a.slice(r))}}function NG(t){if(!t.length)return[];const e=Array.from(t);return/sentryWrapped/.test(gp(e).function||"")&&e.pop(),e.reverse(),C3.test(gp(e).function||"")&&(e.pop(),C3.test(gp(e).function||"")&&e.pop()),e.slice(0,T3).map(n=>({...n,filename:n.filename||gp(e).filename,function:n.function||Il}))}function gp(t){return t[t.length-1]||{}}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const OG=30,MG=50;function Gb(t,e,n,i){const r={filename:t,function:e==="<anonymous>"?Il:e,in_app:!0};return n!==void 0&&(r.lineno=n),i!==void 0&&(r.colno=i),r}const DG=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,PG=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,LG=/\((\S*)(?::(\d+))(?::(\d+))\)/,IG=t=>{const e=DG.exec(t);if(e){const[,i,r,a]=e;return Gb(i,Il,+r,+a)}const n=PG.exec(t);if(n){if(n[2]&&n[2].indexOf("eval")===0){const a=LG.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}const[i,r]=E3(n[1]||Il,n[2]);return Gb(r,i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}},jG=[OG,IG],BG=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,UG=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;AG(...[jG,[MG,t=>{const e=BG.exec(t);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const r=UG.exec(e[3]);r&&(e[1]=e[1]||"eval",e[3]=r[1],e[4]=r[2],e[5]="")}let n=e[3],i=e[1]||Il;return[i,n]=E3(i,n),Gb(n,i,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}}]]);const E3=(t,e)=>{const n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:Il,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[t,e]};typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const Ji={shell:"_shell_8bsnr_1",layout:"_layout_8bsnr_11",layoutThree:"_layoutThree_8bsnr_23",leftPanel:"_leftPanel_8bsnr_27",middlePanel:"_middlePanel_8bsnr_36",rightPanel:"_rightPanel_8bsnr_37",videoFrame:"_videoFrame_8bsnr_41",captions:"_captions_8bsnr_52",controls:"_controls_8bsnr_58",coursePanel:"_coursePanel_8bsnr_71",returnToPiPOverlay:"_returnToPiPOverlay_8bsnr_82",returnToPiPButton:"_returnToPiPButton_8bsnr_94"};function Wb(...t){return t.filter(Boolean).join(" ")}function zG(t){const{captionsText:e,avatarAudioPower:n=0,avatarImageSrc:i,avatarAriaLabel:r,avatarStatus:a,controlBarProps:o,courses:s,coursePanelProps:l,middlePanel:c,rightPanel:u,isCourseOutlineOpen:d,onReturnToPiP:h,className:p}=t;return f.jsx("div",{className:Wb(Ji.shell,p),"data-testid":"course-dialog-content",children:f.jsxs("div",{className:Wb(Ji.layout,u?Ji.layoutThree:null),children:[f.jsxs("div",{className:Ji.leftPanel,children:[f.jsxs("div",{className:Ji.videoFrame,children:[d&&h&&f.jsx("div",{className:Ji.returnToPiPOverlay,children:f.jsx("button",{type:"button",className:Ji.returnToPiPButton,onClick:h,"aria-label":"Return to PiP","data-testid":"course-return-to-pip",children:f.jsx(jB,{size:14})})}),f.jsx(rH,{className:Ji.captions,text:e,children:f.jsx(p3,{audioPower:n,size:"lg",background:"flat",imageSrc:i,ariaLabel:r??"Agent avatar placeholder",status:a})})]}),f.jsx("div",{className:Ji.controls,children:f.jsx(NF,{...o})})]}),u?f.jsx("div",{className:Ji.rightPanel,"data-testid":"course-dialog-right-panel",children:u}):null,f.jsx("div",{className:Ji.middlePanel,"data-testid":"course-dialog-middle-panel",children:c??f.jsx(LH,{...l,courses:s,className:Wb(Ji.coursePanel,l==null?void 0:l.className)})})]})})}function R3(t){const{open:e,onClose:n,dialogProps:i,...r}=t;return f.jsx(IE,{open:e,onClose:n,variant:"ghost",...i,children:f.jsx(zG,{...r})})}const FG=80,qG=500,HG=1e3;function VG(t,e){const{delayMs:n=0}=e??{},r=t.filter(m=>{var g;const S=(g=m.participantInfo)==null?void 0:g.identity;return(S==null?void 0:S.startsWith("agent-"))??!1}).map(m=>m.text??"").join(" ").trim(),[a,o]=w.useState(""),[s,l]=w.useState(!1),c=w.useRef(""),u=w.useRef(null),d=w.useRef(null),h=w.useRef(null),p=m=>{h.current&&(clearTimeout(h.current),h.current=null),n>0?h.current=setTimeout(()=>{o(m)},n):o(m)},b=(m,S)=>m.startsWith(S)?m.slice(S.length).trim():m.trim();return w.useEffect(()=>{if(d.current&&(clearTimeout(d.current),d.current=null),s)return;const m=b(r,c.current);p(m),m.length>FG?(l(!0),u.current=setTimeout(()=>{l(!1),c.current=r},qG+n)):m.length>0&&(d.current=setTimeout(()=>{c.current=r,p("")},HG+n))},[r,s,n]),w.useEffect(()=>()=>{u.current&&clearTimeout(u.current),d.current&&clearTimeout(d.current),h.current&&clearTimeout(h.current)},[]),{caption:a,hasCaption:a.length>0}}const yr={layout:"_layout_k1q6c_1",left:"_left_k1q6c_10",copy:"_copy_k1q6c_17",description:"_description_k1q6c_25",descriptionScroller:"_descriptionScroller_k1q6c_31",cta:"_cta_k1q6c_36",disclaimer:"_disclaimer_k1q6c_43",right:"_right_k1q6c_47",mediaPanel:"_mediaPanel_k1q6c_56",agentStill:"_agentStill_k1q6c_63",dialogWithSmallClose:"_dialogWithSmallClose_k1q6c_88"};function GG(t){const{open:e,onClose:n,onStart:i,agentName:r,agentSubtitle:a,description:o,startLabel:s="Start Now",disclaimer:l="Sessions are securely recorded for quality improvement purposes.",showCloseButton:c=!1,isStarting:u=!1,greetingVideoSrc:d}=t;return f.jsx(IE,{open:e,onClose:n,size:"large",showCloseButton:c,className:yr.dialogWithSmallClose,children:f.jsxs("div",{className:yr.layout,children:[f.jsxs("div",{className:yr.left,children:[f.jsxs("div",{className:yr.copy,children:[f.jsx(pi,{variant:"heading",children:r}),f.jsx(pi,{variant:"subheading",children:a}),f.jsx(pi,{variant:"muted",as:"div",className:yr.description,children:f.jsx(Dl,{className:yr.descriptionScroller,children:f.jsx(Kz,{content:o})})})]}),f.jsxs("div",{className:yr.cta,children:[f.jsx(ps,{type:"button",size:"lg",fullWidth:!0,onClick:i,isLoading:u,children:s}),f.jsx(pi,{variant:"subscript",as:"p",className:yr.disclaimer,children:l})]})]}),f.jsx(SG,{showAboveWidth:"md",children:f.jsx("div",{className:yr.right,children:f.jsx(Lu,{className:yr.mediaPanel,children:f.jsx(RG,{agentName:r,greetingVideoSrc:d,className:yr.agentStill})})})})]})})}const WG={launcherPill:"_launcherPill_1fhyr_1"};function YG(t){const{label:e,onClick:n}=t;return f.jsx("button",{type:"button",className:WG.launcherPill,onClick:n,"data-testid":"ai-coach-pill",children:e})}const A3="__ama_course__",KG="ama_course";function XG(t){var gi,jl,Bl,Ee,Mn,Ul,To,qr,wo,Co,zl,pn,mn,Eo,Ro,Hr,Ao,It,No,Oo,Mo,Do,Fl,_,I,M,ge,Ie,ye;const{sdk:e,shadowHost:n}=t,i=!!e.passivePlanUuid,r=i?((gi=e.client)==null?void 0:gi.selectedPlanUuid)??null:null,a=((jl=e.client)==null?void 0:jl.session)??null,o=!!a&&(i&&!!r||!!((Bl=e.client)!=null&&Bl.selectedPlanUuid)),[s,l]=w.useState(()=>a),[c,u]=w.useState(()=>a!=null&&a.sessionUuid?$G(a.sessionUuid):null),d=(()=>{var q;return a?((q=a.roomId)==null?void 0:q.startsWith("obs-"))&&!c?"course-selection":"pip":r?"start-session":"hidden"})(),[h,p]=w.useState(()=>d),[b,m]=w.useState(!1),[S,g]=w.useState(!1),[y,x]=w.useState(!1),[v,k]=w.useState([]),[T,C]=w.useState(null),[R,A]=w.useState(0),[N,O]=w.useState(!1),[U,W]=w.useState(!1),[L,X]=w.useState(0),[P,G]=w.useState(null),[J,te]=w.useState([]),[Z,F]=w.useState(!1),[ee,$]=w.useState(!1),[ue,B]=w.useState(()=>o),ve=w.useRef(o),j=w.useRef(!1),me=()=>{p(q=>{const K=q==="course-selection",pe=q==="course-outline"&&j.current;return K||pe?(j.current=!1,O(!1),"pip"):q})},be=QG((Mn=(Ee=e.client)==null?void 0:Ee.product)==null?void 0:Mn.widget_url_blacklist),qt=ZG(s),{audioDevices:En}=eW();w.useEffect(()=>{s!=null&&s.sessionUuid&&N3(s.sessionUuid,c)},[c,s==null?void 0:s.sessionUuid]);const{caption:Te}=VG(J,{delayMs:0}),Le=typeof navigator<"u"&&!!((Ul=navigator.mediaDevices)!=null&&Ul.getDisplayMedia),ht=((qr=(To=s==null?void 0:s.room)==null?void 0:To.localParticipant)==null?void 0:qr.isScreenShareEnabled)??!1,lt=q=>{var Se;const K=((Se=e.client)==null?void 0:Se.identity)??q.identity,pe=typeof(K==null?void 0:K.first_name)=="string"?K.first_name.trim():"",je=typeof(K==null?void 0:K.last_name)=="string"?K.last_name.trim():"",ae=typeof(K==null?void 0:K.email)=="string"&&K.email.trim().length>0?K.email.trim():"";return{firstName:pe,lastName:je,email:ae}},hn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe,je].map(Qe=>Qe.trim());return ae.some(Qe=>Qe.length>0)?ae.join(":"):""},fn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe].filter(Boolean).join(" ").trim();return{name:ae.length>0?ae:void 0,email:je.length>0?je:void 0,screenShareSupported:Le}},At=(()=>{if(s!=null&&s.speakingState){if(s.speakingState==="thinking")return"thinking";if(s.speakingState==="busy")return"searching"}})(),tn=((Co=(wo=e.client)==null?void 0:wo.product)==null?void 0:Co.avatar_image_url)||((pn=(zl=e.client)==null?void 0:zl.product)==null?void 0:pn.logo_url)||void 0,Nn=((Eo=(mn=e.client)==null?void 0:mn.product)==null?void 0:Eo.greeting_video_url)||void 0,Ri=JG({sdk:e,session:s,isBlacklisted:be}),$i=!i&&Ri,fe=!!(s??((Ro=e.client)==null?void 0:Ro.session)??null),He=(s==null?void 0:s.clientType)==="meet"?hn(s):"",we=(Ao=(Hr=e.client)==null?void 0:Hr.product)==null?void 0:Ao.assistant_subtitle,ft=typeof we=="string"&&we.trim().length>0?we:"AI Coach",nn=()=>A(q=>q+1),Jn=async()=>{var K,pe;if(!s)return;const q=((pe=(K=s.room)==null?void 0:K.localParticipant)==null?void 0:pe.isScreenShareEnabled)??!1;try{q?await s.setScreenShareEnabled(!1):await s.shareScreen()}catch(je){console.error("[obi-sdk] failed to toggle screen share",je)}finally{nn()}},Ai=w.useRef(null),z=w.useRef(null),oe=w.useRef(!1),le=w.useRef({session:null,sessionUuid:null,started:!1}),Oe=w.useRef(null),Ne=w.useRef(new WeakMap),vt=(q,K)=>{if(!K)return;let pe=Ne.current.get(q);pe||(pe=new Set,Ne.current.set(q,pe)),pe.add(K)},On=q=>{if(!q||Ai.current===q)return;z.current&&(z.current(),z.current=null);const K=()=>nn(),pe=ie=>{u(ie),q!=null&&q.sessionUuid&&N3(q.sessionUuid,ie),Array.isArray(ie.stepNames)&&ie.stepNames.length>0&&ie.totalSteps>0&&p(bt=>bt==="pip"||bt==="course-outline"?bt:bt==="course-selection"?(j.current=!0,"course-outline"):bt)},je=ie=>{k(ie.courses),p("course-selection"),j.current=!1,u(null),q!=null&&q.sessionUuid&&O3(q.sessionUuid),C(null),W(!1)},ae=(ie,Ye)=>{},Se=ie=>{ie.isAgent},Qe=ie=>{G(ie),X(Date.now())},Xt=ie=>{if(!ie){G(null);return}G(ie),X(Date.now())};q.on("stateChanged",K),q.on("speakingStateChanged",K),q.on("paused",K),q.on("unpaused",K),q.on("chatMessagesChanged",K),q.on("chatMessageReceived",Se),q.on("courseProgress",pe),q.on("courseSelection",je),q.on("transcript",ae),q.on("screenCaptured",Qe),q.on("screenCaptureNotification",Xt),q.on("captions",te),q.on("introductionComplete",me),Ai.current=q,z.current=()=>{q.off("stateChanged",K),q.off("speakingStateChanged",K),q.off("paused",K),q.off("unpaused",K),q.off("chatMessagesChanged",K),q.off("chatMessageReceived",Se),q.off("courseProgress",pe),q.off("courseSelection",je),q.off("transcript",ae),q.off("screenCaptured",Qe),q.off("screenCaptureNotification",Xt),q.off("captions",te),q.off("introductionComplete",me)}},mi=q=>{var pe;return q?((pe=q.roomId)==null?void 0:pe.startsWith("obs-"))&&!c?"course-selection":"pip":"hidden"};w.useEffect(()=>{const q=()=>{Oe.current&&(Oe.current(),Oe.current=null)},K=ae=>{if(ae.clientType!=="meet")return;if(le.current.session&&le.current.session===ae||!!le.current.sessionUuid&&!!ae.sessionUuid&&le.current.sessionUuid===ae.sessionUuid){if(le.current.started||Oe.current)return}else le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!1},q();const Qe=async()=>{le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!0};const Ye=hn(ae);Ye&&vt(ae,Ye);try{await ae.sendHumanJoined(fn(ae))}catch(bt){console.error("[obi-sdk] failed to send human_joined handshake",bt)}},Xt=(Ye,bt)=>{Ye==="connecting"||Ye==="error"||(q(),Qe())},ie=ae.state;if(ie&&ie!=="connecting"&&ie!=="error"){Qe();return}ae.on("stateChanged",Xt),Oe.current=()=>{ae.off("stateChanged",Xt)}},pe=ae=>{var Se,Qe,Xt,ie;if(ae)if((Se=e.client)!=null&&Se.session)p(mi(((Xt=e.client)==null?void 0:Xt.session)??null));else{const bt=!!e.passivePlanUuid,Dn=bt&&!!((Qe=e.client)!=null&&Qe.selectedPlanUuid);if(bt&&!Dn)return;p("start-session")}else(ie=e.client)!=null&&ie.session||p("hidden")},je=()=>nn();if(e.on("showMenu",pe),e.on("configUpdated",je),e.client){e.client.session&&(l(e.client.session),On(e.client.session),p(mi(e.client.session))),e.client.on("sessionStarted",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1);const Qe=ve.current;ve.current=!1,Qe?(j.current=!0,p("course-outline")):(j.current=!1,p(mi(Se))),ta().track("session-started",{planId:Se.planId}),K(Se)}),e.client.on("sessionResumed",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1),j.current=!1,p(mi(Se)),K(Se)});const ae=()=>{var Xt;const Se=(Xt=e.client)==null?void 0:Xt.session;Se!=null&&Se.sessionUuid&&O3(Se.sessionUuid);const Qe=Ai.current;z.current&&(z.current(),z.current=null),l(null),Ai.current=null,m(!1),g(!1),x(!1),W(!1),B(!1),ve.current=!1,j.current=!1,q(),le.current={session:null,sessionUuid:null,started:!1},Qe&&Ne.current.delete(Qe),oe.current||p("hidden")};e.client.on("sessionStopped",ae),e.client.on("sessionShutdown",ae),e.client.on("stateChanged",nn)}return()=>{e.off("showMenu",pe),e.off("configUpdated",je),z.current&&z.current(),q()}},[e]),w.useEffect(()=>{const q=s;if(!q||q.clientType!=="meet")return;const K=q.state;if(!K||K==="connecting"||K==="error"||!He)return;const pe=Ne.current.get(q);pe!=null&&pe.has(He)||(vt(q,He),q.sendHumanJoined(fn(q)).catch(je=>console.error("[obi-sdk] failed to send human_joined update",je)))},[Le,He,s,s==null?void 0:s.state]),w.useLayoutEffect(()=>{var q,K;(K=(q=e.client)==null?void 0:q.product)!=null&&K.primary_color&&n.style.setProperty("--obi-color-primary",e.client.product.primary_color)},[(No=(It=e.client)==null?void 0:It.product)==null?void 0:No.primary_color,n]),w.useEffect(()=>{if(i&&!be&&!fe){if(!r){p("hidden");return}p("start-session")}},[fe,i,be,r]),w.useEffect(()=>{var Xt,ie;$(!1);const q=(Xt=e.client)==null?void 0:Xt.api,K=(ie=e.client)==null?void 0:ie.product;if(!q||!K)return;const pe=(K==null?void 0:K.uuid)??(K==null?void 0:K.product_uuid),je=(K==null?void 0:K.slug)??(K==null?void 0:K.product_slug),ae=(K==null?void 0:K.id)??(K==null?void 0:K.product_id),Se={};if(pe?Se.product_uuid=pe:je?Se.product_slug=je:ae!=null&&(Se.product_id=String(ae)),Object.keys(Se).length===0)return;let Qe=!1;return q.getFeatureFlags(Se).then(Ye=>{if(Qe)return;const Dn=((Ye==null?void 0:Ye.data)??[]).find(Xb=>(Xb==null?void 0:Xb.slug)===KG);if(!Dn)return;const{user_enabled:Zn,product_enabled:Pn,global_enabled:_r}=Dn;let Kb=!!_r;Pn!=null&&(Kb=!!Pn),Zn!=null&&(Kb=!!Zn),$(Kb)}).catch(Ye=>{console.error("[obi-sdk] failed to load AMA feature flag",Ye)}),()=>{Qe=!0}},[(Oo=e.client)==null?void 0:Oo.api,(Mo=e.client)==null?void 0:Mo.product]);const ka=(c==null?void 0:c.stepNames.map((q,K)=>({id:`step-${K+1}`,title:q})))??[],$n=(c==null?void 0:c.currentStep)??null,Qn=!0,Qi=(q,K)=>{s==null||s.say(`Can we jump to the section about ${K.title}?`)};if(be||i&&!r&&!fe)return null;if(h==="hidden")return $i?f.jsx(YG,{label:ft,onClick:()=>{e.updateShowMenu(!0)}}):null;if(h==="start-session"){const q=(Do=e.client)==null?void 0:Do.product,K=(Fl=e.client)==null?void 0:Fl.selectedPlan,pe=i&&!!r,je=i&&!!r||!!((_=e.client)!=null&&_.selectedPlanUuid),ae=(q==null?void 0:q.agent_name)||"Obi",Se=(q==null?void 0:q.assistant_subtitle)||"AI Assistant",Qe=pe&&(K==null?void 0:K.description)||(q==null?void 0:q.assistant_description)||"";return f.jsx(GG,{open:!0,onClose:()=>{m(!1),p("hidden")},onStart:()=>{ve.current=je,B(je),m(!0),e.startSession({withMicrophone:!0})},agentName:ae,agentSubtitle:Se,description:Qe,showCloseButton:!1,startLabel:"Start Session",isStarting:b,greetingVideoSrc:Nn})}if(h==="course-selection"){const q=(I=s==null?void 0:s.roomId)==null?void 0:I.startsWith("obs-"),K=((M=e.client)==null?void 0:M.plans)||[],pe=q&&v.length>0,je=pe?v.slice().sort((ie,Ye)=>ie.order!==void 0&&Ye.order!==void 0?ie.order-Ye.order:ie.order!==void 0?-1:Ye.order!==void 0?1:ie.name.localeCompare(Ye.name)).map(ie=>({id:ie.uuid,title:ie.name,description:ie.description||ie.overview||"",status:ie.completed?"completed":"available",duration:typeof ie.duration=="number"?`${ie.duration} min`:ie.duration})):K.map(ie=>{var Ye,bt;return{id:ie.uuid,title:ie.name,description:ie.description,status:(bt=(Ye=e.client)==null?void 0:Ye.planIsCompleted)!=null&&bt[K.indexOf(ie)]?"completed":"available",duration:ie.estimated_duration?`${ie.estimated_duration} min`:void 0}});pe&&ee&&je.push({id:A3,title:"Ask me anything",description:"Ask questions before choosing a course.",status:"available"});const ae=(s==null?void 0:s.languageCodes)||[],Se=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,Qe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:ae,selectedLanguage:Se,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},Xt=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ge=s==null?void 0:s.room)==null?void 0:ge.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0;return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:je,controlBarProps:Qe,coursePanelProps:{selectedCourseIds:T?[T]:void 0,onCourseToggle:async ie=>{var Ye,bt,Dn,Zn;if(pe){if(ie===A3){try{await((Ye=s==null?void 0:s.say)==null?void 0:Ye.call(s,"Please start an AMA session."))}catch(_r){console.error("[obi-sdk] failed to start AMA course",_r)}return}const Pn=v.find(_r=>_r.uuid===ie);if(Pn){C(ie);try{await((bt=s==null?void 0:s.say)==null?void 0:bt.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),C(null)}}}else{const Pn=K.find(_r=>_r.uuid===ie);if(Pn){(Dn=e.client)==null||Dn.selectPlan(Pn),p("pip");try{await((Zn=s==null?void 0:s.say)==null?void 0:Zn.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),p("course-selection")}}}}},rightPanel:Xt,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="course-outline"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},je=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((Ie=s==null?void 0:s.room)==null?void 0:Ie.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0,ae=!!c,Se=!ue,Qe=async()=>{if(!(!(s!=null&&s.endCourse)||U)){W(!0);try{await s.endCourse()}catch(ie){console.error("[obi-sdk] failed to end course",ie),W(!1)}}},Xt=f.jsx(gV,{steps:ka,currentStep:$n,hideTrailingConclusionStep:Qn,onStepClick:Qi,showBackToCourses:Se,...Se?{onBackToCoursesConfirm:Qe,backToCoursesDisabled:U}:{}});return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:[],controlBarProps:pe,middlePanel:Xt,rightPanel:je,isCourseOutlineOpen:ae,onReturnToPiP:ae?()=>p("pip"):void 0,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="pip"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe=280,je=250,ae=16,Se={x:window.innerWidth-pe-ae,y:window.innerHeight-je-ae},Qe={isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isChatOpen:y,isScreenShareActive:ht,onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>x(ie=>!ie),onScreenShareToggle:Jn,onLeave:()=>{s==null||s.stop()},languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0},Xt=y?f.jsx(BV,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ye=s==null?void 0:s.room)==null?void 0:ye.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},testId:"pip-chat-panel"}):void 0;return f.jsx(Zq,{initialPosition:Se,onExit:()=>{j.current=!1,p("course-outline")},controlBarProps:Qe,isCourseOutlineSelected:N&&!!c,onCourseOutlineToggle:c?()=>{O(ie=>!ie)}:void 0,isCaptionsEnabled:Z,onCaptionsToggle:()=>F(ie=>!ie),courseOutline:c?{steps:ka,currentStep:$n,onStepClick:Qi,hideTrailingConclusionStep:Qn}:void 0,messagesPanel:Xt,avatarFallbackProps:{audioPower:qt,imageSrc:tn,status:At,captionsText:Te},screenshotUrl:P,cameraShotTrigger:L})}return null}function JG(t){var l,c;const{sdk:e,session:n,isBlacklisted:i}=t;if(i)return!1;const r=e.client;if(!r||r.state!=="ready"||(n??r.session??null))return!1;let o=e.isActive;return((l=r.product)==null?void 0:l.name)==="Canibuild"&&(o=!0),!(!o||(e.widgetDisplay??((c=r.product)==null?void 0:c.widget_display))==="invisible")}function N3(t,e){if(!t)return;const n=`obi-widget-course-progress-${t}`;if(e===null){localStorage.removeItem(n);return}try{const i={...e,timestamp:Date.now()};localStorage.setItem(n,JSON.stringify(i))}catch(i){console.error("[obi-sdk] failed to save course progress",i)}}function $G(t){if(!t)return null;const e=`obi-widget-course-progress-${t}`;try{const n=localStorage.getItem(e);if(!n)return null;const i=JSON.parse(n);if(typeof i.currentStep!="number"||typeof i.totalSteps!="number"||!Array.isArray(i.stepNames))return console.warn("[obi-sdk] invalid course progress data, clearing",i),localStorage.removeItem(e),null;const r=24*60*60*1e3;return i.timestamp&&Date.now()-i.timestamp>r?(localStorage.removeItem(e),null):{currentStep:i.currentStep,totalSteps:i.totalSteps,stepNames:i.stepNames}}catch(n){return console.error("[obi-sdk] failed to load course progress",n),localStorage.removeItem(e),null}}function O3(t){if(!t)return;const e=`obi-widget-course-progress-${t}`;try{localStorage.removeItem(e)}catch(n){console.error("[obi-sdk] failed to clear course progress",n)}}function QG(t){const[e,n]=w.useState(()=>fs(t));return w.useEffect(()=>{n(fs(t))},[t]),w.useEffect(()=>{const i=()=>{n(fs(t))};return window.addEventListener("popstate",i),window.addEventListener("hashchange",i),()=>{window.removeEventListener("popstate",i),window.removeEventListener("hashchange",i)}},[t]),e}function ZG(t){const[e,n]=w.useState(0),i=w.useRef(null),r=w.useRef(0),a=w.useRef(0);return w.useEffect(()=>{if(!t){n(0),r.current=0,a.current=0;return}const o=()=>{const s=t.audioSpectrum();let l=0;if(s&&s.length>0){let b=0;for(let m=0;m<s.length;m++)b+=s[m];l=Math.min(1,Math.max(0,b/s.length))}const c=r.current,d=l>=c?.7:.15,h=c*d+l*(1-d);r.current=h;const p=h<.05?0:Math.min(1,h);Math.abs(p-a.current)>.01&&(a.current=p,n(p)),i.current=requestAnimationFrame(o)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[t]),e}function eW(){const[t,e]=w.useState({audioDevices:[]});return w.useEffect(()=>{var i;if(typeof navigator>"u"||!((i=navigator.mediaDevices)!=null&&i.enumerateDevices))return;const n=()=>{navigator.mediaDevices.enumerateDevices().then(r=>{e({audioDevices:r.filter(a=>a.kind==="audioinput")})})};return n(),navigator.mediaDevices.addEventListener("devicechange",n),()=>navigator.mediaDevices.removeEventListener("devicechange",n)},[]),t}function M3(){const t=window.location.hostname;return t.endsWith(".getcor.ai")||t.endsWith(".getcor.io")||t.endsWith(".clinic1.com")||t==="app.canibuild.com"||t==="getcor.ai"||t==="getcor.io"||t==="localhost"||t==="127.0.0.1"||t==="::1"}const D3=M3();function tW(t){if(document.querySelector("#obi-host")||document.querySelector("obi-widget"))return;nW();const e=document.createElement("div");e.id="obi-host",e.style.position="fixed",e.style.zIndex="9999",document.body.appendChild(e);const n=e.attachShadow({mode:"open"}),i=document.createElement("div");i.id="obi-container",n.appendChild(i);const r=new CSSStyleSheet;r.replaceSync(TB);const a=[r];if(D3){const s=new CSSStyleSheet;s.replaceSync(xB),a.push(s);const l=new CSSStyleSheet;l.replaceSync(kB),a.push(l)}else{const s=new CSSStyleSheet;s.replaceSync(SB),a.push(s)}n.adoptedStyleSheets=a;const o=_B.createRoot(i);D3?o.render(f.jsx(XG,{sdk:t,shadowHost:e})):o.render(f.jsx(EB,{sdk:t,shadowHost:e})),console.log("[obi-sdk] widget mounted")}function nW(){P3("https://fonts.cdnfonts.com/css/satoshi"),P3("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap")}function P3(t){const e=document.createElement("link");e.href=t,e.rel="stylesheet",document.head.appendChild(e)}const L3="49206C6F7665204F6269_session",I3="obi-url-params",Yb="obi-client-heartbeat",iW=5e3,j3=4e4,B3=15e3;function rW(){return M3()?"meet":"sdk"}class aW extends _p{constructor(e){super(),this.client=null,this.isActive=!1,this.primaryColour="#9500FF",this.passivePlanUuid=null,this.commandLog=[],this.commandQueue=[],this._resumed=!1,this.heartbeatInterval=null,this.dispatchCommand=(n,i)=>{var r,a,o,s,l;switch(this.commandLog.push({commandType:n,args:i}),n){case"update":this.updateConfig(i);break;case"startSession":{if(i!=null&&i.planUuid){const c=(((r=this.client)==null?void 0:r.plans)||[]).find(u=>u.uuid===i.planUuid)||null;if(!c){console.warn("[obi] startSession command requires a valid planUuid",i);return}(o=(a=this.client)==null?void 0:a.selectPlan)==null||o.call(a,c)}this.updateActive(!0);break}case"stopSession":(l=(s=this.client)==null?void 0:s.stopSession)==null||l.call(s);break;case"say":this.say(i);break;default:console.warn("[obi] unknown command",{commandType:n,args:i})}},e&&this.createClient(e),this.parsePassiveParams()}async createClient(e){if(this.client){this.client.appToken!==e&&console.warn("[obi] client already exists with different app token");return}let n=null;const i=rW(),r=this.load();if(r)try{const a=this.parsePersistedSessionMetadata(r),o=a&&this.isPersistedSessionStale(a);o!=null&&o.stale&&a?(this.trackStaleSessionDiscard(a.sessionUuid,o.ageMs,o.reason),this.clearCachedClient()):(n=bh.deserialise(r,e,i,{apiBaseUrl:"https://staging.coragents.ai",captureScreen:this.captureScreen.bind(this)}),n?this._resumed=!0:this.clearCachedClient())}catch(a){console.error("[obi] error loading cached client",a),this.clearCachedClient()}n||(n=new bh(e,i,{apiBaseUrl:"https://staging.coragents.ai",captureScreen:this.captureScreen.bind(this)})),this.client=n,this.client.session&&this.startHeartbeat(this.client.session.sessionUuid),this.client.on("stateChanged",a=>{var o,s,l,c,u,d,h,p,b,m;a==="ready"&&this.updateConfig({isActive:((o=window==null?void 0:window.obiWidgetConfig)==null?void 0:o.isActive)??((s=this.client)==null?void 0:s.showWidget),primaryColour:((c=(l=this.client)==null?void 0:l.product)==null?void 0:c.primary_color)||"#9500FF",widgetDisplay:((u=window==null?void 0:window.obiWidgetConfig)==null?void 0:u.widgetDisplay)||((h=(d=this.client)==null?void 0:d.product)==null?void 0:h.widget_display)||"regular",completedWidgetDisplay:((p=window==null?void 0:window.obiWidgetConfig)==null?void 0:p.completedWidgetDisplay)||((m=(b=this.client)==null?void 0:b.product)==null?void 0:m.completed_widget_display)||"regular"})}),this.client.on("sessionStarted",()=>{var a,o;this.save(),this.startHeartbeat(((o=(a=this.client)==null?void 0:a.session)==null?void 0:o.sessionUuid)||null),this.passivePlanUuid=null}),this.client.on("sessionStopped",()=>{this.clearCachedClient(),this.passivePlanUuid=null}),this.client.on("sessionShutdown",()=>{this.clearCachedClient()}),this.client.on("trackEvent",(a,o)=>{}),this.client.session&&(this.client.session.isPaused,this.client.resumeSession(a=>{a.on("stateChanged",o=>{o!=="disconnecting"&&o!=="disconnected"&&o!=="error"&&o!=="connecting"&&this.save()}),a.on("paused",()=>{this.save()}),a.on("unpaused",()=>{this.save()})}))}_maybeActOnServerEngagement(){var s;const e=this.client;if(!e||e.state!=="ready")return;const n=e.product,i=(s=e.engagement)==null?void 0:s.style;if(!i||n&&fs(n.widget_url_blacklist||[])||!e.showWidget)return;const r=e.plans||[],a=e.planIsCompleted||[],o=r.length>0&&a.filter(Boolean).length===r.length;if(!(r.length===0||o)){if(i==="modal"){const l=a.findIndex(u=>!u),c=l>=0?r[l]:null;c&&e.selectPlan(c)}else i==="popover"&&setTimeout(()=>{this.showMessage("Don't forget to complete your onboarding",{autoCloseMs:1e4})},1e3);try{ta().track("engagement-prompt-shown",{style:i})}catch{}}}async initialise(e={}){var n;this.commandQueue=e.queuedCommands||[],this._resumed?(this._resumed=!1,this.dispatchCommandQueue()):this.client?this.client.initialise({planUuid:this.passivePlanUuid||void 0,identity:((n=window==null?void 0:window.obiWidgetConfig)==null?void 0:n.user)||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}this.dispatchCommandQueue()}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}):this.dispatchCommandQueue()}async updateConfig(e){await this.updateAppToken(e.apiKey),this.updateActive(e.isActive),this.updatePrimaryColour(e.primaryColour),this.updateWidgetDisplay(e.widgetDisplay),this.updateCompletedWidgetDisplay(e.completedWidgetDisplay),this.updateWidgetPosition(e.widgetPosition),await this.updateIdentity(e.user),this.updateShowMenu(e.showMenu),this.emit("configUpdated")}async updateAppToken(e){var n;e===void 0||e==((n=this.client)==null?void 0:n.appToken)||(this.passivePlanUuid,await this.createClient(e),this.client&&await this.client.initialise({planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}))}updateActive(e){e===void 0||e==this.isActive||(this.isActive=e)}updatePrimaryColour(e){e===void 0||e==this.primaryColour||(this.primaryColour=e)}updateWidgetDisplay(e){e===void 0||e==this.widgetDisplay||(this.widgetDisplay=e)}updateCompletedWidgetDisplay(e){e===void 0||e==this.completedWidgetDisplay||(this.completedWidgetDisplay=e)}updateWidgetPosition(e){e===void 0||e==this.widgetPosition||(this.widgetPosition=e)}async updateIdentity(e){var i,r;if(e===void 0||e==((i=this.client)==null?void 0:i.identity))return;(r=this.client)==null||r.identity;let n=e?{...e,extra:{...e,...(e==null?void 0:e.extra)||{}}}:void 0;await this.client.initialise({identity:n,planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(a=>{console.error("[obi] error initialising client",a),this.emit("error",a)}),e!=null&&e.email&&ta().identify((e==null?void 0:e.email)||"",n)}updateShowMenu(e){e!==void 0&&this.emit("showMenu",e)}async say(e){var n,i,r;await((r=(i=(n=this.client)==null?void 0:n.session)==null?void 0:i.say)==null?void 0:r.call(i,e))}async startSession(e){await this.client.startSession(this.client.selectedPlanUuid||null,n=>{n.on("stateChanged",i=>{i!=="disconnecting"&&i!=="disconnected"&&i!=="error"&&i!=="connecting"&&this.save()}),n.on("paused",()=>{this.save()}),n.on("unpaused",()=>{this.save()})},e)}dispatchCommandQueue(){const e=this.commandQueue;this.commandQueue=[],e.forEach(n=>{try{this.dispatchCommand(n[0],n[1]||[])}catch(i){console.error("[obi] error dispatching command",i)}})}parsePassiveParams(){if(this.passivePlanUuid){this.passivePlanUuid;return}let e={};e=JSON.parse(localStorage.getItem(I3)||"{}"),Object.keys(e).length===0&&new URLSearchParams(window.location.search).forEach((a,o)=>{e[o]=a});const n=e[L3];if(!n)return null;const i=new URL(window.location.href);i.searchParams.delete(L3),window.history.replaceState({},"",i.toString()),i.toString(),localStorage.removeItem(I3),this.passivePlanUuid=n}mountWidget(){tW(this)}showMessage(e,n){try{this.emit("showMessage",{text:e,autoCloseMs:n==null?void 0:n.autoCloseMs})}catch{}}async captureScreen(){try{await fO(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.text_segmentation)),await sR(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.css_line_breaks))}catch(e){throw console.error("[obi] error initialising unicode trie",e),e}try{return(await GN(document.documentElement,{useCORS:!0,allowTaint:!0,foreignObjectRendering:!0})).toDataURL("image/png")}catch(e){throw console.error("[obi] error capturing screen",e),e}}save(){var n;const e=((n=this.client)==null?void 0:n.serialise())||"";localStorage.setItem("obi-client",e)}load(){return localStorage.getItem("obi-client")}parsePersistedSessionMetadata(e){const n=JSON.parse(e),i=this.parseTimestampMs(n.serialisedAt);if(!n.session)return null;let r=null;if(typeof n.session=="string")try{r=JSON.parse(n.session)}catch{return null}else typeof n.session=="object"&&(r=n.session);return r?{sessionUuid:typeof r.sessionUuid=="string"?r.sessionUuid:null,startedAtMs:this.parseTimestampMs(r.startedAt),serialisedAtMs:i}:null}isPersistedSessionStale(e){const n=Date.now(),i=this.readHeartbeat();if(i&&i.sessionUuid&&e.sessionUuid&&i.sessionUuid===e.sessionUuid){const s=Math.max(0,n-i.updatedAtMs);return{stale:s>j3,reason:s>j3?"heartbeat-stale":"heartbeat-fresh",ageMs:s}}const r=[e.serialisedAtMs,e.startedAtMs].filter(s=>typeof s=="number"&&Number.isFinite(s));if(r.length===0)return{stale:!0,reason:"fallback-missing-timestamps",ageMs:null};const a=Math.max(...r),o=Math.max(0,n-a);return{stale:o>B3,reason:o>B3?"fallback-too-old":"fallback-recent",ageMs:o}}parseTimestampMs(e){if(typeof e=="number")return e;if(typeof e=="string"){const n=Number(e);if(!Number.isNaN(n))return n;const i=Date.parse(e);return Number.isFinite(i)?i:null}return null}readHeartbeat(){const e=localStorage.getItem(Yb);if(!e)return null;try{return JSON.parse(e)}catch{return null}}trackStaleSessionDiscard(e,n,i){try{ta().track("stale-session-discarded",{sessionUuid:e||void 0,ageMs:n??void 0,reason:i})}catch{}}startHeartbeat(e){if(!e){this.clearHeartbeat();return}this.stopHeartbeat(),this.writeHeartbeat(e),this.heartbeatInterval=setInterval(()=>{this.writeHeartbeat(e)},iW)}stopHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}writeHeartbeat(e){const n={sessionUuid:e,updatedAtMs:Date.now()};localStorage.setItem(Yb,JSON.stringify(n))}clearHeartbeat(){this.stopHeartbeat(),localStorage.removeItem(Yb)}clearCachedClient(){this.clearHeartbeat(),localStorage.removeItem("obi-client")}}async function U3(t,e){let n;try{n=window}catch{console.warn("[obi] no window object found"),n={}}return oW({appToken:t,window:n,init:e})}async function oW({appToken:t,window:e,init:n}){var a,o;if(e.obi){console.warn("[obi] obi object already found on window, skipping");return}n&&n(),t||(t=(a=e==null?void 0:e.obiWidgetConfig)==null?void 0:a.apiKey);let i;try{i=((o=e.ObiSDK)==null?void 0:o.q)||[]}catch{i=[]}const r=new aW(t);return e.ObiSDK=r.dispatchCommand,await r.initialise({queuedCommands:i}),e.obi=r,r.mountWidget(),r}function z3(){}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{U3(void 0,z3)}):U3(void 0,z3)})();
@@ -130,4 +130,4 @@ ${t}</tr>
130
130
  `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
131
131
  `}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${xa(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let i=this.parser.parseInline(n),r=u3(t);if(r===null)return i;t=r;let a='<a href="'+t+'"';return e&&(a+=' title="'+xa(e)+'"'),a+=">"+i+"</a>",a}image({href:t,title:e,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let r=u3(t);if(r===null)return xa(n);t=r;let a=`<img src="${t}" alt="${n}"`;return e&&(a+=` title="${xa(e)}"`),a+=">",a}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:xa(t.text)}},Bb=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},gr=class $b{constructor(e){gt(this,"options"),gt(this,"renderer"),gt(this,"textRenderer"),this.options=e||ms,this.options.renderer=this.options.renderer||new up,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Bb}static parse(e,n){return new $b(n).parse(e)}static parseInline(e,n){return new $b(n).parseInline(e)}parse(e){var i,r;let n="";for(let a=0;a<e.length;a++){let o=e[a];if((r=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&r[o.type]){let l=o,c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=c||"";continue}}let s=o;switch(s.type){case"space":{n+=this.renderer.space(s);break}case"hr":{n+=this.renderer.hr(s);break}case"heading":{n+=this.renderer.heading(s);break}case"code":{n+=this.renderer.code(s);break}case"table":{n+=this.renderer.table(s);break}case"blockquote":{n+=this.renderer.blockquote(s);break}case"list":{n+=this.renderer.list(s);break}case"checkbox":{n+=this.renderer.checkbox(s);break}case"html":{n+=this.renderer.html(s);break}case"def":{n+=this.renderer.def(s);break}case"paragraph":{n+=this.renderer.paragraph(s);break}case"text":{n+=this.renderer.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(e,n=this.renderer){var r,a;let i="";for(let o=0;o<e.length;o++){let s=e[o];if((a=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&a[s.type]){let c=this.options.extensions.renderers[s.type].call({parser:this},s);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){i+=c||"";continue}}let l=s;switch(l.type){case"escape":{i+=n.text(l);break}case"html":{i+=n.html(l);break}case"link":{i+=n.link(l);break}case"image":{i+=n.image(l);break}case"checkbox":{i+=n.checkbox(l);break}case"strong":{i+=n.strong(l);break}case"em":{i+=n.em(l);break}case"codespan":{i+=n.codespan(l);break}case"br":{i+=n.br(l);break}case"del":{i+=n.del(l);break}case"text":{i+=n.text(l);break}default:{let c='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return i}},dp,Du=(dp=class{constructor(t){gt(this,"options"),gt(this,"block"),this.options=t||ms}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?mr.lex:mr.lexInline}provideParser(){return this.block?gr.parse:gr.parseInline}},gt(dp,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),gt(dp,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),dp),Hz=class{constructor(...t){gt(this,"defaults",Ab()),gt(this,"options",this.setOptions),gt(this,"parse",this.parseMarkdown(!0)),gt(this,"parseInline",this.parseMarkdown(!1)),gt(this,"Parser",gr),gt(this,"Renderer",up),gt(this,"TextRenderer",Bb),gt(this,"Lexer",mr),gt(this,"Tokenizer",cp),gt(this,"Hooks",Du),this.use(...t)}walkTokens(t,e){var i,r;let n=[];for(let a of t)switch(n=n.concat(e.call(this,a)),a.type){case"table":{let o=a;for(let s of o.header)n=n.concat(this.walkTokens(s.tokens,e));for(let s of o.rows)for(let l of s)n=n.concat(this.walkTokens(l.tokens,e));break}case"list":{let o=a;n=n.concat(this.walkTokens(o.items,e));break}default:{let o=a;(r=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&r[o.type]?this.defaults.extensions.childTokens[o.type].forEach(s=>{let l=o[s].flat(1/0);n=n.concat(this.walkTokens(l,e))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let a=e.renderers[r.name];a?e.renderers[r.name]=function(...o){let s=r.renderer.apply(this,o);return s===!1&&(s=a.apply(this,o)),s}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=e[r.level];a?a.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),i.extensions=e),n.renderer){let r=this.defaults.renderer||new up(this.defaults);for(let a in n.renderer){if(!(a in r))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let o=a,s=n.renderer[o],l=r[o];r[o]=(...c)=>{let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u||""}}i.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new cp(this.defaults);for(let a in n.tokenizer){if(!(a in r))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let o=a,s=n.tokenizer[o],l=r[o];r[o]=(...c)=>{let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Du;for(let a in n.hooks){if(!(a in r))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let o=a,s=n.hooks[o],l=r[o];Du.passThroughHooks.has(a)?r[o]=c=>{if(this.defaults.async&&Du.passThroughHooksRespectAsync.has(a))return(async()=>{let d=await s.call(r,c);return l.call(r,d)})();let u=s.call(r,c);return l.call(r,u)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await s.apply(r,c);return d===!1&&(d=await l.apply(r,c)),d})();let u=s.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,a=n.walkTokens;i.walkTokens=function(o){let s=[];return s.push(a.call(this,o)),r&&(s=s.concat(r.call(this,o))),s}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return mr.lex(t,e??this.defaults)}parser(t,e){return gr.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let i={...n},r={...this.defaults,...i},a=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=t),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(e):e,s=await(r.hooks?await r.hooks.provideLexer():t?mr.lex:mr.lexInline)(o,r),l=r.hooks?await r.hooks.processAllTokens(s):s;r.walkTokens&&await Promise.all(this.walkTokens(l,r.walkTokens));let c=await(r.hooks?await r.hooks.provideParser():t?gr.parse:gr.parseInline)(l,r);return r.hooks?await r.hooks.postprocess(c):c})().catch(a);try{r.hooks&&(e=r.hooks.preprocess(e));let o=(r.hooks?r.hooks.provideLexer():t?mr.lex:mr.lexInline)(e,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let s=(r.hooks?r.hooks.provideParser():t?gr.parse:gr.parseInline)(o,r);return r.hooks&&(s=r.hooks.postprocess(s)),s}catch(o){return a(o)}}}onError(t,e){return n=>{if(n.message+=`
132
132
  Please report this to https://github.com/markedjs/marked.`,t){let i="<p>An error occurred:</p><pre>"+xa(n.message+"",!0)+"</pre>";return e?Promise.resolve(i):i}if(e)return Promise.reject(n);throw n}}},gs=new Hz;function it(t,e){return gs.parse(t,e)}it.options=it.setOptions=function(t){return gs.setOptions(t),it.defaults=gs.defaults,JE(it.defaults),it},it.getDefaults=Ab,it.defaults=ms,it.use=function(...t){return gs.use(...t),it.defaults=gs.defaults,JE(it.defaults),it},it.walkTokens=function(t,e){return gs.walkTokens(t,e)},it.parseInline=gs.parseInline,it.Parser=gr,it.parser=gr.parse,it.Renderer=up,it.TextRenderer=Bb,it.Lexer=mr,it.lexer=mr.lex,it.Tokenizer=cp,it.Hooks=Du,it.parse=it,it.options,it.setOptions,it.use,it.walkTokens,it.parseInline,gr.parse,mr.lex;const Vz="_base_1ne03_1",Gz={base:Vz},Wz=["p","br","strong","em","u","a","ul","ol","li","h1","h2","h3","h4","h5","h6","code","pre","blockquote","hr"],Yz=["href","title","target","rel"];it.setOptions({breaks:!0,gfm:!0});function Kz(t){const{content:e,className:n,...i}=t,r=w.useMemo(()=>{if(!e)return"";const a=it.parse(e,{async:!1});return oz.sanitize(a,{ALLOWED_TAGS:[...Wz],ALLOWED_ATTR:[...Yz],ALLOW_DATA_ATTR:!1})},[e]);return r?f.jsx("div",{className:he(Gz.base,n),dangerouslySetInnerHTML:{__html:r},...i}):null}const Xz="_controlBar_6shmw_1",Jz="_popoverAnchor_6shmw_11",$z="_confirmationPopover_6shmw_15",Qz="_confirmationPopoverAlignRight_6shmw_30",Zz="_confirmationPopoverAlignCenter_6shmw_33",eF="_confirmationMessage_6shmw_53",tF="_confirmationActions_6shmw_60",nF="_confirmationButton_6shmw_65",iF="_confirmationButtonCancel_6shmw_83",rF="_confirmationButtonNeutral_6shmw_91",aF="_confirmationButtonDanger_6shmw_99",oF="_controlButton_6shmw_108",sF="_controlButtonIconOnly_6shmw_130",lF="_controlButtonDisabled_6shmw_135",cF="_controlButtonDanger_6shmw_162",uF="_controlButtonContent_6shmw_178",dF="_controlButtonIcon_6shmw_130",hF="_controlButtonLabel_6shmw_194",fF="_controlButtonChevron_6shmw_201",pF="_controlButtonNotificationDot_6shmw_210",mF="_deviceSplitButton_6shmw_222",gF="_deviceSplitButtonEnabled_6shmw_226",vF="_dualButtonContent_6shmw_307",bF="_dualButtonIcon_6shmw_317",yF="_dualButtonLabel_6shmw_326",_F="_screenShareButton_6shmw_340",xF="_screenShareButtonCompact_6shmw_351",We={controlBar:Xz,popoverAnchor:Jz,confirmationPopover:$z,confirmationPopoverAlignRight:Qz,confirmationPopoverAlignCenter:Zz,confirmationMessage:eF,confirmationActions:tF,confirmationButton:nF,confirmationButtonCancel:iF,confirmationButtonNeutral:rF,confirmationButtonDanger:aF,controlButton:oF,controlButtonIconOnly:sF,controlButtonDisabled:lF,controlButtonDanger:cF,controlButtonContent:uF,controlButtonIcon:dF,controlButtonLabel:hF,controlButtonChevron:fF,controlButtonNotificationDot:pF,deviceSplitButton:mF,deviceSplitButtonEnabled:gF,dualButtonContent:vF,dualButtonIcon:bF,dualButtonLabel:yF,screenShareButton:_F,screenShareButtonCompact:xF},SF="_inline_1gpyx_1",kF="_vertical_1gpyx_6",TF="_divider_1gpyx_10",wF="_dividerVertical_1gpyx_16",CF="_customDivider_1gpyx_21",Pu={inline:SF,vertical:kF,divider:TF,dividerVertical:wF,customDivider:CF},f3={none:"0px",xxs:"var(--space-xxs)",xs:"var(--space-xs)",sm:"var(--space-sm)",md:"var(--space-md)",lg:"var(--space-lg)",xl:"var(--space-xl)","2xl":"var(--space-2xl)","3xl":"var(--space-3xl)","4xl":"var(--space-4xl)","5xl":"var(--space-5xl)"};function vr(t){if(t!==void 0){if(typeof t=="number")return`${t}px`;if(t in f3)return f3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function EF(t,e){const{as:n,direction:i="horizontal",gap:r,align:a="center",justify:o,wrap:s=!1,divider:l,className:c,style:u,children:d,...h}=t,p=n??"div",b={display:"flex",flexDirection:i==="horizontal"?"row":"column",flexWrap:s?"wrap":"nowrap",alignItems:a,...o?{justifyContent:o}:{},...u};if(r!==void 0){const y=vr(r);y&&(b.gap=y)}const m=ai.Children.toArray(d).filter(y=>y!=null&&typeof y!="boolean"),S=y=>!l||y===0?null:l===!0||l==="line"?f.jsx("span",{"aria-hidden":"true",className:he(Pu.divider,i==="vertical"&&Pu.dividerVertical)},`inline-divider-${y}`):f.jsx("span",{"aria-hidden":"true",className:Pu.customDivider,children:l},`inline-divider-${y}`),g=[];return m.forEach((y,x)=>{if(x>0){const v=S(x);v&&g.push(v)}g.push(y)}),f.jsx(p,{ref:e,className:he(Pu.inline,i==="vertical"&&Pu.vertical,c),style:b,...h,children:g})}const Ub=ai.forwardRef(EF);Ub.displayName="Inline";function RF(){const[t,e]=w.useState(()=>typeof window>"u"?!1:window.innerWidth<768);return w.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const n=window.matchMedia("(max-width: 767px)"),i=()=>{e(n.matches)};return i(),typeof n.addEventListener=="function"?(n.addEventListener("change",i),()=>n.removeEventListener("change",i)):(n.addListener(i),()=>n.removeListener(i))},[]),t}function zb(t){const{icon:e,label:n,showChevron:i=!1,variant:r="default",disabled:a,className:o="",size:s="md",iconOnly:l=!1,showNotificationDot:c=!1,isOn:u,"aria-label":d,...h}=t,p=he(We.controlButton,a&&We.controlButtonDisabled,l&&We.controlButtonIconOnly,r==="danger"&&We.controlButtonDanger,o),b=Number.parseInt(vb[s],10),m=r==="danger"?"outline":"primary",S=r==="danger"?"danger":"default",g=f.jsxs(f.Fragment,{children:[f.jsxs("span",{className:We.controlButtonContent,children:[e?f.jsx("span",{className:We.controlButtonIcon,children:ai.isValidElement(e)&&e.props.size===void 0?ai.cloneElement(e,{size:b}):e}):null,l?null:f.jsx("span",{className:We.controlButtonLabel,children:n}),l||!i?null:f.jsx("span",{className:We.controlButtonChevron,"aria-hidden":"true",children:f.jsx(bb,{size:16})})]}),c?f.jsx("span",{className:We.controlButtonNotificationDot,"aria-hidden":"true"}):null]});return typeof u=="boolean"?f.jsx(ep,{...h,type:"button",disabled:a,variant:m,color:S,isOn:u,"aria-label":d||n,className:p,"data-has-notification":c?"true":void 0,children:g}):f.jsx(ps,{...h,type:"button",disabled:a,variant:m,color:S,"aria-label":d||n,className:p,"data-has-notification":c?"true":void 0,children:g})}function AF(t){const{audioDevices:e,currentMicrophoneId:n,isMicrophoneEnabled:i,isScreenShareActive:r,widgetState:a,canPublishData:o,browserSupportsScreenSharing:s,screenShareButtonVariant:l="default",onMicDeviceSelect:c,onMicToggle:u,onChatToggle:d,onLeave:h,onScreenShareToggle:p,showChatNotification:b=!1,isLanguageSelectorEnabled:m=!0,languages:S=[],selectedLanguage:g=null,defaultLanguageCode:y=null,isMultilingual:x=!1,onLanguageChange:v,isChatOpen:k=a==="chat"}=t,T=S.length,C=!m||T===0,R=RF(),A=R?"xs":"sm",N=R,[O,U]=w.useState(!1),[W,L]=w.useState(!1),X=w.useRef(null),P=w.useRef(null);w.useEffect(()=>{const j=be=>{const qt=be.composedPath();O&&X.current&&!qt.includes(X.current)&&U(!1),W&&P.current&&!qt.includes(P.current)&&L(!1)},me=be=>{be.key==="Escape"&&(O&&U(!1),W&&L(!1))};if(O||W)return document.addEventListener("mousedown",j),document.addEventListener("keydown",me),()=>{document.removeEventListener("mousedown",j),document.removeEventListener("keydown",me)}},[O,W]),w.useEffect(()=>{r||U(!1)},[r]);const G=w.useMemo(()=>e.map(j=>({label:j.label||`Microphone ${j.deviceId.slice(0,8)}`,value:j.deviceId})),[e]),J=w.useMemo(()=>n?G.find(j=>j.value===n)??null:null,[n,G]),te=w.useCallback(j=>{j.value,c(j.value)},[c]),Z={microphone:!0,screenShare:s,chat:o},F=w.useCallback(()=>{if(r){U(!0);return}p()},[r,p]),ee=w.useCallback(()=>{U(!1),p()},[p]),$=w.useCallback(()=>{U(!1)},[]),ue=w.useCallback(()=>{L(!0)},[]),B=w.useCallback(()=>{L(!1),h()},[h]),ve=w.useCallback(()=>{L(!1)},[]);return f.jsx("div",{className:We.controlBar,"data-testid":"control-bar","data-controls":JSON.stringify(Z),"data-language-option-count":T>0?String(T):void 0,"data-default-language-code":y??void 0,children:f.jsxs(Ub,{gap:A,align:"center",justify:"center",wrap:N,children:[f.jsx(mU,{onClick:u,buttonAriaLabel:i?"Mute microphone":"Unmute microphone",options:G,value:J,onChange:te,variant:"primary",menuPlacement:"top",menuDisabled:G.length===0,menuAriaLabel:"Select microphone device",listboxAriaLabel:"Microphone devices",ariaPressed:i,className:he(We.deviceSplitButton,i&&We.deviceSplitButtonEnabled),children:f.jsxs("span",{className:We.dualButtonContent,children:[f.jsx("span",{className:We.dualButtonIcon,children:i?f.jsx(kE,{}):f.jsx(TE,{})}),f.jsx("span",{className:We.dualButtonLabel,children:"Microphone"})]})}),o?f.jsx(zb,{icon:f.jsx(yE,{}),label:"Chat",onClick:d,isOn:k,"aria-label":"Toggle chat",showNotificationDot:b}):null,s?f.jsxs("div",{ref:X,className:We.popoverAnchor,children:[f.jsx(zb,{icon:f.jsx(wE,{}),label:r?"Share screen off":"Share screen",className:l==="compact"?We.screenShareButtonCompact:We.screenShareButton,iconOnly:l==="compact",onClick:F,isOn:r,"aria-label":r?"Stop screen sharing":"Start screen sharing"}),O?f.jsxs("div",{className:he(We.confirmationPopover,We.confirmationPopoverAlignCenter),role:"dialog","aria-label":"Stop screen sharing confirmation","data-testid":"confirm-stop-share",children:[f.jsx("p",{className:We.confirmationMessage,children:"Stop screen sharing?"}),f.jsxs("div",{className:We.confirmationActions,children:[f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonCancel),onClick:$,children:"Cancel"}),f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonNeutral),onClick:ee,children:"Stop"})]})]}):null]}):null,f.jsx(DE,{languages:S,value:g,onChange:v,defaultLanguageCode:y,variant:"control-bar",disabled:C}),f.jsxs("div",{ref:P,className:We.popoverAnchor,children:[f.jsx(zb,{icon:f.jsx(SE,{}),label:"Leave",variant:"danger",onClick:ue,"aria-label":"Leave meeting"}),W?f.jsxs("div",{className:he(We.confirmationPopover,We.confirmationPopoverAlignRight),role:"dialog","aria-label":"Leave meeting confirmation","data-testid":"confirm-leave",children:[f.jsx("p",{className:We.confirmationMessage,children:"Would you like to end the call?"}),f.jsxs("div",{className:We.confirmationActions,children:[f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonCancel),onClick:ve,children:"Cancel"}),f.jsx("button",{type:"button",className:he(We.confirmationButton,We.confirmationButtonDanger),onClick:B,children:"Leave"})]})]}):null]})]})})}function NF(t){return f.jsx(AF,{...t})}const OF="_controlBar_1n8jn_1",MF="_controlButton_1n8jn_12",DF="_controlButtonDisabled_1n8jn_35",PF="_controlButtonDanger_1n8jn_62",LF="_controlButtonIconOnly_1n8jn_78",IF="_screenShareButton_1n8jn_83",jF="_controlButtonContent_1n8jn_88",BF="_controlButtonIcon_1n8jn_78",UF="_controlButtonLabel_1n8jn_103",zF="_controlButtonNotificationDot_1n8jn_108",FF="_popoverAnchor_1n8jn_198",qF="_confirmationPopover_1n8jn_202",HF="_confirmationMessage_1n8jn_216",VF="_confirmationActions_1n8jn_223",GF="_confirmationButton_1n8jn_228",WF="_confirmationButtonCancel_1n8jn_246",YF="_confirmationButtonDanger_1n8jn_254",dn={controlBar:OF,controlButton:MF,controlButtonDisabled:DF,controlButtonDanger:PF,controlButtonIconOnly:LF,screenShareButton:IF,controlButtonContent:jF,controlButtonIcon:BF,controlButtonLabel:UF,controlButtonNotificationDot:zF,popoverAnchor:FF,confirmationPopover:qF,confirmationMessage:HF,confirmationActions:VF,confirmationButton:GF,confirmationButtonCancel:WF,confirmationButtonDanger:YF};function hp(t){const{icon:e,label:n,variant:i="default",disabled:r,className:a="",iconOnly:o=!1,showNotificationDot:s=!1,isOn:l,"aria-label":c,...u}=t,d=he(dn.controlButton,r&&dn.controlButtonDisabled,o&&dn.controlButtonIconOnly,i==="danger"&&dn.controlButtonDanger,a),h=i==="danger"?"outline":"primary",p=i==="danger"?"danger":"default",b=f.jsxs(f.Fragment,{children:[f.jsxs("span",{className:dn.controlButtonContent,children:[e?f.jsx("span",{className:dn.controlButtonIcon,children:ai.isValidElement(e)&&e.props.size===void 0?ai.cloneElement(e,{size:20}):e}):null,o?null:f.jsx("span",{className:dn.controlButtonLabel,children:n})]}),s?f.jsx("span",{className:dn.controlButtonNotificationDot,"aria-hidden":"true"}):null]});return typeof l=="boolean"?f.jsx(ep,{...u,type:"button",disabled:r,variant:h,color:p,size:"xs",isOn:l,"aria-label":c||n,className:d,"data-has-notification":s?"true":void 0,children:b}):f.jsx(ps,{...u,type:"button",disabled:r,variant:h,color:p,size:"xs","aria-label":c||n,className:d,"data-has-notification":s?"true":void 0,children:b})}function KF(t){const{isMicrophoneEnabled:e,isChatOpen:n,isScreenShareActive:i,showChatNotification:r=!1,onMicToggle:a,onChatToggle:o,onScreenShareToggle:s,onLeave:l,languages:c=[],selectedLanguage:u=null,defaultLanguageCode:d=null,isMultilingual:h=!1,onLanguageChange:p,isLanguageSelectorEnabled:b=!0,className:m,testId:S,...g}=t,y=!b||c.length===0,[x,v]=w.useState(!1),k=w.useRef(null);w.useEffect(()=>{const O=W=>{const L=W.composedPath();x&&k.current&&!L.includes(k.current)&&v(!1)},U=W=>{W.key==="Escape"&&x&&v(!1)};if(x)return document.addEventListener("mousedown",O),document.addEventListener("keydown",U),()=>{document.removeEventListener("mousedown",O),document.removeEventListener("keydown",U)}},[x]);const T=w.useCallback(()=>{a()},[a]),C=w.useCallback(()=>{s()},[s]),R=w.useCallback(()=>{v(!0)},[]),A=w.useCallback(()=>{v(!1),l()},[l]),N=w.useCallback(()=>{v(!1)},[]);return f.jsx("div",{...g,className:he(dn.controlBar,m),"data-testid":S,children:f.jsxs(Ub,{gap:"xs",align:"center",justify:"center",wrap:!1,children:[f.jsx(hp,{icon:e?f.jsx(kE,{size:18}):f.jsx(TE,{size:18}),label:"Microphone",iconOnly:!0,isOn:e,onClick:T,"aria-label":e?"Mute microphone":"Unmute microphone"}),f.jsx(hp,{icon:f.jsx(yE,{}),label:"Chat",iconOnly:!0,isOn:n,onClick:o,"aria-label":"Toggle chat",showNotificationDot:r}),f.jsx(hp,{icon:f.jsx(wE,{}),label:"Screen share",iconOnly:!0,className:dn.screenShareButton,isOn:i,onClick:C,"aria-label":i?"Stop screen sharing":"Start screen sharing"}),f.jsx(DE,{languages:c,value:u,onChange:p,defaultLanguageCode:d,variant:"pip",disabled:y}),f.jsxs("div",{ref:k,className:dn.popoverAnchor,children:[f.jsx(hp,{icon:f.jsx(SE,{size:16}),label:"Hang up",iconOnly:!0,variant:"danger",onClick:R,"aria-label":"Hang up"}),x?f.jsxs("div",{className:dn.confirmationPopover,role:"dialog","aria-label":"Hang up confirmation","data-testid":"confirm-leave",children:[f.jsx("p",{className:dn.confirmationMessage,children:"Would you like to end the call?"}),f.jsxs("div",{className:dn.confirmationActions,children:[f.jsx("button",{type:"button",className:he(dn.confirmationButton,dn.confirmationButtonCancel),onClick:N,children:"Cancel"}),f.jsx("button",{type:"button",className:he(dn.confirmationButton,dn.confirmationButtonDanger),onClick:A,children:"Leave"})]})]}):null]})]})})}function XF(t){return f.jsx(KF,{...t})}const JF="_container_zht0b_1",$F="_containerGradient_zht0b_14",QF="_containerFlat_zht0b_24",ZF="_halo_zht0b_28",eq="_outerRing_zht0b_38",tq="_circle_zht0b_42",nq="_image_zht0b_72",iq="_captionContainer_zht0b_88",rq="_captionRegion_zht0b_99",Sa={container:JF,containerGradient:$F,containerFlat:QF,halo:ZF,outerRing:eq,circle:tq,image:nq,captionContainer:iq,captionRegion:rq},aq="_statusText_1dkze_6",oq={statusText:aq},sq={idle:null,thinking:"Thinking...",searching:"Searching..."};function lq(t){const{status:e,size:n="md"}=t,i=e?sq[e]:null,r=i!==null;return f.jsx("div",{className:oq.statusText,"data-visible":r,"data-size":n,"aria-live":"polite",children:i})}const cq="https://obi-static.s3.ap-southeast-2.amazonaws.com/images/obi-avatar.png",uq={sm:{haloSize:"4.5rem",maxBorderWidth:5,outerRingScalePower:.55,glowSize:"20px"},md:{haloSize:"8rem",maxBorderWidth:8,outerRingScalePower:.7,glowSize:"35px"},lg:{haloSize:"10rem",maxBorderWidth:10,outerRingScalePower:.75,glowSize:"42px"}};function p3(t){const{audioPower:e,size:n="md",background:i="gradient",imageSrc:r=cq,accentColor:a,ariaLabel:o="Avatar placeholder",status:s,captionsText:l,className:c,style:u,...d}=t,h=uq[n],p=Math.min(1,Math.max(0,e)),b=p>.01,m=b?Math.min(1,p/.5):0,S=b?Math.max(1,m*h.maxBorderWidth):0,g=1.02,y=b?g+p*h.outerRingScalePower:g,x=b?.2+p*.35:0,v={...u??{},...a?{"--avatar-fallback-accent":a}:{}},k={"--avatar-fallback-halo-size":h.haloSize,"--avatar-fallback-border-width":`${S}px`,"--avatar-fallback-secondary-border-scale":y.toString(),"--avatar-fallback-secondary-border-opacity":x.toString(),"--avatar-fallback-glow-size":h.glowSize},T=l!=null&&l!=="";return f.jsxs("div",{...d,className:he(Sa.container,i==="gradient"?Sa.containerGradient:Sa.containerFlat,c),style:v,"data-testid":"avatar-fallback","aria-label":o,role:"img",children:[f.jsxs("div",{className:Sa.halo,style:k,children:[f.jsx("div",{className:Sa.outerRing,"aria-hidden":"true"}),f.jsx("div",{className:Sa.circle,children:f.jsx("img",{className:Sa.image,src:r,alt:"","aria-hidden":"true"})}),f.jsx(lq,{status:s,size:n})]}),T&&f.jsx("div",{className:Sa.captionContainer,children:f.jsx("div",{className:Sa.captionRegion,"data-size":n,role:"status","aria-live":"polite","aria-atomic":"true",children:l})})]})}const dq="_container_1k3qg_11",hq="_screenshot_1k3qg_20",fq="_flash_1k3qg_30",Fb={container:dq,screenshot:hq,flash:fq};function pq(t){const{isActive:e,imageUrl:n,onComplete:i,duration:r=2e3}=t,[a,o]=w.useState(!1),s=w.useRef(null),l=w.useRef(i);return w.useEffect(()=>{l.current=i},[i]),w.useEffect(()=>{if(!e){o(!1),s.current&&(clearTimeout(s.current),s.current=null);return}if(!s.current)return o(!0),s.current=setTimeout(()=>{var c;o(!1),s.current=null,(c=l.current)==null||c.call(l)},r),()=>{s.current&&(clearTimeout(s.current),s.current=null)}},[e,r]),a?f.jsxs("div",{className:Fb.container,"aria-live":"polite","aria-label":"Screenshot captured",children:[n&&f.jsx("img",{src:n,alt:"Captured screenshot",className:Fb.screenshot}),f.jsx("div",{className:Fb.flash})]}):null}const mq="_container_13ukq_1",gq="_dragging_13ukq_5",vq="_placeholder_13ukq_9",bq="_handleButton_13ukq_15",yq="_customHandle_13ukq_105",Ll={container:mq,dragging:gq,placeholder:vq,handleButton:bq,"handle-top":"_handle-top_13ukq_65","handle-bottom":"_handle-bottom_13ukq_75","handle-left":"_handle-left_13ukq_85","handle-right":"_handle-right_13ukq_95",customHandle:yq};function _q(t){const{disabled:e,lingerMs:n,isDragging:i}=t,[r,a]=w.useState(!1),o=w.useRef(null),s=w.useCallback(()=>{o.current!==null&&(window.clearTimeout(o.current),o.current=null)},[]),l=w.useCallback(()=>{e||(s(),a(!0))},[s,e]),c=w.useCallback(()=>{e||i||(s(),o.current=window.setTimeout(()=>{a(!1),o.current=null},n))},[s,e,i,n]);return w.useEffect(()=>{i&&l()},[i,l]),w.useEffect(()=>s,[s]),{isHandleVisible:r,showHandle:l,scheduleHideHandle:c}}function xq(t){const{initialPosition:e,preserveSpace:n,onPositionChange:i}=t,r=w.useRef(null),[a,o]=w.useState(!!e),[s,l]=w.useState(!1),[c,u]=w.useState(null),[d,h]=w.useState(()=>e??{x:0,y:0}),p=w.useRef(d);s||(p.current=d);const b=w.useRef(null),m=w.useRef(!1),S=w.useRef(!1);w.useEffect(()=>{e&&(S.current||(o(!0),h(e),p.current=e))},[e==null?void 0:e.x,e==null?void 0:e.y]),w.useEffect(()=>{if(e||m.current)return;const v=r.current;if(!v)return;const k=v.getBoundingClientRect(),T={x:k.left,y:k.top};m.current=!0,o(!0),h(T),p.current=T,u(n?{width:k.width,height:k.height}:null)},[e,n]);const g=w.useCallback(v=>{const k=b.current;if(!(!k||v.pointerId!==k.pointerId)){b.current=null,S.current=!0,h(p.current),l(!1);try{v.currentTarget.releasePointerCapture(k.pointerId)}catch{}}},[]),y=w.useCallback(v=>{v.button===0&&(v.preventDefault(),v.currentTarget.setPointerCapture(v.pointerId),b.current={pointerId:v.pointerId,startClientX:v.clientX,startClientY:v.clientY,startX:p.current.x,startY:p.current.y},l(!0))},[]),x=w.useCallback(v=>{const k=b.current;if(!k||v.pointerId!==k.pointerId)return;const T={x:k.startX+(v.clientX-k.startClientX),y:k.startY+(v.clientY-k.startClientY)};p.current=T,r.current&&(r.current.style.transform=`translate3d(${T.x}px, ${T.y}px, 0)`),i==null||i(T)},[i]);return{containerRef:r,isFixed:a,isDragging:s,position:d,placeholderSize:c,onPointerDown:y,onPointerMove:x,endDrag:g}}function Sq(t){const{children:e,className:n,handle:i="top",initialPosition:r,disabled:a=!1,preserveSpace:o=!0,zIndex:s=1e3,onPositionChange:l,handleAriaLabel:c="Drag",handleLingerMs:u=350,style:d,...h}=t,{containerRef:p,isFixed:b,isDragging:m,position:S,placeholderSize:g,onPointerDown:y,onPointerMove:x,endDrag:v}=xq({initialPosition:r,preserveSpace:o,onPositionChange:l}),{isHandleVisible:k,showHandle:T,scheduleHideHandle:C}=_q({disabled:a,lingerMs:u,isDragging:m}),R=typeof e=="function",A=w.useMemo(()=>{const O=U=>f.jsx("div",{className:he(Ll.customHandle,U.className),onPointerDown:y,onPointerMove:x,onPointerUp:v,onPointerCancel:v,children:U.children});return O.displayName="Draggable.Handle",O},[y,x,v]),N={...d,position:b?"fixed":"relative",top:b?0:d==null?void 0:d.top,left:b?0:d==null?void 0:d.left,transform:b?`translate3d(${S.x}px, ${S.y}px, 0)`:d==null?void 0:d.transform,zIndex:b?s:d==null?void 0:d.zIndex};return f.jsxs(f.Fragment,{children:[o&&b&&g?f.jsx("div",{className:Ll.placeholder,style:{width:g.width,height:g.height}}):null,f.jsxs("div",{ref:p,className:he(Ll.container,m?Ll.dragging:null,n),"data-handle-visible":R?void 0:a?"false":k||m?"true":"false",style:N,onMouseEnter:R?void 0:T,onMouseLeave:R?void 0:C,...h,children:[!R&&!a?f.jsx("button",{type:"button",className:he(Ll.handleButton,Ll[`handle-${i}`]),"aria-label":c,onMouseEnter:T,onMouseLeave:C,onPointerDown:O=>{T(),y(O)},onPointerMove:x,onPointerUp:v,onPointerCancel:v}):null,R?e({Handle:A}):e]})]})}const kq="_container_gzwdo_1",Tq="_captionRegion_gzwdo_14",wq="_status_gzwdo_22",Cq="_captionText_gzwdo_29",fp={container:kq,captionRegion:Tq,status:wq,captionText:Cq},Eq={idle:null,thinking:"Thinking...",searching:"Searching..."};function Rq(t){const{text:e,status:n,className:i,...r}=t,a=n?Eq[n]:null;return f.jsx("div",{...r,className:he(fp.container,i),"data-testid":"pip-captions-panel",children:f.jsxs("div",{className:fp.captionRegion,role:"status","aria-live":"polite","aria-atomic":"true",children:[a?f.jsx("div",{className:fp.status,children:a}):null,f.jsx("div",{className:fp.captionText,children:e})]})})}const Aq="_panel_1laxg_1",Nq="_row_1laxg_22",Oq="_stepContent_1laxg_29",Mq="_stepLabel_1laxg_37",Dq="_currentStep_1laxg_44",Pq="_nextStep_1laxg_51",Lq="_skipButtonContainer_1laxg_65",Iq="_circleButton_1laxg_73",jq="_arrowPlaceholder_1laxg_100",Bq="_skipButton_1laxg_65",Xi={panel:Aq,row:Nq,stepContent:Oq,stepLabel:Mq,currentStep:Dq,nextStep:Pq,skipButtonContainer:Lq,circleButton:Iq,arrowPlaceholder:jq,skipButton:Bq},Uq="_truncatedText_1u580_1",zq={truncatedText:Uq};function m3(t){const{children:e,maxLines:n=2,className:i,"data-testid":r}=t;return f.jsx("div",{className:`${zq.truncatedText} ${i||""}`,style:{WebkitLineClamp:n},"data-testid":r,children:e})}function Fq(t,e,n){var c;const i=t.length,r=n&&i>0&&((c=t[i-1])==null?void 0:c.title)==="Conclusion",a=r?t.slice(0,-1):t.slice(),o=a.length;if(o===0)return{visibleSteps:a,currentIndex:null};const s=typeof e=="number"&&Number.isFinite(e)?e:1;if(r&&s===i)return{visibleSteps:a,currentIndex:null};const l=Math.min(Math.max(s,1),o)-1;return{visibleSteps:a,currentIndex:l}}function qb(t,e){return e<=0||typeof t!="number"||!Number.isFinite(t)?0:Math.min(Math.max(Math.trunc(t),1),e)-1}function qq(t){var C;const{steps:e,currentStep:n,onStepClick:i,hideTrailingConclusionStep:r=!0,className:a,testId:o,...s}=t,{visibleSteps:l,currentIndex:c}=w.useMemo(()=>Fq(e,n,r),[n,r,e]),[u,d]=w.useState(()=>qb(n,l.length)),h=w.useRef(!1);w.useEffect(()=>{if(!h.current)d(qb(n,l.length));else{const R=qb(n,l.length);u===R&&(h.current=!1)}},[n,l,u]);const p=l.length,b=l[u],m=u>0,S=u<p-1,g=S?(C=l[u+1])==null?void 0:C.title:void 0,y=p===0?0:u+1,x=c!==null&&b&&u!==c,v=()=>{m&&(h.current=!0,d(R=>Math.max(R-1,0)))},k=()=>{S&&(h.current=!0,d(R=>Math.min(R+1,p-1)))},T=()=>{!x||!b||!i||(h.current=!1,i(u,b))};return f.jsxs("div",{...s,className:he(Xi.panel,a),"data-testid":o,role:"group","aria-label":"Course progress",children:[f.jsxs("div",{className:Xi.row,children:[m?f.jsx("button",{type:"button",className:Xi.circleButton,"aria-label":"Previous step",onClick:v,children:f.jsx(_E,{size:14})}):f.jsx("span",{className:Xi.arrowPlaceholder,"aria-hidden":"true"}),f.jsxs("div",{className:Xi.stepContent,children:[f.jsxs(pi,{className:Xi.stepLabel,"aria-live":"polite",children:["Step ",y,"/",p]}),f.jsx(m3,{maxLines:2,children:f.jsx(pi,{className:Xi.currentStep,"data-testid":"pip-outline-current-step",children:(b==null?void 0:b.title)??"No steps available"})}),g?f.jsx(m3,{maxLines:2,children:f.jsxs(pi,{variant:"muted",className:Xi.nextStep,children:["Next: ",g]})}):null]}),S?f.jsx("button",{type:"button",className:Xi.circleButton,"aria-label":"Next step",onClick:k,children:f.jsx(IB,{size:14})}):f.jsx("span",{className:Xi.arrowPlaceholder,"aria-hidden":"true"})]}),x?f.jsx("div",{className:Xi.skipButtonContainer,children:f.jsx("button",{type:"button",className:Xi.skipButton,"aria-label":"Skip to this step",onClick:T,children:f.jsx(FB,{size:14})})}):null]})}const Hq="_window_zm5au_1",Vq="_exitButton_zm5au_14",Gq="_content_zm5au_47",Wq="_contentTopOverlay_zm5au_58",Yq="_dragHandle_zm5au_68",Kq="_contentBottomOverlay_zm5au_78",Xq="_controls_zm5au_87",Jq="_messagesPanelWrapper_zm5au_95",So={window:Hq,exitButton:Vq,content:Gq,contentTopOverlay:Wq,dragHandle:Yq,contentBottomOverlay:Kq,controls:Xq,messagesPanelWrapper:Jq};function $q(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}function Qq(t){const{onExit:e,controlBarProps:n,isCourseOutlineSelected:i,onCourseOutlineToggle:r,isCaptionsEnabled:a=!1,onCaptionsToggle:o,courseOutline:s,messagesPanel:l,avatarFallbackProps:c,contentTopOverlaySlot:u,screenshotUrl:d,cameraShotTrigger:h,className:p,testId:b,...m}=t,S=i,g=n.isChatOpen&&!S&&l,y=c==null?void 0:c.captionsText,x=a&&$q(y),[v,k]=w.useState(!1),T=w.useRef(h),C=w.useCallback(()=>{k(!1)},[]);w.useEffect(()=>{h&&h>0&&h!==T.current&&k(!0),T.current=h},[h]);const R=w.useCallback(()=>f.jsx(p3,{audioPower:(c==null?void 0:c.audioPower)??0,size:"sm",background:"flat",imageSrc:c==null?void 0:c.imageSrc,ariaLabel:c==null?void 0:c.ariaLabel,status:c==null?void 0:c.status}),[c]),A=S?s?f.jsx(qq,{steps:s.steps,currentStep:s.currentStep,onStepClick:s.onStepClick,hideTrailingConclusionStep:s.hideTrailingConclusionStep}):R():g?f.jsx("div",{className:So.messagesPanelWrapper,children:l}):x?f.jsx(Rq,{text:y}):R();return f.jsxs("div",{...m,className:he(So.window,p),"data-testid":b,role:"group","aria-label":"Picture-in-Picture",children:[f.jsxs("div",{className:So.content,children:[f.jsx("div",{className:So.contentTopOverlay,children:u}),f.jsx("button",{type:"button",className:So.exitButton,onClick:e,"aria-label":"Exit PiP",children:f.jsx(BB,{size:14})}),A,!g&&f.jsxs("div",{className:So.contentBottomOverlay,children:[f.jsx(ep,{isOn:i,onClick:r,variant:"primary",size:"xs","aria-label":"Toggle course outline",children:f.jsx(qB,{size:18})}),f.jsx(ep,{isOn:a,onClick:o,variant:"primary",size:"xs","aria-label":"Toggle captions",children:f.jsx(LB,{size:18})})]}),f.jsx(pq,{isActive:v,imageUrl:d??null,onComplete:C})]}),f.jsx("div",{className:So.controls,children:f.jsx(XF,{...n})})]})}function Zq(t){const{initialPosition:e,onPositionChange:n,zIndex:i=1e3,...r}=t;return f.jsx(Sq,{initialPosition:e,onPositionChange:n,zIndex:i,preserveSpace:!1,children:({Handle:a})=>f.jsx(Qq,{...r,contentTopOverlaySlot:f.jsx(a,{className:So.dragHandle})})})}const eH="_root_ygi3o_1",tH="_overlay_ygi3o_7",nH="_caption_ygi3o_17",Hb={root:eH,overlay:tH,caption:nH};function iH(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}function rH(t){const{children:e,className:n,text:i}=t,r=iH(i);return f.jsxs("div",{className:he(Hb.root,n),children:[e,r?f.jsx("div",{className:Hb.overlay,role:"status","aria-live":"polite","aria-atomic":"true",children:f.jsx("div",{className:Hb.caption,children:i})}):null]})}const aH="_box_dc9yv_1",oH={box:aH},g3={none:"0px",panel:"var(--radius-panel)",card:"var(--radius-card)"},v3={surface:"var(--color-surface)",surfaceMuted:"var(--color-surface-muted)",surfaceAlt:"var(--color-surface-alt)",primarySoft:"var(--color-primary-soft)",primarySofter:"var(--color-primary-softer)",dangerSurface:"var(--color-danger-surface)"};function sH(t){if(t!==void 0){if(typeof t=="number")return`${t}px`;if(t in g3)return g3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function lH(t){if(t!==void 0){if(t in v3)return v3[t];if(typeof t=="string"&&t.trim().length>0)return t}}function cH(t,e){const{as:n,className:i,padding:r,paddingX:a,paddingY:o,paddingTop:s,paddingBottom:l,paddingLeft:c,paddingRight:u,paddingSm:d,paddingMd:h,paddingLg:p,paddingXl:b,margin:m,marginX:S,marginY:g,marginTop:y,marginBottom:x,marginLeft:v,marginRight:k,radius:T,radiusTop:C,radiusBottom:R,radiusLeft:A,radiusRight:N,radiusTopLeft:O,radiusTopRight:U,radiusBottomLeft:W,radiusBottomRight:L,background:X,gap:P,style:G,...J}=t,te=n??"div",Z={...G},F=Z,ee={},$=(j,me)=>{if(me===void 0)return;const be=vr(me);be&&(Z[j]=be)},ue=(j,me)=>{if(me===void 0)return;const be=vr(me);be&&(Z[j]=be)},B=(j,me)=>{if(me===void 0)return;const be=sH(me);be&&(Z[j]=be)},ve={sm:d,md:h,lg:p,xl:b};if(r!==void 0){const j=vr(r);j&&(F["--box-padding"]=j)}for(const[j,me]of Object.entries(ve)){if(me===void 0)continue;const be=vr(me);be&&(F[`--box-padding-${j}`]=be,ee[`data-padding-${j}`]="")}if(a!==void 0){const j=vr(a);j&&(Z.paddingLeft=j,Z.paddingRight=j)}if(o!==void 0){const j=vr(o);j&&(Z.paddingTop=j,Z.paddingBottom=j)}if($("paddingTop",s),$("paddingBottom",l),$("paddingLeft",c),$("paddingRight",u),m!==void 0){const j=vr(m);j&&(Z.margin=j)}if(S!==void 0){const j=vr(S);j&&(Z.marginLeft=j,Z.marginRight=j)}if(g!==void 0){const j=vr(g);j&&(Z.marginTop=j,Z.marginBottom=j)}if(ue("marginTop",y),ue("marginBottom",x),ue("marginLeft",v),ue("marginRight",k),P!==void 0){const j=vr(P);j&&(Z.gap=j)}if(B("borderRadius",T),C!==void 0&&(B("borderTopLeftRadius",C),B("borderTopRightRadius",C)),R!==void 0&&(B("borderBottomLeftRadius",R),B("borderBottomRightRadius",R)),A!==void 0&&(B("borderTopLeftRadius",A),B("borderBottomLeftRadius",A)),N!==void 0&&(B("borderTopRightRadius",N),B("borderBottomRightRadius",N)),B("borderTopLeftRadius",O),B("borderTopRightRadius",U),B("borderBottomLeftRadius",W),B("borderBottomRightRadius",L),X!==void 0){const j=lH(X);j&&(Z.background=j)}return f.jsx(te,{ref:e,className:he(oH.box,i),style:Z,...ee,...J})}const pp=ai.forwardRef(cH);pp.displayName="Box";const uH="_panel_eawk4_1",dH="_selected_eawk4_10",b3={panel:uH,selected:dH};function Lu(t){const{children:e,className:n,selected:i,...r}=t;return f.jsx("div",{className:he(b3.panel,i?b3.selected:null,n),...r,children:e})}const hH="_root_yccm8_1",fH="_header_yccm8_8",pH="_icon_yccm8_15",mH="_text_yccm8_26",gH="_heading_yccm8_33",vH="_description_yccm8_41",bH="_body_yccm8_47",yH="_footer_yccm8_54",ko={root:hH,header:fH,icon:pH,text:mH,heading:gH,description:vH,body:bH,footer:yH};function y3(t){const{className:e,...n}=t;return f.jsx("div",{className:he(ko.icon,e),...n})}function _3(t){const{className:e,...n}=t;return f.jsx("h3",{className:he(ko.heading,e),...n})}function x3(t){const{className:e,...n}=t;return f.jsx("p",{className:he(ko.description,e),...n})}function S3(t){const{className:e,...n}=t;return f.jsx("div",{className:he(ko.footer,e),...n})}function _H(t){const e=w.Children.toArray(t),n=[];let i,r,a,o;for(const s of e){if(w.isValidElement(s)&&s.type===y3&&i===void 0){i=s;continue}if(w.isValidElement(s)&&s.type===_3&&r===void 0){r=s;continue}if(w.isValidElement(s)&&s.type===x3&&a===void 0){a=s;continue}if(w.isValidElement(s)&&s.type===S3&&o===void 0){o=s;continue}n.push(s)}return{icon:i,heading:r,description:a,footer:o,body:n}}function xH(t){const{children:e,className:n,...i}=t,r=_H(e),a=r.icon||r.heading||r.description;return f.jsxs(Lu,{className:he(ko.root,n),...i,children:[a?f.jsxs("div",{className:ko.header,children:[r.icon,r.heading||r.description?f.jsxs("div",{className:ko.text,children:[r.heading,r.description]}):null]}):null,r.body.length?f.jsx("div",{className:ko.body,children:r.body}):null,r.footer]})}const Vb=Object.assign(xH,{Icon:y3,Heading:_3,Description:x3,Footer:S3}),SH="_panel_1ts1h_1",kH="_header_1ts1h_10",TH="_title_1ts1h_19",wH="_scrollArea_1ts1h_29",CH="_scrollable_1ts1h_34",EH="_list_1ts1h_39",RH="_courseButton_1ts1h_45",AH="_courseCard_1ts1h_56",NH="_courseHeading_1ts1h_65",OH="_courseDescription_1ts1h_71",MH="_empty_1ts1h_80",br={panel:SH,header:kH,title:TH,scrollArea:wH,scrollable:CH,list:EH,courseButton:RH,courseCard:AH,courseHeading:NH,courseDescription:OH,empty:MH};function DH(t){const{selectionMode:e,selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r}=t,a=n!==void 0,[o,s]=w.useState(()=>i??[]),l=a?n:o,c=w.useCallback(d=>{a||s(d),r==null||r(d)},[a,r]),u=w.useCallback(d=>{const h=l.includes(d);if(e==="single"){c(h?[]:[d]);return}if(h){c(l.filter(p=>p!==d));return}c([...l,d])},[l,e,c]);return{selectedCourseIds:l,toggleCourseId:u}}function PH(t){const{title:e="Courses",ariaLabel:n,className:i,courses:r,selectionMode:a="multiple",selectedCourseIds:o,onCourseToggle:s,emptyMessage:l="No courses available",testId:c,...u}=t;return f.jsxs(Lu,{...u,className:he(br.panel,i),role:"region","aria-label":n??e,"data-testid":c,children:[f.jsx("div",{className:br.header,children:f.jsx(pi,{as:"h2",className:br.title,children:e})}),f.jsx("div",{className:br.scrollArea,children:f.jsx(Dl,{className:br.scrollable,children:r.length===0?f.jsx(pi,{variant:"muted",className:br.empty,"data-testid":"course-panel-empty",children:l}):f.jsx("div",{className:br.list,"data-testid":"course-panel-list",children:r.map(d=>{const h=o.includes(d.id),p=d.disabled===!0;return f.jsx("button",{type:"button",className:br.courseButton,"aria-pressed":h,"aria-disabled":p,disabled:p,onClick:()=>s==null?void 0:s(d.id,d),"data-testid":`course-panel-item-${d.id}`,children:f.jsxs(Vb,{selected:h,className:br.courseCard,children:[f.jsx(Vb.Heading,{className:br.courseHeading,children:d.title}),d.description?f.jsx(Vb.Description,{className:br.courseDescription,children:d.description}):null]})},d.id)})})})})]})}function LH(t){const{selectionMode:e="multiple",selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r,onCourseToggle:a,...o}=t,{selectedCourseIds:s,toggleCourseId:l}=DH({selectionMode:e,selectedCourseIds:n,defaultSelectedCourseIds:i,onSelectedCourseIdsChange:r}),c=w.useCallback((u,d)=>{l(u),a==null||a(u,d)},[a,l]);return f.jsx(PH,{...o,selectionMode:e,selectedCourseIds:s,onCourseToggle:c})}const IH="_panel_1je0q_1",jH="_header_1je0q_10",BH="_headerActions_1je0q_19",UH="_popoverAnchor_1je0q_27",zH="_backButton_1je0q_31",FH="_divider_1je0q_38",qH="_title_1je0q_44",HH="_scrollArea_1je0q_54",VH="_scrollable_1je0q_59",GH="_list_1je0q_64",WH="_section_1je0q_70",YH="_sectionHeader_1je0q_76",KH="_sectionTitle_1je0q_80",XH="_sectionTitleCompact_1je0q_88",JH="_item_1je0q_92",$H="_itemClickable_1je0q_106",QH="_itemCompleted_1je0q_110",ZH="_itemCurrent_1je0q_114",eV="_itemFuture_1je0q_118",tV="_itemDisabled_1je0q_123",nV="_row_1je0q_137",iV="_stepHeader_1je0q_144",rV="_stepNumber_1je0q_153",aV="_stepTitle_1je0q_159",oV="_checkIcon_1je0q_171",sV="_empty_1je0q_175",lV="_confirmationPopover_1je0q_180",cV="_confirmationMessage_1je0q_204",uV="_confirmationActions_1je0q_211",dV="_confirmationButton_1je0q_216",hV="_confirmationButtonCancel_1je0q_234",fV="_confirmationButtonNeutral_1je0q_242",Ae={panel:IH,header:jH,headerActions:BH,popoverAnchor:UH,backButton:zH,divider:FH,title:qH,scrollArea:HH,scrollable:VH,list:GH,section:WH,sectionHeader:YH,sectionTitle:KH,sectionTitleCompact:XH,item:JH,itemClickable:$H,itemCompleted:QH,itemCurrent:ZH,itemFuture:eV,itemDisabled:tV,row:nV,stepHeader:iV,stepNumber:rV,stepTitle:aV,checkIcon:oV,empty:sV,confirmationPopover:lV,confirmationMessage:cV,confirmationActions:uV,confirmationButton:dV,confirmationButtonCancel:hV,confirmationButtonNeutral:fV};function pV(t){var p;const{steps:e,currentStep:n,hideTrailingConclusionStep:i}=t,r=e.length,a=i&&r>0&&((p=e[r-1])==null?void 0:p.title)==="Conclusion",o=a?e.slice(0,-1):e.slice(),s=o.length,l=typeof n=="number"&&isFinite(n)?n:1;if(s===0)return{visibleSteps:o,completedIndices:[],currentIndex:null,futureIndices:[]};if(a&&l===r)return{visibleSteps:o,completedIndices:Array.from({length:s},(b,m)=>m),currentIndex:null,futureIndices:[]};const c=Math.min(Math.max(l,1),s)-1,u=Array.from({length:Math.max(0,c)},(b,m)=>m),d=Math.min(c,s-1),h=Array.from({length:Math.max(0,s-(d+1))},(b,m)=>d+1+m);return{visibleSteps:o,completedIndices:u,currentIndex:d,futureIndices:h}}function mV(t){const{title:e="Course Outline",ariaLabel:n,className:i,steps:r,currentStep:a,onStepClick:o,hideTrailingConclusionStep:s=!0,emptyMessage:l="No steps available",density:c="default",testId:u,onBackToCoursesConfirm:d,backToCoursesDisabled:h=!1,backToCoursesLabel:p="Back to courses",backToCoursesConfirmMessage:b="Going back will end this course. You can start another course from the list.",backToCoursesConfirmLabel:m="Back",backToCoursesCancelLabel:S="Cancel",showBackToCourses:g=!0,...y}=t,[x,v]=w.useState(!1),k=w.useRef(null),T=h||!d,C=w.useCallback(G=>(G+1).toString().padStart(2,"0"),[]),{visibleSteps:R,completedIndices:A,currentIndex:N,futureIndices:O}=w.useMemo(()=>pV({steps:r,currentStep:a,hideTrailingConclusionStep:s}),[a,s,r]),U=c==="compact"?"md":"lg",W=w.useCallback(()=>{T||v(G=>!G)},[T]),L=w.useCallback(()=>{v(!1)},[]),X=w.useCallback(()=>{v(!1),d&&d()},[d]);w.useEffect(()=>{if(!x)return;const G=te=>{const Z=te.composedPath();k.current&&!Z.includes(k.current)&&v(!1)},J=te=>{te.key==="Escape"&&v(!1)};return document.addEventListener("mousedown",G),document.addEventListener("keydown",J),()=>{document.removeEventListener("mousedown",G),document.removeEventListener("keydown",J)}},[x]),w.useEffect(()=>{T&&x&&v(!1)},[T,x]);const P=w.useCallback((G,J)=>{const te=R[G];if(!te)return null;const Z=typeof o=="function",F=Z&&te.disabled===!0,ee=Z&&!F,$=he(Ae.item,{[Ae.itemClickable]:ee,[Ae.itemCompleted]:J==="completed",[Ae.itemCurrent]:J==="current",[Ae.itemFuture]:J==="future",[Ae.itemDisabled]:F}),ue=f.jsxs("div",{className:Ae.row,children:[f.jsxs("div",{className:Ae.stepHeader,children:[f.jsx("span",{className:Ae.stepNumber,children:C(G)}),f.jsx("span",{className:Ae.stepTitle,children:te.title})]}),J==="completed"?f.jsx(Qf,{size:20,className:Ae.checkIcon}):null]});return Z?f.jsx(pp,{as:"button",type:"button",className:$,onClick:()=>{ee&&o(G,te)},disabled:F,"aria-current":J==="current"?"step":void 0,"aria-label":`Step ${C(G)}: ${te.title}`,"data-testid":`course-outline-item-${te.id}`,padding:U,radius:"panel",gap:"sm",children:ue},te.id):f.jsx(pp,{className:$,"aria-current":J==="current"?"step":void 0,"aria-label":`Step ${C(G)}: ${te.title}`,"data-testid":`course-outline-item-${te.id}`,padding:U,radius:"panel",gap:"sm",children:ue},te.id)},[C,U,o,R]);return f.jsxs(Lu,{...y,className:he(Ae.panel,i),role:"region","aria-label":n??e,"data-testid":u,children:[f.jsxs("div",{className:Ae.header,children:[f.jsx(pi,{as:"h2",className:Ae.title,children:e}),g?f.jsx("div",{className:Ae.headerActions,children:f.jsxs("div",{ref:k,className:Ae.popoverAnchor,children:[f.jsxs(ps,{type:"button",variant:"secondary",color:"default",size:"sm",className:Ae.backButton,onClick:W,disabled:T,"aria-label":p,"data-testid":"course-outline-back-button",children:[f.jsx(_E,{size:16,"aria-hidden":"true"}),f.jsx("span",{children:p})]}),x?f.jsxs("div",{className:Ae.confirmationPopover,role:"dialog","aria-label":"Back to courses confirmation","data-testid":"course-outline-back-confirm",children:[f.jsx("p",{className:Ae.confirmationMessage,children:b}),f.jsxs("div",{className:Ae.confirmationActions,children:[f.jsx("button",{type:"button",className:he(Ae.confirmationButton,Ae.confirmationButtonCancel),onClick:L,"data-testid":"course-outline-back-cancel",children:S}),f.jsx("button",{type:"button",className:he(Ae.confirmationButton,Ae.confirmationButtonNeutral),onClick:X,"data-testid":"course-outline-back-confirm-action",children:m})]})]}):null]})}):null]}),f.jsx("div",{className:Ae.divider,"aria-hidden":"true"}),f.jsx("div",{className:Ae.scrollArea,children:f.jsx(Dl,{className:Ae.scrollable,children:R.length===0?f.jsx(pi,{variant:"muted",className:Ae.empty,"data-testid":"course-outline-empty",children:l}):f.jsxs("div",{className:Ae.list,"data-testid":"course-outline-list",children:[A.length>0?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-completed",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Completed"})}),A.map(G=>P(G,"completed"))]}):null,N!==null?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-current",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Current"})}),P(N,"current")]}):null,O.length>0?f.jsxs("div",{className:Ae.section,"data-testid":"course-outline-section-upcoming",children:[f.jsx("div",{className:Ae.sectionHeader,children:f.jsx("span",{className:he(Ae.sectionTitle,c==="compact"?Ae.sectionTitleCompact:null),children:"Upcoming"})}),O.map(G=>P(G,"future"))]}):null]})})})]})}function gV(t){return f.jsx(mV,{...t})}const vV="_panel_h7cuf_1",bV="_messagesArea_h7cuf_20",yV="_messagesList_h7cuf_46",_V="_messageItem_h7cuf_53",xV="_messageMetadata_h7cuf_59",SV="_senderName_h7cuf_67",kV="_timestamp_h7cuf_71",TV="_messageBubble_h7cuf_75",wV="_agentMessage_h7cuf_85",CV="_agentActions_h7cuf_89",EV="_copyButton_h7cuf_95",RV="_copyButtonCopied_h7cuf_129",AV="_empty_h7cuf_133",NV="_composer_h7cuf_140",OV="_composerDisabled_h7cuf_160",MV="_composerInput_h7cuf_165",DV="_sendButton_h7cuf_180",Cn={panel:vV,messagesArea:bV,messagesList:yV,messageItem:_V,messageMetadata:xV,senderName:SV,timestamp:kV,messageBubble:TV,agentMessage:wV,agentActions:CV,copyButton:EV,copyButtonCopied:RV,empty:AV,composer:NV,composerDisabled:OV,composerInput:MV,sendButton:DV};function PV(t){const e=new Date(t),n=e.getHours(),i=e.getMinutes(),r=n>=12?"PM":"AM",a=n%12||12,o=i.toString().padStart(2,"0");return`${a}:${o}${r}`}function LV(t,e){var i,r;if(typeof t.isAgent=="boolean")return t.isAgent;const n=((i=t.from)==null?void 0:i.identity)??void 0;return n&&e&&n===e?!1:((r=t.attributes)==null?void 0:r.source)==="agent-rpc"?!0:n?n==="agent-avatar"||n.startsWith("agent-"):!1}function IV(t,e){var i,r,a;const n=(i=t.from)==null?void 0:i.identity;return n&&e&&n===e?"You":((r=t.from)==null?void 0:r.name)??((a=t.attributes)==null?void 0:a.senderName)??n??"Unknown"}async function jV(t){var n;if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText)){await navigator.clipboard.writeText(t);return}if(typeof document>"u")throw new Error("Clipboard unavailable");const e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",e.style.top="0",e.setAttribute("readonly","true"),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}function BV(t){const{messages:e,localIdentity:n,onSend:i,isSending:r=!1,inputPlaceholder:a="Type a message...",className:o,testId:s,...l}=t,[c,u]=w.useState(""),[d,h]=w.useState(null),p=w.useRef(null),b=w.useRef(null),m=w.useMemo(()=>{const v=e[e.length-1];return v?v.id??`${v.timestamp}-${e.length-1}`:null},[e]);w.useEffect(()=>{var v,k;(k=(v=p.current)==null?void 0:v.scrollIntoView)==null||k.call(v,{behavior:"smooth"})},[m]),w.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=null)},[]);const S=w.useCallback(async()=>{const v=c.trim();v.length!==0&&(await i(v),u(""))},[c,i]),g=w.useCallback(v=>{v.key==="Enter"&&(v.preventDefault(),S())},[S]),y=w.useCallback(async(v,k)=>{try{await jV(v.message??""),h(k),b.current&&window.clearTimeout(b.current),b.current=window.setTimeout(()=>{h(null),b.current=null},2e3)}catch(T){console.warn("[PiPChatPanel] Failed to copy message",T)}},[]),x=c.trim().length>0&&!r;return f.jsxs("div",{...l,className:he(Cn.panel,o),"data-testid":s,role:"region","aria-label":"Chat",children:[f.jsx("div",{className:Cn.messagesArea,children:e.length===0?f.jsx("div",{className:Cn.empty,"data-testid":"pip-chat-panel-empty",children:"No messages yet"}):f.jsxs("div",{className:Cn.messagesList,"data-testid":"pip-chat-panel-list",children:[e.map((v,k)=>{const T=v.id??`${v.timestamp}-${k}`,C=LV(v,n),R=d===T;return f.jsxs("div",{className:he(Cn.messageItem,C&&Cn.agentMessage),"data-testid":`pip-chat-panel-message-${T}`,children:[f.jsxs("div",{className:Cn.messageMetadata,children:[f.jsx("span",{className:Cn.senderName,children:IV(v,n)}),f.jsx("span",{className:Cn.timestamp,children:PV(v.timestamp)})]}),f.jsx("div",{className:Cn.messageBubble,children:v.message}),C?f.jsx("div",{className:Cn.agentActions,children:f.jsx("button",{type:"button",className:he(Cn.copyButton,R&&Cn.copyButtonCopied),onClick:()=>void y(v,T),"aria-label":R?"Copied":"Copy message",title:R?"Copied":"Copy message","data-testid":"pip-copy-agent-message","data-copied":R?"true":"false",children:f.jsx(xE,{size:14})})}):null]},T)}),f.jsx("div",{ref:p})]})}),f.jsxs("div",{className:he(Cn.composer,r&&Cn.composerDisabled),children:[f.jsx("input",{type:"text",className:Cn.composerInput,value:c,onChange:v=>u(v.target.value),onKeyDown:g,placeholder:a,disabled:r,"aria-label":"Message"}),f.jsx("button",{type:"button",className:Cn.sendButton,onClick:()=>void S(),disabled:!x,"aria-label":"Send message",children:f.jsx(CE,{size:16})})]})]})}const UV="_panel_k5ick_1",zV="_header_k5ick_11",FV="_title_k5ick_19",qV="_titleCompact_k5ick_29",HV="_headerActions_k5ick_33",VV="_closeButton_k5ick_39",GV="_divider_k5ick_67",WV="_body_k5ick_73",YV="_messagesArea_k5ick_81",KV="_scrollable_k5ick_86",XV="_messagesList_k5ick_90",JV="_messageItem_k5ick_98",$V="_messageMetadata_k5ick_104",QV="_senderName_k5ick_112",ZV="_timestamp_k5ick_116",eG="_messageBubble_k5ick_120",tG="_messageText_k5ick_124",nG="_agentMessage_k5ick_130",iG="_agentActions_k5ick_134",rG="_copyButton_k5ick_140",aG="_copyButtonCopied_k5ick_174",oG="_inputRow_k5ick_178",sG="_empty_k5ick_182",lG="_composer_k5ick_188",cG="_composerDefault_k5ick_203",uG="_composerCompact_k5ick_208",dG="_composerDisabled_k5ick_218",hG="_composerInputWrapper_k5ick_223",fG="_composerInput_k5ick_223",pG="_sendButton_k5ick_240",mG="_sendButtonCompact_k5ick_257",tt={panel:UV,header:zV,title:FV,titleCompact:qV,headerActions:HV,closeButton:VV,divider:GV,body:WV,messagesArea:YV,scrollable:KV,messagesList:XV,messageItem:JV,messageMetadata:$V,senderName:QV,timestamp:ZV,messageBubble:eG,messageText:tG,agentMessage:nG,agentActions:iG,copyButton:rG,copyButtonCopied:aG,inputRow:oG,empty:sG,composer:lG,composerDefault:cG,composerCompact:uG,composerDisabled:dG,composerInputWrapper:hG,composerInput:fG,sendButton:pG,sendButtonCompact:mG};function gG(t){const e=new Date(t),n=e.getHours(),i=e.getMinutes(),r=n>=12?"PM":"AM",a=n%12||12,o=i.toString().padStart(2,"0");return`${a}:${o}${r}`}function vG(t,e){var i,r;if(typeof t.isAgent=="boolean")return t.isAgent;const n=((i=t.from)==null?void 0:i.identity)??void 0;return n&&e&&n===e?!1:((r=t.attributes)==null?void 0:r.source)==="agent-rpc"?!0:n?n==="agent-avatar"||n.startsWith("agent-"):!1}function bG(t,e){var i,r,a;const n=(i=t.from)==null?void 0:i.identity;return n&&e&&n===e?"You":((r=t.from)==null?void 0:r.name)??((a=t.attributes)==null?void 0:a.senderName)??n??"Unknown"}async function yG(t){var n;if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText)){await navigator.clipboard.writeText(t);return}if(typeof document>"u")throw new Error("Clipboard unavailable");const e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",e.style.top="0",e.setAttribute("readonly","true"),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}function _G(t){const{disabled:e,placeholder:n,size:i="md",autoFocus:r,onSend:a}=t,[o,s]=w.useState(""),l=w.useCallback(async()=>{const p=o.trim();p.length!==0&&(await a(p),s(""))},[a,o]),c=w.useCallback(p=>{p.key==="Enter"&&(p.preventDefault(),l())},[l]),u=i==="sm"||i==="xs",d=u?18:24,h=o.trim().length>0&&e!==!0;return f.jsxs("div",{className:he(tt.composer,u?tt.composerCompact:tt.composerDefault,e?tt.composerDisabled:null),children:[f.jsx("div",{className:tt.composerInputWrapper,children:f.jsx(RE,{value:o,onChange:s,onKeyDown:c,className:tt.composerInput,placeholder:n??"Send a message ...",disabled:e,size:i,autoFocus:r,"aria-label":"Message"})}),f.jsx("button",{type:"button",className:he(tt.sendButton,u?tt.sendButtonCompact:null),onClick:()=>void l(),disabled:!h,"aria-label":"Send message",children:f.jsx(CE,{size:d})})]})}function k3(t){const{title:e="Messages",ariaLabel:n,className:i,messages:r,isSending:a=!1,localIdentity:o,onSend:s,onClose:l,showCloseButton:c=!0,emptyMessage:u="No messages yet",density:d="default",testId:h,formatTimestamp:p=gG,getSenderName:b,isAgentMessage:m,copyResetDelayMs:S=2e3,showAgentCopyButton:g=!0,inputPlaceholder:y,inputAutoFocus:x,...v}=t,k=w.useRef(null),[T,C]=w.useState(null),R=w.useRef(null),A=w.useCallback(X=>b?b(X):bG(X,o),[b,o]),N=w.useCallback(X=>m?m(X,o):vG(X,o),[m,o]),O=w.useMemo(()=>{const X=r[r.length-1];return X?X.id??`${X.timestamp}-${r.length-1}`:null},[r]);w.useEffect(()=>{var X,P;(P=(X=k.current)==null?void 0:X.scrollIntoView)==null||P.call(X,{behavior:"smooth"})},[O]),w.useEffect(()=>()=>{R.current&&(window.clearTimeout(R.current),R.current=null)},[]);const U=w.useCallback(X=>{C(X),R.current&&window.clearTimeout(R.current),R.current=window.setTimeout(()=>{C(null),R.current=null},S)},[S]),W=w.useCallback(async(X,P)=>{try{await yG(X.message??""),U(P)}catch(G){console.warn("[ChatPanel] Failed to copy message",G)}},[U]),L=d==="compact"?"sm":"md";return f.jsxs(Lu,{...v,className:he(tt.panel,i),role:"region","aria-label":n??e,"data-testid":h,children:[f.jsxs("div",{className:tt.header,children:[f.jsx(pi,{as:"h2",className:he(tt.title,d==="compact"?tt.titleCompact:null),children:e}),l&&c?f.jsx("div",{className:tt.headerActions,children:f.jsx("button",{type:"button",className:tt.closeButton,onClick:l,"aria-label":`Close ${e}`,children:f.jsx(Zf,{size:d==="compact"?18:20})})}):null]}),f.jsx("div",{className:tt.divider,"aria-hidden":"true"}),f.jsxs("div",{className:tt.body,children:[f.jsx("div",{className:tt.messagesArea,children:f.jsx(Dl,{className:tt.scrollable,children:r.length===0?f.jsx(pi,{variant:"muted",className:tt.empty,"data-testid":"chat-panel-empty",children:u}):f.jsxs("div",{className:tt.messagesList,"data-testid":"chat-panel-list",children:[r.map((X,P)=>{const G=X.id??`${X.timestamp}-${P}`,J=N(X),te=T===G;return f.jsxs("div",{className:he(tt.messageItem,J?tt.agentMessage:null),"data-testid":`chat-panel-message-${G}`,children:[f.jsxs("div",{className:tt.messageMetadata,children:[f.jsx("span",{className:tt.senderName,children:A(X)}),f.jsx("span",{className:tt.timestamp,children:p(X.timestamp)})]}),f.jsx(pp,{className:tt.messageBubble,padding:"md",radius:"panel",background:J?"surfaceMuted":"surface",children:f.jsx("div",{className:tt.messageText,children:X.message})}),J&&g?f.jsx("div",{className:tt.agentActions,children:f.jsx("button",{type:"button",className:he(tt.copyButton,te?tt.copyButtonCopied:null),onClick:()=>void W(X,G),"aria-label":te?"Copied":"Copy agent message",title:te?"Copied":"Copy agent message","data-testid":"copy-agent-message","data-copied":te?"true":"false",children:f.jsx(xE,{size:18})})}):null]},G)}),f.jsx("div",{ref:k})]})})}),f.jsx("div",{className:tt.inputRow,children:f.jsx(_G,{onSend:s,disabled:a,placeholder:y,size:L,autoFocus:x})})]})]})}const xG="_responsive_14d0j_2",Iu={responsive:xG,"showAboveWidth-sm":"_showAboveWidth-sm_14d0j_15","showAboveWidth-md":"_showAboveWidth-md_14d0j_24","showAboveWidth-lg":"_showAboveWidth-lg_14d0j_33","showAboveWidth-xl":"_showAboveWidth-xl_14d0j_42","hideAboveWidth-sm":"_hideAboveWidth-sm_14d0j_53","hideAboveWidth-md":"_hideAboveWidth-md_14d0j_59","hideAboveWidth-lg":"_hideAboveWidth-lg_14d0j_65","hideAboveWidth-xl":"_hideAboveWidth-xl_14d0j_71","showAboveHeight-short":"_showAboveHeight-short_14d0j_84","showAboveHeight-medium":"_showAboveHeight-medium_14d0j_93","hideAboveHeight-short":"_hideAboveHeight-short_14d0j_104","hideAboveHeight-medium":"_hideAboveHeight-medium_14d0j_110"};function SG(t){const{as:e,children:n,showAboveWidth:i,hideAboveWidth:r,showAboveHeight:a,hideAboveHeight:o,className:s,...l}=t,c=[Iu.responsive];return i&&c.push(Iu[`showAboveWidth-${i}`]),r&&c.push(Iu[`hideAboveWidth-${r}`]),a&&c.push(Iu[`showAboveHeight-${a}`]),o&&c.push(Iu[`hideAboveHeight-${o}`]),f.jsx(e??"div",{...l,className:he(c,s),children:n})}w.createContext("vertical");const kG="_container_1v6ko_1",TG="_video_1v6ko_7",wG="_chip_1v6ko_16",CG="_logo_1v6ko_34",mp={container:kG,video:TG,chip:wG,logo:CG},EG="https://obi-static.s3.ap-southeast-2.amazonaws.com/videos/greeting.mp4";function RG(t){const{agentName:e="Obi",greetingVideoSrc:n,className:i,...r}=t,a=w.useRef(null),o=()=>{var s;try{(s=a.current)==null||s.pause()}catch{}};return f.jsxs("div",{className:he(mp.container,i),...r,children:[f.jsx("video",{ref:a,className:mp.video,src:n??EG,autoPlay:!0,muted:!0,playsInline:!0,onEnded:o}),f.jsxs("div",{className:mp.chip,children:[f.jsx(UB,{size:12,className:mp.logo}),f.jsx("span",{children:e})]})]})}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const T3=50,Il="?",w3=/\(error: (.*)\)/,C3=/captureMessage|captureException/;function AG(...t){const e=t.sort((n,i)=>n[0]-i[0]).map(n=>n[1]);return(n,i=0,r=0)=>{const a=[],o=n.split(`
133
- `);for(let s=i;s<o.length;s++){const l=o[s];if(l.length>1024)continue;const c=w3.test(l)?l.replace(w3,"$1"):l;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){a.push(d);break}}if(a.length>=T3+r)break}}return NG(a.slice(r))}}function NG(t){if(!t.length)return[];const e=Array.from(t);return/sentryWrapped/.test(gp(e).function||"")&&e.pop(),e.reverse(),C3.test(gp(e).function||"")&&(e.pop(),C3.test(gp(e).function||"")&&e.pop()),e.slice(0,T3).map(n=>({...n,filename:n.filename||gp(e).filename,function:n.function||Il}))}function gp(t){return t[t.length-1]||{}}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const OG=30,MG=50;function Gb(t,e,n,i){const r={filename:t,function:e==="<anonymous>"?Il:e,in_app:!0};return n!==void 0&&(r.lineno=n),i!==void 0&&(r.colno=i),r}const DG=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,PG=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,LG=/\((\S*)(?::(\d+))(?::(\d+))\)/,IG=t=>{const e=DG.exec(t);if(e){const[,i,r,a]=e;return Gb(i,Il,+r,+a)}const n=PG.exec(t);if(n){if(n[2]&&n[2].indexOf("eval")===0){const a=LG.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}const[i,r]=E3(n[1]||Il,n[2]);return Gb(r,i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}},jG=[OG,IG],BG=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,UG=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;AG(...[jG,[MG,t=>{const e=BG.exec(t);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const r=UG.exec(e[3]);r&&(e[1]=e[1]||"eval",e[3]=r[1],e[4]=r[2],e[5]="")}let n=e[3],i=e[1]||Il;return[i,n]=E3(i,n),Gb(n,i,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}}]]);const E3=(t,e)=>{const n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:Il,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[t,e]};typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const Ji={shell:"_shell_8bsnr_1",layout:"_layout_8bsnr_11",layoutThree:"_layoutThree_8bsnr_23",leftPanel:"_leftPanel_8bsnr_27",middlePanel:"_middlePanel_8bsnr_36",rightPanel:"_rightPanel_8bsnr_37",videoFrame:"_videoFrame_8bsnr_41",captions:"_captions_8bsnr_52",controls:"_controls_8bsnr_58",coursePanel:"_coursePanel_8bsnr_71",returnToPiPOverlay:"_returnToPiPOverlay_8bsnr_82",returnToPiPButton:"_returnToPiPButton_8bsnr_94"};function Wb(...t){return t.filter(Boolean).join(" ")}function zG(t){const{captionsText:e,avatarAudioPower:n=0,avatarImageSrc:i,avatarAriaLabel:r,avatarStatus:a,controlBarProps:o,courses:s,coursePanelProps:l,middlePanel:c,rightPanel:u,isCourseOutlineOpen:d,onReturnToPiP:h,className:p}=t;return f.jsx("div",{className:Wb(Ji.shell,p),"data-testid":"course-dialog-content",children:f.jsxs("div",{className:Wb(Ji.layout,u?Ji.layoutThree:null),children:[f.jsxs("div",{className:Ji.leftPanel,children:[f.jsxs("div",{className:Ji.videoFrame,children:[d&&h&&f.jsx("div",{className:Ji.returnToPiPOverlay,children:f.jsx("button",{type:"button",className:Ji.returnToPiPButton,onClick:h,"aria-label":"Return to PiP","data-testid":"course-return-to-pip",children:f.jsx(jB,{size:14})})}),f.jsx(rH,{className:Ji.captions,text:e,children:f.jsx(p3,{audioPower:n,size:"lg",background:"flat",imageSrc:i,ariaLabel:r??"Agent avatar placeholder",status:a})})]}),f.jsx("div",{className:Ji.controls,children:f.jsx(NF,{...o})})]}),u?f.jsx("div",{className:Ji.rightPanel,"data-testid":"course-dialog-right-panel",children:u}):null,f.jsx("div",{className:Ji.middlePanel,"data-testid":"course-dialog-middle-panel",children:c??f.jsx(LH,{...l,courses:s,className:Wb(Ji.coursePanel,l==null?void 0:l.className)})})]})})}function R3(t){const{open:e,onClose:n,dialogProps:i,...r}=t;return f.jsx(IE,{open:e,onClose:n,variant:"ghost",...i,children:f.jsx(zG,{...r})})}const FG=80,qG=500,HG=1e3;function VG(t,e){const{delayMs:n=0}=e??{},r=t.filter(m=>{var g;const S=(g=m.participantInfo)==null?void 0:g.identity;return(S==null?void 0:S.startsWith("agent-"))??!1}).map(m=>m.text??"").join(" ").trim(),[a,o]=w.useState(""),[s,l]=w.useState(!1),c=w.useRef(""),u=w.useRef(null),d=w.useRef(null),h=w.useRef(null),p=m=>{h.current&&(clearTimeout(h.current),h.current=null),n>0?h.current=setTimeout(()=>{o(m)},n):o(m)},b=(m,S)=>m.startsWith(S)?m.slice(S.length).trim():m.trim();return w.useEffect(()=>{if(d.current&&(clearTimeout(d.current),d.current=null),s)return;const m=b(r,c.current);p(m),m.length>FG?(l(!0),u.current=setTimeout(()=>{l(!1),c.current=r},qG+n)):m.length>0&&(d.current=setTimeout(()=>{c.current=r,p("")},HG+n))},[r,s,n]),w.useEffect(()=>()=>{u.current&&clearTimeout(u.current),d.current&&clearTimeout(d.current),h.current&&clearTimeout(h.current)},[]),{caption:a,hasCaption:a.length>0}}const yr={layout:"_layout_k1q6c_1",left:"_left_k1q6c_10",copy:"_copy_k1q6c_17",description:"_description_k1q6c_25",descriptionScroller:"_descriptionScroller_k1q6c_31",cta:"_cta_k1q6c_36",disclaimer:"_disclaimer_k1q6c_43",right:"_right_k1q6c_47",mediaPanel:"_mediaPanel_k1q6c_56",agentStill:"_agentStill_k1q6c_63",dialogWithSmallClose:"_dialogWithSmallClose_k1q6c_88"};function GG(t){const{open:e,onClose:n,onStart:i,agentName:r,agentSubtitle:a,description:o,startLabel:s="Start Now",disclaimer:l="Sessions are securely recorded for quality improvement purposes.",showCloseButton:c=!1,isStarting:u=!1,greetingVideoSrc:d}=t;return f.jsx(IE,{open:e,onClose:n,size:"large",showCloseButton:c,className:yr.dialogWithSmallClose,children:f.jsxs("div",{className:yr.layout,children:[f.jsxs("div",{className:yr.left,children:[f.jsxs("div",{className:yr.copy,children:[f.jsx(pi,{variant:"heading",children:r}),f.jsx(pi,{variant:"subheading",children:a}),f.jsx(pi,{variant:"muted",as:"div",className:yr.description,children:f.jsx(Dl,{className:yr.descriptionScroller,children:f.jsx(Kz,{content:o})})})]}),f.jsxs("div",{className:yr.cta,children:[f.jsx(ps,{type:"button",size:"lg",fullWidth:!0,onClick:i,isLoading:u,children:s}),f.jsx(pi,{variant:"subscript",as:"p",className:yr.disclaimer,children:l})]})]}),f.jsx(SG,{showAboveWidth:"md",children:f.jsx("div",{className:yr.right,children:f.jsx(Lu,{className:yr.mediaPanel,children:f.jsx(RG,{agentName:r,greetingVideoSrc:d,className:yr.agentStill})})})})]})})}const WG={launcherPill:"_launcherPill_1fhyr_1"};function YG(t){const{label:e,onClick:n}=t;return f.jsx("button",{type:"button",className:WG.launcherPill,onClick:n,"data-testid":"ai-coach-pill",children:e})}const A3="__ama_course__",KG="ama_course";function XG(t){var gi,jl,Bl,Ee,Mn,Ul,To,qr,wo,Co,zl,pn,mn,Eo,Ro,Hr,Ao,It,No,Oo,Mo,Do,Fl,_,I,M,ge,Ie,ye;const{sdk:e,shadowHost:n}=t,i=!!e.passivePlanUuid,r=i?((gi=e.client)==null?void 0:gi.selectedPlanUuid)??null:null,a=((jl=e.client)==null?void 0:jl.session)??null,o=!!a&&(i&&!!r||!!((Bl=e.client)!=null&&Bl.selectedPlanUuid)),[s,l]=w.useState(()=>a),[c,u]=w.useState(()=>a!=null&&a.sessionUuid?$G(a.sessionUuid):null),d=(()=>{var q;return a?((q=a.roomId)==null?void 0:q.startsWith("obs-"))&&!c?"course-selection":"pip":r?"start-session":"hidden"})(),[h,p]=w.useState(()=>d),[b,m]=w.useState(!1),[S,g]=w.useState(!1),[y,x]=w.useState(!1),[v,k]=w.useState([]),[T,C]=w.useState(null),[R,A]=w.useState(0),[N,O]=w.useState(!1),[U,W]=w.useState(!1),[L,X]=w.useState(0),[P,G]=w.useState(null),[J,te]=w.useState([]),[Z,F]=w.useState(!1),[ee,$]=w.useState(!1),[ue,B]=w.useState(()=>o),ve=w.useRef(o),j=w.useRef(!1),me=()=>{p(q=>{const K=q==="course-selection",pe=q==="course-outline"&&j.current;return K||pe?(j.current=!1,O(!1),"pip"):q})},be=QG((Mn=(Ee=e.client)==null?void 0:Ee.product)==null?void 0:Mn.widget_url_blacklist),qt=ZG(s),{audioDevices:En}=eW();w.useEffect(()=>{s!=null&&s.sessionUuid&&N3(s.sessionUuid,c)},[c,s==null?void 0:s.sessionUuid]);const{caption:Te}=VG(J,{delayMs:0}),Le=typeof navigator<"u"&&!!((Ul=navigator.mediaDevices)!=null&&Ul.getDisplayMedia),ht=((qr=(To=s==null?void 0:s.room)==null?void 0:To.localParticipant)==null?void 0:qr.isScreenShareEnabled)??!1,lt=q=>{var Se;const K=((Se=e.client)==null?void 0:Se.identity)??q.identity,pe=typeof(K==null?void 0:K.first_name)=="string"?K.first_name.trim():"",je=typeof(K==null?void 0:K.last_name)=="string"?K.last_name.trim():"",ae=typeof(K==null?void 0:K.email)=="string"&&K.email.trim().length>0?K.email.trim():"";return{firstName:pe,lastName:je,email:ae}},hn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe,je].map(Qe=>Qe.trim());return ae.some(Qe=>Qe.length>0)?ae.join(":"):""},fn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe].filter(Boolean).join(" ").trim();return{name:ae.length>0?ae:void 0,email:je.length>0?je:void 0,screenShareSupported:Le}},At=(()=>{if(s!=null&&s.speakingState){if(s.speakingState==="thinking")return"thinking";if(s.speakingState==="busy")return"searching"}})(),tn=((Co=(wo=e.client)==null?void 0:wo.product)==null?void 0:Co.avatar_image_url)||((pn=(zl=e.client)==null?void 0:zl.product)==null?void 0:pn.logo_url)||void 0,Nn=((Eo=(mn=e.client)==null?void 0:mn.product)==null?void 0:Eo.greeting_video_url)||void 0,Ri=JG({sdk:e,session:s,isBlacklisted:be}),$i=!i&&Ri,fe=!!(s??((Ro=e.client)==null?void 0:Ro.session)??null),He=(s==null?void 0:s.clientType)==="meet"?hn(s):"",we=(Ao=(Hr=e.client)==null?void 0:Hr.product)==null?void 0:Ao.assistant_subtitle,ft=typeof we=="string"&&we.trim().length>0?we:"AI Coach",nn=()=>A(q=>q+1),Jn=async()=>{var K,pe;if(!s)return;const q=((pe=(K=s.room)==null?void 0:K.localParticipant)==null?void 0:pe.isScreenShareEnabled)??!1;try{q?await s.setScreenShareEnabled(!1):await s.shareScreen()}catch(je){console.error("[obi-sdk] failed to toggle screen share",je)}finally{nn()}},Ai=w.useRef(null),z=w.useRef(null),oe=w.useRef(!1),le=w.useRef({session:null,sessionUuid:null,started:!1}),Oe=w.useRef(null),Ne=w.useRef(new WeakMap),vt=(q,K)=>{if(!K)return;let pe=Ne.current.get(q);pe||(pe=new Set,Ne.current.set(q,pe)),pe.add(K)},On=q=>{if(!q||Ai.current===q)return;z.current&&(z.current(),z.current=null);const K=()=>nn(),pe=ie=>{u(ie),q!=null&&q.sessionUuid&&N3(q.sessionUuid,ie),Array.isArray(ie.stepNames)&&ie.stepNames.length>0&&ie.totalSteps>0&&p(bt=>bt==="pip"||bt==="course-outline"?bt:bt==="course-selection"?(j.current=!0,"course-outline"):bt)},je=ie=>{k(ie.courses),p("course-selection"),j.current=!1,u(null),q!=null&&q.sessionUuid&&O3(q.sessionUuid),C(null),W(!1)},ae=(ie,Ye)=>{},Se=ie=>{ie.isAgent},Qe=ie=>{G(ie),X(Date.now())},Xt=ie=>{if(!ie){G(null);return}G(ie),X(Date.now())};q.on("stateChanged",K),q.on("speakingStateChanged",K),q.on("paused",K),q.on("unpaused",K),q.on("chatMessagesChanged",K),q.on("chatMessageReceived",Se),q.on("courseProgress",pe),q.on("courseSelection",je),q.on("transcript",ae),q.on("screenCaptured",Qe),q.on("screenCaptureNotification",Xt),q.on("captions",te),q.on("introductionComplete",me),Ai.current=q,z.current=()=>{q.off("stateChanged",K),q.off("speakingStateChanged",K),q.off("paused",K),q.off("unpaused",K),q.off("chatMessagesChanged",K),q.off("chatMessageReceived",Se),q.off("courseProgress",pe),q.off("courseSelection",je),q.off("transcript",ae),q.off("screenCaptured",Qe),q.off("screenCaptureNotification",Xt),q.off("captions",te),q.off("introductionComplete",me)}},mi=q=>{var pe;return q?((pe=q.roomId)==null?void 0:pe.startsWith("obs-"))&&!c?"course-selection":"pip":"hidden"};w.useEffect(()=>{const q=()=>{Oe.current&&(Oe.current(),Oe.current=null)},K=ae=>{if(ae.clientType!=="meet")return;if(le.current.session&&le.current.session===ae||!!le.current.sessionUuid&&!!ae.sessionUuid&&le.current.sessionUuid===ae.sessionUuid){if(le.current.started||Oe.current)return}else le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!1},q();const Qe=async()=>{le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!0};const Ye=hn(ae);Ye&&vt(ae,Ye);try{await ae.sendHumanJoined(fn(ae))}catch(bt){console.error("[obi-sdk] failed to send human_joined handshake",bt)}},Xt=(Ye,bt)=>{Ye==="connecting"||Ye==="error"||(q(),Qe())},ie=ae.state;if(ie&&ie!=="connecting"&&ie!=="error"){Qe();return}ae.on("stateChanged",Xt),Oe.current=()=>{ae.off("stateChanged",Xt)}},pe=ae=>{var Se,Qe,Xt,ie;if(ae)if((Se=e.client)!=null&&Se.session)p(mi(((Xt=e.client)==null?void 0:Xt.session)??null));else{const bt=!!e.passivePlanUuid,Dn=bt&&!!((Qe=e.client)!=null&&Qe.selectedPlanUuid);if(bt&&!Dn)return;p("start-session")}else(ie=e.client)!=null&&ie.session||p("hidden")},je=()=>nn();if(e.on("showMenu",pe),e.on("configUpdated",je),e.client){e.client.session&&(l(e.client.session),On(e.client.session),p(mi(e.client.session))),e.client.on("sessionStarted",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1);const Qe=ve.current;ve.current=!1,Qe?(j.current=!0,p("course-outline")):(j.current=!1,p(mi(Se))),ta().track("session-started",{planId:Se.planId}),K(Se)}),e.client.on("sessionResumed",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1),j.current=!1,p(mi(Se)),K(Se)});const ae=()=>{var Xt;const Se=(Xt=e.client)==null?void 0:Xt.session;Se!=null&&Se.sessionUuid&&O3(Se.sessionUuid);const Qe=Ai.current;z.current&&(z.current(),z.current=null),l(null),Ai.current=null,m(!1),g(!1),x(!1),W(!1),B(!1),ve.current=!1,j.current=!1,q(),le.current={session:null,sessionUuid:null,started:!1},Qe&&Ne.current.delete(Qe),oe.current||p("hidden")};e.client.on("sessionStopped",ae),e.client.on("sessionShutdown",ae),e.client.on("stateChanged",nn)}return()=>{e.off("showMenu",pe),e.off("configUpdated",je),z.current&&z.current(),q()}},[e]),w.useEffect(()=>{const q=s;if(!q||q.clientType!=="meet")return;const K=q.state;if(!K||K==="connecting"||K==="error"||!He)return;const pe=Ne.current.get(q);pe!=null&&pe.has(He)||(vt(q,He),q.sendHumanJoined(fn(q)).catch(je=>console.error("[obi-sdk] failed to send human_joined update",je)))},[Le,He,s,s==null?void 0:s.state]),w.useLayoutEffect(()=>{var q,K;(K=(q=e.client)==null?void 0:q.product)!=null&&K.primary_color&&n.style.setProperty("--obi-color-primary",e.client.product.primary_color)},[(No=(It=e.client)==null?void 0:It.product)==null?void 0:No.primary_color,n]),w.useEffect(()=>{if(i&&!be&&!fe){if(!r){p("hidden");return}p("start-session")}},[fe,i,be,r]),w.useEffect(()=>{var Xt,ie;$(!1);const q=(Xt=e.client)==null?void 0:Xt.api,K=(ie=e.client)==null?void 0:ie.product;if(!q||!K)return;const pe=(K==null?void 0:K.uuid)??(K==null?void 0:K.product_uuid),je=(K==null?void 0:K.slug)??(K==null?void 0:K.product_slug),ae=(K==null?void 0:K.id)??(K==null?void 0:K.product_id),Se={};if(pe?Se.product_uuid=pe:je?Se.product_slug=je:ae!=null&&(Se.product_id=String(ae)),Object.keys(Se).length===0)return;let Qe=!1;return q.getFeatureFlags(Se).then(Ye=>{if(Qe)return;const Dn=((Ye==null?void 0:Ye.data)??[]).find(Xb=>(Xb==null?void 0:Xb.slug)===KG);if(!Dn)return;const{user_enabled:Zn,product_enabled:Pn,global_enabled:_r}=Dn;let Kb=!!_r;Pn!=null&&(Kb=!!Pn),Zn!=null&&(Kb=!!Zn),$(Kb)}).catch(Ye=>{console.error("[obi-sdk] failed to load AMA feature flag",Ye)}),()=>{Qe=!0}},[(Oo=e.client)==null?void 0:Oo.api,(Mo=e.client)==null?void 0:Mo.product]);const ka=(c==null?void 0:c.stepNames.map((q,K)=>({id:`step-${K+1}`,title:q})))??[],$n=(c==null?void 0:c.currentStep)??null,Qn=!0,Qi=(q,K)=>{s==null||s.say(`Can we jump to the section about ${K.title}?`)};if(be||i&&!r&&!fe)return null;if(h==="hidden")return $i?f.jsx(YG,{label:ft,onClick:()=>{e.updateShowMenu(!0)}}):null;if(h==="start-session"){const q=(Do=e.client)==null?void 0:Do.product,K=(Fl=e.client)==null?void 0:Fl.selectedPlan,pe=i&&!!r,je=i&&!!r||!!((_=e.client)!=null&&_.selectedPlanUuid),ae=(q==null?void 0:q.agent_name)||"Obi",Se=(q==null?void 0:q.assistant_subtitle)||"AI Assistant",Qe=pe&&(K==null?void 0:K.description)||(q==null?void 0:q.assistant_description)||"";return f.jsx(GG,{open:!0,onClose:()=>{m(!1),p("hidden")},onStart:()=>{ve.current=je,B(je),m(!0),e.startSession({withMicrophone:!0})},agentName:ae,agentSubtitle:Se,description:Qe,showCloseButton:!1,startLabel:"Start Session",isStarting:b,greetingVideoSrc:Nn})}if(h==="course-selection"){const q=(I=s==null?void 0:s.roomId)==null?void 0:I.startsWith("obs-"),K=((M=e.client)==null?void 0:M.plans)||[],pe=q&&v.length>0,je=pe?v.slice().sort((ie,Ye)=>ie.order!==void 0&&Ye.order!==void 0?ie.order-Ye.order:ie.order!==void 0?-1:Ye.order!==void 0?1:ie.name.localeCompare(Ye.name)).map(ie=>({id:ie.uuid,title:ie.name,description:ie.description||ie.overview||"",status:ie.completed?"completed":"available",duration:typeof ie.duration=="number"?`${ie.duration} min`:ie.duration})):K.map(ie=>{var Ye,bt;return{id:ie.uuid,title:ie.name,description:ie.description,status:(bt=(Ye=e.client)==null?void 0:Ye.planIsCompleted)!=null&&bt[K.indexOf(ie)]?"completed":"available",duration:ie.estimated_duration?`${ie.estimated_duration} min`:void 0}});pe&&ee&&je.push({id:A3,title:"Ask me anything",description:"Ask questions before choosing a course.",status:"available"});const ae=(s==null?void 0:s.languageCodes)||[],Se=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,Qe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:ae,selectedLanguage:Se,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},Xt=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ge=s==null?void 0:s.room)==null?void 0:ge.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0;return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:je,controlBarProps:Qe,coursePanelProps:{selectedCourseIds:T?[T]:void 0,onCourseToggle:async ie=>{var Ye,bt,Dn,Zn;if(pe){if(ie===A3){try{await((Ye=s==null?void 0:s.say)==null?void 0:Ye.call(s,"Please start an AMA session."))}catch(_r){console.error("[obi-sdk] failed to start AMA course",_r)}return}const Pn=v.find(_r=>_r.uuid===ie);if(Pn){C(ie);try{await((bt=s==null?void 0:s.say)==null?void 0:bt.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),C(null)}}}else{const Pn=K.find(_r=>_r.uuid===ie);if(Pn){(Dn=e.client)==null||Dn.selectPlan(Pn),p("pip");try{await((Zn=s==null?void 0:s.say)==null?void 0:Zn.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),p("course-selection")}}}}},rightPanel:Xt,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="course-outline"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},je=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((Ie=s==null?void 0:s.room)==null?void 0:Ie.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0,ae=!!c,Se=!ue,Qe=async()=>{if(!(!(s!=null&&s.endCourse)||U)){W(!0);try{await s.endCourse()}catch(ie){console.error("[obi-sdk] failed to end course",ie),W(!1)}}},Xt=f.jsx(gV,{steps:ka,currentStep:$n,hideTrailingConclusionStep:Qn,onStepClick:Qi,showBackToCourses:Se,...Se?{onBackToCoursesConfirm:Qe,backToCoursesDisabled:U}:{}});return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:[],controlBarProps:pe,middlePanel:Xt,rightPanel:je,isCourseOutlineOpen:ae,onReturnToPiP:ae?()=>p("pip"):void 0,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="pip"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe=280,je=250,ae=16,Se={x:window.innerWidth-pe-ae,y:window.innerHeight-je-ae},Qe={isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isChatOpen:y,isScreenShareActive:ht,onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>x(ie=>!ie),onScreenShareToggle:Jn,onLeave:()=>{s==null||s.stop()},languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0},Xt=y?f.jsx(BV,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ye=s==null?void 0:s.room)==null?void 0:ye.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},testId:"pip-chat-panel"}):void 0;return f.jsx(Zq,{initialPosition:Se,onExit:()=>{j.current=!1,p("course-outline")},controlBarProps:Qe,isCourseOutlineSelected:N&&!!c,onCourseOutlineToggle:c?()=>{O(ie=>!ie)}:void 0,isCaptionsEnabled:Z,onCaptionsToggle:()=>F(ie=>!ie),courseOutline:c?{steps:ka,currentStep:$n,onStepClick:Qi,hideTrailingConclusionStep:Qn}:void 0,messagesPanel:Xt,avatarFallbackProps:{audioPower:qt,imageSrc:tn,status:At,captionsText:Te},screenshotUrl:P,cameraShotTrigger:L})}return null}function JG(t){var l,c;const{sdk:e,session:n,isBlacklisted:i}=t;if(i)return!1;const r=e.client;if(!r||r.state!=="ready"||(n??r.session??null))return!1;let o=e.isActive;return((l=r.product)==null?void 0:l.name)==="Canibuild"&&(o=!0),!(!o||(e.widgetDisplay??((c=r.product)==null?void 0:c.widget_display))==="invisible")}function N3(t,e){if(!t)return;const n=`obi-widget-course-progress-${t}`;if(e===null){localStorage.removeItem(n);return}try{const i={...e,timestamp:Date.now()};localStorage.setItem(n,JSON.stringify(i))}catch(i){console.error("[obi-sdk] failed to save course progress",i)}}function $G(t){if(!t)return null;const e=`obi-widget-course-progress-${t}`;try{const n=localStorage.getItem(e);if(!n)return null;const i=JSON.parse(n);if(typeof i.currentStep!="number"||typeof i.totalSteps!="number"||!Array.isArray(i.stepNames))return console.warn("[obi-sdk] invalid course progress data, clearing",i),localStorage.removeItem(e),null;const r=24*60*60*1e3;return i.timestamp&&Date.now()-i.timestamp>r?(localStorage.removeItem(e),null):{currentStep:i.currentStep,totalSteps:i.totalSteps,stepNames:i.stepNames}}catch(n){return console.error("[obi-sdk] failed to load course progress",n),localStorage.removeItem(e),null}}function O3(t){if(!t)return;const e=`obi-widget-course-progress-${t}`;try{localStorage.removeItem(e)}catch(n){console.error("[obi-sdk] failed to clear course progress",n)}}function QG(t){const[e,n]=w.useState(()=>fs(t));return w.useEffect(()=>{n(fs(t))},[t]),w.useEffect(()=>{const i=()=>{n(fs(t))};return window.addEventListener("popstate",i),window.addEventListener("hashchange",i),()=>{window.removeEventListener("popstate",i),window.removeEventListener("hashchange",i)}},[t]),e}function ZG(t){const[e,n]=w.useState(0),i=w.useRef(null),r=w.useRef(0),a=w.useRef(0);return w.useEffect(()=>{if(!t){n(0),r.current=0,a.current=0;return}const o=()=>{const s=t.audioSpectrum();let l=0;if(s&&s.length>0){let b=0;for(let m=0;m<s.length;m++)b+=s[m];l=Math.min(1,Math.max(0,b/s.length))}const c=r.current,d=l>=c?.7:.15,h=c*d+l*(1-d);r.current=h;const p=h<.05?0:Math.min(1,h);Math.abs(p-a.current)>.01&&(a.current=p,n(p)),i.current=requestAnimationFrame(o)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[t]),e}function eW(){const[t,e]=w.useState({audioDevices:[]});return w.useEffect(()=>{var i;if(typeof navigator>"u"||!((i=navigator.mediaDevices)!=null&&i.enumerateDevices))return;const n=()=>{navigator.mediaDevices.enumerateDevices().then(r=>{e({audioDevices:r.filter(a=>a.kind==="audioinput")})})};return n(),navigator.mediaDevices.addEventListener("devicechange",n),()=>navigator.mediaDevices.removeEventListener("devicechange",n)},[]),t}function M3(){const t=window.location.hostname;return t.endsWith(".getcor.ai")||t.endsWith(".getcor.io")||t.endsWith(".clinic1.com")||t==="getcor.ai"||t==="getcor.io"||t==="localhost"||t==="127.0.0.1"||t==="::1"}const D3=M3();function tW(t){if(document.querySelector("#obi-host")||document.querySelector("obi-widget"))return;nW();const e=document.createElement("div");e.id="obi-host",e.style.position="fixed",e.style.zIndex="9999",document.body.appendChild(e);const n=e.attachShadow({mode:"open"}),i=document.createElement("div");i.id="obi-container",n.appendChild(i);const r=new CSSStyleSheet;r.replaceSync(TB);const a=[r];if(D3){const s=new CSSStyleSheet;s.replaceSync(xB),a.push(s);const l=new CSSStyleSheet;l.replaceSync(kB),a.push(l)}else{const s=new CSSStyleSheet;s.replaceSync(SB),a.push(s)}n.adoptedStyleSheets=a;const o=_B.createRoot(i);D3?o.render(f.jsx(XG,{sdk:t,shadowHost:e})):o.render(f.jsx(EB,{sdk:t,shadowHost:e})),console.log("[obi-sdk] widget mounted")}function nW(){P3("https://fonts.cdnfonts.com/css/satoshi"),P3("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap")}function P3(t){const e=document.createElement("link");e.href=t,e.rel="stylesheet",document.head.appendChild(e)}const L3="49206C6F7665204F6269_session",I3="obi-url-params",Yb="obi-client-heartbeat",iW=5e3,j3=4e4,B3=15e3;function rW(){return M3()?"meet":"sdk"}class aW extends _p{constructor(e){super(),this.client=null,this.isActive=!1,this.primaryColour="#9500FF",this.passivePlanUuid=null,this.commandLog=[],this.commandQueue=[],this._resumed=!1,this.heartbeatInterval=null,this.dispatchCommand=(n,i)=>{var r,a,o,s,l;switch(this.commandLog.push({commandType:n,args:i}),n){case"update":this.updateConfig(i);break;case"startSession":{if(i!=null&&i.planUuid){const c=(((r=this.client)==null?void 0:r.plans)||[]).find(u=>u.uuid===i.planUuid)||null;if(!c){console.warn("[obi] startSession command requires a valid planUuid",i);return}(o=(a=this.client)==null?void 0:a.selectPlan)==null||o.call(a,c)}this.updateActive(!0);break}case"stopSession":(l=(s=this.client)==null?void 0:s.stopSession)==null||l.call(s);break;case"say":this.say(i);break;default:console.warn("[obi] unknown command",{commandType:n,args:i})}},e&&this.createClient(e),this.parsePassiveParams()}async createClient(e){if(this.client){this.client.appToken!==e&&console.warn("[obi] client already exists with different app token");return}let n=null;const i=rW(),r=this.load();if(r)try{const a=this.parsePersistedSessionMetadata(r),o=a&&this.isPersistedSessionStale(a);o!=null&&o.stale&&a?(this.trackStaleSessionDiscard(a.sessionUuid,o.ageMs,o.reason),this.clearCachedClient()):(n=bh.deserialise(r,e,i,{apiBaseUrl:"https://app.coragents.ai",captureScreen:this.captureScreen.bind(this)}),n?this._resumed=!0:this.clearCachedClient())}catch(a){console.error("[obi] error loading cached client",a),this.clearCachedClient()}n||(n=new bh(e,i,{apiBaseUrl:"https://app.coragents.ai",captureScreen:this.captureScreen.bind(this)})),this.client=n,this.client.session&&this.startHeartbeat(this.client.session.sessionUuid),this.client.on("stateChanged",a=>{var o,s,l,c,u,d,h,p,b,m;a==="ready"&&this.updateConfig({isActive:((o=window==null?void 0:window.obiWidgetConfig)==null?void 0:o.isActive)??((s=this.client)==null?void 0:s.showWidget),primaryColour:((c=(l=this.client)==null?void 0:l.product)==null?void 0:c.primary_color)||"#9500FF",widgetDisplay:((u=window==null?void 0:window.obiWidgetConfig)==null?void 0:u.widgetDisplay)||((h=(d=this.client)==null?void 0:d.product)==null?void 0:h.widget_display)||"regular",completedWidgetDisplay:((p=window==null?void 0:window.obiWidgetConfig)==null?void 0:p.completedWidgetDisplay)||((m=(b=this.client)==null?void 0:b.product)==null?void 0:m.completed_widget_display)||"regular"})}),this.client.on("sessionStarted",()=>{var a,o;this.save(),this.startHeartbeat(((o=(a=this.client)==null?void 0:a.session)==null?void 0:o.sessionUuid)||null),this.passivePlanUuid=null}),this.client.on("sessionStopped",()=>{this.clearCachedClient(),this.passivePlanUuid=null}),this.client.on("sessionShutdown",()=>{this.clearCachedClient()}),this.client.on("trackEvent",(a,o)=>{}),this.client.session&&(this.client.session.isPaused,this.client.resumeSession(a=>{a.on("stateChanged",o=>{o!=="disconnecting"&&o!=="disconnected"&&o!=="error"&&o!=="connecting"&&this.save()}),a.on("paused",()=>{this.save()}),a.on("unpaused",()=>{this.save()})}))}_maybeActOnServerEngagement(){var s;const e=this.client;if(!e||e.state!=="ready")return;const n=e.product,i=(s=e.engagement)==null?void 0:s.style;if(!i||n&&fs(n.widget_url_blacklist||[])||!e.showWidget)return;const r=e.plans||[],a=e.planIsCompleted||[],o=r.length>0&&a.filter(Boolean).length===r.length;if(!(r.length===0||o)){if(i==="modal"){const l=a.findIndex(u=>!u),c=l>=0?r[l]:null;c&&e.selectPlan(c)}else i==="popover"&&setTimeout(()=>{this.showMessage("Don't forget to complete your onboarding",{autoCloseMs:1e4})},1e3);try{ta().track("engagement-prompt-shown",{style:i})}catch{}}}async initialise(e={}){var n;this.commandQueue=e.queuedCommands||[],this._resumed?(this._resumed=!1,this.dispatchCommandQueue()):this.client?this.client.initialise({planUuid:this.passivePlanUuid||void 0,identity:((n=window==null?void 0:window.obiWidgetConfig)==null?void 0:n.user)||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}this.dispatchCommandQueue()}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}):this.dispatchCommandQueue()}async updateConfig(e){await this.updateAppToken(e.apiKey),this.updateActive(e.isActive),this.updatePrimaryColour(e.primaryColour),this.updateWidgetDisplay(e.widgetDisplay),this.updateCompletedWidgetDisplay(e.completedWidgetDisplay),this.updateWidgetPosition(e.widgetPosition),await this.updateIdentity(e.user),this.updateShowMenu(e.showMenu),this.emit("configUpdated")}async updateAppToken(e){var n;e===void 0||e==((n=this.client)==null?void 0:n.appToken)||(this.passivePlanUuid,await this.createClient(e),this.client&&await this.client.initialise({planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}))}updateActive(e){e===void 0||e==this.isActive||(this.isActive=e)}updatePrimaryColour(e){e===void 0||e==this.primaryColour||(this.primaryColour=e)}updateWidgetDisplay(e){e===void 0||e==this.widgetDisplay||(this.widgetDisplay=e)}updateCompletedWidgetDisplay(e){e===void 0||e==this.completedWidgetDisplay||(this.completedWidgetDisplay=e)}updateWidgetPosition(e){e===void 0||e==this.widgetPosition||(this.widgetPosition=e)}async updateIdentity(e){var i,r;if(e===void 0||e==((i=this.client)==null?void 0:i.identity))return;(r=this.client)==null||r.identity;let n=e?{...e,extra:{...e,...(e==null?void 0:e.extra)||{}}}:void 0;await this.client.initialise({identity:n,planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(a=>{console.error("[obi] error initialising client",a),this.emit("error",a)}),e!=null&&e.email&&ta().identify((e==null?void 0:e.email)||"",n)}updateShowMenu(e){e!==void 0&&this.emit("showMenu",e)}async say(e){var n,i,r;await((r=(i=(n=this.client)==null?void 0:n.session)==null?void 0:i.say)==null?void 0:r.call(i,e))}async startSession(e){await this.client.startSession(this.client.selectedPlanUuid||null,n=>{n.on("stateChanged",i=>{i!=="disconnecting"&&i!=="disconnected"&&i!=="error"&&i!=="connecting"&&this.save()}),n.on("paused",()=>{this.save()}),n.on("unpaused",()=>{this.save()})},e)}dispatchCommandQueue(){const e=this.commandQueue;this.commandQueue=[],e.forEach(n=>{try{this.dispatchCommand(n[0],n[1]||[])}catch(i){console.error("[obi] error dispatching command",i)}})}parsePassiveParams(){if(this.passivePlanUuid){this.passivePlanUuid;return}let e={};e=JSON.parse(localStorage.getItem(I3)||"{}"),Object.keys(e).length===0&&new URLSearchParams(window.location.search).forEach((a,o)=>{e[o]=a});const n=e[L3];if(!n)return null;const i=new URL(window.location.href);i.searchParams.delete(L3),window.history.replaceState({},"",i.toString()),i.toString(),localStorage.removeItem(I3),this.passivePlanUuid=n}mountWidget(){tW(this)}showMessage(e,n){try{this.emit("showMessage",{text:e,autoCloseMs:n==null?void 0:n.autoCloseMs})}catch{}}async captureScreen(){try{await fO(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.text_segmentation)),await sR(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.css_line_breaks))}catch(e){throw console.error("[obi] error initialising unicode trie",e),e}try{return(await GN(document.documentElement,{useCORS:!0,allowTaint:!0,foreignObjectRendering:!0})).toDataURL("image/png")}catch(e){throw console.error("[obi] error capturing screen",e),e}}save(){var n;const e=((n=this.client)==null?void 0:n.serialise())||"";localStorage.setItem("obi-client",e)}load(){return localStorage.getItem("obi-client")}parsePersistedSessionMetadata(e){const n=JSON.parse(e),i=this.parseTimestampMs(n.serialisedAt);if(!n.session)return null;let r=null;if(typeof n.session=="string")try{r=JSON.parse(n.session)}catch{return null}else typeof n.session=="object"&&(r=n.session);return r?{sessionUuid:typeof r.sessionUuid=="string"?r.sessionUuid:null,startedAtMs:this.parseTimestampMs(r.startedAt),serialisedAtMs:i}:null}isPersistedSessionStale(e){const n=Date.now(),i=this.readHeartbeat();if(i&&i.sessionUuid&&e.sessionUuid&&i.sessionUuid===e.sessionUuid){const s=Math.max(0,n-i.updatedAtMs);return{stale:s>j3,reason:s>j3?"heartbeat-stale":"heartbeat-fresh",ageMs:s}}const r=[e.serialisedAtMs,e.startedAtMs].filter(s=>typeof s=="number"&&Number.isFinite(s));if(r.length===0)return{stale:!0,reason:"fallback-missing-timestamps",ageMs:null};const a=Math.max(...r),o=Math.max(0,n-a);return{stale:o>B3,reason:o>B3?"fallback-too-old":"fallback-recent",ageMs:o}}parseTimestampMs(e){if(typeof e=="number")return e;if(typeof e=="string"){const n=Number(e);if(!Number.isNaN(n))return n;const i=Date.parse(e);return Number.isFinite(i)?i:null}return null}readHeartbeat(){const e=localStorage.getItem(Yb);if(!e)return null;try{return JSON.parse(e)}catch{return null}}trackStaleSessionDiscard(e,n,i){try{ta().track("stale-session-discarded",{sessionUuid:e||void 0,ageMs:n??void 0,reason:i})}catch{}}startHeartbeat(e){if(!e){this.clearHeartbeat();return}this.stopHeartbeat(),this.writeHeartbeat(e),this.heartbeatInterval=setInterval(()=>{this.writeHeartbeat(e)},iW)}stopHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}writeHeartbeat(e){const n={sessionUuid:e,updatedAtMs:Date.now()};localStorage.setItem(Yb,JSON.stringify(n))}clearHeartbeat(){this.stopHeartbeat(),localStorage.removeItem(Yb)}clearCachedClient(){this.clearHeartbeat(),localStorage.removeItem("obi-client")}}async function U3(t,e){let n;try{n=window}catch{console.warn("[obi] no window object found"),n={}}return oW({appToken:t,window:n,init:e})}async function oW({appToken:t,window:e,init:n}){var a,o;if(e.obi){console.warn("[obi] obi object already found on window, skipping");return}n&&n(),t||(t=(a=e==null?void 0:e.obiWidgetConfig)==null?void 0:a.apiKey);let i;try{i=((o=e.ObiSDK)==null?void 0:o.q)||[]}catch{i=[]}const r=new aW(t);return e.ObiSDK=r.dispatchCommand,await r.initialise({queuedCommands:i}),e.obi=r,r.mountWidget(),r}function z3(){}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{U3(void 0,z3)}):U3(void 0,z3)})();
133
+ `);for(let s=i;s<o.length;s++){const l=o[s];if(l.length>1024)continue;const c=w3.test(l)?l.replace(w3,"$1"):l;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){a.push(d);break}}if(a.length>=T3+r)break}}return NG(a.slice(r))}}function NG(t){if(!t.length)return[];const e=Array.from(t);return/sentryWrapped/.test(gp(e).function||"")&&e.pop(),e.reverse(),C3.test(gp(e).function||"")&&(e.pop(),C3.test(gp(e).function||"")&&e.pop()),e.slice(0,T3).map(n=>({...n,filename:n.filename||gp(e).filename,function:n.function||Il}))}function gp(t){return t[t.length-1]||{}}typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const OG=30,MG=50;function Gb(t,e,n,i){const r={filename:t,function:e==="<anonymous>"?Il:e,in_app:!0};return n!==void 0&&(r.lineno=n),i!==void 0&&(r.colno=i),r}const DG=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,PG=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,LG=/\((\S*)(?::(\d+))(?::(\d+))\)/,IG=t=>{const e=DG.exec(t);if(e){const[,i,r,a]=e;return Gb(i,Il,+r,+a)}const n=PG.exec(t);if(n){if(n[2]&&n[2].indexOf("eval")===0){const a=LG.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}const[i,r]=E3(n[1]||Il,n[2]);return Gb(r,i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}},jG=[OG,IG],BG=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,UG=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;AG(...[jG,[MG,t=>{const e=BG.exec(t);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const r=UG.exec(e[3]);r&&(e[1]=e[1]||"eval",e[3]=r[1],e[4]=r[2],e[5]="")}let n=e[3],i=e[1]||Il;return[i,n]=E3(i,n),Gb(n,i,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}}]]);const E3=(t,e)=>{const n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:Il,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[t,e]};typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;const Ji={shell:"_shell_8bsnr_1",layout:"_layout_8bsnr_11",layoutThree:"_layoutThree_8bsnr_23",leftPanel:"_leftPanel_8bsnr_27",middlePanel:"_middlePanel_8bsnr_36",rightPanel:"_rightPanel_8bsnr_37",videoFrame:"_videoFrame_8bsnr_41",captions:"_captions_8bsnr_52",controls:"_controls_8bsnr_58",coursePanel:"_coursePanel_8bsnr_71",returnToPiPOverlay:"_returnToPiPOverlay_8bsnr_82",returnToPiPButton:"_returnToPiPButton_8bsnr_94"};function Wb(...t){return t.filter(Boolean).join(" ")}function zG(t){const{captionsText:e,avatarAudioPower:n=0,avatarImageSrc:i,avatarAriaLabel:r,avatarStatus:a,controlBarProps:o,courses:s,coursePanelProps:l,middlePanel:c,rightPanel:u,isCourseOutlineOpen:d,onReturnToPiP:h,className:p}=t;return f.jsx("div",{className:Wb(Ji.shell,p),"data-testid":"course-dialog-content",children:f.jsxs("div",{className:Wb(Ji.layout,u?Ji.layoutThree:null),children:[f.jsxs("div",{className:Ji.leftPanel,children:[f.jsxs("div",{className:Ji.videoFrame,children:[d&&h&&f.jsx("div",{className:Ji.returnToPiPOverlay,children:f.jsx("button",{type:"button",className:Ji.returnToPiPButton,onClick:h,"aria-label":"Return to PiP","data-testid":"course-return-to-pip",children:f.jsx(jB,{size:14})})}),f.jsx(rH,{className:Ji.captions,text:e,children:f.jsx(p3,{audioPower:n,size:"lg",background:"flat",imageSrc:i,ariaLabel:r??"Agent avatar placeholder",status:a})})]}),f.jsx("div",{className:Ji.controls,children:f.jsx(NF,{...o})})]}),u?f.jsx("div",{className:Ji.rightPanel,"data-testid":"course-dialog-right-panel",children:u}):null,f.jsx("div",{className:Ji.middlePanel,"data-testid":"course-dialog-middle-panel",children:c??f.jsx(LH,{...l,courses:s,className:Wb(Ji.coursePanel,l==null?void 0:l.className)})})]})})}function R3(t){const{open:e,onClose:n,dialogProps:i,...r}=t;return f.jsx(IE,{open:e,onClose:n,variant:"ghost",...i,children:f.jsx(zG,{...r})})}const FG=80,qG=500,HG=1e3;function VG(t,e){const{delayMs:n=0}=e??{},r=t.filter(m=>{var g;const S=(g=m.participantInfo)==null?void 0:g.identity;return(S==null?void 0:S.startsWith("agent-"))??!1}).map(m=>m.text??"").join(" ").trim(),[a,o]=w.useState(""),[s,l]=w.useState(!1),c=w.useRef(""),u=w.useRef(null),d=w.useRef(null),h=w.useRef(null),p=m=>{h.current&&(clearTimeout(h.current),h.current=null),n>0?h.current=setTimeout(()=>{o(m)},n):o(m)},b=(m,S)=>m.startsWith(S)?m.slice(S.length).trim():m.trim();return w.useEffect(()=>{if(d.current&&(clearTimeout(d.current),d.current=null),s)return;const m=b(r,c.current);p(m),m.length>FG?(l(!0),u.current=setTimeout(()=>{l(!1),c.current=r},qG+n)):m.length>0&&(d.current=setTimeout(()=>{c.current=r,p("")},HG+n))},[r,s,n]),w.useEffect(()=>()=>{u.current&&clearTimeout(u.current),d.current&&clearTimeout(d.current),h.current&&clearTimeout(h.current)},[]),{caption:a,hasCaption:a.length>0}}const yr={layout:"_layout_k1q6c_1",left:"_left_k1q6c_10",copy:"_copy_k1q6c_17",description:"_description_k1q6c_25",descriptionScroller:"_descriptionScroller_k1q6c_31",cta:"_cta_k1q6c_36",disclaimer:"_disclaimer_k1q6c_43",right:"_right_k1q6c_47",mediaPanel:"_mediaPanel_k1q6c_56",agentStill:"_agentStill_k1q6c_63",dialogWithSmallClose:"_dialogWithSmallClose_k1q6c_88"};function GG(t){const{open:e,onClose:n,onStart:i,agentName:r,agentSubtitle:a,description:o,startLabel:s="Start Now",disclaimer:l="Sessions are securely recorded for quality improvement purposes.",showCloseButton:c=!1,isStarting:u=!1,greetingVideoSrc:d}=t;return f.jsx(IE,{open:e,onClose:n,size:"large",showCloseButton:c,className:yr.dialogWithSmallClose,children:f.jsxs("div",{className:yr.layout,children:[f.jsxs("div",{className:yr.left,children:[f.jsxs("div",{className:yr.copy,children:[f.jsx(pi,{variant:"heading",children:r}),f.jsx(pi,{variant:"subheading",children:a}),f.jsx(pi,{variant:"muted",as:"div",className:yr.description,children:f.jsx(Dl,{className:yr.descriptionScroller,children:f.jsx(Kz,{content:o})})})]}),f.jsxs("div",{className:yr.cta,children:[f.jsx(ps,{type:"button",size:"lg",fullWidth:!0,onClick:i,isLoading:u,children:s}),f.jsx(pi,{variant:"subscript",as:"p",className:yr.disclaimer,children:l})]})]}),f.jsx(SG,{showAboveWidth:"md",children:f.jsx("div",{className:yr.right,children:f.jsx(Lu,{className:yr.mediaPanel,children:f.jsx(RG,{agentName:r,greetingVideoSrc:d,className:yr.agentStill})})})})]})})}const WG={launcherPill:"_launcherPill_1fhyr_1"};function YG(t){const{label:e,onClick:n}=t;return f.jsx("button",{type:"button",className:WG.launcherPill,onClick:n,"data-testid":"ai-coach-pill",children:e})}const A3="__ama_course__",KG="ama_course";function XG(t){var gi,jl,Bl,Ee,Mn,Ul,To,qr,wo,Co,zl,pn,mn,Eo,Ro,Hr,Ao,It,No,Oo,Mo,Do,Fl,_,I,M,ge,Ie,ye;const{sdk:e,shadowHost:n}=t,i=!!e.passivePlanUuid,r=i?((gi=e.client)==null?void 0:gi.selectedPlanUuid)??null:null,a=((jl=e.client)==null?void 0:jl.session)??null,o=!!a&&(i&&!!r||!!((Bl=e.client)!=null&&Bl.selectedPlanUuid)),[s,l]=w.useState(()=>a),[c,u]=w.useState(()=>a!=null&&a.sessionUuid?$G(a.sessionUuid):null),d=(()=>{var q;return a?((q=a.roomId)==null?void 0:q.startsWith("obs-"))&&!c?"course-selection":"pip":r?"start-session":"hidden"})(),[h,p]=w.useState(()=>d),[b,m]=w.useState(!1),[S,g]=w.useState(!1),[y,x]=w.useState(!1),[v,k]=w.useState([]),[T,C]=w.useState(null),[R,A]=w.useState(0),[N,O]=w.useState(!1),[U,W]=w.useState(!1),[L,X]=w.useState(0),[P,G]=w.useState(null),[J,te]=w.useState([]),[Z,F]=w.useState(!1),[ee,$]=w.useState(!1),[ue,B]=w.useState(()=>o),ve=w.useRef(o),j=w.useRef(!1),me=()=>{p(q=>{const K=q==="course-selection",pe=q==="course-outline"&&j.current;return K||pe?(j.current=!1,O(!1),"pip"):q})},be=QG((Mn=(Ee=e.client)==null?void 0:Ee.product)==null?void 0:Mn.widget_url_blacklist),qt=ZG(s),{audioDevices:En}=eW();w.useEffect(()=>{s!=null&&s.sessionUuid&&N3(s.sessionUuid,c)},[c,s==null?void 0:s.sessionUuid]);const{caption:Te}=VG(J,{delayMs:0}),Le=typeof navigator<"u"&&!!((Ul=navigator.mediaDevices)!=null&&Ul.getDisplayMedia),ht=((qr=(To=s==null?void 0:s.room)==null?void 0:To.localParticipant)==null?void 0:qr.isScreenShareEnabled)??!1,lt=q=>{var Se;const K=((Se=e.client)==null?void 0:Se.identity)??q.identity,pe=typeof(K==null?void 0:K.first_name)=="string"?K.first_name.trim():"",je=typeof(K==null?void 0:K.last_name)=="string"?K.last_name.trim():"",ae=typeof(K==null?void 0:K.email)=="string"&&K.email.trim().length>0?K.email.trim():"";return{firstName:pe,lastName:je,email:ae}},hn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe,je].map(Qe=>Qe.trim());return ae.some(Qe=>Qe.length>0)?ae.join(":"):""},fn=q=>{const{firstName:K,lastName:pe,email:je}=lt(q),ae=[K,pe].filter(Boolean).join(" ").trim();return{name:ae.length>0?ae:void 0,email:je.length>0?je:void 0,screenShareSupported:Le}},At=(()=>{if(s!=null&&s.speakingState){if(s.speakingState==="thinking")return"thinking";if(s.speakingState==="busy")return"searching"}})(),tn=((Co=(wo=e.client)==null?void 0:wo.product)==null?void 0:Co.avatar_image_url)||((pn=(zl=e.client)==null?void 0:zl.product)==null?void 0:pn.logo_url)||void 0,Nn=((Eo=(mn=e.client)==null?void 0:mn.product)==null?void 0:Eo.greeting_video_url)||void 0,Ri=JG({sdk:e,session:s,isBlacklisted:be}),$i=!i&&Ri,fe=!!(s??((Ro=e.client)==null?void 0:Ro.session)??null),He=(s==null?void 0:s.clientType)==="meet"?hn(s):"",we=(Ao=(Hr=e.client)==null?void 0:Hr.product)==null?void 0:Ao.assistant_subtitle,ft=typeof we=="string"&&we.trim().length>0?we:"AI Coach",nn=()=>A(q=>q+1),Jn=async()=>{var K,pe;if(!s)return;const q=((pe=(K=s.room)==null?void 0:K.localParticipant)==null?void 0:pe.isScreenShareEnabled)??!1;try{q?await s.setScreenShareEnabled(!1):await s.shareScreen()}catch(je){console.error("[obi-sdk] failed to toggle screen share",je)}finally{nn()}},Ai=w.useRef(null),z=w.useRef(null),oe=w.useRef(!1),le=w.useRef({session:null,sessionUuid:null,started:!1}),Oe=w.useRef(null),Ne=w.useRef(new WeakMap),vt=(q,K)=>{if(!K)return;let pe=Ne.current.get(q);pe||(pe=new Set,Ne.current.set(q,pe)),pe.add(K)},On=q=>{if(!q||Ai.current===q)return;z.current&&(z.current(),z.current=null);const K=()=>nn(),pe=ie=>{u(ie),q!=null&&q.sessionUuid&&N3(q.sessionUuid,ie),Array.isArray(ie.stepNames)&&ie.stepNames.length>0&&ie.totalSteps>0&&p(bt=>bt==="pip"||bt==="course-outline"?bt:bt==="course-selection"?(j.current=!0,"course-outline"):bt)},je=ie=>{k(ie.courses),p("course-selection"),j.current=!1,u(null),q!=null&&q.sessionUuid&&O3(q.sessionUuid),C(null),W(!1)},ae=(ie,Ye)=>{},Se=ie=>{ie.isAgent},Qe=ie=>{G(ie),X(Date.now())},Xt=ie=>{if(!ie){G(null);return}G(ie),X(Date.now())};q.on("stateChanged",K),q.on("speakingStateChanged",K),q.on("paused",K),q.on("unpaused",K),q.on("chatMessagesChanged",K),q.on("chatMessageReceived",Se),q.on("courseProgress",pe),q.on("courseSelection",je),q.on("transcript",ae),q.on("screenCaptured",Qe),q.on("screenCaptureNotification",Xt),q.on("captions",te),q.on("introductionComplete",me),Ai.current=q,z.current=()=>{q.off("stateChanged",K),q.off("speakingStateChanged",K),q.off("paused",K),q.off("unpaused",K),q.off("chatMessagesChanged",K),q.off("chatMessageReceived",Se),q.off("courseProgress",pe),q.off("courseSelection",je),q.off("transcript",ae),q.off("screenCaptured",Qe),q.off("screenCaptureNotification",Xt),q.off("captions",te),q.off("introductionComplete",me)}},mi=q=>{var pe;return q?((pe=q.roomId)==null?void 0:pe.startsWith("obs-"))&&!c?"course-selection":"pip":"hidden"};w.useEffect(()=>{const q=()=>{Oe.current&&(Oe.current(),Oe.current=null)},K=ae=>{if(ae.clientType!=="meet")return;if(le.current.session&&le.current.session===ae||!!le.current.sessionUuid&&!!ae.sessionUuid&&le.current.sessionUuid===ae.sessionUuid){if(le.current.started||Oe.current)return}else le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!1},q();const Qe=async()=>{le.current={session:ae,sessionUuid:ae.sessionUuid??null,started:!0};const Ye=hn(ae);Ye&&vt(ae,Ye);try{await ae.sendHumanJoined(fn(ae))}catch(bt){console.error("[obi-sdk] failed to send human_joined handshake",bt)}},Xt=(Ye,bt)=>{Ye==="connecting"||Ye==="error"||(q(),Qe())},ie=ae.state;if(ie&&ie!=="connecting"&&ie!=="error"){Qe();return}ae.on("stateChanged",Xt),Oe.current=()=>{ae.off("stateChanged",Xt)}},pe=ae=>{var Se,Qe,Xt,ie;if(ae)if((Se=e.client)!=null&&Se.session)p(mi(((Xt=e.client)==null?void 0:Xt.session)??null));else{const bt=!!e.passivePlanUuid,Dn=bt&&!!((Qe=e.client)!=null&&Qe.selectedPlanUuid);if(bt&&!Dn)return;p("start-session")}else(ie=e.client)!=null&&ie.session||p("hidden")},je=()=>nn();if(e.on("showMenu",pe),e.on("configUpdated",je),e.client){e.client.session&&(l(e.client.session),On(e.client.session),p(mi(e.client.session))),e.client.on("sessionStarted",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1);const Qe=ve.current;ve.current=!1,Qe?(j.current=!0,p("course-outline")):(j.current=!1,p(mi(Se))),ta().track("session-started",{planId:Se.planId}),K(Se)}),e.client.on("sessionResumed",Se=>{l(Se),On(Se),oe.current=!1,m(!1),g(!1),x(!1),W(!1),j.current=!1,p(mi(Se)),K(Se)});const ae=()=>{var Xt;const Se=(Xt=e.client)==null?void 0:Xt.session;Se!=null&&Se.sessionUuid&&O3(Se.sessionUuid);const Qe=Ai.current;z.current&&(z.current(),z.current=null),l(null),Ai.current=null,m(!1),g(!1),x(!1),W(!1),B(!1),ve.current=!1,j.current=!1,q(),le.current={session:null,sessionUuid:null,started:!1},Qe&&Ne.current.delete(Qe),oe.current||p("hidden")};e.client.on("sessionStopped",ae),e.client.on("sessionShutdown",ae),e.client.on("stateChanged",nn)}return()=>{e.off("showMenu",pe),e.off("configUpdated",je),z.current&&z.current(),q()}},[e]),w.useEffect(()=>{const q=s;if(!q||q.clientType!=="meet")return;const K=q.state;if(!K||K==="connecting"||K==="error"||!He)return;const pe=Ne.current.get(q);pe!=null&&pe.has(He)||(vt(q,He),q.sendHumanJoined(fn(q)).catch(je=>console.error("[obi-sdk] failed to send human_joined update",je)))},[Le,He,s,s==null?void 0:s.state]),w.useLayoutEffect(()=>{var q,K;(K=(q=e.client)==null?void 0:q.product)!=null&&K.primary_color&&n.style.setProperty("--obi-color-primary",e.client.product.primary_color)},[(No=(It=e.client)==null?void 0:It.product)==null?void 0:No.primary_color,n]),w.useEffect(()=>{if(i&&!be&&!fe){if(!r){p("hidden");return}p("start-session")}},[fe,i,be,r]),w.useEffect(()=>{var Xt,ie;$(!1);const q=(Xt=e.client)==null?void 0:Xt.api,K=(ie=e.client)==null?void 0:ie.product;if(!q||!K)return;const pe=(K==null?void 0:K.uuid)??(K==null?void 0:K.product_uuid),je=(K==null?void 0:K.slug)??(K==null?void 0:K.product_slug),ae=(K==null?void 0:K.id)??(K==null?void 0:K.product_id),Se={};if(pe?Se.product_uuid=pe:je?Se.product_slug=je:ae!=null&&(Se.product_id=String(ae)),Object.keys(Se).length===0)return;let Qe=!1;return q.getFeatureFlags(Se).then(Ye=>{if(Qe)return;const Dn=((Ye==null?void 0:Ye.data)??[]).find(Xb=>(Xb==null?void 0:Xb.slug)===KG);if(!Dn)return;const{user_enabled:Zn,product_enabled:Pn,global_enabled:_r}=Dn;let Kb=!!_r;Pn!=null&&(Kb=!!Pn),Zn!=null&&(Kb=!!Zn),$(Kb)}).catch(Ye=>{console.error("[obi-sdk] failed to load AMA feature flag",Ye)}),()=>{Qe=!0}},[(Oo=e.client)==null?void 0:Oo.api,(Mo=e.client)==null?void 0:Mo.product]);const ka=(c==null?void 0:c.stepNames.map((q,K)=>({id:`step-${K+1}`,title:q})))??[],$n=(c==null?void 0:c.currentStep)??null,Qn=!0,Qi=(q,K)=>{s==null||s.say(`Can we jump to the section about ${K.title}?`)};if(be||i&&!r&&!fe)return null;if(h==="hidden")return $i?f.jsx(YG,{label:ft,onClick:()=>{e.updateShowMenu(!0)}}):null;if(h==="start-session"){const q=(Do=e.client)==null?void 0:Do.product,K=(Fl=e.client)==null?void 0:Fl.selectedPlan,pe=i&&!!r,je=i&&!!r||!!((_=e.client)!=null&&_.selectedPlanUuid),ae=(q==null?void 0:q.agent_name)||"Obi",Se=(q==null?void 0:q.assistant_subtitle)||"AI Assistant",Qe=pe&&(K==null?void 0:K.description)||(q==null?void 0:q.assistant_description)||"";return f.jsx(GG,{open:!0,onClose:()=>{m(!1),p("hidden")},onStart:()=>{ve.current=je,B(je),m(!0),e.startSession({withMicrophone:!0})},agentName:ae,agentSubtitle:Se,description:Qe,showCloseButton:!1,startLabel:"Start Session",isStarting:b,greetingVideoSrc:Nn})}if(h==="course-selection"){const q=(I=s==null?void 0:s.roomId)==null?void 0:I.startsWith("obs-"),K=((M=e.client)==null?void 0:M.plans)||[],pe=q&&v.length>0,je=pe?v.slice().sort((ie,Ye)=>ie.order!==void 0&&Ye.order!==void 0?ie.order-Ye.order:ie.order!==void 0?-1:Ye.order!==void 0?1:ie.name.localeCompare(Ye.name)).map(ie=>({id:ie.uuid,title:ie.name,description:ie.description||ie.overview||"",status:ie.completed?"completed":"available",duration:typeof ie.duration=="number"?`${ie.duration} min`:ie.duration})):K.map(ie=>{var Ye,bt;return{id:ie.uuid,title:ie.name,description:ie.description,status:(bt=(Ye=e.client)==null?void 0:Ye.planIsCompleted)!=null&&bt[K.indexOf(ie)]?"completed":"available",duration:ie.estimated_duration?`${ie.estimated_duration} min`:void 0}});pe&&ee&&je.push({id:A3,title:"Ask me anything",description:"Ask questions before choosing a course.",status:"available"});const ae=(s==null?void 0:s.languageCodes)||[],Se=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,Qe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:ae,selectedLanguage:Se,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},Xt=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ge=s==null?void 0:s.room)==null?void 0:ge.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0;return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:je,controlBarProps:Qe,coursePanelProps:{selectedCourseIds:T?[T]:void 0,onCourseToggle:async ie=>{var Ye,bt,Dn,Zn;if(pe){if(ie===A3){try{await((Ye=s==null?void 0:s.say)==null?void 0:Ye.call(s,"Please start an AMA session."))}catch(_r){console.error("[obi-sdk] failed to start AMA course",_r)}return}const Pn=v.find(_r=>_r.uuid===ie);if(Pn){C(ie);try{await((bt=s==null?void 0:s.say)==null?void 0:bt.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),C(null)}}}else{const Pn=K.find(_r=>_r.uuid===ie);if(Pn){(Dn=e.client)==null||Dn.selectPlan(Pn),p("pip");try{await((Zn=s==null?void 0:s.say)==null?void 0:Zn.call(s,`I'd like to take the ${Pn.name} course.`))}catch(_r){console.error("[obi-sdk] failed to send course selection",_r),p("course-selection")}}}}},rightPanel:Xt,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="course-outline"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe={audioDevices:En,currentMicrophoneId:(s==null?void 0:s.preferredMicrophoneDeviceId)||null,isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isScreenShareActive:ht,widgetState:y?"chat":null,canPublishData:!0,browserSupportsScreenSharing:Le,onMicDeviceSelect:async ie=>{e.client&&(e.client.preferredMicrophoneDeviceId=ie),s&&ie&&await s.switchMicrophoneDevice(ie),nn()},onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>{x(!y)},onLeave:()=>{s==null||s.stop()},onScreenShareToggle:Jn,languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0,...y?{screenShareButtonVariant:"compact"}:{}},je=y?f.jsx(k3,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((Ie=s==null?void 0:s.room)==null?void 0:Ie.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},onClose:()=>x(!1)}):void 0,ae=!!c,Se=!ue,Qe=async()=>{if(!(!(s!=null&&s.endCourse)||U)){W(!0);try{await s.endCourse()}catch(ie){console.error("[obi-sdk] failed to end course",ie),W(!1)}}},Xt=f.jsx(gV,{steps:ka,currentStep:$n,hideTrailingConclusionStep:Qn,onStepClick:Qi,showBackToCourses:Se,...Se?{onBackToCoursesConfirm:Qe,backToCoursesDisabled:U}:{}});return f.jsx(R3,{open:!0,onClose:()=>s==null?void 0:s.stop(),courses:[],controlBarProps:pe,middlePanel:Xt,rightPanel:je,isCourseOutlineOpen:ae,onReturnToPiP:ae?()=>p("pip"):void 0,avatarImageSrc:tn,avatarAudioPower:qt,avatarStatus:At,captionsText:Te})}if(h==="pip"){const q=(s==null?void 0:s.languageCodes)||[],K=(s==null?void 0:s.selectedLanguage)||(s==null?void 0:s.defaultLanguageCode)||null,pe=280,je=250,ae=16,Se={x:window.innerWidth-pe-ae,y:window.innerHeight-je-ae},Qe={isMicrophoneEnabled:!S&&((s==null?void 0:s.isMicShared)??!1),isChatOpen:y,isScreenShareActive:ht,onMicToggle:async()=>{s!=null&&s.isMicShared?S?(s.unmuteMicrophone(),g(!1)):(s.muteMicrophone(),g(!0)):await(s==null?void 0:s.shareMicrophone())},onChatToggle:()=>x(ie=>!ie),onScreenShareToggle:Jn,onLeave:()=>{s==null||s.stop()},languages:q,selectedLanguage:K,defaultLanguageCode:s==null?void 0:s.defaultLanguageCode,isMultilingual:(s==null?void 0:s.isMultilingual)??!1,onLanguageChange:ie=>{s==null||s.setLanguage(ie)},isLanguageSelectorEnabled:!0},Xt=y?f.jsx(BV,{messages:(s==null?void 0:s.chatMessages)??[],localIdentity:((ye=s==null?void 0:s.room)==null?void 0:ye.localParticipant.identity)??(typeof(s==null?void 0:s.identity)=="string"?s.identity:null),onSend:async ie=>{var Ye,bt,Dn,Zn;if(s){const Pn=Date.now();s.appendChatMessage({timestamp:Pn,message:ie,from:{identity:((bt=(Ye=s.room)==null?void 0:Ye.localParticipant)==null?void 0:bt.identity)??null,name:((Zn=(Dn=s.room)==null?void 0:Dn.localParticipant)==null?void 0:Zn.name)??null},isAgent:!1}),await s.say(ie)}},testId:"pip-chat-panel"}):void 0;return f.jsx(Zq,{initialPosition:Se,onExit:()=>{j.current=!1,p("course-outline")},controlBarProps:Qe,isCourseOutlineSelected:N&&!!c,onCourseOutlineToggle:c?()=>{O(ie=>!ie)}:void 0,isCaptionsEnabled:Z,onCaptionsToggle:()=>F(ie=>!ie),courseOutline:c?{steps:ka,currentStep:$n,onStepClick:Qi,hideTrailingConclusionStep:Qn}:void 0,messagesPanel:Xt,avatarFallbackProps:{audioPower:qt,imageSrc:tn,status:At,captionsText:Te},screenshotUrl:P,cameraShotTrigger:L})}return null}function JG(t){var l,c;const{sdk:e,session:n,isBlacklisted:i}=t;if(i)return!1;const r=e.client;if(!r||r.state!=="ready"||(n??r.session??null))return!1;let o=e.isActive;return((l=r.product)==null?void 0:l.name)==="Canibuild"&&(o=!0),!(!o||(e.widgetDisplay??((c=r.product)==null?void 0:c.widget_display))==="invisible")}function N3(t,e){if(!t)return;const n=`obi-widget-course-progress-${t}`;if(e===null){localStorage.removeItem(n);return}try{const i={...e,timestamp:Date.now()};localStorage.setItem(n,JSON.stringify(i))}catch(i){console.error("[obi-sdk] failed to save course progress",i)}}function $G(t){if(!t)return null;const e=`obi-widget-course-progress-${t}`;try{const n=localStorage.getItem(e);if(!n)return null;const i=JSON.parse(n);if(typeof i.currentStep!="number"||typeof i.totalSteps!="number"||!Array.isArray(i.stepNames))return console.warn("[obi-sdk] invalid course progress data, clearing",i),localStorage.removeItem(e),null;const r=24*60*60*1e3;return i.timestamp&&Date.now()-i.timestamp>r?(localStorage.removeItem(e),null):{currentStep:i.currentStep,totalSteps:i.totalSteps,stepNames:i.stepNames}}catch(n){return console.error("[obi-sdk] failed to load course progress",n),localStorage.removeItem(e),null}}function O3(t){if(!t)return;const e=`obi-widget-course-progress-${t}`;try{localStorage.removeItem(e)}catch(n){console.error("[obi-sdk] failed to clear course progress",n)}}function QG(t){const[e,n]=w.useState(()=>fs(t));return w.useEffect(()=>{n(fs(t))},[t]),w.useEffect(()=>{const i=()=>{n(fs(t))};return window.addEventListener("popstate",i),window.addEventListener("hashchange",i),()=>{window.removeEventListener("popstate",i),window.removeEventListener("hashchange",i)}},[t]),e}function ZG(t){const[e,n]=w.useState(0),i=w.useRef(null),r=w.useRef(0),a=w.useRef(0);return w.useEffect(()=>{if(!t){n(0),r.current=0,a.current=0;return}const o=()=>{const s=t.audioSpectrum();let l=0;if(s&&s.length>0){let b=0;for(let m=0;m<s.length;m++)b+=s[m];l=Math.min(1,Math.max(0,b/s.length))}const c=r.current,d=l>=c?.7:.15,h=c*d+l*(1-d);r.current=h;const p=h<.05?0:Math.min(1,h);Math.abs(p-a.current)>.01&&(a.current=p,n(p)),i.current=requestAnimationFrame(o)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[t]),e}function eW(){const[t,e]=w.useState({audioDevices:[]});return w.useEffect(()=>{var i;if(typeof navigator>"u"||!((i=navigator.mediaDevices)!=null&&i.enumerateDevices))return;const n=()=>{navigator.mediaDevices.enumerateDevices().then(r=>{e({audioDevices:r.filter(a=>a.kind==="audioinput")})})};return n(),navigator.mediaDevices.addEventListener("devicechange",n),()=>navigator.mediaDevices.removeEventListener("devicechange",n)},[]),t}function M3(){const t=window.location.hostname;return t.endsWith(".getcor.ai")||t.endsWith(".getcor.io")||t.endsWith(".clinic1.com")||t==="app.canibuild.com"||t==="getcor.ai"||t==="getcor.io"||t==="localhost"||t==="127.0.0.1"||t==="::1"}const D3=M3();function tW(t){if(document.querySelector("#obi-host")||document.querySelector("obi-widget"))return;nW();const e=document.createElement("div");e.id="obi-host",e.style.position="fixed",e.style.zIndex="9999",document.body.appendChild(e);const n=e.attachShadow({mode:"open"}),i=document.createElement("div");i.id="obi-container",n.appendChild(i);const r=new CSSStyleSheet;r.replaceSync(TB);const a=[r];if(D3){const s=new CSSStyleSheet;s.replaceSync(xB),a.push(s);const l=new CSSStyleSheet;l.replaceSync(kB),a.push(l)}else{const s=new CSSStyleSheet;s.replaceSync(SB),a.push(s)}n.adoptedStyleSheets=a;const o=_B.createRoot(i);D3?o.render(f.jsx(XG,{sdk:t,shadowHost:e})):o.render(f.jsx(EB,{sdk:t,shadowHost:e})),console.log("[obi-sdk] widget mounted")}function nW(){P3("https://fonts.cdnfonts.com/css/satoshi"),P3("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap")}function P3(t){const e=document.createElement("link");e.href=t,e.rel="stylesheet",document.head.appendChild(e)}const L3="49206C6F7665204F6269_session",I3="obi-url-params",Yb="obi-client-heartbeat",iW=5e3,j3=4e4,B3=15e3;function rW(){return M3()?"meet":"sdk"}class aW extends _p{constructor(e){super(),this.client=null,this.isActive=!1,this.primaryColour="#9500FF",this.passivePlanUuid=null,this.commandLog=[],this.commandQueue=[],this._resumed=!1,this.heartbeatInterval=null,this.dispatchCommand=(n,i)=>{var r,a,o,s,l;switch(this.commandLog.push({commandType:n,args:i}),n){case"update":this.updateConfig(i);break;case"startSession":{if(i!=null&&i.planUuid){const c=(((r=this.client)==null?void 0:r.plans)||[]).find(u=>u.uuid===i.planUuid)||null;if(!c){console.warn("[obi] startSession command requires a valid planUuid",i);return}(o=(a=this.client)==null?void 0:a.selectPlan)==null||o.call(a,c)}this.updateActive(!0);break}case"stopSession":(l=(s=this.client)==null?void 0:s.stopSession)==null||l.call(s);break;case"say":this.say(i);break;default:console.warn("[obi] unknown command",{commandType:n,args:i})}},e&&this.createClient(e),this.parsePassiveParams()}async createClient(e){if(this.client){this.client.appToken!==e&&console.warn("[obi] client already exists with different app token");return}let n=null;const i=rW(),r=this.load();if(r)try{const a=this.parsePersistedSessionMetadata(r),o=a&&this.isPersistedSessionStale(a);o!=null&&o.stale&&a?(this.trackStaleSessionDiscard(a.sessionUuid,o.ageMs,o.reason),this.clearCachedClient()):(n=bh.deserialise(r,e,i,{apiBaseUrl:"https://staging.coragents.ai",captureScreen:this.captureScreen.bind(this)}),n?this._resumed=!0:this.clearCachedClient())}catch(a){console.error("[obi] error loading cached client",a),this.clearCachedClient()}n||(n=new bh(e,i,{apiBaseUrl:"https://staging.coragents.ai",captureScreen:this.captureScreen.bind(this)})),this.client=n,this.client.session&&this.startHeartbeat(this.client.session.sessionUuid),this.client.on("stateChanged",a=>{var o,s,l,c,u,d,h,p,b,m;a==="ready"&&this.updateConfig({isActive:((o=window==null?void 0:window.obiWidgetConfig)==null?void 0:o.isActive)??((s=this.client)==null?void 0:s.showWidget),primaryColour:((c=(l=this.client)==null?void 0:l.product)==null?void 0:c.primary_color)||"#9500FF",widgetDisplay:((u=window==null?void 0:window.obiWidgetConfig)==null?void 0:u.widgetDisplay)||((h=(d=this.client)==null?void 0:d.product)==null?void 0:h.widget_display)||"regular",completedWidgetDisplay:((p=window==null?void 0:window.obiWidgetConfig)==null?void 0:p.completedWidgetDisplay)||((m=(b=this.client)==null?void 0:b.product)==null?void 0:m.completed_widget_display)||"regular"})}),this.client.on("sessionStarted",()=>{var a,o;this.save(),this.startHeartbeat(((o=(a=this.client)==null?void 0:a.session)==null?void 0:o.sessionUuid)||null),this.passivePlanUuid=null}),this.client.on("sessionStopped",()=>{this.clearCachedClient(),this.passivePlanUuid=null}),this.client.on("sessionShutdown",()=>{this.clearCachedClient()}),this.client.on("trackEvent",(a,o)=>{}),this.client.session&&(this.client.session.isPaused,this.client.resumeSession(a=>{a.on("stateChanged",o=>{o!=="disconnecting"&&o!=="disconnected"&&o!=="error"&&o!=="connecting"&&this.save()}),a.on("paused",()=>{this.save()}),a.on("unpaused",()=>{this.save()})}))}_maybeActOnServerEngagement(){var s;const e=this.client;if(!e||e.state!=="ready")return;const n=e.product,i=(s=e.engagement)==null?void 0:s.style;if(!i||n&&fs(n.widget_url_blacklist||[])||!e.showWidget)return;const r=e.plans||[],a=e.planIsCompleted||[],o=r.length>0&&a.filter(Boolean).length===r.length;if(!(r.length===0||o)){if(i==="modal"){const l=a.findIndex(u=>!u),c=l>=0?r[l]:null;c&&e.selectPlan(c)}else i==="popover"&&setTimeout(()=>{this.showMessage("Don't forget to complete your onboarding",{autoCloseMs:1e4})},1e3);try{ta().track("engagement-prompt-shown",{style:i})}catch{}}}async initialise(e={}){var n;this.commandQueue=e.queuedCommands||[],this._resumed?(this._resumed=!1,this.dispatchCommandQueue()):this.client?this.client.initialise({planUuid:this.passivePlanUuid||void 0,identity:((n=window==null?void 0:window.obiWidgetConfig)==null?void 0:n.user)||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}this.dispatchCommandQueue()}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}):this.dispatchCommandQueue()}async updateConfig(e){await this.updateAppToken(e.apiKey),this.updateActive(e.isActive),this.updatePrimaryColour(e.primaryColour),this.updateWidgetDisplay(e.widgetDisplay),this.updateCompletedWidgetDisplay(e.completedWidgetDisplay),this.updateWidgetPosition(e.widgetPosition),await this.updateIdentity(e.user),this.updateShowMenu(e.showMenu),this.emit("configUpdated")}async updateAppToken(e){var n;e===void 0||e==((n=this.client)==null?void 0:n.appToken)||(this.passivePlanUuid,await this.createClient(e),this.client&&await this.client.initialise({planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(i=>{console.error("[obi] error initialising client",i),this.emit("error",i)}))}updateActive(e){e===void 0||e==this.isActive||(this.isActive=e)}updatePrimaryColour(e){e===void 0||e==this.primaryColour||(this.primaryColour=e)}updateWidgetDisplay(e){e===void 0||e==this.widgetDisplay||(this.widgetDisplay=e)}updateCompletedWidgetDisplay(e){e===void 0||e==this.completedWidgetDisplay||(this.completedWidgetDisplay=e)}updateWidgetPosition(e){e===void 0||e==this.widgetPosition||(this.widgetPosition=e)}async updateIdentity(e){var i,r;if(e===void 0||e==((i=this.client)==null?void 0:i.identity))return;(r=this.client)==null||r.identity;let n=e?{...e,extra:{...e,...(e==null?void 0:e.extra)||{}}}:void 0;await this.client.initialise({identity:n,planUuid:this.passivePlanUuid||void 0}).then(()=>{this.emit("initialised");try{this._maybeActOnServerEngagement()}catch{}}).catch(a=>{console.error("[obi] error initialising client",a),this.emit("error",a)}),e!=null&&e.email&&ta().identify((e==null?void 0:e.email)||"",n)}updateShowMenu(e){e!==void 0&&this.emit("showMenu",e)}async say(e){var n,i,r;await((r=(i=(n=this.client)==null?void 0:n.session)==null?void 0:i.say)==null?void 0:r.call(i,e))}async startSession(e){await this.client.startSession(this.client.selectedPlanUuid||null,n=>{n.on("stateChanged",i=>{i!=="disconnecting"&&i!=="disconnected"&&i!=="error"&&i!=="connecting"&&this.save()}),n.on("paused",()=>{this.save()}),n.on("unpaused",()=>{this.save()})},e)}dispatchCommandQueue(){const e=this.commandQueue;this.commandQueue=[],e.forEach(n=>{try{this.dispatchCommand(n[0],n[1]||[])}catch(i){console.error("[obi] error dispatching command",i)}})}parsePassiveParams(){if(this.passivePlanUuid){this.passivePlanUuid;return}let e={};e=JSON.parse(localStorage.getItem(I3)||"{}"),Object.keys(e).length===0&&new URLSearchParams(window.location.search).forEach((a,o)=>{e[o]=a});const n=e[L3];if(!n)return null;const i=new URL(window.location.href);i.searchParams.delete(L3),window.history.replaceState({},"",i.toString()),i.toString(),localStorage.removeItem(I3),this.passivePlanUuid=n}mountWidget(){tW(this)}showMessage(e,n){try{this.emit("showMessage",{text:e,autoCloseMs:n==null?void 0:n.autoCloseMs})}catch{}}async captureScreen(){try{await fO(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.text_segmentation)),await sR(async()=>(this.graphemes||(this.graphemes=await this.client.api.getGraphemes()),this.graphemes.data.css_line_breaks))}catch(e){throw console.error("[obi] error initialising unicode trie",e),e}try{return(await GN(document.documentElement,{useCORS:!0,allowTaint:!0,foreignObjectRendering:!0})).toDataURL("image/png")}catch(e){throw console.error("[obi] error capturing screen",e),e}}save(){var n;const e=((n=this.client)==null?void 0:n.serialise())||"";localStorage.setItem("obi-client",e)}load(){return localStorage.getItem("obi-client")}parsePersistedSessionMetadata(e){const n=JSON.parse(e),i=this.parseTimestampMs(n.serialisedAt);if(!n.session)return null;let r=null;if(typeof n.session=="string")try{r=JSON.parse(n.session)}catch{return null}else typeof n.session=="object"&&(r=n.session);return r?{sessionUuid:typeof r.sessionUuid=="string"?r.sessionUuid:null,startedAtMs:this.parseTimestampMs(r.startedAt),serialisedAtMs:i}:null}isPersistedSessionStale(e){const n=Date.now(),i=this.readHeartbeat();if(i&&i.sessionUuid&&e.sessionUuid&&i.sessionUuid===e.sessionUuid){const s=Math.max(0,n-i.updatedAtMs);return{stale:s>j3,reason:s>j3?"heartbeat-stale":"heartbeat-fresh",ageMs:s}}const r=[e.serialisedAtMs,e.startedAtMs].filter(s=>typeof s=="number"&&Number.isFinite(s));if(r.length===0)return{stale:!0,reason:"fallback-missing-timestamps",ageMs:null};const a=Math.max(...r),o=Math.max(0,n-a);return{stale:o>B3,reason:o>B3?"fallback-too-old":"fallback-recent",ageMs:o}}parseTimestampMs(e){if(typeof e=="number")return e;if(typeof e=="string"){const n=Number(e);if(!Number.isNaN(n))return n;const i=Date.parse(e);return Number.isFinite(i)?i:null}return null}readHeartbeat(){const e=localStorage.getItem(Yb);if(!e)return null;try{return JSON.parse(e)}catch{return null}}trackStaleSessionDiscard(e,n,i){try{ta().track("stale-session-discarded",{sessionUuid:e||void 0,ageMs:n??void 0,reason:i})}catch{}}startHeartbeat(e){if(!e){this.clearHeartbeat();return}this.stopHeartbeat(),this.writeHeartbeat(e),this.heartbeatInterval=setInterval(()=>{this.writeHeartbeat(e)},iW)}stopHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}writeHeartbeat(e){const n={sessionUuid:e,updatedAtMs:Date.now()};localStorage.setItem(Yb,JSON.stringify(n))}clearHeartbeat(){this.stopHeartbeat(),localStorage.removeItem(Yb)}clearCachedClient(){this.clearHeartbeat(),localStorage.removeItem("obi-client")}}async function U3(t,e){let n;try{n=window}catch{console.warn("[obi] no window object found"),n={}}return oW({appToken:t,window:n,init:e})}async function oW({appToken:t,window:e,init:n}){var a,o;if(e.obi){console.warn("[obi] obi object already found on window, skipping");return}n&&n(),t||(t=(a=e==null?void 0:e.obiWidgetConfig)==null?void 0:a.apiKey);let i;try{i=((o=e.ObiSDK)==null?void 0:o.q)||[]}catch{i=[]}const r=new aW(t);return e.ObiSDK=r.dispatchCommand,await r.initialise({queuedCommands:i}),e.obi=r,r.mountWidget(),r}function z3(){}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{U3(void 0,z3)}):U3(void 0,z3)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obi-sdk",
3
- "version": "0.19.54",
3
+ "version": "0.19.55-beta.0",
4
4
  "description": "JavaScript SDK for Obi",
5
5
  "type": "module",
6
6
  "main": "dist/obi-sdk.umd.js",