sitemana-widget-embed 0.1.37 → 0.1.38
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/widget.js +1 -1
- package/package.json +1 -1
package/dist/widget.js
CHANGED
|
@@ -3476,7 +3476,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let n="<p>An error
|
|
|
3476
3476
|
max-width: none !important;
|
|
3477
3477
|
}
|
|
3478
3478
|
}
|
|
3479
|
-
`;function Ctr(e){return typeof e=="number"&&!Number.isNaN(e)&&e>=0}function Str(e,t){const r=document.getElementById(e);if(r instanceof HTMLElement)return t(r),()=>{};const n=document.body??document.documentElement;if(!n)return()=>{};let i=!1;const a=new MutationObserver(()=>{if(i)return;const s=document.getElementById(e);s instanceof HTMLElement&&(i=!0,a.disconnect(),t(s))});return a.observe(n,{childList:!0,subtree:!0}),()=>{i=!0,a.disconnect()}}function _tr(e){const[t,r]=(0,Fe.useState)(e==null);return(typeof window>"u"?Fe.useEffect:Fe.useLayoutEffect)(()=>{let n=!1;const i=()=>{n||r(!0)};if(!e)return r(!0),()=>{n=!0};r(!1);let a=()=>{};switch(e.triggerRuleType){case"time_delay":{if(!Ctr(e.timeDelay))return i(),()=>{n=!0};const s=window.setTimeout(i,e.timeDelay*1e3);a=()=>{window.clearTimeout(s)};break}case"scroll_to_bottom":{if(!e.scrollToBottom)return i(),()=>{n=!0};const s=()=>{const o=window.scrollY,l=window.innerHeight,u=document.documentElement.scrollHeight;o+l>=u-1&&i()};s(),window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s),a=()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)};break}case"element_displayed":{if(!e.elementDisplayed)return i(),()=>{n=!0};let s=null;const o=Str(e.elementDisplayed,l=>{s=new IntersectionObserver(u=>{u.some(h=>h.isIntersecting)&&i()}),s.observe(l)});a=()=>{s?.disconnect(),o()};break}case"element_clicked":{if(!e.elementClicked)return i(),()=>{n=!0};const s=`#${CSS.escape(e.elementClicked)}`,o=l=>{const u=l.target;u instanceof Element&&u.closest(s)&&i()};document.addEventListener("click",o,!0),a=()=>{document.removeEventListener("click",o,!0)};break}default:return i(),()=>{n=!0}}return()=>{n=!0,a()}},[e]),{ready:t||e==null}}var Atr={default:fot,box:btr,chatbar:ktr};function Ltr({mode:e,agentId:t,variant:r,placement:n,appearance:i,agentAvatarUrl:a,widgetTitle:s,spotlights:o,open:l,status:u,messages:h,errorMessage:d,triggerRule:f,emptyAction:p,sendDisabled:g=!1,onOpenChange:y,onSendMessage:b,onStopConversation:T,onConfirmationDecision:w,portalContainer:x,onWidgetVisible:C,onLinkClick:R,onLauncherClick:_}){const{ready:S}=_tr(f),{horizontal:A,vertical:M}=wue(n),O=Atr[r]??fot,P=Rtr(e,n),H=a?.trim()||void 0,L=Syt(h)!=null,$=L||u==="booting"||u==="sending",I=g||L||u==="booting",B=Fe.useRef(!1);return Fe.useEffect(()=>{e!=="embed"||!S||B.current||(B.current=!0,C?.(f?.triggerRuleType??null))},[e,C,S,f]),S?(0,rt.jsxs)(rt.Fragment,{children:[(0,rt.jsx)("style",{children:Etr}),(0,rt.jsx)("div",{"data-agent-id":t,"data-mode":e,"data-horizontal":A,"data-vertical":M,"data-variant":r,"data-open":String(l),"data-status":u,style:P,className:"widget-shell",children:(0,rt.jsx)("div",{style:{pointerEvents:"auto"},children:(0,rt.jsx)(O,{agentName:s,agentAvatarUrl:H,appearance:i,spotlightMessages:o,messages:h,status:u,errorMessage:d,emptyAction:p,sendDisabled:I,onSendMessage:b,open:l,onOpenChange:y,onStopConversation:T,stopDisabled:$,onConfirmationDecision:w,onLauncherClick:_,onLinkClick:R,portalContainer:x})})})]}):null}function Rtr(e,t){const r={pointerEvents:"none"};if(e==="preview"){const{horizontal:n,vertical:i}=wue(t);return Object.assign(r,{position:"relative",display:"flex",width:"100%",minHeight:"720px",padding:"24px",overflow:"hidden",alignItems:i==="top"?"flex-start":"flex-end",justifyContent:n==="left"?"flex-start":n==="center"?"center":"flex-end"}),r}switch(Object.assign(r,{position:"fixed",zIndex:2147483646}),t){case"top-left":Object.assign(r,{left:"24px",top:"24px"});break;case"top-center":Object.assign(r,{left:"50%",top:"24px",transform:"translateX(-50%)"});break;case"top-right":Object.assign(r,{right:"24px",top:"24px"});break;case"bottom-left":Object.assign(r,{left:"24px",bottom:"24px"});break;case"bottom-center":Object.assign(r,{left:"50%",bottom:"24px",transform:"translateX(-50%)"});break;default:Object.assign(r,{right:"24px",bottom:"24px"});break}return r}function yot(e){const t=e?.trim();return t?t.replace(/\/+$/,""):null}function vot(){const e="https://api-dev.usereq.com",t=globalThis.__SITEMANA_WIDGET_API_BASE__;return yot(e)??yot(t)??"http://localhost:4000"}async function YT(e,t){const r=await fetch(new URL(e,`${vot()}/`).toString(),{...t,headers:{"Content-Type":"application/json",...t.headers??{}},credentials:"omit"}),n=await r.text(),i=n?JSON.parse(n):null;if(!r.ok)throw new Error(typeof i=="object"&&i&&"error"in i?String(i.error??r.statusText):r.statusText);return i}async function Ntr(e){return YT("/api/widget/sessions",{method:"POST",body:JSON.stringify(e)})}async function Dtr(e){return YT("/api/conversations/public/start",{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({agentId:e.agentId})})}async function Itr(e){return YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Mtr(e){return YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Otr(e){return YT("/api/conversations/public/current",{method:"GET",headers:{Authorization:`Bearer ${e}`}})}async function Ptr(e){const t=new URLSearchParams;return e.cursor&&t.set("cursor",e.cursor),YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages?${t.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${e.sessionToken}`}})}function dle(e){return`sitemana-widget:${e}`}function Btr(e){try{const t=sessionStorage.getItem(dle(e));if(!t)return null;const r=JSON.parse(t);return!r?.sessionToken||!r?.expiresAt||!r?.widgetConfig?.agentId||!r?.widgetConfig?.name?null:r}catch{return null}}function zO(e,t){sessionStorage.setItem(dle(e),JSON.stringify(t))}function $tr(e){sessionStorage.removeItem(dle(e))}function UO(e){return[...e].sort((t,r)=>new Date(t.createdAt).getTime()-new Date(r.createdAt).getTime())}var bot={loadSession:Btr,saveSession:zO,mintWidgetSession:Ntr,getCurrentConversation:Otr,listConversationMessages:Ptr,getOrigin:()=>window.location.origin,now:()=>Date.now()};function Ftr(e,t=Date.now()){if(!e)return!1;const r=new Date(e.expiresAt).getTime();return Number.isFinite(r)&&r>t}async function HO(e,t=bot){const r=t.loadSession(e.agentId);if(Ftr(r,t.now()))return r;const n=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),i={sessionToken:n.sessionToken,expiresAt:n.expiresAt,widgetConfig:n.widgetConfig};return t.saveSession(e.agentId,i),i}async function ztr(e,t){const r=await HO(e,t);let n=r.conversationId,i=[];if(n)try{i=UO((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data)}catch{n=void 0,i=[]}else try{n=(await t.getCurrentConversation(r.sessionToken)).conversation?.id??void 0,n&&(i=UO((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data))}catch{n=void 0,i=[]}const a={...r,conversationId:n};return t.saveSession(e.agentId,a),{session:a,conversationId:n,messages:i}}async function Utr(e){return ztr(e,bot)}async function Htr(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=await Itr({conversationId:t.conversationId,sessionToken:t.sessionToken,content:e.content}),n={...t,conversationId:t.conversationId};return zO(e.agentId,n),{session:n,conversationId:t.conversationId,messages:UO([r.userMessage,...r.assistantMessages]),userMessage:r.userMessage,assistantMessages:r.assistantMessages}}async function xot(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=e.decision!=null?Eyt({confirmationId:e.confirmationId,decision:e.decision}):kyt({confirmationId:e.confirmationId,prompt:e.prompt}),n=await Mtr({conversationId:t.conversationId,sessionToken:t.sessionToken,content:r}),i={...t,conversationId:t.conversationId};return zO(e.agentId,i),{session:i,conversationId:t.conversationId,confirmationMessage:n.confirmationMessage}}async function Vtr(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0}),r=await Dtr({agentId:e.agentId,sessionToken:t.sessionToken}),n={...t,conversationId:r.conversation.id};return zO(e.agentId,n),{session:n,conversationId:r.conversation.id,messages:UO([r.welcomeMessage]),welcomeMessage:r.welcomeMessage}}async function qtr(e){$tr(e)}var Gtr="/api/widget/events/batch",Wtr=10,Ytr=2500,Tot="sitemana-widget:unique-script-loaded:",jtr=class{mode;agentId;getSession;getConversationId;batchSize;flushIntervalMs;uniqueScriptSeen=new Set;flushTimer=null;queue=[];disposed=!1;constructor(e){this.mode=e.mode,this.agentId=e.agentId,this.getSession=e.getSession,this.getConversationId=e.getConversationId,this.batchSize=Math.max(1,e.batchSize??Wtr),this.flushIntervalMs=Math.max(200,e.flushIntervalMs??Ytr),this.mode==="embed"&&(window.addEventListener("pagehide",this.handlePageHide,{capture:!0}),document.addEventListener("visibilitychange",this.handleVisibilityChange,!0))}dispose(){this.disposed||(this.disposed=!0,this.clearFlushTimer(),window.removeEventListener("pagehide",this.handlePageHide,!0),document.removeEventListener("visibilitychange",this.handleVisibilityChange,!0),this.flush({transport:"beacon"}))}trackScriptLoaded(){this.track({eventType:"SCRIPT_LOADED"})}trackUniqueScriptLoaded(){const e=this.getSession()?.sessionToken?.trim();if(!e)return;const t=`${this.agentId}:${e}`;if(!this.uniqueScriptSeen.has(t)){if(this.hasSessionUniqueScriptLoaded(t)){this.uniqueScriptSeen.add(t);return}this.uniqueScriptSeen.add(t),this.setSessionUniqueScriptLoaded(t),this.track({eventType:"UNIQUE_SCRIPT_LOADED"})}}trackView(e){this.track({eventType:"VIEW",triggerRuleType:e}),e==="element_displayed"&&this.track({eventType:"DISPLAY_AFTER_ELEMENT_SHOWED",triggerRuleType:e})}trackClick(){this.track({eventType:"CLICK"})}trackLinkClicked(e){const t=e.trim();t&&this.track({eventType:"LINK_CLICKED",linkUrl:t})}track(e){if(this.disposed||this.mode!=="embed")return;const t=this.getSession()?.sessionToken?.trim();if(!t)return;const r={...e,occurredAt:e.occurredAt??new Date().toISOString(),conversationId:e.conversationId??this.getConversationId()??null};if(this.queue.push({event:r,sessionToken:t}),this.queue.length>=this.batchSize){this.flush();return}this.scheduleFlush()}async flush(e){if(this.disposed||this.queue.length===0)return;this.clearFlushTimer();const t=e?.transport??"default",r=this.queue;this.queue=[];const n=new Map;for(const a of r){const s=n.get(a.sessionToken);s?s.push(a.event):n.set(a.sessionToken,[a.event])}const i=[];for(const[a,s]of n.entries())if(!await this.sendBatch({events:s,sessionToken:a,transport:t}))for(const o of s)i.push({event:o,sessionToken:a});i.length>0&&(this.queue=[...i,...this.queue],this.scheduleFlush())}async sendBatch(e){if(e.events.length===0)return!0;const t=new URL(Gtr,`${vot()}/`).toString(),r={events:e.events,pageUrl:window.location.href,referrer:document.referrer||void 0,sessionToken:e.sessionToken};if(e.transport==="beacon"&&typeof navigator.sendBeacon=="function"){const n=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(t,n))return!0}try{return(await fetch(t,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`,"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"omit",keepalive:e.transport==="beacon"})).ok}catch{return!1}}scheduleFlush(){this.flushTimer==null&&(this.flushTimer=window.setTimeout(()=>{this.flushTimer=null,this.flush()},this.flushIntervalMs))}clearFlushTimer(){this.flushTimer!=null&&(window.clearTimeout(this.flushTimer),this.flushTimer=null)}hasSessionUniqueScriptLoaded(e){try{return sessionStorage.getItem(`${Tot}${e}`)==="1"}catch{return!1}}setSessionUniqueScriptLoaded(e){try{sessionStorage.setItem(`${Tot}${e}`,"1")}catch{}}handlePageHide=()=>{this.flush({transport:"beacon"})};handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flush({transport:"beacon"})}};function Xtr(e){return new jtr(e)}var Ktr=`
|
|
3479
|
+
`;function Ctr(e){return typeof e=="number"&&!Number.isNaN(e)&&e>=0}function Str(e,t){const r=document.getElementById(e);if(r instanceof HTMLElement)return t(r),()=>{};const n=document.body??document.documentElement;if(!n)return()=>{};let i=!1;const a=new MutationObserver(()=>{if(i)return;const s=document.getElementById(e);s instanceof HTMLElement&&(i=!0,a.disconnect(),t(s))});return a.observe(n,{childList:!0,subtree:!0}),()=>{i=!0,a.disconnect()}}function _tr(e){const[t,r]=(0,Fe.useState)(e==null);return(typeof window>"u"?Fe.useEffect:Fe.useLayoutEffect)(()=>{let n=!1;const i=()=>{n||r(!0)};if(!e)return r(!0),()=>{n=!0};r(!1);let a=()=>{};switch(e.triggerRuleType){case"time_delay":{if(!Ctr(e.timeDelay))return i(),()=>{n=!0};const s=window.setTimeout(i,e.timeDelay*1e3);a=()=>{window.clearTimeout(s)};break}case"scroll_to_bottom":{if(!e.scrollToBottom)return i(),()=>{n=!0};const s=()=>{const o=window.scrollY,l=window.innerHeight,u=document.documentElement.scrollHeight;o+l>=u-1&&i()};s(),window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s),a=()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)};break}case"element_displayed":{if(!e.elementDisplayed)return i(),()=>{n=!0};let s=null;const o=Str(e.elementDisplayed,l=>{s=new IntersectionObserver(u=>{u.some(h=>h.isIntersecting)&&i()}),s.observe(l)});a=()=>{s?.disconnect(),o()};break}case"element_clicked":{if(!e.elementClicked)return i(),()=>{n=!0};const s=`#${CSS.escape(e.elementClicked)}`,o=l=>{const u=l.target;u instanceof Element&&u.closest(s)&&i()};document.addEventListener("click",o,!0),a=()=>{document.removeEventListener("click",o,!0)};break}default:return i(),()=>{n=!0}}return()=>{n=!0,a()}},[e]),{ready:t||e==null}}var Atr={default:fot,box:btr,chatbar:ktr};function Ltr({mode:e,agentId:t,variant:r,placement:n,appearance:i,agentAvatarUrl:a,widgetTitle:s,spotlights:o,open:l,status:u,messages:h,errorMessage:d,triggerRule:f,emptyAction:p,sendDisabled:g=!1,onOpenChange:y,onSendMessage:b,onStopConversation:T,onConfirmationDecision:w,portalContainer:x,onWidgetVisible:C,onLinkClick:R,onLauncherClick:_}){const{ready:S}=_tr(f),{horizontal:A,vertical:M}=wue(n),O=Atr[r]??fot,P=Rtr(e,n),H=a?.trim()||void 0,L=Syt(h)!=null,$=L||u==="booting"||u==="sending",I=g||L||u==="booting",B=Fe.useRef(!1);return Fe.useEffect(()=>{e!=="embed"||!S||B.current||(B.current=!0,C?.(f?.triggerRuleType??null))},[e,C,S,f]),S?(0,rt.jsxs)(rt.Fragment,{children:[(0,rt.jsx)("style",{children:Etr}),(0,rt.jsx)("div",{"data-agent-id":t,"data-mode":e,"data-horizontal":A,"data-vertical":M,"data-variant":r,"data-open":String(l),"data-status":u,style:P,className:"widget-shell",children:(0,rt.jsx)("div",{style:{pointerEvents:"auto"},children:(0,rt.jsx)(O,{agentName:s,agentAvatarUrl:H,appearance:i,spotlightMessages:o,messages:h,status:u,errorMessage:d,emptyAction:p,sendDisabled:I,onSendMessage:b,open:l,onOpenChange:y,onStopConversation:T,stopDisabled:$,onConfirmationDecision:w,onLauncherClick:_,onLinkClick:R,portalContainer:x})})})]}):null}function Rtr(e,t){const r={pointerEvents:"none"};if(e==="preview"){const{horizontal:n,vertical:i}=wue(t);return Object.assign(r,{position:"relative",display:"flex",width:"100%",minHeight:"720px",padding:"24px",overflow:"hidden",alignItems:i==="top"?"flex-start":"flex-end",justifyContent:n==="left"?"flex-start":n==="center"?"center":"flex-end"}),r}switch(Object.assign(r,{position:"fixed",zIndex:2147483646}),t){case"top-left":Object.assign(r,{left:"24px",top:"24px"});break;case"top-center":Object.assign(r,{left:"50%",top:"24px",transform:"translateX(-50%)"});break;case"top-right":Object.assign(r,{right:"24px",top:"24px"});break;case"bottom-left":Object.assign(r,{left:"24px",bottom:"24px"});break;case"bottom-center":Object.assign(r,{left:"50%",bottom:"24px",transform:"translateX(-50%)"});break;default:Object.assign(r,{right:"24px",bottom:"24px"});break}return r}function yot(e){const t=e?.trim();return t?t.replace(/\/+$/,""):null}function vot(){const e="https://api-dev.usereq.com",t=globalThis.__SITEMANA_WIDGET_API_BASE__;return yot(e)??yot(t)??"http://localhost:4000"}async function YT(e,t){const r=await fetch(new URL(e,`${vot()}/`).toString(),{...t,headers:{"Content-Type":"application/json",...t.headers??{}},credentials:"omit"}),n=await r.text(),i=n?JSON.parse(n):null;if(!r.ok)throw new Error(typeof i=="object"&&i&&"error"in i?String(i.error??r.statusText):r.statusText);return i}async function Ntr(e){return YT("/api/widget/sessions",{method:"POST",body:JSON.stringify(e)})}async function Dtr(e){return YT("/api/conversations/public/start",{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({agentId:e.agentId})})}async function Itr(e){return YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Mtr(e){return YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Otr(e){return YT("/api/conversations/public/current",{method:"GET",headers:{Authorization:`Bearer ${e}`}})}async function Ptr(e){const t=new URLSearchParams;return e.cursor&&t.set("cursor",e.cursor),YT(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages?${t.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${e.sessionToken}`}})}function dle(e){return`sitemana-widget:${e}`}function Btr(e){try{const t=sessionStorage.getItem(dle(e));if(!t)return null;const r=JSON.parse(t);return!r?.sessionToken||!r?.expiresAt||!r?.widgetConfig?.agentId||!r?.widgetConfig?.name?null:r}catch{return null}}function zO(e,t){sessionStorage.setItem(dle(e),JSON.stringify(t))}function $tr(e){sessionStorage.removeItem(dle(e))}function UO(e){return[...e].sort((t,r)=>new Date(t.createdAt).getTime()-new Date(r.createdAt).getTime())}var bot={loadSession:Btr,saveSession:zO,mintWidgetSession:Ntr,getCurrentConversation:Otr,listConversationMessages:Ptr,getOrigin:()=>window.location.origin,now:()=>Date.now()};function Ftr(e,t=Date.now()){if(!e)return!1;const r=new Date(e.expiresAt).getTime();return Number.isFinite(r)&&r>t}async function HO(e,t=bot){const r=t.loadSession(e.agentId);if(Ftr(r,t.now()))return r;const n=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),i={sessionToken:n.sessionToken,expiresAt:n.expiresAt,widgetConfig:n.widgetConfig};return t.saveSession(e.agentId,i),i}async function ztr(e,t){const r=await HO(e,t);let n=r.conversationId,i=[];if(n)try{i=UO((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data)}catch{n=void 0,i=[]}else try{n=(await t.getCurrentConversation(r.sessionToken)).conversation?.id??void 0,n&&(i=UO((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data))}catch{n=void 0,i=[]}const a={...r,conversationId:n};return t.saveSession(e.agentId,a),{session:a,conversationId:n,messages:i}}async function Utr(e){return ztr(e,bot)}async function Htr(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=await Itr({conversationId:t.conversationId,sessionToken:t.sessionToken,content:e.content}),n={...t,conversationId:t.conversationId};return zO(e.agentId,n),{session:n,conversationId:t.conversationId,messages:UO([r.userMessage,...r.assistantMessages]),userMessage:r.userMessage,assistantMessages:r.assistantMessages}}async function xot(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=e.decision!=null?Eyt({confirmationId:e.confirmationId,decision:e.decision}):kyt({confirmationId:e.confirmationId,prompt:e.prompt}),n=await Mtr({conversationId:t.conversationId,sessionToken:t.sessionToken,content:r}),i={...t,conversationId:t.conversationId};return zO(e.agentId,i),{session:i,conversationId:t.conversationId,confirmationMessage:n.confirmationMessage}}async function Vtr(e){const t=await HO({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0}),r=await Dtr({agentId:e.agentId,sessionToken:t.sessionToken}),n={...t,conversationId:r.conversation.id};return zO(e.agentId,n),{session:n,conversationId:r.conversation.id,messages:UO([r.welcomeMessage]),welcomeMessage:r.welcomeMessage}}async function qtr(e){$tr(e)}var Gtr="/api/widget/events/batch",Wtr=10,Ytr=2500,Tot="sitemana-widget:unique-script-loaded:",jtr=class{mode;agentId;getSession;getConversationId;batchSize;flushIntervalMs;uniqueScriptSeen=new Set;flushTimer=null;queue=[];disposed=!1;constructor(e){this.mode=e.mode,this.agentId=e.agentId,this.getSession=e.getSession,this.getConversationId=e.getConversationId,this.batchSize=Math.max(1,e.batchSize??Wtr),this.flushIntervalMs=Math.max(200,e.flushIntervalMs??Ytr),this.mode==="embed"&&(window.addEventListener("pagehide",this.handlePageHide,{capture:!0}),document.addEventListener("visibilitychange",this.handleVisibilityChange,!0))}dispose(){this.disposed||(this.disposed=!0,this.clearFlushTimer(),window.removeEventListener("pagehide",this.handlePageHide,!0),document.removeEventListener("visibilitychange",this.handleVisibilityChange,!0),this.flush({transport:"beacon"}))}trackScriptLoaded(){this.track({eventType:"SCRIPT_LOADED"})}trackUniqueScriptLoaded(){const e=this.getSession()?.sessionToken?.trim();if(!e)return;const t=`${this.agentId}:${e}`;if(!this.uniqueScriptSeen.has(t)){if(this.hasSessionUniqueScriptLoaded(t)){this.uniqueScriptSeen.add(t);return}this.uniqueScriptSeen.add(t),this.setSessionUniqueScriptLoaded(t),this.track({eventType:"UNIQUE_SCRIPT_LOADED"})}}trackView(e){this.track({eventType:"VIEW",triggerRuleType:e}),e==="element_displayed"&&this.track({eventType:"DISPLAY_AFTER_ELEMENT_SHOWED",triggerRuleType:e})}trackClick(){this.track({eventType:"CLICK"})}trackLinkClicked(e){const t=e.trim();t&&this.track({eventType:"LINK_CLICKED",linkUrl:t})}track(e){if(this.disposed||this.mode!=="embed")return;const t=this.getSession()?.sessionToken?.trim();if(!t)return;const r=e.conversationId??this.getConversationId(),n={...e,occurredAt:e.occurredAt??new Date().toISOString(),...r?{conversationId:r}:{},...e.triggerRuleType?{triggerRuleType:e.triggerRuleType}:{},...e.linkUrl?{linkUrl:e.linkUrl}:{}};if(this.queue.push({event:n,sessionToken:t}),this.queue.length>=this.batchSize){this.flush();return}this.scheduleFlush()}async flush(e){if(this.disposed||this.queue.length===0)return;this.clearFlushTimer();const t=e?.transport??"default",r=this.queue;this.queue=[];const n=new Map;for(const a of r){const s=n.get(a.sessionToken);s?s.push(a.event):n.set(a.sessionToken,[a.event])}const i=[];for(const[a,s]of n.entries())if(!await this.sendBatch({events:s,sessionToken:a,transport:t}))for(const o of s)i.push({event:o,sessionToken:a});i.length>0&&(this.queue=[...i,...this.queue],this.scheduleFlush())}async sendBatch(e){if(e.events.length===0)return!0;const t=new URL(Gtr,`${vot()}/`).toString(),r={events:e.events,pageUrl:window.location.href,referrer:document.referrer||void 0,sessionToken:e.sessionToken};if(e.transport==="beacon"&&typeof navigator.sendBeacon=="function"){const n=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(t,n))return!0}try{return(await fetch(t,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`,"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"omit",keepalive:e.transport==="beacon"})).ok}catch{return!1}}scheduleFlush(){this.flushTimer==null&&(this.flushTimer=window.setTimeout(()=>{this.flushTimer=null,this.flush()},this.flushIntervalMs))}clearFlushTimer(){this.flushTimer!=null&&(window.clearTimeout(this.flushTimer),this.flushTimer=null)}hasSessionUniqueScriptLoaded(e){try{return sessionStorage.getItem(`${Tot}${e}`)==="1"}catch{return!1}}setSessionUniqueScriptLoaded(e){try{sessionStorage.setItem(`${Tot}${e}`,"1")}catch{}}handlePageHide=()=>{this.flush({transport:"beacon"})};handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flush({transport:"beacon"})}};function Xtr(e){return new jtr(e)}var Ktr=`
|
|
3480
3480
|
:host {
|
|
3481
3481
|
color-scheme: light;
|
|
3482
3482
|
--tw-border-style: solid;
|