@deepdesk/deepdesk-sdk 11.3.1-beta.2 → 11.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- 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
|
@@ -7,6 +7,6 @@ Try polyfilling it using "@formatjs/intl-pluralrules"
|
|
|
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 Il}from"react/jsx-runtime";var ff={green:"#0A5E52",pink:"#CD8EF2",red:"#DF341D",yellow:"#DEBD00"},Ll=({className:t,color:e})=>Il("svg",{className:t,viewBox:"0 0 345 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:Il("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:ff[e||"pink"]})});var Al={root:"dd-LbeUM",text:"dd-Dpfn1",isLoggedOut:"dd-21y-z",icon:"dd-8rLqS",logo:"dd-slXhD",lock:"dd-ByzlR"};var tr={};j(tr,{enUS:()=>hf,nlNL:()=>yf});var hf={signin:[{type:0,value:"Sign in to "},{type:1,value:"productName"}],search:[{type:1,value:"productName"},{type:0,value:" Search"}]},yf={signin:[{type:0,value:"Log in bij "},{type:1,value:"productName"}],search:[{type:1,value:"productName"},{type:0,value:" Zoeken"}]};import{useDispatch as xf}from"react-redux";import{jsx as or,jsxs as Ml}from"react/jsx-runtime";var Nl=({onLogIn:t})=>{let e=E(tr),o=b("floatingMenu"),n=b("productName"),s=xf(),r=Sf(X),i=h("FloatingMenu",Al);if(r===null||o===!1)return null;let a=()=>{r===!0?s(Y(!0)):t()};return Ml("button",{className:vf(i.root,{[i.isLoggedIn]:r,[i.isLoggedOut]:!r}),onClick:a,children:[or("div",{className:i.text,children:e(r?"search":"signin",{productName:n})}),Ml("div",{className:i.icon,children:[or(Ll,{className:i.logo,color:"pink"}),r===!1&&or(Pl,{className:i.lock})]})]})};import{useEffect as Bf,useRef as Uf}from"react";import{connect as zf,useDispatch as Vf,useSelector as fn}from"react-redux";import{useEffect as bf}from"react";function Ct(t){bf(()=>{let e=o=>{o.isWithinRoot||t(o)};return document.body.addEventListener("mouseup",e),()=>{document.body.removeEventListener("mouseup",e)}},[t])}function Ze(t){t.addEventListener("mouseup",e=>{e.isWithinRoot=!0},!0)}function wt(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 Cf}from"@reduxjs/toolkit";var wf={showTabHint:!1,inputHasFocus:!1,overlayCollapsed:!1,openOverlayWhenTyping:!1,overlayCollapsedUserOverwrite:!1};var pn=({ui:t})=>t.overlayCollapsed;var Ol=Cf({name:"ui",initialState:wf,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:to,setInputHasFocus:nr,setOverlayCollapsed:_e,setOpenOverlayWhenTyping:Dl,setOverlayCollapsedUserOverwrite:_l}=Ol.actions,Fl=Ol.reducer;import{Fragment as Ff,useMemo as Hf}from"react";import{Interweave as kf}from"interweave";import{useEffect as Rf,useMemo as Pf,useRef as If}from"react";import{useDispatch as Lf,useSelector as Af}from"react-redux";import{useEffect as Tf}from"react";function Hl(t,e,o){Tf(()=>{let n=t.current;return n?(n.addEventListener(e,o),()=>{n.removeEventListener(e,o)}):()=>{}},[t,e,o])}var Kl={root:"dd-1MBCO",actions:"dd--x4cy",badge:"dd-4Fpkz",formattedText:"dd-EzvTB"};import{jsx as mn,jsxs as _f}from"react/jsx-runtime";var Mf=["search","personal-collection-search","search-autocomplete"];function Nf(t,e,o,n={}){let s="";return Mf.includes(e)?s=ga(As(t,o,{stripAgentPart:!0}),n.searchKeywords??[o]):s=As(t,o,n),n.placeholders===!0&&(s=fa(s)),s}var Of=()=>{},Df=({index:t,selected:e,suggestion:o,onFeedback:n})=>{let s=b("inlineSuggestions"),r=Af(mt),i=Lf(),a=h("TextSuggestion",Kl),d=If(null);Rf(()=>{let c=setTimeout(()=>{i(Ci({text:o.text,suggestion:o}))},500);return()=>{clearTimeout(c)}},[o]),Hl(d,"click",()=>{i(Me(t)),i(pe({suggestion:o,text:o.text,eventMetrics:{inputType:"mouse"},replace:"until-selection-end"}))});let l=Pf(()=>Nf(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:_f("div",{className:a.root,onMouseEnter:()=>i(Me(t)),children:[mn(A,{ref:d,as:"button","data-testid":"suggestions-overlay-item",selected:e,onClick:Of,children:mn(kf,{containerTagName:"div",noWrap:!1,tagName:"span",className:a.formattedText,content:l})}),e&&n&&mn("div",{className:a.actions,children:mn(Yo,{onFeedback:()=>n(o),suggestion:o.text})})]})},Bl=Df;import{jsx as Ul}from"react/jsx-runtime";var Kf=({onFeedback:t,suggestions:e,selectedIndex:o,reverse:n})=>{let s=Hf(()=>{let r=e.map((i,a)=>Ul(Bl,{index:a,selected:a===o,suggestion:i,onFeedback:t},`${i.text}-${i.source}`));return n?r.reverse():r},[e,o,n]);return Ul(Ff,{children:s})},gn=Kf;var zl={root:"dd-PfvRI",paper:"dd-HYlyY"};import{jsx as hn}from"react/jsx-runtime";var Wf=({textSuggestions:t,selectedIndex:e})=>{let o=Uf(null),n=h("InlineSuggestionsOverlay",zl),s=fn(wt),r=Vf(),i=fn(X),a=fn(ut),d=fn(pn),l=b("showTextSuggestions");return Ct(()=>{setTimeout(()=>{r(_e({collapse:!0,skipWhenInputFocus:!0}))})}),Bf(()=>{let c=o.current;if(!c||!c.parentElement)return;c.parentElement.style.left="0px";let u=c.getBoundingClientRect();c.parentElement.style.left=`${Math.min(window.innerWidth-4-u.right,0)}px`}),d||!s||!l||t.length===0||i!==!0||a===!1?null:hn("div",{className:n.root,"data-variant":"inline",children:hn("div",{ref:o,className:n.paper,children:hn(J,{children:hn(gn,{suggestions:t,selectedIndex:e})})})})},qf=({input:t})=>({selectedIndex:t.selectedSuggestionIndex,textSuggestions:t.textSuggestions}),Vl=zf(qf)(Wf);import{Provider as Gf}from"react-redux";import{jsx as yn}from"react/jsx-runtime";var $f=({children:t})=>{let o=b("locale").replace("-","");return yn(Ts.Provider,{value:o,children:t})},jf=({store:t,customStyles:e={},children:o})=>yn(Gf,{store:t,children:yn($f,{children:yn(_t.Provider,{value:e,children:o})})}),Je=jf;import lr from"classnames";import{useEffect as ih,useRef as ah,useState as lh}from"react";import{connect as dh,useDispatch as ch,useSelector as oo}from"react-redux";import{useState as Xf}from"react";function Wl(t,e){let[o,n]=Xf(()=>{if(typeof window>"u")return e;try{let r=window.localStorage.getItem(t);return r?JSON.parse(r):e}catch(r){return C.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){C.error(i)}}]}var ql=()=>/Mac/i.test(navigator.platform);import Jf from"classnames";import{Fragment as Yf,useCallback as rr,useMemo as $l}from"react";var sr={};j(sr,{enUS:()=>Qf,nlNL:()=>Zf});var Qf={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"}]}]},Zf={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 Gl={root:"dd-uTPjX",anchor:"dd-C8lsZ",anchorButton:"dd-IoSx9"};import{jsx as vn,jsxs as jl}from"react/jsx-runtime";var ir=(t,e,o)=>n=>vn("button",{className:t.anchorButton,type:"button",value:e,onClick:o,children:n},e),eh=({className:t,loginUrl:e,isEmbedded:o,onSnooze:n,onLogIn:s})=>{let r=E(sr),i=oe(),a=h("Login",Gl),d=b("productName"),l=rr(y=>{y.preventDefault(),n&&n(parseInt(y.target.value,10))},[]),c=rr(y=>{y.preventDefault(),i.send(gt,!0)},[e]),u=$l(()=>y=>vn("a",{onClick:v=>{v.preventDefault(),s()},href:e,className:a.anchor,target:"_blank",rel:"noreferrer",children:y},"login"),[e]),p=rr(y=>vn("button",{type:"button",className:a.anchorButton,onClick:c,children:y},"prompt"),[c]),{min:m,hour:g,day:f}=$l(()=>({min:ir(a,60*10,l),hour:ir(a,60*60,l),day:ir(a,60*60*12,l)}),[]);return jl("div",{className:Jf(t,a.root),children:[r("loginPlease",{login:o?p:u,productName:d}),n&&jl(Yf,{children:[vn("br",{}),r("snooze",{min:m,hour:g,day:f})]})]})},Sn=eh;import{useDispatch as th}from"react-redux";var Xl={root:"dd-DoQhb",text:"dd-Jwnev"};import{jsx as Ql,jsxs as nh}from"react/jsx-runtime";var oh=({title:t})=>{let e=h("SearchTrigger",Xl),o=th();return nh("button",{type:"button",className:e.root,onClick:()=>o(Y(!0)),children:[Ql(ft,{}),Ql("span",{className:e.text,children:t})]})},Zl=oh;var ar={};j(ar,{enUS:()=>sh,nlNL:()=>rh});var sh={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"}]},rh={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 Jl={root:"dd-oa7Vc",isInline:"dd-bwk31",toggleButton:"dd-MSB8Z",toggleButtonWrapper:"dd-ZkCzT",toggleButtonWrapperHidden:"dd-Sq66c",isCollapsed:"dd-vkrPk",collapsible:"dd-CWQJe",hints:"dd-IOoo3",hintsHidden:"dd-psVuT",triggers:"dd-toIoo",triggersRight:"dd-mc4l2"};import{jsx as z,jsxs as no}from"react/jsx-runtime";var uh=({textSuggestions:t,selectedIndex:e,onLogIn:o})=>{let n=h("SuggestionsOverlay",Jl),s=E(ar),r=oo(wt),i=vi(),a=ch(),d=ah(null),l=b("searchTriggerKey"),c=b("productName"),u=oo(pn),p=oo(X),m=oo(ut),[g,f]=lh(null),y=b("showSearch"),k=b("showTextSuggestions"),v=b("adminUrl"),S=b("isEmbedded"),[P,x]=Wl("dd-snooze-until-ms",0),T=u||P>Date.now(),N=oo(W=>W.input.text),V=t.filter(W=>W.source!=="gpt").length,H=()=>{T&&x(0),a(_l(!T))},I=W=>{a(G({name:"suggestion feedback",data:{text:W.text,source:"overlay",context:N},options:{includeConversationData:!0}}))},O=W=>{let te=Date.now()+W*1e3;x(te),C.info(`Snooze until: ${new Date(te)}`),a(_e({collapse:!0}))};return ih(()=>{V===0&&f(null)},[t,V]),Ct(()=>{a(_e({collapse:!0,skipWhenInputFocus:!0}))}),p===null||m===!1?null:p===!1?no("div",{ref:d,className:lr(n.root,{[n.isCollapsed]:T}),children:[!T&&no("div",{className:n.triggers,children:[z("div",{style:{flex:1}}),z("div",{className:n.triggersRight,children:z(it,{className:n.toggleButton,title:s("collapse"),onClick:H,isCollapsed:!1})})]}),z("div",{className:n.toggleButtonWrapper,children:z(it,{className:n.toggleButton,title:s("open",{productName:c}),onClick:H,isCollapsed:!0})}),z("div",{className:n.collapsible,children:z(Sn,{loginUrl:v,isEmbedded:S,onLogIn:o,onSnooze:O})})]}):!i||!r?null:no("div",{ref:d,className:lr(n.root,{[n.isCollapsed]:T}),children:[!T&&no("div",{className:n.triggers,children:[z("div",{style:{flex:1},children:y&&z("div",{style:{display:"inline-block"},onFocus:()=>{},onMouseOver:()=>f(s(ql()?"searchHintMac":"searchHintWindows",{searchTriggerKey:l.toUpperCase()})),onMouseLeave:()=>f(null),children:z(Zl,{title:s("search")})})}),no("div",{className:n.triggersRight,onFocus:()=>{},children:[z("div",{className:lr(!g&&n.hintsHidden,n.hints),children:g}),z(it,{className:n.toggleButton,title:s("collapse"),onClick:H,isCollapsed:!1})]})]}),z("div",{className:n.toggleButtonWrapper,children:z(it,{className:n.toggleButton,title:s("open",{productName:c}),onClick:H,isCollapsed:!0})}),V>0&&k&&z("div",{className:n.collapsible,onFocus:()=>{},children:z(J,{children:z(gn,{onFeedback:I,suggestions:t,selectedIndex:e,reverse:!0})})})]})},ph=({input:t})=>({selectedIndex:t.selectedSuggestionIndex,textSuggestions:t.textSuggestions}),Yl=dh(ph)(uh);import Sr from"classnames";import{Interweave as dy}from"interweave";import{useCallback as cy,useEffect as uy,useMemo as Td,useRef as py}from"react";import{connect as my}from"react-redux";import{useEffect as mh,useRef as gh,useState as fh}from"react";function xn(t){return t.contentEditable==="true"}function hh(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 ed(t){let{selectionStart:e,selectionEnd:o}=xn(t)?hh(t):t;return[e,o]}function td(t){let[,e]=fh(),o=gh(null);return o.current=ed(t),mh(()=>{let n=()=>{let[s,r]=o.current??[],i=ed(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 od(t,e){if(!e)return;let o=t,{value:n}=o,[s,r]=e,i=n.match(bo);if(!i||i.length===0)return;let a=0;i.find(d=>{let l=n.indexOf(d,a);return s>l&&r<l+d.length?(o.selectionStart=l,o.selectionEnd=l+d.length,!0):(a=l+d.length,!1)})}import{cloneElement as yh}from"react";var vh=["div","span","mark","strong","b","i","u","em"];function dr(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(vh.includes(s)){let i=Array.isArray(n.props.children)?n.props.children:[n.props.children];return[...t.slice(0,t.length-1),yh(n,{children:dr(i,e,o+1)})]}return[...t,...e]}function Fe(t){return t.tagName.toLowerCase()==="textarea"}var nd={agentText:"dd-qnW-V",tabText:"dd-cUHUr",hint:"dd-v7fSg",matchSelection:"dd-8cr8y",focus:"dd-3tr9l",resetIndent:"dd-TvQfZ",matchKeyword:"dd-oJkRD",matchPlaceholder:"dd-QvNoo",hover:"dd--wi0R",hintText:"dd-7gQQh",popover:"dd-xbRu-",popoverRoot:"dd-rA2x8",popoverContentContainer:"dd-JHICl",popoverContent:"dd--mfkC",selectionOptions:"dd-p52wn",selectionOptionsIsHidden:"dd-sSTDp",selectionOptionsButton:"dd-Q6kRY",caret:"dd-jIhc8",popoverSuggestionsRoot:"dd-iFDbL",suggestionsOverlayInputStyles:"dd-zzENA"};import Hh from"classnames";import{Matcher as Kh}from"interweave";import{useEffect as Bh,useMemo as Uh}from"react";import{useEffect as Sh,useRef as xh,useState as bh}from"react";function sd(t,e){let o;return[(...n)=>{window.cancelAnimationFrame(o);let s=e?e(...n):n;o=window.requestAnimationFrame(()=>{t(...s)})},()=>window.cancelAnimationFrame(o)]}function bn(t){let e=xh(null),[o,n]=bh(!1);return Sh(()=>{let s=!1,r=parseFloat(window.getComputedStyle(document.body).zoom??"1"),[i,a]=sd((c,u)=>{let p=e.current;if(!p)return;let m=c/r,g=u/r,f=p.getBoundingClientRect(),y=m>f.x&&m<f.x+f.width&&g>f.y&&g<f.y+f.height;y&&!s?(s=!0,n(!0)):!y&&s&&(s=!1,n(!1))},({clientX:c,clientY:u})=>[c,u]),[d,l]=sd(()=>{s=!1,n(!1)});return t.addEventListener("mousemove",i),t.addEventListener("mouseleave",d),()=>{a(),l(),t.removeEventListener("mousemove",i),t.removeEventListener("mouseleave",d)}},[e]),[e,o]}function rd(t){return t.replace(/[.*+^${}()|[\]\\]/g,"\\$&")}function Cn(t){return e=>{t.forEach(o=>{typeof o=="function"?o(e):o!=null&&(o.current=e)})}}function id(t){return t!=null}import ud from"classnames";import{createRef as Ah,useCallback as ur,useMemo as Mh,useRef as Nh,useState as Oh}from"react";import{useState as Ch,useLayoutEffect as wh}from"react";var Th=["bottom","height","left","right","top","width"],Eh=(t={},e={})=>Th.some(o=>t[o]!==e[o]),Te=new Map,ad,ld=()=>{let t=[],e=[];Te.forEach((o,n)=>{if(n instanceof Element&&!n.isConnected){e.push(n);return}let s=n.getBoundingClientRect();Eh(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))}),ad=window.requestAnimationFrame(ld)};function kh(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&&ld()},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(ad)}}}}function cr(t){let[e,o]=Ch(null);return wh(()=>{if(!t.current)return;let n=kh(t.current,s=>{o(s)});return n.observe(),()=>{n.unobserve()}},[t]),e}import{useContext as Rh,useLayoutEffect as Ph,useState as Ih}from"react";import{createPortal as Lh}from"react-dom";var dd={root:"dd-r-dgo"};var cd=({children:t,parentNode:e})=>{let[o,n]=Ih(null),s=Rh(_t);return Ph(()=>{let r=document.createElement("div");return Ze(r),r.classList.add(dd.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?Lh(t,o):null};var me={ref:"dd-iz-KP",root:"dd-vEMon",positionAbove:"dd-mUCxM",positionBelow:"dd-7oZI7",positionLeft:"dd-BiWvD",positionRight:"dd-JIWea",alignStart:"dd-5ivu6",alignCenter:"dd-rnVkP",alignEnd:"dd-gZBp4"};import{jsx as pr}from"react/jsx-runtime";var wn=(t=!1)=>{let[e,o]=Oh(t),n=ur(()=>o(!0),[]),s=ur(()=>o(!1),[]),r=ur(()=>o(a=>!a),[]),i=Nh(null);return{opened:e,open:n,close:s,toggle:r,triggerRef:i}};function mr(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 Tt=({className:t,triggerRef:e,boundaryRef:o=Ah(),position:n="above",align:s="center",children:r,toStyle:i=mr,parentNode:a,...d})=>{let l=cr(e),c=cr(o),u=Mh(()=>i(l,c,0),[l,c]);return pr(cd,{parentNode:a,children:pr("div",{className:ud(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,...d,role:"dialog",children:pr("div",{className:ud(t,me.root),children:r})})})};import Dh from"classnames";import{forwardRef as _h,useRef as Fh}from"react";var Ee={agentText:"dd-qnW-V",tabText:"dd-cUHUr",hint:"dd-v7fSg",matchSelection:"dd-8cr8y",focus:"dd-3tr9l",resetIndent:"dd-TvQfZ",matchKeyword:"dd-oJkRD",matchPlaceholder:"dd-QvNoo",hover:"dd--wi0R",hintText:"dd-7gQQh",popover:"dd-xbRu-",popoverRoot:"dd-rA2x8",popoverContentContainer:"dd-JHICl",popoverContent:"dd--mfkC",selectionOptions:"dd-p52wn",selectionOptionsIsHidden:"dd-sSTDp",selectionOptionsButton:"dd-Q6kRY",caret:"dd-jIhc8",popoverSuggestionsRoot:"dd-iFDbL",suggestionsOverlayInputStyles:"dd-zzENA"};import{jsx as pd}from"react/jsx-runtime";var Tn=_h(({className:t,children:e,...o},n)=>{let s=Fh(null),r=h("TabCompletion",Ee);return pd("div",{ref:Cn([s,n]),className:Dh(t,r.popoverContentContainer),...o,children:pd("div",{className:r.popoverContent,children:e})})});import{jsx as so,jsxs as Wh}from"react/jsx-runtime";var zh=t=>e=>{let o=mr(e);return"top"in o&&(o.width=t.width-(e.left-t.left)-10),o},Vh=({inputElement:t,boundaryRef:e,inputStyle:o,children:n,suggestion:s})=>{let r=h("TabCompletion",Ee),i=wn(),a=Uh(()=>zh(t.getBoundingClientRect()),[t]),[d,l]=bn(t);return Bh(()=>{l?i.open():i.close()},[l]),Wh("span",{children:[so("mark",{ref:Cn([d,i.triggerRef]),className:Hh(r.matchKeyword,{[r.hover]:l}),"aria-haspopup":"dialog","aria-expanded":i.opened?"true":"false",children:n}),i.opened&&so(Tt,{className:r.popover,triggerRef:i.triggerRef,boundaryRef:e,position:"below",align:"start",toStyle:a,children:so(Tn,{style:o,children:so("div",{className:r.hintText,children:s})})})]})},En=class extends Kh{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${rd(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(id);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 so(Vh,{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 qh}from"interweave";import Gh from"classnames";import{jsx as md}from"react/jsx-runtime";var $h=({inputElement:t,children:e})=>{let o=h("TabCompletion",Ee),[n,s]=bn(t);return md("mark",{ref:n,className:Gh(o.matchPlaceholder,{[o.hover]:s}),children:e})},kn=class extends qh{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 md($h,{inputElement:o.inputElement,children:e},`placeholder_${o.matchString}_${o.key}`)}asTag(){return"mark"}};import vr from"classnames";import{Matcher as oy}from"interweave";import{createRef as ny,forwardRef as sy,useCallback as ry,useEffect as bd,useRef as Cd,useState as wd}from"react";import{useDispatch as iy}from"react-redux";import{jsx as gd}from"react/jsx-runtime";var fd=()=>gd("svg",{width:"1.3em",height:"1.3em",focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24","data-testid":"InsertLinkIcon",tabIndex:-1,children:gd("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 yd,useState as vd}from"react";import{useDispatch as Xh,useSelector as Sd}from"react-redux";import Qh from"lodash.debounce";var hd={root:"dd-ky-Bv",content:"dd-kV5e1"};function Rn(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 gr(t){return t.replace("https://www.","").replace("https://","")}import{jsx as Ye,jsxs as fr}from"react/jsx-runtime";var Zh=3,Jh=t=>({image:t.image||"",text:t.text,id:t.id,title:t.title}),Yh=({onSelectLink:t,onDismiss:e,placeholder:o,visitUrlText:n,linkCount:s=Zh})=>{let r=h("LinkSearch",hd),[i,a]=vd(""),d=Xh(),l=Sd(vl("url")),c=Sd(Ui("URL",Jh)),[u,p]=vd(c.length-1),m=b("fallbackImage"),g=v=>{let S=v.target;a(S.value)},f=(v,S)=>{v.stopPropagation(),v.preventDefault(),window.open(S,"_blank")},y=v=>{var x;let S=u-1<0?c.length-1:u-1,P=u+1===c.length?0:u+1;v.code==="Escape"&&(a(""),e()),v.code==="ArrowUp"&&p(S),v.code==="ArrowDown"&&p(P),v.code==="Enter"&&t(((x=c[u])==null?void 0:x.text)||i)},k=jh(Qh(v=>{d(We({query:v,type:"URL",tags:["link-search"]}))},300),[]);return yd(()=>{i&&k(i)},[i]),yd(()=>()=>{d(_o())},[]),fr("div",{className:r.root,children:[Ye(J,{withDivider:!0,children:(i?c:l).slice(0,s).map((v,S)=>Ye(A,{selected:u===S,onClick:()=>t(v.text),"data-testid":"linksearch-suggestion",children:fr(_,{children:[Ye(_.Image,{src:Rn(v,"small",m||void 0),title:v.title||v.text}),fr(_.Content,{className:r.content,cropText:!0,children:[Ye(_.Title,{children:v.title||gr(v.text)}),v.title&&gr(v.text)]}),Ye(A.Actions,{children:Ye(A.ActionButton,{label:n,onClick:P=>f(P,v.text)})})]})},v.text))}),Ye($t,{value:i,onChange:g,autoFocus:!0,placeholder:o,onKeyUp:y})]})},xd=Yh;var hr={};j(hr,{enUS:()=>ey,nlNL:()=>ty});var ey={insertLink:[{type:0,value:"Insert link"}],linkInputPlaceholder:[{type:0,value:"Search, type or paste link"}],visitUrl:[{type:0,value:"Visit"}]},ty={insertLink:[{type:0,value:"Voeg link toe"}],linkInputPlaceholder:[{type:0,value:"Zoek, typ of plak link"}],visitUrl:[{type:0,value:"Bekijk"}]};import{jsx as ge,jsxs as yr}from"react/jsx-runtime";var ay=sy((t,e)=>{let o=h("TabCompletion",Ee);return ge("mark",{ref:e,className:vr(o.matchSelection)},"selection-start")}),ly=({startRef:t,boundaryRef:e,inputStyle:o,inputElement:n,children:s})=>{let r=E(hr),i=h("TabCompletion",Ee),a=Cd(null),d=Cd(null),[l,c]=wd(null),u=iy(),p=wn(document.activeElement===n),[m]=wd(()=>document.createRange());p.triggerRef.current=m,bd(()=>()=>m.detach(),[]),bd(()=>{let f=t.current,y=a.current;!f||!y||(m.setStart(f,0),m.setEnd(y,0))},[t.current,a.current]),Ct(()=>{p.close()});let g=ry(f=>{let y=m.toString(),k=/^http(s?):\/\//.test(f)?f:`https://${f}`;u(Ao({text:`[${y}](${k})`,replace:"selection"}))},[]);return yr("span",{children:[ge("mark",{ref:a,className:vr(i.matchSelection),"aria-haspopup":"dialog","aria-expanded":p.opened?"true":"false",children:s}),p.opened&&ge(Tt,{className:i.popoverRoot,triggerRef:p.triggerRef,boundaryRef:e,position:"above",align:"start",children:yr(Tn,{style:o,ref:d,children:[ge("div",{className:vr(i.selectionOptions,{[i.selectionOptionsIsHidden]:l!==null}),children:yr("button",{type:"button",tabIndex:l===null?-1:void 0,className:i.selectionOptionsButton,onClick:()=>c("insertLink"),children:[ge(fd,{}),ge("span",{children:"\xA0"}),ge("span",{children:r("insertLink")})]})}),l==="insertLink"&&ge(xd,{placeholder:r("linkInputPlaceholder"),visitUrlText:r("visitUrl"),onSelectLink:g,onDismiss:()=>{c(null),p.close()}})]})})]},"selection-end")},Pn=class extends oy{charCount=0;foundIndex=0;startRef=null;props;onBeforeParse(e,o){return this.props=o,this.charCount=0,this.startRef=ny(),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?ge(ay,{ref:this.startRef}):ge(ly,{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 Et,jsxs as yy}from"react/jsx-runtime";var fy=({enabled:t,content:e,tabText:o,showTabHint:n,showTabCompletion:s,showStyleSuggestions:r,keywordMatches:i,inputElement:a,source:d})=>{let l=h("TabCompletion",nd),c=b("insertLink"),u=b("showMidSentenceSuggestions"),p=b("inlineSuggestions"),m=td(a),g=py(null),f=gy(X);uy(()=>{Fe(a)&&m&&od(a,m)},[m]);let y=cy(S=>{if(!s||!o)return S;let P=[Et("span",{className:l.resetIndent,children:"\u200B"},"u200B"),Et("span",{"data-testid":"tab-completion",className:Sr(l.tabText,l.resetIndent),"data-source":d,children:o},"tabText")];return n&&P.push(Et("span",{className:Sr(l.hint,l.resetIndent),children:Et(Jn,{keyCode:"tab"},"tabHint")})),dr(S,P)},[s,o,n]),k=Td(()=>{let S=[];return c&&S.push(new Pn("selection")),S.push(new kn("placeholders")),r&&S.push(new En("keywords")),S},[p,c,r]),v=Td(()=>{let S=window.getComputedStyle(a);return{"--dd-color":S.color,"--dd-font-size":S.fontSize,"--dd-font-family":S.fontFamily,"--dd-font-variant":S.fontVariant}},[]);return!t||!f?null:yy("div",{ref:S=>{S!=null&&S.parentElement&&(g.current=S==null?void 0:S.parentElement)},className:l.root,style:v,children:[Et(dy,{tagName:"span",containerTagName:"div",className:Sr(l.container,l.agentText),disableLineBreaks:Fe(a),content:e||"\u200B",onAfterParse:y,matchers:k,selection:m,keywordMatches:i,inputElement:a,inputStyle:v,boundaryRef:g,inlineSuggestionsOnlyAtEnd:!u}),Et("br",{})]})},hy=({input:t,ui:e,settings:o,styleSuggestions:n,conversation:s})=>{var f;let{tabCompletionSuggestion:r}=t,i=(r==null?void 0:r.text)||"",a=(r==null?void 0:r.source)||"",d=t.html??Qt(t.text),l=i.indexOf(t.text)===0?i.slice(t.text.length):"",{showTabHint:c}=e,{isSupported:u}=s,{showTabCompletion:p,visible:m,showStyleSuggestions:g}=o;return{showTabHint:c,showStyleSuggestions:g,showTabCompletion:p,content:d,tabText:l,source:a,keywordMatches:((f=n.list)==null?void 0:f.keywordMatches)??[],enabled:m&&u!==!1}},Ed=my(hy)(fy);import Tv from"classnames";import{Fragment as Ev,useEffect as Nc}from"react";import{useDispatch as Dn,useSelector as K}from"react-redux";import{createAsyncThunk as ro,createSlice as vy}from"@reduxjs/toolkit";var kd={list:[],fetchState:"idle"},Pd=t=>t.autoflows.list||[],Rd=t=>e=>{var o;return(o=e.list)==null?void 0:o.find(n=>n.triggerPayload===t)},ke=ro("autoflows/getAll",async(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");return o.getAutoflows(t)}),xr=ro("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(ke(t.platformSessionId))}),br=ro("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(ke(t.platformSessionId))}),Sy=vy({name:"autoflows",initialState:kd,reducers:{},extraReducers:t=>{t.addCase(xr.pending,(e,o)=>{let n=Rd(o.meta.arg.triggerPayload)(e);n.state="Started",n.isBusy=!0}),t.addCase(br.pending,(e,o)=>{let n=Rd(o.meta.arg.triggerPayload)(e);n.state="Aborted",n.isBusy=!0}),t.addCase(ke.pending,e=>{e.fetchState="loading"}),t.addCase(ke.rejected,e=>{e.fetchState="error"}),t.addCase(ke.fulfilled,(e,o)=>{e.list=o.payload,e.fetchState="done"}),t.addCase(M,()=>kd)}}),Id=ro("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(ke(t))}),s.on("sessionCompleted",()=>{o(ke(t))})}),Ld=ro("autoflows/closeStream",(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");o.closeStream(t)}),Ad=Sy.reducer;import{createAsyncThunk as ao,createSlice as xy}from"@reduxjs/toolkit";var Md={list:[],fetchState:"idle",sentSuggestions:[],errorSuggestions:[],answeredSuggestions:[]},Nd=t=>t.customMessages.list,Od=t=>e=>!!e.customMessages.sentSuggestions.find(o=>o===t),Dd=t=>e=>!!e.customMessages.answeredSuggestions.find(o=>o===t),_d=t=>e=>!!e.customMessages.errorSuggestions.find(o=>o===t),io=ao("customMessages/getAll",async(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");return o.getCustomMessages(t)}),In=ao("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)}),Ln=ao("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)}),Fd=xy({name:"customMessages",initialState:Md,reducers:{onCustomMessage(t,e){Array.isArray(e.payload)?t.list=e.payload:t.list=[e.payload]}},extraReducers:t=>{t.addCase(io.pending,e=>{e.fetchState="loading"}).addCase(io.rejected,e=>{e.fetchState="error"}).addCase(io.fulfilled,(e,o)=>{e.fetchState="done",e.list=o.payload||[]}).addCase(In.pending,(e,o)=>{e.sentSuggestions.push(o.meta.arg.suggestion.text),e.errorSuggestions=e.errorSuggestions.filter(n=>o.meta.arg.suggestion.text!==n)}).addCase(In.rejected,(e,o)=>{let n=e.sentSuggestions.indexOf(o.meta.arg.suggestion.text);e.errorSuggestions.push(...e.sentSuggestions.splice(n,1))}).addCase(Ln.pending,(e,o)=>{e.sentSuggestions.push(o.meta.arg.suggestion.text),e.answeredSuggestions.push(o.meta.arg.suggestion.text)}).addCase(Ln.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(M,()=>Md)}}),Hd=ao("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(Fd.actions.onCustomMessage(r))})}),Kd=ao("customMessages/closeStream",(t,e)=>{let{deepdeskBrokerAPI:o}=e.extra;if(!o)throw new Error("Deepdesk Broker not initialized");o.closeStream(t)}),Bd=Fd.reducer;import{createAsyncThunk as Ud,createSlice as by}from"@reduxjs/toolkit";var Cy={token:null,accountUrl:null,interval:null},zd=t=>e=>{let{passwordlessToken:{token:o,accountUrl:n}}=e;return o&&n?`${n}/apis/admin/session/passwordless/login/?token=${o}&redirect=${t}`:null},Cr=Ud("passwordlessToken/getTemporaryPasswordlessToken",async(t,e)=>{let{deepdeskAPI:o}=e.extra,n=await o.requestPasswordlessToken();return{accountUrl:o.client.baseUrl,token:n}}),wr=Ud("passwordlessToken/pollPasswordlessToken",(t={},e)=>{let{interval:o=1e3*60*10}=t,{dispatch:n}=e;return n(Cr()),setInterval(()=>n(Cr()),o)}),Vd=by({name:"passwordlessToken",initialState:Cy,reducers:{stopPollPasswordlessToken(t){t.interval&&clearInterval(t.interval),t.interval=null}},extraReducers:t=>{t.addCase(Cr.fulfilled,(e,o)=>{e.token=o.payload.token,e.accountUrl=o.payload.accountUrl}),t.addCase(wr.fulfilled,(e,o)=>{e.interval=o.payload})}}),{stopPollPasswordlessToken:Wd}=Vd.actions,qd=Vd.reducer;import{createAction as wy,createAsyncThunk as Ty,createSlice as Ey}from"@reduxjs/toolkit";var Tr={cues:[],fetchState:"idle"},Gd=t=>{var e;return(e=t.rules)==null?void 0:e.cues},ky=wy("rules/resetCues"),et=Ty("rules/evaluate",async(t,e)=>{var o,n;try{let{deepdeskAPI:s}=e.extra,r=e.getState(),i=(o=r.conversation.current)==null?void 0:o.id;if(!i)throw new Error("No current conversation to evaluate rules");if(!(await s.getAccount()).ruleEngine)throw new Error("Rule engine is not enabled for this account");if(!(await s.getRules()).some(c=>c.label===t.label))throw new Error(`No rules found with label: ${t.label}`);return await s.evaluateRule(t.label,i,{tags:((n=r.conversation.current)==null?void 0:n.tags)||void 0,...t.params})}catch(s){return C.info(s.message),[]}}),$d=Ey({name:"answer",initialState:Tr,reducers:{removeCue(t,e){t.cues=t.cues.filter(o=>o.rule.id!==e.payload.id)}},extraReducers:t=>{t.addCase(et.pending,e=>{e.fetchState="loading"}).addCase(et.rejected,e=>{e.fetchState="error"}).addCase(et.fulfilled,(e,o)=>{let n=o.payload.map(r=>r.rule.id),s=e.cues.filter(r=>!n.includes(r.rule.id));e.fetchState="done",e.cues=[...o.payload,...s]}).addCase(M,()=>Tr).addCase(ky.toString(),()=>Tr)}}),{removeCue:jd}=$d.actions,Xd=$d.reducer;import{Fragment as _y}from"react";import{connect as Fy}from"react-redux";import Ny from"classnames";import{Fragment as Oy}from"react";import Ry from"classnames";var Qd={root:"dd-uszkm"};import{jsx as Iy}from"react/jsx-runtime";var Py=({className:t,children:e})=>{let o=h("Unicode",Qd);return Iy("span",{className:Ry(t,o.root),children:e})},Zd=Py;var Jd={isDisabled:"dd-Sp--t",root:"dd-maqTG",buttonStop:"dd-rcq8w",stateBadge:"dd-zOnkT",isCompleted:"dd-GA-rt",isStarted:"dd-PZwtX",isAborted:"dd-PAXSE"};var Er={};j(Er,{enUS:()=>Ly,nlNL:()=>Ay});var Ly={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"}]},Ay={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 An}from"react/jsx-runtime";var Dy=({disabled:t,state:e,displayName:o,description:n,onStartAutoflow:s,onStopAutoflow:r})=>{let i=h("Autoflow",Jd),a=E(Er),d=e==="Started"?"stop":"start",l=d==="start"?"\u25B6":d==="stop"?"\u25FC":"";return An(A,{className:Ny(i.root,{[i.isDisabled]:t,[i.isCompleted]:e==="Completed",[i.isAborted]:e==="Aborted",[i.isStarted]:e==="Started"}),children:[tt(_,{children:An(_.Content,{children:[An(_.Title,{children:[e&&tt("span",{className:i.stateBadge,children:a(e)}),o]}),tt("span",{children:n})]})}),tt(A.Actions,{fixed:e==="Started",children:tt(A.ActionButton,{primary:!0,className:d==="start"?i.buttonStart:i.buttonStop,onClick:e==="Started"?r:s,disabled:t,label:An(Oy,{children:[tt(Zd,{children:l})," ",tt("span",{children:a(d)})]})})})]})},Yd=Dy;import{jsx as ec}from"react/jsx-runtime";var Hy=(t,e)=>{let o=e.filter(n=>n.state==="Started");return o.length>0?o.indexOf(t)===-1:!1},Ky=({autoflows:t,onStartAutoflow:e,onStopAutoflow:o,platformSessionId:n})=>ec(_y,{children:t.map(s=>ec(Yd,{displayName:s.displayName,description:s.description,disabled:s.isBusy||Hy(s,t),state:s.state,onStartAutoflow:()=>e({platformSessionId:n,triggerPayload:s.triggerPayload}),onStopAutoflow:()=>o({platformSessionId:n,triggerPayload:s.triggerPayload})},s.displayName))}),By=({autoflows:t,conversation:e})=>{var o;return{autoflows:t.list,platformSessionId:(o=e.current)==null?void 0:o.sessionId}},Uy={onStartAutoflow:xr,onStopAutoflow:br},tc=Fy(By,Uy)(Ky);import zy from"classnames";import{useCallback as oc}from"react";import{useDispatch as Vy,useSelector as Mn}from"react-redux";var Re={root:"dd-ERsBr",title:"dd-b36p6",isUsed:"dd-fp2IX",quickReplies:"dd--VrvP",quickReply:"dd-wFhWh",label:"dd-R9sND",errorIcon:"dd-8cdcH"};import{jsx as He,jsxs as Nn}from"react/jsx-runtime";var Wy=({suggestion:t})=>{let e=E(Xe),o=Vy(),n=Mn(Od(t.text)),s=Mn(Dd(t.text)),r=Mn(_d(t.text)),i=Mn(ct),{replyOptions:a}=t,d=oc(c=>{c.preventDefault(),c.stopPropagation(),!(n||!i)&&o(In({platformSessionId:i,suggestion:t}))},[t,n,o,i]),l=oc(c=>{if(c.preventDefault(),c.stopPropagation(),!i||!a)return;let u=parseInt(c.target.dataset.index,10),p=a[u];o(Ln({platformSessionId:i,reply:p,suggestion:t}))},[t,n,o,i]);return Nn(A,{onClick:d,className:zy(Re.root,{[Re.isUsed]:n,[Re.hasError]:r}),children:[He(_,{children:Nn(_.Content,{children:[Nn(_.Title,{className:Re.title,children:[t.text," ",He(Yn,{className:Re.label,children:"analyse tool"})," ",r&&He("span",{className:Re.errorIcon,role:"img","aria-label":e("sendingError"),title:e("sendingError"),children:"!"})]}),a&&a.length>0&&He("ul",{className:Re.quickReplies,children:a.map(c=>He("li",{className:Re.quickReply,children:c.title},c.title))})]})}),Nn(A.Actions,{fixed:r||n,children:[a&&a.length>0&&He(A.DropdownButton,{label:e("answer"),disabled:s,children:a.map((c,u)=>He(A.DropdownItem,{index:u,label:c.title,onClick:l},c.title))}),He(A.ActionButton,{primary:!0,disabled:n,onClick:d,label:e(n?"suggestionSent":r?"tryAgain":"sendSuggestion")})]})]})},nc=Wy;import{useEffect as qy,useState as Gy}from"react";import{useDispatch as $y}from"react-redux";import ic from"classnames";import{jsx as sc}from"react/jsx-runtime";var kr=()=>sc("svg",{width:"1em",height:"1em",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg",children:sc("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 rc={root:"dd-WcEru",entity:"dd-LfP8y",entityText:"dd-L-v0f",iconWrapper:"dd-9Deh1",icon:"dd-tM7E2",iconClicked:"dd-EEdDL"};import{jsx as kt,jsxs as ac}from"react/jsx-runtime";var jy=({entities:t})=>{let e=h("EntitiesWidgetList",rc),[o,n]=Gy(void 0),s=$y(),r=()=>{n(void 0)},i=a=>{t&&(n(t.indexOf(a)),$e(a.text),s(G({name:"entity copied",data:{entity:a,type:"copy"}})))};return qy(()=>{let a=setTimeout(r,500);return()=>{clearTimeout(a)}},[o]),!t||t.length===0?null:kt("div",{className:e.root,"data-testid":"widget-entities-list",children:t.map((a,d)=>ac("button",{title:a.text,className:e.entity,type:"button",onClick:()=>i(a),children:[kt("span",{className:e.entityText,children:a.text}),ac("span",{className:e.iconWrapper,children:[kt("span",{className:ic(e.icon),children:kt(kr,{})}),kt("span",{className:ic(e.icon,o===d&&e.iconClicked),children:kt(kr,{})})]})]},a.text))})},lc=jy;import{jsx as dc}from"react/jsx-runtime";var cc=()=>dc("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:dc("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 uc}from"react/jsx-runtime";var pc=()=>uc("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 -960 960 960",width:"1em",children:uc("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 mc}from"react/jsx-runtime";var gc=()=>mc("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 -960 960 960",width:"1em",children:mc("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{useDispatch as cv}from"react-redux";import bc from"classnames";import{useEffect as av,useState as lv}from"react";import{jsx as fc,jsxs as Xy}from"react/jsx-runtime";var hc=({className:t})=>Xy("svg",{viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg",className:t,children:[fc("line",{x1:"2",y1:"10",x2:"10",y2:"2",stroke:"black",strokeWidth:"1"}),fc("line",{x1:"2",y1:"2",x2:"10",y2:"10",stroke:"black",strokeWidth:"1"})]});import Qy from"dompurify";import{Fragment as Zy,useMemo as Jy,useRef as Yy,useState as ev}from"react";import tv from"snarkdown";var yc={root:"dd-L7b3z",popover:"dd-OQOTB",options:"dd-Y12RE",copyIcon:"dd-6xOsH",option:"dd-9oFX4",divider:"dd-aiZf8",fadeup:"dd-Jq9pd"};import{jsx as lo,jsxs as vc}from"react/jsx-runtime";function ov(t){return`<button type="button" class=${t}><svg version="1.1" x="0px" y="0px" viewBox="0 0 115.77 122.88" width="10px" height="10px" fill="black"><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></button>`}function Rr(t){let e=t.cloneNode(!0);return e.querySelectorAll("div,button").forEach(o=>o.remove()),e.textContent??""}function nv(t){return t.replace(/\r\n/g,`
|
|
8
8
|
`)}var sv=({content:t,useLabel:e,copyLabel:o,onCopy:n,onUse:s})=>{let r=h("Markdown",yc),i=Yy(null),[a,d]=ev(null),l=Jy(()=>{let g=tv(nv(t));return Qy.sanitize(g).replace(/<\/code>/g,`${ov(r.copyIcon)}</code>`)},[t]),c=g=>{var k;let f=g.target,y=!!((k=i.current)!=null&&k.querySelector("code"));a||y&&f.tagName!=="CODE"||!y&&f!==i.current||(f.addEventListener("mouseleave",()=>d(null),{once:!0}),d(f))},u=()=>{if(!a)return;d(null);let g=a.querySelector("button");g&&(Ce(g,r.fadeup),n(Rr(a)))},p=g=>{g.target.tagName.toLowerCase()==="button"&&(Ce(g.target,r.fadeup),n(Rr(g.target.parentElement)))},m=()=>{a&&(d(null),s(Rr(a)))};return vc(Zy,{children:[a&&lo(Tt,{triggerRef:{current:a},parentNode:a,className:r.popover,children:vc("div",{className:r.options,children:[lo("button",{type:"button",className:r.option,onClick:u,children:o}),lo("div",{className:r.divider}),lo("button",{type:"button",className:r.option,onClick:m,children:e})]})}),lo("div",{ref:i,className:r.root,dangerouslySetInnerHTML:{__html:l},onMouseOver:c,onClick:p})]})},Sc=sv;var Pr={};j(Pr,{enUS:()=>rv,nlNL:()=>iv});var rv={useCue:[{type:0,value:"Use"}],copyCue:[{type:0,value:"Copy"}],removeCue:[{type:0,value:"Close"}],thumbsUp:[{type:0,value:"Thumbs up"}],thumbsDown:[{type:0,value:"Thumbs down"}]},iv={useCue:[{type:0,value:"Gebruik"}],copyCue:[{type:0,value:"Kopieer"}],removeCue:[{type:0,value:"Sluiten"}],thumbsUp:[{type:0,value:"Thumbs up"}],thumbsDown:[{type:0,value:"Thumbs down"}]};var xc={fadeup:"dd-cRM0K",fadedown:"dd-7D4Pq",selected:"dd-bueui",thumbsUp:"dd-6QwVx",thumbsDown:"dd-d3E8l"};import{jsx as Pe,jsxs as Cc}from"react/jsx-runtime";var dv=({cue:t,onRemove:e,onCopy:o,onUse:n,onThumbsUp:s,onThumbsDown:r})=>{let i=h("WidgetCue",xc),a=E(Pr),d=vt(),[l,c]=lv(null),u=y=>{o&&o(y,t)},p=y=>{n&&n(y,t)},m=y=>{y.preventDefault(),y.stopPropagation(),e(t)},g=y=>{y.preventDefault(),y.stopPropagation(),Ce(y.target,i.fadeup),c("up"),s(t)},f=y=>{y.preventDefault(),y.stopPropagation(),Ce(y.target,i.fadedown),c("down"),r(t)};return av(()=>{d("Assistant response displayed",{name:t.rule.name,description:t.rule.description,group:t.rule.label})},[]),Cc(A,{"data-testid":"cue",children:[Pe(_,{children:Cc(_.Content,{children:[t.title&&Pe(_.Title,{"data-testid":"widget-cue-title",children:t.title}),Pe(Sc,{content:t.text,useLabel:a("useCue"),copyLabel:a("copyCue"),onCopy:u,onUse:p})]})}),Pe(A.IconButton,{title:a("thumbsUp"),onClick:g,icon:Pe(nn,{}),className:bc(i.thumbsUp,l==="up"&&i.selected),disabled:!!l}),Pe(A.IconButton,{title:a("thumbsDown"),onClick:f,icon:Pe(on,{}),className:bc(i.thumbsDown,l==="down"&&i.selected),disabled:!!l}),Pe(A.IconButton,{title:a("removeCue"),onClick:m,icon:Pe(hc,{})})]})},wc=dv;import{Fragment as pv,jsx as Tc}from"react/jsx-runtime";var uv=({cues:t})=>{let e=cv(),o=oe(),n=vt(),s=l=>{e(jd({id:l.rule.id})),n("Assistant response closed",{name:l.rule.name,group:l.rule.label,description:l.rule.description})},r=(l,c)=>{$e(l),n("Assistant response copied",{name:c.rule.name,group:c.rule.label,description:c.rule.description,copiedText:l})},i=(l,c)=>{o.send(Ne,{text:l,suggestion:{source:"cue",sourceText:l}}),n("Assistant response used",{name:c.rule.name,group:c.rule.label,description:c.rule.description,usedText:l})},a=l=>{n("Assistant response feedback",{name:l.rule.name,group:l.rule.label,description:l.rule.description,thumb:"up"})},d=l=>{n("Assistant response feedback",{name:l.rule.name,group:l.rule.label,description:l.rule.description,thumb:"down"})};return Tc(pv,{children:t.map(l=>Tc(wc,{cue:l,onRemove:s,onCopy:r,onUse:i,onThumbsDown:d,onThumbsUp:a},l.rule.id))})},Ec=uv;import{Fragment as mv,useEffect as gv}from"react";var kc={root:"dd-cvTAY",label:"dd-QWQxD",value:"dd-WSUHF",isTrue:"dd--1g2O",isFalse:"dd-sz2ir"};import{jsx as co,jsxs as hv}from"react/jsx-runtime";function fv(t,e){return e.split(".").reduce((o,n)=>!o||typeof o!="object"||!(n in o)?null:o[n],t)}var Rc=({data:t,schema:e})=>{let o=h("WidgetCustomData",kc);return gv(()=>{C.info("Custom data",t,e)},[t]),co("dl",{className:o.root,children:e.map(n=>{let s=fv(t,n.path);return hv(mv,{children:[co("dt",{className:o.label,children:n.label}),co("dd",{className:o.value,children:n.type==="boolean"&&s?co("span",{className:o.isTrue,children:n.trueValue}):n.type==="boolean"&&!s?co("span",{className:o.isFalse,children:n.falseValue}):s??"-"})]},n.label)})})};import{useCallback as vv}from"react";var yv=/(https?:\/\/[^\s]+)/,Pc=t=>t.split(" ").find(e=>yv.test(e));import{jsx as Rt,jsxs as On}from"react/jsx-runtime";var Sv=({suggestion:t,lines:e,onUse:o})=>{var c;let n=t.text||t.url||t.message,s=Pc(n),r=E(Xe),i=b("showImages"),a=b("fallbackImage"),d=u=>{u.preventDefault(),u.stopPropagation(),o(n)},l=vv(u=>{window.open(s,"_blank"),u.stopPropagation(),u.preventDefault()},[s]);return On(A,{onClick:d,"data-testid":"edit-suggestion",children:[On(_,{children:[i&&t.image&&Rt(_.Image,{src:Rn(t,"small",a||void 0),title:t.title}),On(_.Content,{children:[t.title&&Rt(_.Title,{"data-testid":"widget-suggestion-title",children:t.title}),t.searchKeywords&&((c=t.searchKeywords)==null?void 0:c.length)>0&&Rt(A.Labels,{labels:t.searchKeywords}),Rt(_.Content,{cropText:e==="single",lineClamp:e==="multiple",children:n})]})]}),On(A.Actions,{children:[s&&Rt(A.ActionButton,{onClick:l,label:r("visitUrl")}),Rt(A.ActionButton,{primary:!0,onClick:d,label:r("useSuggestion")})]})]})},Ic=Sv;import{Fragment as bv,jsx as Lc}from"react/jsx-runtime";var xv=({lines:t,suggestions:e})=>{let o=oe(),n=(s,r)=>{o.send(Ne,{text:s,suggestion:{...r,source:r.source,sourceText:r.text}})};return Lc(bv,{children:e.map(s=>Lc(Ic,{suggestion:s,lines:t,onUse:r=>n(r,s)},s.text||s.url||s.message))})},Ac=xv;var uo={};j(uo,{enUS:()=>Cv,nlNL:()=>wv});var Cv={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"}]},wv={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 po={root:"dd-W9VCG",loginText:"dd--dS6t",stateText:"dd-348OC",sectionList:"dd-bF9pF",shortcutList:"dd-MuKK-",shortcut:"dd-5CnK9",link:"dd-DRo0x"};import{jsx as R,jsxs as Pt}from"react/jsx-runtime";var _n=(t,e)=>{let o=K(X);Nc(()=>o?e.every(n=>!!n)?t():()=>{}:()=>{},[...e,o])},kv=({onLogIn:t})=>{let e=h("Widget",po),o=b("isEmbedded"),n=b("adminUrl");return R("div",{className:e.loginText,children:R("div",{children:R(Sn,{isEmbedded:o,loginUrl:n,onLogIn:t})})},"login")},Mc=({text:t})=>{let e=h("Widget",po);return R("div",{className:e.stateText,children:R("div",{children:R("p",{children:t})})},"notification")},Rv=()=>{let t=E(uo),e=Dn(),o=h("Widget",po),n=b("showSearch"),s=b("showSummaryCommand"),r=b("showKnowledgeSearch"),i=K(zd("/admin/")),a=oe(),d=b("productName"),l=n||s||r||i;return _n(()=>(e(wr()),()=>{e(Wd())}),[e]),l?R(ve,{title:t("actions"),type:"shortcuts",children:Pt("div",{className:o.shortcutList,children:[n&&Pt("button",{type:"button",className:o.shortcut,"data-testid":"shortcut-search",title:t("linkSearch"),onClick:()=>a.send("ShowCommandPalette",{isOpen:!0}),children:[R(ft,{}),t("linkSearch")]}),s&&Pt("button",{type:"button",className:o.shortcut,"data-testid":"shortcut-summary",title:t("linkSummary"),onClick:()=>a.send("ShowCommandPalette",{isOpen:!0,page:"summary"}),children:[R(gc,{}),t("linkSummary")]}),r&&Pt("button",{type:"button",className:o.shortcut,"data-testid":"shortcut-knowledge-assist",title:t("linkKnowledgeSearch"),onClick:()=>a.send("ShowCommandPalette",{isOpen:!0,page:"knowledgeAssist"}),children:[R(pc,{}),t("linkKnowledgeSearch")]}),i&&Pt("a",{className:o.shortcut,target:"_blank",href:i,"data-testid":"shortcut-studio-login",title:t("linkStudioLogin",{productName:d}),rel:"noreferrer",children:[R(cc,{}),t("linkStudioLogin",{productName:d})]})]})}):null},Pv=()=>{let t=Dn(),e=b("showCustomMessages"),o=K(Nd),n=K(ct);return _n(()=>(t(io(n)),t(Hd(n)),()=>{t(Kd(n))}),[t,e,n]),!e||o.length===0?null:R(ve,{type:"custom-messages","data-testid":"custom-messages",children:R(J,{withDivider:!0,children:o.map(s=>R(nc,{suggestion:s},s.text))})})},Iv=()=>{let t=E(uo),e=Dn(),o=b("showAutoflows"),n=K(Pd),s=K(ct);return _n(()=>(e(ke(s)),e(Id(s)),()=>{e(Ld(s))}),[e,o,s]),!o||n.length===0?null:R(ve,{type:"autoflows",title:t("titleAutoflows"),"data-testid":"autoflows",children:R(J,{withDivider:!0,children:R(tc,{})})})},Lv=()=>{let t=Dn(),e=K(ln),o=K(ul),n=K(Gd),s=K(Mi),r=K(tn),i=K(dn),a=K(we),d=K(Eo);return Nc(()=>{!!s&&!o&&C.warn("Custom data provided, but no schema.")},[s,o]),_n(()=>{e.forEach(({type:l})=>{l==="entities"?t(ae()):Co.includes(l)||t(de(l))})},[t,d,a]),R(Ev,{children:e.map(({type:l,title:c,amount:u,lines:p,schema:m})=>{var g,f;switch(l){case"entities":return r&&r.length>0&&R(ve,{type:l,title:c,"data-testid":`type-${l}`,children:R(lc,{entities:r})},l);case"cues":return n&&n.length>0&&R(ve,{type:l,title:c,"data-testid":`type-${l}`,children:R(J,{withDivider:!0,children:R(Ec,{cues:n})})},l);case"custom-data":return s&&m&&R(ve,{type:l,title:c,"data-testid":`type-${l}`,children:R(J,{withDivider:!0,children:R(Rc,{data:s,schema:m})})},l);default:return((f=(g=i[l])==null?void 0:g.suggestions)==null?void 0:f.length)>0&&R(ve,{type:l,title:c,"data-testid":`type-${l}`,children:R(J,{withDivider:!0,children:R(Ac,{lines:p,contentType:l,suggestions:i[l].suggestions.slice(0,u)||[]})})},l)}})})},Av=({onLogIn:t})=>{let e=E(uo),o=h("Widget",po),n=K(ut),s=K(X),r=K(ct),i=K(we);return n===!1?R(Mc,{text:e("notSupported")}):s===!1?R(kv,{onLogIn:t}):!i||!r||s===null?R(Mc,{text:e("waiting")}):R("div",{className:Tv(o.root),"data-testid":"widget",children:Pt(ts,{className:o.sectionList,children:[R(Rv,{}),R(Pv,{}),R(Iv,{}),R(Lv,{})]})})},Oc=Av;function go(t){let e=new Range;return e.selectNodeContents(t),e}function Dc(t,e,o){try{return ot(t,e,o),!0}catch{return!1}}function Fn(t){return"tagName"in t&&(t.tagName==="DIV"||t.tagName==="P")}function Hn(t){return"tagName"in t&&t.tagName==="BR"}var mo=/[\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(d,l){let c=-1,u=/[\u200B-\u200D\uFEFF]/;if(!u.test(d))return l;for(let p=0;p<=d.length;p++)if(u.test(d[p])||c++,c===l)return p;throw new Error("Offset out of range")}function a(d){switch(d.nodeType){case Node.TEXT_NODE:{let l=d.textContent,c=l.replace(mo,""),u=s+c.length,p=e>=s&&e<=u,m=o>=s&&o<=u;if(p){let g=i(l,e-s);g===0&&!m?n.setStartBefore(d):n.setStart(d,g)}m&&(n.setEnd(d,i(l,o-s)),r=!0),s=u;break}case Node.ELEMENT_NODE:{if(Hn(d)&&(s===e&&n.setStartBefore(d),s++,s===o)){n.setEndAfter(d),r=!0;return}for(let c=0;c<d.childNodes.length&&(a(d.childNodes[c]),!r);c++);let l=d.lastChild;Fn(d)&&l&&!Fn(l)&&!Hn(l)&&s++;break}default:break}}if(a(t),n.startContainer===document)throw new Error("Offsets out of bound");return n}function Kn(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,d,l=0;function c(u){let p=u===o,m=u===s;switch(u.nodeType){case Node.TEXT_NODE:{let g=u.textContent;p&&(a=l+g.substring(0,n).replace(mo,"").length),m&&(d=l+g.substring(0,r).replace(mo,"").length),l+=g.replace(mo,"").length;break}case Node.ELEMENT_NODE:{let g=u.nextSibling===null;Hn(u)&&!g&&l++;for(let f=0;f<u.childNodes.length;f++){let y=p&&f===n,k=m&&f===r;if(y&&(a=l),k&&(d=l),d!==void 0||((!y||!i)&&c(u.childNodes[f]),m&&f===r-1&&(d=l),d!==void 0))break}!m&&Fn(u)&&!g&&l++,m&&(d=l);break}default:break}}if(c(t),d===void 0)throw new Error("Could not determine start and end");return{start:a??d,end:d}}function Bn(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 d(l){let c=l===o,u=l===s;switch(c&&i++,l.nodeType){case Node.TEXT_NODE:{if(i!==0)return;let p=c?n:0,m=u?r:void 0,g=l.textContent.replace(mo,"");p===0&&m===void 0?a+=g:a+=g.substring(p,m);break}case Node.ELEMENT_NODE:{let p=l.nextSibling===null;i===0&&Hn(l)&&!p&&(a+=`
|
|
9
9
|
`);for(let m=c?n:0;m<(u?Math.min(r,l.childNodes.length):l.childNodes.length)&&(d(l.childNodes[m]),i!==1);m++);!u&&i===0&&Fn(l)&&!p&&(a+=`
|
|
10
|
-
`);break}default:break}u&&i++}return d(t),a}var _c=(i=>(i.CUT="Cut",i.BACKSPACE="Backspace",i.DELETE="Delete",i.ERASEEOF="EraseEof",i.UNDO="Undo",i.CLEAR="Clear",i))(_c||{}),Ke=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();Le(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(_c).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(e={shouldObserve:!0}){this.addEventListener("keydown",n=>this.handleKeyDown(n)),this.addEventListener("keyup",n=>this.handleKeyUp(n)),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",n=>this.handlePaste(n)),this.addEventListener("click",()=>this.triggerSelection()),document.activeElement===this.element&&setTimeout(()=>{this.handleFocus()},0);let o=new MutationObserver(()=>{this.element.isConnected||(this.emit("unmounted"),this.dispose())});e!=null&&e.shouldObserve&&o.observe(document.body,{subtree:!0,childList:!0}),this.disposeHandlers.push(()=>{o.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 Fc(t){return t.top!==0||t.left!==0||t.height!==0||t.width!==0}var It=class extends Ke{observer;lastKnownSelection=null;getRootNode(){return this.element.getRootNode()}getText(){let e=new Range;return e.selectNodeContents(this.element),Bn(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!Fc(o)&&(e.insertNode(this.element.ownerDocument.createTextNode("\u2060")),o=e.getBoundingClientRect(),e.deleteContents(),!Fc(o))?null:{top:o.top+o.height,left:o.left}}getSelection(){let e=this.getRange();if(e)return Kn(this.element,e);let o=this.lastKnownSelection;if(o&&Dc(this.element,o.start,o.end))return o;let n=go(this.element);return n.collapse(!1),Kn(this.element,n)}getSelectedText(){let{start:e,end:o}=this.getSelection();return Bn(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(e={shouldObserve:!0}){super.listen(e),this.observer=new MutationObserver(()=>{setTimeout(()=>{this.triggerChange()},0)}),e!=null&&e.shouldObserve&&this.observer.observe(this.element,{attributes:!0,characterData:!0,childList:!0,subtree:!0});let o=this.element.isContentEditable,n=new MutationObserver(()=>{this.element.isContentEditable!==o&&(o=this.element.isContentEditable,this.emit(this.element.isContentEditable?"enabled":"disabled"))});n.observe(this.element,{attributes:!0,attributeFilter:["contenteditable"]}),this.disposeHandlers.push(()=>n.disconnect())}dispose(){super.dispose(),this.observer&&this.observer.disconnect()}};var Lt=class extends Ke{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 Hc(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,d])=>{i.searchParams.append(a,d)}),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 Mv(t){if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}}var Ir=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()}},Lr=class{constructor(e,o,n){this.name=e;this.targetOrigin=o;this.options=n;this.iframe=Hc(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()}},Ar=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(),C.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 Lr(e,this.deepdeskUrl,{debug:!0}):new Ir(e),n=s=>{var i,a;if(s.origin!==this.deepdeskUrl)return;let r=Mv(s.data);typeof r!="object"||r.type!=="event"||r.channel!==e||(C.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;C.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)}},Kc=Ar;var At=class extends Error{constructor(o,n){super(o);this.body=n}name="CustomError"};var Mr=t=>new Promise(e=>{setTimeout(e,t)});var Mt=class extends At{name="ClientError"},Or=class extends At{name="ServerError"},Nr=new Map;function Nv(t){return t.status===204||["0",null].includes(t.headers.get("content-length"))}var fe=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,d=o.method===void 0||o.method.toLowerCase()==="get",{useCache:l=!1,abortLatest:c=!1,attempts:u=1,retryDelay:p=500,refreshTokenOn401:m=!0,retryOnError:g=T=>T instanceof TypeError,retryOnResponse:f=T=>T.status>=500,version:y="v1",...k}=o;if(l)if(d){if(Nr.has(i)){n(Nr.get(i));return}}else throw new Error(`Can't use 'useCache' for ${o.method}`);let v={credentials:"include",...k,headers:{"Content-Type":"application/json",...k.headers}};!d&&this.csrfToken&&(v.headers={...v.headers,"X-CSRFToken":this.csrfToken}),typeof y=="string"&&(v.headers={...v.headers,"X-Deepdesk-API-Version":y});let S=u,P=!1;if(!a)throw new Error("fetch is not set");this.latestRequestByUrl[i]&&c&&(this.latestRequestByUrl[i].isAborted=!0,this.latestRequestByUrl[i].reject(new Error("Aborted"))),this.latestRequestByUrl[i]=r;let x=async()=>(S--,a(i,v).then(async T=>f(T)&&!r.isAborted&&S>0?(await Mr(p),x()):T.status===401&&m===!0&&P===!1?(P=!0,await this.refreshToken(),x()):T).catch(async T=>{if(g(T)&&!r.isAborted&&S>0)return await Mr(p),x();throw T}));x().then(async T=>{let N=await T.json().catch(V=>{if(Nv(T))return null;throw V});if(delete this.latestRequestByUrl[i],T.status>=500){s(new Or("Server Error",N));return}else if(T.status===401){s(new Mt("Unauthorized",N));return}else if(T.status===403){s(new Mt("Forbidden",N));return}else if(T.status===404){s(new Mt("Not Found",N));return}else if(T.status>=400){s(new Mt("Bad Request",N));return}l&&Nr.set(i,N),n(N)}).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 Ov;(e=>{let t;(d=>(d.SEND_MESSAGE="Send Message",d.HANDLING_TIME="Handling Time",d.START_AUTOFLOW="Start Autoflow",d.ABORT_AUTOFLOW="Abort Autoflow",d.ADD_TO_PERSONAL_COLLECTION="Add to personal collection",d.DELETE_FROM_PERSONAL_COLLECTION="Delete from personal collection"))(t=e.EventType||={})})(Ov||={});function Un(t){return{...L(t),tags:t.tags}}var Be=class t{constructor(e,o={}){this.options=o;this.client=new fe(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(),C.info(`Creating conversation for session ${e.sessionId} and agent ${e.agentId}`);let o=await this.client.post("/api/conversations",{...F(e),tags:e.tags},{version:"v2"});return Un(o)}async getProfile(e){let o=await this.client.get(`/apis/admin/profiles/${e}/`,{version:null,useCache:!0});return L(o)}async getKnowledgeAssistant(e){let o=await this.client.get(`/apis/admin/knowledge-assist/assistants/${e}/`,{version:null,useCache:!0});return L(o)}async getContentTypes(){let e=await this.client.get("/apis/admin/content-types/",{version:null,useCache:!0});return L(e)}async getAccount(){let e=await this.client.get("/apis/admin/account/",{version:null,useCache:!0});return L(e)}async getPlatformConfig(){let{config:e}=await this.client.get("/platform/config/",{version:null,useCache:!0});return L(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(),C.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 C.info(`Successfully retrieved conversation ${r.id} for session ${e}`),Un(r)}async isConversationSupported(e,o={}){C.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=F(o);o.tags&&(n.tags=o.tags);let s=await this.client.put(`/api/conversations/${e}`,n,{version:"v2"});return Un(s)}async postMessages(e,o){return(await this.client.post(`/api/conversations/${e}/messages`,o.map(s=>({...F(s),tags:s.tags})),{version:"v2"})).map(s=>Un(s))}async sendEvent(e,o){let{data:n,...s}=o,r=Object.entries(this.latestReceivedDeepdeskVersions).reduce((i,[a,d])=>({...i,[a]:d}),{});return this.client.post("/api/events",F({...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:F({...o,...n})})}async getEntities(e){return(await this.client.post("/api/entities",{messages:e.filter(n=>n.text)})).entities}async getSummary(e,o={}){let n=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});return L(n)}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 C.warn(`Invalid token '${e}'`),o})}async authenticateWithKey(e,o){await this.preflight(),await this.client.post("/apis/admin/session/api-key/",F(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}`,F(o),{abortLatest:!0})).map(r=>({...L(r),text:r.text||r.url||r.message,source:n,type:n})).filter((r,i,a)=>i===a.findIndex(d=>d.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`,F(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 L(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",F(e),{abortLatest:!0});return L(o)}async search(e){let o=await this.client.post(`/api/profiles/${e.profile}/search`,F(e),{version:"v2"});return L(o)}async knowledgeAssist(e,o,n,s={}){let r=await this.client.post(`/api/knowledge-assist/assistants/${n}/search`,F({question:e.question,doNotKnowAnswer:e.doNotKnowAnswer,customerInstruction:e.customerInstruction,chatHistory:o.map(i=>({question:i.question,answer:i.answer.answer})),agentId:s.agentId,conversationId:s.conversationId}),{version:"v2"});return L(r)}async requestLoginByEmail(e){let o=await this.client.post("/apis/admin/session/passwordless/request/",{email:e},{version:null});return L(o)}async requestPasswordlessToken(){let e=await this.client.get("/apis/admin/session/passwordless/request/",{version:null});return L(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 L(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 L(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 L(o)}async translateMessages(e){let o=await this.client.post("/api/translate",F(e),{version:"v2"});return L(o)}handleDeepdeskVersionHeaders(e){e.headers.forEach((o,n)=>{let s=n.toLowerCase(),r=s.match(oi);if(!o||!r)return;let i=r[1].replace("-","_"),a=this.latestReceivedDeepdeskVersions[i];a&&o&&a!==o&&C.warn(`Overwritten Version header ${s}: ${JSON.stringify(a)} -> ${JSON.stringify(o)}`),this.latestReceivedDeepdeskVersions[i]=o})}};var fo=class{constructor(e,o){this.url=e;this.options={timeout:25e3,...o}}eventListeners={};options;timeoutTimer;eventSource;proxyEvent(e){this.eventSource.addEventListener(us(e),o=>{let{data:n}=o;try{let s=JSON.parse(n);this.emit(e,L(s))}catch{C.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 Dv;(e=>{let t;(r=>(r.Started="Started",r.Aborted="Aborted",r.Completed="Completed"))(t=e.AutoflowSessionState||={})})(Dv||={});var ho=class{constructor(e,o={}){this.apiUrl=e;this.client=new fe(e,o)}client;streams={};logger=C;async getCustomMessages(e){let o=await this.client.get(`/sessions/${e}/suggestions`);return L(o.suggestions)}async sendCustomMessage(e,o){let n=await this.client.post(`/sessions/${e}/messages`,F(o));return L(n)}async answerCustomMessage(e,o){await this.client.post(`/sessions/${e}/answers`,F(o))}async getAutoflows(e){let o=await this.client.get(`/sessions/${e}/autoflows`);return L(o.autoflows)}async startAutoflowSession(e){let o=await this.client.post("/autoflow-sessions",F(e));return L(o)}async stopAutoflowSession(e){await this.client.delete(`/autoflow-sessions/${e}`)}openStream(e){return this.streams[e]||(this.streams[e]=new fo(`${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 zv,configureStore as Vv}from"@reduxjs/toolkit";import{createSlice as _v}from"@reduxjs/toolkit";var Bc={startTime:null,stopTime:null},Uc=_v({name:"handlingTime",initialState:Bc,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(M,()=>Bc)}}),{handlingTimeStart:zc,handlingTimeStop:zn,handlingTimeReset:Vc}=Uc.actions,Wc=Uc.reducer;var qc=(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 Fv,createSlice as Hv}from"@reduxjs/toolkit";var Vn={list:{keywordMatches:[]},fetchState:"idle"};var nt=Fv("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 Vn.list;if(!r)throw new Error("No current conversation to fetch pinned messages");return o.getStyleSuggestions({profileCode:r,message:t})}),Kv=Hv({name:"styleSuggestions",initialState:Vn,reducers:{},extraReducers:t=>{t.addCase(nt.pending,e=>{e.fetchState="loading"}).addCase(nt.rejected,e=>{e.fetchState="error"}).addCase(nt.fulfilled,(e,o)=>{e.fetchState="done",Le(e.list,o.payload)||(e.list=o.payload)}).addCase(Ve,e=>{e.list=Vn.list}).addCase(M,()=>Vn)}}),Gc=Kv.reducer;var $c=(t={})=>{let e,o=!0,n={getStyleSuggestions:nt,debounce:500,...t};return s=>r=>i=>{var m;let a=s.getState().input.text,d=r(i),l=s.getState();if(l.auth.isLoggedIn!==!0)return d;let{showStyleSuggestions:c}=l.settings;if(!((m=l.conversation.current)==null?void 0:m.id)||!c)return d;let{text:p}=l.input;return p===a&&!o||(clearTimeout(e),p==="")||(e=setTimeout(()=>{o=!1,s.dispatch(n.getStyleSuggestions({text:p}))},t.debounce)),d}};function Bv(t,e){return t.text===e.text&&t.selection.start===e.selection.start&&t.selection.end===e.selection.end}var jc=(t={})=>{let e={getTextSuggestions:de,getAutocompleteSuggestions:eo,debounce:200,check:wt,...t},o;return n=>s=>r=>{var f;let{input:{userCommitted:i}}=n.getState(),a=s(r),d=n.getState();if(d.auth.isLoggedIn!==!0)return a;let{recommendTextSuggestions:l,showTabCompletion:c}=d.settings,u=(f=d.conversation.current)==null?void 0:f.id,p=r.type===cn.toString();if(!u||!l&&!c)return a;let{input:{userCommitted:m}}=d;return Bv(m,i)&&!p||(clearTimeout(o),!e.check(d))||(o=setTimeout(()=>{let y=mt(d);y===""?n.dispatch(e.getTextSuggestions("default")):n.dispatch(e.getAutocompleteSuggestions(y))},p?0:e.debounce)),a}};var Xc=nt.fulfilled.toString();function Uv(t,e){let o=new Set([...e.keywordMatches.map(s=>s.keyword)]),n=[];return o.forEach(s=>{let r=t.keywordMatches.filter(d=>d.keyword===s),i=e.keywordMatches.filter(d=>d.keyword===s),a=i.length-r.length;a<=0||n.push(...i.slice(0,a))}),n}var Qc=t=>e=>o=>n=>{var l;if(n.type!==Xc){o(n);return}let s=e.getState().styleSuggestions.list;o(n);let r=e.getState(),i=r.styleSuggestions.list,a=(l=r.conversation)==null?void 0:l.current;if(s===i)return;let d=Uv(s,i);n.type===Xc&&d.length>0&&t.sendEvent("style suggested",{conversationId:a==null?void 0:a.id,data:{keywordMatches:d}})};var Wv=zv({answer:rl,auth:ui,autoflows:Ad,conversation:fi,contentTypes:ua,customMessages:Bd,passwordlessToken:qd,entities:Fa,knowledgeAssistant:ol,handlingTime:Wc,info:_i,input:Li,settings:si,profile:pl,search:Vi,summary:qa,styleSuggestions:Gc,ui:Fl,rules:Xd,textSuggestions:bl});function Zc(t){return Vv({reducer:Wv,middleware:e=>[...e({thunk:{extraArgument:{dynamicThunkObject:t.dynamicThunkObject,deepdeskAPI:t.deepdeskAPI,deepdeskBrokerAPI:t.deepdeskBrokerAPI}},serializableCheck:!1}),qc(),jc({debounce:200}),$c({debounce:500}),Qc(t.deepdeskAPI),...t.middleware?t.middleware:[]],preloadedState:t.preloadedState})}var qv=t=>{var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())??"unknown"},Gv=t=>e=>o=>n=>{var a;let s=e.getState(),r=rs("inlineSuggestions")(s);switch(n.type){case lt.toString():{!n.payload&&t.emit("logout",void 0);break}case ae.fulfilled.toString():n.payload.length>0&&t.sendEvent("entities found",{conversationId:s.conversation.current.id,data:{entities:n.payload}});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 Mo.toString():t.handleKeyDown(n.payload);break;case Ve.toString():t.logSendMessage(n.payload);break;case No.toString():t.handleInputChanged(n.payload);break;case et.fulfilled.toString():n.isBroadcasted||t.broadcast(fs,n,!1),t.emit("cues",n.payload);break;default:break}let i=o(n);switch(n.type){case Ve.toString():t.handleAfterSendMessage(n.payload);break;case to.toString():t.onUpdateShowTabHint(n.payload);break;case zn.toString():t.logHandlingTime();break;case"analytics/logEvent/fulfilled":{t.emit("event",n.meta.arg);break}case pe.toString():{let{start:d,end:l}=s.input.selection;t.emit("select-suggestion",{type:qv(n.payload.suggestion),...n.payload,replace:n.payload.replace==="selection"?{start:d,end:l}:{start:0,end:l}},{mayApplyChanges:!0}),r&&(e.dispatch(ue([])),e.dispatch(xe()));break}case Ao.toString():{let{start:d,end:l}=s.input.selection;t.emit("replace",{...n.payload,replace:n.payload.replace==="selection"?{start:d,end:l}:{start:0,end:l}},{mayApplyChanges:!0});break}case Kt.toString():{let d=e.getState(),{text:l,selection:c}=d.input.userCommitted;t.emit("reset",{text:l,selectionAfter:c},{mayApplyChanges:!0});break}case Oo.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 ue.toString():{r&&n.payload.length>0&&e.dispatch(Me(0));break}case be.fulfilled.toString():{t.sendEvent("conversation summarized",{conversationId:s.conversation.current.id,data:{summary:n.payload.summary,model:e.getState().summary.model}});break}default:break}return i},Jc=Gv;function Dr(t){return t.toISOString().replace("T"," ").replace("Z","")}function Yc(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:Dr(o),timeStop:Dr(n)}}function eu(t,e,o){var N,V,H;let{text:n,metrics:{numCharsTyped:s,numCharsPasted:r,numCharsCut:i,numCharsDeleted:a,numPaste:d,agentStartedTypingTimestamp:l,externalTimeTotalSeconds:c,pastes:u,cuts:p,deletions:m,textSuggestions:g,offeredTextSuggestions:f}}=e[t],y=n.length,v=g.reduce((I,{text:O,searchTerm:W})=>I+O.length-(W?W.length:0),0),S=l??Date.now(),P=(Date.now()-S)/1e3+(c||0),x=s/P,T=g.reduce((I,{searchTerm:O})=>I+(O?O.length:0),0);return{conversationId:e.conversation.current.id,source:"agent",text:n,clientVersion:o.version,pastes:u,cuts:p,deletions:m,lenTextTyped:s+T,lenTextTotal:y,lenTextAssisted:v,lenTextPasted:r,lenTextCut:i,lenTextDeleted:a,timeTotalSeconds:P,charsPerSecond:x,numPastes:d,textSuggestionsV2:g,suggestionsCounters:[{source:"gpt",countOffered:f.filter(I=>I.source==="gpt").length}],agentId:(N=e.info.agentInfo)==null?void 0:N.agentId,agentName:(V=e.info.agentInfo)==null?void 0:V.agentName,agentEmail:(H=e.info.agentInfo)==null?void 0:H.agentEmail}}function _r(t,e){var r;let o=t.closest(e);if(o)return o;let n=t.getRootNode().host;if(n instanceof HTMLElement)return _r(n,e);let s=(r=t.ownerDocument.defaultView)==null?void 0:r.frameElement;return s?_r(s,e):null}function tu(t,e){return _r(t,e)}function ou(t){return typeof t=="object"&&t!==null&&"name"in t&&"message"in t}function $v(t){return typeof t=="object"&&t!==null&&"tagName"in t}function Fr(t){return $v(t)&&(Fe(t)||xn(t))}var su,he=new Map,jv=["bottom","height","left","right","top","width"],nu=(t,e)=>!t&&!e?!1:t&&!e||!t&&e?!0:jv.some(o=>t[o]!==e[o]);function ru(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,...ru(e)]:[]}function iu(t,e){return!t||!e?null:{...t,top:t.top+e.top,left:t.left+e.left}}var Wn=!1,au=()=>{Wn=!0;let t=[];if(he.forEach((e,o)=>{if(!o.isConnected){e.rect=null,t.push(e),he.delete(o);return}let n=o.getBoundingClientRect();nu(n,e.rect)&&(e.rect=n,t.push(e))}),t.forEach(e=>{let o=e.parentRects?e.parentRects.reduce(iu,e.rect):e.rect;nu(o,e.totalRect)&&e.callbacks.forEach(n=>n(o)),e.totalRect=o}),he.size===0){Wn=!1;return}su=window.requestAnimationFrame(au)};function Hr(t,e){let o=ru(t),n=[],s=o.map((r,i)=>Hr(r,a=>{n[i]=a;let d=he.get(t);if(!d)return;let l=n.reduce(iu,d.rect);d.callbacks.forEach(c=>c(l))}));return{observe(r=!0){if(s.forEach(i=>i.observe(!1)),he.has(t)){let i=he.get(t);i.callbacks.push(e),i.rect&&e(i.rect)}else he.set(t,{rect:void 0,callbacks:[e],parentRects:n});r&&!Wn&&au()},unobserve(){s.forEach(i=>i.unobserve());let r=he.get(t);if(r){let i=r.callbacks.indexOf(e);i>=0&&r.callbacks.splice(i,1),r.callbacks.length||he.delete(t),he.size||(cancelAnimationFrame(su),Wn=!1)}}}}var lu,ye=new Map,du=()=>{ye.forEach((t,e)=>{if(!e.isConnected){ye.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)))}),ye.size!==0&&(lu=window.requestAnimationFrame(du))};function cu(t,e){return{observe(){let o=ye.size===0;ye.has(t)?ye.get(t).callbacks.push(e):ye.set(t,{visible:void 0,callbacks:[e]}),o&&du()},unobserve(){let o=ye.get(t);if(o){let n=o.callbacks.indexOf(e);n>=0&&o.callbacks.splice(n,1),o.callbacks.length||ye.delete(t),ye.size||cancelAnimationFrame(lu)}}}}var Kr=["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 Br(t,e,o){return o.forEach(n=>{e.style[n]=t[n]})}function Nt(t){return parseFloat(t)}function qn(t){return Math.round(t*1e6)}function uu(t){return t/1e6}function Ur(t,e,o){if(t.boxSizing==="content-box")return;let{clientWidth:n}=e,s=Nt(t.width),r=Nt(t.borderLeftWidth),i=Nt(t.borderRightWidth),a=Nt(t.paddingRight),d=uu(qn(s)-qn(r)-qn(i)),l=uu(qn(n));if(d-l>2){let c=d-l;o.style.paddingRight=`${a+c}px`}}function Gn(t,e={}){var c;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",Ze(o);let n=window.getComputedStyle(t),s=!0,r=()=>{o.scrollTop=t.scrollTop};Br(n,o,Kr),Ur(n,t,o),e.mirrorOverflow&&(o.style.overflow="hidden",t.addEventListener("scroll",r));let i=cu(t,()=>{Br(n,o,Kr),Ur(n,t,o),r(),setTimeout(r,0)}),a,d=!0,l=Hr(t,u=>{if(u===null){e.onRemove&&e.onRemove(),o.remove();return}if(!d&&e.onMoveStart&&(Promise.resolve().then(()=>e.onMoveStart()),d=!0),clearTimeout(a),a=setTimeout(()=>{e.onMoveEnd&&e.onMoveEnd(),d=!1},200),u.height===0&&u.width===0){if(s===!0)return;e.onHide&&e.onHide(),o.style.display="none",s=!0;return}if(Br(n,o,Kr),Ur(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(),m=window.getComputedStyle(e.closestScrollElement),g=Nt(m.borderTopWidth),f=Nt(m.borderBottomWidth),y=p.top+g-u.top,k=u.top+u.height+-(p.top+p.height-f);o.style.clipPath=`inset(${y}px 0px ${k}px 0px)`}s&&(o.style.display="block",e.onShow&&e.onShow(),s=!1)});return e.appendTo?e.appendTo.appendChild(o):(c=t.parentElement)==null||c.appendChild(o),l.observe(),i.observe(),[o,()=>{t.removeEventListener("scroll",r),l.unobserve(),i.unobserve()}]}var pu=(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{C.warn("[Deepdesk] SessionStorage is blocked by browser")}}});function Xv(t){return t.offsetParent!==null}function mu(t){if(!Xv(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 zr(t,e,o=100){let n=mu(t);e({isVisible:n});let s=setInterval(()=>{let r=mu(t);r!==n&&(n=r,e({isVisible:n}))},o);return()=>{clearTimeout(s)}}import{jsx as B}from"react/jsx-runtime";var gu=pu("showTabHint",!0),jn=class t{static version="11.3.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:d}){let l=e.replace(/\/api$/,"");this.deepdeskApi=new Be(l,{token:r,fetch:i}),this.version=n,this.instanceId=t.count++;let c={deepdeskAPI:this.deepdeskApi,dynamicThunkObject:this.dynamicThunkObject,middleware:[Jc({broadcast:(u,p,m)=>{this.broadcastEvents.send(u,p,m)},emit:(u,p,m)=>this.emit(u,p,m),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=>gu.update(u),sendEvent:(u,p)=>this.deepdeskApi.sendEvent(u,p)})]};o&&Object.assign(c,{deepdeskBrokerAPI:new ho(o)}),this.store=Zc(c),this.broadcastEvents=new Kc({debug:!0,deepdeskUrl:l,eventMap:Wi(this.store),createCustomChannel:d}),this.store.dispatch(to(gu.value())),this.store.dispatch(To({locale:s,adminUrl:l,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?(C.warn("Conversation is not supported"),!0):this.hasConversation()?this.state.profile.data?!1:(C.warn("Profile has not been loaded (yet)"),!0):(C.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();X(n)&&ri(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){C.warn("Failed to attach user:",o)}}async isConversationSupported(e,o){return(await this.store.dispatch(ls({sessionId:e,options:o}))).payload}async createConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(ko(e))).payload}async getConversationBySessionId(e,o){return this.hasConversation()&&this.sessionId()!==e&&this.resetConversation(),(await this.store.dispatch(Ro({sessionId:e,options:o}))).payload}async upsertConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(ds(e))).payload}async postMessages(e){return(await this.store.dispatch(Io(e))).payload}async updateConversation(e){return(await this.store.dispatch(Po(e))).payload}resetConversation(){this.store.dispatch(M()),this.loadProfileConfigPromise=null,this.dynamicThunkObject.conversationQuery=null}async getSummary(){let e=await this.store.dispatch(be());if(e.error)throw new Error(e.error.message);return e.payload.summary}configure(e){this.store.dispatch(To(e))}setVisitorInfo(e){this.store.dispatch(Oi(e))}setCustomData(e){this.store.dispatch(Di(e))}async setAgentInfo(e){await this.store.dispatch(Bt(e))}async setAgentSettings(e){await this.store.dispatch(ms(e))}async getAgentSettings(){return(await this.store.dispatch(gs())).payload}async refresh(){if(this.shouldAbort())return Promise.resolve();this.inputMediator&&this.handleInputChanged(this.inputMediator.getText());let e=[];return this.store.dispatch(cn()),e.push(this.refreshWidgetSuggestions()),Promise.all(e).then(()=>{})}notifyInputChanged(e){this.store.dispatch(No(e))}notifyKeyDown(e){this.store.dispatch(Mo(e))}notifyPaste(e,o){this.store.dispatch(ki({text:e,selectionText:o}))}notifyCut(e){this.store.dispatch(Ti(e))}notifyExternalSuggestion(e){this.store.dispatch(pe(e)),this.store.dispatch(xe())}async evaluateRule(e,o={}){let{payload:n,error:s}=await this.store.dispatch(et({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(_e({collapse:!1})),this.inputMediator&&this.store.dispatch(Si({text:e,html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),!this.shouldAbort()&&(this.isMounted||this.store.dispatch(ue([])))}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,d=s!==-1;if(this.store.dispatch(Ei(hi(e))),e.key!=="Tab"&&!this.settings.showTextSuggestions)return;let l=()=>{o||!a||r&&(e.shiftKey||(this.store.dispatch(bi()),i||this.stageSelectedSuggestion({inputType:"arrow"}),e.preventDefault()))},c=()=>{o||!a||i&&s<=0||r&&(e.shiftKey||(this.store.dispatch(wi()),e.preventDefault(),!i&&(this.state.input.selectedSuggestionIndex===-1?this.store.dispatch(Kt()):this.stageSelectedSuggestion({inputType:"arrow"}))))};switch(e.key){case"Up":case"ArrowUp":i?c():l();return;case"Down":case"ArrowDown":{i?l():c();return}case"Esc":case"Escape":{i&&d&&this.store.dispatch(Me(-1)),this.state.input.selectedSuggestionIndex!==-1?(this.store.dispatch(Me(-1)),this.store.dispatch(Kt()),e.preventDefault()):o||(this.store.dispatch(_e({collapse:!0})),this.store.dispatch(Dl(!0)),e.preventDefault());return}case"Tab":{let{userCommitted:u}=this.state.input,p=u.text.substring(0,u.selection.end),{tabCompletionSuggestion:m}=this.state.input;this.store.dispatch(to(!1)),this.state.input.selectedSuggestionIndex>-1?this.stageSelectedSuggestion({inputType:"tab"}):!i&&this.settings.showTabCompletion&&m&&m.text.startsWith(p)&&(this.store.dispatch(pe({text:m.text,suggestion:m,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(Ri()),this.store.dispatch(ue([]))}handlingTimeStart(){this.state.handlingTime.startTime||(C.info("Start handling time"),this.store.dispatch(zc()))}handlingTimeStop(){this.state.handlingTime.startTime&&(C.info("Stop handling time"),this.store.dispatch(zn()))}logSendMessage(e){let o=eu("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=Yc(this.state,{version:this.version});this.deepdeskApi.sendEventV1("Handling Time",e),this.store.dispatch(Vc())}notifySubmit(e={}){this.shouldAbort()||(this.store.dispatch(xe()),this.store.dispatch(Ve(e.text??this.state.input.text)))}stageSelectedSuggestion(e){let o=this.state.input.selectedSuggestionIndex,{textSuggestions:n}=this.state.input;this.store.dispatch(pe({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){C.warn(`The following error occurred in deepdeskSDK.on('${e}', handler)`),C.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]=Gn(o,n);return r.setAttribute("translate","no"),r.dataset.testid=e,s&&r.classList.add(s),this.unmountHandlers.push(()=>{$n(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,d]=Gn(r,{appendTo:document.body,onMoveStart:()=>{s.style.display="none"}});a.dataset.testid=o,a.style.zIndex="2",a.appendChild(n),this.unmountHandlers.push(()=>{$n(s),d()})}else document.body.appendChild(n);return s}createContainer(e,o=document.body){let n=window.getComputedStyle(o),s=document.createElement("div");return Ze(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(()=>{$n(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),C.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()?(C.info(`Restored metrics for ${this.conversationId()}`),this.store.dispatch(Ii(n.metrics))):C.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(!Fr(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:d,showSuggestionsBeforePattern:l,showSuggestionsAfterPattern:c,isEmbedded:u,detectSubmit:p,insertLink:m,inputMediator:g,closestScrollSelector:f,appendOverlayTo:y,inlineSuggestions:k,floatingMenu:v}=o;this.configure({showStyleSuggestions:s,showTabCompletion:r,textSuggestionsCount:a,showMidSentenceSuggestions:d,showSuggestionsBeforePattern:l,showSuggestionsAfterPattern:c,showTextSuggestions:i,insertLink:m,isEmbedded:u,inlineSuggestions:k,floatingMenu:!!v}),o.automaticHandlingTime&&this.setupHandlingTime(e),Ze(e),this.inputMediator=g||(Fe(e)?new Lt(e):new It(e)),this.inputMediator.on("change",({plainText:x})=>{this.notifyInputChanged(x)}),this.inputMediator.on("updated",()=>{this.inputMediator&&this.store.dispatch(Pi({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 S=f&&tu(e,f)||void 0;if(k){let{customStyles:x,appendOverlayTo:T}=o;if(Fe(e))throw new Error("[Deepdesk] Inline suggestion is not supported for textarea yet.");let N=this.createInlineContainer(e,"deepdesk-caret");Ot(B(Je,{store:this.store,customStyles:x,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Vl,{})})}),N),this.inputMediator.on("caret",H=>{this.store.dispatch(ue([])),H?(N.style.display="block",N.style.top=`${H.top}px`,N.style.left=`${H.left}px`):N.style.display="none"});let V=this.overlayContainerFactory("floating-menu",S||e,{appendTo:typeof v=="object"&&"appendOverlayTo"in v?v.appendOverlayTo:T},x==null?void 0:x.floatingMenuRootNode);Ot(B(Je,{store:this.store,customStyles:x,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Nl,{onLogIn:()=>this.loginViaPopup().catch(H=>C.warn(H.message))})})}),V)}else{let x=this.overlayContainerFactory("deepdesk-tab-completion",S||e,{appendTo:y,closestScrollElement:S,mirrorOverflow:!0,onRemove:()=>this.unmount()},n==null?void 0:n.rootNode),T=this.overlayContainerFactory("deepdesk-suggestions-overlay",S||e,{appendTo:y},n==null?void 0:n.suggestionsRootNode);Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Ed,{inputElement:e})})}),x),Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Yl,{onLogIn:()=>this.loginViaPopup().catch(N=>C.warn(N.message))})})}),T)}Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Rl,{})})}),this.createContainer("deepdesk-overlays"));let P;this.inputMediator.on("selection",x=>{clearTimeout(P),x===null?P=setTimeout(()=>{x!==null&&this.store.dispatch(cs(x))},500):this.store.dispatch(cs(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(nr(!1))),this.inputMediator.on("focus",()=>this.store.dispatch(nr(!0))),this.store.dispatch(xi({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&&C.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}),Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Oc,{onLogIn:()=>this.loginViaPopup().catch(i=>C.warn(i.message))})})}),e),this.whenConversationLoaded(()=>{var i;this.broadcastEvents.setSessionId((i=this.state.conversation.current)==null?void 0:i.sessionId)})}unmountWidget(){this.widgetRoot&&$n(this.widgetRoot),this.widgetRoot=null}setupHandlingTime(e){let o=zr(e,({isVisible:n})=>{n?this.handlingTimeStart():this.handlingTimeStop()});this.unmountHandlers.push(()=>{this.handlingTimeStop(),o()}),this.whenConversationLoaded(()=>{this.handlingTimeStart()})}handleError(e){ou(e)&&e.message==="Unauthorized"&&this.login()}loadProfileConfigPromise=null;loadProfileConfig(){return this.loadProfileConfigPromise?this.loadProfileConfigPromise:(this.loadProfileConfigPromise=Promise.resolve().then(async()=>{await this.store.dispatch(Yt());let e=we(this.state);e&&(await this.store.dispatch(Jt()),this.store.dispatch(To({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 d=!1,l=()=>{c&&!c.closed&&c.close(),window.removeEventListener("message",u),clearInterval(p)};r.onmessage=async m=>{var g,f;if((g=m.data)!=null&&g.jwt)try{await this.deepdeskApi.exchangeTokenForAccessCookie((f=m.data)==null?void 0:f.jwt),await this.isLoggedIn(),this.broadcastEvents.send(zt),d=!0,s.port1.close(),o()}catch(y){console.error(y),n(y)}finally{d=!0,l()}};let c=window.open(a.toString(),"deepdesk-login","scrollbars=no,left=100,top=150,width=500,height=500");c===null&&n(new Error("Popup blocked by browser"));let u=async m=>{var g;if(m.origin===a.origin)switch((g=m.data)==null?void 0:g.type){case"deepdesk-popup-loaded":{try{let f=JSON.stringify({type:"deepdesk-popup-create-channel"});c==null||c.postMessage(f,a.origin,[s.port2])}catch(f){C.error("Error posting message to popup",f),n(f)}break}case"deepdesk-popup-error":{l(),m.data.message==="Timeout"&&C.warn("Popup timed out. Check if the account's platform url is configured correctly."),n(new Error(m.data.message));break}}};window.addEventListener("message",u);let p=setInterval(()=>{c&&!c.closed||(l(),d||n(new Error("Popup closed by user")))},200);this.unmountHandlers.push(l)})}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(C.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;C.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=ln(this.state);try{o.forEach(({type:n})=>{n==="entities"?this.store.dispatch(ae()):Co.includes(n)||this.store.dispatch(de(n))})}catch(n){this.handleError(n)}}};async function Qv(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},d=()=>{if(o.setValue)return o.setValue(i);t.value=i};return Promise.resolve(d()).then(()=>{t.selectionStart=a.start,t.selectionEnd=a.end,t.blur(),t.focus()})}async function Zv(t,e,o={}){let n=o.replace?ot(t,o.replace.start,o.replace.end):go(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
|
+
`);break}default:break}u&&i++}return d(t),a}var _c=(i=>(i.CUT="Cut",i.BACKSPACE="Backspace",i.DELETE="Delete",i.ERASEEOF="EraseEof",i.UNDO="Undo",i.CLEAR="Clear",i))(_c||{}),Ke=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();Le(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(_c).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(e={shouldObserve:!0}){this.addEventListener("keydown",n=>this.handleKeyDown(n)),this.addEventListener("keyup",n=>this.handleKeyUp(n)),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",n=>this.handlePaste(n)),this.addEventListener("click",()=>this.triggerSelection()),document.activeElement===this.element&&setTimeout(()=>{this.handleFocus()},0);let o=new MutationObserver(()=>{this.element.isConnected||(this.emit("unmounted"),this.dispose())});e!=null&&e.shouldObserve&&o.observe(document.body,{subtree:!0,childList:!0}),this.disposeHandlers.push(()=>{o.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 Fc(t){return t.top!==0||t.left!==0||t.height!==0||t.width!==0}var It=class extends Ke{observer;lastKnownSelection=null;getRootNode(){return this.element.getRootNode()}getText(){let e=new Range;return e.selectNodeContents(this.element),Bn(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!Fc(o)&&(e.insertNode(this.element.ownerDocument.createTextNode("\u2060")),o=e.getBoundingClientRect(),e.deleteContents(),!Fc(o))?null:{top:o.top+o.height,left:o.left}}getSelection(){let e=this.getRange();if(e)return Kn(this.element,e);let o=this.lastKnownSelection;if(o&&Dc(this.element,o.start,o.end))return o;let n=go(this.element);return n.collapse(!1),Kn(this.element,n)}getSelectedText(){let{start:e,end:o}=this.getSelection();return Bn(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(e={shouldObserve:!0}){super.listen(e),this.observer=new MutationObserver(()=>{setTimeout(()=>{this.triggerChange()},0)}),e!=null&&e.shouldObserve&&this.observer.observe(this.element,{attributes:!0,characterData:!0,childList:!0,subtree:!0});let o=this.element.isContentEditable,n=new MutationObserver(()=>{this.element.isContentEditable!==o&&(o=this.element.isContentEditable,this.emit(this.element.isContentEditable?"enabled":"disabled"))});n.observe(this.element,{attributes:!0,attributeFilter:["contenteditable"]}),this.disposeHandlers.push(()=>n.disconnect())}dispose(){super.dispose(),this.observer&&this.observer.disconnect()}};var Lt=class extends Ke{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 Hc(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,d])=>{i.searchParams.append(a,d)}),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 Mv(t){if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}}var Ir=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()}},Lr=class{constructor(e,o,n){this.name=e;this.targetOrigin=o;this.options=n;this.iframe=Hc(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()}},Ar=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(),C.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 Lr(e,this.deepdeskUrl,{debug:!0}):new Ir(e),n=s=>{var i,a;if(s.origin!==this.deepdeskUrl)return;let r=Mv(s.data);typeof r!="object"||r.type!=="event"||r.channel!==e||(C.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;C.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)}},Kc=Ar;var At=class extends Error{constructor(o,n){super(o);this.body=n}name="CustomError"};var Mr=t=>new Promise(e=>{setTimeout(e,t)});var Mt=class extends At{name="ClientError"},Or=class extends At{name="ServerError"},Nr=new Map;function Nv(t){return t.status===204||["0",null].includes(t.headers.get("content-length"))}var fe=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,d=o.method===void 0||o.method.toLowerCase()==="get",{useCache:l=!1,abortLatest:c=!1,attempts:u=1,retryDelay:p=500,refreshTokenOn401:m=!0,retryOnError:g=T=>T instanceof TypeError,retryOnResponse:f=T=>T.status>=500,version:y="v1",...k}=o;if(l)if(d){if(Nr.has(i)){n(Nr.get(i));return}}else throw new Error(`Can't use 'useCache' for ${o.method}`);let v={credentials:"include",...k,headers:{"Content-Type":"application/json",...k.headers}};!d&&this.csrfToken&&(v.headers={...v.headers,"X-CSRFToken":this.csrfToken}),typeof y=="string"&&(v.headers={...v.headers,"X-Deepdesk-API-Version":y});let S=u,P=!1;if(!a)throw new Error("fetch is not set");this.latestRequestByUrl[i]&&c&&(this.latestRequestByUrl[i].isAborted=!0,this.latestRequestByUrl[i].reject(new Error("Aborted"))),this.latestRequestByUrl[i]=r;let x=async()=>(S--,a(i,v).then(async T=>f(T)&&!r.isAborted&&S>0?(await Mr(p),x()):T.status===401&&m===!0&&P===!1?(P=!0,await this.refreshToken(),x()):T).catch(async T=>{if(g(T)&&!r.isAborted&&S>0)return await Mr(p),x();throw T}));x().then(async T=>{let N=await T.json().catch(V=>{if(Nv(T))return null;throw V});if(delete this.latestRequestByUrl[i],T.status>=500){s(new Or("Server Error",N));return}else if(T.status===401){s(new Mt("Unauthorized",N));return}else if(T.status===403){s(new Mt("Forbidden",N));return}else if(T.status===404){s(new Mt("Not Found",N));return}else if(T.status>=400){s(new Mt("Bad Request",N));return}l&&Nr.set(i,N),n(N)}).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 Ov;(e=>{let t;(d=>(d.SEND_MESSAGE="Send Message",d.HANDLING_TIME="Handling Time",d.START_AUTOFLOW="Start Autoflow",d.ABORT_AUTOFLOW="Abort Autoflow",d.ADD_TO_PERSONAL_COLLECTION="Add to personal collection",d.DELETE_FROM_PERSONAL_COLLECTION="Delete from personal collection"))(t=e.EventType||={})})(Ov||={});function Un(t){return{...L(t),tags:t.tags}}var Be=class t{constructor(e,o={}){this.options=o;this.client=new fe(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(),C.info(`Creating conversation for session ${e.sessionId} and agent ${e.agentId}`);let o=await this.client.post("/api/conversations",{...F(e),tags:e.tags},{version:"v2"});return Un(o)}async getProfile(e){let o=await this.client.get(`/apis/admin/profiles/${e}/`,{version:null,useCache:!0});return L(o)}async getKnowledgeAssistant(e){let o=await this.client.get(`/apis/admin/knowledge-assist/assistants/${e}/`,{version:null,useCache:!0});return L(o)}async getContentTypes(){let e=await this.client.get("/apis/admin/content-types/",{version:null,useCache:!0});return L(e)}async getAccount(){let e=await this.client.get("/apis/admin/account/",{version:null,useCache:!0});return L(e)}async getPlatformConfig(){let{config:e}=await this.client.get("/platform/config/",{version:null,useCache:!0});return L(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(),C.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 C.info(`Successfully retrieved conversation ${r.id} for session ${e}`),Un(r)}async isConversationSupported(e,o={}){C.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=F(o);o.tags&&(n.tags=o.tags);let s=await this.client.put(`/api/conversations/${e}`,n,{version:"v2"});return Un(s)}async postMessages(e,o){return(await this.client.post(`/api/conversations/${e}/messages`,o.map(s=>({...F(s),tags:s.tags})),{version:"v2"})).map(s=>Un(s))}async sendEvent(e,o){let{data:n,...s}=o,r=Object.entries(this.latestReceivedDeepdeskVersions).reduce((i,[a,d])=>({...i,[a]:d}),{});return this.client.post("/api/events",F({...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:F({...o,...n})})}async getEntities(e){return(await this.client.post("/api/entities",{messages:e.filter(n=>n.text)})).entities}async getSummary(e,o={}){let n=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});return L(n)}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 C.warn(`Invalid token '${e}'`),o})}async authenticateWithKey(e,o){await this.preflight(),await this.client.post("/apis/admin/session/api-key/",F(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}`,F(o),{abortLatest:!0})).map(r=>({...L(r),text:r.text||r.url||r.message,source:n,type:n})).filter((r,i,a)=>i===a.findIndex(d=>d.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`,F(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 L(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",F(e),{abortLatest:!0});return L(o)}async search(e){let o=await this.client.post(`/api/profiles/${e.profile}/search`,F(e),{version:"v2"});return L(o)}async knowledgeAssist(e,o,n,s={}){let r=await this.client.post(`/api/knowledge-assist/assistants/${n}/search`,F({question:e.question,doNotKnowAnswer:e.doNotKnowAnswer,customerInstruction:e.customerInstruction,chatHistory:o.map(i=>({question:i.question,answer:i.answer.answer})),agentId:s.agentId,conversationId:s.conversationId}),{version:"v2"});return L(r)}async requestLoginByEmail(e){let o=await this.client.post("/apis/admin/session/passwordless/request/",{email:e},{version:null});return L(o)}async requestPasswordlessToken(){let e=await this.client.get("/apis/admin/session/passwordless/request/",{version:null});return L(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 L(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 L(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 L(o)}async translateMessages(e){let o=await this.client.post("/api/translate",F(e),{version:"v2"});return L(o)}handleDeepdeskVersionHeaders(e){e.headers.forEach((o,n)=>{let s=n.toLowerCase(),r=s.match(oi);if(!o||!r)return;let i=r[1].replace("-","_"),a=this.latestReceivedDeepdeskVersions[i];a&&o&&a!==o&&C.warn(`Overwritten Version header ${s}: ${JSON.stringify(a)} -> ${JSON.stringify(o)}`),this.latestReceivedDeepdeskVersions[i]=o})}};var fo=class{constructor(e,o){this.url=e;this.options={timeout:25e3,...o}}eventListeners={};options;timeoutTimer;eventSource;proxyEvent(e){this.eventSource.addEventListener(us(e),o=>{let{data:n}=o;try{let s=JSON.parse(n);this.emit(e,L(s))}catch{C.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 Dv;(e=>{let t;(r=>(r.Started="Started",r.Aborted="Aborted",r.Completed="Completed"))(t=e.AutoflowSessionState||={})})(Dv||={});var ho=class{constructor(e,o={}){this.apiUrl=e;this.client=new fe(e,o)}client;streams={};logger=C;async getCustomMessages(e){let o=await this.client.get(`/sessions/${e}/suggestions`);return L(o.suggestions)}async sendCustomMessage(e,o){let n=await this.client.post(`/sessions/${e}/messages`,F(o));return L(n)}async answerCustomMessage(e,o){await this.client.post(`/sessions/${e}/answers`,F(o))}async getAutoflows(e){let o=await this.client.get(`/sessions/${e}/autoflows`);return L(o.autoflows)}async startAutoflowSession(e){let o=await this.client.post("/autoflow-sessions",F(e));return L(o)}async stopAutoflowSession(e){await this.client.delete(`/autoflow-sessions/${e}`)}openStream(e){return this.streams[e]||(this.streams[e]=new fo(`${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 zv,configureStore as Vv}from"@reduxjs/toolkit";import{createSlice as _v}from"@reduxjs/toolkit";var Bc={startTime:null,stopTime:null},Uc=_v({name:"handlingTime",initialState:Bc,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(M,()=>Bc)}}),{handlingTimeStart:zc,handlingTimeStop:zn,handlingTimeReset:Vc}=Uc.actions,Wc=Uc.reducer;var qc=(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 Fv,createSlice as Hv}from"@reduxjs/toolkit";var Vn={list:{keywordMatches:[]},fetchState:"idle"};var nt=Fv("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 Vn.list;if(!r)throw new Error("No current conversation to fetch pinned messages");return o.getStyleSuggestions({profileCode:r,message:t})}),Kv=Hv({name:"styleSuggestions",initialState:Vn,reducers:{},extraReducers:t=>{t.addCase(nt.pending,e=>{e.fetchState="loading"}).addCase(nt.rejected,e=>{e.fetchState="error"}).addCase(nt.fulfilled,(e,o)=>{e.fetchState="done",Le(e.list,o.payload)||(e.list=o.payload)}).addCase(Ve,e=>{e.list=Vn.list}).addCase(M,()=>Vn)}}),Gc=Kv.reducer;var $c=(t={})=>{let e,o=!0,n={getStyleSuggestions:nt,debounce:500,...t};return s=>r=>i=>{var m;let a=s.getState().input.text,d=r(i),l=s.getState();if(l.auth.isLoggedIn!==!0)return d;let{showStyleSuggestions:c}=l.settings;if(!((m=l.conversation.current)==null?void 0:m.id)||!c)return d;let{text:p}=l.input;return p===a&&!o||(clearTimeout(e),p==="")||(e=setTimeout(()=>{o=!1,s.dispatch(n.getStyleSuggestions({text:p}))},t.debounce)),d}};function Bv(t,e){return t.text===e.text&&t.selection.start===e.selection.start&&t.selection.end===e.selection.end}var jc=(t={})=>{let e={getTextSuggestions:de,getAutocompleteSuggestions:eo,debounce:200,check:wt,...t},o;return n=>s=>r=>{var f;let{input:{userCommitted:i}}=n.getState(),a=s(r),d=n.getState();if(d.auth.isLoggedIn!==!0)return a;let{recommendTextSuggestions:l,showTabCompletion:c}=d.settings,u=(f=d.conversation.current)==null?void 0:f.id,p=r.type===cn.toString();if(!u||!l&&!c)return a;let{input:{userCommitted:m}}=d;return Bv(m,i)&&!p||(clearTimeout(o),!e.check(d))||(o=setTimeout(()=>{let y=mt(d);y===""?n.dispatch(e.getTextSuggestions("default")):n.dispatch(e.getAutocompleteSuggestions(y))},p?0:e.debounce)),a}};var Xc=nt.fulfilled.toString();function Uv(t,e){let o=new Set([...e.keywordMatches.map(s=>s.keyword)]),n=[];return o.forEach(s=>{let r=t.keywordMatches.filter(d=>d.keyword===s),i=e.keywordMatches.filter(d=>d.keyword===s),a=i.length-r.length;a<=0||n.push(...i.slice(0,a))}),n}var Qc=t=>e=>o=>n=>{var l;if(n.type!==Xc){o(n);return}let s=e.getState().styleSuggestions.list;o(n);let r=e.getState(),i=r.styleSuggestions.list,a=(l=r.conversation)==null?void 0:l.current;if(s===i)return;let d=Uv(s,i);n.type===Xc&&d.length>0&&t.sendEvent("style suggested",{conversationId:a==null?void 0:a.id,data:{keywordMatches:d}})};var Wv=zv({answer:rl,auth:ui,autoflows:Ad,conversation:fi,contentTypes:ua,customMessages:Bd,passwordlessToken:qd,entities:Fa,knowledgeAssistant:ol,handlingTime:Wc,info:_i,input:Li,settings:si,profile:pl,search:Vi,summary:qa,styleSuggestions:Gc,ui:Fl,rules:Xd,textSuggestions:bl});function Zc(t){return Vv({reducer:Wv,middleware:e=>[...e({thunk:{extraArgument:{dynamicThunkObject:t.dynamicThunkObject,deepdeskAPI:t.deepdeskAPI,deepdeskBrokerAPI:t.deepdeskBrokerAPI}},serializableCheck:!1}),qc(),jc({debounce:200}),$c({debounce:500}),Qc(t.deepdeskAPI),...t.middleware?t.middleware:[]],preloadedState:t.preloadedState})}var qv=t=>{var e;return((e=t==null?void 0:t.type)==null?void 0:e.toLowerCase())??"unknown"},Gv=t=>e=>o=>n=>{var a;let s=e.getState(),r=rs("inlineSuggestions")(s);switch(n.type){case lt.toString():{!n.payload&&t.emit("logout",void 0);break}case ae.fulfilled.toString():n.payload.length>0&&t.sendEvent("entities found",{conversationId:s.conversation.current.id,data:{entities:n.payload}});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 Mo.toString():t.handleKeyDown(n.payload);break;case Ve.toString():t.logSendMessage(n.payload);break;case No.toString():t.handleInputChanged(n.payload);break;case et.fulfilled.toString():n.isBroadcasted||t.broadcast(fs,n,!1),t.emit("cues",n.payload);break;default:break}let i=o(n);switch(n.type){case Ve.toString():t.handleAfterSendMessage(n.payload);break;case to.toString():t.onUpdateShowTabHint(n.payload);break;case zn.toString():t.logHandlingTime();break;case"analytics/logEvent/fulfilled":{t.emit("event",n.meta.arg);break}case pe.toString():{let{start:d,end:l}=s.input.selection;t.emit("select-suggestion",{type:qv(n.payload.suggestion),...n.payload,replace:n.payload.replace==="selection"?{start:d,end:l}:{start:0,end:l}},{mayApplyChanges:!0}),r&&(e.dispatch(ue([])),e.dispatch(xe()));break}case Ao.toString():{let{start:d,end:l}=s.input.selection;t.emit("replace",{...n.payload,replace:n.payload.replace==="selection"?{start:d,end:l}:{start:0,end:l}},{mayApplyChanges:!0});break}case Kt.toString():{let d=e.getState(),{text:l,selection:c}=d.input.userCommitted;t.emit("reset",{text:l,selectionAfter:c},{mayApplyChanges:!0});break}case Oo.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 ue.toString():{r&&n.payload.length>0&&e.dispatch(Me(0));break}case be.fulfilled.toString():{t.sendEvent("conversation summarized",{conversationId:s.conversation.current.id,data:{summary:n.payload.summary,model:e.getState().summary.model}});break}default:break}return i},Jc=Gv;function Dr(t){return t.toISOString().replace("T"," ").replace("Z","")}function Yc(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:Dr(o),timeStop:Dr(n)}}function eu(t,e,o){var N,V,H;let{text:n,metrics:{numCharsTyped:s,numCharsPasted:r,numCharsCut:i,numCharsDeleted:a,numPaste:d,agentStartedTypingTimestamp:l,externalTimeTotalSeconds:c,pastes:u,cuts:p,deletions:m,textSuggestions:g,offeredTextSuggestions:f}}=e[t],y=n.length,v=g.reduce((I,{text:O,searchTerm:W})=>I+O.length-(W?W.length:0),0),S=l??Date.now(),P=(Date.now()-S)/1e3+(c||0),x=s/P,T=g.reduce((I,{searchTerm:O})=>I+(O?O.length:0),0);return{conversationId:e.conversation.current.id,source:"agent",text:n,clientVersion:o.version,pastes:u,cuts:p,deletions:m,lenTextTyped:s+T,lenTextTotal:y,lenTextAssisted:v,lenTextPasted:r,lenTextCut:i,lenTextDeleted:a,timeTotalSeconds:P,charsPerSecond:x,numPastes:d,textSuggestionsV2:g,suggestionsCounters:[{source:"gpt",countOffered:f.filter(I=>I.source==="gpt").length}],agentId:(N=e.info.agentInfo)==null?void 0:N.agentId,agentName:(V=e.info.agentInfo)==null?void 0:V.agentName,agentEmail:(H=e.info.agentInfo)==null?void 0:H.agentEmail}}function _r(t,e){var r;let o=t.closest(e);if(o)return o;let n=t.getRootNode().host;if(n instanceof HTMLElement)return _r(n,e);let s=(r=t.ownerDocument.defaultView)==null?void 0:r.frameElement;return s?_r(s,e):null}function tu(t,e){return _r(t,e)}function ou(t){return typeof t=="object"&&t!==null&&"name"in t&&"message"in t}function $v(t){return typeof t=="object"&&t!==null&&"tagName"in t}function Fr(t){return $v(t)&&(Fe(t)||xn(t))}var su,he=new Map,jv=["bottom","height","left","right","top","width"],nu=(t,e)=>!t&&!e?!1:t&&!e||!t&&e?!0:jv.some(o=>t[o]!==e[o]);function ru(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,...ru(e)]:[]}function iu(t,e){return!t||!e?null:{...t,top:t.top+e.top,left:t.left+e.left}}var Wn=!1,au=()=>{Wn=!0;let t=[];if(he.forEach((e,o)=>{if(!o.isConnected){e.rect=null,t.push(e),he.delete(o);return}let n=o.getBoundingClientRect();nu(n,e.rect)&&(e.rect=n,t.push(e))}),t.forEach(e=>{let o=e.parentRects?e.parentRects.reduce(iu,e.rect):e.rect;nu(o,e.totalRect)&&e.callbacks.forEach(n=>n(o)),e.totalRect=o}),he.size===0){Wn=!1;return}su=window.requestAnimationFrame(au)};function Hr(t,e){let o=ru(t),n=[],s=o.map((r,i)=>Hr(r,a=>{n[i]=a;let d=he.get(t);if(!d)return;let l=n.reduce(iu,d.rect);d.callbacks.forEach(c=>c(l))}));return{observe(r=!0){if(s.forEach(i=>i.observe(!1)),he.has(t)){let i=he.get(t);i.callbacks.push(e),i.rect&&e(i.rect)}else he.set(t,{rect:void 0,callbacks:[e],parentRects:n});r&&!Wn&&au()},unobserve(){s.forEach(i=>i.unobserve());let r=he.get(t);if(r){let i=r.callbacks.indexOf(e);i>=0&&r.callbacks.splice(i,1),r.callbacks.length||he.delete(t),he.size||(cancelAnimationFrame(su),Wn=!1)}}}}var lu,ye=new Map,du=()=>{ye.forEach((t,e)=>{if(!e.isConnected){ye.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)))}),ye.size!==0&&(lu=window.requestAnimationFrame(du))};function cu(t,e){return{observe(){let o=ye.size===0;ye.has(t)?ye.get(t).callbacks.push(e):ye.set(t,{visible:void 0,callbacks:[e]}),o&&du()},unobserve(){let o=ye.get(t);if(o){let n=o.callbacks.indexOf(e);n>=0&&o.callbacks.splice(n,1),o.callbacks.length||ye.delete(t),ye.size||cancelAnimationFrame(lu)}}}}var Kr=["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 Br(t,e,o){return o.forEach(n=>{e.style[n]=t[n]})}function Nt(t){return parseFloat(t)}function qn(t){return Math.round(t*1e6)}function uu(t){return t/1e6}function Ur(t,e,o){if(t.boxSizing==="content-box")return;let{clientWidth:n}=e,s=Nt(t.width),r=Nt(t.borderLeftWidth),i=Nt(t.borderRightWidth),a=Nt(t.paddingRight),d=uu(qn(s)-qn(r)-qn(i)),l=uu(qn(n));if(d-l>2){let c=d-l;o.style.paddingRight=`${a+c}px`}}function Gn(t,e={}){var c;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",Ze(o);let n=window.getComputedStyle(t),s=!0,r=()=>{o.scrollTop=t.scrollTop};Br(n,o,Kr),Ur(n,t,o),e.mirrorOverflow&&(o.style.overflow="hidden",t.addEventListener("scroll",r));let i=cu(t,()=>{Br(n,o,Kr),Ur(n,t,o),r(),setTimeout(r,0)}),a,d=!0,l=Hr(t,u=>{if(u===null){e.onRemove&&e.onRemove(),o.remove();return}if(!d&&e.onMoveStart&&(Promise.resolve().then(()=>e.onMoveStart()),d=!0),clearTimeout(a),a=setTimeout(()=>{e.onMoveEnd&&e.onMoveEnd(),d=!1},200),u.height===0&&u.width===0){if(s===!0)return;e.onHide&&e.onHide(),o.style.display="none",s=!0;return}if(Br(n,o,Kr),Ur(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(),m=window.getComputedStyle(e.closestScrollElement),g=Nt(m.borderTopWidth),f=Nt(m.borderBottomWidth),y=p.top+g-u.top,k=u.top+u.height+-(p.top+p.height-f);o.style.clipPath=`inset(${y}px 0px ${k}px 0px)`}s&&(o.style.display="block",e.onShow&&e.onShow(),s=!1)});return e.appendTo?e.appendTo.appendChild(o):(c=t.parentElement)==null||c.appendChild(o),l.observe(),i.observe(),[o,()=>{t.removeEventListener("scroll",r),l.unobserve(),i.unobserve()}]}var pu=(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{C.warn("[Deepdesk] SessionStorage is blocked by browser")}}});function Xv(t){return t.offsetParent!==null}function mu(t){if(!Xv(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 zr(t,e,o=100){let n=mu(t);e({isVisible:n});let s=setInterval(()=>{let r=mu(t);r!==n&&(n=r,e({isVisible:n}))},o);return()=>{clearTimeout(s)}}import{jsx as B}from"react/jsx-runtime";var gu=pu("showTabHint",!0),jn=class t{static version="11.4.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:d}){let l=e.replace(/\/api$/,"");this.deepdeskApi=new Be(l,{token:r,fetch:i}),this.version=n,this.instanceId=t.count++;let c={deepdeskAPI:this.deepdeskApi,dynamicThunkObject:this.dynamicThunkObject,middleware:[Jc({broadcast:(u,p,m)=>{this.broadcastEvents.send(u,p,m)},emit:(u,p,m)=>this.emit(u,p,m),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=>gu.update(u),sendEvent:(u,p)=>this.deepdeskApi.sendEvent(u,p)})]};o&&Object.assign(c,{deepdeskBrokerAPI:new ho(o)}),this.store=Zc(c),this.broadcastEvents=new Kc({debug:!0,deepdeskUrl:l,eventMap:Wi(this.store),createCustomChannel:d}),this.store.dispatch(to(gu.value())),this.store.dispatch(To({locale:s,adminUrl:l,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?(C.warn("Conversation is not supported"),!0):this.hasConversation()?this.state.profile.data?!1:(C.warn("Profile has not been loaded (yet)"),!0):(C.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();X(n)&&ri(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){C.warn("Failed to attach user:",o)}}async isConversationSupported(e,o){return(await this.store.dispatch(ls({sessionId:e,options:o}))).payload}async createConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(ko(e))).payload}async getConversationBySessionId(e,o){return this.hasConversation()&&this.sessionId()!==e&&this.resetConversation(),(await this.store.dispatch(Ro({sessionId:e,options:o}))).payload}async upsertConversation(e){return this.hasConversation()&&this.sessionId()!==e.sessionId&&this.resetConversation(),(await this.store.dispatch(ds(e))).payload}async postMessages(e){return(await this.store.dispatch(Io(e))).payload}async updateConversation(e){return(await this.store.dispatch(Po(e))).payload}resetConversation(){this.store.dispatch(M()),this.loadProfileConfigPromise=null,this.dynamicThunkObject.conversationQuery=null}async getSummary(){let e=await this.store.dispatch(be());if(e.error)throw new Error(e.error.message);return e.payload.summary}configure(e){this.store.dispatch(To(e))}setVisitorInfo(e){this.store.dispatch(Oi(e))}setCustomData(e){this.store.dispatch(Di(e))}async setAgentInfo(e){await this.store.dispatch(Bt(e))}async setAgentSettings(e){await this.store.dispatch(ms(e))}async getAgentSettings(){return(await this.store.dispatch(gs())).payload}async refresh(){if(this.shouldAbort())return Promise.resolve();this.inputMediator&&this.handleInputChanged(this.inputMediator.getText());let e=[];return this.store.dispatch(cn()),e.push(this.refreshWidgetSuggestions()),Promise.all(e).then(()=>{})}notifyInputChanged(e){this.store.dispatch(No(e))}notifyKeyDown(e){this.store.dispatch(Mo(e))}notifyPaste(e,o){this.store.dispatch(ki({text:e,selectionText:o}))}notifyCut(e){this.store.dispatch(Ti(e))}notifyExternalSuggestion(e){this.store.dispatch(pe(e)),this.store.dispatch(xe())}async evaluateRule(e,o={}){let{payload:n,error:s}=await this.store.dispatch(et({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(_e({collapse:!1})),this.inputMediator&&this.store.dispatch(Si({text:e,html:this.inputMediator.getHTML(),selection:this.inputMediator.getSelection()})),!this.shouldAbort()&&(this.isMounted||this.store.dispatch(ue([])))}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,d=s!==-1;if(this.store.dispatch(Ei(hi(e))),e.key!=="Tab"&&!this.settings.showTextSuggestions)return;let l=()=>{o||!a||r&&(e.shiftKey||(this.store.dispatch(bi()),i||this.stageSelectedSuggestion({inputType:"arrow"}),e.preventDefault()))},c=()=>{o||!a||i&&s<=0||r&&(e.shiftKey||(this.store.dispatch(wi()),e.preventDefault(),!i&&(this.state.input.selectedSuggestionIndex===-1?this.store.dispatch(Kt()):this.stageSelectedSuggestion({inputType:"arrow"}))))};switch(e.key){case"Up":case"ArrowUp":i?c():l();return;case"Down":case"ArrowDown":{i?l():c();return}case"Esc":case"Escape":{i&&d&&this.store.dispatch(Me(-1)),this.state.input.selectedSuggestionIndex!==-1?(this.store.dispatch(Me(-1)),this.store.dispatch(Kt()),e.preventDefault()):o||(this.store.dispatch(_e({collapse:!0})),this.store.dispatch(Dl(!0)),e.preventDefault());return}case"Tab":{let{userCommitted:u}=this.state.input,p=u.text.substring(0,u.selection.end),{tabCompletionSuggestion:m}=this.state.input;this.store.dispatch(to(!1)),this.state.input.selectedSuggestionIndex>-1?this.stageSelectedSuggestion({inputType:"tab"}):!i&&this.settings.showTabCompletion&&m&&m.text.startsWith(p)&&(this.store.dispatch(pe({text:m.text,suggestion:m,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(Ri()),this.store.dispatch(ue([]))}handlingTimeStart(){this.state.handlingTime.startTime||(C.info("Start handling time"),this.store.dispatch(zc()))}handlingTimeStop(){this.state.handlingTime.startTime&&(C.info("Stop handling time"),this.store.dispatch(zn()))}logSendMessage(e){let o=eu("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=Yc(this.state,{version:this.version});this.deepdeskApi.sendEventV1("Handling Time",e),this.store.dispatch(Vc())}notifySubmit(e={}){this.shouldAbort()||(this.store.dispatch(xe()),this.store.dispatch(Ve(e.text??this.state.input.text)))}stageSelectedSuggestion(e){let o=this.state.input.selectedSuggestionIndex,{textSuggestions:n}=this.state.input;this.store.dispatch(pe({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){C.warn(`The following error occurred in deepdeskSDK.on('${e}', handler)`),C.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]=Gn(o,n);return r.setAttribute("translate","no"),r.dataset.testid=e,s&&r.classList.add(s),this.unmountHandlers.push(()=>{$n(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,d]=Gn(r,{appendTo:document.body,onMoveStart:()=>{s.style.display="none"}});a.dataset.testid=o,a.style.zIndex="2",a.appendChild(n),this.unmountHandlers.push(()=>{$n(s),d()})}else document.body.appendChild(n);return s}createContainer(e,o=document.body){let n=window.getComputedStyle(o),s=document.createElement("div");return Ze(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(()=>{$n(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),C.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()?(C.info(`Restored metrics for ${this.conversationId()}`),this.store.dispatch(Ii(n.metrics))):C.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(!Fr(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:d,showSuggestionsBeforePattern:l,showSuggestionsAfterPattern:c,isEmbedded:u,detectSubmit:p,insertLink:m,inputMediator:g,closestScrollSelector:f,appendOverlayTo:y,inlineSuggestions:k,floatingMenu:v}=o;this.configure({showStyleSuggestions:s,showTabCompletion:r,textSuggestionsCount:a,showMidSentenceSuggestions:d,showSuggestionsBeforePattern:l,showSuggestionsAfterPattern:c,showTextSuggestions:i,insertLink:m,isEmbedded:u,inlineSuggestions:k,floatingMenu:!!v}),o.automaticHandlingTime&&this.setupHandlingTime(e),Ze(e),this.inputMediator=g||(Fe(e)?new Lt(e):new It(e)),this.inputMediator.on("change",({plainText:x})=>{this.notifyInputChanged(x)}),this.inputMediator.on("updated",()=>{this.inputMediator&&this.store.dispatch(Pi({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 S=f&&tu(e,f)||void 0;if(k){let{customStyles:x,appendOverlayTo:T}=o;if(Fe(e))throw new Error("[Deepdesk] Inline suggestion is not supported for textarea yet.");let N=this.createInlineContainer(e,"deepdesk-caret");Ot(B(Je,{store:this.store,customStyles:x,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Vl,{})})}),N),this.inputMediator.on("caret",H=>{this.store.dispatch(ue([])),H?(N.style.display="block",N.style.top=`${H.top}px`,N.style.left=`${H.left}px`):N.style.display="none"});let V=this.overlayContainerFactory("floating-menu",S||e,{appendTo:typeof v=="object"&&"appendOverlayTo"in v?v.appendOverlayTo:T},x==null?void 0:x.floatingMenuRootNode);Ot(B(Je,{store:this.store,customStyles:x,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Nl,{onLogIn:()=>this.loginViaPopup().catch(H=>C.warn(H.message))})})}),V)}else{let x=this.overlayContainerFactory("deepdesk-tab-completion",S||e,{appendTo:y,closestScrollElement:S,mirrorOverflow:!0,onRemove:()=>this.unmount()},n==null?void 0:n.rootNode),T=this.overlayContainerFactory("deepdesk-suggestions-overlay",S||e,{appendTo:y},n==null?void 0:n.suggestionsRootNode);Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Ed,{inputElement:e})})}),x),Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Yl,{onLogIn:()=>this.loginViaPopup().catch(N=>C.warn(N.message))})})}),T)}Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Rl,{})})}),this.createContainer("deepdesk-overlays"));let P;this.inputMediator.on("selection",x=>{clearTimeout(P),x===null?P=setTimeout(()=>{x!==null&&this.store.dispatch(cs(x))},500):this.store.dispatch(cs(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(nr(!1))),this.inputMediator.on("focus",()=>this.store.dispatch(nr(!0))),this.store.dispatch(xi({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&&C.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}),Ot(B(Je,{store:this.store,customStyles:n,children:B(qe,{broadcastEvents:this.broadcastEvents,children:B(Oc,{onLogIn:()=>this.loginViaPopup().catch(i=>C.warn(i.message))})})}),e),this.whenConversationLoaded(()=>{var i;this.broadcastEvents.setSessionId((i=this.state.conversation.current)==null?void 0:i.sessionId)})}unmountWidget(){this.widgetRoot&&$n(this.widgetRoot),this.widgetRoot=null}setupHandlingTime(e){let o=zr(e,({isVisible:n})=>{n?this.handlingTimeStart():this.handlingTimeStop()});this.unmountHandlers.push(()=>{this.handlingTimeStop(),o()}),this.whenConversationLoaded(()=>{this.handlingTimeStart()})}handleError(e){ou(e)&&e.message==="Unauthorized"&&this.login()}loadProfileConfigPromise=null;loadProfileConfig(){return this.loadProfileConfigPromise?this.loadProfileConfigPromise:(this.loadProfileConfigPromise=Promise.resolve().then(async()=>{await this.store.dispatch(Yt());let e=we(this.state);e&&(await this.store.dispatch(Jt()),this.store.dispatch(To({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 d=!1,l=()=>{c&&!c.closed&&c.close(),window.removeEventListener("message",u),clearInterval(p)};r.onmessage=async m=>{var g,f;if((g=m.data)!=null&&g.jwt)try{await this.deepdeskApi.exchangeTokenForAccessCookie((f=m.data)==null?void 0:f.jwt),await this.isLoggedIn(),this.broadcastEvents.send(zt),d=!0,s.port1.close(),o()}catch(y){console.error(y),n(y)}finally{d=!0,l()}};let c=window.open(a.toString(),"deepdesk-login","scrollbars=no,left=100,top=150,width=500,height=500");c===null&&n(new Error("Popup blocked by browser"));let u=async m=>{var g;if(m.origin===a.origin)switch((g=m.data)==null?void 0:g.type){case"deepdesk-popup-loaded":{try{let f=JSON.stringify({type:"deepdesk-popup-create-channel"});c==null||c.postMessage(f,a.origin,[s.port2])}catch(f){C.error("Error posting message to popup",f),n(f)}break}case"deepdesk-popup-error":{l(),m.data.message==="Timeout"&&C.warn("Popup timed out. Check if the account's platform url is configured correctly."),n(new Error(m.data.message));break}}};window.addEventListener("message",u);let p=setInterval(()=>{c&&!c.closed||(l(),d||n(new Error("Popup closed by user")))},200);this.unmountHandlers.push(l)})}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(C.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;C.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=ln(this.state);try{o.forEach(({type:n})=>{n==="entities"?this.store.dispatch(ae()):Co.includes(n)||this.store.dispatch(de(n))})}catch(n){this.handleError(n)}}};async function Qv(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},d=()=>{if(o.setValue)return o.setValue(i);t.value=i};return Promise.resolve(d()).then(()=>{t.selectionStart=a.start,t.selectionEnd=a.end,t.blur(),t.focus()})}async function Zv(t,e,o={}){let n=o.replace?ot(t,o.replace.start,o.replace.end):go(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(`
|
|
11
11
|
`).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 Jv(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 Yv(t){let e=document.createDocumentFragment();return t.split(`
|
|
12
12
|
`).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 fu(t,e){let o=t.parentElement;if(!o){console.warn("No insert point found");return}let{display:n}=window.getComputedStyle(o);n.includes("block")||n==="table-cell"?o==null||o.insertBefore(e,t.nextSibling):fu(o,e)}async function eS(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 d=a.getRangeAt(0);if(!d)return;s=document.createElement("span"),d.insertNode(s);let l=n?Jv(e):Yv(e);o?fu(d.startContainer,l):(d.insertNode(l),d.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 tS(t){return t.replace(/\[([\w\s\d]+)\]\((https?:\/\/[^\s]+)\)/g,'<a href="$2" target="_blank" rel="noreferrer">$1</a>')}async function oS(t,e,o){await new Be(t).authenticateWithKey(e,o)}async function nS(t){let o=await new fe(t).get("/platform/config/",{version:null,useCache:!0});return L(o)}async function sS(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 rS(t,e){let o=await sS(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{_ as Card,It as ContentEditableInput,Be as DeepdeskAPI,jn as DeepdeskSDK,fe as HTTPClient,Ke as InputMediator,at as InputType,Jn as KeyboardHint,Yn as Label,wo as Locale,ve as Section,ts as SectionList,Ie as Sources,A as Suggestion,J as SuggestionList,Lt as TextAreaInput,it as ToggleButton,rS as attachFile,oS as authenticateWithKey,go as createFullRange,Gn as createOverlayContainer,ot as createRangeFromOffsets,Qt as escapeHTML,nS as fetchPlatformConfig,tS as formatTextMarkup,Kn as getRangeOffsets,Bn as getRangeText,eS as insertCKEditor,Ms as isHTML,Fr as isSupportedInputElement,Zv as updateContentEditable,Qv as updateTextArea,h as useStyles,zr as waitForElementVisibilityChange};
|