@deepdesk/deepdesk-sdk 11.1.1-beta.0 → 11.1.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.iife.js +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -6,6 +6,6 @@ Try polyfilling it using "@formatjs/intl-pluralrules"
|
|
|
6
6
|
c6.8-6.8,15.4-10.2,24.7-10.2h11.9v-70c0-44.4,16.2-82.8,47.8-115.2S212.1,0,256.4,0s82.8,16.2,115.2,47.8
|
|
7
7
|
c32.4,32.4,47.8,70,47.8,115.2v70h11.9c9.4,0,17.9,3.4,24.7,10.2C462.1,250,465.5,257.7,465.5,267.9z`})})});import{jsx as pl}from"react/jsx-runtime";var nf={green:"#0A5E52",pink:"#CD8EF2",red:"#DF341D",yellow:"#DEBD00"},gl=({className:t,color:e})=>pl("svg",{className:t,viewBox:"0 0 345 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:pl("path",{d:"M172.03 0.0199966H0V86.03C47.5 86.03 86 124.54 86 172.04C86 124.54 124.51 86.03 172.01 86.03C219.51 86.03 258.03 124.54 258.03 172.04C258.03 219.54 219.52 258.05 172.01 258.05C124.5 258.05 86 219.54 86 172.04C86 219.54 47.5 258.05 0 258.05V344.06H172.03C267.04 344.06 344.06 267.04 344.06 172.03C344.06 77.02 267.04 0 172.03 0V0.0199966Z",fill:nf[e||"pink"]})});var ml={root:"j",text:"q",isLoggedIn:"Qe",isLoggedOut:"oo",icon:"Ve",logo:"We",lock:"Ze"};var $s={};Q($s,{enUS:()=>rf,nlNL:()=>af});var rf={signin:[{type:0,value:"Sign in to "},{type:1,value:"productName"}],search:[{type:1,value:"productName"},{type:0,value:" Search"}]},af={signin:[{type:0,value:"Log in bij "},{type:1,value:"productName"}],search:[{type:1,value:"productName"},{type:0,value:" Zoeken"}]};import{useDispatch as df}from"react-redux";import{jsx as qs,jsxs as fl}from"react/jsx-runtime";var hl=({onLogIn:t})=>{let e=R($s),o=C("floatingMenu"),n=C("productName"),s=df(),r=cf(W),i=h("FloatingMenu",ml);if(r===null||o===!1)return null;let a=()=>{r===!0?s(ee(!0)):t()};return fl("button",{className:lf(i.root,{[i.isLoggedIn]:r,[i.isLoggedOut]:!r}),onClick:a,children:[qs("div",{className:i.text,children:e(r?"search":"signin",{productName:n})}),fl("div",{className:i.icon,children:[qs(gl,{className:i.logo,color:"pink"}),r===!1&&qs(ul,{className:i.lock})]})]})};import{useEffect as Mf,useRef as Nf}from"react";import{connect as Of,useDispatch as _f,useSelector as an}from"react-redux";import{useEffect as uf}from"react";function xt(t){uf(()=>{let e=o=>{o.isWithinRoot||t(o)};return document.body.addEventListener("mouseup",e),()=>{document.body.removeEventListener("mouseup",e)}},[t])}function Je(t){t.addEventListener("mouseup",e=>{e.isWithinRoot=!0},!0)}function bt(t){let{showMidSentenceSuggestions:e,showSuggestionsBeforePattern:o,showSuggestionsAfterPattern:n}=t.settings,{text:s,selection:r}=t.input.userCommitted;return r.start!==r.end?!1:r.end>=s.length?!0:e?o&&new RegExp(o).test(s.substring(r.end))||n&&new RegExp(n).test(s.substring(0,r.end))?!0:o===!1&&n===!1:!1}import{createSlice as pf}from"@reduxjs/toolkit";var gf={showTabHint:!1,inputHasFocus:!1,overlayCollapsed:!1,openOverlayWhenTyping:!1,overlayCollapsedUserOverwrite:!1};var nn=({ui:t})=>t.overlayCollapsed;var yl=pf({name:"ui",initialState:gf,reducers:{setShowTabHint(t,e){t.showTabHint=e.payload},setInputHasFocus(t,e){t.overlayCollapsedUserOverwrite!==!0&&(e.payload===!0&&(t.overlayCollapsed=!1),t.inputHasFocus=e.payload)},setOverlayCollapsed(t,e){e.payload.collapse===!1&&(t.openOverlayWhenTyping=!1),!(e.payload.skipWhenInputFocus&&t.inputHasFocus)&&(t.overlayCollapsed=e.payload.collapse)},setOpenOverlayWhenTyping(t,e){t.openOverlayWhenTyping=e.payload},setOverlayCollapsedUserOverwrite(t,e){t.overlayCollapsedUserOverwrite=e.payload,t.overlayCollapsed=e.payload}}}),{setShowTabHint:eo,setInputHasFocus:Gs,setOverlayCollapsed:De,setOpenOverlayWhenTyping:vl,setOverlayCollapsedUserOverwrite:Sl}=yl.actions,xl=yl.reducer;import{Fragment as Pf,useMemo as If}from"react";import{Interweave as yf}from"interweave";import{useEffect as vf,useMemo as Sf,useRef as xf}from"react";import{useDispatch as bf,useSelector as Cf}from"react-redux";import{useEffect as mf}from"react";function bl(t,e,o){mf(()=>{let n=t.current;return n?(n.addEventListener(e,o),()=>{n.removeEventListener(e,o)}):()=>{}},[t,e,o])}var Cl={root:"_e",actions:"oi",badge:"ei",formattedText:"eo"};import{jsx as sn,jsxs as Rf}from"react/jsx-runtime";var wf=["search","personal-collection-search","search-autocomplete"];function Tf(t,e,o,n={}){let s="";return wf.includes(e)?s=na(Cs(t,o,{stripAgentPart:!0}),n.searchKeywords??[o]):s=Cs(t,o,n),n.placeholders===!0&&(s=sa(s)),s}var Ef=()=>{},kf=({index:t,selected:e,suggestion:o,onFeedback:n})=>{let s=C("inlineSuggestions"),r=Cf(pt),i=bf(),a=h("TextSuggestion",Cl),l=xf(null);vf(()=>{let d=setTimeout(()=>{i(ci({text:o.text,suggestion:o}))},500);return()=>{clearTimeout(d)}},[o]),bl(l,"click",()=>{i(Le(t)),i(ge({suggestion:o,text:o.text,eventMetrics:{inputType:"mouse"},replace:"until-selection-end"}))});let c=Sf(()=>Tf(o.text,o.source,r,{stripAgentPart:s,placeholders:!0,searchKeywords:o.searchKeywords}),[s,o.text,o.source,r,o.searchKeywords]);return o.source==="gpt"&&!s?null:Rf("div",{className:a.root,onMouseEnter:()=>i(Le(t)),children:[sn(O,{ref:l,as:"button","data-testid":"suggestions-overlay-item",selected:e,onClick:Ef,children:sn(yf,{containerTagName:"div",noWrap:!1,tagName:"span",className:a.formattedText,content:c})}),e&&n&&sn("div",{className:a.actions,children:sn(Xo,{onFeedback:()=>n(o),suggestion:o.text})})]})},wl=kf;import{jsx as Tl}from"react/jsx-runtime";var Af=({onFeedback:t,suggestions:e,selectedIndex:o,reverse:n})=>{let s=If(()=>{let r=e.map((i,a)=>Tl(wl,{index:a,selected:a===o,suggestion:i,onFeedback:t},`${i.text}-${i.source}`));return n?r.reverse():r},[e,o,n]);return Tl(Pf,{children:s})},rn=Af;var El={root:"ii",paper:"ri"};import{jsx as ln}from"react/jsx-runtime";var Df=({textSuggestions:t,selectedIndex:e})=>{let o=Nf(null),n=h("InlineSuggestionsOverlay",El),s=an(bt),r=_f(),i=an(W),a=an(dt),l=an(nn),c=C("showTextSuggestions");return xt(()=>{setTimeout(()=>{r(De({collapse:!0,skipWhenInputFocus:!0}))})}),Mf(()=>{let d=o.current;if(!d||!d.parentElement)return;d.parentElement.style.left="0px";let u=d.getBoundingClientRect();d.parentElement.style.left=`${Math.min(window.innerWidth-4-u.right,0)}px`}),l||!s||!c||t.length===0||i!==!0||a===!1?null:ln("div",{className:n.root,"data-variant":"inline",children:ln("div",{ref:o,className:n.paper,children:ln(oe,{children:ln(rn,{suggestions:t,selectedIndex:e})})})})},Hf=({input:t})=>({selectedIndex:t.selectedSuggestionIndex,textSuggestions:t.textSuggestions}),kl=Of(Hf)(Df);import{Provider as Ff}from"react-redux";import{jsx as cn}from"react/jsx-runtime";var Bf=({children:t})=>{let o=C("locale").replace("-","");return cn(fs.Provider,{value:o,children:t})},Kf=({store:t,customStyles:e={},children:o})=>cn(Ff,{store:t,children:cn(Bf,{children:cn(_t.Provider,{value:e,children:o})})}),Ye=Kf;import Qs from"classnames";import{useEffect as th,useRef as oh,useState as nh}from"react";import{connect as sh,useDispatch as rh,useSelector as to}from"react-redux";import{useState as Uf}from"react";function Rl(t,e){let[o,n]=Uf(()=>{if(typeof window>"u")return e;try{let r=window.localStorage.getItem(t);return r?JSON.parse(r):e}catch(r){return E.error(r),e}});return[o,r=>{try{let i=r instanceof Function?r(o):r;n(i),typeof window<"u"&&window.localStorage.setItem(t,JSON.stringify(i))}catch(i){E.error(i)}}]}var Pl=()=>/Mac/i.test(navigator.platform);import qf from"classnames";import{Fragment as Gf,useCallback as Ws,useMemo as Al}from"react";var js={};Q(js,{enUS:()=>zf,nlNL:()=>Vf});var zf={loginPlease:[{type:8,value:"login",children:[{type:0,value:"Sign in"}]},{type:0,value:" to enable "},{type:1,value:"productName"},{type:0,value:"."}],snooze:[{type:0,value:"Snooze for "},{type:8,value:"min",children:[{type:0,value:"10 minutes"}]},{type:0,value:", "},{type:8,value:"hour",children:[{type:0,value:"1 hour"}]},{type:0,value:" or "},{type:8,value:"day",children:[{type:0,value:"1 day"}]}]},Vf={loginPlease:[{type:8,value:"login",children:[{type:0,value:"Log in"}]},{type:0,value:" bij "},{type:1,value:"productName"},{type:0,value:"."}],snooze:[{type:0,value:"Snooze voor "},{type:8,value:"min",children:[{type:0,value:"10 minuten"}]},{type:0,value:", "},{type:8,value:"hour",children:[{type:0,value:"1 uur"}]},{type:0,value:" of "},{type:8,value:"day",children:[{type:0,value:"1 dag"}]}]};var Il={root:"ti",anchor:"ni",anchorButton:"ai"};import{jsx as dn,jsxs as Ll}from"react/jsx-runtime";var Xs=(t,e,o)=>n=>dn("button",{className:t.anchorButton,type:"button",value:e,onClick:o,children:n},e),jf=({className:t,loginUrl:e,isEmbedded:o,onSnooze:n,onLogIn:s})=>{let r=R(js),i=ae(),a=h("Login",Il),l=C("productName"),c=Ws(S=>{S.preventDefault(),n&&n(parseInt(S.target.value,10))},[]),d=Ws(S=>{S.preventDefault(),i.send(gt,!0)},[e]),u=Al(()=>S=>dn("a",{onClick:v=>{v.preventDefault(),s()},href:e,className:a.anchor,target:"_blank",rel:"noreferrer",children:S},"login"),[e]),p=Ws(S=>dn("button",{type:"button",className:a.anchorButton,onClick:d,children:S},"prompt"),[d]),{min:g,hour:f,day:m}=Al(()=>({min:Xs(a,60*10,c),hour:Xs(a,60*60,c),day:Xs(a,60*60*12,c)}),[]);return Ll("div",{className:qf(t,a.root),children:[r("loginPlease",{login:o?p:u,productName:l}),n&&Ll(Gf,{children:[dn("br",{}),r("snooze",{min:g,hour:f,day:m})]})]})},un=jf;import{useDispatch as Xf}from"react-redux";var Ml={root:"io",text:"di"};import{jsx as Nl,jsxs as Qf}from"react/jsx-runtime";var Zf=({title:t})=>{let e=h("SearchTrigger",Ml),o=Xf();return Qf("button",{type:"button",className:e.root,onClick:()=>o(ee(!0)),children:[Nl(mt,{}),Nl("span",{className:e.text,children:t})]})},Ol=Zf;var Zs={};Q(Zs,{enUS:()=>Jf,nlNL:()=>Yf});var Jf={arrowHint:[{type:0,value:"Tip: use arrow keys to navigate suggestions"}],searchHintWindows:[{type:0,value:"Press CTRL+"},{type:1,value:"searchTriggerKey"},{type:0,value:" to search"}],searchHintMac:[{type:0,value:"Press CMD+"},{type:1,value:"searchTriggerKey"},{type:0,value:" to search"}],open:[{type:0,value:"Open "},{type:1,value:"productName"}],collapse:[{type:0,value:"Close"}],search:[{type:0,value:"Search"}]},Yf={arrowHint:[{type:0,value:"Tip: Selecteer suggesties met pijltoetsen"}],searchHintWindows:[{type:0,value:"Druk CTRL+"},{type:1,value:"searchTriggerKey"},{type:0,value:" om te zoeken"}],searchHintMac:[{type:0,value:"Druk CMD+"},{type:1,value:"searchTriggerKey"},{type:0,value:" om te zoeken"}],open:[{type:0,value:"Open "},{type:1,value:"productName"}],collapse:[{type:0,value:"Sluiten"}],search:[{type:0,value:"Zoeken"}]};var _l={root:"pi",isInline:"C",toggleButton:"li",toggleButtonWrapper:"S",toggleButtonWrapperHidden:"si",isCollapsed:"ro",collapsible:"xi",hints:"to",hintsHidden:"ci",triggers:"no",triggersRight:"fi"};import{jsx as q,jsxs as oo}from"react/jsx-runtime";var ih=({textSuggestions:t,selectedIndex:e,onLogIn:o})=>{let n=h("SuggestionsOverlay",_l),s=R(Zs),r=to(bt),i=ri(),a=rh(),l=oh(null),c=C("searchTriggerKey"),d=C("productName"),u=to(nn),p=to(W),g=to(dt),[f,m]=nh(null),S=C("showSearch"),w=C("showTextSuggestions"),v=C("adminUrl"),y=C("isEmbedded"),[k,x]=Rl("dd-snooze-until-ms",0),T=u||k>Date.now(),L=to(V=>V.input.text),z=t.filter(V=>V.source!=="gpt").length,F=()=>{T&&x(0),a(Sl(!T))},P=V=>{a(G({name:"suggestion feedback",data:{text:V.text,source:"overlay",context:L},options:{includeConversationData:!0}}))},M=V=>{let Z=Date.now()+V*1e3;x(Z),E.info(`Snooze until: ${new Date(Z)}`),a(De({collapse:!0}))};return th(()=>{z===0&&m(null)},[t,z]),xt(()=>{a(De({collapse:!0,skipWhenInputFocus:!0}))}),p===null||g===!1?null:p===!1?oo("div",{ref:l,className:Qs(n.root,{[n.isCollapsed]:T}),children:[!T&&oo("div",{className:n.triggers,children:[q("div",{style:{flex:1}}),q("div",{className:n.triggersRight,children:q(it,{className:n.toggleButton,title:s("collapse"),onClick:F,isCollapsed:!1})})]}),q("div",{className:n.toggleButtonWrapper,children:q(it,{className:n.toggleButton,title:s("open",{productName:d}),onClick:F,isCollapsed:!0})}),q("div",{className:n.collapsible,children:q(un,{loginUrl:v,isEmbedded:y,onLogIn:o,onSnooze:M})})]}):!i||!r?null:oo("div",{ref:l,className:Qs(n.root,{[n.isCollapsed]:T}),children:[!T&&oo("div",{className:n.triggers,children:[q("div",{style:{flex:1},children:S&&q("div",{style:{display:"inline-block"},onFocus:()=>{},onMouseOver:()=>m(s(Pl()?"searchHintMac":"searchHintWindows",{searchTriggerKey:c.toUpperCase()})),onMouseLeave:()=>m(null),children:q(Ol,{title:s("search")})})}),oo("div",{className:n.triggersRight,onFocus:()=>{},children:[q("div",{className:Qs(!f&&n.hintsHidden,n.hints),children:f}),q(it,{className:n.toggleButton,title:s("collapse"),onClick:F,isCollapsed:!1})]})]}),q("div",{className:n.toggleButtonWrapper,children:q(it,{className:n.toggleButton,title:s("open",{productName:d}),onClick:F,isCollapsed:!0})}),z>0&&w&&q("div",{className:n.collapsible,onFocus:()=>{},children:q(oe,{children:q(rn,{onFeedback:P,suggestions:t,selectedIndex:e,reverse:!0})})})]})},ah=({input:t})=>({selectedIndex:t.selectedSuggestionIndex,textSuggestions:t.textSuggestions}),Dl=sh(ah)(ih);import lr from"classnames";import{Interweave as ly}from"interweave";import{useCallback as cy,useEffect as dy,useMemo as ic,useRef as uy}from"react";import{connect as py}from"react-redux";import{useEffect as lh,useRef as ch,useState as dh}from"react";function pn(t){return t.contentEditable==="true"}function uh(t){let e=0,o=0,n=window.getSelection();if(n.rangeCount!==0){let s=n.getRangeAt(0),r=s.cloneRange();r.selectNodeContents(t),r.setEnd(s.endContainer,s.endOffset),o=r.toString().length,r.selectNodeContents(t),r.setEnd(s.startContainer,s.startOffset),e=r.toString().length}return{selectionStart:e,selectionEnd:o}}function Hl(t){let{selectionStart:e,selectionEnd:o}=pn(t)?uh(t):t;return[e,o]}function Fl(t){let[,e]=dh(),o=ch(null);return o.current=Hl(t),lh(()=>{let n=()=>{let[s,r]=o.current??[],i=Hl(t);(!i||s!==i[0]||r!==i[1])&&(o.current=i,e({}))};return t.addEventListener("keyup",n),t.addEventListener("click",n),t.addEventListener("focus",n),document.addEventListener("selectionchange",n),()=>{t.removeEventListener("keyup",n),t.removeEventListener("click",n),t.removeEventListener("focus",n),document.removeEventListener("selectionchange",n)}},[t]),o.current}function Bl(t,e){if(!e)return;let o=t,{value:n}=o,[s,r]=e,i=n.match(yo);if(!i||i.length===0)return;let a=0;i.find(l=>{let c=n.indexOf(l,a);return s>c&&r<c+l.length?(o.selectionStart=c,o.selectionEnd=c+l.length,!0):(a=c+l.length,!1)})}import{cloneElement as ph}from"react";var gh=["div","span","mark","strong","b","i","u","em"];function Js(t,e,o=0){var r;let n=t[t.length-1],s=typeof n=="object"&&n!==null?(r=n.props)==null?void 0:r.tagName:void 0;if(s==="br")return t.pop(),[...t,...e,n];if(gh.includes(s)){let i=Array.isArray(n.props.children)?n.props.children:[n.props.children];return[...t.slice(0,t.length-1),ph(n,{children:Js(i,e,o+1)})]}return[...t,...e]}function He(t){return t.tagName.toLowerCase()==="textarea"}var ue={root:"gi",container:"bi",agentText:"ao",tabText:"do",hint:"E",matchSelection:"po",focus:"hi",resetIndent:"mi",matchKeyword:"d",matchPlaceholder:"p",hover:"lo",hintText:"ui",popover:"yi",popoverRoot:"wi",popoverContentContainer:"so",popoverContent:"vi",selectionOptions:"ki",selectionOptionsIsHidden:"zi",selectionOptionsButton:"ji",caret:"qi",popoverSuggestionsRoot:"Ci",suggestionsOverlayInputStyles:"Si"};import Dh from"classnames";import{Matcher as Hh}from"interweave";import{useEffect as Fh,useMemo as Bh}from"react";import{useEffect as fh,useRef as hh,useState as yh}from"react";function Kl(t,e){let o;return[(...n)=>{window.cancelAnimationFrame(o);let s=e?e(...n):n;o=window.requestAnimationFrame(()=>{t(...s)})},()=>window.cancelAnimationFrame(o)]}function gn(t){let e=hh(null),[o,n]=yh(!1);return fh(()=>{let s=!1,r=parseFloat(window.getComputedStyle(document.body).zoom??"1"),[i,a]=Kl((d,u)=>{let p=e.current;if(!p)return;let g=d/r,f=u/r,m=p.getBoundingClientRect(),S=g>m.x&&g<m.x+m.width&&f>m.y&&f<m.y+m.height;S&&!s?(s=!0,n(!0)):!S&&s&&(s=!1,n(!1))},({clientX:d,clientY:u})=>[d,u]),[l,c]=Kl(()=>{s=!1,n(!1)});return t.addEventListener("mousemove",i),t.addEventListener("mouseleave",l),()=>{a(),c(),t.removeEventListener("mousemove",i),t.removeEventListener("mouseleave",l)}},[e]),[e,o]}function Ul(t){return t.replace(/[.*+^${}()|[\]\\]/g,"\\$&")}function mn(t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o!=null&&(o.current=e)})}}function zl(t){return t!=null}import jl from"classnames";import{createRef as Ih,useCallback as er,useMemo as Ah,useRef as Lh,useState as Mh}from"react";import{useState as vh,useLayoutEffect as Sh}from"react";var xh=["bottom","height","left","right","top","width"],bh=(t={},e={})=>xh.some(o=>t[o]!==e[o]),Te=new Map,Vl,$l=()=>{let t=[],e=[];Te.forEach((o,n)=>{if(n instanceof Element&&!n.isConnected){e.push(n);return}let s=n.getBoundingClientRect();bh(s,o.rect)&&(o.rect=s,t.push(o))}),e.forEach(o=>{Te.delete(o)}),t.forEach(o=>{o.callbacks.forEach(n=>n(o.rect))}),Vl=window.requestAnimationFrame($l)};function Ch(t,e){return{observe(){let o=Te.size===0;if(Te.has(t)){let n=Te.get(t);n.callbacks.push(e),n.rect&&e(n.rect)}else Te.set(t,{rect:void 0,hasRectChanged:!1,callbacks:[e]});o&&$l()},unobserve(){let o=Te.get(t);if(o){let n=o.callbacks.indexOf(e);n>=0&&o.callbacks.splice(n,1),o.callbacks.length||Te.delete(t),Te.size||cancelAnimationFrame(Vl)}}}}function Ys(t){let[e,o]=vh(null);return Sh(()=>{if(!t.current)return;let n=Ch(t.current,s=>{o(s)});return n.observe(),()=>{n.unobserve()}},[t]),e}import{useContext as Th,useLayoutEffect as Eh,useState as kh}from"react";import{createPortal as Rh}from"react-dom";var ql={root:"Ei"};var Gl=({children:t,parentNode:e})=>{let[o,n]=kh(null),s=Th(_t);return Eh(()=>{let r=document.createElement("div");return Je(r),r.classList.add(ql.root),s!=null&&s.portalRootNode&&r.classList.add(s==null?void 0:s.portalRootNode),(e||document.body).appendChild(r),n(r),()=>{r.isConnected&&r.remove()}},[]),o?Rh(t,o):null};var me={ref:"Gi",root:"o",positionAbove:"l",positionBelow:"s",positionLeft:"x",positionRight:"c",alignStart:"f",alignCenter:"g",alignEnd:"b"};import{jsx as tr}from"react/jsx-runtime";var fn=(t=!1)=>{let[e,o]=Mh(t),n=er(()=>o(!0),[]),s=er(()=>o(!1),[]),r=er(()=>o(a=>!a),[]),i=Lh(null);return{opened:e,open:n,close:s,toggle:r,triggerRef:i}};function or(t,e=null,o=0){if(!t)return{display:"none"};let n=e?t.top-e.top<0||t.top<e.top-o?e.top-o:t.top+t.height>e.top+e.height+o?e.top+e.height+o-t.height:t.top:t.top,s=e?t.left<e.left-o?e.left-o:t.left+t.width>e.left+e.width+o?e.left+e.width+o-t.width:t.left:t.left;return{top:n,left:s,height:t.height,width:t.width}}var Ct=({className:t,triggerRef:e,boundaryRef:o=Ih(),position:n="above",align:s="center",children:r,toStyle:i=or,parentNode:a,...l})=>{let c=Ys(e),d=Ys(o),u=Ah(()=>i(c,d,0),[c,d]);return tr(Gl,{parentNode:a,children:tr("div",{className:jl(me.ref,{[me.positionAbove]:n==="above",[me.positionBelow]:n==="below",[me.positionLeft]:n==="left",[me.positionRight]:n==="right",[me.alignStart]:s==="start",[me.alignCenter]:s==="center",[me.alignEnd]:s==="end"}),style:u,...l,role:"dialog",children:tr("div",{className:jl(t,me.root),children:r})})})};import Nh from"classnames";import{forwardRef as Oh,useRef as _h}from"react";import{jsx as Wl}from"react/jsx-runtime";var hn=Oh(({className:t,children:e,...o},n)=>{let s=_h(null),r=h("TabCompletion",ue);return Wl("div",{ref:mn([s,n]),className:Nh(t,r.popoverContentContainer),...o,children:Wl("div",{className:r.popoverContent,children:e})})});import{jsx as no,jsxs as zh}from"react/jsx-runtime";var Kh=t=>e=>{let o=or(e);return"top"in o&&(o.width=t.width-(e.left-t.left)-10),o},Uh=({inputElement:t,boundaryRef:e,inputStyle:o,children:n,suggestion:s})=>{let r=h("TabCompletion",ue),i=fn(),a=Bh(()=>Kh(t.getBoundingClientRect()),[t]),[l,c]=gn(t);return Fh(()=>{c?i.open():i.close()},[c]),zh("span",{children:[no("mark",{ref:mn([l,i.triggerRef]),className:Dh(r.matchKeyword,{[r.hover]:c}),"aria-haspopup":"dialog","aria-expanded":i.opened?"true":"false",children:n}),i.opened&&no(Ct,{className:r.popover,triggerRef:i.triggerRef,boundaryRef:e,position:"below",align:"start",toStyle:a,children:no(hn,{style:o,children:no("div",{className:r.hintText,children:s})})})]})},yn=class extends Hh{keywordMatches=[];preparedKeywordMatches=[];usedKeywordMatches=new Set;onBeforeParse(e,o){return o.keywordMatches&&o.keywordMatches!==this.keywordMatches&&(this.preparedKeywordMatches=o.keywordMatches.map(n=>({...n,keywordRegex:new RegExp(`\\b${Ul(n.keyword)}\\b`,"i")})),this.keywordMatches=o.keywordMatches),this.usedKeywordMatches.clear(),e}match(e){let o=this.preparedKeywordMatches.map(s=>{if(this.usedKeywordMatches.has(s))return null;let r=e.match(s.keywordRegex);if(!r)return null;let i=e.charAt(r.index-1),a=e.charAt(r.index+s.keyword.length);return i==="{"&&a==="}"?null:{index:r.index,length:r[0].length,match:r[0],matchString:r[0],suggestion:s.suggestion,preparedKeywordMatch:s,valid:!0}}).filter(zl);if(o.length===0)return null;let n=o.reduce((s,r)=>r.index<s.index?r:s);return this.usedKeywordMatches.add(n.preparedKeywordMatch),n}replaceWith(e,o){return no(Uh,{inputElement:o.inputElement,suggestion:o.suggestion,inputStyle:o.inputStyle,boundaryRef:o.boundaryRef,children:e},`keyword_${o.matchString}_${o.key}`)}asTag(){return"mark"}};import{Matcher as Vh}from"interweave";import $h from"classnames";import{jsx as Xl}from"react/jsx-runtime";var qh=({inputElement:t,children:e})=>{let o=h("TabCompletion",ue),[n,s]=gn(t);return Xl("mark",{ref:n,className:$h(o.matchPlaceholder,{[o.hover]:s}),children:e})},vn=class extends Vh{match(e){let o=e.match(/(((\$!\{)|(\{))[a-zA-Z0-9_.]+\}(?!\}))/);return o?{index:o.index,length:o[0].length,match:o[0],matchString:o[0],valid:!0}:null}replaceWith(e,o){return Xl(qh,{inputElement:o.inputElement,children:e},`placeholder_${o.matchString}_${o.key}`)}asTag(){return"mark"}};import ar from"classnames";import{Matcher as ty}from"interweave";import{createRef as oy,forwardRef as ny,useCallback as sy,useEffect as nc,useRef as sc,useState as rc}from"react";import{useDispatch as ry}from"react-redux";import{jsx as Zl}from"react/jsx-runtime";var Ql=()=>Zl("svg",{width:"1.3em",height:"1.3em",focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24","data-testid":"InsertLinkIcon",tabIndex:-1,children:Zl("path",{fill:"currentColor",d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"})});import{useCallback as jh,useEffect as Yl,useState as ec}from"react";import{useDispatch as Wh,useSelector as tc}from"react-redux";import Xh from"lodash.debounce";var Jl={root:"Ni",content:"Yi"};function Sn(t,e,o){var s;let n=((s=t.imageSizes)==null?void 0:s[e])||t.image||o;if(!n)return null;try{return new URL(n).toString()}catch{return null}}function nr(t){return t.replace("https://www.","").replace("https://","")}import{jsx as et,jsxs as sr}from"react/jsx-runtime";var Zh=3,Qh=t=>({image:t.image||"",text:t.text,id:t.id,title:t.title}),Jh=({onSelectLink:t,onDismiss:e,placeholder:o,visitUrlText:n,linkCount:s=Zh})=>{let r=h("LinkSearch",Jl),[i,a]=ec(""),l=Wh(),c=tc(el("url")),d=tc(ki("URL",Qh)),[u,p]=ec(d.length-1),g=C("fallbackImage"),f=v=>{let y=v.target;a(y.value)},m=(v,y)=>{v.stopPropagation(),v.preventDefault(),window.open(y,"_blank")},S=v=>{var x;let y=u-1<0?d.length-1:u-1,k=u+1===d.length?0:u+1;v.code==="Escape"&&(a(""),e()),v.code==="ArrowUp"&&p(y),v.code==="ArrowDown"&&p(k),v.code==="Enter"&&t(((x=d[u])==null?void 0:x.text)||i)},w=jh(Xh(v=>{l(qe({query:v,type:"URL",tags:["link-search"]}))},300),[]);return Yl(()=>{i&&w(i)},[i]),Yl(()=>()=>{l(Mo())},[]),sr("div",{className:r.root,children:[et(oe,{withDivider:!0,children:(i?d:c).slice(0,s).map((v,y)=>et(O,{selected:u===y,onClick:()=>t(v.text),"data-testid":"linksearch-suggestion",children:sr(H,{children:[et(H.Image,{src:Sn(v,"small",g||void 0),title:v.title||v.text}),sr(H.Content,{className:r.content,cropText:!0,children:[et(H.Title,{children:v.title||nr(v.text)}),v.title&&nr(v.text)]}),et(O.Actions,{children:et(O.ActionButton,{label:n,onClick:k=>m(k,v.text)})})]})},v.text))}),et(Gt,{value:i,onChange:f,autoFocus:!0,placeholder:o,onKeyUp:S})]})},oc=Jh;var rr={};Q(rr,{enUS:()=>Yh,nlNL:()=>ey});var Yh={insertLink:[{type:0,value:"Insert link"}],linkInputPlaceholder:[{type:0,value:"Search, type or paste link"}],visitUrl:[{type:0,value:"Visit"}]},ey={insertLink:[{type:0,value:"Voeg link toe"}],linkInputPlaceholder:[{type:0,value:"Zoek, typ of plak link"}],visitUrl:[{type:0,value:"Bekijk"}]};import{jsx as fe,jsxs as ir}from"react/jsx-runtime";var iy=ny((t,e)=>{let o=h("TabCompletion",ue);return fe("mark",{ref:e,className:ar(o.matchSelection)},"selection-start")}),ay=({startRef:t,boundaryRef:e,inputStyle:o,inputElement:n,children:s})=>{let r=R(rr),i=h("TabCompletion",ue),a=sc(null),l=sc(null),[c,d]=rc(null),u=ry(),p=fn(document.activeElement===n),[g]=rc(()=>document.createRange());p.triggerRef.current=g,nc(()=>()=>g.detach(),[]),nc(()=>{let m=t.current,S=a.current;!m||!S||(g.setStart(m,0),g.setEnd(S,0))},[t.current,a.current]),xt(()=>{p.close()});let f=sy(m=>{let S=g.toString(),w=/^http(s?):\/\//.test(m)?m:`https://${m}`;u(Ro({text:`[${S}](${w})`,replace:"selection"}))},[]);return ir("span",{children:[fe("mark",{ref:a,className:ar(i.matchSelection),"aria-haspopup":"dialog","aria-expanded":p.opened?"true":"false",children:s}),p.opened&&fe(Ct,{className:i.popoverRoot,triggerRef:p.triggerRef,boundaryRef:e,position:"above",align:"start",children:ir(hn,{style:o,ref:l,children:[fe("div",{className:ar(i.selectionOptions,{[i.selectionOptionsIsHidden]:c!==null}),children:ir("button",{type:"button",tabIndex:c===null?-1:void 0,className:i.selectionOptionsButton,onClick:()=>d("insertLink"),children:[fe(Ql,{}),fe("span",{children:"\xA0"}),fe("span",{children:r("insertLink")})]})}),c==="insertLink"&&fe(oc,{placeholder:r("linkInputPlaceholder"),visitUrlText:r("visitUrl"),onSelectLink:f,onDismiss:()=>{d(null),p.close()}})]})})]},"selection-end")},xn=class extends ty{charCount=0;foundIndex=0;startRef=null;props;onBeforeParse(e,o){return this.props=o,this.charCount=0,this.startRef=oy(),this.foundIndex=0,e}match(e){if(!this.props||this.props.selection===null||this.foundIndex===2)return null;let[o,n]=this.props.selection;if(o===n)return null;let s=this.foundIndex===0?o:n,r=s>=this.charCount&&s<=this.charCount+e.length?{index:s-this.charCount,length:0,match:"",valid:!0}:null;r&&this.foundIndex++;let i=this.foundIndex===1;return r&&i?this.charCount+=s-this.charCount:this.charCount+=e.length,r?{isStart:i,...r}:null}replaceWith(e,o){return o.isStart?fe(iy,{ref:this.startRef}):fe(ay,{inputElement:o.inputElement,startRef:this.startRef,boundaryRef:o.boundaryRef,inputStyle:o.inputStyle})}asTag(){return"mark"}};import{useSelector as gy}from"react-redux";import{jsx as wt,jsxs as hy}from"react/jsx-runtime";var my=({enabled:t,content:e,tabText:o,showTabHint:n,showTabCompletion:s,showStyleSuggestions:r,keywordMatches:i,inputElement:a,source:l})=>{let c=h("TabCompletion",ue),d=C("insertLink"),u=C("showMidSentenceSuggestions"),p=C("inlineSuggestions"),g=Fl(a),f=uy(null),m=gy(W);dy(()=>{He(a)&&g&&Bl(a,g)},[g]);let S=cy(y=>{if(!s||!o)return y;let k=[wt("span",{className:c.resetIndent,children:"\u200B"},"u200B"),wt("span",{"data-testid":"tab-completion",className:lr(c.tabText,c.resetIndent),"data-source":l,children:o},"tabText")];return n&&k.push(wt("span",{className:lr(c.hint,c.resetIndent),children:wt(Vn,{keyCode:"tab"},"tabHint")})),Js(y,k)},[s,o,n]),w=ic(()=>{let y=[];return d&&y.push(new xn("selection")),y.push(new vn("placeholders")),r&&y.push(new yn("keywords")),y},[p,d,r]),v=ic(()=>{let y=window.getComputedStyle(a);return{"--dd-color":y.color,"--dd-font-size":y.fontSize,"--dd-font-family":y.fontFamily,"--dd-font-variant":y.fontVariant}},[]);return!t||!m?null:hy("div",{ref:y=>{y!=null&&y.parentElement&&(f.current=y==null?void 0:y.parentElement)},className:c.root,style:v,children:[wt(ly,{tagName:"span",containerTagName:"div",className:lr(c.container,c.agentText),disableLineBreaks:He(a),content:e||"\u200B",onAfterParse:S,matchers:w,selection:g,keywordMatches:i,inputElement:a,inputStyle:v,boundaryRef:f,inlineSuggestionsOnlyAtEnd:!u}),wt("br",{})]})},fy=({input:t,ui:e,settings:o,styleSuggestions:n,conversation:s})=>{var m;let{tabCompletionSuggestion:r}=t,i=(r==null?void 0:r.text)||"",a=(r==null?void 0:r.source)||"",l=t.html??Xt(t.text),c=i.indexOf(t.text)===0?i.slice(t.text.length):"",{showTabHint:d}=e,{isSupported:u}=s,{showTabCompletion:p,visible:g,showStyleSuggestions:f}=o;return{showTabHint:d,showStyleSuggestions:f,showTabCompletion:p,content:l,tabText:c,source:a,keywordMatches:((m=n.list)==null?void 0:m.keywordMatches)??[],enabled:g&&u!==!1}},ac=py(fy)(my);import fv from"classnames";import{useEffect as hv}from"react";import{useDispatch as yv,useSelector as X}from"react-redux";import{createAsyncThunk as so,createSlice as yy}from"@reduxjs/toolkit";var lc={list:[],fetchState:"idle",isInitialRequest:null},dc=t=>t.autoflows.list||[],cc=t=>e=>{var o;return(o=e.list)==null?void 0:o.find(n=>n.triggerPayload===t)},Ee=so("autoflows/getAll",async(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");return o.getAutoflows(t)}),cr=so("autoflows/start",async(t,e)=>{let{dispatch:o}=e,{deepdeskBrokerAPI:n}=e.extra;if(!n)throw new Error("Deepdesk Broker not initialized");await n.startAutoflowSession(t),await o(Ee(t.platformSessionId))}),dr=so("autoflows/stop",async(t,e)=>{let{dispatch:o}=e,{deepdeskBrokerAPI:n}=e.extra;if(!n)throw new Error("Deepdesk Broker not initialized");await n.stopAutoflowSession(t.platformSessionId),await o(Ee(t.platformSessionId))}),vy=yy({name:"autoflows",initialState:lc,reducers:{},extraReducers:t=>{t.addCase(cr.pending,(e,o)=>{let n=cc(o.meta.arg.triggerPayload)(e);n.state="Started",n.isBusy=!0}),t.addCase(dr.pending,(e,o)=>{let n=cc(o.meta.arg.triggerPayload)(e);n.state="Aborted",n.isBusy=!0}),t.addCase(Ee.pending,e=>{e.isInitialRequest=e.isInitialRequest===null,e.fetchState="loading"}),t.addCase(Ee.rejected,e=>{e.fetchState="error"}),t.addCase(Ee.fulfilled,(e,o)=>{e.list=o.payload,e.fetchState="done"}),t.addCase(N,()=>lc)}}),uc=so("autoflows/openStream",(t,e)=>{let{dispatch:o}=e,{deepdeskBrokerAPI:n}=e.extra;if(!n)throw new Error("Deepdesk Broker not initialized");let s=n.openStream(t);s.on("sessionAborted",()=>{o(Ee(t))}),s.on("sessionCompleted",()=>{o(Ee(t))})}),pc=so("autoflows/closeStream",(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");o.closeStream(t)}),gc=vy.reducer;import{createAsyncThunk as io,createSlice as Sy}from"@reduxjs/toolkit";var mc={list:[],fetchState:"idle",isInitialRequest:null,sentSuggestions:[],errorSuggestions:[],answeredSuggestions:[]},fc=t=>t.customMessages.list,hc=t=>e=>!!e.customMessages.sentSuggestions.find(o=>o===t),yc=t=>e=>!!e.customMessages.answeredSuggestions.find(o=>o===t),vc=t=>e=>!!e.customMessages.errorSuggestions.find(o=>o===t),ro=io("customMessages/getAll",async(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");return o.getCustomMessages(t)}),bn=io("customMessages/send",async(t,e)=>{let{platformSessionId:o,suggestion:n}=t,{deepdeskBrokerAPI:s}=e.extra;if(!s)throw new Error("Deepdesk Broker not initialized");await s.sendCustomMessage(o,n)}),Cn=io("customMessages/answer",async(t,e)=>{let{platformSessionId:o,reply:n}=t,{deepdeskBrokerAPI:s}=e.extra;if(!s)throw new Error("Deepdesk Broker not initialized");await s.answerCustomMessage(o,n)}),Sc=Sy({name:"customMessages",initialState:mc,reducers:{onCustomMessage(t,e){Array.isArray(e.payload)?t.list=e.payload:t.list=[e.payload]}},extraReducers:t=>{t.addCase(ro.pending,e=>{e.isInitialRequest=e.isInitialRequest===null,e.fetchState="loading"}).addCase(ro.rejected,e=>{e.fetchState="error"}).addCase(ro.fulfilled,(e,o)=>{e.fetchState="done",e.list=o.payload||[]}).addCase(bn.pending,(e,o)=>{e.sentSuggestions.push(o.meta.arg.suggestion.text),e.errorSuggestions=e.errorSuggestions.filter(n=>o.meta.arg.suggestion.text!==n)}).addCase(bn.rejected,(e,o)=>{let n=e.sentSuggestions.indexOf(o.meta.arg.suggestion.text);e.errorSuggestions.push(...e.sentSuggestions.splice(n,1))}).addCase(Cn.pending,(e,o)=>{e.sentSuggestions.push(o.meta.arg.suggestion.text),e.answeredSuggestions.push(o.meta.arg.suggestion.text)}).addCase(Cn.rejected,(e,o)=>{let n=e.answeredSuggestions.indexOf(o.meta.arg.suggestion.text);e.errorSuggestions.push(...e.sentSuggestions.splice(n,1)),e.answeredSuggestions.splice(n,1)}).addCase(N,()=>mc)}}),xc=io("customMessages/openStream",(t,e)=>{let{dispatch:o}=e,{deepdeskBrokerAPI:n}=e.extra;if(!n)throw new Error("Deepdesk Broker not initialized");n.openStream(t).on("customMessageSuggestion",r=>{o(Sc.actions.onCustomMessage(r))})}),bc=io("customMessages/closeStream",(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");o.closeStream(t)}),Cc=Sc.reducer;import{createAsyncThunk as wc,createSlice as xy}from"@reduxjs/toolkit";var by={token:null,accountUrl:null,interval:null},Tc=t=>e=>{let{passwordlessToken:{token:o,accountUrl:n}}=e;return o&&n?`${n}/apis/admin/session/passwordless/login/?token=${o}&redirect=${t}`:null},ur=wc("passwordlessToken/getTemporaryPasswordlessToken",async(t,e)=>{let{deepdeskAPI:o}=e.extra,n=await o.requestPasswordlessToken();return{accountUrl:o.client.baseUrl,token:n}}),pr=wc("passwordlessToken/pollPasswordlessToken",(t={},e)=>{let{interval:o=1e3*60*10}=t,{dispatch:n}=e;return n(ur()),setInterval(()=>n(ur()),o)}),Ec=xy({name:"passwordlessToken",initialState:by,reducers:{stopPollPasswordlessToken(t){t.interval&&clearInterval(t.interval),t.interval=null}},extraReducers:t=>{t.addCase(ur.fulfilled,(e,o)=>{e.token=o.payload.token,e.accountUrl=o.payload.accountUrl}),t.addCase(pr.fulfilled,(e,o)=>{e.interval=o.payload})}}),{stopPollPasswordlessToken:kc}=Ec.actions,Rc=Ec.reducer;function Pc(t){let{customMessages:e,autoflows:o}=t;return o.fetchState==="loading"&&o.isInitialRequest===!0||e.fetchState==="loading"&&e.isInitialRequest===!0}import{Fragment as Ny}from"react";import{connect as Oy}from"react-redux";import Ay from"classnames";import{Fragment as Ly}from"react";import wy from"classnames";var Ic={root:"Ai"};import{jsx as Ey}from"react/jsx-runtime";var Ty=({className:t,children:e})=>{let o=h("Unicode",Ic);return Ey("span",{className:wy(t,o.root),children:e})},Ac=Ty;var Lc={isDisabled:"Fi",buttonStart:"Hi",root:"Li",buttonStop:"xo",stateBadge:"h",isCompleted:"Mi",isStarted:"Ri",isAborted:"Ti"};var gr={};Q(gr,{enUS:()=>Ry,nlNL:()=>Py});var Ry={start:[{type:0,value:"Start"}],stop:[{type:0,value:"Stop"}],aborted:[{type:0,value:"Stopped"}],completed:[{type:0,value:"Completed"}],Aborted:[{type:0,value:"Stopped"}],Started:[{type:0,value:"Running"}],Completed:[{type:0,value:"Completed"}]},Py={start:[{type:0,value:"Start"}],stop:[{type:0,value:"Stop"}],aborted:[{type:0,value:"Stopped"}],completed:[{type:0,value:"Completed"}],Aborted:[{type:0,value:"Stopped"}],Started:[{type:0,value:"Running"}],Completed:[{type:0,value:"Completed"}]};import{jsx as tt,jsxs as wn}from"react/jsx-runtime";var My=({disabled:t,state:e,displayName:o,description:n,onStartAutoflow:s,onStopAutoflow:r})=>{let i=h("Autoflow",Lc),a=R(gr),l=e==="Started"?"stop":"start",c=l==="start"?"\u25B6":l==="stop"?"\u25FC":"";return wn(O,{className:Ay(i.root,{[i.isDisabled]:t,[i.isCompleted]:e==="Completed",[i.isAborted]:e==="Aborted",[i.isStarted]:e==="Started"}),children:[tt(H,{children:wn(H.Content,{children:[wn(H.Title,{children:[e&&tt("span",{className:i.stateBadge,children:a(e)}),o]}),tt("span",{children:n})]})}),tt(O.Actions,{fixed:e==="Started",children:tt(O.ActionButton,{primary:!0,className:l==="start"?i.buttonStart:i.buttonStop,onClick:e==="Started"?r:s,disabled:t,label:wn(Ly,{children:[tt(Ac,{children:c})," ",tt("span",{children:a(l)})]})})})]})},Mc=My;import{jsx as Nc}from"react/jsx-runtime";var _y=(t,e)=>{let o=e.filter(n=>n.state==="Started");return o.length>0?o.indexOf(t)===-1:!1},Dy=({autoflows:t,onStartAutoflow:e,onStopAutoflow:o,platformSessionId:n})=>Nc(Ny,{children:t.map(s=>Nc(Mc,{displayName:s.displayName,description:s.description,disabled:s.isBusy||_y(s,t),state:s.state,onStartAutoflow:()=>e({platformSessionId:n,triggerPayload:s.triggerPayload}),onStopAutoflow:()=>o({platformSessionId:n,triggerPayload:s.triggerPayload})},s.displayName))}),Hy=({autoflows:t,conversation:e})=>{var o;return{autoflows:t.list,platformSessionId:(o=e.current)==null?void 0:o.sessionId}},Fy={onStartAutoflow:cr,onStopAutoflow:dr},Oc=Oy(Hy,Fy)(Dy);import Ky from"classnames";import{useCallback as _c}from"react";import{useDispatch as Uy,useSelector as Tn}from"react-redux";var ke={root:"co",title:"fo",isUsed:"Ui",quickReplies:"Bi",quickReply:"Di",hasError:"Ii",label:"Oi",errorIcon:"Xi"};import{jsx as Fe,jsxs as En}from"react/jsx-runtime";var zy=({suggestion:t})=>{let e=R(Ze),o=Uy(),n=Tn(hc(t.text)),s=Tn(yc(t.text)),r=Tn(vc(t.text)),i=Tn(xo),{replyOptions:a}=t,l=_c(d=>{d.preventDefault(),d.stopPropagation(),!(n||!i)&&o(bn({platformSessionId:i,suggestion:t}))},[t,n,o,i]),c=_c(d=>{if(d.preventDefault(),d.stopPropagation(),!i||!a)return;let u=parseInt(d.target.dataset.index,10),p=a[u];o(Cn({platformSessionId:i,reply:p,suggestion:t}))},[t,n,o,i]);return En(O,{onClick:l,className:Ky(ke.root,{[ke.isUsed]:n,[ke.hasError]:r}),children:[Fe(H,{children:En(H.Content,{children:[En(H.Title,{className:ke.title,children:[t.text," ",Fe($n,{className:ke.label,children:"analyse tool"})," ",r&&Fe("span",{className:ke.errorIcon,role:"img","aria-label":e("sendingError"),title:e("sendingError"),children:"!"})]}),a&&a.length>0&&Fe("ul",{className:ke.quickReplies,children:a.map(d=>Fe("li",{className:ke.quickReply,children:d.title},d.title))})]})}),En(O.Actions,{fixed:r||n,children:[a&&a.length>0&&Fe(O.DropdownButton,{label:e("answer"),disabled:s,children:a.map((d,u)=>Fe(O.DropdownItem,{index:u,label:d.title,onClick:c},d.title))}),Fe(O.ActionButton,{primary:!0,disabled:n,onClick:l,label:e(n?"suggestionSent":r?"tryAgain":"sendSuggestion")})]})]})},Dc=zy;import{useEffect as $y,useState as qy}from"react";import{useDispatch as Gy}from"react-redux";import Bc from"classnames";import{jsx as Hc}from"react/jsx-runtime";var mr=()=>Hc("svg",{width:"1em",height:"1em",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg",children:Hc("path",{d:"M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z"})});var Fc={root:"Ji",entity:"r",entityText:"Ki",iconWrapper:"Pi",icon:"Qi",iconClicked:"Vi"};import{jsx as Tt,jsxs as Kc}from"react/jsx-runtime";var jy=({entities:t})=>{let e=h("EntitiesWidgetList",Fc),[o,n]=qy(void 0),s=Gy(),r=()=>{n(void 0)},i=a=>{t&&(n(t.indexOf(a)),We(a.text),s(G({name:"entity copied",data:{entity:a,type:"copy"}})))};return $y(()=>{let a=setTimeout(r,500);return()=>{clearTimeout(a)}},[o]),!t||t.length===0?null:Tt("div",{className:e.root,"data-testid":"widget-entities-list",children:t.map((a,l)=>Kc("button",{title:a.text,className:e.entity,type:"button",onClick:()=>i(a),children:[Tt("span",{className:e.entityText,children:a.text}),Kc("span",{className:e.iconWrapper,children:[Tt("span",{className:Bc(e.icon),children:Tt(mr,{})}),Tt("span",{className:Bc(e.icon,o===l&&e.iconClicked),children:Tt(mr,{})})]})]},a.text))})},Uc=jy;import{jsx as zc}from"react/jsx-runtime";var Vc=()=>zc("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:zc("path",{d:"M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9",stroke:"currentColor",strokeWidth:"1.5",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"})});import{jsx as $c}from"react/jsx-runtime";var qc=()=>$c("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 -960 960 960",width:"1em",children:$c("path",{d:"M543-340q16.595 0 28.798-12.202Q584-364.405 584-381t-12.202-28.798Q559.595-422 543-422t-28.798 12.202Q502-397.595 502-381t12.202 28.798Q526.405-340 543-340Zm-25-126h47q2-29 8.5-43t32.5-39q27-26 37.5-45.395Q654-612.79 654-639q0-45.882-31.5-74.941Q591-743 540-743q-38 0-68 20.5T428-665l45 19q11-25 27.5-38t39.5-13q29.778 0 48.389 17Q607-663 607-637q0 20-9 35t-32 32q-32 29-40 46.5t-8 57.5ZM260-200q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h560q24 0 42 18t18 42v560q0 24-18 42t-42 18H260Zm0-60h560v-560H260v560ZM140-80q-24 0-42-18t-18-42v-620h60v620h620v60H140Zm120-740v560-560Z"})});import{jsx as Gc}from"react/jsx-runtime";var jc=()=>Gc("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 -960 960 960",width:"1em",children:Gc("path",{d:"M319-250h322v-60H319v60Zm0-170h322v-60H319v60ZM220-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h361l219 219v521q0 24-18 42t-42 18H220Zm331-554v-186H220v680h520v-494H551ZM220-820v186-186 680-680Z"})});import Xy from"dompurify";import{Fragment as Zy,useMemo as Qy,useRef as Jy,useState as Xc}from"react";import Yy from"snarkdown";var Wc={root:"i",popover:"Wi",options:"go",copyIcon:"Zi",option:"bo",divider:"_i"};import{jsx as ao,jsxs as Zc}from"react/jsx-runtime";var ev=t=>`<svg class=${t} version="1.1" x="0px" y="0px" viewBox="0 0 115.77 122.88" width="10px" height="10px" fill="black" fill-opacity="0.5" stroke-opacity="0.8"><g><path d="M89.62,13.96v7.73h12.19h0.01v0.02c3.85,0.01,7.34,1.57,9.86,4.1c2.5,2.51,4.06,5.98,4.07,9.82h0.02v0.02 v73.27v0.01h-0.02c-0.01,3.84-1.57,7.33-4.1,9.86c-2.51,2.5-5.98,4.06-9.82,4.07v0.02h-0.02h-61.7H40.1v-0.02 c-3.84-0.01-7.34-1.57-9.86-4.1c-2.5-2.51-4.06-5.98-4.07-9.82h-0.02v-0.02V92.51H13.96h-0.01v-0.02c-3.84-0.01-7.34-1.57-9.86-4.1 c-2.5-2.51-4.06-5.98-4.07-9.82H0v-0.02V13.96v-0.01h0.02c0.01-3.85,1.58-7.34,4.1-9.86c2.51-2.5,5.98-4.06,9.82-4.07V0h0.02h61.7 h0.01v0.02c3.85,0.01,7.34,1.57,9.86,4.1c2.5,2.51,4.06,5.98,4.07,9.82h0.02V13.96L89.62,13.96z M79.04,21.69v-7.73v-0.02h0.02 c0-0.91-0.39-1.75-1.01-2.37c-0.61-0.61-1.46-1-2.37-1v0.02h-0.01h-61.7h-0.02v-0.02c-0.91,0-1.75,0.39-2.37,1.01 c-0.61,0.61-1,1.46-1,2.37h0.02v0.01v64.59v0.02h-0.02c0,0.91,0.39,1.75,1.01,2.37c0.61,0.61,1.46,1,2.37,1v-0.02h0.01h12.19V35.65 v-0.01h0.02c0.01-3.85,1.58-7.34,4.1-9.86c2.51-2.5,5.98-4.06,9.82-4.07v-0.02h0.02H79.04L79.04,21.69z M105.18,108.92V35.65v-0.02 h0.02c0-0.91-0.39-1.75-1.01-2.37c-0.61-0.61-1.46-1-2.37-1v0.02h-0.01h-61.7h-0.02v-0.02c-0.91,0-1.75,0.39-2.37,1.01 c-0.61,0.61-1,1.46-1,2.37h0.02v0.01v73.27v0.02h-0.02c0,0.91,0.39,1.75,1.01,2.37c0.61,0.61,1.46,1,2.37,1v-0.02h0.01h61.7h0.02 v0.02c0.91,0,1.75-0.39,2.37-1.01c0.61-0.61,1-1.46,1-2.37h-0.02V108.92L105.18,108.92z"/></g></svg>`,tv=({content:t,useLabel:e,copyLabel:o,onCopy:n,onUse:s})=>{let r=h("Markdown",Wc),i=Jy(null),[a,l]=Xc(null),[c,d]=Xc(null),u=Qy(()=>{let S=Yy(t);return Xy.sanitize(S).replace(/<\/code>/g,`${ev(r.copyIcon)}</code>`)},[t]),p=()=>{l(null),d(null)},g=S=>{var y;let w=S.target,v=!!((y=i.current)!=null&&y.querySelector("code"));a||v&&w.tagName!=="CODE"||!v&&w!==i.current||(w.addEventListener("mouseleave",p,{once:!0}),d(w.textContent),l(w))},f=()=>{c&&n(c),p()},m=()=>{c&&s(c),p()};return Zc(Zy,{children:[a&&ao(Ct,{triggerRef:{current:a},parentNode:a,className:r.popover,children:Zc("div",{className:r.options,children:[ao("button",{type:"button",className:r.option,onClick:f,children:o}),ao("div",{className:r.divider}),ao("button",{type:"button",className:r.option,onClick:m,children:e})]})}),ao("div",{ref:i,className:r.root,dangerouslySetInnerHTML:{__html:u},onMouseOver:g})]})},Qc=tv;var fr={};Q(fr,{enUS:()=>ov,nlNL:()=>nv});var ov={useCue:[{type:0,value:"Copy"}],copyCue:[{type:0,value:"Copy"}],removeCue:[{type:0,value:"Close"}]},nv={useCue:[{type:0,value:"Gebruik"}],copyCue:[{type:0,value:"Kopieer"}],removeCue:[{type:0,value:"Sluiten"}]};import{jsx as kn,jsxs as Jc}from"react/jsx-runtime";var sv=({cue:t,onRemove:e,onCopy:o,onUse:n})=>{let s=R(fr),r=l=>{o&&o(l)},i=l=>{n&&n(l)},a=l=>{l.preventDefault(),l.stopPropagation(),e&&e(t.id)};return Jc(O,{"data-testid":"cue",children:[kn(H,{children:Jc(H.Content,{children:[t.title&&kn(H.Title,{"data-testid":"widget-cue-title",children:t.title}),kn(Qc,{content:t.text,useLabel:s("useCue"),copyLabel:s("copyCue"),onCopy:r,onUse:i})]})}),kn(O.CloseIcon,{title:s("removeCue"),onClick:a})]})},Yc=sv;import{Fragment as iv,jsx as ed}from"react/jsx-runtime";var rv=({cues:t,onCopyCue:e,onUseCue:o,onRemoveCue:n})=>ed(iv,{children:t.map(s=>ed(Yc,{cue:s,onRemove:n,onCopy:e,onUse:o},`${s.id}_${s.timestamp}`))}),td=rv;import{useCallback as lv}from"react";var av=/(https?:\/\/[^\s]+)/,od=t=>t.split(" ").find(e=>av.test(e));import{jsx as Et,jsxs as Rn}from"react/jsx-runtime";var cv=({suggestion:t,lines:e,onUse:o})=>{var d;let n=t.text||t.url||t.message,s=od(n),r=R(Ze),i=C("showImages"),a=C("fallbackImage"),l=u=>{u.preventDefault(),u.stopPropagation(),o(n)},c=lv(u=>{window.open(s,"_blank"),u.stopPropagation(),u.preventDefault()},[s]);return Rn(O,{onClick:l,"data-testid":"edit-suggestion",children:[Rn(H,{children:[i&&t.image&&Et(H.Image,{src:Sn(t,"small",a||void 0),title:t.title}),Rn(H.Content,{children:[t.title&&Et(H.Title,{"data-testid":"widget-suggestion-title",children:t.title}),t.searchKeywords&&((d=t.searchKeywords)==null?void 0:d.length)>0&&Et(O.Labels,{labels:t.searchKeywords}),Et(H.Content,{cropText:e==="single",lineClamp:e==="multiple",children:n})]})]}),Rn(O.Actions,{children:[s&&Et(O.ActionButton,{onClick:c,label:r("visitUrl")}),Et(O.ActionButton,{primary:!0,onClick:l,label:r("useSuggestion")})]})]})},nd=cv;import{Fragment as uv,jsx as sd}from"react/jsx-runtime";var dv=({lines:t,suggestions:e})=>{let o=ae(),n=(s,r)=>{o.send(Me,{text:s,suggestion:{...r,source:r.source,sourceText:r.text}})};return sd(uv,{children:e.map(s=>sd(nd,{suggestion:s,lines:t,onUse:r=>n(r,s)},s.text||s.url||s.message))})},rd=dv;var hr={};Q(hr,{enUS:()=>pv,nlNL:()=>gv});var pv={waiting:[{type:0,value:"Loading\u2026"}],notSupported:[{type:0,value:"This conversation is not supported"}],noResults:[{type:0,value:"No results found\u2026"}],titleAutoflows:[{type:0,value:"Autoflows"}],titleCustomMessages:[{type:0,value:"Quick replies"}],titleCues:[{type:0,value:"Assistant updates"}],actions:[{type:0,value:"Shortcuts"}],linkStudioLogin:[{type:0,value:"My "},{type:1,value:"productName"}],linkSummary:[{type:0,value:"Summarize"}],linkKnowledgeSearch:[{type:0,value:"Knowledge Assist"}],linkSearch:[{type:0,value:"Search"}]},gv={waiting:[{type:0,value:"Laden\u2026"}],notSupported:[{type:0,value:"Dit gesprek wordt niet ondersteund"}],noResults:[{type:0,value:"Geen resultaten gevonden\u2026"}],titleAutoflows:[{type:0,value:"Autoflows"}],titleCustomMessages:[{type:0,value:"Quick replies"}],titleCues:[{type:0,value:"Assistant updates"}],actions:[{type:0,value:"Shortcuts"}],linkStudioLogin:[{type:0,value:"Mijn "},{type:1,value:"productName"}],linkSummary:[{type:0,value:"Gesprek samenvatten"}],linkKnowledgeSearch:[{type:0,value:"Knowledge assist"}],linkSearch:[{type:0,value:"Zoeken"}]};var id={root:"or",loginText:"er",stateText:"ho",sectionList:"ir",shortcutList:"rr",shortcut:"tr",link:"mo"};import{jsx as A,jsxs as kt}from"react/jsx-runtime";var Pn=(t,e)=>{let o=X(W);hv(()=>o?e.every(n=>!!n)?t():()=>{}:()=>{},[...e,o])},vv=({onLogIn:t})=>{let e=R(hr),o=yv(),n=C("isEmbedded"),s=h("Widget",id),r=C("showAutoflows"),i=C("showCustomMessages"),a=C("showSummaryCommand"),l=C("showKnowledgeSearch"),c=C("showSearch"),d=X(_e),u=X(Yo),p=X(dc),g=X(Ii),f=X(Qo),m=X(fc),S=X(bo),w=X(dt),v=X(W),y=X(xo),k=X(Pc),x=X(en),T=ae(),L=X(tl),z=X(Tc("/admin/")),F=C("adminUrl"),P=C("productName"),M=ae();if(Pn(()=>(o(ro(y)),o(xc(y)),()=>{o(bc(y))}),[o,w,i,y]),Pn(()=>(o(Ee(y)),o(uc(y)),()=>{o(pc(y))}),[o,w,r,y]),Pn(()=>{u.forEach(({type:_})=>{o(_==="entities"?ce():de(_))})},[o,w,S,d]),Pn(()=>(o(pr()),()=>{o(kc())}),[o]),w===!1)return A("div",{className:s.stateText,children:A("div",{children:A("p",{children:e("notSupported")})})},"supported");if(v===!1)return A("div",{className:s.loginText,children:A("div",{children:A(un,{isEmbedded:n,loginUrl:F,onLogIn:t})})},"login");if(!d||!y||v===null||L||k)return A("div",{className:s.stateText,children:A("div",{children:A("p",{children:e("waiting")})})},"waiting");let V=_=>{M.send(Me,{text:_,suggestion:{source:"cue",sourceText:_}})},Z=c||a||l||z;return A("div",{className:fv(s.root),"data-testid":"widget",children:kt(Gn,{className:s.sectionList,children:[Z&&A(Re,{title:e("actions"),type:"shortcuts",children:kt("div",{className:s.shortcutList,children:[c&&kt("button",{className:s.shortcut,"data-testid":"shortcut-search",onClick:()=>T.send("ShowCommandPalette",{isOpen:!0}),children:[A(mt,{}),e("linkSearch")]}),a&&kt("button",{className:s.shortcut,"data-testid":"shortcut-summary",onClick:()=>T.send("ShowCommandPalette",{isOpen:!0,page:"summary"}),children:[A(jc,{}),e("linkSummary")]}),l&&kt("button",{className:s.shortcut,"data-testid":"shortcut-knowledge-assist",onClick:()=>T.send("ShowCommandPalette",{isOpen:!0,page:"knowledgeAssist"}),children:[A(qc,{}),e("linkKnowledgeSearch")]}),z&&kt("a",{className:s.shortcut,target:"_blank",href:z,"data-testid":"shortcut-studio-login",rel:"noreferrer",children:[A(Vc,{}),e("linkStudioLogin",{productName:P})]})]})}),i&&m.length>0&&A(Re,{type:"custom-messages","data-testid":"custom-messages",children:A(oe,{withDivider:!0,children:m.map(_=>A(Dc,{suggestion:_},_.text))})}),r&&p.length>0&&A(Re,{type:"autoflows",title:e("titleAutoflows"),"data-testid":"autoflows",children:A(oe,{withDivider:!0,children:A(Oc,{})})}),u.map(({type:_,title:Nt,amount:Ot,lines:Ue})=>{var b;switch(_){case"entities":return f&&f.length>0&&A(Re,{type:_,title:Nt,"data-testid":`type-${_}`,children:A(Uc,{entities:f})},_);case"cues":return g&&g.length>0&&A(Re,{type:_,title:Nt,"data-testid":`type-${_}`,children:A(oe,{withDivider:!0,children:A(td,{cues:g,onRemoveCue:B=>o(Li({id:B})),onCopyCue:B=>We(B),onUseCue:V})})},_);default:return((b=x[_])==null?void 0:b.fetchState)==="done"&&x[_].suggestions.length>0&&A(Re,{type:_,title:Nt,"data-testid":`type-${_}`,children:A(oe,{withDivider:!0,children:A(rd,{lines:Ue,contentType:_,suggestions:x[_].suggestions.slice(0,Ot)||[]})})},_)}})]})})},ad=vv;function co(t){let e=new Range;return e.selectNodeContents(t),e}function ld(t,e,o){try{return ot(t,e,o),!0}catch{return!1}}function In(t){return"tagName"in t&&(t.tagName==="DIV"||t.tagName==="P")}function An(t){return"tagName"in t&&t.tagName==="BR"}var lo=/[\u200B-\u200D\uFEFF]/g;function ot(t,e,o){let n=new Range;if(t.firstChild===null&&e===0&&o===0)return n.selectNodeContents(t),n;let s=0,r=!1;function i(l,c){let d=-1,u=/[\u200B-\u200D\uFEFF]/;if(!u.test(l))return c;for(let p=0;p<=l.length;p++)if(u.test(l[p])||d++,d===c)return p;throw new Error("Offset out of range")}function a(l){switch(l.nodeType){case Node.TEXT_NODE:{let c=l.textContent,d=c.replace(lo,""),u=s+d.length,p=e>=s&&e<=u,g=o>=s&&o<=u;if(p){let f=i(c,e-s);f===0&&!g?n.setStartBefore(l):n.setStart(l,f)}g&&(n.setEnd(l,i(c,o-s)),r=!0),s=u;break}case Node.ELEMENT_NODE:{if(An(l)&&(s===e&&n.setStartBefore(l),s++,s===o)){n.setEndAfter(l),r=!0;return}for(let d=0;d<l.childNodes.length&&(a(l.childNodes[d]),!r);d++);let c=l.lastChild;In(l)&&c&&!In(c)&&!An(c)&&s++;break}default:break}}if(a(t),n.startContainer===document)throw new Error("Offsets out of bound");return n}function Ln(t,e){if(!t.contains(e.startContainer)||!t.contains(e.endContainer))throw new Error("Range not within root element");let{startContainer:o,startOffset:n,endContainer:s,endOffset:r,collapsed:i}=e,a,l,c=0;function d(u){let p=u===o,g=u===s;switch(u.nodeType){case Node.TEXT_NODE:{let f=u.textContent;p&&(a=c+f.substring(0,n).replace(lo,"").length),g&&(l=c+f.substring(0,r).replace(lo,"").length),c+=f.replace(lo,"").length;break}case Node.ELEMENT_NODE:{let f=u.nextSibling===null;An(u)&&!f&&c++;for(let m=0;m<u.childNodes.length;m++){let S=p&&m===n,w=g&&m===r;if(S&&(a=c),w&&(l=c),l!==void 0||((!S||!i)&&d(u.childNodes[m]),g&&m===r-1&&(l=c),l!==void 0))break}!g&&In(u)&&!f&&c++,g&&(l=c);break}default:break}}if(d(t),l===void 0)throw new Error("Could not determine start and end");return{start:a??l,end:l}}function Mn(t,e){if(!t.contains(e.startContainer)||!t.contains(e.endContainer))throw new Error("Range not within root element");let{startContainer:o,startOffset:n,endContainer:s,endOffset:r}=e,i=-1,a="";function l(c){let d=c===o,u=c===s;switch(d&&i++,c.nodeType){case Node.TEXT_NODE:{if(i!==0)return;let p=d?n:0,g=u?r:void 0,f=c.textContent.replace(lo,"");p===0&&g===void 0?a+=f:a+=f.substring(p,g);break}case Node.ELEMENT_NODE:{let p=c.nextSibling===null;i===0&&An(c)&&!p&&(a+=`
|
|
8
8
|
`);for(let g=d?n:0;g<(u?Math.min(r,c.childNodes.length):c.childNodes.length)&&(l(c.childNodes[g]),i!==1);g++);!u&&i===0&&In(c)&&!p&&(a+=`
|
|
9
|
-
`);break}default:break}u&&i++}return l(t),a}var cd=(i=>(i.CUT="Cut",i.BACKSPACE="Backspace",i.DELETE="Delete",i.ERASEEOF="EraseEof",i.UNDO="Undo",i.CLEAR="Clear",i))(cd||{}),Be=class{constructor(e){this.element=e;this.currentText=this.getText(),this.currentHTML=this.getHTML(),this.listen()}eventListeners={};disposeHandlers=[];currentText="";currentCaret=null;currentSelection={start:0,end:0};currentHTML="";isFocused=!1;isActive=!0;isSettingValue=!1;isSubmitting=!1;isPossibleClearInputAction=!1;isDisposed=!1;addEventListener(e,o){let n=s=>{o(s)};this.element.addEventListener(e,n),this.disposeHandlers.push(()=>{this.element.removeEventListener(e,n)})}removeEventListener(e,o){this.element.removeEventListener(e,o)}triggerChange(){let e=this.getText(),o=this.getHTML(),n=e!==this.currentText;this.isActive&&(e===""&&this.currentText!==""&&!this.isSettingValue&&!this.isPossibleClearInputAction&&(this.isSubmitting=!0,this.emit("submit")),!this.isSettingValue&&n&&!this.isSubmitting&&this.emit("change",{plainText:e}),n&&(this.currentSelection=this.getSelection()),this.currentText=e,this.isSubmitting=!1,(this.currentHTML!==o||o===null&&n)&&(this.emit("updated",{plainText:e}),this.triggerCaretPosition(),this.currentHTML=o))}triggerSelection(){let e=this.getSelection();(e.start!==this.currentSelection.start||e.end!==this.currentSelection.end)&&(this.currentSelection=e,this.emit("selection",e),this.triggerCaretPosition())}triggerCaretPosition(){let e=this.getCaretPosition();Ie(e,this.currentCaret)||(this.currentCaret=e,this.emit("caret",e))}handleKeyUp(e){let{key:o,shiftKey:n}=e;(o==="Enter"&&n===!0||o==="Backspace")&&this.triggerChange(),this.triggerSelection()}handleClick(){this.triggerSelection()}handleFocus(){this.isFocused||this.emit("focus"),this.triggerSelection(),this.isFocused=!0}handleBlur(){this.isPossibleClearInputAction=!1,this.isFocused&&this.emit("blur"),this.isFocused=!1}handleKeyDown(e){let{key:o,ctrlKey:n,metaKey:s}=e;this.isPossibleClearInputAction=Object.values(cd).includes(o)||o.toLowerCase()==="z"&&(n||s),this.emit("keydown",e)}handleCut(){this.isPossibleClearInputAction=!0,this.emit("cut",{selectionText:this.getSelectedText()})}handlePaste(e){var n,s;let o=((n=e.clipboardData)==null?void 0:n.getData("text"))||((s=e.clipboardData)==null?void 0:s.getData("text/plain"))||"";this.emit("paste",{pastedText:o,selectionText:this.getSelectedText()})}listen(){this.addEventListener("keydown",o=>this.handleKeyDown(o)),this.addEventListener("keyup",o=>this.handleKeyUp(o)),this.addEventListener("input",()=>this.triggerChange()),this.addEventListener("change",()=>this.triggerChange()),this.addEventListener("focus",()=>this.handleFocus()),this.addEventListener("blur",()=>this.handleBlur()),this.addEventListener("cut",()=>this.handleCut()),this.addEventListener("paste",o=>this.handlePaste(o)),this.addEventListener("click",()=>this.triggerSelection()),document.activeElement===this.element&&setTimeout(()=>{this.handleFocus()},0);let e=new MutationObserver(()=>{this.element.isConnected||(this.emit("unmounted"),this.dispose())});e.observe(document.body,{subtree:!0,childList:!0}),this.disposeHandlers.push(()=>{e.disconnect()}),this.currentSelection=this.getSelection()}focus(){this.element.focus()}emit(e,...o){this.isDisposed||this.eventListeners[e]&&this.eventListeners[e].forEach(n=>{n(...o)})}on(e,o){this.isDisposed||(this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o))}activate(){let e=this.isActive===!1;this.isActive=!0,e&&this.triggerChange()}deactivate(){this.isActive=!1}dispose(){this.disposeHandlers.forEach(e=>e()),this.eventListeners={},this.isDisposed=!0}};function dd(t){return t.top!==0||t.left!==0||t.height!==0||t.width!==0}var Rt=class extends Be{observer;lastKnownSelection=null;getRootNode(){return this.element.getRootNode()}getText(){let e=new Range;return e.selectNodeContents(this.element),Mn(this.element,e)}getHTML(){return this.element.innerHTML||""}getRange(){var r;let e=this.getRootNode();if(e.activeElement!==this.element)return null;let o="getSelection"in e?e.getSelection():window.getSelection();if(!o)return null;let n="getComposedRanges"in o&&e instanceof ShadowRoot?(r=o.getComposedRanges(e))==null?void 0:r[0]:o.rangeCount>0?o.getRangeAt(0):null;if(!n)return null;let s=this.element.ownerDocument.createRange();return s.setStart(n==null?void 0:n.startContainer,n==null?void 0:n.startOffset),s.setEnd(n==null?void 0:n.endContainer,n==null?void 0:n.endOffset),!s||!this.element.contains(s.startContainer)||!this.element.contains(s.endContainer)?null:s}getCaretPosition(){let e=this.getRange();if(!e||!e.collapsed||!("getBoundingClientRect"in e))return null;let o=e.getBoundingClientRect();return!dd(o)&&(e.insertNode(this.element.ownerDocument.createTextNode("\u2060")),o=e.getBoundingClientRect(),e.deleteContents(),!dd(o))?null:{top:o.top+o.height,left:o.left}}getSelection(){let e=this.getRange();if(e)return Ln(this.element,e);let o=this.lastKnownSelection;if(o&&ld(this.element,o.start,o.end))return o;let n=co(this.element);return n.collapse(!1),Ln(this.element,n)}getSelectedText(){let{start:e,end:o}=this.getSelection();return Mn(this.element,ot(this.element,e,o))}applyChanges(e){var s;if(!this.isActive)return;this.isSettingValue=!0;let o=this.getText(),n=e(this.element);return(s=this.observer)==null||s.takeRecords(),Promise.resolve(n).then(()=>{this.currentText=this.getText(),o!==this.currentText&&this.triggerChange(),this.isSettingValue=!1})}listen(){super.listen(),this.observer=new MutationObserver(()=>{setTimeout(()=>{this.triggerChange()},0)}),this.observer.observe(this.element,{attributes:!0,characterData:!0,childList:!0,subtree:!0});let e=this.element.isContentEditable,o=new MutationObserver(()=>{this.element.isContentEditable!==e&&(e=this.element.isContentEditable,this.emit(this.element.isContentEditable?"enabled":"disabled"))});o.observe(this.element,{attributes:!0,attributeFilter:["contenteditable"]}),this.disposeHandlers.push(()=>o.disconnect())}dispose(){super.dispose(),this.observer&&this.observer.disconnect()}};var Pt=class extends Be{lastKnownSelection=null;getText(){return this.element.value}getHTML(){return null}getSelection(){let{selectionStart:e,selectionEnd:o}=this.element;return{start:e,end:o}}getSelectedText(){let e=this.getSelection();return e?this.getText().slice(e.start,e.end):""}getCaretPosition(){return null}applyChanges(e){if(!this.isActive)return;this.isSettingValue=!0;let o=this.getText(),n=e(this.element);return Promise.resolve(n).then(()=>{this.currentText=this.getText(),o!==this.currentText&&this.triggerChange(),this.isSettingValue=!1})}listen(){super.listen();let e=Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,"value");Object.defineProperty(this.element,"value",{configurable:!0,get:()=>{var s;return(s=e==null?void 0:e.get)==null?void 0:s.call(this.element)},set:s=>{var r;(r=e==null?void 0:e.set)==null||r.call(this.element,s),this.triggerChange()}});let o=this.element.disabled,n=new MutationObserver(()=>{this.element.disabled!==o&&(o=this.element.disabled,this.emit(o?"disabled":"enabled"))});n.observe(this.element,{attributes:!0,attributeFilter:["disabled"]}),this.disposeHandlers.push(()=>n.disconnect())}};function ud(t,e,o){let n=`deepdesk-iframe-${t}`,s=document.getElementById(n);if(s)return s;let r=document.createElement("iframe"),i=new URL(e);return Object.entries(o).forEach(([a,l])=>{i.searchParams.append(a,l)}),r.style.position="absolute",r.style.left="-999em",r.style.width="0px",r.style.height="0px",r.tabIndex=-1,r.id=n,r.title=`iframe-${t}`,r.src=i.toString(),window.document.body.appendChild(r),r}function Sv(t){if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}}var yr=class{constructor(e){this.name=e;this.broadcastChannel=new BroadcastChannel(e)}broadcastChannel;disposeHandlers=[];onMessage(e){this.broadcastChannel.addEventListener("message",e),this.disposeHandlers.push(()=>{this.broadcastChannel.removeEventListener("message",e)})}postMessage(e){this.broadcastChannel.postMessage(JSON.stringify(e))}close(){this.disposeHandlers.forEach(e=>e()),this.broadcastChannel.close()}},vr=class{constructor(e,o,n){this.name=e;this.targetOrigin=o;this.options=n;this.iframe=ud(e,`${this.targetOrigin}/sdk/proxy/proxy.html`,{channel:this.name,host:window.location.origin,debug:"1"}),document.body.appendChild(this.iframe)}iframe;disposeHandlers=[];onMessage(e){window.addEventListener("message",e),this.disposeHandlers.push(()=>{window.removeEventListener("message",e)})}postMessage(e){var o;(o=this.iframe.contentWindow)==null||o.postMessage(JSON.stringify(e),this.targetOrigin)}close(){var e;this.disposeHandlers.forEach(o=>o()),(e=this.iframe)==null||e.remove()}},Sr=class{constructor(e){this.params=e;this.deepdeskUrl=e.deepdeskUrl,this.eventMap=e.eventMap,this.sessionId="deepdesk-general",this.defaultChannel=this.createChannel("deepdesk-general")}sessionId;deepdeskUrl;channel;defaultChannel;eventMap;get isCrossOrigin(){return this.params.deepdeskUrl!==(this.params.origin||window.location.origin)}setSessionId(e){this.sessionId!==e&&(this.cleanup(),E.info("Set sessionId",e),this.sessionId=e,this.channel=this.createChannel(e))}createChannel(e){let o=this.params.createCustomChannel?this.params.createCustomChannel(e):this.isCrossOrigin?new vr(e,this.deepdeskUrl,{debug:!0}):new yr(e),n=s=>{var i,a;if(s.origin!==this.deepdeskUrl)return;let r=Sv(s.data);typeof r!="object"||r.type!=="event"||r.channel!==e||(E.info("Received broadcast event",this.sessionId,s),(a=(i=this.eventMap)[r.name])==null||a.call(i,r.payload))};return o.onMessage(n),o}send(e,o,n){var i,a;E.info("Broadcast event",{sessionId:this.sessionId,name:e,payload:o});let s={type:"event",name:e,payload:o};n!==!1&&((a=(i=this.eventMap)[e])==null||a.call(i,o));let r=this.sessionId==="deepdesk-general"?this.defaultChannel:this.channel;r==null||r.postMessage({...s,channel:this.sessionId})}cleanup(e=!1){var o,n;(o=this.channel)==null||o.close(),delete this.channel,e&&((n=this.defaultChannel)==null||n.close(),delete this.defaultChannel)}},pd=Sr;var It=class extends Error{constructor(o,n){super(o);this.body=n}name="CustomError"};var xr=t=>new Promise(e=>{setTimeout(e,t)});var At=class extends It{name="ClientError"},Cr=class extends It{name="ServerError"},br=new Map,he=class t{constructor(e="",o={}){this.baseUrl=e;this.options=o;o.fetch&&(this.fetch=o.fetch)}latestRequestByUrl={};csrfToken;fetch=window.fetch.bind(window);static refreshingToken=null;patchFetch(e){this.fetch=e(this.fetch)}setCsrfToken(e){this.csrfToken=e}request(e,o={}){return new Promise((n,s)=>{let r={isAborted:!1,reject:s},i=`${this.baseUrl}${e}`,a=this.fetch,l=o.method===void 0||o.method.toLowerCase()==="get",{useCache:c=!1,abortLatest:d=!1,attempts:u=1,retryDelay:p=500,refreshTokenOn401:g=!0,retryOnError:f=T=>T instanceof TypeError,retryOnResponse:m=T=>T.status>=500,version:S="v1",...w}=o;if(c)if(l){if(br.has(i)){n(br.get(i));return}}else throw new Error(`Can't use 'useCache' for ${o.method}`);let v={credentials:"include",...w,headers:{"Content-Type":"application/json",...w.headers}};!l&&this.csrfToken&&(v.headers={...v.headers,"X-CSRFToken":this.csrfToken}),typeof S=="string"&&(v.headers={...v.headers,"X-Deepdesk-API-Version":S});let y=u,k=!1;if(!a)throw new Error("fetch is not set");this.latestRequestByUrl[i]&&d&&(this.latestRequestByUrl[i].isAborted=!0,this.latestRequestByUrl[i].reject(new Error("Aborted"))),this.latestRequestByUrl[i]=r;let x=async()=>(y--,a(i,v).then(async T=>m(T)&&!r.isAborted&&y>0?(await xr(p),x()):T.status===401&&g===!0&&k===!1?(k=!0,await this.refreshToken(),x()):T).catch(async T=>{if(f(T)&&!r.isAborted&&y>0)return await xr(p),x();throw T}));x().then(T=>T.json().catch(()=>null).then(L=>{T.status>=500?s(new Cr("Server Error",L)):T.status===401?s(new At("Unauthorized",L)):T.status===403?s(new At("Forbidden",L)):T.status===404?s(new At("Not Found",L)):T.status>=400&&s(new At("Bad Request",L)),delete this.latestRequestByUrl[i],c&&br.set(i,L),n(L)})).catch(T=>{s(T)})})}async validateToken(){let{has_valid_access_token:e}=await this.get("/auth/validate");if(!e)return!1;let{is_logged_in:o}=await this.get("/apis/admin/session/validate/",{version:null});return!!o}refreshToken(){return t.refreshingToken||(t.refreshingToken=this.get("/auth/refresh",{refreshTokenOn401:!1}).finally(()=>{setTimeout(()=>{t.refreshingToken=null},1e3*60)})),t.refreshingToken}get(e,o){return this.request(e,o)}post(e,o,n){return this.request(e,{method:"POST",body:JSON.stringify(o),...n})}patch(e,o,n){return this.request(e,{method:"PATCH",body:JSON.stringify(o),...n})}put(e,o,n){return this.request(e,{method:"PUT",body:JSON.stringify(o),...n})}delete(e,o){return this.request(e,{method:"DELETE",...o})}};var xv;(e=>{let t;(l=>(l.SEND_MESSAGE="Send Message",l.HANDLING_TIME="Handling Time",l.START_AUTOFLOW="Start Autoflow",l.ABORT_AUTOFLOW="Abort Autoflow",l.ADD_TO_PERSONAL_COLLECTION="Add to personal collection",l.DELETE_FROM_PERSONAL_COLLECTION="Delete from personal collection"))(t=e.EventType||={})})(xv||={});function Nn(t){return{...I(t),tags:t.tags}}var Ke=class t{constructor(e,o={}){this.options=o;this.client=new he(e,{fetch:o.fetch}),this.client.patchFetch(n=>async(s,r)=>{let i=await n(s,r);return this.handleDeepdeskVersionHeaders(i),i})}latestReceivedDeepdeskVersions={};client;shouldFetchCsrfToken=!0;static exchangeTokenPromise=null;async preflight(){if(this.shouldFetchCsrfToken){this.shouldFetchCsrfToken=!1;let e=await this.getCsrfToken();this.client.setCsrfToken(e)}return this.options.token?(t.exchangeTokenPromise||(t.exchangeTokenPromise=this.exchangeTokenForAccessCookie(this.options.token)),t.exchangeTokenPromise):Promise.resolve()}async createConversation(e){await this.preflight(),E.info(`Creating conversation for session ${e.sessionId} and agent ${e.agentId}`);let o=await this.client.post("/api/conversations",{...U(e),tags:e.tags},{version:"v2"});return Nn(o)}async getProfile(e){let o=await this.client.get(`/apis/admin/profiles/${e}/`,{version:null,useCache:!0});return I(o)}async getKnowledgeAssistant(e){let o=await this.client.get(`/apis/admin/knowledge-assist/assistants/${e}/`,{version:null,useCache:!0});return I(o)}async getContentTypes(){let e=await this.client.get("/apis/admin/content-types/",{version:null,useCache:!0});return I(e)}async getAccount(){let e=window.location.host.split(".")[0],o=await this.client.get(`/apis/admin/accounts/${e}/`,{version:null,useCache:!0});return I(o)}async getPlatformConfig(){let{config:e}=await this.client.get("/platform/config/",{version:null,useCache:!0});return I(e)}async checkUserExists(e){let{exists:o}=await this.client.get(`/apis/admin/users/exists?external_id=${e}`);return o}async getConversationBySessionId(e,o={}){await this.preflight(),E.info(`Getting conversation for session ${e}`);let{attempts:n=1,retryDelay:s=1e3}=o,r=await this.client.get(`/api/conversations/by_session_id/${e}`,{attempts:n,retryDelay:s,retryOnResponse:i=>i.status===404||i.status>=500,version:"v2"});return E.info(`Successfully retrieved conversation ${r.id} for session ${e}`),Nn(r)}async isConversationSupported(e,o={}){E.info(`Check if conversation for session ${e} is supported`);let{attempts:n=1,retryDelay:s=1e3}=o;return(await this.client.get(`/api/conversations/by_session_id/${e}/active_profile`,{attempts:n,retryDelay:s,retryOnResponse:i=>i.status===404||i.status>=500,version:"v2"})).has_active_profile}async updateConversation(e,o){let n=U(o);o.tags&&(n.tags=o.tags);let s=await this.client.put(`/api/conversations/${e}`,n,{version:"v2"});return Nn(s)}async postMessages(e,o){return(await this.client.post(`/api/conversations/${e}/messages`,o.map(s=>({...U(s),tags:s.tags})),{version:"v2"})).map(s=>Nn(s))}async sendEvent(e,o){let{data:n,...s}=o,r=Object.entries(this.latestReceivedDeepdeskVersions).reduce((i,[a,l])=>({...i,[a]:l}),{});return this.client.post("/api/events",U({...r,...s,data:n,name:e}),{version:"v2"})}async sendEventV1(e,o){let n=Object.entries(this.latestReceivedDeepdeskVersions).reduce((s,[r,i])=>({...s,[r]:i}),{});return this.client.post("/api/events",{event:e,data:U({...o,...n})})}async getEntities(e){return(await this.client.post("/api/entities",{messages:e.filter(n=>n.text)})).entities}async getSummary(e,o={}){return(await this.client.post("/api/summary",{conversation:{messages:e.filter(s=>s.text&&s.source),agent_id:o.agentId,id:o.externalConversationId},prompt_instruction:o.promptInstruction,model:o.model})).summary}async getTemporaryExchangeToken(){return(await this.client.get("/auth/exchange-token",{version:null})).jwt}async exchangeTokenForAccessCookie(e){return this.client.post("/apis/admin/session/jwt/",{jwt:e},{version:null}).catch(o=>{throw E.warn(`Invalid token '${e}'`),o})}async authenticateWithKey(e,o){await this.preflight(),await this.client.post("/apis/admin/session/api-key/",U(o),{version:null,refreshTokenOn401:!1,headers:{apikey:e}})}async getTextSuggestions(e,o={},n){return n==="sticky-messages"?this.getPinnedMessages(e):(await this.client.post(`/api/conversations/${e}/recommend/${n}`,U(o),{abortLatest:!0})).map(r=>({...I(r),text:r.text||r.url||r.message,source:n,type:n})).filter((r,i,a)=>i===a.findIndex(l=>l.text===r.text))}async isLoggedIn(){return await this.preflight(),this.client.validateToken()}async getAutocompleteSuggestions(e,o){return(await this.client.post(`/api/conversations/${e}/autocomplete`,U(o),{abortLatest:!0})).map(s=>({score:1,source:s.source,sourceText:s.source_text,text:s.label,trainingJobs:s.training_jobs,searchKeywords:s.search_keywords,type:s.source})).filter((s,r,i)=>r===i.findIndex(a=>a.text===s.text))}async getPinnedMessages(e){let o=await this.client.get(`/api/conversations/${e}/sticky-messages`,{abortLatest:!0});return I(o).map(n=>({...n,text:n.message,source:"sticky-messages",type:"pinned-message"}))}async getStyleSuggestions(e){let o=await this.client.post("/api/style-suggestions",U(e),{abortLatest:!0});return I(o)}async search(e){let o=await this.client.post(`/api/profiles/${e.profile}/search`,U(e),{version:"v2"});return I(o)}async knowledgeAssist(e,o,n,s={}){let r=await this.client.post(`/api/knowledge-assist/assistants/${n}/search`,U({question:e.question,promptInstruction:e.promptInstruction,chatHistory:o.map(i=>({question:i.question,answer:i.answer.answer})),agentId:s.agentId,conversationId:s.conversationId}),{version:"v2"});return I(r)}async requestLoginByEmail(e){let o=await this.client.post("/apis/admin/session/passwordless/request/",{email:e},{version:null});return I(o)}async requestPasswordlessToken(){let e=await this.client.get("/apis/admin/session/passwordless/request/",{version:null});return I(e.token)}async getCsrfToken(){let{token:e}=await this.client.get("/apis/admin/session/csrf/",{version:null});return e}async verifyLoginToken(e){let o=await this.client.post("/apis/admin/session/passwordless/login/",{token:e},{version:null});return I(o)}async evaluateRule(e,o,n,s={}){let r=new URLSearchParams;s.raiseForFailingConditions&&r.set("raise_for_failing_conditions","true");let i=await this.client.post(`/api/conversations/${o}/rules/${e}/evaluate?${r.toString()}`,n,{version:"v2"});return I(i.cues)}async getRules(){let e=new URLSearchParams,o=await this.client.get(`/apis/admin/rule-engine/rules/?${e.toString()}`,{version:null,useCache:!0});return I(o)}async translateMessages(e){let o=await this.client.post("/api/translate",U(e),{version:"v2"});return I(o)}handleDeepdeskVersionHeaders(e){e.headers.forEach((o,n)=>{let s=n.toLowerCase(),r=s.match(Vr);if(!o||!r)return;let i=r[1].replace("-","_"),a=this.latestReceivedDeepdeskVersions[i];a&&o&&a!==o&&E.warn(`Overwritten Version header ${s}: ${JSON.stringify(a)} -> ${JSON.stringify(o)}`),this.latestReceivedDeepdeskVersions[i]=o})}};var uo=class{constructor(e,o){this.url=e;this.options={timeout:25e3,...o}}eventListeners={};options;timeoutTimer;eventSource;proxyEvent(e){this.eventSource.addEventListener(ts(e),o=>{let{data:n}=o;try{let s=JSON.parse(n);this.emit(e,I(s))}catch{E.warn(`Invalid JSON for ${e}: ${n}`)}})}connect(){clearTimeout(this.timeoutTimer);let e=new EventSource(this.url,{withCredentials:!0});this.eventSource=e;let o=!1;e.onopen=()=>{o=!0},e.onerror=()=>{o&&e.readyState===2&&this.connect()},this.timeoutTimer=setTimeout(()=>{e.close(),this.connect()},this.options.timeout),Object.keys(this.eventListeners).forEach(n=>{this.proxyEvent(n)})}disconnect(){var e;clearTimeout(this.timeoutTimer),this.eventListeners={},(e=this.eventSource)==null||e.close()}emit(e,o){this.eventListeners[e]&&this.eventListeners[e].forEach(n=>n(o))}on(e,o){return this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o),this.proxyEvent(e),()=>{this.off(e,o)}}off(e,o){let n;this.eventListeners[e]&&(n=this.eventListeners[e].indexOf(o),n>-1&&this.eventListeners[e].splice(n,1))}};var bv;(e=>{let t;(r=>(r.Started="Started",r.Aborted="Aborted",r.Completed="Completed"))(t=e.AutoflowSessionState||={})})(bv||={});var po=class{constructor(e,o={}){this.apiUrl=e;this.client=new he(e,o)}client;streams={};logger=E;async getCustomMessages(e){let o=await this.client.get(`/sessions/${e}/suggestions`);return I(o.suggestions)}async sendCustomMessage(e,o){let n=await this.client.post(`/sessions/${e}/messages`,U(o));return I(n)}async answerCustomMessage(e,o){await this.client.post(`/sessions/${e}/answers`,U(o))}async getAutoflows(e){let o=await this.client.get(`/sessions/${e}/autoflows`);return I(o.autoflows)}async startAutoflowSession(e){let o=await this.client.post("/autoflow-sessions",U(e));return I(o)}async stopAutoflowSession(e){await this.client.delete(`/autoflow-sessions/${e}`)}openStream(e){return this.streams[e]||(this.streams[e]=new uo(`${this.apiUrl}/sessions/${e}/events`),this.streams[e].connect()),this.streams[e]}closeStream(e){this.streams[e]||(this.streams[e].disconnect(),delete this.streams[e])}};import{combineReducers as Pv,configureStore as Iv}from"@reduxjs/toolkit";import{createSlice as Cv}from"@reduxjs/toolkit";var gd={startTime:null,stopTime:null},md=Cv({name:"handlingTime",initialState:gd,reducers:{handlingTimeStart(t){if(t.startTime&&!t.stopTime)throw new Error("Timing already started");t.startTime=new Date,t.stopTime=null},handlingTimeStop(t){if(!t.startTime)throw new Error("Timing not started");t.stopTime=new Date},handlingTimeReset(t){t.startTime=null,t.stopTime=null}},extraReducers:t=>{t.addCase(N,()=>gd)}}),{handlingTimeStart:fd,handlingTimeStop:On,handlingTimeReset:hd}=md.actions,yd=md.reducer;var vd=(t={})=>{let e={onAuthError:lt(!1),...t};return o=>n=>s=>("error"in s&&s.error.message==="Unauthorized"&&o.dispatch(e.onAuthError),n(s))};import{createAsyncThunk as wv,createSlice as Tv}from"@reduxjs/toolkit";var _n={list:{keywordMatches:[]},fetchState:"idle",isInitialRequest:null};var nt=wv("styleSuggestions/getAll",async({text:t},e)=>{var i;let{deepdeskAPI:o}=e.extra,n=e.getState(),{showStyleSuggestions:s}=n.settings,r=(i=n.conversation.current)==null?void 0:i.profileCode;if(!s)return _n.list;if(!r)throw new Error("No current conversation to fetch pinned messages");return o.getStyleSuggestions({profileCode:r,message:t})}),Ev=Tv({name:"styleSuggestions",initialState:_n,reducers:{},extraReducers:t=>{t.addCase(nt.pending,e=>{e.isInitialRequest=e.isInitialRequest===null,e.fetchState="loading"}).addCase(nt.rejected,e=>{e.fetchState="error"}).addCase(nt.fulfilled,(e,o)=>{e.fetchState="done",Ie(e.list,o.payload)||(e.list=o.payload)}).addCase($e,e=>{e.list=_n.list}).addCase(N,()=>_n)}}),Sd=Ev.reducer;var xd=(t={})=>{let e,o=!0,n={getStyleSuggestions:nt,debounce:500,...t};return s=>r=>i=>{var g;let a=s.getState().input.text,l=r(i),c=s.getState();if(c.auth.isLoggedIn!==!0)return l;let{showStyleSuggestions:d}=c.settings;if(!((g=c.conversation.current)==null?void 0:g.id)||!d)return l;let{text:p}=c.input;return p===a&&!o||(clearTimeout(e),p==="")||(e=setTimeout(()=>{o=!1,s.dispatch(n.getStyleSuggestions({text:p}))},t.debounce)),l}};function kv(t,e){return t.text===e.text&&t.selection.start===e.selection.start&&t.selection.end===e.selection.end}var bd=(t={})=>{let e={getTextSuggestions:de,getAutocompleteSuggestions:Yt,debounce:200,check:bt,...t},o;return n=>s=>r=>{var m;let{input:{userCommitted:i}}=n.getState(),a=s(r),l=n.getState();if(l.auth.isLoggedIn!==!0)return a;let{recommendTextSuggestions:c,showTabCompletion:d}=l.settings,u=(m=l.conversation.current)==null?void 0:m.id,p=r.type===tn.toString();if(!u||!c&&!d)return a;let{input:{userCommitted:g}}=l;return kv(g,i)&&!p||(clearTimeout(o),!e.check(l))||(o=setTimeout(()=>{let S=pt(l);S===""?n.dispatch(e.getTextSuggestions("default")):n.dispatch(e.getAutocompleteSuggestions(S))},p?0:e.debounce)),a}};var Cd=nt.fulfilled.toString();function Rv(t,e){let o=new Set([...e.keywordMatches.map(s=>s.keyword)]),n=[];return o.forEach(s=>{let r=t.keywordMatches.filter(l=>l.keyword===s),i=e.keywordMatches.filter(l=>l.keyword===s),a=i.length-r.length;a<=0||n.push(...i.slice(0,a))}),n}var wd=t=>e=>o=>n=>{var c;if(n.type!==Cd){o(n);return}let s=e.getState().styleSuggestions.list;o(n);let r=e.getState(),i=r.styleSuggestions.list,a=(c=r.conversation)==null?void 0:c.current;if(s===i)return;let l=Rv(s,i);n.type===Cd&&l.length>0&&t.sendEvent("style suggested",{conversationId:a==null?void 0:a.id,data:{keywordMatches:l}})};var Av=Pv({answer:za,auth:Jr,autoflows:gc,conversation:oi,contentTypes:ea,customMessages:Cc,passwordlessToken:Rc,entities:ka,knowledgeAssistant:Ba,handlingTime:yd,info:bi,input:yi,settings:qr,profile:Wa,search:Pi,summary:Na,styleSuggestions:Sd,ui:xl,rules:Mi,textSuggestions:sl});function Td(t){return Iv({reducer:Av,middleware:e=>[...e({thunk:{extraArgument:{dynamicThunkObject:t.dynamicThunkObject,deepdeskAPI:t.deepdeskAPI,deepdeskBrokerAPI:t.deepdeskBrokerAPI}},serializableCheck:!1}),vd(),bd({debounce:200}),xd({debounce:500}),wd(t.deepdeskAPI),...t.middleware?t.middleware:[]],preloadedState:t.preloadedState})}var Lv=t=>{var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())??"unknown"},Mv=t=>e=>o=>n=>{var a;let s=e.getState(),r=Xn("inlineSuggestions")(s);switch(n.type){case lt.toString():{!n.payload&&t.emit("logout",void 0);break}case ce.fulfilled.toString():n.payload.length>0&&t.sendEvent("entities found",{conversationId:s.conversation.current.id,data:{entities:n.payload}});break;case Ce.fulfilled.toString():t.sendEvent("conversation summarized",{conversationId:s.conversation.current.id,data:{summary:n.payload.summary}});break;case G.toString():t.sendEvent(n.payload.name,{conversationId:((a=n.payload.options)==null?void 0:a.includeConversationData)&&s.conversation.current.id,data:n.payload.data});break;case Po.toString():t.handleKeyDown(n.payload);break;case $e.toString():t.logSendMessage(n.payload);break;case Io.toString():t.handleInputChanged(n.payload);break;case be.fulfilled.toString():t.broadcast(is,n.payload,!1),t.emit("cues",n.payload);break;default:break}let i=o(n);switch(n.type){case $e.toString():t.handleAfterSendMessage(n.payload);break;case eo.toString():t.onUpdateShowTabHint(n.payload);break;case On.toString():t.logHandlingTime();break;case ge.toString():{let{start:l,end:c}=s.input.selection;t.emit("select-suggestion",{type:Lv(n.payload.suggestion),...n.payload,replace:n.payload.replace==="selection"?{start:l,end:c}:{start:0,end:c}},{mayApplyChanges:!0}),r&&(e.dispatch(pe([])),e.dispatch(xe()));break}case Ro.toString():{let{start:l,end:c}=s.input.selection;t.emit("replace",{...n.payload,replace:n.payload.replace==="selection"?{start:l,end:c}:{start:0,end:c}},{mayApplyChanges:!0});break}case Ft.toString():{let l=e.getState(),{text:c,selection:d}=l.input.userCommitted;t.emit("reset",{text:c,selectionAfter:d},{mayApplyChanges:!0});break}case Ao.toString():t.emit("select-image",n.payload,{mayApplyChanges:!0}),t.sendEvent("Image attached",{conversationId:s.conversation.current.id,data:{path:n.payload.suggestion.image,title:n.payload.suggestion.title}});break;case pe.toString():{r&&n.payload.length>0&&e.dispatch(Le(0));break}default:break}return i},Ed=Mv;function wr(t){return t.toISOString().replace("T"," ").replace("Z","")}function kd(t,e){var s,r,i;let{startTime:o,stopTime:n}=t.handlingTime;if(!o||!n)throw new Error("No startTime and stopTime for handling time metrics");return{conversationId:t.conversation.current.id,clientVersion:e.version,agentId:(s=t.info.agentInfo)==null?void 0:s.agentId,agentName:(r=t.info.agentInfo)==null?void 0:r.agentName,agentEmail:(i=t.info.agentInfo)==null?void 0:i.agentEmail,timeStart:wr(o),timeStop:wr(n)}}function Rd(t,e,o){var L,z,F;let{text:n,metrics:{numCharsTyped:s,numCharsPasted:r,numCharsCut:i,numCharsDeleted:a,numPaste:l,agentStartedTypingTimestamp:c,externalTimeTotalSeconds:d,pastes:u,cuts:p,deletions:g,textSuggestions:f,offeredTextSuggestions:m}}=e[t],S=n.length,v=f.reduce((P,{text:M,searchTerm:V})=>P+M.length-(V?V.length:0),0),y=c??Date.now(),k=(Date.now()-y)/1e3+(d||0),x=s/k,T=f.reduce((P,{searchTerm:M})=>P+(M?M.length:0),0);return{conversationId:e.conversation.current.id,source:"agent",text:n,clientVersion:o.version,pastes:u,cuts:p,deletions:g,lenTextTyped:s+T,lenTextTotal:S,lenTextAssisted:v,lenTextPasted:r,lenTextCut:i,lenTextDeleted:a,timeTotalSeconds:k,charsPerSecond:x,numPastes:l,textSuggestionsV2:f,suggestionsCounters:[{source:"gpt",countOffered:m.filter(P=>P.source==="gpt").length}],agentId:(L=e.info.agentInfo)==null?void 0:L.agentId,agentName:(z=e.info.agentInfo)==null?void 0:z.agentName,agentEmail:(F=e.info.agentInfo)==null?void 0:F.agentEmail}}function Tr(t,e){var r;let o=t.closest(e);if(o)return o;let n=t.getRootNode().host;if(n instanceof HTMLElement)return Tr(n,e);let s=(r=t.ownerDocument.defaultView)==null?void 0:r.frameElement;return s?Tr(s,e):null}function Pd(t,e){return Tr(t,e)}function Id(t){return typeof t=="object"&&t!==null&&"name"in t&&"message"in t}function Nv(t){return typeof t=="object"&&t!==null&&"tagName"in t}function Er(t){return Nv(t)&&(He(t)||pn(t))}var Ad,ye=new Map,Ov=["bottom","height","left","right","top","width"],_v=(t={},e={})=>Ov.some(o=>t[o]!==e[o]);function Ld(t){var o,n;if(t.ownerDocument===document)return[];let e=((n=(o=t.ownerDocument)==null?void 0:o.defaultView)==null?void 0:n.frameElement)??null;return e?[e,...Ld(e)]:[]}function Md(t,e){return!t||!e?null:{...t,top:t.top+e.top,left:t.left+e.left}}var Dn=!1,Nd=()=>{Dn=!0;let t=[];if(ye.forEach((e,o)=>{if(!o.isConnected){e.rect=null,t.push(e),ye.delete(o);return}let n=o.getBoundingClientRect();_v(n,e.rect)&&(e.rect=n,t.push(e))}),t.forEach(e=>{let o=e.parentRects?e.parentRects.reduce(Md,e.rect):e.rect;e.callbacks.forEach(n=>n(o))}),ye.size===0){Dn=!1;return}Ad=window.requestAnimationFrame(Nd)};function kr(t,e){let o=Ld(t),n=[],s=o.map((r,i)=>kr(r,a=>{n[i]=a;let l=ye.get(t);if(!l)return;let c=n.reduce(Md,l.rect);l.callbacks.forEach(d=>d(c))}));return{observe(r=!0){if(s.forEach(i=>i.observe(!1)),ye.has(t)){let i=ye.get(t);i.callbacks.push(e),i.rect&&e(i.rect)}else ye.set(t,{rect:void 0,callbacks:[e],parentRects:n});r&&!Dn&&Nd()},unobserve(){s.forEach(i=>i.unobserve());let r=ye.get(t);if(r){let i=r.callbacks.indexOf(e);i>=0&&r.callbacks.splice(i,1),r.callbacks.length||ye.delete(t),ye.size||(cancelAnimationFrame(Ad),Dn=!1)}}}}var Od,ve=new Map,_d=()=>{ve.forEach((t,e)=>{if(!e.isConnected){ve.delete(e);return}let{clientHeight:o,scrollHeight:n}=e,s=n>o;t.visible!==s&&(t.visible=s,t.callbacks.forEach(r=>r(t.visible)))}),ve.size!==0&&(Od=window.requestAnimationFrame(_d))};function Dd(t,e){return{observe(){let o=ve.size===0;ve.has(t)?ve.get(t).callbacks.push(e):ve.set(t,{visible:void 0,callbacks:[e]}),o&&_d()},unobserve(){let o=ve.get(t);if(o){let n=o.callbacks.indexOf(e);n>=0&&o.callbacks.splice(n,1),o.callbacks.length||ve.delete(t),ve.size||cancelAnimationFrame(Od)}}}}var Rr=["borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","borderStyle","boxSizing","color","overflowWrap","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontWeight","fontKerning","lineHeight","letterSpacing","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","textIndent","whiteSpace","wordBreak","wordSpacing","wordWrap"];function Pr(t,e,o){return o.forEach(n=>{e.style[n]=t[n]})}function Lt(t){return parseFloat(t)}function Hn(t){return Math.round(t*1e6)}function Hd(t){return t/1e6}function Ir(t,e,o){if(t.boxSizing==="content-box")return;let{clientWidth:n}=e,s=Lt(t.width),r=Lt(t.borderLeftWidth),i=Lt(t.borderRightWidth),a=Lt(t.paddingRight),l=Hd(Hn(s)-Hn(r)-Hn(i)),c=Hd(Hn(n));if(l-c>2){let d=l-c;o.style.paddingRight=`${a+d}px`}}function Fn(t,e={}){var d;let o=e.overlayContainer||document.createElement("div");o.style.display="none",o.style.position=e.position??"fixed",o.style.pointerEvents="none",o.style.borderColor="transparent",Je(o);let n=window.getComputedStyle(t),s=!0,r=()=>{o.scrollTop=t.scrollTop};Pr(n,o,Rr),Ir(n,t,o),e.mirrorOverflow&&(o.style.overflow="hidden",t.addEventListener("scroll",r));let i=Dd(t,()=>{Pr(n,o,Rr),Ir(n,t,o),r(),setTimeout(r,0)}),a,l=!0,c=kr(t,u=>{if(u===null){e.onRemove&&e.onRemove(),o.remove();return}if(!l&&e.onMoveStart&&(Promise.resolve().then(()=>e.onMoveStart()),l=!0),clearTimeout(a),a=setTimeout(()=>{e.onMoveEnd&&e.onMoveEnd(),l=!1},200),u.height===0&&u.width===0){if(s===!0)return;e.onHide&&e.onHide(),o.style.display="none",s=!0;return}if(Pr(n,o,Rr),Ir(n,t,o),r(),o.style.top=`${u.top}px`,o.style.left=`${u.left}px`,e.closestScrollElement&&e.closestScrollElement!==t){let p=e.closestScrollElement.getBoundingClientRect(),g=window.getComputedStyle(e.closestScrollElement),f=Lt(g.borderTopWidth),m=Lt(g.borderBottomWidth),S=p.top+f-u.top,w=u.top+u.height+-(p.top+p.height-m);o.style.clipPath=`inset(${S}px 0px ${w}px 0px)`}s&&(o.style.display="block",e.onShow&&e.onShow(),s=!1)});return e.appendTo?e.appendTo.appendChild(o):(d=t.parentElement)==null||d.appendChild(o),c.observe(),i.observe(),[o,()=>{t.removeEventListener("scroll",r),c.unobserve(),i.unobserve()}]}var Fd=(t,e)=>({value(){try{let o=sessionStorage.getItem(`dd-${t}`);if(!o)return e;try{return JSON.parse(o)}catch{return e}}catch{return e}},update(o){try{sessionStorage.setItem(`dd-${t}`,JSON.stringify(o))}catch{E.warn("[Deepdesk] SessionStorage is blocked by browser")}}});function Dv(t){return t.offsetParent!==null}function Bd(t){if(!Dv(t))return!1;let e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}function Ar(t,e,o=100){let n=Bd(t);e({isVisible:n});let s=setInterval(()=>{let r=Bd(t);r!==n&&(n=r,e({isVisible:n}))},o);return()=>{clearTimeout(s)}}import{jsx as $}from"react/jsx-runtime";var Kd=Fd("showTabHint",!0),Kn=class t{static version="11.1.1-beta.0";static count=0;deepdeskApi;inputMediator=null;version;broadcastEvents;eventListeners={};unmountHandlers=[];widgetRoot=null;dynamicThunkObject={};isMounted=!1;instanceId;shouldRender=!0;store;constructor({deepdeskUrl:e,brokerUrl:o,version:n=t.version||"unknown",locale:s="en-US",token:r,fetch:i,productName:a,createCustomChannel:l}){let c=e.replace(/\/api$/,"");this.deepdeskApi=new Ke(c,{token:r,fetch:i}),this.version=n,this.instanceId=t.count++;let d={deepdeskAPI:this.deepdeskApi,dynamicThunkObject:this.dynamicThunkObject,middleware:[Ed({broadcast:(u,p,g)=>{this.broadcastEvents.send(u,p,g)},emit:(u,p,g)=>this.emit(u,p,g),handleAfterSendMessage:u=>this.handleAfterSendMessage(u),handleInputChanged:u=>this.handleInputChanged(u),handleKeyDown:u=>this.handleKeyDown(u),logHandlingTime:()=>this.logHandlingTime(),logSendMessage:u=>this.logSendMessage(u),onUpdateShowTabHint:u=>Kd.update(u),sendEvent:(u,p)=>this.deepdeskApi.sendEvent(u,p)})]};o&&Object.assign(d,{deepdeskBrokerAPI:new po(o)}),this.store=Td(d),this.broadcastEvents=new pd({debug:!0,deepdeskUrl:c,eventMap:Ni(this.store),createCustomChannel:l}),this.store.dispatch(eo(Kd.value())),this.store.dispatch(So({locale:s,adminUrl:c,productName:a}))}get state(){return this.store.getState()}get settings(){return this.state.settings}get selectedTextSuggestion(){return this.state.input.textSuggestions[this.state.input.selectedSuggestionIndex]??null}hasConversation(){return!!this.state.conversation.current}conversationId(){if(!this.hasConversation())throw new Error("No conversation loaded");return this.state.conversation.current.id}sessionId(){if(!this.hasConversation())throw new Error("No conversation loaded");return this.state.conversation.current.sessionId}shouldAbort(){return this.state.conversation.isSupported===!1?(E.warn("Conversation is not supported"),!0):this.hasConversation()?this.state.profile.data?!1:(E.warn("Profile has not been loaded (yet)"),!0):(E.warn("No conversation loaded (yet)"),!0)}login(){return this.store.dispatch(lt(null)),this.store.dispatch(Se()),new Promise(e=>{let o=this.store.subscribe(()=>{let n=this.store.getState();W(n)&&Gr(n)!=="loading"&&(o(),e())});this.unmountHandlers.push(()=>{o()})})}async isLoggedIn(){return(await this.store.dispatch(Se())).payload}async setPlatformAgentId(e){try{if((await this.deepdeskApi.client.get("/apis/admin/session/me/",{version:null})).external_id)return;await this.deepdeskApi.client.request("/apis/admin/session/me/",{method:"PATCH",body:JSON.stringify({external_id:e}),version:null})}catch(o){E.warn("Failed to attach user:",o)}}async isConversationSupported(e,o){return(await this.store.dispatch(Jn({sessionId:e,options:o}))).payload}async createConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(Co(e))).payload}async getConversationBySessionId(e,o){return this.hasConversation()&&this.sessionId()!==e&&this.resetConversation(),(await this.store.dispatch(wo({sessionId:e,options:o}))).payload}async upsertConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(Yn(e))).payload}async postMessages(e){return(await this.store.dispatch(Eo(e))).payload}async updateConversation(e){return(await this.store.dispatch(To(e))).payload}resetConversation(){this.store.dispatch(N()),this.loadProfileConfigPromise=null,this.dynamicThunkObject.conversationQuery=null}async getSummary(){let e=await this.store.dispatch(Ce());if(e.error)throw new Error(e.error.message);return e.payload.summary}configure(e){this.store.dispatch(So(e))}setVisitorInfo(e){this.store.dispatch(xi(e))}async setAgentInfo(e){await this.store.dispatch(Bt(e))}async setAgentSettings(e){await this.store.dispatch(ns(e))}async getAgentSettings(){return(await this.store.dispatch(ss())).payload}async refresh(){if(this.shouldAbort())return Promise.resolve();this.inputMediator&&this.handleInputChanged(this.inputMediator.getText());let e=[];return this.store.dispatch(tn()),e.push(this.refreshWidgetSuggestions()),Promise.all(e).then(()=>{})}notifyInputChanged(e){this.store.dispatch(Io(e))}notifyKeyDown(e){this.store.dispatch(Po(e))}notifyPaste(e,o){this.store.dispatch(gi({text:e,selectionText:o}))}notifyCut(e){this.store.dispatch(ui(e))}notifyExternalSuggestion(e){this.store.dispatch(ge(e)),this.store.dispatch(xe())}async evaluateRule(e,o={}){let{payload:n,error:s}=await this.store.dispatch(be({label:e,params:o}));if(s)throw new Error(s.message);return n}handleInputChanged(e){let{overlayCollapsed:o,openOverlayWhenTyping:n}=this.state.ui;o&&n&&this.store.dispatch(De({collapse:!1})),this.inputMediator&&this.store.dispatch(ii({text:e,html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),!this.shouldAbort()&&(this.isMounted||this.store.dispatch(pe([])))}handleKeyDown(e){let{overlayCollapsed:o}=this.state.ui,{textSuggestions:n,selectedSuggestionIndex:s,selection:r}=this.state.input,{inlineSuggestions:i}=this.state.settings,a=n.length>0,l=s!==-1;if(this.store.dispatch(pi(ni(e))),e.key!=="Tab"&&!this.settings.showTextSuggestions)return;let c=()=>{o||!a||r&&(e.shiftKey||(this.store.dispatch(li()),i||this.stageSelectedSuggestion({inputType:"arrow"}),e.preventDefault()))},d=()=>{o||!a||i&&s<=0||r&&(e.shiftKey||(this.store.dispatch(di()),e.preventDefault(),!i&&(this.state.input.selectedSuggestionIndex===-1?this.store.dispatch(Ft()):this.stageSelectedSuggestion({inputType:"arrow"}))))};switch(e.key){case"Up":case"ArrowUp":i?d():c();return;case"Down":case"ArrowDown":{i?c():d();return}case"Esc":case"Escape":{i&&l&&this.store.dispatch(Le(-1)),this.state.input.selectedSuggestionIndex!==-1?(this.store.dispatch(Le(-1)),this.store.dispatch(Ft()),e.preventDefault()):o||(this.store.dispatch(De({collapse:!0})),this.store.dispatch(vl(!0)),e.preventDefault());return}case"Tab":{let{userCommitted:u}=this.state.input,p=u.text.substring(0,u.selection.end),{tabCompletionSuggestion:g}=this.state.input;this.store.dispatch(eo(!1)),this.state.input.selectedSuggestionIndex>-1?this.stageSelectedSuggestion({inputType:"tab"}):!i&&this.settings.showTabCompletion&&g&&g.text.startsWith(p)&&(this.store.dispatch(ge({text:g.text,suggestion:g,eventMetrics:{inputType:"tab"},replace:"until-selection-end"})),this.store.dispatch(xe())),e.preventDefault();break}default:}}handleAfterSendMessage(e){this.emit("send-message",e),this.store.dispatch(mi()),this.store.dispatch(pe([]))}handlingTimeStart(){this.state.handlingTime.startTime||(E.info("Start handling time"),this.store.dispatch(fd()))}handlingTimeStop(){this.state.handlingTime.startTime&&(E.info("Stop handling time"),this.store.dispatch(On()))}logSendMessage(e){let o=Rd("input",this.state,{version:this.version});e&&(Object.assign(o,{text:e}),Object.assign(o,{lenTextTotal:e.length})),this.deepdeskApi.sendEventV1("Send Message",o),this.emit("send-message-event",o)}logHandlingTime(){let e=kd(this.state,{version:this.version});this.deepdeskApi.sendEventV1("Handling Time",e),this.store.dispatch(hd())}notifySubmit(e={}){this.shouldAbort()||(this.store.dispatch(xe()),this.store.dispatch($e(e.text??this.state.input.text)))}stageSelectedSuggestion(e){let o=this.state.input.selectedSuggestionIndex,{textSuggestions:n}=this.state.input;this.store.dispatch(ge({text:n[o].text,suggestion:n[o],eventMetrics:e,replace:"until-selection-end"}))}emit(e,o,n={}){let s=()=>{this.eventListeners[e]&&this.eventListeners[e].forEach(r=>{try{r(o)}catch(i){E.warn(`The following error occurred in deepdeskSDK.on('${e}', handler)`),E.error(i)}})};this.inputMediator&&n.mayApplyChanges?this.inputMediator.applyChanges(s):s()}on(e,o){return this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o),()=>{this.off(e,o)}}off(e,o){if(!e&&!o){this.eventListeners={};return}let n;this.eventListeners[e]&&(n=this.eventListeners[e].indexOf(o),n>-1&&this.eventListeners[e].splice(n,1))}setConversationQuery(e){this.dynamicThunkObject.conversationQuery=e}whenConversationLoaded(e){let o=()=>this.loadProfileConfig().then(()=>e());this.hasConversation()&&o();let n=this.hasConversation();this.store.subscribe(()=>{this.hasConversation()!==n&&(n=this.hasConversation(),n&&o())})}overlayContainerFactory(e,o,n,s){let[r,i]=Fn(o,n);return r.setAttribute("translate","no"),r.dataset.testid=e,s&&r.classList.add(s),this.unmountHandlers.push(()=>{Bn(r),i(),r.remove()}),r}createInlineContainer(e,o){var i;let n=document.createElement("div");n.style.position="absolute",n.style.top="0px",n.style.left="0px",n.style.height="0px",n.style.width="0px";let s=document.createElement("div");s.style.display="none",s.style.position="absolute",s.style.height="0px",s.style.width="0px",s.style.backgroundColor="red",n.appendChild(s);let r=(i=e.ownerDocument.defaultView)==null?void 0:i.frameElement;if(r){let[a,l]=Fn(r,{appendTo:document.body,onMoveStart:()=>{s.style.display="none"}});a.dataset.testid=o,a.style.zIndex="2",a.appendChild(n),this.unmountHandlers.push(()=>{Bn(s),l()})}else document.body.appendChild(n);return s}createContainer(e,o=document.body){let n=window.getComputedStyle(o),s=document.createElement("div");return Je(s),s.dataset.testid=e,s.style.color=n.color,s.style.fontSize=n.fontSize,s.style.fontFamily=n.fontFamily,s.style.fontVariant=n.fontVariant,s.setAttribute("translate","no"),o.appendChild(s),this.unmountHandlers.push(()=>{Bn(s),s.remove()}),s}storeMetrics(){try{let e=`dd-metrics-${this.conversationId()}`,o=JSON.stringify({text:this.state.input.text,metrics:this.state.input.metrics});window.sessionStorage.setItem(e,o),E.info(`Stored analytics for ${this.conversationId()}`)}catch{}}restoreMetrics(){try{let e=`dd-metrics-${this.conversationId()}`,o=window.sessionStorage.getItem(e);if(!o)return;let n=JSON.parse(o);n.text.trim()===this.state.input.text.trim()?(E.info(`Restored metrics for ${this.conversationId()}`),this.store.dispatch(hi(n.metrics))):E.warn(`Metrics mismatch, disregarding stored metrics for ${this.conversationId()}`),window.sessionStorage.removeItem(e)}catch{}}mount(e,o={}){if(this.isMounted)throw new Error("[Deepdesk] This instance was already mounted. Make sure to unmount before you remount.");if(!Er(e))throw new Error("[Deepdesk] Only mount on textarea or contentEditable div.");if(!this.shouldRender)return;let{customStyles:n={},showStyleSuggestions:s,showTabCompletion:r,showTextSuggestions:i,textSuggestionsCount:a,showMidSentenceSuggestions:l,showSuggestionsBeforePattern:c,showSuggestionsAfterPattern:d,isEmbedded:u,detectSubmit:p,insertLink:g,inputMediator:f,closestScrollSelector:m,appendOverlayTo:S,inlineSuggestions:w,floatingMenu:v}=o;this.configure({showStyleSuggestions:s,showTabCompletion:r,textSuggestionsCount:a,showMidSentenceSuggestions:l,showSuggestionsBeforePattern:c,showSuggestionsAfterPattern:d,showTextSuggestions:i,insertLink:g,isEmbedded:u,inlineSuggestions:w,floatingMenu:!!v}),o.automaticHandlingTime&&this.setupHandlingTime(e),Je(e),this.inputMediator=f||(He(e)?new Pt(e):new Rt(e)),this.inputMediator.on("change",({plainText:x})=>{this.notifyInputChanged(x)}),this.inputMediator.on("updated",()=>{this.inputMediator&&this.store.dispatch(fi({text:this.inputMediator.getText(),html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()}))}),this.inputMediator.on("keydown",x=>{this.notifyKeyDown(x)}),this.inputMediator.on("paste",({pastedText:x,selectionText:T})=>{this.notifyPaste(x,T)}),this.inputMediator.on("cut",({selectionText:x})=>{this.notifyCut(x)});let y=m&&Pd(e,m)||void 0;if(w){let{customStyles:x,appendOverlayTo:T}=o;if(He(e))throw new Error("[Deepdesk] Inline suggestion is not supported for textarea yet.");let L=this.createInlineContainer(e,"deepdesk-caret");Mt($(Ye,{store:this.store,customStyles:x,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(kl,{})})}),L),this.inputMediator.on("caret",F=>{this.store.dispatch(pe([])),F?(L.style.display="block",L.style.top=`${F.top}px`,L.style.left=`${F.left}px`):L.style.display="none"});let z=this.overlayContainerFactory("floating-menu",y||e,{appendTo:typeof v=="object"&&"appendOverlayTo"in v?v.appendOverlayTo:T},x==null?void 0:x.floatingMenuRootNode);Mt($(Ye,{store:this.store,customStyles:x,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(hl,{onLogIn:()=>this.loginViaPopup().catch(F=>E.warn(F.message))})})}),z)}else{let x=this.overlayContainerFactory("deepdesk-tab-completion",y||e,{appendTo:S,closestScrollElement:y,mirrorOverflow:!0,onRemove:()=>this.unmount()},n==null?void 0:n.rootNode),T=this.overlayContainerFactory("deepdesk-suggestions-overlay",y||e,{appendTo:S},n==null?void 0:n.suggestionsRootNode);Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(ac,{inputElement:e})})}),x),Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(Dl,{onLogIn:()=>this.loginViaPopup().catch(L=>E.warn(L.message))})})}),T)}Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(dl,{})})}),this.createContainer("deepdesk-overlays"));let k;this.inputMediator.on("selection",x=>{clearTimeout(k),x===null?k=setTimeout(()=>{x!==null&&this.store.dispatch(es(x))},500):this.store.dispatch(es(x))}),this.inputMediator.on("disabled",()=>{var x;(x=this.inputMediator)==null||x.deactivate(),this.configure({visible:!1})}),this.inputMediator.on("enabled",()=>{this.inputMediator&&(this.configure({visible:!0}),this.inputMediator.activate())}),this.inputMediator.on("submit",()=>{p&&this.notifySubmit()}),this.inputMediator.on("blur",()=>this.store.dispatch(Gs(!1))),this.inputMediator.on("focus",()=>this.store.dispatch(Gs(!0))),this.store.dispatch(ai({text:this.inputMediator.getText(),html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),this.unmountHandlers.push(()=>{this.state.input.text!==""&&(this.store.dispatch(xe()),this.storeMetrics())}),this.whenConversationLoaded(()=>{var x;this.restoreMetrics(),this.refresh(),this.broadcastEvents.setSessionId((x=this.state.conversation.current)==null?void 0:x.sessionId)}),this.isMounted=!0}unmount(){var e;this.unmountHandlers.forEach(o=>o()),this.unmountHandlers=[],(e=this.inputMediator)==null||e.dispose(),this.broadcastEvents.cleanup(),this.isMounted=!1}renderWidget(e,o={}){if(this.widgetRoot&&E.warn("A widget was already rendered for this instance. Make sure to unmountWidget before rerendering"),!this.shouldRender)return;let{customStyles:n,showImages:s,isEmbedded:r}=o;this.widgetRoot=e,this.configure({showImages:s,isEmbedded:r}),Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(ad,{onLogIn:()=>this.loginViaPopup().catch(i=>E.warn(i.message))})})}),e),this.whenConversationLoaded(()=>{var i;this.broadcastEvents.setSessionId((i=this.state.conversation.current)==null?void 0:i.sessionId)})}unmountWidget(){this.widgetRoot&&Bn(this.widgetRoot),this.widgetRoot=null}setupHandlingTime(e){let o=Ar(e,({isVisible:n})=>{n?this.handlingTimeStart():this.handlingTimeStop()});this.unmountHandlers.push(()=>{this.handlingTimeStop(),o()}),this.whenConversationLoaded(()=>{this.handlingTimeStart()})}handleError(e){Id(e)&&e.message==="Unauthorized"&&this.login()}loadProfileConfigPromise=null;loadProfileConfig(){return this.loadProfileConfigPromise?this.loadProfileConfigPromise:(this.loadProfileConfigPromise=Promise.resolve().then(async()=>{await this.store.dispatch(Jt());let e=_e(this.state);e&&(await this.store.dispatch(Qt()),this.store.dispatch(So({showSearch:e.search,showAutoflows:e.autoflows,showCustomMessages:e.customMessages,showImageSearch:e.imageSearch,showEntitiesCommand:e.entitiesCommand,showSummaryCommand:e.summarizer,showKnowledgeSearch:!!e.knowledgeAssistant,recommendTextSuggestions:e.recommendTextSuggestions})))}),this.loadProfileConfigPromise)}async loginViaPopup(e){return new Promise((o,n)=>{let s=new MessageChannel,r=s.port1,i=this.state.settings.adminUrl,a=new URL(e!=null&&e.url?e==null?void 0:e.url:`${i}/platform/sso/`);a.searchParams.append("redirect","/sdk/popup/close.html");let l=!1,c=()=>{d&&!d.closed&&d.close(),window.removeEventListener("message",u),clearInterval(p)};r.onmessage=async g=>{var f,m;if((f=g.data)!=null&&f.jwt)try{await this.deepdeskApi.exchangeTokenForAccessCookie((m=g.data)==null?void 0:m.jwt),await this.isLoggedIn(),this.broadcastEvents.send(Ut),l=!0,s.port1.close(),o()}catch(S){console.error(S),n(S)}finally{l=!0,c()}};let d=window.open(a.toString(),"deepdesk-login","scrollbars=no,left=100,top=150,width=500,height=500");d===null&&n(new Error("Popup blocked by browser"));let u=async g=>{var f;if(g.origin===a.origin)switch((f=g.data)==null?void 0:f.type){case"deepdesk-popup-loaded":{try{let m=JSON.stringify({type:"deepdesk-popup-create-channel"});d==null||d.postMessage(m,a.origin,[s.port2])}catch(m){E.error("Error posting message to popup",m),n(m)}break}case"deepdesk-popup-error":{c(),g.data.message==="Timeout"&&E.warn("Popup timed out. Check if the account's platform url is configured correctly."),n(new Error(g.data.message));break}}};window.addEventListener("message",u);let p=setInterval(()=>{d&&!d.closed||(c(),l||n(new Error("Popup closed by user")))},200);this.unmountHandlers.push(c)})}translateMessages(e){return this.deepdeskApi.translateMessages(e)}async checkForTrialMode(e){try{let{account:o}=await this.deepdeskApi.getPlatformConfig();if(!o.isTrial){this.shouldRender=!0;return}if(E.info("Trial is active"),!await this.deepdeskApi.checkUserExists(e))throw new Error("User is not in trial");this.shouldRender=!0}catch(o){let{message:n}=o;E.info(n),this.shouldRender=!1}}async refreshWidgetSuggestions(){if(!this.widgetRoot||this.shouldAbort())return;let{uiConfig:e}=this.state.profile.data;if(!e.widget)return;let o=Yo(this.state);try{o.forEach(({type:n})=>{n==="entities"?this.store.dispatch(ce()):this.store.dispatch(de(n))})}catch(n){this.handleError(n)}}};async function Hv(t,e,o={}){let{value:n}=t,{start:s,end:r}=o.replace??{start:0,end:n.length},i=`${n.slice(0,s)}${e}${n.slice(r)}`,a=o.selectionAfter??{start:s+e.length,end:s+e.length},l=()=>{if(o.setValue)return o.setValue(i);t.value=i};return Promise.resolve(l()).then(()=>{t.selectionStart=a.start,t.selectionEnd=a.end,t.blur(),t.focus()})}async function Fv(t,e,o={}){let n=o.replace?ot(t,o.replace.start,o.replace.end):co(t),s,r=()=>{if(o.setRange)return o.setRange(n.cloneRange());n.deleteContents(),s=document.createElement("span"),n.insertNode(s),o.insertBRs!==!1?e.split(`
|
|
9
|
+
`);break}default:break}u&&i++}return l(t),a}var cd=(i=>(i.CUT="Cut",i.BACKSPACE="Backspace",i.DELETE="Delete",i.ERASEEOF="EraseEof",i.UNDO="Undo",i.CLEAR="Clear",i))(cd||{}),Be=class{constructor(e){this.element=e;this.currentText=this.getText(),this.currentHTML=this.getHTML(),this.listen()}eventListeners={};disposeHandlers=[];currentText="";currentCaret=null;currentSelection={start:0,end:0};currentHTML="";isFocused=!1;isActive=!0;isSettingValue=!1;isSubmitting=!1;isPossibleClearInputAction=!1;isDisposed=!1;addEventListener(e,o){let n=s=>{o(s)};this.element.addEventListener(e,n),this.disposeHandlers.push(()=>{this.element.removeEventListener(e,n)})}removeEventListener(e,o){this.element.removeEventListener(e,o)}triggerChange(){let e=this.getText(),o=this.getHTML(),n=e!==this.currentText;this.isActive&&(e===""&&this.currentText!==""&&!this.isSettingValue&&!this.isPossibleClearInputAction&&(this.isSubmitting=!0,this.emit("submit")),!this.isSettingValue&&n&&!this.isSubmitting&&this.emit("change",{plainText:e}),n&&(this.currentSelection=this.getSelection()),this.currentText=e,this.isSubmitting=!1,(this.currentHTML!==o||o===null&&n)&&(this.emit("updated",{plainText:e}),this.triggerCaretPosition(),this.currentHTML=o))}triggerSelection(){let e=this.getSelection();(e.start!==this.currentSelection.start||e.end!==this.currentSelection.end)&&(this.currentSelection=e,this.emit("selection",e),this.triggerCaretPosition())}triggerCaretPosition(){let e=this.getCaretPosition();Ie(e,this.currentCaret)||(this.currentCaret=e,this.emit("caret",e))}handleKeyUp(e){let{key:o,shiftKey:n}=e;(o==="Enter"&&n===!0||o==="Backspace")&&this.triggerChange(),this.triggerSelection()}handleClick(){this.triggerSelection()}handleFocus(){this.isFocused||this.emit("focus"),this.triggerSelection(),this.isFocused=!0}handleBlur(){this.isPossibleClearInputAction=!1,this.isFocused&&this.emit("blur"),this.isFocused=!1}handleKeyDown(e){let{key:o,ctrlKey:n,metaKey:s}=e;this.isPossibleClearInputAction=Object.values(cd).includes(o)||o.toLowerCase()==="z"&&(n||s),this.emit("keydown",e)}handleCut(){this.isPossibleClearInputAction=!0,this.emit("cut",{selectionText:this.getSelectedText()})}handlePaste(e){var n,s;let o=((n=e.clipboardData)==null?void 0:n.getData("text"))||((s=e.clipboardData)==null?void 0:s.getData("text/plain"))||"";this.emit("paste",{pastedText:o,selectionText:this.getSelectedText()})}listen(){this.addEventListener("keydown",o=>this.handleKeyDown(o)),this.addEventListener("keyup",o=>this.handleKeyUp(o)),this.addEventListener("input",()=>this.triggerChange()),this.addEventListener("change",()=>this.triggerChange()),this.addEventListener("focus",()=>this.handleFocus()),this.addEventListener("blur",()=>this.handleBlur()),this.addEventListener("cut",()=>this.handleCut()),this.addEventListener("paste",o=>this.handlePaste(o)),this.addEventListener("click",()=>this.triggerSelection()),document.activeElement===this.element&&setTimeout(()=>{this.handleFocus()},0);let e=new MutationObserver(()=>{this.element.isConnected||(this.emit("unmounted"),this.dispose())});e.observe(document.body,{subtree:!0,childList:!0}),this.disposeHandlers.push(()=>{e.disconnect()}),this.currentSelection=this.getSelection()}focus(){this.element.focus()}emit(e,...o){this.isDisposed||this.eventListeners[e]&&this.eventListeners[e].forEach(n=>{n(...o)})}on(e,o){this.isDisposed||(this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o))}activate(){let e=this.isActive===!1;this.isActive=!0,e&&this.triggerChange()}deactivate(){this.isActive=!1}dispose(){this.disposeHandlers.forEach(e=>e()),this.eventListeners={},this.isDisposed=!0}};function dd(t){return t.top!==0||t.left!==0||t.height!==0||t.width!==0}var Rt=class extends Be{observer;lastKnownSelection=null;getRootNode(){return this.element.getRootNode()}getText(){let e=new Range;return e.selectNodeContents(this.element),Mn(this.element,e)}getHTML(){return this.element.innerHTML||""}getRange(){var r;let e=this.getRootNode();if(e.activeElement!==this.element)return null;let o="getSelection"in e?e.getSelection():window.getSelection();if(!o)return null;let n="getComposedRanges"in o&&e instanceof ShadowRoot?(r=o.getComposedRanges(e))==null?void 0:r[0]:o.rangeCount>0?o.getRangeAt(0):null;if(!n)return null;let s=this.element.ownerDocument.createRange();return s.setStart(n==null?void 0:n.startContainer,n==null?void 0:n.startOffset),s.setEnd(n==null?void 0:n.endContainer,n==null?void 0:n.endOffset),!s||!this.element.contains(s.startContainer)||!this.element.contains(s.endContainer)?null:s}getCaretPosition(){let e=this.getRange();if(!e||!e.collapsed||!("getBoundingClientRect"in e))return null;let o=e.getBoundingClientRect();return!dd(o)&&(e.insertNode(this.element.ownerDocument.createTextNode("\u2060")),o=e.getBoundingClientRect(),e.deleteContents(),!dd(o))?null:{top:o.top+o.height,left:o.left}}getSelection(){let e=this.getRange();if(e)return Ln(this.element,e);let o=this.lastKnownSelection;if(o&&ld(this.element,o.start,o.end))return o;let n=co(this.element);return n.collapse(!1),Ln(this.element,n)}getSelectedText(){let{start:e,end:o}=this.getSelection();return Mn(this.element,ot(this.element,e,o))}applyChanges(e){var s;if(!this.isActive)return;this.isSettingValue=!0;let o=this.getText(),n=e(this.element);return(s=this.observer)==null||s.takeRecords(),Promise.resolve(n).then(()=>{this.currentText=this.getText(),o!==this.currentText&&this.triggerChange(),this.isSettingValue=!1})}listen(){super.listen(),this.observer=new MutationObserver(()=>{setTimeout(()=>{this.triggerChange()},0)}),this.observer.observe(this.element,{attributes:!0,characterData:!0,childList:!0,subtree:!0});let e=this.element.isContentEditable,o=new MutationObserver(()=>{this.element.isContentEditable!==e&&(e=this.element.isContentEditable,this.emit(this.element.isContentEditable?"enabled":"disabled"))});o.observe(this.element,{attributes:!0,attributeFilter:["contenteditable"]}),this.disposeHandlers.push(()=>o.disconnect())}dispose(){super.dispose(),this.observer&&this.observer.disconnect()}};var Pt=class extends Be{lastKnownSelection=null;getText(){return this.element.value}getHTML(){return null}getSelection(){let{selectionStart:e,selectionEnd:o}=this.element;return{start:e,end:o}}getSelectedText(){let e=this.getSelection();return e?this.getText().slice(e.start,e.end):""}getCaretPosition(){return null}applyChanges(e){if(!this.isActive)return;this.isSettingValue=!0;let o=this.getText(),n=e(this.element);return Promise.resolve(n).then(()=>{this.currentText=this.getText(),o!==this.currentText&&this.triggerChange(),this.isSettingValue=!1})}listen(){super.listen();let e=Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,"value");Object.defineProperty(this.element,"value",{configurable:!0,get:()=>{var s;return(s=e==null?void 0:e.get)==null?void 0:s.call(this.element)},set:s=>{var r;(r=e==null?void 0:e.set)==null||r.call(this.element,s),this.triggerChange()}});let o=this.element.disabled,n=new MutationObserver(()=>{this.element.disabled!==o&&(o=this.element.disabled,this.emit(o?"disabled":"enabled"))});n.observe(this.element,{attributes:!0,attributeFilter:["disabled"]}),this.disposeHandlers.push(()=>n.disconnect())}};function ud(t,e,o){let n=`deepdesk-iframe-${t}`,s=document.getElementById(n);if(s)return s;let r=document.createElement("iframe"),i=new URL(e);return Object.entries(o).forEach(([a,l])=>{i.searchParams.append(a,l)}),r.style.position="absolute",r.style.left="-999em",r.style.width="0px",r.style.height="0px",r.tabIndex=-1,r.id=n,r.title=`iframe-${t}`,r.src=i.toString(),window.document.body.appendChild(r),r}function Sv(t){if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}}var yr=class{constructor(e){this.name=e;this.broadcastChannel=new BroadcastChannel(e)}broadcastChannel;disposeHandlers=[];onMessage(e){this.broadcastChannel.addEventListener("message",e),this.disposeHandlers.push(()=>{this.broadcastChannel.removeEventListener("message",e)})}postMessage(e){this.broadcastChannel.postMessage(JSON.stringify(e))}close(){this.disposeHandlers.forEach(e=>e()),this.broadcastChannel.close()}},vr=class{constructor(e,o,n){this.name=e;this.targetOrigin=o;this.options=n;this.iframe=ud(e,`${this.targetOrigin}/sdk/proxy/proxy.html`,{channel:this.name,host:window.location.origin,debug:"1"}),document.body.appendChild(this.iframe)}iframe;disposeHandlers=[];onMessage(e){window.addEventListener("message",e),this.disposeHandlers.push(()=>{window.removeEventListener("message",e)})}postMessage(e){var o;(o=this.iframe.contentWindow)==null||o.postMessage(JSON.stringify(e),this.targetOrigin)}close(){var e;this.disposeHandlers.forEach(o=>o()),(e=this.iframe)==null||e.remove()}},Sr=class{constructor(e){this.params=e;this.deepdeskUrl=e.deepdeskUrl,this.eventMap=e.eventMap,this.sessionId="deepdesk-general",this.defaultChannel=this.createChannel("deepdesk-general")}sessionId;deepdeskUrl;channel;defaultChannel;eventMap;get isCrossOrigin(){return this.params.deepdeskUrl!==(this.params.origin||window.location.origin)}setSessionId(e){this.sessionId!==e&&(this.cleanup(),E.info("Set sessionId",e),this.sessionId=e,this.channel=this.createChannel(e))}createChannel(e){let o=this.params.createCustomChannel?this.params.createCustomChannel(e):this.isCrossOrigin?new vr(e,this.deepdeskUrl,{debug:!0}):new yr(e),n=s=>{var i,a;if(s.origin!==this.deepdeskUrl)return;let r=Sv(s.data);typeof r!="object"||r.type!=="event"||r.channel!==e||(E.info("Received broadcast event",this.sessionId,s),(a=(i=this.eventMap)[r.name])==null||a.call(i,r.payload))};return o.onMessage(n),o}send(e,o,n){var i,a;E.info("Broadcast event",{sessionId:this.sessionId,name:e,payload:o});let s={type:"event",name:e,payload:o};n!==!1&&((a=(i=this.eventMap)[e])==null||a.call(i,o));let r=this.sessionId==="deepdesk-general"?this.defaultChannel:this.channel;r==null||r.postMessage({...s,channel:this.sessionId})}cleanup(e=!1){var o,n;(o=this.channel)==null||o.close(),delete this.channel,e&&((n=this.defaultChannel)==null||n.close(),delete this.defaultChannel)}},pd=Sr;var It=class extends Error{constructor(o,n){super(o);this.body=n}name="CustomError"};var xr=t=>new Promise(e=>{setTimeout(e,t)});var At=class extends It{name="ClientError"},Cr=class extends It{name="ServerError"},br=new Map,he=class t{constructor(e="",o={}){this.baseUrl=e;this.options=o;o.fetch&&(this.fetch=o.fetch)}latestRequestByUrl={};csrfToken;fetch=window.fetch.bind(window);static refreshingToken=null;patchFetch(e){this.fetch=e(this.fetch)}setCsrfToken(e){this.csrfToken=e}request(e,o={}){return new Promise((n,s)=>{let r={isAborted:!1,reject:s},i=`${this.baseUrl}${e}`,a=this.fetch,l=o.method===void 0||o.method.toLowerCase()==="get",{useCache:c=!1,abortLatest:d=!1,attempts:u=1,retryDelay:p=500,refreshTokenOn401:g=!0,retryOnError:f=T=>T instanceof TypeError,retryOnResponse:m=T=>T.status>=500,version:S="v1",...w}=o;if(c)if(l){if(br.has(i)){n(br.get(i));return}}else throw new Error(`Can't use 'useCache' for ${o.method}`);let v={credentials:"include",...w,headers:{"Content-Type":"application/json",...w.headers}};!l&&this.csrfToken&&(v.headers={...v.headers,"X-CSRFToken":this.csrfToken}),typeof S=="string"&&(v.headers={...v.headers,"X-Deepdesk-API-Version":S});let y=u,k=!1;if(!a)throw new Error("fetch is not set");this.latestRequestByUrl[i]&&d&&(this.latestRequestByUrl[i].isAborted=!0,this.latestRequestByUrl[i].reject(new Error("Aborted"))),this.latestRequestByUrl[i]=r;let x=async()=>(y--,a(i,v).then(async T=>m(T)&&!r.isAborted&&y>0?(await xr(p),x()):T.status===401&&g===!0&&k===!1?(k=!0,await this.refreshToken(),x()):T).catch(async T=>{if(f(T)&&!r.isAborted&&y>0)return await xr(p),x();throw T}));x().then(T=>T.json().catch(()=>null).then(L=>{T.status>=500?s(new Cr("Server Error",L)):T.status===401?s(new At("Unauthorized",L)):T.status===403?s(new At("Forbidden",L)):T.status===404?s(new At("Not Found",L)):T.status>=400&&s(new At("Bad Request",L)),delete this.latestRequestByUrl[i],c&&br.set(i,L),n(L)})).catch(T=>{s(T)})})}async validateToken(){let{has_valid_access_token:e}=await this.get("/auth/validate");if(!e)return!1;let{is_logged_in:o}=await this.get("/apis/admin/session/validate/",{version:null});return!!o}refreshToken(){return t.refreshingToken||(t.refreshingToken=this.get("/auth/refresh",{refreshTokenOn401:!1}).finally(()=>{setTimeout(()=>{t.refreshingToken=null},1e3*60)})),t.refreshingToken}get(e,o){return this.request(e,o)}post(e,o,n){return this.request(e,{method:"POST",body:JSON.stringify(o),...n})}patch(e,o,n){return this.request(e,{method:"PATCH",body:JSON.stringify(o),...n})}put(e,o,n){return this.request(e,{method:"PUT",body:JSON.stringify(o),...n})}delete(e,o){return this.request(e,{method:"DELETE",...o})}};var xv;(e=>{let t;(l=>(l.SEND_MESSAGE="Send Message",l.HANDLING_TIME="Handling Time",l.START_AUTOFLOW="Start Autoflow",l.ABORT_AUTOFLOW="Abort Autoflow",l.ADD_TO_PERSONAL_COLLECTION="Add to personal collection",l.DELETE_FROM_PERSONAL_COLLECTION="Delete from personal collection"))(t=e.EventType||={})})(xv||={});function Nn(t){return{...I(t),tags:t.tags}}var Ke=class t{constructor(e,o={}){this.options=o;this.client=new he(e,{fetch:o.fetch}),this.client.patchFetch(n=>async(s,r)=>{let i=await n(s,r);return this.handleDeepdeskVersionHeaders(i),i})}latestReceivedDeepdeskVersions={};client;shouldFetchCsrfToken=!0;static exchangeTokenPromise=null;async preflight(){if(this.shouldFetchCsrfToken){this.shouldFetchCsrfToken=!1;let e=await this.getCsrfToken();this.client.setCsrfToken(e)}return this.options.token?(t.exchangeTokenPromise||(t.exchangeTokenPromise=this.exchangeTokenForAccessCookie(this.options.token)),t.exchangeTokenPromise):Promise.resolve()}async createConversation(e){await this.preflight(),E.info(`Creating conversation for session ${e.sessionId} and agent ${e.agentId}`);let o=await this.client.post("/api/conversations",{...U(e),tags:e.tags},{version:"v2"});return Nn(o)}async getProfile(e){let o=await this.client.get(`/apis/admin/profiles/${e}/`,{version:null,useCache:!0});return I(o)}async getKnowledgeAssistant(e){let o=await this.client.get(`/apis/admin/knowledge-assist/assistants/${e}/`,{version:null,useCache:!0});return I(o)}async getContentTypes(){let e=await this.client.get("/apis/admin/content-types/",{version:null,useCache:!0});return I(e)}async getAccount(){let e=await this.client.get("/apis/admin/account/",{version:null,useCache:!0});return I(e)}async getPlatformConfig(){let{config:e}=await this.client.get("/platform/config/",{version:null,useCache:!0});return I(e)}async checkUserExists(e){let{exists:o}=await this.client.get(`/apis/admin/users/exists?external_id=${e}`);return o}async getConversationBySessionId(e,o={}){await this.preflight(),E.info(`Getting conversation for session ${e}`);let{attempts:n=1,retryDelay:s=1e3}=o,r=await this.client.get(`/api/conversations/by_session_id/${e}`,{attempts:n,retryDelay:s,retryOnResponse:i=>i.status===404||i.status>=500,version:"v2"});return E.info(`Successfully retrieved conversation ${r.id} for session ${e}`),Nn(r)}async isConversationSupported(e,o={}){E.info(`Check if conversation for session ${e} is supported`);let{attempts:n=1,retryDelay:s=1e3}=o;return(await this.client.get(`/api/conversations/by_session_id/${e}/active_profile`,{attempts:n,retryDelay:s,retryOnResponse:i=>i.status===404||i.status>=500,version:"v2"})).has_active_profile}async updateConversation(e,o){let n=U(o);o.tags&&(n.tags=o.tags);let s=await this.client.put(`/api/conversations/${e}`,n,{version:"v2"});return Nn(s)}async postMessages(e,o){return(await this.client.post(`/api/conversations/${e}/messages`,o.map(s=>({...U(s),tags:s.tags})),{version:"v2"})).map(s=>Nn(s))}async sendEvent(e,o){let{data:n,...s}=o,r=Object.entries(this.latestReceivedDeepdeskVersions).reduce((i,[a,l])=>({...i,[a]:l}),{});return this.client.post("/api/events",U({...r,...s,data:n,name:e}),{version:"v2"})}async sendEventV1(e,o){let n=Object.entries(this.latestReceivedDeepdeskVersions).reduce((s,[r,i])=>({...s,[r]:i}),{});return this.client.post("/api/events",{event:e,data:U({...o,...n})})}async getEntities(e){return(await this.client.post("/api/entities",{messages:e.filter(n=>n.text)})).entities}async getSummary(e,o={}){return(await this.client.post("/api/summary",{conversation:{messages:e.filter(s=>s.text&&s.source),agent_id:o.agentId,id:o.externalConversationId},prompt_instruction:o.promptInstruction,model:o.model})).summary}async getTemporaryExchangeToken(){return(await this.client.get("/auth/exchange-token",{version:null})).jwt}async exchangeTokenForAccessCookie(e){return this.client.post("/apis/admin/session/jwt/",{jwt:e},{version:null}).catch(o=>{throw E.warn(`Invalid token '${e}'`),o})}async authenticateWithKey(e,o){await this.preflight(),await this.client.post("/apis/admin/session/api-key/",U(o),{version:null,refreshTokenOn401:!1,headers:{apikey:e}})}async getTextSuggestions(e,o={},n){return n==="sticky-messages"?this.getPinnedMessages(e):(await this.client.post(`/api/conversations/${e}/recommend/${n}`,U(o),{abortLatest:!0})).map(r=>({...I(r),text:r.text||r.url||r.message,source:n,type:n})).filter((r,i,a)=>i===a.findIndex(l=>l.text===r.text))}async isLoggedIn(){return await this.preflight(),this.client.validateToken()}async getAutocompleteSuggestions(e,o){return(await this.client.post(`/api/conversations/${e}/autocomplete`,U(o),{abortLatest:!0})).map(s=>({score:1,source:s.source,sourceText:s.source_text,text:s.label,trainingJobs:s.training_jobs,searchKeywords:s.search_keywords,type:s.source})).filter((s,r,i)=>r===i.findIndex(a=>a.text===s.text))}async getPinnedMessages(e){let o=await this.client.get(`/api/conversations/${e}/sticky-messages`,{abortLatest:!0});return I(o).map(n=>({...n,text:n.message,source:"sticky-messages",type:"pinned-message"}))}async getStyleSuggestions(e){let o=await this.client.post("/api/style-suggestions",U(e),{abortLatest:!0});return I(o)}async search(e){let o=await this.client.post(`/api/profiles/${e.profile}/search`,U(e),{version:"v2"});return I(o)}async knowledgeAssist(e,o,n,s={}){let r=await this.client.post(`/api/knowledge-assist/assistants/${n}/search`,U({question:e.question,promptInstruction:e.promptInstruction,chatHistory:o.map(i=>({question:i.question,answer:i.answer.answer})),agentId:s.agentId,conversationId:s.conversationId}),{version:"v2"});return I(r)}async requestLoginByEmail(e){let o=await this.client.post("/apis/admin/session/passwordless/request/",{email:e},{version:null});return I(o)}async requestPasswordlessToken(){let e=await this.client.get("/apis/admin/session/passwordless/request/",{version:null});return I(e.token)}async getCsrfToken(){let{token:e}=await this.client.get("/apis/admin/session/csrf/",{version:null});return e}async verifyLoginToken(e){let o=await this.client.post("/apis/admin/session/passwordless/login/",{token:e},{version:null});return I(o)}async evaluateRule(e,o,n,s={}){let r=new URLSearchParams;s.raiseForFailingConditions&&r.set("raise_for_failing_conditions","true");let i=await this.client.post(`/api/conversations/${o}/rules/${e}/evaluate?${r.toString()}`,n,{version:"v2"});return I(i.cues)}async getRules(){let e=new URLSearchParams,o=await this.client.get(`/apis/admin/rule-engine/rules/?${e.toString()}`,{version:null,useCache:!0});return I(o)}async translateMessages(e){let o=await this.client.post("/api/translate",U(e),{version:"v2"});return I(o)}handleDeepdeskVersionHeaders(e){e.headers.forEach((o,n)=>{let s=n.toLowerCase(),r=s.match(Vr);if(!o||!r)return;let i=r[1].replace("-","_"),a=this.latestReceivedDeepdeskVersions[i];a&&o&&a!==o&&E.warn(`Overwritten Version header ${s}: ${JSON.stringify(a)} -> ${JSON.stringify(o)}`),this.latestReceivedDeepdeskVersions[i]=o})}};var uo=class{constructor(e,o){this.url=e;this.options={timeout:25e3,...o}}eventListeners={};options;timeoutTimer;eventSource;proxyEvent(e){this.eventSource.addEventListener(ts(e),o=>{let{data:n}=o;try{let s=JSON.parse(n);this.emit(e,I(s))}catch{E.warn(`Invalid JSON for ${e}: ${n}`)}})}connect(){clearTimeout(this.timeoutTimer);let e=new EventSource(this.url,{withCredentials:!0});this.eventSource=e;let o=!1;e.onopen=()=>{o=!0},e.onerror=()=>{o&&e.readyState===2&&this.connect()},this.timeoutTimer=setTimeout(()=>{e.close(),this.connect()},this.options.timeout),Object.keys(this.eventListeners).forEach(n=>{this.proxyEvent(n)})}disconnect(){var e;clearTimeout(this.timeoutTimer),this.eventListeners={},(e=this.eventSource)==null||e.close()}emit(e,o){this.eventListeners[e]&&this.eventListeners[e].forEach(n=>n(o))}on(e,o){return this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o),this.proxyEvent(e),()=>{this.off(e,o)}}off(e,o){let n;this.eventListeners[e]&&(n=this.eventListeners[e].indexOf(o),n>-1&&this.eventListeners[e].splice(n,1))}};var bv;(e=>{let t;(r=>(r.Started="Started",r.Aborted="Aborted",r.Completed="Completed"))(t=e.AutoflowSessionState||={})})(bv||={});var po=class{constructor(e,o={}){this.apiUrl=e;this.client=new he(e,o)}client;streams={};logger=E;async getCustomMessages(e){let o=await this.client.get(`/sessions/${e}/suggestions`);return I(o.suggestions)}async sendCustomMessage(e,o){let n=await this.client.post(`/sessions/${e}/messages`,U(o));return I(n)}async answerCustomMessage(e,o){await this.client.post(`/sessions/${e}/answers`,U(o))}async getAutoflows(e){let o=await this.client.get(`/sessions/${e}/autoflows`);return I(o.autoflows)}async startAutoflowSession(e){let o=await this.client.post("/autoflow-sessions",U(e));return I(o)}async stopAutoflowSession(e){await this.client.delete(`/autoflow-sessions/${e}`)}openStream(e){return this.streams[e]||(this.streams[e]=new uo(`${this.apiUrl}/sessions/${e}/events`),this.streams[e].connect()),this.streams[e]}closeStream(e){this.streams[e]||(this.streams[e].disconnect(),delete this.streams[e])}};import{combineReducers as Pv,configureStore as Iv}from"@reduxjs/toolkit";import{createSlice as Cv}from"@reduxjs/toolkit";var gd={startTime:null,stopTime:null},md=Cv({name:"handlingTime",initialState:gd,reducers:{handlingTimeStart(t){if(t.startTime&&!t.stopTime)throw new Error("Timing already started");t.startTime=new Date,t.stopTime=null},handlingTimeStop(t){if(!t.startTime)throw new Error("Timing not started");t.stopTime=new Date},handlingTimeReset(t){t.startTime=null,t.stopTime=null}},extraReducers:t=>{t.addCase(N,()=>gd)}}),{handlingTimeStart:fd,handlingTimeStop:On,handlingTimeReset:hd}=md.actions,yd=md.reducer;var vd=(t={})=>{let e={onAuthError:lt(!1),...t};return o=>n=>s=>("error"in s&&s.error.message==="Unauthorized"&&o.dispatch(e.onAuthError),n(s))};import{createAsyncThunk as wv,createSlice as Tv}from"@reduxjs/toolkit";var _n={list:{keywordMatches:[]},fetchState:"idle",isInitialRequest:null};var nt=wv("styleSuggestions/getAll",async({text:t},e)=>{var i;let{deepdeskAPI:o}=e.extra,n=e.getState(),{showStyleSuggestions:s}=n.settings,r=(i=n.conversation.current)==null?void 0:i.profileCode;if(!s)return _n.list;if(!r)throw new Error("No current conversation to fetch pinned messages");return o.getStyleSuggestions({profileCode:r,message:t})}),Ev=Tv({name:"styleSuggestions",initialState:_n,reducers:{},extraReducers:t=>{t.addCase(nt.pending,e=>{e.isInitialRequest=e.isInitialRequest===null,e.fetchState="loading"}).addCase(nt.rejected,e=>{e.fetchState="error"}).addCase(nt.fulfilled,(e,o)=>{e.fetchState="done",Ie(e.list,o.payload)||(e.list=o.payload)}).addCase($e,e=>{e.list=_n.list}).addCase(N,()=>_n)}}),Sd=Ev.reducer;var xd=(t={})=>{let e,o=!0,n={getStyleSuggestions:nt,debounce:500,...t};return s=>r=>i=>{var g;let a=s.getState().input.text,l=r(i),c=s.getState();if(c.auth.isLoggedIn!==!0)return l;let{showStyleSuggestions:d}=c.settings;if(!((g=c.conversation.current)==null?void 0:g.id)||!d)return l;let{text:p}=c.input;return p===a&&!o||(clearTimeout(e),p==="")||(e=setTimeout(()=>{o=!1,s.dispatch(n.getStyleSuggestions({text:p}))},t.debounce)),l}};function kv(t,e){return t.text===e.text&&t.selection.start===e.selection.start&&t.selection.end===e.selection.end}var bd=(t={})=>{let e={getTextSuggestions:de,getAutocompleteSuggestions:Yt,debounce:200,check:bt,...t},o;return n=>s=>r=>{var m;let{input:{userCommitted:i}}=n.getState(),a=s(r),l=n.getState();if(l.auth.isLoggedIn!==!0)return a;let{recommendTextSuggestions:c,showTabCompletion:d}=l.settings,u=(m=l.conversation.current)==null?void 0:m.id,p=r.type===tn.toString();if(!u||!c&&!d)return a;let{input:{userCommitted:g}}=l;return kv(g,i)&&!p||(clearTimeout(o),!e.check(l))||(o=setTimeout(()=>{let S=pt(l);S===""?n.dispatch(e.getTextSuggestions("default")):n.dispatch(e.getAutocompleteSuggestions(S))},p?0:e.debounce)),a}};var Cd=nt.fulfilled.toString();function Rv(t,e){let o=new Set([...e.keywordMatches.map(s=>s.keyword)]),n=[];return o.forEach(s=>{let r=t.keywordMatches.filter(l=>l.keyword===s),i=e.keywordMatches.filter(l=>l.keyword===s),a=i.length-r.length;a<=0||n.push(...i.slice(0,a))}),n}var wd=t=>e=>o=>n=>{var c;if(n.type!==Cd){o(n);return}let s=e.getState().styleSuggestions.list;o(n);let r=e.getState(),i=r.styleSuggestions.list,a=(c=r.conversation)==null?void 0:c.current;if(s===i)return;let l=Rv(s,i);n.type===Cd&&l.length>0&&t.sendEvent("style suggested",{conversationId:a==null?void 0:a.id,data:{keywordMatches:l}})};var Av=Pv({answer:za,auth:Jr,autoflows:gc,conversation:oi,contentTypes:ea,customMessages:Cc,passwordlessToken:Rc,entities:ka,knowledgeAssistant:Ba,handlingTime:yd,info:bi,input:yi,settings:qr,profile:Wa,search:Pi,summary:Na,styleSuggestions:Sd,ui:xl,rules:Mi,textSuggestions:sl});function Td(t){return Iv({reducer:Av,middleware:e=>[...e({thunk:{extraArgument:{dynamicThunkObject:t.dynamicThunkObject,deepdeskAPI:t.deepdeskAPI,deepdeskBrokerAPI:t.deepdeskBrokerAPI}},serializableCheck:!1}),vd(),bd({debounce:200}),xd({debounce:500}),wd(t.deepdeskAPI),...t.middleware?t.middleware:[]],preloadedState:t.preloadedState})}var Lv=t=>{var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())??"unknown"},Mv=t=>e=>o=>n=>{var a;let s=e.getState(),r=Xn("inlineSuggestions")(s);switch(n.type){case lt.toString():{!n.payload&&t.emit("logout",void 0);break}case ce.fulfilled.toString():n.payload.length>0&&t.sendEvent("entities found",{conversationId:s.conversation.current.id,data:{entities:n.payload}});break;case Ce.fulfilled.toString():t.sendEvent("conversation summarized",{conversationId:s.conversation.current.id,data:{summary:n.payload.summary}});break;case G.toString():t.sendEvent(n.payload.name,{conversationId:((a=n.payload.options)==null?void 0:a.includeConversationData)&&s.conversation.current.id,data:n.payload.data});break;case Po.toString():t.handleKeyDown(n.payload);break;case $e.toString():t.logSendMessage(n.payload);break;case Io.toString():t.handleInputChanged(n.payload);break;case be.fulfilled.toString():t.broadcast(is,n.payload,!1),t.emit("cues",n.payload);break;default:break}let i=o(n);switch(n.type){case $e.toString():t.handleAfterSendMessage(n.payload);break;case eo.toString():t.onUpdateShowTabHint(n.payload);break;case On.toString():t.logHandlingTime();break;case ge.toString():{let{start:l,end:c}=s.input.selection;t.emit("select-suggestion",{type:Lv(n.payload.suggestion),...n.payload,replace:n.payload.replace==="selection"?{start:l,end:c}:{start:0,end:c}},{mayApplyChanges:!0}),r&&(e.dispatch(pe([])),e.dispatch(xe()));break}case Ro.toString():{let{start:l,end:c}=s.input.selection;t.emit("replace",{...n.payload,replace:n.payload.replace==="selection"?{start:l,end:c}:{start:0,end:c}},{mayApplyChanges:!0});break}case Ft.toString():{let l=e.getState(),{text:c,selection:d}=l.input.userCommitted;t.emit("reset",{text:c,selectionAfter:d},{mayApplyChanges:!0});break}case Ao.toString():t.emit("select-image",n.payload,{mayApplyChanges:!0}),t.sendEvent("Image attached",{conversationId:s.conversation.current.id,data:{path:n.payload.suggestion.image,title:n.payload.suggestion.title}});break;case pe.toString():{r&&n.payload.length>0&&e.dispatch(Le(0));break}default:break}return i},Ed=Mv;function wr(t){return t.toISOString().replace("T"," ").replace("Z","")}function kd(t,e){var s,r,i;let{startTime:o,stopTime:n}=t.handlingTime;if(!o||!n)throw new Error("No startTime and stopTime for handling time metrics");return{conversationId:t.conversation.current.id,clientVersion:e.version,agentId:(s=t.info.agentInfo)==null?void 0:s.agentId,agentName:(r=t.info.agentInfo)==null?void 0:r.agentName,agentEmail:(i=t.info.agentInfo)==null?void 0:i.agentEmail,timeStart:wr(o),timeStop:wr(n)}}function Rd(t,e,o){var L,z,F;let{text:n,metrics:{numCharsTyped:s,numCharsPasted:r,numCharsCut:i,numCharsDeleted:a,numPaste:l,agentStartedTypingTimestamp:c,externalTimeTotalSeconds:d,pastes:u,cuts:p,deletions:g,textSuggestions:f,offeredTextSuggestions:m}}=e[t],S=n.length,v=f.reduce((P,{text:M,searchTerm:V})=>P+M.length-(V?V.length:0),0),y=c??Date.now(),k=(Date.now()-y)/1e3+(d||0),x=s/k,T=f.reduce((P,{searchTerm:M})=>P+(M?M.length:0),0);return{conversationId:e.conversation.current.id,source:"agent",text:n,clientVersion:o.version,pastes:u,cuts:p,deletions:g,lenTextTyped:s+T,lenTextTotal:S,lenTextAssisted:v,lenTextPasted:r,lenTextCut:i,lenTextDeleted:a,timeTotalSeconds:k,charsPerSecond:x,numPastes:l,textSuggestionsV2:f,suggestionsCounters:[{source:"gpt",countOffered:m.filter(P=>P.source==="gpt").length}],agentId:(L=e.info.agentInfo)==null?void 0:L.agentId,agentName:(z=e.info.agentInfo)==null?void 0:z.agentName,agentEmail:(F=e.info.agentInfo)==null?void 0:F.agentEmail}}function Tr(t,e){var r;let o=t.closest(e);if(o)return o;let n=t.getRootNode().host;if(n instanceof HTMLElement)return Tr(n,e);let s=(r=t.ownerDocument.defaultView)==null?void 0:r.frameElement;return s?Tr(s,e):null}function Pd(t,e){return Tr(t,e)}function Id(t){return typeof t=="object"&&t!==null&&"name"in t&&"message"in t}function Nv(t){return typeof t=="object"&&t!==null&&"tagName"in t}function Er(t){return Nv(t)&&(He(t)||pn(t))}var Ad,ye=new Map,Ov=["bottom","height","left","right","top","width"],_v=(t={},e={})=>Ov.some(o=>t[o]!==e[o]);function Ld(t){var o,n;if(t.ownerDocument===document)return[];let e=((n=(o=t.ownerDocument)==null?void 0:o.defaultView)==null?void 0:n.frameElement)??null;return e?[e,...Ld(e)]:[]}function Md(t,e){return!t||!e?null:{...t,top:t.top+e.top,left:t.left+e.left}}var Dn=!1,Nd=()=>{Dn=!0;let t=[];if(ye.forEach((e,o)=>{if(!o.isConnected){e.rect=null,t.push(e),ye.delete(o);return}let n=o.getBoundingClientRect();_v(n,e.rect)&&(e.rect=n,t.push(e))}),t.forEach(e=>{let o=e.parentRects?e.parentRects.reduce(Md,e.rect):e.rect;e.callbacks.forEach(n=>n(o))}),ye.size===0){Dn=!1;return}Ad=window.requestAnimationFrame(Nd)};function kr(t,e){let o=Ld(t),n=[],s=o.map((r,i)=>kr(r,a=>{n[i]=a;let l=ye.get(t);if(!l)return;let c=n.reduce(Md,l.rect);l.callbacks.forEach(d=>d(c))}));return{observe(r=!0){if(s.forEach(i=>i.observe(!1)),ye.has(t)){let i=ye.get(t);i.callbacks.push(e),i.rect&&e(i.rect)}else ye.set(t,{rect:void 0,callbacks:[e],parentRects:n});r&&!Dn&&Nd()},unobserve(){s.forEach(i=>i.unobserve());let r=ye.get(t);if(r){let i=r.callbacks.indexOf(e);i>=0&&r.callbacks.splice(i,1),r.callbacks.length||ye.delete(t),ye.size||(cancelAnimationFrame(Ad),Dn=!1)}}}}var Od,ve=new Map,_d=()=>{ve.forEach((t,e)=>{if(!e.isConnected){ve.delete(e);return}let{clientHeight:o,scrollHeight:n}=e,s=n>o;t.visible!==s&&(t.visible=s,t.callbacks.forEach(r=>r(t.visible)))}),ve.size!==0&&(Od=window.requestAnimationFrame(_d))};function Dd(t,e){return{observe(){let o=ve.size===0;ve.has(t)?ve.get(t).callbacks.push(e):ve.set(t,{visible:void 0,callbacks:[e]}),o&&_d()},unobserve(){let o=ve.get(t);if(o){let n=o.callbacks.indexOf(e);n>=0&&o.callbacks.splice(n,1),o.callbacks.length||ve.delete(t),ve.size||cancelAnimationFrame(Od)}}}}var Rr=["borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","borderStyle","boxSizing","color","overflowWrap","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontWeight","fontKerning","lineHeight","letterSpacing","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","textIndent","whiteSpace","wordBreak","wordSpacing","wordWrap"];function Pr(t,e,o){return o.forEach(n=>{e.style[n]=t[n]})}function Lt(t){return parseFloat(t)}function Hn(t){return Math.round(t*1e6)}function Hd(t){return t/1e6}function Ir(t,e,o){if(t.boxSizing==="content-box")return;let{clientWidth:n}=e,s=Lt(t.width),r=Lt(t.borderLeftWidth),i=Lt(t.borderRightWidth),a=Lt(t.paddingRight),l=Hd(Hn(s)-Hn(r)-Hn(i)),c=Hd(Hn(n));if(l-c>2){let d=l-c;o.style.paddingRight=`${a+d}px`}}function Fn(t,e={}){var d;let o=e.overlayContainer||document.createElement("div");o.style.display="none",o.style.position=e.position??"fixed",o.style.pointerEvents="none",o.style.borderColor="transparent",Je(o);let n=window.getComputedStyle(t),s=!0,r=()=>{o.scrollTop=t.scrollTop};Pr(n,o,Rr),Ir(n,t,o),e.mirrorOverflow&&(o.style.overflow="hidden",t.addEventListener("scroll",r));let i=Dd(t,()=>{Pr(n,o,Rr),Ir(n,t,o),r(),setTimeout(r,0)}),a,l=!0,c=kr(t,u=>{if(u===null){e.onRemove&&e.onRemove(),o.remove();return}if(!l&&e.onMoveStart&&(Promise.resolve().then(()=>e.onMoveStart()),l=!0),clearTimeout(a),a=setTimeout(()=>{e.onMoveEnd&&e.onMoveEnd(),l=!1},200),u.height===0&&u.width===0){if(s===!0)return;e.onHide&&e.onHide(),o.style.display="none",s=!0;return}if(Pr(n,o,Rr),Ir(n,t,o),r(),o.style.top=`${u.top}px`,o.style.left=`${u.left}px`,e.closestScrollElement&&e.closestScrollElement!==t){let p=e.closestScrollElement.getBoundingClientRect(),g=window.getComputedStyle(e.closestScrollElement),f=Lt(g.borderTopWidth),m=Lt(g.borderBottomWidth),S=p.top+f-u.top,w=u.top+u.height+-(p.top+p.height-m);o.style.clipPath=`inset(${S}px 0px ${w}px 0px)`}s&&(o.style.display="block",e.onShow&&e.onShow(),s=!1)});return e.appendTo?e.appendTo.appendChild(o):(d=t.parentElement)==null||d.appendChild(o),c.observe(),i.observe(),[o,()=>{t.removeEventListener("scroll",r),c.unobserve(),i.unobserve()}]}var Fd=(t,e)=>({value(){try{let o=sessionStorage.getItem(`dd-${t}`);if(!o)return e;try{return JSON.parse(o)}catch{return e}}catch{return e}},update(o){try{sessionStorage.setItem(`dd-${t}`,JSON.stringify(o))}catch{E.warn("[Deepdesk] SessionStorage is blocked by browser")}}});function Dv(t){return t.offsetParent!==null}function Bd(t){if(!Dv(t))return!1;let e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}function Ar(t,e,o=100){let n=Bd(t);e({isVisible:n});let s=setInterval(()=>{let r=Bd(t);r!==n&&(n=r,e({isVisible:n}))},o);return()=>{clearTimeout(s)}}import{jsx as $}from"react/jsx-runtime";var Kd=Fd("showTabHint",!0),Kn=class t{static version="11.1.1-beta.2";static count=0;deepdeskApi;inputMediator=null;version;broadcastEvents;eventListeners={};unmountHandlers=[];widgetRoot=null;dynamicThunkObject={};isMounted=!1;instanceId;shouldRender=!0;store;constructor({deepdeskUrl:e,brokerUrl:o,version:n=t.version||"unknown",locale:s="en-US",token:r,fetch:i,productName:a,createCustomChannel:l}){let c=e.replace(/\/api$/,"");this.deepdeskApi=new Ke(c,{token:r,fetch:i}),this.version=n,this.instanceId=t.count++;let d={deepdeskAPI:this.deepdeskApi,dynamicThunkObject:this.dynamicThunkObject,middleware:[Ed({broadcast:(u,p,g)=>{this.broadcastEvents.send(u,p,g)},emit:(u,p,g)=>this.emit(u,p,g),handleAfterSendMessage:u=>this.handleAfterSendMessage(u),handleInputChanged:u=>this.handleInputChanged(u),handleKeyDown:u=>this.handleKeyDown(u),logHandlingTime:()=>this.logHandlingTime(),logSendMessage:u=>this.logSendMessage(u),onUpdateShowTabHint:u=>Kd.update(u),sendEvent:(u,p)=>this.deepdeskApi.sendEvent(u,p)})]};o&&Object.assign(d,{deepdeskBrokerAPI:new po(o)}),this.store=Td(d),this.broadcastEvents=new pd({debug:!0,deepdeskUrl:c,eventMap:Ni(this.store),createCustomChannel:l}),this.store.dispatch(eo(Kd.value())),this.store.dispatch(So({locale:s,adminUrl:c,productName:a}))}get state(){return this.store.getState()}get settings(){return this.state.settings}get selectedTextSuggestion(){return this.state.input.textSuggestions[this.state.input.selectedSuggestionIndex]??null}hasConversation(){return!!this.state.conversation.current}conversationId(){if(!this.hasConversation())throw new Error("No conversation loaded");return this.state.conversation.current.id}sessionId(){if(!this.hasConversation())throw new Error("No conversation loaded");return this.state.conversation.current.sessionId}shouldAbort(){return this.state.conversation.isSupported===!1?(E.warn("Conversation is not supported"),!0):this.hasConversation()?this.state.profile.data?!1:(E.warn("Profile has not been loaded (yet)"),!0):(E.warn("No conversation loaded (yet)"),!0)}login(){return this.store.dispatch(lt(null)),this.store.dispatch(Se()),new Promise(e=>{let o=this.store.subscribe(()=>{let n=this.store.getState();W(n)&&Gr(n)!=="loading"&&(o(),e())});this.unmountHandlers.push(()=>{o()})})}async isLoggedIn(){return(await this.store.dispatch(Se())).payload}async setPlatformAgentId(e){try{if((await this.deepdeskApi.client.get("/apis/admin/session/me/",{version:null})).external_id)return;await this.deepdeskApi.client.request("/apis/admin/session/me/",{method:"PATCH",body:JSON.stringify({external_id:e}),version:null})}catch(o){E.warn("Failed to attach user:",o)}}async isConversationSupported(e,o){return(await this.store.dispatch(Jn({sessionId:e,options:o}))).payload}async createConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(Co(e))).payload}async getConversationBySessionId(e,o){return this.hasConversation()&&this.sessionId()!==e&&this.resetConversation(),(await this.store.dispatch(wo({sessionId:e,options:o}))).payload}async upsertConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(Yn(e))).payload}async postMessages(e){return(await this.store.dispatch(Eo(e))).payload}async updateConversation(e){return(await this.store.dispatch(To(e))).payload}resetConversation(){this.store.dispatch(N()),this.loadProfileConfigPromise=null,this.dynamicThunkObject.conversationQuery=null}async getSummary(){let e=await this.store.dispatch(Ce());if(e.error)throw new Error(e.error.message);return e.payload.summary}configure(e){this.store.dispatch(So(e))}setVisitorInfo(e){this.store.dispatch(xi(e))}async setAgentInfo(e){await this.store.dispatch(Bt(e))}async setAgentSettings(e){await this.store.dispatch(ns(e))}async getAgentSettings(){return(await this.store.dispatch(ss())).payload}async refresh(){if(this.shouldAbort())return Promise.resolve();this.inputMediator&&this.handleInputChanged(this.inputMediator.getText());let e=[];return this.store.dispatch(tn()),e.push(this.refreshWidgetSuggestions()),Promise.all(e).then(()=>{})}notifyInputChanged(e){this.store.dispatch(Io(e))}notifyKeyDown(e){this.store.dispatch(Po(e))}notifyPaste(e,o){this.store.dispatch(gi({text:e,selectionText:o}))}notifyCut(e){this.store.dispatch(ui(e))}notifyExternalSuggestion(e){this.store.dispatch(ge(e)),this.store.dispatch(xe())}async evaluateRule(e,o={}){let{payload:n,error:s}=await this.store.dispatch(be({label:e,params:o}));if(s)throw new Error(s.message);return n}handleInputChanged(e){let{overlayCollapsed:o,openOverlayWhenTyping:n}=this.state.ui;o&&n&&this.store.dispatch(De({collapse:!1})),this.inputMediator&&this.store.dispatch(ii({text:e,html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),!this.shouldAbort()&&(this.isMounted||this.store.dispatch(pe([])))}handleKeyDown(e){let{overlayCollapsed:o}=this.state.ui,{textSuggestions:n,selectedSuggestionIndex:s,selection:r}=this.state.input,{inlineSuggestions:i}=this.state.settings,a=n.length>0,l=s!==-1;if(this.store.dispatch(pi(ni(e))),e.key!=="Tab"&&!this.settings.showTextSuggestions)return;let c=()=>{o||!a||r&&(e.shiftKey||(this.store.dispatch(li()),i||this.stageSelectedSuggestion({inputType:"arrow"}),e.preventDefault()))},d=()=>{o||!a||i&&s<=0||r&&(e.shiftKey||(this.store.dispatch(di()),e.preventDefault(),!i&&(this.state.input.selectedSuggestionIndex===-1?this.store.dispatch(Ft()):this.stageSelectedSuggestion({inputType:"arrow"}))))};switch(e.key){case"Up":case"ArrowUp":i?d():c();return;case"Down":case"ArrowDown":{i?c():d();return}case"Esc":case"Escape":{i&&l&&this.store.dispatch(Le(-1)),this.state.input.selectedSuggestionIndex!==-1?(this.store.dispatch(Le(-1)),this.store.dispatch(Ft()),e.preventDefault()):o||(this.store.dispatch(De({collapse:!0})),this.store.dispatch(vl(!0)),e.preventDefault());return}case"Tab":{let{userCommitted:u}=this.state.input,p=u.text.substring(0,u.selection.end),{tabCompletionSuggestion:g}=this.state.input;this.store.dispatch(eo(!1)),this.state.input.selectedSuggestionIndex>-1?this.stageSelectedSuggestion({inputType:"tab"}):!i&&this.settings.showTabCompletion&&g&&g.text.startsWith(p)&&(this.store.dispatch(ge({text:g.text,suggestion:g,eventMetrics:{inputType:"tab"},replace:"until-selection-end"})),this.store.dispatch(xe())),e.preventDefault();break}default:}}handleAfterSendMessage(e){this.emit("send-message",e),this.store.dispatch(mi()),this.store.dispatch(pe([]))}handlingTimeStart(){this.state.handlingTime.startTime||(E.info("Start handling time"),this.store.dispatch(fd()))}handlingTimeStop(){this.state.handlingTime.startTime&&(E.info("Stop handling time"),this.store.dispatch(On()))}logSendMessage(e){let o=Rd("input",this.state,{version:this.version});e&&(Object.assign(o,{text:e}),Object.assign(o,{lenTextTotal:e.length})),this.deepdeskApi.sendEventV1("Send Message",o),this.emit("send-message-event",o)}logHandlingTime(){let e=kd(this.state,{version:this.version});this.deepdeskApi.sendEventV1("Handling Time",e),this.store.dispatch(hd())}notifySubmit(e={}){this.shouldAbort()||(this.store.dispatch(xe()),this.store.dispatch($e(e.text??this.state.input.text)))}stageSelectedSuggestion(e){let o=this.state.input.selectedSuggestionIndex,{textSuggestions:n}=this.state.input;this.store.dispatch(ge({text:n[o].text,suggestion:n[o],eventMetrics:e,replace:"until-selection-end"}))}emit(e,o,n={}){let s=()=>{this.eventListeners[e]&&this.eventListeners[e].forEach(r=>{try{r(o)}catch(i){E.warn(`The following error occurred in deepdeskSDK.on('${e}', handler)`),E.error(i)}})};this.inputMediator&&n.mayApplyChanges?this.inputMediator.applyChanges(s):s()}on(e,o){return this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(o),()=>{this.off(e,o)}}off(e,o){if(!e&&!o){this.eventListeners={};return}let n;this.eventListeners[e]&&(n=this.eventListeners[e].indexOf(o),n>-1&&this.eventListeners[e].splice(n,1))}setConversationQuery(e){this.dynamicThunkObject.conversationQuery=e}whenConversationLoaded(e){let o=()=>this.loadProfileConfig().then(()=>e());this.hasConversation()&&o();let n=this.hasConversation();this.store.subscribe(()=>{this.hasConversation()!==n&&(n=this.hasConversation(),n&&o())})}overlayContainerFactory(e,o,n,s){let[r,i]=Fn(o,n);return r.setAttribute("translate","no"),r.dataset.testid=e,s&&r.classList.add(s),this.unmountHandlers.push(()=>{Bn(r),i(),r.remove()}),r}createInlineContainer(e,o){var i;let n=document.createElement("div");n.style.position="absolute",n.style.top="0px",n.style.left="0px",n.style.height="0px",n.style.width="0px";let s=document.createElement("div");s.style.display="none",s.style.position="absolute",s.style.height="0px",s.style.width="0px",s.style.backgroundColor="red",n.appendChild(s);let r=(i=e.ownerDocument.defaultView)==null?void 0:i.frameElement;if(r){let[a,l]=Fn(r,{appendTo:document.body,onMoveStart:()=>{s.style.display="none"}});a.dataset.testid=o,a.style.zIndex="2",a.appendChild(n),this.unmountHandlers.push(()=>{Bn(s),l()})}else document.body.appendChild(n);return s}createContainer(e,o=document.body){let n=window.getComputedStyle(o),s=document.createElement("div");return Je(s),s.dataset.testid=e,s.style.color=n.color,s.style.fontSize=n.fontSize,s.style.fontFamily=n.fontFamily,s.style.fontVariant=n.fontVariant,s.setAttribute("translate","no"),o.appendChild(s),this.unmountHandlers.push(()=>{Bn(s),s.remove()}),s}storeMetrics(){try{let e=`dd-metrics-${this.conversationId()}`,o=JSON.stringify({text:this.state.input.text,metrics:this.state.input.metrics});window.sessionStorage.setItem(e,o),E.info(`Stored analytics for ${this.conversationId()}`)}catch{}}restoreMetrics(){try{let e=`dd-metrics-${this.conversationId()}`,o=window.sessionStorage.getItem(e);if(!o)return;let n=JSON.parse(o);n.text.trim()===this.state.input.text.trim()?(E.info(`Restored metrics for ${this.conversationId()}`),this.store.dispatch(hi(n.metrics))):E.warn(`Metrics mismatch, disregarding stored metrics for ${this.conversationId()}`),window.sessionStorage.removeItem(e)}catch{}}mount(e,o={}){if(this.isMounted)throw new Error("[Deepdesk] This instance was already mounted. Make sure to unmount before you remount.");if(!Er(e))throw new Error("[Deepdesk] Only mount on textarea or contentEditable div.");if(!this.shouldRender)return;let{customStyles:n={},showStyleSuggestions:s,showTabCompletion:r,showTextSuggestions:i,textSuggestionsCount:a,showMidSentenceSuggestions:l,showSuggestionsBeforePattern:c,showSuggestionsAfterPattern:d,isEmbedded:u,detectSubmit:p,insertLink:g,inputMediator:f,closestScrollSelector:m,appendOverlayTo:S,inlineSuggestions:w,floatingMenu:v}=o;this.configure({showStyleSuggestions:s,showTabCompletion:r,textSuggestionsCount:a,showMidSentenceSuggestions:l,showSuggestionsBeforePattern:c,showSuggestionsAfterPattern:d,showTextSuggestions:i,insertLink:g,isEmbedded:u,inlineSuggestions:w,floatingMenu:!!v}),o.automaticHandlingTime&&this.setupHandlingTime(e),Je(e),this.inputMediator=f||(He(e)?new Pt(e):new Rt(e)),this.inputMediator.on("change",({plainText:x})=>{this.notifyInputChanged(x)}),this.inputMediator.on("updated",()=>{this.inputMediator&&this.store.dispatch(fi({text:this.inputMediator.getText(),html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()}))}),this.inputMediator.on("keydown",x=>{this.notifyKeyDown(x)}),this.inputMediator.on("paste",({pastedText:x,selectionText:T})=>{this.notifyPaste(x,T)}),this.inputMediator.on("cut",({selectionText:x})=>{this.notifyCut(x)});let y=m&&Pd(e,m)||void 0;if(w){let{customStyles:x,appendOverlayTo:T}=o;if(He(e))throw new Error("[Deepdesk] Inline suggestion is not supported for textarea yet.");let L=this.createInlineContainer(e,"deepdesk-caret");Mt($(Ye,{store:this.store,customStyles:x,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(kl,{})})}),L),this.inputMediator.on("caret",F=>{this.store.dispatch(pe([])),F?(L.style.display="block",L.style.top=`${F.top}px`,L.style.left=`${F.left}px`):L.style.display="none"});let z=this.overlayContainerFactory("floating-menu",y||e,{appendTo:typeof v=="object"&&"appendOverlayTo"in v?v.appendOverlayTo:T},x==null?void 0:x.floatingMenuRootNode);Mt($(Ye,{store:this.store,customStyles:x,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(hl,{onLogIn:()=>this.loginViaPopup().catch(F=>E.warn(F.message))})})}),z)}else{let x=this.overlayContainerFactory("deepdesk-tab-completion",y||e,{appendTo:S,closestScrollElement:y,mirrorOverflow:!0,onRemove:()=>this.unmount()},n==null?void 0:n.rootNode),T=this.overlayContainerFactory("deepdesk-suggestions-overlay",y||e,{appendTo:S},n==null?void 0:n.suggestionsRootNode);Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(ac,{inputElement:e})})}),x),Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(Dl,{onLogIn:()=>this.loginViaPopup().catch(L=>E.warn(L.message))})})}),T)}Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(dl,{})})}),this.createContainer("deepdesk-overlays"));let k;this.inputMediator.on("selection",x=>{clearTimeout(k),x===null?k=setTimeout(()=>{x!==null&&this.store.dispatch(es(x))},500):this.store.dispatch(es(x))}),this.inputMediator.on("disabled",()=>{var x;(x=this.inputMediator)==null||x.deactivate(),this.configure({visible:!1})}),this.inputMediator.on("enabled",()=>{this.inputMediator&&(this.configure({visible:!0}),this.inputMediator.activate())}),this.inputMediator.on("submit",()=>{p&&this.notifySubmit()}),this.inputMediator.on("blur",()=>this.store.dispatch(Gs(!1))),this.inputMediator.on("focus",()=>this.store.dispatch(Gs(!0))),this.store.dispatch(ai({text:this.inputMediator.getText(),html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),this.unmountHandlers.push(()=>{this.state.input.text!==""&&(this.store.dispatch(xe()),this.storeMetrics())}),this.whenConversationLoaded(()=>{var x;this.restoreMetrics(),this.refresh(),this.broadcastEvents.setSessionId((x=this.state.conversation.current)==null?void 0:x.sessionId)}),this.isMounted=!0}unmount(){var e;this.unmountHandlers.forEach(o=>o()),this.unmountHandlers=[],(e=this.inputMediator)==null||e.dispose(),this.broadcastEvents.cleanup(),this.isMounted=!1}renderWidget(e,o={}){if(this.widgetRoot&&E.warn("A widget was already rendered for this instance. Make sure to unmountWidget before rerendering"),!this.shouldRender)return;let{customStyles:n,showImages:s,isEmbedded:r}=o;this.widgetRoot=e,this.configure({showImages:s,isEmbedded:r}),Mt($(Ye,{store:this.store,customStyles:n,children:$(Ge,{broadcastEvents:this.broadcastEvents,children:$(ad,{onLogIn:()=>this.loginViaPopup().catch(i=>E.warn(i.message))})})}),e),this.whenConversationLoaded(()=>{var i;this.broadcastEvents.setSessionId((i=this.state.conversation.current)==null?void 0:i.sessionId)})}unmountWidget(){this.widgetRoot&&Bn(this.widgetRoot),this.widgetRoot=null}setupHandlingTime(e){let o=Ar(e,({isVisible:n})=>{n?this.handlingTimeStart():this.handlingTimeStop()});this.unmountHandlers.push(()=>{this.handlingTimeStop(),o()}),this.whenConversationLoaded(()=>{this.handlingTimeStart()})}handleError(e){Id(e)&&e.message==="Unauthorized"&&this.login()}loadProfileConfigPromise=null;loadProfileConfig(){return this.loadProfileConfigPromise?this.loadProfileConfigPromise:(this.loadProfileConfigPromise=Promise.resolve().then(async()=>{await this.store.dispatch(Jt());let e=_e(this.state);e&&(await this.store.dispatch(Qt()),this.store.dispatch(So({showSearch:e.search,showAutoflows:e.autoflows,showCustomMessages:e.customMessages,showImageSearch:e.imageSearch,showEntitiesCommand:e.entitiesCommand,showSummaryCommand:e.summarizer,showKnowledgeSearch:!!e.knowledgeAssistant,recommendTextSuggestions:e.recommendTextSuggestions})))}),this.loadProfileConfigPromise)}async loginViaPopup(e){return new Promise((o,n)=>{let s=new MessageChannel,r=s.port1,i=this.state.settings.adminUrl,a=new URL(e!=null&&e.url?e==null?void 0:e.url:`${i}/platform/sso/`);a.searchParams.append("redirect","/sdk/popup/close.html");let l=!1,c=()=>{d&&!d.closed&&d.close(),window.removeEventListener("message",u),clearInterval(p)};r.onmessage=async g=>{var f,m;if((f=g.data)!=null&&f.jwt)try{await this.deepdeskApi.exchangeTokenForAccessCookie((m=g.data)==null?void 0:m.jwt),await this.isLoggedIn(),this.broadcastEvents.send(Ut),l=!0,s.port1.close(),o()}catch(S){console.error(S),n(S)}finally{l=!0,c()}};let d=window.open(a.toString(),"deepdesk-login","scrollbars=no,left=100,top=150,width=500,height=500");d===null&&n(new Error("Popup blocked by browser"));let u=async g=>{var f;if(g.origin===a.origin)switch((f=g.data)==null?void 0:f.type){case"deepdesk-popup-loaded":{try{let m=JSON.stringify({type:"deepdesk-popup-create-channel"});d==null||d.postMessage(m,a.origin,[s.port2])}catch(m){E.error("Error posting message to popup",m),n(m)}break}case"deepdesk-popup-error":{c(),g.data.message==="Timeout"&&E.warn("Popup timed out. Check if the account's platform url is configured correctly."),n(new Error(g.data.message));break}}};window.addEventListener("message",u);let p=setInterval(()=>{d&&!d.closed||(c(),l||n(new Error("Popup closed by user")))},200);this.unmountHandlers.push(c)})}translateMessages(e){return this.deepdeskApi.translateMessages(e)}async checkForTrialMode(e){try{let{account:o}=await this.deepdeskApi.getPlatformConfig();if(!o.isTrial){this.shouldRender=!0;return}if(E.info("Trial is active"),!await this.deepdeskApi.checkUserExists(e))throw new Error("User is not in trial");this.shouldRender=!0}catch(o){let{message:n}=o;E.info(n),this.shouldRender=!1}}async refreshWidgetSuggestions(){if(!this.widgetRoot||this.shouldAbort())return;let{uiConfig:e}=this.state.profile.data;if(!e.widget)return;let o=Yo(this.state);try{o.forEach(({type:n})=>{n==="entities"?this.store.dispatch(ce()):this.store.dispatch(de(n))})}catch(n){this.handleError(n)}}};async function Hv(t,e,o={}){let{value:n}=t,{start:s,end:r}=o.replace??{start:0,end:n.length},i=`${n.slice(0,s)}${e}${n.slice(r)}`,a=o.selectionAfter??{start:s+e.length,end:s+e.length},l=()=>{if(o.setValue)return o.setValue(i);t.value=i};return Promise.resolve(l()).then(()=>{t.selectionStart=a.start,t.selectionEnd=a.end,t.blur(),t.focus()})}async function Fv(t,e,o={}){let n=o.replace?ot(t,o.replace.start,o.replace.end):co(t),s,r=()=>{if(o.setRange)return o.setRange(n.cloneRange());n.deleteContents(),s=document.createElement("span"),n.insertNode(s),o.insertBRs!==!1?e.split(`
|
|
10
10
|
`).reverse().forEach((i,a)=>{a>0&&n.insertNode(document.createElement("br")),n.insertNode(document.createTextNode(i))}):n.insertNode(document.createTextNode(e))};return Promise.resolve(r()).then(()=>{try{if(o.selectionAfter!==!1){t.focus();let i=o.selectionAfter?ot(t,o.selectionAfter.start,o.selectionAfter.end):(n.collapse(!1),n),a=window.getSelection();a==null||a.removeAllRanges(),a==null||a.addRange(i)}if(!s)return;s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"})}finally{s&&s.remove()}})}function Bv(t){let e=document.createElement("template");return e.innerHTML=t.replace(/(\[([^\]]+)])\(([^)]+)\)/g,'<a href="$3" target="_blank" rel="noopener noreferrer">$2</a>'),e.content}function Kv(t){let e=document.createDocumentFragment();return t.split(`
|
|
11
11
|
`).forEach((o,n)=>{n>0&&e.appendChild(document.createElement("br"));let s={index:0},r=0;for(;s=o.slice(r).match(/(\[([^\]]+)])\(([^)]+)\)/);){let i=document.createElement("a");i.href=s[3],i.setAttribute("target","_blank"),i.setAttribute("rel","noopener noreferrer"),i.appendChild(document.createTextNode(s[2])),e.appendChild(document.createTextNode(o.slice(r,r+s.index))),e.appendChild(i),r=r+s.index+s[0].length}e.appendChild(document.createTextNode(o.slice(r)))}),e}function Ud(t,e){return!t.contains(e)||e===t?null:e.parentNode===t?e:Ud(t,e.parentNode)}async function Uv(t,e,{isBlock:o,isHTML:n}={}){let s;t.dispatchEvent(new InputEvent("beforeinput",{inputType:"insertText",data:e,bubbles:!0,cancelable:!0}));let r=()=>{let i=t.ownerDocument.defaultView??window,a=i.getSelection();if((!a||a.rangeCount===0)&&(t.focus(),a=i.getSelection()),!a||a.rangeCount===0)return;let l=a.getRangeAt(0);if(!l)return;s=document.createElement("span"),l.insertNode(s);let c=n?Bv(e):Kv(e);if(o){let d=l.startContainer===t?t.childNodes[l.startOffset]:l.startContainer,u=Ud(t,d)??t.firstChild;t.insertBefore(c,(u==null?void 0:u.nextSibling)??null)}else l.insertNode(c),l.collapse(!1)};return Promise.resolve(r()).then(()=>{if(t.dispatchEvent(new InputEvent("input",{inputType:"insertText",data:e,bubbles:!0,cancelable:!0})),t.focus(),!!s)try{s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"})}finally{s&&s.remove()}})}function zv(t){return t.replace(/\[([\w\s\d]+)\]\((https?:\/\/[^\s]+)\)/g,'<a href="$2" target="_blank" rel="noreferrer">$1</a>')}async function Vv(t,e,o){await new Ke(t).authenticateWithKey(e,o)}async function $v(t){let o=await new he(t).get("/platform/config/",{version:null,useCache:!0});return I(o)}async function qv(t){let o=await(t.fetch??window.fetch)(t.url),n=await o.blob();return new File([n],t.name,{type:t.mimeType??o.headers.get("Content-Type")??"image/jpeg"})}async function Gv(t,e){let o=await qv(e),n=new Event("change",{bubbles:!0,cancelable:!0});try{Object.defineProperty(t,"files",{configurable:!0,get:()=>[o]}),t.dispatchEvent(n)}finally{Object.hasOwn(t,"files")&&delete t.files}}export{H as Card,Rt as ContentEditableInput,Ke as DeepdeskAPI,Kn as DeepdeskSDK,he as HTTPClient,Be as InputMediator,at as InputType,Vn as KeyboardHint,$n as Label,vo as Locale,Re as Section,Gn as SectionList,Pe as Sources,O as Suggestion,oe as SuggestionList,Pt as TextAreaInput,it as ToggleButton,Gv as attachFile,Vv as authenticateWithKey,co as createFullRange,Fn as createOverlayContainer,ot as createRangeFromOffsets,Xt as escapeHTML,$v as fetchPlatformConfig,zv as formatTextMarkup,Ln as getRangeOffsets,Mn as getRangeText,Uv as insertCKEditor,ws as isHTML,Er as isSupportedInputElement,Fv as updateContentEditable,Hv as updateTextArea,h as useStyles,Ar as waitForElementVisibilityChange};
|