@chatsystem/client 1.1.86 → 1.1.87

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 CHANGED
@@ -101,14 +101,14 @@ For more details see https://formatjs.io/docs/getting-started/message-distributi
101
101
  dark:bg-white
102
102
  transition-colors
103
103
  chatsystem-paperplane-button
104
- ${n??""}`,"data-testid":"send-button",onClick:e,disabled:t,type:"button","aria-label":"Send message",children:x.jsx("span",{className:"","data-state":"closed",children:x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",className:"text-white dark:text-black",children:[x.jsx("path",{d:"M3 20L21 12L3 4L7.5 12L3 20Z",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round"}),x.jsx("path",{d:"M7.5 12H14.75",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})})})});var lt=(e=>(e.FRENCH="fr-FR",e.ENGLISH="en-US",e))(lt||{});const gx={"generic.language.english":"English","generic.language.french":"French","chatbot.placeholder.content":"Message...","chatbot.DiscussionLimitReached.title":"Discussion limit reached","chatbot.DiscussionLimitReached.explaination":"The discussion has reached its maximum number of messages. Please start a new one.","chatbot.DiscussionLimitReached.cta":"Restart","chatbot.error.api.409":"Oups ! The discussion if full. Please start a new one.","chatbot.error.api.429":"⏳ The chatbot is a little busy at the time. Please try again later.","chatbot.error.api.500":"Oops ! There has been an error. Please try again later.","chatbot.chatline.label.user":"You","chatbot.chatline.label.assistant":"Assistant","chatbot.chatline.label.customerSupport":"Customer support","chatbot.chatline.loading.function.genericSearchMessage":"Thinking ...","chatbot.chatline.loading.function.search":"Search","chatbot.chatline.loading.function.extractProductName":"Looking into the cavern","chatbot.chatline.loading.function.suggestProductName":"Consulting the shadocks","chatbot.chatline.loading.function.criteriaDefinition":"Looking for ziboublis","chatbot.chatline.loading.function.searchStock":"Searching Stock","chatbot.chatline.loading.function.step":"Step","chatbot.chatline.loading.stepName.search":"Searching ...","chatbot.chatline.loading.stepName.building":"Building Query ...","chatbot.chatline.loading.stepName.analyzing":"Analyzing ...","chatbot.chatline.loading.stepName.redacting":"Writing answer","chatbot.chatline.loading.cancel":"Cancel","chatbot.chatline.seeRecentMessages":"see recent messages","chatbot.widget.menu.open":"Open chat menu","chatbot.widget.menu.startNewDiscussion":"Start a new discussion","chatbot.widget.close":"Close chat","recordingOverlay.recording":"Recording...","recordingOverlay.cancel":"Cancel","recordingOverlay.explaination":"Tap the mic to stop","chatbot.infobanner.title":"You have an archived discussion.","chatbot.infobanner.cta":"See","chatbot.customerSupport.connecting":"Transferring your request to customer support...","chatbot.customerSupport.connected":"Your request has been sent to Customer Support. It usually takes a few minutes to get a reply. Thank you for waiting.","chatbot.customerSupport.connectionError":"Customer support is not available right now. Please try again later.","chatbot.customerSupport.providerUnavailable":"Customer support received your request, but live replies are temporarily unavailable. Please try again shortly.","chatbot.customerSupport.closed":"Your customer support conversation is now complete. Start a new conversation if you need more help!","chatbot.customerSupport.restart":"Restart","chatbot.customerSupport.fallback.title":"Leave your contact details","chatbot.customerSupport.fallback.description":"Customer support has not replied yet. Leave your email and phone number and we will contact you soon.","chatbot.customerSupport.fallback.email":"Email","chatbot.customerSupport.fallback.phone":"Phone","chatbot.customerSupport.fallback.submit":"Send","chatbot.customerSupport.fallback.submitting":"Sending...","chatbot.customerSupport.fallback.success":"Your contact details have been saved. Customer support will contact you soon.","chatbot.customerSupport.closedHours.title":"Customer support is currently closed","chatbot.customerSupport.closedHours.description":"Leave your email, phone number and request. Customer support will contact you during opening hours.","chatbot.customerSupport.closedHours.schedulePrefix":"Today:","chatbot.customerSupport.closedHours.reason":"Reason for your request","chatbot.customerSupport.closedHours.success":"Your request has been saved. Customer support will contact you during opening hours.","chatbot.customerSupport.fallback.error":"We could not save your contact details. Please try again."},bx={"generic.language.english":"Anglais","generic.language.french":"Français","chatbot.placeholder.content":"Message...","chatbot.DiscussionLimitReached.title":"Maximum de messages envoyés atteint.","chatbot.DiscussionLimitReached.explaination":"Le robot est à son maximum et ne peut plus envoyer de message. Merci de relancer une conversation.","chatbot.DiscussionLimitReached.cta":"Relancer une nouvelle conversation","chatbot.error.api.409":"Oups ! La discussion est à son maximum. Merci d'en commencer une nouvelle.","chatbot.error.api.429":"⏳ Le robot est un peu occupé actuellement. Merci de réessayer plus tard.","chatbot.error.api.500":"Oups ! Une erreur est survenue. Merci de réessayer plus tard !","chatbot.chatline.label.user":"Vous","chatbot.chatline.label.assistant":"Assistant","chatbot.chatline.label.customerSupport":"Support client","chatbot.chatline.loading.function.search":"Recherche","chatbot.chatline.loading.function.genericSearchMessage":"Je réfléchis ...","chatbot.chatline.loading.function.extractProductName":"Recherche dans la caverne","chatbot.chatline.loading.function.suggestProductName":"Consultation des shadocks","chatbot.chatline.loading.function.criteriaDefinition":"Recherche des ziboublis","chatbot.chatline.loading.function.searchStock":"Recherche en stock","chatbot.chatline.loading.function.step":"Etape","chatbot.chatline.loading.stepName.search":"Recherche ...","chatbot.chatline.loading.stepName.building":"Construction ...","chatbot.chatline.loading.stepName.analyzing":"Analyse ...","chatbot.chatline.loading.stepName.redacting":"Rédaction","chatbot.chatline.loading.cancel":"Annuler","chatbot.chatline.seeRecentMessages":"voir les messages plus récents","chatbot.widget.menu.open":"Ouvrir le menu de discussion","chatbot.widget.menu.startNewDiscussion":"Démarrer une nouvelle discussion","chatbot.widget.close":"Fermer la discussion","recordingOverlay.recording":"Micro activé...","recordingOverlay.cancel":"Annuler","recordingOverlay.explaination":"Appuyez sur le micro pour arrêter","chatbot.infobanner.title":"Vous avez une conversation archivée.","chatbot.infobanner.cta":"Voir","chatbot.customerSupport.connecting":"Transfert de votre demande au support client...","chatbot.customerSupport.connected":"Votre demande a été transmise au support client. Il faut généralement quelques minutes pour obtenir une réponse. Merci de patienter.","chatbot.customerSupport.connectionError":"Le support client n'est pas disponible pour le moment. Merci de réessayer plus tard.","chatbot.customerSupport.providerUnavailable":"Le support client a reçu votre demande, mais les réponses en direct sont temporairement indisponibles. Merci de réessayer dans quelques instants.","chatbot.customerSupport.closed":"Votre échange avec le support client est terminé. Relancez une nouvelle conversation quand vous le souhaitez !","chatbot.customerSupport.restart":"Relancer","chatbot.customerSupport.fallback.title":"Laissez vos coordonnées","chatbot.customerSupport.fallback.description":"Le support client n'a pas encore répondu. Laissez votre email et votre téléphone, nous vous recontacterons prochainement.","chatbot.customerSupport.fallback.email":"Email","chatbot.customerSupport.fallback.phone":"Téléphone","chatbot.customerSupport.fallback.submit":"Envoyer","chatbot.customerSupport.fallback.submitting":"Envoi...","chatbot.customerSupport.fallback.success":"Vos coordonnées ont bien été notées. Le support client vous recontactera prochainement.","chatbot.customerSupport.closedHours.title":"Le support client est actuellement fermé","chatbot.customerSupport.closedHours.description":"Laissez votre email, votre téléphone et le motif de votre demande. Le support client vous recontactera pendant ses horaires d’ouverture.","chatbot.customerSupport.closedHours.schedulePrefix":"Aujourd’hui :","chatbot.customerSupport.closedHours.reason":"Motif de votre demande","chatbot.customerSupport.closedHours.success":"Votre demande a bien été enregistrée. Le support client vous recontactera pendant ses horaires d’ouverture.","chatbot.customerSupport.fallback.error":"Impossible d'enregistrer vos coordonnées. Merci de réessayer."},Zr={[lt.ENGLISH]:{translatedText:gx,pictureName:lt.ENGLISH,langID:0,locale:lt.ENGLISH},[lt.FRENCH]:{translatedText:bx,pictureName:lt.FRENCH,langID:1,locale:lt.FRENCH}},Ex=Object.keys(Zr);Ex.reduce((e,t)=>{const n=Zr[t];return[...e,n]},[]);const Tx="languageSettings",Vc=C.createContext({appCurrentLang:Zr[lt.ENGLISH],setAppCurrentLang:()=>{}}),yx=e=>e.filter(t=>t.userType==="user").length;var ba=(e=>(e.GET_DISCUSSION_ID="/id",e.RESET_DISCUSSION="/delete",e))(ba||{});const xx=e=>!!e.startsWith("/"),Sx=(e,t,n)=>e===ba.GET_DISCUSSION_ID?t?`Votre ID de discussion est ${t}`:"Votre ID de discussion n'est pas encore défini. Envoyez un premier message pour que ce soit le cas.":e===ba.RESET_DISCUSSION?(n(),null):`La commande ${e} n'est pas prise en compte.`;class Lt{static pending="";constructor(){}static transformNDJSONChunkIntoObjects(t){const n=vt();this.pending+=t;const r=this.pending.split(/\r?\n/);this.pending=r.pop()??"";const i=[];for(const a of r){const s=a.trim();if(s)try{i.push(JSON.parse(s))}catch{n.warn("[NDJSON] Could not parse line:",s)}}return i}static flushPending(){const t=this.pending.trim();if(this.pending="",!t)return[];try{return[JSON.parse(t)]}catch{return[]}}static isObjectOutputstreamMessageDeltaDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_DELTA;static isObjectOutputstreamMessageStartDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_START;static isObjectOutputstreamMessageEndDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_END;static isObjectOutputstreamErrorDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_ERROR;static isObjectOutputstreamClientEventDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CLIENT_EVENT;static isObjectOutputstreamLoadingNumberOfStepsDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_NUMBER_OF_STEPS_TYPE;static isObjectOutputstreamLoadingCurrentStepNumberDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CURRENT_STEP_NUMBER_TYPE;static isObjectOutputstreamLoadingCurrentStepNameDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CURRENT_STEP_NAME_TYPE;static containsObjectWithLastAnswerToTrue=t=>{for(const n of t)if(this.isObjectOutputstreamMessageEndDTO(n)&&n.isLastAnswer)return!0;return!1}}const _x=e=>{if(!ce.isUnknownRecord(e))return;const t=ce.readOptionalNumber(e.timeoutMinutes)??ce.DIRECT_CHAT_CUSTOMER_SUPPORT_FALLBACK_CONTACT_CAPTURE_DEFAULT_TIMEOUT_MINUTES;return{enabled:e.enabled===!0,timeoutMinutes:Math.max(1,Math.min(120,Math.round(t))),requireEmail:e.requireEmail!==!1,requirePhone:e.requirePhone!==!1}},Cx=e=>{if(ce.isUnknownRecord(e))return{enabled:e.enabled!==!1,requireEmail:e.requireEmail!==!1,requirePhone:e.requirePhone!==!1,requireReason:e.requireReason!==!1}},Ax=e=>{if(!ce.isUnknownRecord(e))return null;const t=e;if(t.type!=="interactive_widget_request"||t.event!=="interactiveWidget.requested"||t.widgetType!==ce.INTERACTIVE_WIDGET_TYPES.directChatCustomerSupport||!ce.isUnknownRecord(t.payload))return null;const n=t.payload;if((ce.readOptionalString(n.mode)??"live_chat")==="closed_hours_contact_capture"){const s=ce.readOptionalString(n.reconnectToken),o=ce.readOptionalNumber(n.customerSupportSessionId),u=Cx(n.closedHoursContactCapture);if(n.transport!=="none"||!s||!o||!u||!u.enabled)return null;const c=ce.isUnknownRecord(n.businessHours)?n.businessHours:{};return{mode:"closed_hours_contact_capture",transport:"none",reconnectToken:s,reconnectTokenExpiresAt:ce.readOptionalString(n.reconnectTokenExpiresAt),customerSupportSessionId:o,companyId:ce.readOptionalNumber(t.companyId),agentId:ce.readOptionalNullableNumber(t.agentId),discussionId:ce.readOptionalNullableNumber(t.discussionId)??null,toolcallId:ce.readOptionalNullableString(t.toolcallId),closedHoursContactCapture:u,businessHours:{timezone:ce.readOptionalString(c.timezone)??ce.DIRECT_CHAT_CUSTOMER_SUPPORT_DEFAULT_BUSINESS_HOURS_TIMEZONE,todayScheduleLabel:ce.readOptionalString(c.todayScheduleLabel)}}}if(n.transport!=="socket"||typeof n.socketUrl!="string")return null;const i=ce.readOptionalString(n.handoffToken),a=ce.readOptionalString(n.reconnectToken);return!i&&!a?null:{mode:"live_chat",transport:"socket",socketUrl:n.socketUrl,handoffToken:i,reconnectToken:a,reconnectTokenExpiresAt:ce.readOptionalString(n.reconnectTokenExpiresAt),customerSupportSessionId:ce.readOptionalNumber(n.customerSupportSessionId),companyId:ce.readOptionalNumber(t.companyId),agentId:ce.readOptionalNullableNumber(t.agentId),discussionId:ce.readOptionalNullableNumber(t.discussionId)??null,toolcallId:ce.readOptionalNullableString(t.toolcallId),fallbackContactCapture:_x(n.fallbackContactCapture)}},wx=e=>Ax(e),vx=e=>{const t=wx(e.payload);return t?{type:"customer_support_handoff_requested",payload:t}:{type:"unhandled_client_event",event:e}},Ix=1e4,kx=e=>{const t=new URL(e);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t},Nx=({apiUrl:e,handoff:t})=>(t.socketUrl.startsWith("ws://")||t.socketUrl.startsWith("wss://")?new URL(t.socketUrl):new URL(t.socketUrl,kx(e))).toString(),Rx=e=>{if(typeof e!="object"||e===null)return!1;const t=e;return["connected","customer_message_ack","provider_message","closed","error"].includes(t.type)};class Ox{socket;callbacks;url;appToken;handoffToken;isIntentionalClose=!1;handshakeTimeout;constructor(t){this.callbacks=t.callbacks,this.url=Nx(t),this.appToken=t.appToken;const n=t.handoff.reconnectToken??t.handoff.handoffToken;if(!n)throw new Error("Customer support socket requires a reconnect token");this.handoffToken=n,this.socket=new WebSocket(this.url),this.handshakeTimeout=setTimeout(()=>{this.socket.readyState!==WebSocket.CONNECTING&&this.socket.readyState!==WebSocket.OPEN||(this.callbacks.onTransportError?.({readyState:this.socket.readyState,url:this.safeUrlForLogs()}),this.socket.close())},Ix),this.socket.addEventListener("open",this.sendAuthMessage),this.socket.addEventListener("message",this.handleMessage),this.socket.addEventListener("close",this.handleClose),this.socket.addEventListener("error",this.handleTransportError)}sendAuthMessage=()=>{this.socket.send(JSON.stringify({type:"auth",appToken:this.appToken,handoffToken:this.handoffToken}))};sendCustomerMessage(t){if(this.socket.readyState!==WebSocket.OPEN){this.callbacks.onError?.({type:"error",message:"Customer support connection is not ready.",code:"CUSTOMER_SUPPORT_SOCKET_NOT_READY"});return}const n={type:"customer_message",text:t,clientMessageId:crypto.randomUUID()};this.socket.send(JSON.stringify(n))}close(t,n){if(this.isIntentionalClose=!0,clearTimeout(this.handshakeTimeout),this.socket.readyState===WebSocket.OPEN&&n?.notifyServer){const r={type:"close",reason:t};this.socket.send(JSON.stringify(r))}this.socket.close(1e3,t??"Customer support socket detached")}handleMessage=t=>{clearTimeout(this.handshakeTimeout);let n;try{n=JSON.parse(t.data)}catch{this.callbacks.onError?.({type:"error",message:"Customer support sent an invalid message.",code:"CUSTOMER_SUPPORT_SOCKET_INVALID_MESSAGE"});return}if(Rx(n)){if(n.type==="connected"){this.callbacks.onConnected?.(n);return}if(n.type==="provider_message"){this.callbacks.onProviderMessage?.(n);return}if(n.type==="closed"){this.callbacks.onClosed?.(n);return}n.type==="error"&&this.callbacks.onError?.(n)}};handleClose=t=>{clearTimeout(this.handshakeTimeout),!this.isIntentionalClose&&this.callbacks.onClose?.(t)};handleTransportError=()=>{this.isIntentionalClose||this.callbacks.onTransportError?.({readyState:this.socket.readyState,url:this.safeUrlForLogs()})};safeUrlForLogs(){const t=new URL(this.url);return t.searchParams.has("handoffToken")&&t.searchParams.set("handoffToken","<redacted>"),t.toString()}}const Lx=new Set(["SLACK_INBOUND_EVENT_NOT_OBSERVED"]),Dx=e=>e&&Lx.has(e)?"provider_unavailable":"connection_error",Px=e=>e.isClosed?e.labels.closed:!e.isCustomerSupportMode||!e.hasTransportFailed?null:e.failureKind==="provider_unavailable"?e.labels.providerUnavailable:e.labels.connectionError,Mx=[500,1500,3e3],Bx=e=>{const t=Mx[e];return t===void 0?{shouldRetry:!1}:{shouldRetry:!0,delayMs:t}},At={ai:"ai",customerSupport:"customer_support"},Jr="chatsystem-widget",Fx=1440*60*1e3;function mr(e){return typeof e=="string"&&!Number.isNaN(Date.parse(e))}function Hx(e){return!(typeof e!="object"||e===null||typeof e.enabled!="boolean"||typeof e.timeoutMinutes!="number"||typeof e.requireEmail!="boolean"||typeof e.requirePhone!="boolean")}function Ux(e){return!(typeof e!="object"||e===null||typeof e.enabled!="boolean"||typeof e.requireEmail!="boolean"||typeof e.requirePhone!="boolean"||typeof e.requireReason!="boolean")}function jx(e){if(typeof e!="object"||e===null||typeof e.discussionId!="number"||typeof e.reconnectToken!="string"||!mr(e.startedAt)||!mr(e.updatedAt)||e.reconnectTokenExpiresAt!==void 0&&!mr(e.reconnectTokenExpiresAt)||e.closedAt!==void 0&&!mr(e.closedAt)||e.closedReason!==void 0&&typeof e.closedReason!="string")return!1;const t=e.mode??"live_chat";return t==="closed_hours_contact_capture"?!(!["active","closed"].includes(e.status)||typeof e.customerSupportSessionId!="number"||!Ux(e.closedHoursContactCapture)||typeof e.businessHours!="object"||e.businessHours===null||typeof e.businessHours.timezone!="string"||e.businessHours.todayScheduleLabel!==void 0&&typeof e.businessHours.todayScheduleLabel!="string"):!(t!=="live_chat"||!["connecting","active","closed"].includes(e.status)||typeof e.socketUrl!="string"||e.customerSupportSessionId!==void 0&&typeof e.customerSupportSessionId!="number"||e.isWaitingForFirstProviderReply!==void 0&&typeof e.isWaitingForFirstProviderReply!="boolean"||e.fallbackContactCapture!==void 0&&!Hx(e.fallbackContactCapture))}function zx(e){return!(typeof e!="object"||e===null||e.userType!=="user"&&e.userType!=="assistant"||"content"in e&&e.content!==void 0&&typeof e.content!="string"||"metaData"in e&&e.metaData!==void 0&&(typeof e.metaData!="object"||e.metaData===null||"isErrorMessage"in e.metaData&&e.metaData.isErrorMessage!==void 0&&typeof e.metaData.isErrorMessage!="boolean"||"messageKind"in e.metaData&&e.metaData.messageKind!==void 0&&!["conversation","system"].includes(e.metaData.messageKind)||"systemEvent"in e.metaData&&e.metaData.systemEvent!==void 0&&!["customer_support_connecting","customer_support_connected","customer_support_closed","customer_support_connection_error"].includes(e.metaData.systemEvent)||"customerSupportAuthorName"in e.metaData&&e.metaData.customerSupportAuthorName!==void 0&&typeof e.metaData.customerSupportAuthorName!="string"))}function $x(e){return!(typeof e!="object"||e===null||!Array.isArray(e.items)||!e.items.every(zx)||e.discussionId!==null&&typeof e.discussionId!="number"||typeof e.updatedAt!="string"||Number.isNaN(Date.parse(e.updatedAt))||e.customerSupport!==void 0&&e.customerSupport!==null&&!jx(e.customerSupport))}function Yx(e){const t=vt();if(typeof window>"u")return;const n=e.key??Jr,r={items:e.conversation.items,discussionId:e.conversation.discussionId,updatedAt:new Date().toISOString(),customerSupport:e.customerSupport??null};try{const i=JSON.stringify(r);window.localStorage.setItem(n,i)}catch(i){t.error("Failed to save chat state to localStorage",i)}}function Wc(e){const t=vt();if(typeof window>"u")return null;const n=e?.key??Jr,r=window.localStorage.getItem(n);if(!r)return null;try{const i=JSON.parse(r);return $x(i)?i:(t.warn("Chat state in localStorage has unexpected shape, ignoring."),null)}catch(i){return t.error("Failed to parse chat state from localStorage",i),null}}function Gx(e){if(typeof window>"u")return null;const t=Jr;window.localStorage.removeItem(t)}const Xc=(e,t)=>{if(t===null)return"discussion_not_loaded";if(t!==e.discussionId)return"discussion_mismatch";if(e.status==="closed")return"session_closed";if(!e.reconnectToken)return"missing_reconnect_token";if(e.mode==="closed_hours_contact_capture")return null;if(!e.socketUrl)return"missing_socket_url";if(e.reconnectTokenExpiresAt){const n=Date.parse(e.reconnectTokenExpiresAt);if(Number.isNaN(n))return"invalid_reconnect_expiration";if(n<=Date.now())return"expired_reconnect_token"}return null},qx=()=>{const e=Wc(),t=e?.customerSupport??null;if(!t)return{mode:At.ai,customerSupportState:null,reason:"no_customer_support_state"};const n=Xc(t,e?.discussionId??null);return n==="session_closed"?{mode:At.customerSupport,customerSupportState:t,reason:n}:n?{mode:At.ai,customerSupportState:null,reason:n}:{mode:At.customerSupport,customerSupportState:t,reason:"valid_reconnect_state"}},Qc=e=>e.mode!==At.customerSupport?!1:e.customerSupportState.status!=="closed",Za=e=>e.mode!==At.customerSupport?!1:e.customerSupportState.status==="closed",Ja=e=>e.mode!==At.customerSupport||e.customerSupportState.status==="closed"?!1:e.customerSupportState.mode==="closed_hours_contact_capture",Vx=e=>Ja(e)?"customer_support":Qc(e)?"customer_support_connecting":Za(e)?"customer_support":"ai",Wx=e=>Ja(e)?"idle":Qc(e)?"connecting":Za(e)?"closed":"idle",Xx=e=>Ja(e)?"visible":"idle",Qx=e=>e?.trim()||void 0,Kx=e=>e.mode!==At.customerSupport||e.customerSupportState.status==="closed"||e.customerSupportState.mode==="closed_hours_contact_capture"?null:e.customerSupportState,Kc=e=>!!(e&&e.mode!=="closed_hours_contact_capture"),es=e=>e?.mode==="closed_hours_contact_capture",Zx=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&Kc(e.state))return e.state.fallbackContactCapture},Jx=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&es(e.state))return e.state.closedHoursContactCapture},eS=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&es(e.state))return e.state.businessHours},tS=e=>e.isCustomerSupportMode?e.chatTransportMode==="customer_support_connecting"?"customer_support_connecting":e.isCurrentDiscussion?es(e.state)?"customer_support_closed_hours_form":e.socketStatus!=="connected"?`socket_${e.socketStatus}`:e.isWaitingForFirstProviderReply?"waiting_first_provider_reply":e.isCustomerSupportClosed?"customer_support_closed":null:e.currentDiscussionId===null?"discussion_not_loaded":"discussion_mismatch":null;function nS({appToken:e,currentConversation:t,loadingStatus:n,labels:r,logger:i,setCurrentConversationId:a,setLoadingStatus:s,addMessageToCurrentConversation:o,onCustomerSupportOperatorMessage:u,chatboxBootState:c,resetConversationRequestId:d}){const f=c,[p,h]=C.useState(()=>Vx(f)),[b,y]=C.useState(f.customerSupportState),[w,_]=C.useState(()=>Wx(f)),[N,I]=C.useState(null),[L,A]=C.useState("idle"),[k,$]=C.useState(()=>Xx(f)),W=C.useRef(null),te=C.useRef(d),v=C.useRef(!1),U=C.useRef(null),z=C.useRef(Kx(f)),F=C.useRef(Za(f)),G=C.useRef(!1),Q=C.useRef(0),pe=C.useRef(null),se=p!=="ai",Ae=b?.discussionId===t.discussionId,we=se&&b?.status==="closed",m=Px({isCustomerSupportMode:se,isClosed:we,hasTransportFailed:w==="failed",failureKind:N,labels:r}),Y=!!(se&&Ae&&b?.mode!=="closed_hours_contact_capture"&&b?.isWaitingForFirstProviderReply),re={isCustomerSupportMode:se,isCurrentDiscussion:Ae,state:b},T=Zx(re),J=Jx(re),de=eS(re),V=!!T?.enabled&&["visible","submitting","submitted","failed"].includes(L),ue=!!J?.enabled&&["visible","submitting","submitted","failed"].includes(k),ne=tS({chatTransportMode:p,currentDiscussionId:t.discussionId,isCustomerSupportClosed:we,isCustomerSupportMode:se,isCurrentDiscussion:Ae,isWaitingForFirstProviderReply:Y,socketStatus:w,state:b}),ae=ne!==null;C.useEffect(()=>{if(n!=="notLoading"||t.items.length===0)return;const H=Ae?b:null;!t.discussionId&&!H||Yx({conversation:t,customerSupport:H})},[n,t,b,Ae]),C.useEffect(()=>(G.current=!1,()=>{G.current=!0,pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),W.current?.close("Widget unmounted"),W.current=null}),[]);const ie=(H,K,O)=>{o({userType:"assistant",content:H,metaData:{messageKind:"system",systemEvent:K,...O},temporaryId:crypto.randomUUID()})},Ne=(H,K)=>{o({userType:"assistant",content:H,metaData:{messageKind:"conversation",authorType:"customer_support_operator",...K},temporaryId:crypto.randomUUID()})},q=(H,K)=>{W.current?.close(H,K),W.current=null},De=()=>{pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),Q.current=0,U.current=null,z.current=null,F.current=!1,I(null),y(null),_("idle"),h("ai")},ze=(H,K)=>{q(H,K),De()};C.useEffect(()=>{te.current!==d&&(te.current=d,v.current=!0,ze("Starting new conversation",{notifyServer:!0}))},[d]),C.useEffect(()=>{t.discussionId===null&&v.current&&b===null&&p==="ai"&&(v.current=!1)},[p,t.discussionId,b]);const $e=H=>{F.current||(F.current=!0,U.current=null,W.current=null,H?.discussionId&&a(H.discussionId),s("notLoading"),I(null),_("closed"),h("customer_support"),y(K=>{if(!K)return K;const O=new Date().toISOString();return{...K,status:"closed",discussionId:H?.discussionId??K.discussionId,updatedAt:O,closedAt:H?.closedAt??O,closedReason:H?.reason,isWaitingForFirstProviderReply:!1}}))},ht=(H,K)=>{W.current&&q("Replacing customer support socket"),_("connecting");let O=!1,M=!1;const X=Z=>{I(Z),_("failed"),s("notLoading")},le=Z=>{W.current=null;const Se=Bx(Q.current);if(!Se.shouldRetry){i.error("Customer support socket reconnect exhausted code="+Z.code+" reason="+(Z.reason||"none")),X("connection_error");return}Q.current+=1,_("connecting"),h("customer_support_connecting"),i.log("Customer support socket reconnect scheduled attempt="+Q.current+" delayMs="+Se.delayMs+" code="+Z.code),pe.current=window.setTimeout(()=>{pe.current=null,!(G.current||F.current)&&ht(H,{...K,addConnectedMessage:O?!1:K?.addConnectedMessage})},Se.delayMs)};W.current=new Ox({apiUrl:gt.getApiUrl(),appToken:e,handoff:H,callbacks:{onConnected:Z=>{const Se=H.reconnectToken??H.handoffToken;if(!Se){$e({reason:"Missing reconnect token"});return}O=!0,Q.current=0,K?.isStoredReconnect&&(z.current=null);const tt=new Date().toISOString();a(Z.discussionId),I(null),_("connected"),h("customer_support"),s("notLoading"),y(Ke=>{const at=Kc(Ke)?Ke:null;return{mode:"live_chat",status:"active",discussionId:Z.discussionId,socketUrl:H.socketUrl,reconnectToken:Se,reconnectTokenExpiresAt:Z.reconnectTokenExpiresAt??H.reconnectTokenExpiresAt,customerSupportSessionId:Z.customerSupportSessionId??H.customerSupportSessionId,provider:at?.provider,isWaitingForFirstProviderReply:at?.isWaitingForFirstProviderReply??!0,fallbackContactCapture:at?.fallbackContactCapture,startedAt:at?.startedAt??tt,updatedAt:tt}}),K?.addConnectedMessage!==!1&&ie(r.connected,"customer_support_connected")},onProviderMessage:Z=>{I(null),_("connected"),A(Se=>Se==="submitted"?Se:"idle"),y(Se=>!Se||Se.mode==="closed_hours_contact_capture"?Se:{...Se,status:"active",provider:Z.provider??Se.provider,reconnectTokenExpiresAt:Z.reconnectTokenExpiresAt??Se.reconnectTokenExpiresAt,isWaitingForFirstProviderReply:!1,updatedAt:new Date().toISOString()}),Ne(Z.text,{customerSupportAuthorName:Qx(Z.authorName),customerSupportProvider:Z.provider}),u?.()},onClosed:Z=>{M=!0,$e({reason:Z.reason,closedAt:Z.closedAt,discussionId:Z.discussionId})},onError:Z=>{M=!0,i.error("Customer support socket server error code="+Z.code+" message="+Z.message),X(Dx(Z.code))},onClose:Z=>{G.current||F.current||M||le(Z)},onTransportError:Z=>{i.error(`Customer support socket transport error readyState=${Z.readyState} url=${Z.url}`)}}})};C.useEffect(()=>{const H=z.current;if(!H)return;const K=Xc(H,t.discussionId);if(K!=="discussion_not_loaded"){if(K==="session_closed"){z.current=null,_("closed"),h("customer_support");return}if(K){z.current=null,y(O=>O?.discussionId===t.discussionId?O:null),_("idle"),h("ai");return}W.current||(_("connecting"),h("customer_support_connecting"),ht({mode:"live_chat",transport:"socket",socketUrl:H.socketUrl,reconnectToken:H.reconnectToken,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,discussionId:H.discussionId,fallbackContactCapture:H.fallbackContactCapture},{addConnectedMessage:!1,isStoredReconnect:!0}))}},[t.discussionId]);const Rt=H=>{if(H.mode==="closed_hours_contact_capture"){be(H);return}const K=H.reconnectToken??H.handoffToken;if(!H.discussionId||!K){ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0});return}const O=new Date().toISOString();U.current=H,F.current=!1,A("idle"),y({mode:"live_chat",status:"connecting",discussionId:H.discussionId,socketUrl:H.socketUrl,reconnectToken:K,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,isWaitingForFirstProviderReply:!0,fallbackContactCapture:H.fallbackContactCapture,startedAt:O,updatedAt:O}),_("connecting"),h("customer_support_connecting"),ie(r.connecting,"customer_support_connecting")},Be=()=>{const H=U.current;!H||H.mode!=="live_chat"||(U.current=null,ht(H))},pt=H=>p!=="customer_support"||w!=="connected"||!Ae||!W.current?(ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0}),!1):(W.current.sendCustomerMessage(H),!0);C.useEffect(()=>{if(!T?.enabled||!Y||!Ae||w!=="connected"||L!=="idle")return;const H=Math.max(1,T.timeoutMinutes)*60*1e3,K=window.setTimeout(()=>{A("visible")},H);return()=>window.clearTimeout(K)},[T,L,Ae,Y,w]);const et=async({email:H,phone:K})=>{if(!b?.customerSupportSessionId||!b.reconnectToken)return!1;A("submitting");const O=`${gt.getApiUrl()}/customer-support/sessions/${b.customerSupportSessionId}/fallback-contact`;return(await fetch(O,gt.getFetchConfig({httpVerb:"POST",contentType:"application/json",body:{reconnectToken:b.reconnectToken,reasonType:"fallback_no_reply",email:H,phone:K}}))).ok?(A("submitted"),q("Fallback contact submitted"),$e({reason:"fallback_contact_submitted",discussionId:b.discussionId}),!0):(A("failed"),!1)},be=H=>{if(!H.discussionId){ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0});return}const K=new Date().toISOString();U.current=null,F.current=!1,q("Closed-hours contact capture"),y({mode:"closed_hours_contact_capture",status:"active",discussionId:H.discussionId,reconnectToken:H.reconnectToken,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,closedHoursContactCapture:H.closedHoursContactCapture,businessHours:H.businessHours,startedAt:K,updatedAt:K}),_("idle"),h("customer_support"),s("notLoading"),$("visible")},ve=async({email:H,phone:K,reason:O})=>{if(b?.mode!=="closed_hours_contact_capture")return!1;$("submitting");const M=gt.getApiUrl()+"/customer-support/sessions/"+b.customerSupportSessionId+"/fallback-contact";return(await fetch(M,gt.getFetchConfig({httpVerb:"POST",contentType:"application/json",body:{reconnectToken:b.reconnectToken,reasonType:"closed_hours",email:H,phone:K,reason:O}}))).ok?($("submitted"),$e({reason:"closed_hours_contact_submitted",discussionId:b.discussionId}),!0):($("failed"),!1)};return C.useEffect(()=>{if(se&&b&&b.status!=="closed"&&t.discussionId!==b.discussionId&&t.discussionId===null){if(v.current)return;a(b.discussionId);return}},[t.discussionId,b,se,w,a]),{chatTransportMode:p,socketStatus:w,isCustomerSupportMode:se,isCustomerSupportClosed:we,customerSupportStatusMessage:m,isCustomerSupportInputDisabled:ae,customerSupportInputDisabledReason:ne,enterCustomerSupportMode:Rt,flushPendingCustomerSupportHandoff:Be,sendToCustomerSupport:pt,fallbackContactCaptureConfig:T,fallbackContactCaptureStatus:L,shouldDisplayFallbackContactCapture:V,submitFallbackContactCapture:et,closedHoursContactCaptureConfig:J,closedHoursBusinessHours:de,closedHoursContactCaptureStatus:k,shouldDisplayClosedHoursContactCapture:ue,submitClosedHoursContactCapture:ve}}const Zc=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Search",id:"chatbot.chatline.loading.function.search"}),n=e.formatMessage({defaultMessage:"Looking into the cavern",id:"chatbot.chatline.loading.function.extractProductName"}),r=e.formatMessage({defaultMessage:"Consulting the shadocks",id:"chatbot.chatline.loading.function.suggestProductName"}),i=e.formatMessage({defaultMessage:"Looking for ziboublis",id:"chatbot.chatline.loading.function.criteriaDefinition"}),a=e.formatMessage({defaultMessage:"Searching Stock",id:"chatbot.chatline.loading.function.searchStock"}),s=e.formatMessage({defaultMessage:"Step",id:"chatbot.chatline.loading.function.step"}),o=e.formatMessage({defaultMessage:"I'm looking for products",id:"chatbot.chatline.loading.function.genericSearchMessage"}),u=e.formatMessage({defaultMessage:"Searching ...",id:"chatbot.chatline.loading.stepName.search"}),c=e.formatMessage({defaultMessage:"Building Query ...",id:"chatbot.chatline.loading.stepName.building"}),d=e.formatMessage({defaultMessage:"Analyzing ...",id:"chatbot.chatline.loading.stepName.analyzing"}),f=e.formatMessage({defaultMessage:"Writing answer",id:"chatbot.chatline.loading.stepName.redacting"}),p=e.formatMessage({defaultMessage:"Cancel",id:"chatbot.chatline.loading.cancel"}),h=e.formatMessage({defaultMessage:"see recent messages",id:"chatbot.chatline.seeRecentMessages"}),b=w=>w?w.includes("ExtractProductNames")?n:w.includes("SuggestProductNames")?r:w==="Recherche ..."?u:w==="Construction ..."?c:w==="Analyse ..."?d:w==="Rédaction"?f:w.includes("CreateCriteriasFromProductNames")||w.includes("CreateCriteriasOrProductNamesFromDiscussion")?i:w.includes("SearchStock")?a:"":t,y=b();return{searchTranslation:t,extractProductNameTranslation:n,criteriaDefinitionTranslation:i,searchStockTranslation:a,stepTranslation:s,getCurrentStepTranslated:b,defaultStartingStep:y,lookingForProductTranslation:o,cancelTranslation:p,recentMessagesTranslation:h}},rS=({})=>{const{companySettings:e}=C.useContext(rn);return x.jsx("div",{className:`search
104
+ ${n??""}`,"data-testid":"send-button",onClick:e,disabled:t,type:"button","aria-label":"Send message",children:x.jsx("span",{className:"","data-state":"closed",children:x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",className:"text-white dark:text-black",children:[x.jsx("path",{d:"M3 20L21 12L3 4L7.5 12L3 20Z",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round"}),x.jsx("path",{d:"M7.5 12H14.75",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})})})});var lt=(e=>(e.FRENCH="fr-FR",e.ENGLISH="en-US",e))(lt||{});const gx={"generic.language.english":"English","generic.language.french":"French","chatbot.placeholder.content":"Message...","chatbot.DiscussionLimitReached.title":"Discussion limit reached","chatbot.DiscussionLimitReached.explaination":"The discussion has reached its maximum number of messages. Please start a new one.","chatbot.DiscussionLimitReached.cta":"Restart","chatbot.error.api.409":"Oups ! The discussion if full. Please start a new one.","chatbot.error.api.429":"⏳ The chatbot is a little busy at the time. Please try again later.","chatbot.error.api.500":"Oops ! There has been an error. Please try again later.","chatbot.chatline.label.user":"You","chatbot.chatline.label.assistant":"Assistant","chatbot.chatline.label.customerSupport":"Customer support","chatbot.chatline.loading.function.genericSearchMessage":"Thinking ...","chatbot.chatline.loading.function.search":"Search","chatbot.chatline.loading.function.extractProductName":"Looking into the cavern","chatbot.chatline.loading.function.suggestProductName":"Consulting the shadocks","chatbot.chatline.loading.function.criteriaDefinition":"Looking for ziboublis","chatbot.chatline.loading.function.searchStock":"Searching Stock","chatbot.chatline.loading.function.step":"Step","chatbot.chatline.loading.stepName.search":"Searching ...","chatbot.chatline.loading.stepName.building":"Building Query ...","chatbot.chatline.loading.stepName.analyzing":"Analyzing ...","chatbot.chatline.loading.stepName.redacting":"Writing answer","chatbot.chatline.loading.cancel":"Cancel","chatbot.chatline.seeRecentMessages":"see recent messages","chatbot.widget.menu.open":"Open chat menu","chatbot.widget.menu.startNewDiscussion":"Start a new discussion","chatbot.widget.close":"Close chat","recordingOverlay.recording":"Recording...","recordingOverlay.cancel":"Cancel","recordingOverlay.explaination":"Tap the mic to stop","chatbot.infobanner.title":"You have an archived discussion.","chatbot.infobanner.cta":"See","chatbot.customerSupport.connecting":"Transferring your request to customer support...","chatbot.customerSupport.connected":"Your request has been sent to Customer Support. It usually takes a few minutes to get a reply. Thank you for waiting.","chatbot.customerSupport.connectionError":"Customer support is not available right now. Please try again later.","chatbot.customerSupport.providerUnavailable":"Customer support received your request, but live replies are temporarily unavailable. Please try again shortly.","chatbot.customerSupport.closed":"Your customer support conversation is now complete. Start a new conversation if you need more help!","chatbot.customerSupport.restart":"Restart","chatbot.customerSupport.fallback.title":"Leave your contact details","chatbot.customerSupport.fallback.description":"Customer support has not replied yet. Leave your email and phone number and we will contact you soon.","chatbot.customerSupport.fallback.email":"Email","chatbot.customerSupport.fallback.phone":"Phone","chatbot.customerSupport.fallback.submit":"Send","chatbot.customerSupport.fallback.submitting":"Sending...","chatbot.customerSupport.fallback.success":"Your contact details have been saved. Customer support will contact you soon.","chatbot.customerSupport.closedHours.title":"Customer support is currently closed","chatbot.customerSupport.closedHours.description":"Leave your email, phone number and request. Customer support will contact you during opening hours.","chatbot.customerSupport.closedHours.schedulePrefix":"Today:","chatbot.customerSupport.closedHours.reason":"Reason for your request","chatbot.customerSupport.closedHours.success":"Your request has been saved. Customer support will contact you during opening hours.","chatbot.customerSupport.fallback.error":"We could not save your contact details. Please try again."},bx={"generic.language.english":"Anglais","generic.language.french":"Français","chatbot.placeholder.content":"Message...","chatbot.DiscussionLimitReached.title":"Maximum de messages envoyés atteint.","chatbot.DiscussionLimitReached.explaination":"Le robot est à son maximum et ne peut plus envoyer de message. Merci de relancer une conversation.","chatbot.DiscussionLimitReached.cta":"Relancer une nouvelle conversation","chatbot.error.api.409":"Oups ! La discussion est à son maximum. Merci d'en commencer une nouvelle.","chatbot.error.api.429":"⏳ Le robot est un peu occupé actuellement. Merci de réessayer plus tard.","chatbot.error.api.500":"Oups ! Une erreur est survenue. Merci de réessayer plus tard !","chatbot.chatline.label.user":"Vous","chatbot.chatline.label.assistant":"Assistant","chatbot.chatline.label.customerSupport":"Support client","chatbot.chatline.loading.function.search":"Recherche","chatbot.chatline.loading.function.genericSearchMessage":"Je réfléchis ...","chatbot.chatline.loading.function.extractProductName":"Recherche dans la caverne","chatbot.chatline.loading.function.suggestProductName":"Consultation des shadocks","chatbot.chatline.loading.function.criteriaDefinition":"Recherche des ziboublis","chatbot.chatline.loading.function.searchStock":"Recherche en stock","chatbot.chatline.loading.function.step":"Etape","chatbot.chatline.loading.stepName.search":"Recherche ...","chatbot.chatline.loading.stepName.building":"Construction ...","chatbot.chatline.loading.stepName.analyzing":"Analyse ...","chatbot.chatline.loading.stepName.redacting":"Rédaction","chatbot.chatline.loading.cancel":"Annuler","chatbot.chatline.seeRecentMessages":"voir les messages plus récents","chatbot.widget.menu.open":"Ouvrir le menu de discussion","chatbot.widget.menu.startNewDiscussion":"Démarrer une nouvelle discussion","chatbot.widget.close":"Fermer la discussion","recordingOverlay.recording":"Micro activé...","recordingOverlay.cancel":"Annuler","recordingOverlay.explaination":"Appuyez sur le micro pour arrêter","chatbot.infobanner.title":"Vous avez une conversation archivée.","chatbot.infobanner.cta":"Voir","chatbot.customerSupport.connecting":"Transfert de votre demande au support client...","chatbot.customerSupport.connected":"Votre demande a été transmise au support client. Il faut généralement quelques minutes pour obtenir une réponse. Merci de patienter.","chatbot.customerSupport.connectionError":"Le support client n'est pas disponible pour le moment. Merci de réessayer plus tard.","chatbot.customerSupport.providerUnavailable":"Le support client a reçu votre demande, mais les réponses en direct sont temporairement indisponibles. Merci de réessayer dans quelques instants.","chatbot.customerSupport.closed":"Votre échange avec le support client est terminé. Relancez une nouvelle conversation quand vous le souhaitez !","chatbot.customerSupport.restart":"Relancer","chatbot.customerSupport.fallback.title":"Laissez vos coordonnées","chatbot.customerSupport.fallback.description":"Le support client n'a pas encore répondu. Laissez votre email et votre téléphone, nous vous recontacterons prochainement.","chatbot.customerSupport.fallback.email":"Email","chatbot.customerSupport.fallback.phone":"Téléphone","chatbot.customerSupport.fallback.submit":"Envoyer","chatbot.customerSupport.fallback.submitting":"Envoi...","chatbot.customerSupport.fallback.success":"Vos coordonnées ont bien été notées. Le support client vous recontactera prochainement.","chatbot.customerSupport.closedHours.title":"Le support client est actuellement fermé","chatbot.customerSupport.closedHours.description":"Laissez votre email, votre téléphone et le motif de votre demande. Le support client vous recontactera pendant ses horaires d’ouverture.","chatbot.customerSupport.closedHours.schedulePrefix":"Aujourd’hui :","chatbot.customerSupport.closedHours.reason":"Motif de votre demande","chatbot.customerSupport.closedHours.success":"Votre demande a bien été enregistrée. Le support client vous recontactera pendant ses horaires d’ouverture.","chatbot.customerSupport.fallback.error":"Impossible d'enregistrer vos coordonnées. Merci de réessayer."},Zr={[lt.ENGLISH]:{translatedText:gx,pictureName:lt.ENGLISH,langID:0,locale:lt.ENGLISH},[lt.FRENCH]:{translatedText:bx,pictureName:lt.FRENCH,langID:1,locale:lt.FRENCH}},Ex=Object.keys(Zr);Ex.reduce((e,t)=>{const n=Zr[t];return[...e,n]},[]);const Tx="languageSettings",Vc=C.createContext({appCurrentLang:Zr[lt.ENGLISH],setAppCurrentLang:()=>{}}),yx=e=>e.filter(t=>t.userType==="user").length;var ba=(e=>(e.GET_DISCUSSION_ID="/id",e.RESET_DISCUSSION="/delete",e))(ba||{});const xx=e=>!!e.startsWith("/"),Sx=(e,t,n)=>e===ba.GET_DISCUSSION_ID?t?`Votre ID de discussion est ${t}`:"Votre ID de discussion n'est pas encore défini. Envoyez un premier message pour que ce soit le cas.":e===ba.RESET_DISCUSSION?(n(),null):`La commande ${e} n'est pas prise en compte.`;class Lt{static pending="";constructor(){}static transformNDJSONChunkIntoObjects(t){const n=vt();this.pending+=t;const r=this.pending.split(/\r?\n/);this.pending=r.pop()??"";const i=[];for(const a of r){const s=a.trim();if(s)try{i.push(JSON.parse(s))}catch{n.warn("[NDJSON] Could not parse line:",s)}}return i}static flushPending(){const t=this.pending.trim();if(this.pending="",!t)return[];try{return[JSON.parse(t)]}catch{return[]}}static isObjectOutputstreamMessageDeltaDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_DELTA;static isObjectOutputstreamMessageStartDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_START;static isObjectOutputstreamMessageEndDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_MESSAGE_END;static isObjectOutputstreamErrorDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_ERROR;static isObjectOutputstreamClientEventDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CLIENT_EVENT;static isObjectOutputstreamLoadingNumberOfStepsDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_NUMBER_OF_STEPS_TYPE;static isObjectOutputstreamLoadingCurrentStepNumberDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CURRENT_STEP_NUMBER_TYPE;static isObjectOutputstreamLoadingCurrentStepNameDTO=t=>t.type===ce.OutputStreamTypesEnum.OUTPUT_STREAM_CURRENT_STEP_NAME_TYPE;static containsObjectWithLastAnswerToTrue=t=>{for(const n of t)if(this.isObjectOutputstreamMessageEndDTO(n)&&n.isLastAnswer)return!0;return!1}}const _x=e=>{if(!ce.isUnknownRecord(e))return;const t=ce.readOptionalNumber(e.timeoutMinutes)??ce.DIRECT_CHAT_CUSTOMER_SUPPORT_FALLBACK_CONTACT_CAPTURE_DEFAULT_TIMEOUT_MINUTES;return{enabled:e.enabled===!0,timeoutMinutes:Math.max(1,Math.min(120,Math.round(t))),requireEmail:e.requireEmail!==!1,requirePhone:e.requirePhone!==!1}},Cx=e=>{if(ce.isUnknownRecord(e))return{enabled:e.enabled!==!1,requireEmail:e.requireEmail!==!1,requirePhone:e.requirePhone!==!1,requireReason:e.requireReason!==!1}},Ax=e=>{if(!ce.isUnknownRecord(e))return null;const t=e;if(t.type!=="interactive_widget_request"||t.event!=="interactiveWidget.requested"||t.widgetType!==ce.INTERACTIVE_WIDGET_TYPES.directChatCustomerSupport||!ce.isUnknownRecord(t.payload))return null;const n=t.payload;if((ce.readOptionalString(n.mode)??"live_chat")==="closed_hours_contact_capture"){const s=ce.readOptionalString(n.reconnectToken),o=ce.readOptionalNumber(n.customerSupportSessionId),u=Cx(n.closedHoursContactCapture);if(n.transport!=="none"||!s||!o||!u||!u.enabled)return null;const c=ce.isUnknownRecord(n.businessHours)?n.businessHours:{};return{mode:"closed_hours_contact_capture",transport:"none",reconnectToken:s,reconnectTokenExpiresAt:ce.readOptionalString(n.reconnectTokenExpiresAt),customerSupportSessionId:o,companyId:ce.readOptionalNumber(t.companyId),agentId:ce.readOptionalNullableNumber(t.agentId),discussionId:ce.readOptionalNullableNumber(t.discussionId)??null,toolcallId:ce.readOptionalNullableString(t.toolcallId),closedHoursContactCapture:u,businessHours:{timezone:ce.readOptionalString(c.timezone)??ce.DIRECT_CHAT_CUSTOMER_SUPPORT_DEFAULT_BUSINESS_HOURS_TIMEZONE,todayScheduleLabel:ce.readOptionalString(c.todayScheduleLabel)}}}if(n.transport!=="socket"||typeof n.socketUrl!="string")return null;const i=ce.readOptionalString(n.handoffToken),a=ce.readOptionalString(n.reconnectToken);return!i&&!a?null:{mode:"live_chat",transport:"socket",socketUrl:n.socketUrl,handoffToken:i,reconnectToken:a,reconnectTokenExpiresAt:ce.readOptionalString(n.reconnectTokenExpiresAt),customerSupportSessionId:ce.readOptionalNumber(n.customerSupportSessionId),companyId:ce.readOptionalNumber(t.companyId),agentId:ce.readOptionalNullableNumber(t.agentId),discussionId:ce.readOptionalNullableNumber(t.discussionId)??null,toolcallId:ce.readOptionalNullableString(t.toolcallId),fallbackContactCapture:_x(n.fallbackContactCapture)}},wx=e=>Ax(e),vx=e=>{const t=wx(e.payload);return t?{type:"customer_support_handoff_requested",payload:t}:{type:"unhandled_client_event",event:e}},Ix=1e4,kx=3e3,Nx=e=>{const t=new URL(e);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t},Rx=({apiUrl:e,handoff:t})=>(t.socketUrl.startsWith("ws://")||t.socketUrl.startsWith("wss://")?new URL(t.socketUrl):new URL(t.socketUrl,Nx(e))).toString(),Ox=e=>{if(typeof e!="object"||e===null)return!1;const t=e;return["connected","customer_message_ack","provider_message","closed","error"].includes(t.type)};class Lx{socket;callbacks;url;appToken;handoffToken;isIntentionalClose=!1;handshakeTimeout;closeAcknowledgementTimeout=null;constructor(t){this.callbacks=t.callbacks,this.url=Rx(t),this.appToken=t.appToken;const n=t.handoff.reconnectToken??t.handoff.handoffToken;if(!n)throw new Error("Customer support socket requires a reconnect token");this.handoffToken=n,this.socket=new WebSocket(this.url),this.handshakeTimeout=setTimeout(()=>{this.socket.readyState!==WebSocket.CONNECTING&&this.socket.readyState!==WebSocket.OPEN||(this.callbacks.onTransportError?.({readyState:this.socket.readyState,url:this.safeUrlForLogs()}),this.socket.close())},Ix),this.socket.addEventListener("open",this.sendAuthMessage),this.socket.addEventListener("message",this.handleMessage),this.socket.addEventListener("close",this.handleClose),this.socket.addEventListener("error",this.handleTransportError)}sendAuthMessage=()=>{this.socket.send(JSON.stringify({type:"auth",appToken:this.appToken,handoffToken:this.handoffToken}))};sendCustomerMessage(t){if(this.socket.readyState!==WebSocket.OPEN){this.callbacks.onError?.({type:"error",message:"Customer support connection is not ready.",code:"CUSTOMER_SUPPORT_SOCKET_NOT_READY"});return}const n={type:"customer_message",text:t,clientMessageId:crypto.randomUUID()};this.socket.send(JSON.stringify(n))}close(t,n){if(this.isIntentionalClose=!0,clearTimeout(this.handshakeTimeout),this.socket.readyState===WebSocket.OPEN&&n?.notifyServer){const r={type:"close",reason:t};this.socket.send(JSON.stringify(r)),this.closeAcknowledgementTimeout=setTimeout(()=>{this.closeTransport(t)},kx);return}this.closeTransport(t)}handleMessage=t=>{clearTimeout(this.handshakeTimeout);let n;try{n=JSON.parse(t.data)}catch{this.callbacks.onError?.({type:"error",message:"Customer support sent an invalid message.",code:"CUSTOMER_SUPPORT_SOCKET_INVALID_MESSAGE"});return}if(Ox(n)){if(n.type==="connected"){this.callbacks.onConnected?.(n);return}if(n.type==="provider_message"){this.callbacks.onProviderMessage?.(n);return}if(n.type==="closed"){if(this.closeAcknowledgementTimeout!==null){clearTimeout(this.closeAcknowledgementTimeout),this.closeAcknowledgementTimeout=null,this.closeTransport("Customer support session closed");return}this.callbacks.onClosed?.(n);return}n.type==="error"&&this.callbacks.onError?.(n)}};handleClose=t=>{clearTimeout(this.handshakeTimeout),this.closeAcknowledgementTimeout!==null&&(clearTimeout(this.closeAcknowledgementTimeout),this.closeAcknowledgementTimeout=null),!this.isIntentionalClose&&this.callbacks.onClose?.(t)};handleTransportError=()=>{this.isIntentionalClose||this.callbacks.onTransportError?.({readyState:this.socket.readyState,url:this.safeUrlForLogs()})};closeTransport(t){this.closeAcknowledgementTimeout!==null&&(clearTimeout(this.closeAcknowledgementTimeout),this.closeAcknowledgementTimeout=null),this.socket.close(1e3,t??"Customer support socket detached")}safeUrlForLogs(){const t=new URL(this.url);return t.searchParams.has("handoffToken")&&t.searchParams.set("handoffToken","<redacted>"),t.toString()}}const Dx=new Set(["SLACK_INBOUND_EVENT_NOT_OBSERVED"]),Px=e=>e&&Dx.has(e)?"provider_unavailable":"connection_error",Mx=e=>e.isClosed?e.labels.closed:!e.isCustomerSupportMode||!e.hasTransportFailed?null:e.failureKind==="provider_unavailable"?e.labels.providerUnavailable:e.labels.connectionError,Bx=[500,1500,3e3],Fx=e=>{const t=Bx[e];return t===void 0?{shouldRetry:!1}:{shouldRetry:!0,delayMs:t}},At={ai:"ai",customerSupport:"customer_support"},Jr="chatsystem-widget",Hx=1440*60*1e3;function mr(e){return typeof e=="string"&&!Number.isNaN(Date.parse(e))}function Ux(e){return!(typeof e!="object"||e===null||typeof e.enabled!="boolean"||typeof e.timeoutMinutes!="number"||typeof e.requireEmail!="boolean"||typeof e.requirePhone!="boolean")}function jx(e){return!(typeof e!="object"||e===null||typeof e.enabled!="boolean"||typeof e.requireEmail!="boolean"||typeof e.requirePhone!="boolean"||typeof e.requireReason!="boolean")}function zx(e){if(typeof e!="object"||e===null||typeof e.discussionId!="number"||typeof e.reconnectToken!="string"||!mr(e.startedAt)||!mr(e.updatedAt)||e.reconnectTokenExpiresAt!==void 0&&!mr(e.reconnectTokenExpiresAt)||e.closedAt!==void 0&&!mr(e.closedAt)||e.closedReason!==void 0&&typeof e.closedReason!="string")return!1;const t=e.mode??"live_chat";return t==="closed_hours_contact_capture"?!(!["active","closed"].includes(e.status)||typeof e.customerSupportSessionId!="number"||!jx(e.closedHoursContactCapture)||typeof e.businessHours!="object"||e.businessHours===null||typeof e.businessHours.timezone!="string"||e.businessHours.todayScheduleLabel!==void 0&&typeof e.businessHours.todayScheduleLabel!="string"):!(t!=="live_chat"||!["connecting","active","closed"].includes(e.status)||typeof e.socketUrl!="string"||e.customerSupportSessionId!==void 0&&typeof e.customerSupportSessionId!="number"||e.isWaitingForFirstProviderReply!==void 0&&typeof e.isWaitingForFirstProviderReply!="boolean"||e.fallbackContactCapture!==void 0&&!Ux(e.fallbackContactCapture))}function $x(e){return!(typeof e!="object"||e===null||e.userType!=="user"&&e.userType!=="assistant"||"content"in e&&e.content!==void 0&&typeof e.content!="string"||"metaData"in e&&e.metaData!==void 0&&(typeof e.metaData!="object"||e.metaData===null||"isErrorMessage"in e.metaData&&e.metaData.isErrorMessage!==void 0&&typeof e.metaData.isErrorMessage!="boolean"||"messageKind"in e.metaData&&e.metaData.messageKind!==void 0&&!["conversation","system"].includes(e.metaData.messageKind)||"systemEvent"in e.metaData&&e.metaData.systemEvent!==void 0&&!["customer_support_connecting","customer_support_connected","customer_support_closed","customer_support_connection_error"].includes(e.metaData.systemEvent)||"customerSupportAuthorName"in e.metaData&&e.metaData.customerSupportAuthorName!==void 0&&typeof e.metaData.customerSupportAuthorName!="string"))}function Yx(e){return!(typeof e!="object"||e===null||!Array.isArray(e.items)||!e.items.every($x)||e.discussionId!==null&&typeof e.discussionId!="number"||typeof e.updatedAt!="string"||Number.isNaN(Date.parse(e.updatedAt))||e.customerSupport!==void 0&&e.customerSupport!==null&&!zx(e.customerSupport))}function Gx(e){const t=vt();if(typeof window>"u")return;const n=e.key??Jr,r={items:e.conversation.items,discussionId:e.conversation.discussionId,updatedAt:new Date().toISOString(),customerSupport:e.customerSupport??null};try{const i=JSON.stringify(r);window.localStorage.setItem(n,i)}catch(i){t.error("Failed to save chat state to localStorage",i)}}function Wc(e){const t=vt();if(typeof window>"u")return null;const n=e?.key??Jr,r=window.localStorage.getItem(n);if(!r)return null;try{const i=JSON.parse(r);return Yx(i)?i:(t.warn("Chat state in localStorage has unexpected shape, ignoring."),null)}catch(i){return t.error("Failed to parse chat state from localStorage",i),null}}function qx(e){if(typeof window>"u")return null;const t=Jr;window.localStorage.removeItem(t)}const Xc=(e,t)=>{if(t===null)return"discussion_not_loaded";if(t!==e.discussionId)return"discussion_mismatch";if(e.status==="closed")return"session_closed";if(!e.reconnectToken)return"missing_reconnect_token";if(e.mode==="closed_hours_contact_capture")return null;if(!e.socketUrl)return"missing_socket_url";if(e.reconnectTokenExpiresAt){const n=Date.parse(e.reconnectTokenExpiresAt);if(Number.isNaN(n))return"invalid_reconnect_expiration";if(n<=Date.now())return"expired_reconnect_token"}return null},Vx=()=>{const e=Wc(),t=e?.customerSupport??null;if(!t)return{mode:At.ai,customerSupportState:null,reason:"no_customer_support_state"};const n=Xc(t,e?.discussionId??null);return n==="session_closed"?{mode:At.customerSupport,customerSupportState:t,reason:n}:n?{mode:At.ai,customerSupportState:null,reason:n}:{mode:At.customerSupport,customerSupportState:t,reason:"valid_reconnect_state"}},Qc=e=>e.mode!==At.customerSupport?!1:e.customerSupportState.status!=="closed",Za=e=>e.mode!==At.customerSupport?!1:e.customerSupportState.status==="closed",Ja=e=>e.mode!==At.customerSupport||e.customerSupportState.status==="closed"?!1:e.customerSupportState.mode==="closed_hours_contact_capture",Wx=e=>Ja(e)?"customer_support":Qc(e)?"customer_support_connecting":Za(e)?"customer_support":"ai",Xx=e=>Ja(e)?"idle":Qc(e)?"connecting":Za(e)?"closed":"idle",Qx=e=>Ja(e)?"visible":"idle",Kx=e=>e?.trim()||void 0,Zx=e=>e.mode!==At.customerSupport||e.customerSupportState.status==="closed"||e.customerSupportState.mode==="closed_hours_contact_capture"?null:e.customerSupportState,Kc=e=>!!(e&&e.mode!=="closed_hours_contact_capture"),es=e=>e?.mode==="closed_hours_contact_capture",Jx=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&Kc(e.state))return e.state.fallbackContactCapture},eS=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&es(e.state))return e.state.closedHoursContactCapture},tS=e=>{if(e.isCustomerSupportMode&&e.isCurrentDiscussion&&es(e.state))return e.state.businessHours},nS=e=>e.isCustomerSupportMode?e.chatTransportMode==="customer_support_connecting"?"customer_support_connecting":e.isCurrentDiscussion?es(e.state)?"customer_support_closed_hours_form":e.socketStatus!=="connected"?`socket_${e.socketStatus}`:e.isWaitingForFirstProviderReply?"waiting_first_provider_reply":e.isCustomerSupportClosed?"customer_support_closed":null:e.currentDiscussionId===null?"discussion_not_loaded":"discussion_mismatch":null;function rS({appToken:e,currentConversation:t,loadingStatus:n,labels:r,logger:i,setCurrentConversationId:a,setLoadingStatus:s,addMessageToCurrentConversation:o,onCustomerSupportOperatorMessage:u,chatboxBootState:c,resetConversationRequestId:d}){const f=c,[p,h]=C.useState(()=>Wx(f)),[b,y]=C.useState(f.customerSupportState),[w,_]=C.useState(()=>Xx(f)),[N,I]=C.useState(null),[L,A]=C.useState("idle"),[k,$]=C.useState(()=>Qx(f)),W=C.useRef(null),te=C.useRef(d),v=C.useRef(!1),U=C.useRef(null),z=C.useRef(Zx(f)),F=C.useRef(Za(f)),G=C.useRef(!1),Q=C.useRef(0),pe=C.useRef(null),se=p!=="ai",Ae=b?.discussionId===t.discussionId,we=se&&b?.status==="closed",m=Mx({isCustomerSupportMode:se,isClosed:we,hasTransportFailed:w==="failed",failureKind:N,labels:r}),Y=!!(se&&Ae&&b?.mode!=="closed_hours_contact_capture"&&b?.isWaitingForFirstProviderReply),re={isCustomerSupportMode:se,isCurrentDiscussion:Ae,state:b},T=Jx(re),J=eS(re),de=tS(re),V=!!T?.enabled&&["visible","submitting","submitted","failed"].includes(L),ue=!!J?.enabled&&["visible","submitting","submitted","failed"].includes(k),ne=nS({chatTransportMode:p,currentDiscussionId:t.discussionId,isCustomerSupportClosed:we,isCustomerSupportMode:se,isCurrentDiscussion:Ae,isWaitingForFirstProviderReply:Y,socketStatus:w,state:b}),ae=ne!==null;C.useEffect(()=>{if(n!=="notLoading"||t.items.length===0)return;const H=Ae?b:null;!t.discussionId&&!H||Gx({conversation:t,customerSupport:H})},[n,t,b,Ae]),C.useEffect(()=>(G.current=!1,()=>{G.current=!0,pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),W.current?.close("Widget unmounted"),W.current=null}),[]);const ie=(H,K,O)=>{o({userType:"assistant",content:H,metaData:{messageKind:"system",systemEvent:K,...O},temporaryId:crypto.randomUUID()})},Ne=(H,K)=>{o({userType:"assistant",content:H,metaData:{messageKind:"conversation",authorType:"customer_support_operator",...K},temporaryId:crypto.randomUUID()})},q=(H,K)=>{W.current?.close(H,K),W.current=null},De=()=>{pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null),Q.current=0,U.current=null,z.current=null,F.current=!1,I(null),y(null),_("idle"),h("ai")},ze=(H,K)=>{q(H,K),De()};C.useEffect(()=>{te.current!==d&&(te.current=d,v.current=!0,ze("Starting new conversation",{notifyServer:!0}))},[d]),C.useEffect(()=>{t.discussionId===null&&v.current&&b===null&&p==="ai"&&(v.current=!1)},[p,t.discussionId,b]);const $e=H=>{F.current||(F.current=!0,U.current=null,W.current=null,H?.discussionId&&a(H.discussionId),s("notLoading"),I(null),_("closed"),h("customer_support"),y(K=>{if(!K)return K;const O=new Date().toISOString();return{...K,status:"closed",discussionId:H?.discussionId??K.discussionId,updatedAt:O,closedAt:H?.closedAt??O,closedReason:H?.reason,isWaitingForFirstProviderReply:!1}}))},ht=(H,K)=>{W.current&&q("Replacing customer support socket"),_("connecting");let O=!1,M=!1;const X=Z=>{I(Z),_("failed"),s("notLoading")},le=Z=>{W.current=null;const Se=Fx(Q.current);if(!Se.shouldRetry){i.error("Customer support socket reconnect exhausted code="+Z.code+" reason="+(Z.reason||"none")),X("connection_error");return}Q.current+=1,_("connecting"),h("customer_support_connecting"),i.log("Customer support socket reconnect scheduled attempt="+Q.current+" delayMs="+Se.delayMs+" code="+Z.code),pe.current=window.setTimeout(()=>{pe.current=null,!(G.current||F.current)&&ht(H,{...K,addConnectedMessage:O?!1:K?.addConnectedMessage})},Se.delayMs)};W.current=new Lx({apiUrl:gt.getApiUrl(),appToken:e,handoff:H,callbacks:{onConnected:Z=>{const Se=H.reconnectToken??H.handoffToken;if(!Se){$e({reason:"Missing reconnect token"});return}O=!0,Q.current=0,K?.isStoredReconnect&&(z.current=null);const tt=new Date().toISOString();a(Z.discussionId),I(null),_("connected"),h("customer_support"),s("notLoading"),y(Ke=>{const at=Kc(Ke)?Ke:null;return{mode:"live_chat",status:"active",discussionId:Z.discussionId,socketUrl:H.socketUrl,reconnectToken:Se,reconnectTokenExpiresAt:Z.reconnectTokenExpiresAt??H.reconnectTokenExpiresAt,customerSupportSessionId:Z.customerSupportSessionId??H.customerSupportSessionId,provider:at?.provider,isWaitingForFirstProviderReply:at?.isWaitingForFirstProviderReply??!0,fallbackContactCapture:at?.fallbackContactCapture,startedAt:at?.startedAt??tt,updatedAt:tt}}),K?.addConnectedMessage!==!1&&ie(r.connected,"customer_support_connected")},onProviderMessage:Z=>{I(null),_("connected"),A(Se=>Se==="submitted"?Se:"idle"),y(Se=>!Se||Se.mode==="closed_hours_contact_capture"?Se:{...Se,status:"active",provider:Z.provider??Se.provider,reconnectTokenExpiresAt:Z.reconnectTokenExpiresAt??Se.reconnectTokenExpiresAt,isWaitingForFirstProviderReply:!1,updatedAt:new Date().toISOString()}),Ne(Z.text,{customerSupportAuthorName:Kx(Z.authorName),customerSupportProvider:Z.provider}),u?.()},onClosed:Z=>{M=!0,$e({reason:Z.reason,closedAt:Z.closedAt,discussionId:Z.discussionId})},onError:Z=>{M=!0,i.error("Customer support socket server error code="+Z.code+" message="+Z.message),X(Px(Z.code))},onClose:Z=>{G.current||F.current||M||le(Z)},onTransportError:Z=>{i.error(`Customer support socket transport error readyState=${Z.readyState} url=${Z.url}`)}}})};C.useEffect(()=>{const H=z.current;if(!H)return;const K=Xc(H,t.discussionId);if(K!=="discussion_not_loaded"){if(K==="session_closed"){z.current=null,_("closed"),h("customer_support");return}if(K){z.current=null,y(O=>O?.discussionId===t.discussionId?O:null),_("idle"),h("ai");return}W.current||(_("connecting"),h("customer_support_connecting"),ht({mode:"live_chat",transport:"socket",socketUrl:H.socketUrl,reconnectToken:H.reconnectToken,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,discussionId:H.discussionId,fallbackContactCapture:H.fallbackContactCapture},{addConnectedMessage:!1,isStoredReconnect:!0}))}},[t.discussionId]);const Rt=H=>{if(H.mode==="closed_hours_contact_capture"){be(H);return}const K=H.reconnectToken??H.handoffToken;if(!H.discussionId||!K){ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0});return}const O=new Date().toISOString();U.current=H,F.current=!1,A("idle"),y({mode:"live_chat",status:"connecting",discussionId:H.discussionId,socketUrl:H.socketUrl,reconnectToken:K,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,isWaitingForFirstProviderReply:!0,fallbackContactCapture:H.fallbackContactCapture,startedAt:O,updatedAt:O}),_("connecting"),h("customer_support_connecting"),ie(r.connecting,"customer_support_connecting")},Be=()=>{const H=U.current;!H||H.mode!=="live_chat"||(U.current=null,ht(H))},pt=H=>p!=="customer_support"||w!=="connected"||!Ae||!W.current?(ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0}),!1):(W.current.sendCustomerMessage(H),!0);C.useEffect(()=>{if(!T?.enabled||!Y||!Ae||w!=="connected"||L!=="idle")return;const H=Math.max(1,T.timeoutMinutes)*60*1e3,K=window.setTimeout(()=>{A("visible")},H);return()=>window.clearTimeout(K)},[T,L,Ae,Y,w]);const et=async({email:H,phone:K})=>{if(!b?.customerSupportSessionId||!b.reconnectToken)return!1;A("submitting");const O=`${gt.getApiUrl()}/customer-support/sessions/${b.customerSupportSessionId}/fallback-contact`;return(await fetch(O,gt.getFetchConfig({httpVerb:"POST",contentType:"application/json",body:{reconnectToken:b.reconnectToken,reasonType:"fallback_no_reply",email:H,phone:K}}))).ok?(A("submitted"),q("Fallback contact submitted"),$e({reason:"fallback_contact_submitted",discussionId:b.discussionId}),!0):(A("failed"),!1)},be=H=>{if(!H.discussionId){ie(r.connectionError,"customer_support_connection_error",{isErrorMessage:!0});return}const K=new Date().toISOString();U.current=null,F.current=!1,q("Closed-hours contact capture"),y({mode:"closed_hours_contact_capture",status:"active",discussionId:H.discussionId,reconnectToken:H.reconnectToken,reconnectTokenExpiresAt:H.reconnectTokenExpiresAt,customerSupportSessionId:H.customerSupportSessionId,closedHoursContactCapture:H.closedHoursContactCapture,businessHours:H.businessHours,startedAt:K,updatedAt:K}),_("idle"),h("customer_support"),s("notLoading"),$("visible")},ve=async({email:H,phone:K,reason:O})=>{if(b?.mode!=="closed_hours_contact_capture")return!1;$("submitting");const M=gt.getApiUrl()+"/customer-support/sessions/"+b.customerSupportSessionId+"/fallback-contact";return(await fetch(M,gt.getFetchConfig({httpVerb:"POST",contentType:"application/json",body:{reconnectToken:b.reconnectToken,reasonType:"closed_hours",email:H,phone:K,reason:O}}))).ok?($("submitted"),$e({reason:"closed_hours_contact_submitted",discussionId:b.discussionId}),!0):($("failed"),!1)};return C.useEffect(()=>{if(se&&b&&b.status!=="closed"&&t.discussionId!==b.discussionId&&t.discussionId===null){if(v.current)return;a(b.discussionId);return}},[t.discussionId,b,se,w,a]),{chatTransportMode:p,socketStatus:w,isCustomerSupportMode:se,isCustomerSupportClosed:we,customerSupportStatusMessage:m,isCustomerSupportInputDisabled:ae,customerSupportInputDisabledReason:ne,enterCustomerSupportMode:Rt,flushPendingCustomerSupportHandoff:Be,sendToCustomerSupport:pt,fallbackContactCaptureConfig:T,fallbackContactCaptureStatus:L,shouldDisplayFallbackContactCapture:V,submitFallbackContactCapture:et,closedHoursContactCaptureConfig:J,closedHoursBusinessHours:de,closedHoursContactCaptureStatus:k,shouldDisplayClosedHoursContactCapture:ue,submitClosedHoursContactCapture:ve}}const Zc=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Search",id:"chatbot.chatline.loading.function.search"}),n=e.formatMessage({defaultMessage:"Looking into the cavern",id:"chatbot.chatline.loading.function.extractProductName"}),r=e.formatMessage({defaultMessage:"Consulting the shadocks",id:"chatbot.chatline.loading.function.suggestProductName"}),i=e.formatMessage({defaultMessage:"Looking for ziboublis",id:"chatbot.chatline.loading.function.criteriaDefinition"}),a=e.formatMessage({defaultMessage:"Searching Stock",id:"chatbot.chatline.loading.function.searchStock"}),s=e.formatMessage({defaultMessage:"Step",id:"chatbot.chatline.loading.function.step"}),o=e.formatMessage({defaultMessage:"I'm looking for products",id:"chatbot.chatline.loading.function.genericSearchMessage"}),u=e.formatMessage({defaultMessage:"Searching ...",id:"chatbot.chatline.loading.stepName.search"}),c=e.formatMessage({defaultMessage:"Building Query ...",id:"chatbot.chatline.loading.stepName.building"}),d=e.formatMessage({defaultMessage:"Analyzing ...",id:"chatbot.chatline.loading.stepName.analyzing"}),f=e.formatMessage({defaultMessage:"Writing answer",id:"chatbot.chatline.loading.stepName.redacting"}),p=e.formatMessage({defaultMessage:"Cancel",id:"chatbot.chatline.loading.cancel"}),h=e.formatMessage({defaultMessage:"see recent messages",id:"chatbot.chatline.seeRecentMessages"}),b=w=>w?w.includes("ExtractProductNames")?n:w.includes("SuggestProductNames")?r:w==="Recherche ..."?u:w==="Construction ..."?c:w==="Analyse ..."?d:w==="Rédaction"?f:w.includes("CreateCriteriasFromProductNames")||w.includes("CreateCriteriasOrProductNamesFromDiscussion")?i:w.includes("SearchStock")?a:"":t,y=b();return{searchTranslation:t,extractProductNameTranslation:n,criteriaDefinitionTranslation:i,searchStockTranslation:a,stepTranslation:s,getCurrentStepTranslated:b,defaultStartingStep:y,lookingForProductTranslation:o,cancelTranslation:p,recentMessagesTranslation:h}},iS=({})=>{const{companySettings:e}=C.useContext(rn);return x.jsx("div",{className:`search
105
105
  transition
106
106
  ease-in-out
107
107
  delay-50
108
108
  flex
109
109
  justify-center
110
110
  items-center
111
- `,children:x.jsx(Sa,{facet:e.agent.display[ce.AgentDisplayFacetRoleType.SEARCH]})})},iS=({loadingStatus:e,currentStepName:t,currentStepNumber:n,numberOfSteps:r})=>{const{getCurrentStepTranslated:i,stepTranslation:a,lookingForProductTranslation:s}=Zc();return x.jsx(x.Fragment,{children:e==="loadingIntermediaryStates"&&x.jsxs("div",{children:[x.jsxs("div",{children:[x.jsx("p",{className:"text-center my-2 text-lg",children:s}),x.jsx("p",{className:"text-center my-1 text-md",children:t&&`${i(t)}`}),n&&x.jsxs("p",{className:"text-center my-2",children:[a,x.jsx("span",{children:" "}),n,"/",r]})]}),x.jsx("div",{className:"flex justify-center",children:x.jsx(rS,{})})]})})},aS=({onPressLoadingButton:e})=>x.jsx("div",{children:x.jsx("button",{className:`
111
+ `,children:x.jsx(Sa,{facet:e.agent.display[ce.AgentDisplayFacetRoleType.SEARCH]})})},aS=({loadingStatus:e,currentStepName:t,currentStepNumber:n,numberOfSteps:r})=>{const{getCurrentStepTranslated:i,stepTranslation:a,lookingForProductTranslation:s}=Zc();return x.jsx(x.Fragment,{children:e==="loadingIntermediaryStates"&&x.jsxs("div",{children:[x.jsxs("div",{children:[x.jsx("p",{className:"text-center my-2 text-lg",children:s}),x.jsx("p",{className:"text-center my-1 text-md",children:t&&`${i(t)}`}),n&&x.jsxs("p",{className:"text-center my-2",children:[a,x.jsx("span",{children:" "}),n,"/",r]})]}),x.jsx("div",{className:"flex justify-center",children:x.jsx(iS,{})})]})})},sS=({onPressLoadingButton:e})=>x.jsx("div",{children:x.jsx("button",{className:`
112
112
  absolute
113
113
  bg-white
114
114
  md:bottom-2
@@ -119,13 +119,13 @@ For more details see https://formatjs.io/docs/getting-started/message-distributi
119
119
  disabled:opacity-10
120
120
  disabled:text-gray-400
121
121
  enabled:bg-white
122
- text-white p-0.5 border border-white rounded-lg dark:border-white dark:bg-white transition-colors chatsystem-stop-button`,"data-testid":"send-button",onClick:e,type:"button",style:{outline:"none"},tabIndex:-1,onMouseDown:t=>t.preventDefault(),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&t.preventDefault()},onKeyUp:t=>{(t.key==="Enter"||t.key===" ")&&t.preventDefault()},children:x.jsx("span",{className:"","data-state":"closed",children:x.jsxs("svg",{fill:"#000000",height:"24",width:"24",version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 297 297",children:[x.jsx("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),x.jsx("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),x.jsxs("g",{id:"SVGRepo_iconCarrier",children:[" ",x.jsx("path",{d:"M148.5,0C66.486,0,0,66.486,0,148.5S66.486,297,148.5,297S297,230.514,297,148.5S230.514,0,148.5,0z M213.292,190.121 c0,12.912-10.467,23.379-23.378,23.379H106.67c-12.911,0-23.378-10.467-23.378-23.379v-83.242c0-12.912,10.467-23.379,23.378-23.379 h83.244c12.911,0,23.378,10.467,23.378,23.379V190.121z"})," "]})]})})})}),sS=e=>{const t=C.useRef(null),[n,r]=C.useState(!1),i=C.useRef(!0),a=C.useRef(!1),s=C.useRef(0),o=()=>{const d=t.current,f=4;if(d){d.scrollTop<s.current-1&&(a.current=!1);const h=d.scrollHeight>d.clientHeight,b=d.scrollHeight-d.scrollTop<=d.clientHeight+f;r(h&&!b),i.current=b,s.current=d.scrollTop}},u=({smooth:d=!1,sticky:f=!1})=>{const p=t.current;f?(a.current=!0,i.current=!0):p&&p.scrollTo({top:p.scrollHeight,behavior:d?"smooth":"auto"}),p&&a.current&&p.scrollTo({top:p.scrollHeight,behavior:d?"smooth":"auto"})};return C.useEffect(()=>{o()},[e.length]),C.useEffect(()=>{const d=t.current;if(d)return d.addEventListener("scroll",o),o(),()=>{d.removeEventListener("scroll",o)}},[]),C.useLayoutEffect(()=>{a.current&&u({smooth:!1})},[e.length]),{scrollToBottom:u,removeStickyNess:()=>{a.current=!1},messagesContainerRef:t,showScrollButton:n}},oS=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Discussion limit reached",id:"chatbot.DiscussionLimitReached.title"}),n=e.formatMessage({defaultMessage:"The discussion has reached its maximum number of messages. Please start a new one.",id:"chatbot.DiscussionLimitReached.explaination"}),r=e.formatMessage({defaultMessage:"Restart",id:"chatbot.DiscussionLimitReached.cta"});return{DiscussionLimitReachedTitleTranslation:t,DiscussionLimitReachedExplainationTranslation:n,DiscussionLimitReachedCtaTranslation:r}},uS=e=>Ue.createElement("svg",{width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},Ue.createElement("g",{clipPath:"url(#clip0_1276_7761)"},Ue.createElement("path",{d:"M19.7285 10.9288C20.4413 13.5978 19.7507 16.5635 17.6569 18.6573C15.1798 21.1344 11.4826 21.6475 8.5 20.1966M18.364 8.05071L17.6569 7.3436C14.5327 4.21941 9.46736 4.21941 6.34316 7.3436C3.42964 10.2571 3.23318 14.8588 5.75376 18M18.364 8.05071H14.1213M18.364 8.05071V3.80807",stroke:"#1C274C",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})),Ue.createElement("defs",null,Ue.createElement("clipPath",{id:"clip0_1276_7761"},Ue.createElement("rect",{width:24,height:24,fill:"white"})))),lS=({onReset:e})=>{const{DiscussionLimitReachedCtaTranslation:t,DiscussionLimitReachedExplainationTranslation:n,DiscussionLimitReachedTitleTranslation:r}=oS();return x.jsx(x.Fragment,{children:x.jsx("div",{className:"px-3 mt-4",children:x.jsxs("div",{role:"status","aria-live":"polite",className:"info-banner not-prose flex items-start gap-3 rounded-lg bg-blue-50 border-l-4 border-blue-500 p-4 shadow-sm",children:[x.jsx("div",{className:"flex flex-col justify-center items-center mx-3",children:x.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",className:"!w-5 !h-5 mt-0.5 flex-shrink-0 pointer-events-none",children:x.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16Zm.75-11.5a.75.75 0 10-1.5 0 .75.75 0 001.5 0ZM9 8.75A.75.75 0 019.75 8h.5a.75.75 0 01.75.75v5a.75.75 0 01-.75.75h-.5A.75.75 0 019 13.75v-5Z",clipRule:"evenodd"})})}),x.jsxs("div",{className:"flex-1 min-w-0",children:[x.jsx("p",{className:"font-semibold",children:r}),x.jsx("p",{className:"text-sm break-words",children:n}),x.jsx("div",{className:"my-2",children:x.jsxs("button",{type:"button",onClick:e,title:t,"aria-label":t,className:`group inline-flex items-center gap-2 rounded-full px-3 py-1.5
122
+ text-white p-0.5 border border-white rounded-lg dark:border-white dark:bg-white transition-colors chatsystem-stop-button`,"data-testid":"send-button",onClick:e,type:"button",style:{outline:"none"},tabIndex:-1,onMouseDown:t=>t.preventDefault(),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&t.preventDefault()},onKeyUp:t=>{(t.key==="Enter"||t.key===" ")&&t.preventDefault()},children:x.jsx("span",{className:"","data-state":"closed",children:x.jsxs("svg",{fill:"#000000",height:"24",width:"24",version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 297 297",children:[x.jsx("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),x.jsx("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),x.jsxs("g",{id:"SVGRepo_iconCarrier",children:[" ",x.jsx("path",{d:"M148.5,0C66.486,0,0,66.486,0,148.5S66.486,297,148.5,297S297,230.514,297,148.5S230.514,0,148.5,0z M213.292,190.121 c0,12.912-10.467,23.379-23.378,23.379H106.67c-12.911,0-23.378-10.467-23.378-23.379v-83.242c0-12.912,10.467-23.379,23.378-23.379 h83.244c12.911,0,23.378,10.467,23.378,23.379V190.121z"})," "]})]})})})}),oS=e=>{const t=C.useRef(null),[n,r]=C.useState(!1),i=C.useRef(!0),a=C.useRef(!1),s=C.useRef(0),o=()=>{const d=t.current,f=4;if(d){d.scrollTop<s.current-1&&(a.current=!1);const h=d.scrollHeight>d.clientHeight,b=d.scrollHeight-d.scrollTop<=d.clientHeight+f;r(h&&!b),i.current=b,s.current=d.scrollTop}},u=({smooth:d=!1,sticky:f=!1})=>{const p=t.current;f?(a.current=!0,i.current=!0):p&&p.scrollTo({top:p.scrollHeight,behavior:d?"smooth":"auto"}),p&&a.current&&p.scrollTo({top:p.scrollHeight,behavior:d?"smooth":"auto"})};return C.useEffect(()=>{o()},[e.length]),C.useEffect(()=>{const d=t.current;if(d)return d.addEventListener("scroll",o),o(),()=>{d.removeEventListener("scroll",o)}},[]),C.useLayoutEffect(()=>{a.current&&u({smooth:!1})},[e.length]),{scrollToBottom:u,removeStickyNess:()=>{a.current=!1},messagesContainerRef:t,showScrollButton:n}},uS=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Discussion limit reached",id:"chatbot.DiscussionLimitReached.title"}),n=e.formatMessage({defaultMessage:"The discussion has reached its maximum number of messages. Please start a new one.",id:"chatbot.DiscussionLimitReached.explaination"}),r=e.formatMessage({defaultMessage:"Restart",id:"chatbot.DiscussionLimitReached.cta"});return{DiscussionLimitReachedTitleTranslation:t,DiscussionLimitReachedExplainationTranslation:n,DiscussionLimitReachedCtaTranslation:r}},lS=e=>Ue.createElement("svg",{width:"800px",height:"800px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},Ue.createElement("g",{clipPath:"url(#clip0_1276_7761)"},Ue.createElement("path",{d:"M19.7285 10.9288C20.4413 13.5978 19.7507 16.5635 17.6569 18.6573C15.1798 21.1344 11.4826 21.6475 8.5 20.1966M18.364 8.05071L17.6569 7.3436C14.5327 4.21941 9.46736 4.21941 6.34316 7.3436C3.42964 10.2571 3.23318 14.8588 5.75376 18M18.364 8.05071H14.1213M18.364 8.05071V3.80807",stroke:"#1C274C",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})),Ue.createElement("defs",null,Ue.createElement("clipPath",{id:"clip0_1276_7761"},Ue.createElement("rect",{width:24,height:24,fill:"white"})))),cS=({onReset:e})=>{const{DiscussionLimitReachedCtaTranslation:t,DiscussionLimitReachedExplainationTranslation:n,DiscussionLimitReachedTitleTranslation:r}=uS();return x.jsx(x.Fragment,{children:x.jsx("div",{className:"px-3 mt-4",children:x.jsxs("div",{role:"status","aria-live":"polite",className:"info-banner not-prose flex items-start gap-3 rounded-lg bg-blue-50 border-l-4 border-blue-500 p-4 shadow-sm",children:[x.jsx("div",{className:"flex flex-col justify-center items-center mx-3",children:x.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",className:"!w-5 !h-5 mt-0.5 flex-shrink-0 pointer-events-none",children:x.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16Zm.75-11.5a.75.75 0 10-1.5 0 .75.75 0 001.5 0ZM9 8.75A.75.75 0 019.75 8h.5a.75.75 0 01.75.75v5a.75.75 0 01-.75.75h-.5A.75.75 0 019 13.75v-5Z",clipRule:"evenodd"})})}),x.jsxs("div",{className:"flex-1 min-w-0",children:[x.jsx("p",{className:"font-semibold",children:r}),x.jsx("p",{className:"text-sm break-words",children:n}),x.jsx("div",{className:"my-2",children:x.jsxs("button",{type:"button",onClick:e,title:t,"aria-label":t,className:`group inline-flex items-center gap-2 rounded-full px-3 py-1.5
123
123
  font-medium text-blue-700 dark:text-blue-300
124
124
  bg-blue-50/70 hover:bg-blue-100 dark:bg-blue-900/20 dark:hover:bg-blue-900/30
125
125
  ring-1 ring-inset ring-blue-600/20 hover:ring-blue-600/30
126
126
  shadow-sm transition-all duration-200
127
127
  focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600/50
128
- active:scale-[0.98]`,children:[x.jsx(uS,{"aria-hidden":"true",className:"w-5 h-5 transition-transform duration-200 group-hover:rotate-180"}),x.jsx("span",{children:t})]})})]})]})})})},cS=({onClick:e,label:t="voir les messages plus récents",className:n})=>{const[r,i]=C.useState(!1);return C.useEffect(()=>{const a=requestAnimationFrame(()=>i(!0));return()=>cancelAnimationFrame(a)},[]),x.jsx("button",{onClick:e,className:["absolute z-10 select-none outline-none","bottom-20 right-8 left-auto translate-x-0 top-auto","transition-all duration-300 ease-out",r?"opacity-100 translate-y-0":"opacity-0 -translate-y-1",n??""].join(" "),"aria-label":t,title:t,children:x.jsx("span",{className:["inline-flex items-center justify-center","w-9 h-9","rounded-full bg-white shadow-md","hover:shadow-lg transition-shadow","p-2"].join(" "),children:x.jsx(ou,{className:"w-4 h-4",fill:"#64748b"})})})},Jc=C.createContext({currentConversation:{items:[],discussionId:null},setCurrentConversation:()=>{},archivedConversation:{items:[],discussionId:null},setArchivedConversation:()=>{},chatboxBootState:{mode:At.ai,customerSupportState:null,reason:"context_default"},setChatboxBootState:()=>{},resetConversationRequestId:0,resetConversation:()=>{}}),ts=()=>{const e=C.useContext(Jc);if(!e)throw new Error("useChatbotConversation must be used within ChatbotInitialtextContext.Provider");const{currentConversation:t,setCurrentConversation:n,archivedConversation:r,setArchivedConversation:i,chatboxBootState:a,setChatboxBootState:s,resetConversationRequestId:o,resetConversation:u}=e,c=L=>{n(A=>({...A,discussionId:L}))},d=L=>{n(A=>({...A,items:L}))},f=L=>{n(A=>({...A,items:[...A.items,L]}))},p=({messageStreamId:L,role:A})=>{n(k=>({...k,items:[...k.items,{userType:A,content:"",metaData:{messageStreamId:L},temporaryId:crypto.randomUUID()}]}))},h=()=>{n(L=>({...L,items:L.items.filter(A=>!(A.content?.length===0&&A.userType==="assistant"))}))},b=()=>{n(L=>{const A=[...L.items];return A.pop(),{...L,items:A}})},y=L=>{n(A=>({...A,updatedAt:L.updatedAt}))},w=()=>{i({discussionId:null,items:[],updatedAt:null})};return{currentConversation:t,setCurrentConversation:n,setCurrentConversationId:c,setCurrentConversationMetadata:y,resetConversation:u,setCurrentConversationItems:d,addMessageToCurrentConversation:f,removeEmptyAssistantMessageFromCurrentConversation:h,removeLastMessageFromCurrentConversation:b,updateCurrentConversationLastMessage:({newContent:L})=>{n(A=>{const k=[...A.items],$=k.length-1,W=k[$];return k[$]={...W,content:W.content=L},{...A,items:k}})},archivedConversation:r,chatboxBootState:a,setChatboxBootState:s,resetConversationRequestId:o,setArchivedConversationAsMain:()=>{n(r),w()},addEmptyMessageToCurrentConversation:p,updateCurrentConversationMessageById:({newContent:L,id:A})=>{n(k=>{const $=[...k.items],W=$.findIndex(v=>v.metaData?.messageStreamId===A),te=$[W];return $[W]={...te,content:te.content=L},{...k,items:$}})}}},Xo=({message:e,actionLabel:t,onClick:n})=>x.jsxs("div",{className:"mt-3 flex items-start gap-2 rounded-md border border-sky-100 bg-sky-50 px-3 py-2 text-xs text-sky-900 shadow-sm",children:[x.jsx("div",{className:"mt-0.5 inline-flex h-4 w-4 items-center justify-center rounded-full bg-sky-500 text-[10px] font-semibold text-white",children:"i"}),x.jsxs("div",{className:"flex-1",children:[x.jsx("p",{className:"leading-snug",children:e}),x.jsx("button",{type:"button",onClick:n,className:"mt-1 inline-flex items-center text-[11px] font-medium text-sky-700 hover:text-sky-900 hover:underline",children:t})]})]}),dS=({config:e,status:t,labels:n,onSubmit:r})=>{const[i,a]=C.useState(""),[s,o]=C.useState(""),u=t==="submitting",c=t==="submitted";return x.jsx("div",{className:["customer-support-fallback",c?"customer-support-fallback--success":"",u?"customer-support-fallback--submitting":""].join(" "),children:c?x.jsxs("div",{className:"customer-support-fallback__success",children:[x.jsx("span",{className:"customer-support-fallback__check","aria-hidden":"true",children:"✓"}),x.jsx("p",{children:n.success})]}):x.jsxs("form",{className:"customer-support-fallback__form",onSubmit:async d=>{d.preventDefault(),await r({email:i,phone:s})},children:[x.jsxs("div",{className:"customer-support-fallback__copy",children:[x.jsx("strong",{children:n.title}),x.jsx("p",{children:n.description})]}),x.jsxs("div",{className:"customer-support-fallback__fields",children:[x.jsx("input",{type:"email",value:i,required:e.requireEmail,disabled:u,placeholder:n.email,"aria-label":n.email,onChange:d=>a(d.currentTarget.value)}),x.jsx("input",{type:"tel",value:s,required:e.requirePhone,disabled:u,placeholder:n.phone,"aria-label":n.phone,onChange:d=>o(d.currentTarget.value)})]}),t==="failed"&&x.jsx("p",{className:"customer-support-fallback__error",children:n.error}),x.jsxs("button",{className:"customer-support-fallback__submit",type:"submit",disabled:u,children:[u&&x.jsx("span",{className:"customer-support-fallback__spinner","aria-hidden":"true"}),x.jsx("span",{children:u?n.submitting:n.submit})]})]})})},fS=({config:e,status:t,scheduleLabel:n,labels:r,onSubmit:i})=>{const[a,s]=C.useState(""),[o,u]=C.useState(""),[c,d]=C.useState(""),f=t==="submitting",p=t==="submitted";return x.jsx("div",{className:["customer-support-fallback","customer-support-fallback--closed-hours",p?"customer-support-fallback--success":"",f?"customer-support-fallback--submitting":""].join(" "),children:p?x.jsxs("div",{className:"customer-support-fallback__success",children:[x.jsx("span",{className:"customer-support-fallback__check","aria-hidden":"true",children:"✓"}),x.jsx("p",{children:r.success})]}):x.jsxs("form",{className:"customer-support-fallback__form",onSubmit:async h=>{h.preventDefault(),await i({email:a,phone:o,reason:c})},children:[x.jsxs("div",{className:"customer-support-fallback__copy",children:[x.jsx("strong",{children:r.title}),x.jsx("p",{children:r.description}),n?x.jsxs("p",{className:"customer-support-fallback__schedule",children:[r.schedulePrefix," ",n]}):null]}),x.jsxs("div",{className:"customer-support-fallback__fields",children:[x.jsx("input",{type:"email",value:a,required:e.requireEmail,disabled:f,placeholder:r.email,"aria-label":r.email,onChange:h=>s(h.currentTarget.value)}),x.jsx("input",{type:"tel",value:o,required:e.requirePhone,disabled:f,placeholder:r.phone,"aria-label":r.phone,onChange:h=>u(h.currentTarget.value)}),x.jsx("textarea",{value:c,required:e.requireReason,disabled:f,placeholder:r.reason,"aria-label":r.reason,onChange:h=>d(h.currentTarget.value)})]}),t==="failed"&&x.jsx("p",{className:"customer-support-fallback__error",children:r.error}),x.jsxs("button",{className:"customer-support-fallback__submit",type:"submit",disabled:f,children:[f&&x.jsx("span",{className:"customer-support-fallback__spinner","aria-hidden":"true"}),x.jsx("span",{children:f?r.submitting:r.submit})]})]})})},hS=({onPressMicButton:e,isDisabled:t,className:n})=>x.jsx("div",{children:x.jsx("button",{className:`absolute
128
+ active:scale-[0.98]`,children:[x.jsx(lS,{"aria-hidden":"true",className:"w-5 h-5 transition-transform duration-200 group-hover:rotate-180"}),x.jsx("span",{children:t})]})})]})]})})})},dS=({onClick:e,label:t="voir les messages plus récents",className:n})=>{const[r,i]=C.useState(!1);return C.useEffect(()=>{const a=requestAnimationFrame(()=>i(!0));return()=>cancelAnimationFrame(a)},[]),x.jsx("button",{onClick:e,className:["absolute z-10 select-none outline-none","bottom-20 right-8 left-auto translate-x-0 top-auto","transition-all duration-300 ease-out",r?"opacity-100 translate-y-0":"opacity-0 -translate-y-1",n??""].join(" "),"aria-label":t,title:t,children:x.jsx("span",{className:["inline-flex items-center justify-center","w-9 h-9","rounded-full bg-white shadow-md","hover:shadow-lg transition-shadow","p-2"].join(" "),children:x.jsx(ou,{className:"w-4 h-4",fill:"#64748b"})})})},Jc=C.createContext({currentConversation:{items:[],discussionId:null},setCurrentConversation:()=>{},archivedConversation:{items:[],discussionId:null},setArchivedConversation:()=>{},chatboxBootState:{mode:At.ai,customerSupportState:null,reason:"context_default"},setChatboxBootState:()=>{},resetConversationRequestId:0,resetConversation:()=>{}}),ts=()=>{const e=C.useContext(Jc);if(!e)throw new Error("useChatbotConversation must be used within ChatbotInitialtextContext.Provider");const{currentConversation:t,setCurrentConversation:n,archivedConversation:r,setArchivedConversation:i,chatboxBootState:a,setChatboxBootState:s,resetConversationRequestId:o,resetConversation:u}=e,c=L=>{n(A=>({...A,discussionId:L}))},d=L=>{n(A=>({...A,items:L}))},f=L=>{n(A=>({...A,items:[...A.items,L]}))},p=({messageStreamId:L,role:A})=>{n(k=>({...k,items:[...k.items,{userType:A,content:"",metaData:{messageStreamId:L},temporaryId:crypto.randomUUID()}]}))},h=()=>{n(L=>({...L,items:L.items.filter(A=>!(A.content?.length===0&&A.userType==="assistant"))}))},b=()=>{n(L=>{const A=[...L.items];return A.pop(),{...L,items:A}})},y=L=>{n(A=>({...A,updatedAt:L.updatedAt}))},w=()=>{i({discussionId:null,items:[],updatedAt:null})};return{currentConversation:t,setCurrentConversation:n,setCurrentConversationId:c,setCurrentConversationMetadata:y,resetConversation:u,setCurrentConversationItems:d,addMessageToCurrentConversation:f,removeEmptyAssistantMessageFromCurrentConversation:h,removeLastMessageFromCurrentConversation:b,updateCurrentConversationLastMessage:({newContent:L})=>{n(A=>{const k=[...A.items],$=k.length-1,W=k[$];return k[$]={...W,content:W.content=L},{...A,items:k}})},archivedConversation:r,chatboxBootState:a,setChatboxBootState:s,resetConversationRequestId:o,setArchivedConversationAsMain:()=>{n(r),w()},addEmptyMessageToCurrentConversation:p,updateCurrentConversationMessageById:({newContent:L,id:A})=>{n(k=>{const $=[...k.items],W=$.findIndex(v=>v.metaData?.messageStreamId===A),te=$[W];return $[W]={...te,content:te.content=L},{...k,items:$}})}}},Xo=({message:e,actionLabel:t,onClick:n})=>x.jsxs("div",{className:"mt-3 flex items-start gap-2 rounded-md border border-sky-100 bg-sky-50 px-3 py-2 text-xs text-sky-900 shadow-sm",children:[x.jsx("div",{className:"mt-0.5 inline-flex h-4 w-4 items-center justify-center rounded-full bg-sky-500 text-[10px] font-semibold text-white",children:"i"}),x.jsxs("div",{className:"flex-1",children:[x.jsx("p",{className:"leading-snug",children:e}),x.jsx("button",{type:"button",onClick:n,className:"mt-1 inline-flex items-center text-[11px] font-medium text-sky-700 hover:text-sky-900 hover:underline",children:t})]})]}),fS=({config:e,status:t,labels:n,onSubmit:r})=>{const[i,a]=C.useState(""),[s,o]=C.useState(""),u=t==="submitting",c=t==="submitted";return x.jsx("div",{className:["customer-support-fallback",c?"customer-support-fallback--success":"",u?"customer-support-fallback--submitting":""].join(" "),children:c?x.jsxs("div",{className:"customer-support-fallback__success",children:[x.jsx("span",{className:"customer-support-fallback__check","aria-hidden":"true",children:"✓"}),x.jsx("p",{children:n.success})]}):x.jsxs("form",{className:"customer-support-fallback__form",onSubmit:async d=>{d.preventDefault(),await r({email:i,phone:s})},children:[x.jsxs("div",{className:"customer-support-fallback__copy",children:[x.jsx("strong",{children:n.title}),x.jsx("p",{children:n.description})]}),x.jsxs("div",{className:"customer-support-fallback__fields",children:[x.jsx("input",{type:"email",value:i,required:e.requireEmail,disabled:u,placeholder:n.email,"aria-label":n.email,onChange:d=>a(d.currentTarget.value)}),x.jsx("input",{type:"tel",value:s,required:e.requirePhone,disabled:u,placeholder:n.phone,"aria-label":n.phone,onChange:d=>o(d.currentTarget.value)})]}),t==="failed"&&x.jsx("p",{className:"customer-support-fallback__error",children:n.error}),x.jsxs("button",{className:"customer-support-fallback__submit",type:"submit",disabled:u,children:[u&&x.jsx("span",{className:"customer-support-fallback__spinner","aria-hidden":"true"}),x.jsx("span",{children:u?n.submitting:n.submit})]})]})})},hS=({config:e,status:t,scheduleLabel:n,labels:r,onSubmit:i})=>{const[a,s]=C.useState(""),[o,u]=C.useState(""),[c,d]=C.useState(""),f=t==="submitting",p=t==="submitted";return x.jsx("div",{className:["customer-support-fallback","customer-support-fallback--closed-hours",p?"customer-support-fallback--success":"",f?"customer-support-fallback--submitting":""].join(" "),children:p?x.jsxs("div",{className:"customer-support-fallback__success",children:[x.jsx("span",{className:"customer-support-fallback__check","aria-hidden":"true",children:"✓"}),x.jsx("p",{children:r.success})]}):x.jsxs("form",{className:"customer-support-fallback__form",onSubmit:async h=>{h.preventDefault(),await i({email:a,phone:o,reason:c})},children:[x.jsxs("div",{className:"customer-support-fallback__copy",children:[x.jsx("strong",{children:r.title}),x.jsx("p",{children:r.description}),n?x.jsxs("p",{className:"customer-support-fallback__schedule",children:[r.schedulePrefix," ",n]}):null]}),x.jsxs("div",{className:"customer-support-fallback__fields",children:[x.jsx("input",{type:"email",value:a,required:e.requireEmail,disabled:f,placeholder:r.email,"aria-label":r.email,onChange:h=>s(h.currentTarget.value)}),x.jsx("input",{type:"tel",value:o,required:e.requirePhone,disabled:f,placeholder:r.phone,"aria-label":r.phone,onChange:h=>u(h.currentTarget.value)}),x.jsx("textarea",{value:c,required:e.requireReason,disabled:f,placeholder:r.reason,"aria-label":r.reason,onChange:h=>d(h.currentTarget.value)})]}),t==="failed"&&x.jsx("p",{className:"customer-support-fallback__error",children:r.error}),x.jsxs("button",{className:"customer-support-fallback__submit",type:"submit",disabled:f,children:[f&&x.jsx("span",{className:"customer-support-fallback__spinner","aria-hidden":"true"}),x.jsx("span",{children:f?r.submitting:r.submit})]})]})})},pS=({onPressMicButton:e,isDisabled:t,className:n})=>x.jsx("div",{children:x.jsx("button",{className:`absolute
129
129
  bg-violet-600
130
130
  md:bottom-2
131
131
  md:right-3
@@ -144,12 +144,12 @@ For more details see https://formatjs.io/docs/getting-started/message-distributi
144
144
  transition-colors
145
145
  enabled:hover:scale-[1.02] active:scale-[0.98]
146
146
  chatsystem-mic-button
147
- ${n??""}`,"data-testid":"mic-button",onClick:e,disabled:t,type:"button","aria-label":"Start voice input",children:x.jsx("span",{"data-state":"closed",children:x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",className:"text-white dark:text-black",children:[x.jsx("path",{d:"M12 14.5c1.66 0 3-1.34 3-3V6.5c0-1.66-1.34-3-3-3s-3 1.34-3 3v5c0 1.66 1.34 3 3 3Z",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round"}),x.jsx("path",{d:"M12 14.5V18",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}),x.jsx("path",{d:"M8.5 18h7",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}),x.jsx("path",{d:"M7 11.5c0 2.76 2.24 5 5 5s5-2.24 5-5",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})})})});function pS(){const[e,t]=C.useState("idle"),[n,r]=C.useState(null),[i,a]=C.useState(0),s=C.useRef(null),o=C.useRef(null),u=C.useRef([]),c=C.useRef(null),d=C.useRef(null),f=C.useRef(null),p=C.useRef(null),h=C.useCallback(()=>{p.current!==null&&(cancelAnimationFrame(p.current),p.current=null);try{f.current?.disconnect()}catch{}f.current=null;try{d.current?.disconnect()}catch{}d.current=null;const N=c.current;c.current=null,N&&N.close().catch(()=>{}),a(0)},[]),b=C.useCallback(N=>{try{const I=new AudioContext,L=I.createAnalyser(),A=I.createMediaStreamSource(N);L.fftSize=256,L.smoothingTimeConstant=.85,A.connect(L),c.current=I,d.current=L,f.current=A;const k=new Uint8Array(L.fftSize),$=()=>{const W=d.current;if(!W)return;W.getByteTimeDomainData(k);let te=0;for(let z=0;z<k.length;z++){const F=(k[z]-128)/128;te+=F*F}const v=Math.sqrt(te/k.length),U=Math.min(1,v*6);a(U),p.current=requestAnimationFrame($)};p.current=requestAnimationFrame($)}catch{a(0)}},[]),y=C.useCallback(async()=>{r(null),h();try{const N=await navigator.mediaDevices.getUserMedia({audio:!0});o.current=N,b(N);const L=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg"].find(k=>MediaRecorder.isTypeSupported(k))||"",A=new MediaRecorder(N,L?{mimeType:L}:void 0);s.current=A,u.current=[],A.ondataavailable=k=>{k.data&&k.data.size>0&&u.current.push(k.data)},A.onerror=()=>{t("error"),r("Recorder error.")},A.onstart=()=>t("recording"),A.onstop=()=>t("stopped"),A.start()}catch(N){h(),t("error"),r(N?.message??"Microphone permission denied.")}},[b,h]),w=C.useCallback(async()=>{const N=s.current,I=o.current;return!N||e!=="recording"?null:new Promise(L=>{N.onstop=()=>{h();const A=N.mimeType||"audio/webm",k=new Blob(u.current,{type:A}),$=A.includes("ogg")?"ogg":"webm",W=new File([k],`voice-message.${$}`,{type:A});I?.getTracks().forEach(te=>te.stop()),o.current=null,s.current=null,L({blob:k,file:W})},N.stop()})},[e,h]),_=C.useCallback(()=>{const N=s.current,I=o.current;try{N&&e==="recording"&&N.stop()}catch{}h(),I?.getTracks().forEach(L=>L.stop()),o.current=null,s.current=null,u.current=[],t("idle")},[e,h]);return C.useEffect(()=>()=>{h(),o.current?.getTracks().forEach(N=>N.stop())},[h]),{state:e,error:n,audioLevel:i,start:y,stop:w,cancel:_}}const mS=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Recording...",id:"recordingOverlay.recording"}),n=e.formatMessage({defaultMessage:"Cancel",id:"recordingOverlay.cancel"}),r=e.formatMessage({defaultMessage:"Tap the mic to stop",id:"recordingOverlay.explaination"});return{recordingTranslation:t,cancelTranslation:n,recordingExplainationTranslation:r}},gS=({isOpen:e,onStop:t,onCancel:n,audioLevel:r=0})=>{if(!e)return null;const{recordingTranslation:i}=mS(),a=C.useMemo(()=>{const s=Math.max(0,Math.min(1,r));return Array.from({length:20},(o,u)=>{const c=Math.sin(u/19*Math.PI*2)*.5+.5,d=u%2===0?.9:.65,f=6+s*(14+c*18)*d;return Math.round(f)})},[r]);return x.jsx("div",{className:"relative mt-3 w-full rounded-lg border border-slate-400 bg-white p-1",role:"group","aria-label":"Recording voice message",children:x.jsxs("div",{className:"flex min-h-[48px] items-center gap-3 px-2",children:[x.jsxs("div",{className:"relative flex h-8 w-8 items-center justify-center",children:[x.jsx("span",{className:"absolute h-5 w-5 rounded-full bg-red-100 motion-safe:animate-ping","aria-hidden":!0}),x.jsx("span",{className:"absolute h-5 w-5 rounded-full bg-red-50","aria-hidden":!0}),x.jsx("span",{className:"absolute h-3.5 w-3.5 rounded-full bg-red-200","aria-hidden":!0}),x.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-red-500","aria-hidden":!0})]}),x.jsxs("div",{className:"min-w-0 flex-1",children:[x.jsx("div",{className:"mb-0.5 text-[11px] font-medium leading-3 text-slate-600",children:i}),x.jsx("div",{className:"flex h-5 items-center gap-[3px] overflow-hidden","aria-hidden":"true",children:a.map((s,o)=>x.jsx("span",{className:"block w-1 rounded-full bg-slate-400 transition-[height,background-color] duration-75",style:{height:`${s}px`,backgroundColor:r>.08?"rgb(59 130 246)":"rgb(148 163 184)"}},o))})]}),x.jsx("button",{type:"button",onClick:n,className:"flex h-9 w-9 items-center justify-center rounded-full text-slate-500 hover:bg-slate-100 hover:text-slate-700","aria-label":"Cancel recording",children:x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",children:x.jsx("path",{d:"M6 6l12 12M18 6L6 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})}),x.jsx("button",{type:"button",onClick:t,className:"flex h-9 w-9 items-center justify-center rounded-full bg-violet-600 text-white hover:bg-violet-700","aria-label":"Validate recording",children:x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",children:x.jsx("path",{d:"M5 13l4 4L19 7",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})})},bS=e=>/(\[.*|\!\[.*)$/.test(e),ES=e=>/\)/.test(e),Qo=()=>({rendered:"",markdownTag:"",isWritingTag:!1,lastStreamSourceUuid:null});class TS{buffers=new Map;callbacks;constructor(t){this.callbacks=t}handleStart(t){this.buffers.set(t.messageId,Qo()),t.role==="assistant"&&this.callbacks.onAssistantMessageStart?.(),this.callbacks.addEmptyMessage({messageStreamId:t.messageId,role:t.role})}handleDelta(t){this.ensureBufferExists(t.messageId);const n=this.buffers.get(t.messageId);this.appendSourceSeparatorIfNeeded(n,t.streamSourceUuid),this.appendDelta(n,t.delta),this.callbacks.updateMessage({id:t.messageId,newContent:n.rendered})}handleEnd(t){this.buffers.delete(t.messageId)}hasBuffer(t){return this.buffers.has(t)}ensureBufferExists(t){this.buffers.has(t)||(this.buffers.set(t,Qo()),this.callbacks.addEmptyMessage({messageStreamId:t,role:"assistant"}))}appendSourceSeparatorIfNeeded(t,n){t.lastStreamSourceUuid&&t.lastStreamSourceUuid!==n&&(t.rendered+='<span style="display:block;height:1rem;"></span>'),t.lastStreamSourceUuid=n??null}appendDelta(t,n){if(ES(n)){t.markdownTag+=n,t.rendered+=t.markdownTag,t.markdownTag="",t.isWritingTag=!1;return}if(t.isWritingTag||bS(n)){t.markdownTag+=n,t.isWritingTag=!0;return}t.rendered+=n}}const yS=30,xS=e=>{try{const t=e.split(".")[1];if(!t)return null;const n=t.replace(/-/g,"+").replace(/_/g,"/"),r=n.padEnd(n.length+(4-n.length%4)%4,"="),i=JSON.parse(atob(r));return typeof i.exp=="number"?i.exp:null}catch{return null}};class SS{token=null;expiresAt=null;pendingRequest=null;generation=0;provider;constructor(t){this.provider=t}clear(){this.generation+=1,this.token=null,this.expiresAt=null,this.pendingRequest=null}async getToken(t){if(!this.provider)return null;const n=Math.floor(Date.now()/1e3);if(this.token&&this.expiresAt!=null&&this.expiresAt-yS>n)return this.token;if(this.pendingRequest)return this.pendingRequest;const r=this.generation;let i;return i=this.provider.getToken(t).then(a=>{if(r!==this.generation)return null;if(!a)return this.clear(),null;const s=xS(a);return s==null||s<=Math.floor(Date.now()/1e3)?(this.clear(),null):(this.token=a,this.expiresAt=s,a)}).finally(()=>{this.pendingRequest===i&&(this.pendingRequest=null)}),this.pendingRequest=i,i}}const ed=C.createContext(void 0);let gr=new AbortController;const td=({appToken:e,agentId:t,containerClassName:n})=>{const r=_n(),i=C.useContext(ed);e||r.error("App Token missing");const a=C.useRef(null),s=C.useRef(null),o=C.useRef(i);(!s.current||o.current!==i)&&(o.current=i,s.current=new SS(i)),C.useEffect(()=>{const fe=s.current;if(!(!fe||!i))return fe.getToken({interactive:!1}).catch(()=>fe.clear()),i.subscribe?.(()=>{fe.clear(),fe.getToken({interactive:!1}).catch(()=>fe.clear())})},[i]);const{placeholderTranslation:u,genericErrorTranslation:c,tooManyRequestsTranslation:d,discussionFullErrorTranslation:f,infoBannerExplainationTranslation:p,infoBannerTitleTranslation:h,customerSupportConnectingTranslation:b,customerSupportConnectedTranslation:y,customerSupportConnectionErrorTranslation:w,customerSupportProviderUnavailableTranslation:_,customerSupportClosedTranslation:N,customerSupportRestartTranslation:I,customerSupportFallbackTitleTranslation:L,customerSupportFallbackDescriptionTranslation:A,customerSupportFallbackEmailTranslation:k,customerSupportFallbackPhoneTranslation:$,customerSupportFallbackSubmitTranslation:W,customerSupportFallbackSubmittingTranslation:te,customerSupportFallbackSuccessTranslation:v,customerSupportFallbackErrorTranslation:U,customerSupportClosedHoursTitleTranslation:z,customerSupportClosedHoursDescriptionTranslation:F,customerSupportClosedHoursSchedulePrefixTranslation:G,customerSupportClosedHoursReasonTranslation:Q,customerSupportClosedHoursSuccessTranslation:pe}=Gu(),{currentConversation:se,addEmptyMessageToCurrentConversation:Ae,addMessageToCurrentConversation:we,removeEmptyAssistantMessageFromCurrentConversation:m,resetConversation:Y,setCurrentConversationId:re,updateCurrentConversationMessageById:T,archivedConversation:J,chatboxBootState:de,resetConversationRequestId:V,setArchivedConversationAsMain:ue}=ts(),[ne,ae]=C.useState("notLoading"),{defaultStartingStep:ie,recentMessagesTranslation:Ne}=Zc(),[q,De]=C.useState(null),[ze,$e]=C.useState(ie),[ht,Rt]=C.useState(null),[Be,pt]=C.useState(!1),{scrollToBottom:et,showScrollButton:be,messagesContainerRef:ve,removeStickyNess:H}=sS(se.items),{chatTransportMode:K,isCustomerSupportMode:O,customerSupportStatusMessage:M,isCustomerSupportInputDisabled:X,enterCustomerSupportMode:le,flushPendingCustomerSupportHandoff:Z,sendToCustomerSupport:Se,fallbackContactCaptureConfig:tt,fallbackContactCaptureStatus:Ke,shouldDisplayFallbackContactCapture:at,submitFallbackContactCapture:qt,closedHoursContactCaptureConfig:Ye,closedHoursBusinessHours:Mt,closedHoursContactCaptureStatus:mt,shouldDisplayClosedHoursContactCapture:dd,submitClosedHoursContactCapture:fd}=nS({appToken:e,currentConversation:se,loadingStatus:ne,labels:{connecting:b,connected:y,connectionError:w,providerUnavailable:_,closed:N},logger:r,setCurrentConversationId:re,setLoadingStatus:ae,addMessageToCurrentConversation:we,onCustomerSupportOperatorMessage:()=>{window.requestAnimationFrame(()=>{et({smooth:!0,sticky:!1})})},chatboxBootState:de,resetConversationRequestId:V}),[is,ei]=C.useState(!1),{start:hd,stop:pd,cancel:md,audioLevel:gd}=pS(),{companySettings:ti}=C.useContext(rn),{appCurrentLang:as}=C.useContext(Vc),[bd,Ed]=C.useState(()=>{if(typeof window>"u")return!0;const fe=window.matchMedia("(pointer: coarse)"),Le=window.matchMedia("(hover: none)");return!(fe.matches||Le.matches)}),ni=C.useRef(null);ni.current||(ni.current=new TS({addEmptyMessage:Ae,updateMessage:T,onAssistantMessageStart:()=>ae("loadingDisplayedAnswer")}));const ri=ni.current;C.useEffect(()=>{if(typeof window>"u")return;const fe=window.matchMedia("(pointer: coarse)"),Le=window.matchMedia("(hover: none)"),We=()=>{Ed(!(fe.matches||Le.matches))};return We(),fe.addEventListener?(fe.addEventListener("change",We),Le.addEventListener("change",We)):(fe.addListener(We),Le.addListener(We)),()=>{fe.removeEventListener?(fe.removeEventListener("change",We),Le.removeEventListener("change",We)):(fe.removeListener(We),Le.removeListener(We))}},[]);const Td=ne!=="notLoading"||(se?.items?.length??0)>0,[yd,ss]=C.useState(!0),xd=!!J&&(J.items?.length??0)>0,Sd=()=>{ue(),ss(!1)},_d=!O&&(ne!=="notLoading"||Be)||O&&(ne!=="notLoading"||X),Cd={...Td?{maxHeight:"100vh"}:{height:"250px"}};C.useEffect(()=>{if(O){pt(!1);return}yx(se.items)>=ti?.api?.settings?.maxUserMessagesPerDiscussion&&pt(!0)},[ti?.api?.settings?.maxUserMessagesPerDiscussion,se.items,O]);const os=C.useRef(V);C.useEffect(()=>{os.current!==V&&(os.current=V,ae("notLoading"),pt(!1))},[V]);const Ad=()=>{gr.abort("Cancelling stream on purpose."),r.log("Stream request aborted"),ae("notLoading"),m()},wd=async fe=>{const Le=fe?.body?.getReader(),We=new TextDecoder,Nn=fe.headers.get("discussionId"),Tt=parseInt(Nn,10);Number.isNaN(Tt)||re(Tt),await new ReadableStream({start(Ot){return Rn();async function Rn(){if(!fe.ok){ae("notLoading");let Bt=c;fe.status===409?(Bt=f,pt(!0)):fe.status===429?Bt=d:Bt=c,we({userType:"assistant",content:Bt,metaData:{isErrorMessage:!0},temporaryId:crypto.randomUUID()}),gr=new AbortController;return}return Le?.read().then(Bt=>{const{done:Rd,value:Od}=Bt,Ld=We.decode(Od),Dd=Lt.transformNDJSONChunkIntoObjects(Ld);for(const Fe of Dd)if(Lt.isObjectOutputstreamMessageStartDTO(Fe))ri.handleStart(Fe);else if(Lt.isObjectOutputstreamMessageDeltaDTO(Fe))ri.handleDelta(Fe);else if(Lt.isObjectOutputstreamMessageEndDTO(Fe))ri.handleEnd(Fe);else if(Lt.isObjectOutputstreamLoadingCurrentStepNumberDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),Rt(nt)}else if(Lt.isObjectOutputstreamLoadingCurrentStepNameDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),$e(nt)}else if(Lt.isObjectOutputstreamLoadingNumberOfStepsDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),De(nt)}else if(Lt.isObjectOutputstreamClientEventDTO(Fe)){const nt=vx(Fe);nt.type==="customer_support_handoff_requested"?le(nt.payload):r.warn(`Client event not handled - ${Fe.event}`)}else if(Lt.isObjectOutputstreamErrorDTO(Fe)){const{message:nt}=Fe;we({userType:"assistant",metaData:{isErrorMessage:!0},content:nt,temporaryId:crypto.randomUUID()})}else r.warn(`Packet shape not handled - ${Fe}`);if(Rd){Ot.close(),ae("notLoading"),$e(ie),Rt(null),Z();return}return Rn()})}}}).pipeTo(new WritableStream)},vd=(fe,Le)=>{const We=gt.getApiUrl(),Nn=t?`?agentId=${encodeURIComponent(String(t))}`:"",Tt=`${We}/ai/prompt/${e}${Nn}`,ii=gr.signal;if(fe.mode==="text"){const Rn={query:fe.text,language:as.locale};se?.discussionId&&(Rn.discussionId=se.discussionId);const Bt=gt.getFetchConfig({httpVerb:"POST",body:Rn,contentType:"application/json",options:{signal:ii,headers:{...gt.getHeaders({contentType:"application/json"}),...Le?{Authorization:"Bearer "+Le}:{}}}});return{url:Tt,fetchConfig:Bt}}const Ot=new FormData;return Ot.append("language",as.locale),se?.discussionId&&Ot.append("discussionId",String(se.discussionId)),Ot.append("audioInput",fe.audioFile,fe.audioFile.name),{url:Tt,fetchConfig:{method:"POST",body:Ot,signal:ii,headers:Le?{Authorization:"Bearer "+Le}:void 0}}},us=async fe=>{ae("loadingIntermediaryStates"),requestAnimationFrame(()=>et({smooth:!1,sticky:!1}));let Le=null;try{Le=await s.current?.getToken({interactive:!1})??null}catch{s.current?.clear()}const{url:We,fetchConfig:Nn}=vd(fe,Le);fetch(We,Nn).then(async Tt=>{Tt.status===401&&Le&&s.current?.clear(),await wd(Tt)}).catch(Tt=>{r.error(Tt),ae("notLoading"),gr=new AbortController})},Id=async()=>{ei(!0),await hd()},kd=async()=>{const fe=await pd();ei(!1),fe&&us({mode:"audio",audioFile:fe.file})},Nd=()=>{md(),ei(!1)};return x.jsxs("div",{className:["chatbox-root relative p-2","flex flex-col min-h-0 overflow-visible","h-auto",n??"mx-auto"].join(" "),ref:a,style:Cd,children:[x.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 messagesContainer",ref:ve,children:[se.items.map((fe,Le)=>x.jsx(oy,{content:fe.content,userType:fe.userType,metaData:fe.metaData,context:{discussionId:se?.discussionId,messageIndex:Le,appToken:e},seenRootEl:ve.current},fe.temporaryId)),x.jsx(iS,{currentStepName:ze,currentStepNumber:ht,loadingStatus:ne,numberOfSteps:q})]}),be&&x.jsx(cS,{label:Ne,onClick:()=>et({smooth:!0,sticky:!0})}),!O&&Be&&x.jsx(lS,{onReset:Y}),dd&&Ye&&x.jsx(fS,{config:Ye,status:mt,scheduleLabel:Mt?.todayScheduleLabel,labels:{title:z,description:F,schedulePrefix:G,email:k,phone:$,reason:Q,submit:W,submitting:te,success:pe,error:U},onSubmit:fd}),at&&tt&&x.jsx(dS,{config:tt,status:Ke,labels:{title:L,description:A,email:k,phone:$,submit:W,submitting:te,success:v,error:U},onSubmit:qt}),M&&x.jsx(Xo,{actionLabel:I,message:M,onClick:Y}),xd&&yd&&x.jsx(Xo,{actionLabel:h,message:p,onClick:Sd}),x.jsx("div",{className:"chatbox-input-wrapper flex-shrink-0",children:is?x.jsx(gS,{isOpen:is,onStop:kd,onCancel:Nd,audioLevel:gd}):x.jsx(px,{classNameTextarea:"",classNameContainer:"relative mt-2 border-slate-400 border-[1px] rounded-lg p-1",SubmitComponent:mx,isDisabled:_d,shouldDisableIfInputIsEmpty:!0,"aria-label":"TextArea For Bot Conversation",onSubmit:fe=>{if(ss(!1),xx(fe)){const Le=Sx(fe,se.discussionId,Y);Le&&we({userType:"user",content:Le,temporaryId:crypto.randomUUID()}),H(),et({smooth:!0,sticky:!1})}else we({userType:"user",content:fe,temporaryId:crypto.randomUUID()}),H(),et({smooth:!0,sticky:!1}),K==="customer_support"?Se(fe):us({mode:"text",text:fe})},placeholder:u,autoFocus:bd,isLoadingStream:ne==="loadingDisplayedAnswer"||ne==="loadingIntermediaryStates",LoadingComponent:aS,onPressLoadingButton:Ad,onPressMicButton:()=>{Id()},MicComponent:hS,audioEnabled:ti?.agent?.isAudioAllowed&&!O})})]})};function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}function nd(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Ea(e,t){return Ea=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Ea(e,t)}function rd(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Ea(e,t)}var br={exports:{}};/*
147
+ ${n??""}`,"data-testid":"mic-button",onClick:e,disabled:t,type:"button","aria-label":"Start voice input",children:x.jsx("span",{"data-state":"closed",children:x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",className:"text-white dark:text-black",children:[x.jsx("path",{d:"M12 14.5c1.66 0 3-1.34 3-3V6.5c0-1.66-1.34-3-3-3s-3 1.34-3 3v5c0 1.66 1.34 3 3 3Z",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round"}),x.jsx("path",{d:"M12 14.5V18",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}),x.jsx("path",{d:"M8.5 18h7",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}),x.jsx("path",{d:"M7 11.5c0 2.76 2.24 5 5 5s5-2.24 5-5",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})})})});function mS(){const[e,t]=C.useState("idle"),[n,r]=C.useState(null),[i,a]=C.useState(0),s=C.useRef(null),o=C.useRef(null),u=C.useRef([]),c=C.useRef(null),d=C.useRef(null),f=C.useRef(null),p=C.useRef(null),h=C.useCallback(()=>{p.current!==null&&(cancelAnimationFrame(p.current),p.current=null);try{f.current?.disconnect()}catch{}f.current=null;try{d.current?.disconnect()}catch{}d.current=null;const N=c.current;c.current=null,N&&N.close().catch(()=>{}),a(0)},[]),b=C.useCallback(N=>{try{const I=new AudioContext,L=I.createAnalyser(),A=I.createMediaStreamSource(N);L.fftSize=256,L.smoothingTimeConstant=.85,A.connect(L),c.current=I,d.current=L,f.current=A;const k=new Uint8Array(L.fftSize),$=()=>{const W=d.current;if(!W)return;W.getByteTimeDomainData(k);let te=0;for(let z=0;z<k.length;z++){const F=(k[z]-128)/128;te+=F*F}const v=Math.sqrt(te/k.length),U=Math.min(1,v*6);a(U),p.current=requestAnimationFrame($)};p.current=requestAnimationFrame($)}catch{a(0)}},[]),y=C.useCallback(async()=>{r(null),h();try{const N=await navigator.mediaDevices.getUserMedia({audio:!0});o.current=N,b(N);const L=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg"].find(k=>MediaRecorder.isTypeSupported(k))||"",A=new MediaRecorder(N,L?{mimeType:L}:void 0);s.current=A,u.current=[],A.ondataavailable=k=>{k.data&&k.data.size>0&&u.current.push(k.data)},A.onerror=()=>{t("error"),r("Recorder error.")},A.onstart=()=>t("recording"),A.onstop=()=>t("stopped"),A.start()}catch(N){h(),t("error"),r(N?.message??"Microphone permission denied.")}},[b,h]),w=C.useCallback(async()=>{const N=s.current,I=o.current;return!N||e!=="recording"?null:new Promise(L=>{N.onstop=()=>{h();const A=N.mimeType||"audio/webm",k=new Blob(u.current,{type:A}),$=A.includes("ogg")?"ogg":"webm",W=new File([k],`voice-message.${$}`,{type:A});I?.getTracks().forEach(te=>te.stop()),o.current=null,s.current=null,L({blob:k,file:W})},N.stop()})},[e,h]),_=C.useCallback(()=>{const N=s.current,I=o.current;try{N&&e==="recording"&&N.stop()}catch{}h(),I?.getTracks().forEach(L=>L.stop()),o.current=null,s.current=null,u.current=[],t("idle")},[e,h]);return C.useEffect(()=>()=>{h(),o.current?.getTracks().forEach(N=>N.stop())},[h]),{state:e,error:n,audioLevel:i,start:y,stop:w,cancel:_}}const gS=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Recording...",id:"recordingOverlay.recording"}),n=e.formatMessage({defaultMessage:"Cancel",id:"recordingOverlay.cancel"}),r=e.formatMessage({defaultMessage:"Tap the mic to stop",id:"recordingOverlay.explaination"});return{recordingTranslation:t,cancelTranslation:n,recordingExplainationTranslation:r}},bS=({isOpen:e,onStop:t,onCancel:n,audioLevel:r=0})=>{if(!e)return null;const{recordingTranslation:i}=gS(),a=C.useMemo(()=>{const s=Math.max(0,Math.min(1,r));return Array.from({length:20},(o,u)=>{const c=Math.sin(u/19*Math.PI*2)*.5+.5,d=u%2===0?.9:.65,f=6+s*(14+c*18)*d;return Math.round(f)})},[r]);return x.jsx("div",{className:"relative mt-3 w-full rounded-lg border border-slate-400 bg-white p-1",role:"group","aria-label":"Recording voice message",children:x.jsxs("div",{className:"flex min-h-[48px] items-center gap-3 px-2",children:[x.jsxs("div",{className:"relative flex h-8 w-8 items-center justify-center",children:[x.jsx("span",{className:"absolute h-5 w-5 rounded-full bg-red-100 motion-safe:animate-ping","aria-hidden":!0}),x.jsx("span",{className:"absolute h-5 w-5 rounded-full bg-red-50","aria-hidden":!0}),x.jsx("span",{className:"absolute h-3.5 w-3.5 rounded-full bg-red-200","aria-hidden":!0}),x.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-red-500","aria-hidden":!0})]}),x.jsxs("div",{className:"min-w-0 flex-1",children:[x.jsx("div",{className:"mb-0.5 text-[11px] font-medium leading-3 text-slate-600",children:i}),x.jsx("div",{className:"flex h-5 items-center gap-[3px] overflow-hidden","aria-hidden":"true",children:a.map((s,o)=>x.jsx("span",{className:"block w-1 rounded-full bg-slate-400 transition-[height,background-color] duration-75",style:{height:`${s}px`,backgroundColor:r>.08?"rgb(59 130 246)":"rgb(148 163 184)"}},o))})]}),x.jsx("button",{type:"button",onClick:n,className:"flex h-9 w-9 items-center justify-center rounded-full text-slate-500 hover:bg-slate-100 hover:text-slate-700","aria-label":"Cancel recording",children:x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",children:x.jsx("path",{d:"M6 6l12 12M18 6L6 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})}),x.jsx("button",{type:"button",onClick:t,className:"flex h-9 w-9 items-center justify-center rounded-full bg-violet-600 text-white hover:bg-violet-700","aria-label":"Validate recording",children:x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",children:x.jsx("path",{d:"M5 13l4 4L19 7",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})})},ES=e=>/(\[.*|\!\[.*)$/.test(e),TS=e=>/\)/.test(e),Qo=()=>({rendered:"",markdownTag:"",isWritingTag:!1,lastStreamSourceUuid:null});class yS{buffers=new Map;callbacks;constructor(t){this.callbacks=t}handleStart(t){this.buffers.set(t.messageId,Qo()),t.role==="assistant"&&this.callbacks.onAssistantMessageStart?.(),this.callbacks.addEmptyMessage({messageStreamId:t.messageId,role:t.role})}handleDelta(t){this.ensureBufferExists(t.messageId);const n=this.buffers.get(t.messageId);this.appendSourceSeparatorIfNeeded(n,t.streamSourceUuid),this.appendDelta(n,t.delta),this.callbacks.updateMessage({id:t.messageId,newContent:n.rendered})}handleEnd(t){this.buffers.delete(t.messageId)}hasBuffer(t){return this.buffers.has(t)}ensureBufferExists(t){this.buffers.has(t)||(this.buffers.set(t,Qo()),this.callbacks.addEmptyMessage({messageStreamId:t,role:"assistant"}))}appendSourceSeparatorIfNeeded(t,n){t.lastStreamSourceUuid&&t.lastStreamSourceUuid!==n&&(t.rendered+='<span style="display:block;height:1rem;"></span>'),t.lastStreamSourceUuid=n??null}appendDelta(t,n){if(TS(n)){t.markdownTag+=n,t.rendered+=t.markdownTag,t.markdownTag="",t.isWritingTag=!1;return}if(t.isWritingTag||ES(n)){t.markdownTag+=n,t.isWritingTag=!0;return}t.rendered+=n}}const xS=30,SS=e=>{try{const t=e.split(".")[1];if(!t)return null;const n=t.replace(/-/g,"+").replace(/_/g,"/"),r=n.padEnd(n.length+(4-n.length%4)%4,"="),i=JSON.parse(atob(r));return typeof i.exp=="number"?i.exp:null}catch{return null}};class _S{token=null;expiresAt=null;pendingRequest=null;generation=0;provider;constructor(t){this.provider=t}clear(){this.generation+=1,this.token=null,this.expiresAt=null,this.pendingRequest=null}async getToken(t){if(!this.provider)return null;const n=Math.floor(Date.now()/1e3);if(this.token&&this.expiresAt!=null&&this.expiresAt-xS>n)return this.token;if(this.pendingRequest)return this.pendingRequest;const r=this.generation;let i;return i=this.provider.getToken(t).then(a=>{if(r!==this.generation)return null;if(!a)return this.clear(),null;const s=SS(a);return s==null||s<=Math.floor(Date.now()/1e3)?(this.clear(),null):(this.token=a,this.expiresAt=s,a)}).finally(()=>{this.pendingRequest===i&&(this.pendingRequest=null)}),this.pendingRequest=i,i}}const ed=C.createContext(void 0);let gr=new AbortController;const td=({appToken:e,agentId:t,containerClassName:n})=>{const r=_n(),i=C.useContext(ed);e||r.error("App Token missing");const a=C.useRef(null),s=C.useRef(null),o=C.useRef(i);(!s.current||o.current!==i)&&(o.current=i,s.current=new _S(i)),C.useEffect(()=>{const fe=s.current;if(!(!fe||!i))return fe.getToken({interactive:!1}).catch(()=>fe.clear()),i.subscribe?.(()=>{fe.clear(),fe.getToken({interactive:!1}).catch(()=>fe.clear())})},[i]);const{placeholderTranslation:u,genericErrorTranslation:c,tooManyRequestsTranslation:d,discussionFullErrorTranslation:f,infoBannerExplainationTranslation:p,infoBannerTitleTranslation:h,customerSupportConnectingTranslation:b,customerSupportConnectedTranslation:y,customerSupportConnectionErrorTranslation:w,customerSupportProviderUnavailableTranslation:_,customerSupportClosedTranslation:N,customerSupportRestartTranslation:I,customerSupportFallbackTitleTranslation:L,customerSupportFallbackDescriptionTranslation:A,customerSupportFallbackEmailTranslation:k,customerSupportFallbackPhoneTranslation:$,customerSupportFallbackSubmitTranslation:W,customerSupportFallbackSubmittingTranslation:te,customerSupportFallbackSuccessTranslation:v,customerSupportFallbackErrorTranslation:U,customerSupportClosedHoursTitleTranslation:z,customerSupportClosedHoursDescriptionTranslation:F,customerSupportClosedHoursSchedulePrefixTranslation:G,customerSupportClosedHoursReasonTranslation:Q,customerSupportClosedHoursSuccessTranslation:pe}=Gu(),{currentConversation:se,addEmptyMessageToCurrentConversation:Ae,addMessageToCurrentConversation:we,removeEmptyAssistantMessageFromCurrentConversation:m,resetConversation:Y,setCurrentConversationId:re,updateCurrentConversationMessageById:T,archivedConversation:J,chatboxBootState:de,resetConversationRequestId:V,setArchivedConversationAsMain:ue}=ts(),[ne,ae]=C.useState("notLoading"),{defaultStartingStep:ie,recentMessagesTranslation:Ne}=Zc(),[q,De]=C.useState(null),[ze,$e]=C.useState(ie),[ht,Rt]=C.useState(null),[Be,pt]=C.useState(!1),{scrollToBottom:et,showScrollButton:be,messagesContainerRef:ve,removeStickyNess:H}=oS(se.items),{chatTransportMode:K,isCustomerSupportMode:O,customerSupportStatusMessage:M,isCustomerSupportInputDisabled:X,enterCustomerSupportMode:le,flushPendingCustomerSupportHandoff:Z,sendToCustomerSupport:Se,fallbackContactCaptureConfig:tt,fallbackContactCaptureStatus:Ke,shouldDisplayFallbackContactCapture:at,submitFallbackContactCapture:qt,closedHoursContactCaptureConfig:Ye,closedHoursBusinessHours:Mt,closedHoursContactCaptureStatus:mt,shouldDisplayClosedHoursContactCapture:dd,submitClosedHoursContactCapture:fd}=rS({appToken:e,currentConversation:se,loadingStatus:ne,labels:{connecting:b,connected:y,connectionError:w,providerUnavailable:_,closed:N},logger:r,setCurrentConversationId:re,setLoadingStatus:ae,addMessageToCurrentConversation:we,onCustomerSupportOperatorMessage:()=>{window.requestAnimationFrame(()=>{et({smooth:!0,sticky:!1})})},chatboxBootState:de,resetConversationRequestId:V}),[is,ei]=C.useState(!1),{start:hd,stop:pd,cancel:md,audioLevel:gd}=mS(),{companySettings:ti}=C.useContext(rn),{appCurrentLang:as}=C.useContext(Vc),[bd,Ed]=C.useState(()=>{if(typeof window>"u")return!0;const fe=window.matchMedia("(pointer: coarse)"),Le=window.matchMedia("(hover: none)");return!(fe.matches||Le.matches)}),ni=C.useRef(null);ni.current||(ni.current=new yS({addEmptyMessage:Ae,updateMessage:T,onAssistantMessageStart:()=>ae("loadingDisplayedAnswer")}));const ri=ni.current;C.useEffect(()=>{if(typeof window>"u")return;const fe=window.matchMedia("(pointer: coarse)"),Le=window.matchMedia("(hover: none)"),We=()=>{Ed(!(fe.matches||Le.matches))};return We(),fe.addEventListener?(fe.addEventListener("change",We),Le.addEventListener("change",We)):(fe.addListener(We),Le.addListener(We)),()=>{fe.removeEventListener?(fe.removeEventListener("change",We),Le.removeEventListener("change",We)):(fe.removeListener(We),Le.removeListener(We))}},[]);const Td=ne!=="notLoading"||(se?.items?.length??0)>0,[yd,ss]=C.useState(!0),xd=!!J&&(J.items?.length??0)>0,Sd=()=>{ue(),ss(!1)},_d=!O&&(ne!=="notLoading"||Be)||O&&(ne!=="notLoading"||X),Cd={...Td?{maxHeight:"100vh"}:{height:"250px"}};C.useEffect(()=>{if(O){pt(!1);return}yx(se.items)>=ti?.api?.settings?.maxUserMessagesPerDiscussion&&pt(!0)},[ti?.api?.settings?.maxUserMessagesPerDiscussion,se.items,O]);const os=C.useRef(V);C.useEffect(()=>{os.current!==V&&(os.current=V,ae("notLoading"),pt(!1))},[V]);const Ad=()=>{gr.abort("Cancelling stream on purpose."),r.log("Stream request aborted"),ae("notLoading"),m()},wd=async fe=>{const Le=fe?.body?.getReader(),We=new TextDecoder,Nn=fe.headers.get("discussionId"),Tt=parseInt(Nn,10);Number.isNaN(Tt)||re(Tt),await new ReadableStream({start(Ot){return Rn();async function Rn(){if(!fe.ok){ae("notLoading");let Bt=c;fe.status===409?(Bt=f,pt(!0)):fe.status===429?Bt=d:Bt=c,we({userType:"assistant",content:Bt,metaData:{isErrorMessage:!0},temporaryId:crypto.randomUUID()}),gr=new AbortController;return}return Le?.read().then(Bt=>{const{done:Rd,value:Od}=Bt,Ld=We.decode(Od),Dd=Lt.transformNDJSONChunkIntoObjects(Ld);for(const Fe of Dd)if(Lt.isObjectOutputstreamMessageStartDTO(Fe))ri.handleStart(Fe);else if(Lt.isObjectOutputstreamMessageDeltaDTO(Fe))ri.handleDelta(Fe);else if(Lt.isObjectOutputstreamMessageEndDTO(Fe))ri.handleEnd(Fe);else if(Lt.isObjectOutputstreamLoadingCurrentStepNumberDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),Rt(nt)}else if(Lt.isObjectOutputstreamLoadingCurrentStepNameDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),$e(nt)}else if(Lt.isObjectOutputstreamLoadingNumberOfStepsDTO(Fe)){const{content:nt}=Fe;Ot.enqueue(nt),De(nt)}else if(Lt.isObjectOutputstreamClientEventDTO(Fe)){const nt=vx(Fe);nt.type==="customer_support_handoff_requested"?le(nt.payload):r.warn(`Client event not handled - ${Fe.event}`)}else if(Lt.isObjectOutputstreamErrorDTO(Fe)){const{message:nt}=Fe;we({userType:"assistant",metaData:{isErrorMessage:!0},content:nt,temporaryId:crypto.randomUUID()})}else r.warn(`Packet shape not handled - ${Fe}`);if(Rd){Ot.close(),ae("notLoading"),$e(ie),Rt(null),Z();return}return Rn()})}}}).pipeTo(new WritableStream)},vd=(fe,Le)=>{const We=gt.getApiUrl(),Nn=t?`?agentId=${encodeURIComponent(String(t))}`:"",Tt=`${We}/ai/prompt/${e}${Nn}`,ii=gr.signal;if(fe.mode==="text"){const Rn={query:fe.text,language:as.locale};se?.discussionId&&(Rn.discussionId=se.discussionId);const Bt=gt.getFetchConfig({httpVerb:"POST",body:Rn,contentType:"application/json",options:{signal:ii,headers:{...gt.getHeaders({contentType:"application/json"}),...Le?{Authorization:"Bearer "+Le}:{}}}});return{url:Tt,fetchConfig:Bt}}const Ot=new FormData;return Ot.append("language",as.locale),se?.discussionId&&Ot.append("discussionId",String(se.discussionId)),Ot.append("audioInput",fe.audioFile,fe.audioFile.name),{url:Tt,fetchConfig:{method:"POST",body:Ot,signal:ii,headers:Le?{Authorization:"Bearer "+Le}:void 0}}},us=async fe=>{ae("loadingIntermediaryStates"),requestAnimationFrame(()=>et({smooth:!1,sticky:!1}));let Le=null;try{Le=await s.current?.getToken({interactive:!1})??null}catch{s.current?.clear()}const{url:We,fetchConfig:Nn}=vd(fe,Le);fetch(We,Nn).then(async Tt=>{Tt.status===401&&Le&&s.current?.clear(),await wd(Tt)}).catch(Tt=>{r.error(Tt),ae("notLoading"),gr=new AbortController})},Id=async()=>{ei(!0),await hd()},kd=async()=>{const fe=await pd();ei(!1),fe&&us({mode:"audio",audioFile:fe.file})},Nd=()=>{md(),ei(!1)};return x.jsxs("div",{className:["chatbox-root relative p-2","flex flex-col min-h-0 overflow-visible","h-auto",n??"mx-auto"].join(" "),ref:a,style:Cd,children:[x.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 messagesContainer",ref:ve,children:[se.items.map((fe,Le)=>x.jsx(oy,{content:fe.content,userType:fe.userType,metaData:fe.metaData,context:{discussionId:se?.discussionId,messageIndex:Le,appToken:e},seenRootEl:ve.current},fe.temporaryId)),x.jsx(aS,{currentStepName:ze,currentStepNumber:ht,loadingStatus:ne,numberOfSteps:q})]}),be&&x.jsx(dS,{label:Ne,onClick:()=>et({smooth:!0,sticky:!0})}),!O&&Be&&x.jsx(cS,{onReset:Y}),dd&&Ye&&x.jsx(hS,{config:Ye,status:mt,scheduleLabel:Mt?.todayScheduleLabel,labels:{title:z,description:F,schedulePrefix:G,email:k,phone:$,reason:Q,submit:W,submitting:te,success:pe,error:U},onSubmit:fd}),at&&tt&&x.jsx(fS,{config:tt,status:Ke,labels:{title:L,description:A,email:k,phone:$,submit:W,submitting:te,success:v,error:U},onSubmit:qt}),M&&x.jsx(Xo,{actionLabel:I,message:M,onClick:Y}),xd&&yd&&x.jsx(Xo,{actionLabel:h,message:p,onClick:Sd}),x.jsx("div",{className:"chatbox-input-wrapper flex-shrink-0",children:is?x.jsx(bS,{isOpen:is,onStop:kd,onCancel:Nd,audioLevel:gd}):x.jsx(px,{classNameTextarea:"",classNameContainer:"relative mt-2 border-slate-400 border-[1px] rounded-lg p-1",SubmitComponent:mx,isDisabled:_d,shouldDisableIfInputIsEmpty:!0,"aria-label":"TextArea For Bot Conversation",onSubmit:fe=>{if(ss(!1),xx(fe)){const Le=Sx(fe,se.discussionId,Y);Le&&we({userType:"user",content:Le,temporaryId:crypto.randomUUID()}),H(),et({smooth:!0,sticky:!1})}else we({userType:"user",content:fe,temporaryId:crypto.randomUUID()}),H(),et({smooth:!0,sticky:!1}),K==="customer_support"?Se(fe):us({mode:"text",text:fe})},placeholder:u,autoFocus:bd,isLoadingStream:ne==="loadingDisplayedAnswer"||ne==="loadingIntermediaryStates",LoadingComponent:sS,onPressLoadingButton:Ad,onPressMicButton:()=>{Id()},MicComponent:pS,audioEnabled:ti?.agent?.isAudioAllowed&&!O})})]})};function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}function nd(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Ea(e,t){return Ea=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Ea(e,t)}function rd(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Ea(e,t)}var br={exports:{}};/*
148
148
  object-assign
149
149
  (c) Sindre Sorhus
150
150
  @license MIT
151
- */var Pi,Ko;function _S(){if(Ko)return Pi;Ko=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function r(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function i(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var s={},o=0;o<10;o++)s["_"+String.fromCharCode(o)]=o;var u=Object.getOwnPropertyNames(s).map(function(d){return s[d]});if(u.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}return Pi=i()?Object.assign:function(a,s){for(var o,u=r(a),c,d=1;d<arguments.length;d++){o=Object(arguments[d]);for(var f in o)t.call(o,f)&&(u[f]=o[f]);if(e){c=e(o);for(var p=0;p<c.length;p++)n.call(o,c[p])&&(u[c[p]]=o[c[p]])}}return u},Pi}var Mi,Zo;function ns(){if(Zo)return Mi;Zo=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return Mi=e,Mi}var Bi,Jo;function id(){return Jo||(Jo=1,Bi=Function.call.bind(Object.prototype.hasOwnProperty)),Bi}var Fi,eu;function CS(){if(eu)return Fi;eu=1;var e=function(){};if(process.env.NODE_ENV!=="production"){var t=ns(),n={},r=id();e=function(a){var s="Warning: "+a;typeof console<"u"&&console.error(s);try{throw new Error(s)}catch{}}}function i(a,s,o,u,c){if(process.env.NODE_ENV!=="production"){for(var d in a)if(r(a,d)){var f;try{if(typeof a[d]!="function"){var p=Error((u||"React class")+": "+o+" type `"+d+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof a[d]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw p.name="Invariant Violation",p}f=a[d](s,d,u,o,null,t)}catch(b){f=b}if(f&&!(f instanceof Error)&&e((u||"React class")+": type specification of "+o+" `"+d+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof f+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),f instanceof Error&&!(f.message in n)){n[f.message]=!0;var h=c?c():"";e("Failed "+o+" type: "+f.message+(h??""))}}}}return i.resetWarningCache=function(){process.env.NODE_ENV!=="production"&&(n={})},Fi=i,Fi}var Hi,tu;function AS(){if(tu)return Hi;tu=1;var e=_a(),t=_S(),n=ns(),r=id(),i=CS(),a=function(){};process.env.NODE_ENV!=="production"&&(a=function(o){var u="Warning: "+o;typeof console<"u"&&console.error(u);try{throw new Error(u)}catch{}});function s(){return null}return Hi=function(o,u){var c=typeof Symbol=="function"&&Symbol.iterator,d="@@iterator";function f(m){var Y=m&&(c&&m[c]||m[d]);if(typeof Y=="function")return Y}var p="<<anonymous>>",h={array:_("array"),bigint:_("bigint"),bool:_("boolean"),func:_("function"),number:_("number"),object:_("object"),string:_("string"),symbol:_("symbol"),any:N(),arrayOf:I,element:L(),elementType:A(),instanceOf:k,node:v(),objectOf:W,oneOf:$,oneOfType:te,shape:z,exact:F};function b(m,Y){return m===Y?m!==0||1/m===1/Y:m!==m&&Y!==Y}function y(m,Y){this.message=m,this.data=Y&&typeof Y=="object"?Y:{},this.stack=""}y.prototype=Error.prototype;function w(m){if(process.env.NODE_ENV!=="production")var Y={},re=0;function T(de,V,ue,ne,ae,ie,Ne){if(ne=ne||p,ie=ie||ue,Ne!==n){if(u){var q=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw q.name="Invariant Violation",q}else if(process.env.NODE_ENV!=="production"&&typeof console<"u"){var De=ne+":"+ue;!Y[De]&&re<3&&(a("You are manually calling a React.PropTypes validation function for the `"+ie+"` prop on `"+ne+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),Y[De]=!0,re++)}}return V[ue]==null?de?V[ue]===null?new y("The "+ae+" `"+ie+"` is marked as required "+("in `"+ne+"`, but its value is `null`.")):new y("The "+ae+" `"+ie+"` is marked as required in "+("`"+ne+"`, but its value is `undefined`.")):null:m(V,ue,ne,ae,ie)}var J=T.bind(null,!1);return J.isRequired=T.bind(null,!0),J}function _(m){function Y(re,T,J,de,V,ue){var ne=re[T],ae=pe(ne);if(ae!==m){var ie=se(ne);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ie+"` supplied to `"+J+"`, expected ")+("`"+m+"`."),{expectedType:m})}return null}return w(Y)}function N(){return w(s)}function I(m){function Y(re,T,J,de,V){if(typeof m!="function")return new y("Property `"+V+"` of component `"+J+"` has invalid PropType notation inside arrayOf.");var ue=re[T];if(!Array.isArray(ue)){var ne=pe(ue);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected an array."))}for(var ae=0;ae<ue.length;ae++){var ie=m(ue,ae,J,de,V+"["+ae+"]",n);if(ie instanceof Error)return ie}return null}return w(Y)}function L(){function m(Y,re,T,J,de){var V=Y[re];if(!o(V)){var ue=pe(V);return new y("Invalid "+J+" `"+de+"` of type "+("`"+ue+"` supplied to `"+T+"`, expected a single ReactElement."))}return null}return w(m)}function A(){function m(Y,re,T,J,de){var V=Y[re];if(!e.isValidElementType(V)){var ue=pe(V);return new y("Invalid "+J+" `"+de+"` of type "+("`"+ue+"` supplied to `"+T+"`, expected a single ReactElement type."))}return null}return w(m)}function k(m){function Y(re,T,J,de,V){if(!(re[T]instanceof m)){var ue=m.name||p,ne=we(re[T]);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected ")+("instance of `"+ue+"`."))}return null}return w(Y)}function $(m){if(!Array.isArray(m))return process.env.NODE_ENV!=="production"&&(arguments.length>1?a("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):a("Invalid argument supplied to oneOf, expected an array.")),s;function Y(re,T,J,de,V){for(var ue=re[T],ne=0;ne<m.length;ne++)if(b(ue,m[ne]))return null;var ae=JSON.stringify(m,function(Ne,q){var De=se(q);return De==="symbol"?String(q):q});return new y("Invalid "+de+" `"+V+"` of value `"+String(ue)+"` "+("supplied to `"+J+"`, expected one of "+ae+"."))}return w(Y)}function W(m){function Y(re,T,J,de,V){if(typeof m!="function")return new y("Property `"+V+"` of component `"+J+"` has invalid PropType notation inside objectOf.");var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected an object."));for(var ae in ue)if(r(ue,ae)){var ie=m(ue,ae,J,de,V+"."+ae,n);if(ie instanceof Error)return ie}return null}return w(Y)}function te(m){if(!Array.isArray(m))return process.env.NODE_ENV!=="production"&&a("Invalid argument supplied to oneOfType, expected an instance of array."),s;for(var Y=0;Y<m.length;Y++){var re=m[Y];if(typeof re!="function")return a("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+Ae(re)+" at index "+Y+"."),s}function T(J,de,V,ue,ne){for(var ae=[],ie=0;ie<m.length;ie++){var Ne=m[ie],q=Ne(J,de,V,ue,ne,n);if(q==null)return null;q.data&&r(q.data,"expectedType")&&ae.push(q.data.expectedType)}var De=ae.length>0?", expected one of type ["+ae.join(", ")+"]":"";return new y("Invalid "+ue+" `"+ne+"` supplied to "+("`"+V+"`"+De+"."))}return w(T)}function v(){function m(Y,re,T,J,de){return G(Y[re])?null:new y("Invalid "+J+" `"+de+"` supplied to "+("`"+T+"`, expected a ReactNode."))}return w(m)}function U(m,Y,re,T,J){return new y((m||"React class")+": "+Y+" type `"+re+"."+T+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+J+"`.")}function z(m){function Y(re,T,J,de,V){var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type `"+ne+"` "+("supplied to `"+J+"`, expected `object`."));for(var ae in m){var ie=m[ae];if(typeof ie!="function")return U(J,de,V,ae,se(ie));var Ne=ie(ue,ae,J,de,V+"."+ae,n);if(Ne)return Ne}return null}return w(Y)}function F(m){function Y(re,T,J,de,V){var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type `"+ne+"` "+("supplied to `"+J+"`, expected `object`."));var ae=t({},re[T],m);for(var ie in ae){var Ne=m[ie];if(r(m,ie)&&typeof Ne!="function")return U(J,de,V,ie,se(Ne));if(!Ne)return new y("Invalid "+de+" `"+V+"` key `"+ie+"` supplied to `"+J+"`.\nBad object: "+JSON.stringify(re[T],null," ")+`
152
- Valid keys: `+JSON.stringify(Object.keys(m),null," "));var q=Ne(ue,ie,J,de,V+"."+ie,n);if(q)return q}return null}return w(Y)}function G(m){switch(typeof m){case"number":case"string":case"undefined":return!0;case"boolean":return!m;case"object":if(Array.isArray(m))return m.every(G);if(m===null||o(m))return!0;var Y=f(m);if(Y){var re=Y.call(m),T;if(Y!==m.entries){for(;!(T=re.next()).done;)if(!G(T.value))return!1}else for(;!(T=re.next()).done;){var J=T.value;if(J&&!G(J[1]))return!1}}else return!1;return!0;default:return!1}}function Q(m,Y){return m==="symbol"?!0:Y?Y["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&Y instanceof Symbol:!1}function pe(m){var Y=typeof m;return Array.isArray(m)?"array":m instanceof RegExp?"object":Q(Y,m)?"symbol":Y}function se(m){if(typeof m>"u"||m===null)return""+m;var Y=pe(m);if(Y==="object"){if(m instanceof Date)return"date";if(m instanceof RegExp)return"regexp"}return Y}function Ae(m){var Y=se(m);switch(Y){case"array":case"object":return"an "+Y;case"boolean":case"date":case"regexp":return"a "+Y;default:return Y}}function we(m){return!m.constructor||!m.constructor.name?p:m.constructor.name}return h.checkPropTypes=i,h.resetWarningCache=i.resetWarningCache,h.PropTypes=h,h},Hi}var Ui,nu;function wS(){if(nu)return Ui;nu=1;var e=ns();function t(){}function n(){}return n.resetWarningCache=t,Ui=function(){function r(s,o,u,c,d,f){if(f!==e){var p=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw p.name="Invariant Violation",p}}r.isRequired=r;function i(){return r}var a={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:i,element:r,elementType:r,instanceOf:i,node:r,objectOf:i,oneOf:i,oneOfType:i,shape:i,exact:i,checkPropTypes:n,resetWarningCache:t};return a.PropTypes=a,a},Ui}var ru;function vS(){if(ru)return br.exports;if(ru=1,process.env.NODE_ENV!=="production"){var e=_a(),t=!0;br.exports=AS()(e.isElement,t)}else br.exports=wS()();return br.exports}var IS=vS();const he=ya(IS);function kS(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function NS(e,t){e.classList?e.classList.add(t):kS(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function iu(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function RS(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=iu(e.className,t):e.setAttribute("class",iu(e.className&&e.className.baseVal||"",t))}const au={disabled:!1};var OS=process.env.NODE_ENV!=="production"?he.oneOfType([he.number,he.shape({enter:he.number,exit:he.number,appear:he.number}).isRequired]):null,LS=process.env.NODE_ENV!=="production"?he.oneOfType([he.string,he.shape({enter:he.string,exit:he.string,active:he.string}),he.shape({enter:he.string,enterDone:he.string,enterActive:he.string,exit:he.string,exitDone:he.string,exitActive:he.string})]):null;const ad=C.createContext(null);var sd=function(t){return t.scrollTop},Fn="unmounted",Xt="exited",Qt="entering",mn="entered",Ta="exiting",Nt=(function(e){rd(t,e);function t(r,i){var a;a=e.call(this,r,i)||this;var s=i,o=s&&!s.isMounting?r.enter:r.appear,u;return a.appearStatus=null,r.in?o?(u=Xt,a.appearStatus=Qt):u=mn:r.unmountOnExit||r.mountOnEnter?u=Fn:u=Xt,a.state={status:u},a.nextCallback=null,a}t.getDerivedStateFromProps=function(i,a){var s=i.in;return s&&a.status===Fn?{status:Xt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var a=null;if(i!==this.props){var s=this.state.status;this.props.in?s!==Qt&&s!==mn&&(a=Qt):(s===Qt||s===mn)&&(a=Ta)}this.updateStatus(!1,a)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,a,s,o;return a=s=o=i,i!=null&&typeof i!="number"&&(a=i.exit,s=i.enter,o=i.appear!==void 0?i.appear:s),{exit:a,enter:s,appear:o}},n.updateStatus=function(i,a){if(i===void 0&&(i=!1),a!==null)if(this.cancelNextCallback(),a===Qt){if(this.props.unmountOnExit||this.props.mountOnEnter){var s=this.props.nodeRef?this.props.nodeRef.current:Mn.findDOMNode(this);s&&sd(s)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Xt&&this.setState({status:Fn})},n.performEnter=function(i){var a=this,s=this.props.enter,o=this.context?this.context.isMounting:i,u=this.props.nodeRef?[o]:[Mn.findDOMNode(this),o],c=u[0],d=u[1],f=this.getTimeouts(),p=o?f.appear:f.enter;if(!i&&!s||au.disabled){this.safeSetState({status:mn},function(){a.props.onEntered(c)});return}this.props.onEnter(c,d),this.safeSetState({status:Qt},function(){a.props.onEntering(c,d),a.onTransitionEnd(p,function(){a.safeSetState({status:mn},function(){a.props.onEntered(c,d)})})})},n.performExit=function(){var i=this,a=this.props.exit,s=this.getTimeouts(),o=this.props.nodeRef?void 0:Mn.findDOMNode(this);if(!a||au.disabled){this.safeSetState({status:Xt},function(){i.props.onExited(o)});return}this.props.onExit(o),this.safeSetState({status:Ta},function(){i.props.onExiting(o),i.onTransitionEnd(s.exit,function(){i.safeSetState({status:Xt},function(){i.props.onExited(o)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,a){a=this.setNextCallback(a),this.setState(i,a)},n.setNextCallback=function(i){var a=this,s=!0;return this.nextCallback=function(o){s&&(s=!1,a.nextCallback=null,i(o))},this.nextCallback.cancel=function(){s=!1},this.nextCallback},n.onTransitionEnd=function(i,a){this.setNextCallback(a);var s=this.props.nodeRef?this.props.nodeRef.current:Mn.findDOMNode(this),o=i==null&&!this.props.addEndListener;if(!s||o){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var u=this.props.nodeRef?[this.nextCallback]:[s,this.nextCallback],c=u[0],d=u[1];this.props.addEndListener(c,d)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===Fn)return null;var a=this.props,s=a.children;a.in,a.mountOnEnter,a.unmountOnExit,a.appear,a.enter,a.exit,a.timeout,a.addEndListener,a.onEnter,a.onEntering,a.onEntered,a.onExit,a.onExiting,a.onExited,a.nodeRef;var o=nd(a,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return C.createElement(ad.Provider,{value:null},typeof s=="function"?s(i,o):C.cloneElement(C.Children.only(s),o))},t})(C.Component);Nt.contextType=ad;Nt.propTypes=process.env.NODE_ENV!=="production"?{nodeRef:he.shape({current:typeof Element>"u"?he.any:function(e,t,n,r,i,a){var s=e[t];return he.instanceOf(s&&"ownerDocument"in s?s.ownerDocument.defaultView.Element:Element)(e,t,n,r,i,a)}}),children:he.oneOfType([he.func.isRequired,he.element.isRequired]).isRequired,in:he.bool,mountOnEnter:he.bool,unmountOnExit:he.bool,appear:he.bool,enter:he.bool,exit:he.bool,timeout:function(t){var n=OS;t.addEndListener||(n=n.isRequired);for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];return n.apply(void 0,[t].concat(i))},addEndListener:he.func,onEnter:he.func,onEntering:he.func,onEntered:he.func,onExit:he.func,onExiting:he.func,onExited:he.func}:{};function fn(){}Nt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:fn,onEntering:fn,onEntered:fn,onExit:fn,onExiting:fn,onExited:fn};Nt.UNMOUNTED=Fn;Nt.EXITED=Xt;Nt.ENTERING=Qt;Nt.ENTERED=mn;Nt.EXITING=Ta;var DS=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return NS(t,r)})},ji=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return RS(t,r)})},rs=(function(e){rd(t,e);function t(){for(var r,i=arguments.length,a=new Array(i),s=0;s<i;s++)a[s]=arguments[s];return r=e.call.apply(e,[this].concat(a))||this,r.appliedClasses={appear:{},enter:{},exit:{}},r.onEnter=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1];r.removeClasses(d,"exit"),r.addClass(d,f?"appear":"enter","base"),r.props.onEnter&&r.props.onEnter(o,u)},r.onEntering=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1],p=f?"appear":"enter";r.addClass(d,p,"active"),r.props.onEntering&&r.props.onEntering(o,u)},r.onEntered=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1],p=f?"appear":"enter";r.removeClasses(d,p),r.addClass(d,p,"done"),r.props.onEntered&&r.props.onEntered(o,u)},r.onExit=function(o){var u=r.resolveArguments(o),c=u[0];r.removeClasses(c,"appear"),r.removeClasses(c,"enter"),r.addClass(c,"exit","base"),r.props.onExit&&r.props.onExit(o)},r.onExiting=function(o){var u=r.resolveArguments(o),c=u[0];r.addClass(c,"exit","active"),r.props.onExiting&&r.props.onExiting(o)},r.onExited=function(o){var u=r.resolveArguments(o),c=u[0];r.removeClasses(c,"exit"),r.addClass(c,"exit","done"),r.props.onExited&&r.props.onExited(o)},r.resolveArguments=function(o,u){return r.props.nodeRef?[r.props.nodeRef.current,o]:[o,u]},r.getClassNames=function(o){var u=r.props.classNames,c=typeof u=="string",d=c&&u?u+"-":"",f=c?""+d+o:u[o],p=c?f+"-active":u[o+"Active"],h=c?f+"-done":u[o+"Done"];return{baseClassName:f,activeClassName:p,doneClassName:h}},r}var n=t.prototype;return n.addClass=function(i,a,s){var o=this.getClassNames(a)[s+"ClassName"],u=this.getClassNames("enter"),c=u.doneClassName;a==="appear"&&s==="done"&&c&&(o+=" "+c),s==="active"&&i&&sd(i),o&&(this.appliedClasses[a][s]=o,DS(i,o))},n.removeClasses=function(i,a){var s=this.appliedClasses[a],o=s.base,u=s.active,c=s.done;this.appliedClasses[a]={},o&&ji(i,o),u&&ji(i,u),c&&ji(i,c)},n.render=function(){var i=this.props;i.classNames;var a=nd(i,["classNames"]);return C.createElement(Nt,Pr({},a,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},t})(C.Component);rs.defaultProps={classNames:""};rs.propTypes=process.env.NODE_ENV!=="production"?Pr({},Nt.propTypes,{classNames:LS,onEnter:he.func,onEntering:he.func,onEntered:he.func,onExit:he.func,onExiting:he.func,onExited:he.func}):{};const od=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Open chat menu",id:"chatbot.widget.menu.open"}),n=e.formatMessage({defaultMessage:"Start a new discussion",id:"chatbot.widget.menu.startNewDiscussion"}),r=e.formatMessage({defaultMessage:"Close chat",id:"chatbot.widget.close"});return{openMenuTranslation:t,startNewDiscussionTranslation:n,closeChatTranslation:r}},PS=({setIsWidgetOpen:e})=>{const{closeChatTranslation:t}=od();return x.jsx(x.Fragment,{children:x.jsx("button",{type:"button","aria-label":t,onClick:()=>e(!1),className:`absolute right-2 top-1/2 -translate-y-1/2
151
+ */var Pi,Ko;function CS(){if(Ko)return Pi;Ko=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function r(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function i(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var s={},o=0;o<10;o++)s["_"+String.fromCharCode(o)]=o;var u=Object.getOwnPropertyNames(s).map(function(d){return s[d]});if(u.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}return Pi=i()?Object.assign:function(a,s){for(var o,u=r(a),c,d=1;d<arguments.length;d++){o=Object(arguments[d]);for(var f in o)t.call(o,f)&&(u[f]=o[f]);if(e){c=e(o);for(var p=0;p<c.length;p++)n.call(o,c[p])&&(u[c[p]]=o[c[p]])}}return u},Pi}var Mi,Zo;function ns(){if(Zo)return Mi;Zo=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return Mi=e,Mi}var Bi,Jo;function id(){return Jo||(Jo=1,Bi=Function.call.bind(Object.prototype.hasOwnProperty)),Bi}var Fi,eu;function AS(){if(eu)return Fi;eu=1;var e=function(){};if(process.env.NODE_ENV!=="production"){var t=ns(),n={},r=id();e=function(a){var s="Warning: "+a;typeof console<"u"&&console.error(s);try{throw new Error(s)}catch{}}}function i(a,s,o,u,c){if(process.env.NODE_ENV!=="production"){for(var d in a)if(r(a,d)){var f;try{if(typeof a[d]!="function"){var p=Error((u||"React class")+": "+o+" type `"+d+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof a[d]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw p.name="Invariant Violation",p}f=a[d](s,d,u,o,null,t)}catch(b){f=b}if(f&&!(f instanceof Error)&&e((u||"React class")+": type specification of "+o+" `"+d+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof f+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),f instanceof Error&&!(f.message in n)){n[f.message]=!0;var h=c?c():"";e("Failed "+o+" type: "+f.message+(h??""))}}}}return i.resetWarningCache=function(){process.env.NODE_ENV!=="production"&&(n={})},Fi=i,Fi}var Hi,tu;function wS(){if(tu)return Hi;tu=1;var e=_a(),t=CS(),n=ns(),r=id(),i=AS(),a=function(){};process.env.NODE_ENV!=="production"&&(a=function(o){var u="Warning: "+o;typeof console<"u"&&console.error(u);try{throw new Error(u)}catch{}});function s(){return null}return Hi=function(o,u){var c=typeof Symbol=="function"&&Symbol.iterator,d="@@iterator";function f(m){var Y=m&&(c&&m[c]||m[d]);if(typeof Y=="function")return Y}var p="<<anonymous>>",h={array:_("array"),bigint:_("bigint"),bool:_("boolean"),func:_("function"),number:_("number"),object:_("object"),string:_("string"),symbol:_("symbol"),any:N(),arrayOf:I,element:L(),elementType:A(),instanceOf:k,node:v(),objectOf:W,oneOf:$,oneOfType:te,shape:z,exact:F};function b(m,Y){return m===Y?m!==0||1/m===1/Y:m!==m&&Y!==Y}function y(m,Y){this.message=m,this.data=Y&&typeof Y=="object"?Y:{},this.stack=""}y.prototype=Error.prototype;function w(m){if(process.env.NODE_ENV!=="production")var Y={},re=0;function T(de,V,ue,ne,ae,ie,Ne){if(ne=ne||p,ie=ie||ue,Ne!==n){if(u){var q=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw q.name="Invariant Violation",q}else if(process.env.NODE_ENV!=="production"&&typeof console<"u"){var De=ne+":"+ue;!Y[De]&&re<3&&(a("You are manually calling a React.PropTypes validation function for the `"+ie+"` prop on `"+ne+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),Y[De]=!0,re++)}}return V[ue]==null?de?V[ue]===null?new y("The "+ae+" `"+ie+"` is marked as required "+("in `"+ne+"`, but its value is `null`.")):new y("The "+ae+" `"+ie+"` is marked as required in "+("`"+ne+"`, but its value is `undefined`.")):null:m(V,ue,ne,ae,ie)}var J=T.bind(null,!1);return J.isRequired=T.bind(null,!0),J}function _(m){function Y(re,T,J,de,V,ue){var ne=re[T],ae=pe(ne);if(ae!==m){var ie=se(ne);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ie+"` supplied to `"+J+"`, expected ")+("`"+m+"`."),{expectedType:m})}return null}return w(Y)}function N(){return w(s)}function I(m){function Y(re,T,J,de,V){if(typeof m!="function")return new y("Property `"+V+"` of component `"+J+"` has invalid PropType notation inside arrayOf.");var ue=re[T];if(!Array.isArray(ue)){var ne=pe(ue);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected an array."))}for(var ae=0;ae<ue.length;ae++){var ie=m(ue,ae,J,de,V+"["+ae+"]",n);if(ie instanceof Error)return ie}return null}return w(Y)}function L(){function m(Y,re,T,J,de){var V=Y[re];if(!o(V)){var ue=pe(V);return new y("Invalid "+J+" `"+de+"` of type "+("`"+ue+"` supplied to `"+T+"`, expected a single ReactElement."))}return null}return w(m)}function A(){function m(Y,re,T,J,de){var V=Y[re];if(!e.isValidElementType(V)){var ue=pe(V);return new y("Invalid "+J+" `"+de+"` of type "+("`"+ue+"` supplied to `"+T+"`, expected a single ReactElement type."))}return null}return w(m)}function k(m){function Y(re,T,J,de,V){if(!(re[T]instanceof m)){var ue=m.name||p,ne=we(re[T]);return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected ")+("instance of `"+ue+"`."))}return null}return w(Y)}function $(m){if(!Array.isArray(m))return process.env.NODE_ENV!=="production"&&(arguments.length>1?a("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):a("Invalid argument supplied to oneOf, expected an array.")),s;function Y(re,T,J,de,V){for(var ue=re[T],ne=0;ne<m.length;ne++)if(b(ue,m[ne]))return null;var ae=JSON.stringify(m,function(Ne,q){var De=se(q);return De==="symbol"?String(q):q});return new y("Invalid "+de+" `"+V+"` of value `"+String(ue)+"` "+("supplied to `"+J+"`, expected one of "+ae+"."))}return w(Y)}function W(m){function Y(re,T,J,de,V){if(typeof m!="function")return new y("Property `"+V+"` of component `"+J+"` has invalid PropType notation inside objectOf.");var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type "+("`"+ne+"` supplied to `"+J+"`, expected an object."));for(var ae in ue)if(r(ue,ae)){var ie=m(ue,ae,J,de,V+"."+ae,n);if(ie instanceof Error)return ie}return null}return w(Y)}function te(m){if(!Array.isArray(m))return process.env.NODE_ENV!=="production"&&a("Invalid argument supplied to oneOfType, expected an instance of array."),s;for(var Y=0;Y<m.length;Y++){var re=m[Y];if(typeof re!="function")return a("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+Ae(re)+" at index "+Y+"."),s}function T(J,de,V,ue,ne){for(var ae=[],ie=0;ie<m.length;ie++){var Ne=m[ie],q=Ne(J,de,V,ue,ne,n);if(q==null)return null;q.data&&r(q.data,"expectedType")&&ae.push(q.data.expectedType)}var De=ae.length>0?", expected one of type ["+ae.join(", ")+"]":"";return new y("Invalid "+ue+" `"+ne+"` supplied to "+("`"+V+"`"+De+"."))}return w(T)}function v(){function m(Y,re,T,J,de){return G(Y[re])?null:new y("Invalid "+J+" `"+de+"` supplied to "+("`"+T+"`, expected a ReactNode."))}return w(m)}function U(m,Y,re,T,J){return new y((m||"React class")+": "+Y+" type `"+re+"."+T+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+J+"`.")}function z(m){function Y(re,T,J,de,V){var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type `"+ne+"` "+("supplied to `"+J+"`, expected `object`."));for(var ae in m){var ie=m[ae];if(typeof ie!="function")return U(J,de,V,ae,se(ie));var Ne=ie(ue,ae,J,de,V+"."+ae,n);if(Ne)return Ne}return null}return w(Y)}function F(m){function Y(re,T,J,de,V){var ue=re[T],ne=pe(ue);if(ne!=="object")return new y("Invalid "+de+" `"+V+"` of type `"+ne+"` "+("supplied to `"+J+"`, expected `object`."));var ae=t({},re[T],m);for(var ie in ae){var Ne=m[ie];if(r(m,ie)&&typeof Ne!="function")return U(J,de,V,ie,se(Ne));if(!Ne)return new y("Invalid "+de+" `"+V+"` key `"+ie+"` supplied to `"+J+"`.\nBad object: "+JSON.stringify(re[T],null," ")+`
152
+ Valid keys: `+JSON.stringify(Object.keys(m),null," "));var q=Ne(ue,ie,J,de,V+"."+ie,n);if(q)return q}return null}return w(Y)}function G(m){switch(typeof m){case"number":case"string":case"undefined":return!0;case"boolean":return!m;case"object":if(Array.isArray(m))return m.every(G);if(m===null||o(m))return!0;var Y=f(m);if(Y){var re=Y.call(m),T;if(Y!==m.entries){for(;!(T=re.next()).done;)if(!G(T.value))return!1}else for(;!(T=re.next()).done;){var J=T.value;if(J&&!G(J[1]))return!1}}else return!1;return!0;default:return!1}}function Q(m,Y){return m==="symbol"?!0:Y?Y["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&Y instanceof Symbol:!1}function pe(m){var Y=typeof m;return Array.isArray(m)?"array":m instanceof RegExp?"object":Q(Y,m)?"symbol":Y}function se(m){if(typeof m>"u"||m===null)return""+m;var Y=pe(m);if(Y==="object"){if(m instanceof Date)return"date";if(m instanceof RegExp)return"regexp"}return Y}function Ae(m){var Y=se(m);switch(Y){case"array":case"object":return"an "+Y;case"boolean":case"date":case"regexp":return"a "+Y;default:return Y}}function we(m){return!m.constructor||!m.constructor.name?p:m.constructor.name}return h.checkPropTypes=i,h.resetWarningCache=i.resetWarningCache,h.PropTypes=h,h},Hi}var Ui,nu;function vS(){if(nu)return Ui;nu=1;var e=ns();function t(){}function n(){}return n.resetWarningCache=t,Ui=function(){function r(s,o,u,c,d,f){if(f!==e){var p=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw p.name="Invariant Violation",p}}r.isRequired=r;function i(){return r}var a={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:i,element:r,elementType:r,instanceOf:i,node:r,objectOf:i,oneOf:i,oneOfType:i,shape:i,exact:i,checkPropTypes:n,resetWarningCache:t};return a.PropTypes=a,a},Ui}var ru;function IS(){if(ru)return br.exports;if(ru=1,process.env.NODE_ENV!=="production"){var e=_a(),t=!0;br.exports=wS()(e.isElement,t)}else br.exports=vS()();return br.exports}var kS=IS();const he=ya(kS);function NS(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function RS(e,t){e.classList?e.classList.add(t):NS(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function iu(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function OS(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=iu(e.className,t):e.setAttribute("class",iu(e.className&&e.className.baseVal||"",t))}const au={disabled:!1};var LS=process.env.NODE_ENV!=="production"?he.oneOfType([he.number,he.shape({enter:he.number,exit:he.number,appear:he.number}).isRequired]):null,DS=process.env.NODE_ENV!=="production"?he.oneOfType([he.string,he.shape({enter:he.string,exit:he.string,active:he.string}),he.shape({enter:he.string,enterDone:he.string,enterActive:he.string,exit:he.string,exitDone:he.string,exitActive:he.string})]):null;const ad=C.createContext(null);var sd=function(t){return t.scrollTop},Fn="unmounted",Xt="exited",Qt="entering",mn="entered",Ta="exiting",Nt=(function(e){rd(t,e);function t(r,i){var a;a=e.call(this,r,i)||this;var s=i,o=s&&!s.isMounting?r.enter:r.appear,u;return a.appearStatus=null,r.in?o?(u=Xt,a.appearStatus=Qt):u=mn:r.unmountOnExit||r.mountOnEnter?u=Fn:u=Xt,a.state={status:u},a.nextCallback=null,a}t.getDerivedStateFromProps=function(i,a){var s=i.in;return s&&a.status===Fn?{status:Xt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var a=null;if(i!==this.props){var s=this.state.status;this.props.in?s!==Qt&&s!==mn&&(a=Qt):(s===Qt||s===mn)&&(a=Ta)}this.updateStatus(!1,a)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,a,s,o;return a=s=o=i,i!=null&&typeof i!="number"&&(a=i.exit,s=i.enter,o=i.appear!==void 0?i.appear:s),{exit:a,enter:s,appear:o}},n.updateStatus=function(i,a){if(i===void 0&&(i=!1),a!==null)if(this.cancelNextCallback(),a===Qt){if(this.props.unmountOnExit||this.props.mountOnEnter){var s=this.props.nodeRef?this.props.nodeRef.current:Mn.findDOMNode(this);s&&sd(s)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Xt&&this.setState({status:Fn})},n.performEnter=function(i){var a=this,s=this.props.enter,o=this.context?this.context.isMounting:i,u=this.props.nodeRef?[o]:[Mn.findDOMNode(this),o],c=u[0],d=u[1],f=this.getTimeouts(),p=o?f.appear:f.enter;if(!i&&!s||au.disabled){this.safeSetState({status:mn},function(){a.props.onEntered(c)});return}this.props.onEnter(c,d),this.safeSetState({status:Qt},function(){a.props.onEntering(c,d),a.onTransitionEnd(p,function(){a.safeSetState({status:mn},function(){a.props.onEntered(c,d)})})})},n.performExit=function(){var i=this,a=this.props.exit,s=this.getTimeouts(),o=this.props.nodeRef?void 0:Mn.findDOMNode(this);if(!a||au.disabled){this.safeSetState({status:Xt},function(){i.props.onExited(o)});return}this.props.onExit(o),this.safeSetState({status:Ta},function(){i.props.onExiting(o),i.onTransitionEnd(s.exit,function(){i.safeSetState({status:Xt},function(){i.props.onExited(o)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,a){a=this.setNextCallback(a),this.setState(i,a)},n.setNextCallback=function(i){var a=this,s=!0;return this.nextCallback=function(o){s&&(s=!1,a.nextCallback=null,i(o))},this.nextCallback.cancel=function(){s=!1},this.nextCallback},n.onTransitionEnd=function(i,a){this.setNextCallback(a);var s=this.props.nodeRef?this.props.nodeRef.current:Mn.findDOMNode(this),o=i==null&&!this.props.addEndListener;if(!s||o){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var u=this.props.nodeRef?[this.nextCallback]:[s,this.nextCallback],c=u[0],d=u[1];this.props.addEndListener(c,d)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===Fn)return null;var a=this.props,s=a.children;a.in,a.mountOnEnter,a.unmountOnExit,a.appear,a.enter,a.exit,a.timeout,a.addEndListener,a.onEnter,a.onEntering,a.onEntered,a.onExit,a.onExiting,a.onExited,a.nodeRef;var o=nd(a,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return C.createElement(ad.Provider,{value:null},typeof s=="function"?s(i,o):C.cloneElement(C.Children.only(s),o))},t})(C.Component);Nt.contextType=ad;Nt.propTypes=process.env.NODE_ENV!=="production"?{nodeRef:he.shape({current:typeof Element>"u"?he.any:function(e,t,n,r,i,a){var s=e[t];return he.instanceOf(s&&"ownerDocument"in s?s.ownerDocument.defaultView.Element:Element)(e,t,n,r,i,a)}}),children:he.oneOfType([he.func.isRequired,he.element.isRequired]).isRequired,in:he.bool,mountOnEnter:he.bool,unmountOnExit:he.bool,appear:he.bool,enter:he.bool,exit:he.bool,timeout:function(t){var n=LS;t.addEndListener||(n=n.isRequired);for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];return n.apply(void 0,[t].concat(i))},addEndListener:he.func,onEnter:he.func,onEntering:he.func,onEntered:he.func,onExit:he.func,onExiting:he.func,onExited:he.func}:{};function fn(){}Nt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:fn,onEntering:fn,onEntered:fn,onExit:fn,onExiting:fn,onExited:fn};Nt.UNMOUNTED=Fn;Nt.EXITED=Xt;Nt.ENTERING=Qt;Nt.ENTERED=mn;Nt.EXITING=Ta;var PS=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return RS(t,r)})},ji=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return OS(t,r)})},rs=(function(e){rd(t,e);function t(){for(var r,i=arguments.length,a=new Array(i),s=0;s<i;s++)a[s]=arguments[s];return r=e.call.apply(e,[this].concat(a))||this,r.appliedClasses={appear:{},enter:{},exit:{}},r.onEnter=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1];r.removeClasses(d,"exit"),r.addClass(d,f?"appear":"enter","base"),r.props.onEnter&&r.props.onEnter(o,u)},r.onEntering=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1],p=f?"appear":"enter";r.addClass(d,p,"active"),r.props.onEntering&&r.props.onEntering(o,u)},r.onEntered=function(o,u){var c=r.resolveArguments(o,u),d=c[0],f=c[1],p=f?"appear":"enter";r.removeClasses(d,p),r.addClass(d,p,"done"),r.props.onEntered&&r.props.onEntered(o,u)},r.onExit=function(o){var u=r.resolveArguments(o),c=u[0];r.removeClasses(c,"appear"),r.removeClasses(c,"enter"),r.addClass(c,"exit","base"),r.props.onExit&&r.props.onExit(o)},r.onExiting=function(o){var u=r.resolveArguments(o),c=u[0];r.addClass(c,"exit","active"),r.props.onExiting&&r.props.onExiting(o)},r.onExited=function(o){var u=r.resolveArguments(o),c=u[0];r.removeClasses(c,"exit"),r.addClass(c,"exit","done"),r.props.onExited&&r.props.onExited(o)},r.resolveArguments=function(o,u){return r.props.nodeRef?[r.props.nodeRef.current,o]:[o,u]},r.getClassNames=function(o){var u=r.props.classNames,c=typeof u=="string",d=c&&u?u+"-":"",f=c?""+d+o:u[o],p=c?f+"-active":u[o+"Active"],h=c?f+"-done":u[o+"Done"];return{baseClassName:f,activeClassName:p,doneClassName:h}},r}var n=t.prototype;return n.addClass=function(i,a,s){var o=this.getClassNames(a)[s+"ClassName"],u=this.getClassNames("enter"),c=u.doneClassName;a==="appear"&&s==="done"&&c&&(o+=" "+c),s==="active"&&i&&sd(i),o&&(this.appliedClasses[a][s]=o,PS(i,o))},n.removeClasses=function(i,a){var s=this.appliedClasses[a],o=s.base,u=s.active,c=s.done;this.appliedClasses[a]={},o&&ji(i,o),u&&ji(i,u),c&&ji(i,c)},n.render=function(){var i=this.props;i.classNames;var a=nd(i,["classNames"]);return C.createElement(Nt,Pr({},a,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},t})(C.Component);rs.defaultProps={classNames:""};rs.propTypes=process.env.NODE_ENV!=="production"?Pr({},Nt.propTypes,{classNames:DS,onEnter:he.func,onEntering:he.func,onEntered:he.func,onExit:he.func,onExiting:he.func,onExited:he.func}):{};const od=()=>{const e=sn(),t=e.formatMessage({defaultMessage:"Open chat menu",id:"chatbot.widget.menu.open"}),n=e.formatMessage({defaultMessage:"Start a new discussion",id:"chatbot.widget.menu.startNewDiscussion"}),r=e.formatMessage({defaultMessage:"Close chat",id:"chatbot.widget.close"});return{openMenuTranslation:t,startNewDiscussionTranslation:n,closeChatTranslation:r}},MS=({setIsWidgetOpen:e})=>{const{closeChatTranslation:t}=od();return x.jsx(x.Fragment,{children:x.jsx("button",{type:"button","aria-label":t,onClick:()=>e(!1),className:`absolute right-2 top-1/2 -translate-y-1/2
153
153
  inline-flex items-center justify-center
154
154
  rounded-full p-1.5
155
155
  text-white
@@ -160,7 +160,7 @@ Valid keys: `+JSON.stringify(Object.keys(m),null," "));var q=Ne(ue,ie,J,de,V+".
160
160
  focus-visible:ring-white/80
161
161
  focus-visible:ring-offset-2
162
162
  focus-visible:ring-offset-violet-700
163
- `,"data-testid":"close-button",children:x.jsx("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none","aria-hidden":"true",className:"select-none outline-none",children:x.jsx("path",{d:"M6 6L18 18M6 18L18 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})})},ud=({onStartNewDiscussion:e,className:t="",tone:n="light"})=>{const[r,i]=C.useState(!1),a=C.useRef(null),{openMenuTranslation:s,startNewDiscussionTranslation:o}=od();C.useEffect(()=>{if(!r)return;const c=f=>{a.current?.contains(f.target)||i(!1)},d=f=>{f.key==="Escape"&&i(!1)};return document.addEventListener("mousedown",c),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",c),document.removeEventListener("keydown",d)}},[r]);const u=n==="dark"?"text-white bg-white/10 hover:bg-white/20 focus-visible:ring-white/80 focus-visible:ring-offset-violet-700":"text-slate-700 bg-slate-100 hover:bg-slate-200 focus-visible:ring-slate-400 focus-visible:ring-offset-white";return x.jsxs("div",{ref:a,className:`relative inline-flex ${t}`,onMouseDown:c=>c.stopPropagation(),children:[x.jsx("button",{type:"button","aria-label":s,"aria-haspopup":"menu","aria-expanded":r,onClick:()=>i(c=>!c),className:`inline-flex items-center justify-center rounded-full p-1.5 transition-transform duration-150 ease-out hover:scale-110 active:scale-95 focus:outline-none focus-visible:ring-offset-2 ${u}`,"data-testid":"discussion-menu-button",children:x.jsxs("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none","aria-hidden":"true",className:"select-none outline-none",children:[x.jsx("circle",{cx:"5",cy:"12",r:"1.5",fill:"currentColor"}),x.jsx("circle",{cx:"12",cy:"12",r:"1.5",fill:"currentColor"}),x.jsx("circle",{cx:"19",cy:"12",r:"1.5",fill:"currentColor"})]})}),r&&x.jsx("div",{role:"menu",className:"absolute right-0 top-full z-30 mt-2 min-w-[210px] rounded-md border border-slate-200 bg-white p-1 shadow-lg",onMouseDown:c=>c.stopPropagation(),children:x.jsx("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm text-slate-800 hover:bg-slate-100",onClick:()=>{e(),i(!1)},children:o})})]})},MS=C.forwardRef(({props:e},t)=>{const{companySettings:n}=C.useContext(rn),{resetConversation:r}=ts(),i=n.agent?.customNameToDisplay||"Assistant";return x.jsxs("div",{ref:t,className:`
163
+ `,"data-testid":"close-button",children:x.jsx("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none","aria-hidden":"true",className:"select-none outline-none",children:x.jsx("path",{d:"M6 6L18 18M6 18L18 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})})},ud=({onStartNewDiscussion:e,className:t="",tone:n="light"})=>{const[r,i]=C.useState(!1),a=C.useRef(null),{openMenuTranslation:s,startNewDiscussionTranslation:o}=od();C.useEffect(()=>{if(!r)return;const c=f=>{a.current?.contains(f.target)||i(!1)},d=f=>{f.key==="Escape"&&i(!1)};return document.addEventListener("mousedown",c),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",c),document.removeEventListener("keydown",d)}},[r]);const u=n==="dark"?"text-white bg-white/10 hover:bg-white/20 focus-visible:ring-white/80 focus-visible:ring-offset-violet-700":"text-slate-700 bg-slate-100 hover:bg-slate-200 focus-visible:ring-slate-400 focus-visible:ring-offset-white";return x.jsxs("div",{ref:a,className:`relative inline-flex ${t}`,onMouseDown:c=>c.stopPropagation(),children:[x.jsx("button",{type:"button","aria-label":s,"aria-haspopup":"menu","aria-expanded":r,onClick:()=>i(c=>!c),className:`inline-flex items-center justify-center rounded-full p-1.5 transition-transform duration-150 ease-out hover:scale-110 active:scale-95 focus:outline-none focus-visible:ring-offset-2 ${u}`,"data-testid":"discussion-menu-button",children:x.jsxs("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none","aria-hidden":"true",className:"select-none outline-none",children:[x.jsx("circle",{cx:"5",cy:"12",r:"1.5",fill:"currentColor"}),x.jsx("circle",{cx:"12",cy:"12",r:"1.5",fill:"currentColor"}),x.jsx("circle",{cx:"19",cy:"12",r:"1.5",fill:"currentColor"})]})}),r&&x.jsx("div",{role:"menu",className:"absolute right-0 top-full z-30 mt-2 min-w-[210px] rounded-md border border-slate-200 bg-white p-1 shadow-lg",onMouseDown:c=>c.stopPropagation(),children:x.jsx("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm text-slate-800 hover:bg-slate-100",onClick:()=>{e(),i(!1)},children:o})})]})},BS=C.forwardRef(({props:e},t)=>{const{companySettings:n}=C.useContext(rn),{resetConversation:r}=ts(),i=n.agent?.customNameToDisplay||"Assistant";return x.jsxs("div",{ref:t,className:`
164
164
  chatBox
165
165
  fixed z-[2147483647]
166
166
  inset-0 w-screen h-[100svh] rounded-none
@@ -169,7 +169,7 @@ Valid keys: `+JSON.stringify(Object.keys(m),null," "));var q=Ne(ue,ie,J,de,V+".
169
169
  md:h-[clamp(420px,70dvh,640px)]
170
170
  md:rounded-xl
171
171
  bg-white shadow-xl flex flex-col overflow-hidden
172
- `,children:[x.jsxs("div",{className:"pl-3 relative z-20 bg-violet-700 py-2 text-white text-left flex justify-start items-center chatsystem-header",children:[x.jsx(Bc,{className:"chatSystem-widgetLogo",logo:x.jsx(Fc,{}),label:i}),x.jsx("div",{className:"absolute right-12 top-1/2 -translate-y-1/2",children:x.jsx(ud,{tone:"dark",onStartNewDiscussion:r})}),x.jsx(PS,{setIsWidgetOpen:e.setIsWidgetOpen})]}),x.jsx(td,{appToken:e.appToken,agentId:e.agentId})]})}),BS=({isWidgetOpen:e,appToken:t,agentId:n,setIsWidgetOpen:r})=>{const i=C.useRef(null);return C.useEffect(()=>{if(!e)return;const a=s=>{const o=i.current;if(!o)return;const u=typeof s.composedPath=="function"?s.composedPath():[];if(u.length>0){if(u.includes(o))return}else{const c=s.target;if(c&&o.contains(c))return}r(!1)};return document.addEventListener("pointerdown",a,!0),()=>{document.removeEventListener("pointerdown",a,!0)}},[e,r]),x.jsx("div",{children:x.jsx(rs,{nodeRef:i,in:e,timeout:200,classNames:"menuTransition",unmountOnExit:!0,children:x.jsx(MS,{ref:i,props:{appToken:t,agentId:n,setIsWidgetOpen:r}})})})},FS=()=>{const{resetConversation:e}=ts();return x.jsx("div",{className:"relative z-20 flex justify-end px-2 pt-2",children:x.jsx(ud,{tone:"light",onStartNewDiscussion:e})})},ld=()=>({hasFetchedSettings:!1,hasDisplayedCSS:!1}),HS=()=>{const[e,t]=C.useState(ld());return{appInternalContext:e,setAppInternalContext:t,setHasFetchedSettings:()=>{t(i=>({...i,hasFetchedSettings:!0}))},setHasDisplayedCss:()=>{t(i=>({...i,hasDisplayedCSS:!0}))}}},cd=C.createContext({appInternalContext:ld(),setAppInternalContext:()=>{},setHasFetchedSettings:()=>{}}),US=({displayMode:e,appToken:t,agentId:n})=>{const[r,i]=C.useState(!1),{appInternalContext:a}=C.useContext(cd);return x.jsxs(x.Fragment,{children:[e===Sn.LAUNCHER&&a.hasFetchedSettings&&x.jsxs(x.Fragment,{children:[x.jsx(tf,{isWidgetOpen:r,setIsWidgetOpen:i}),x.jsx(BS,{isWidgetOpen:r,appToken:t,agentId:n,setIsWidgetOpen:i})]}),e===Sn.CHATBOX&&a.hasFetchedSettings&&x.jsxs("div",{className:"chatBox w-full max-w-[1200px] mx-auto",children:[x.jsx(FS,{}),x.jsx(td,{appToken:t,agentId:n})]})]})},jS=e=>Object.values(Sn).includes(e),zS=e=>{const t=vt();return jS(e)?e:(t.warn(`Display mode not valid. Using ${Sn.LAUNCHER} as default.`),Sn.LAUNCHER)},$S=(e,t)=>{let n,r;return typeof window<"u"&&(r=window.localStorage.getItem(Tx)),r&&e?.[r]!==void 0?n=e[r]:(n=e[t],n.isDefault=!0),n},YS=(e,t)=>{const[n,r]=C.useState(e[t]),i=a=>{Object.keys(e).includes(a?.locale)?r(a):r(e[lt.ENGLISH])};return C.useEffect(()=>{let a=$S(e,t);a.locale!==t&&r(e[a.locale])},[]),{appCurrentLang:n,handleSetContextCurrentLang:i}},GS=e=>Object.values(lt).includes(e),qS=(e,t)=>{const n=t??vt();return GS(e)?e:(n.warn(`Language ${e} not handled for now. Using ${lt.ENGLISH}.`),lt.ENGLISH)};function VS(e,t=Date.now()){return t-e}function WS(e,t=Date.now()){return VS(new Date(e).getTime(),t)<=Fx}function XS({settings:e,setCurrentConversation:t,setArchivedConversation:n}){const r=Wc({key:Jr});if(!r){t({discussionId:null,items:[{userType:"assistant",content:e.agent.text.initialText,temporaryId:crypto.randomUUID()}]});return}WS(r.updatedAt)?t({discussionId:r.discussionId,items:r.items,updatedAt:r.updatedAt}):(t({discussionId:null,items:[{userType:"assistant",content:e.agent.text.initialText,temporaryId:crypto.randomUUID()}]}),n({discussionId:r.discussionId,items:r.items,updatedAt:r.updatedAt}))}const QS=({agentId:e,appToken:t,onFetched:n})=>{const r=_n(),[i,a]=C.useState({}),s={companySettings:i,setCompanySettings:a},[o,u]=C.useState({discussionId:null,items:[],updatedAt:null}),[c,d]=C.useState({discussionId:null,items:[],updatedAt:null}),[f,p]=C.useState(()=>qx()),[h,b]=C.useState(0),w={currentConversation:o,setCurrentConversation:u,archivedConversation:c,setArchivedConversation:d,chatboxBootState:f,setChatboxBootState:p,resetConversationRequestId:h,resetConversation:()=>{Gx(),p({mode:At.ai,customerSupportState:null,reason:"manual_start_new_conversation"}),u({discussionId:null,items:[{userType:"assistant",content:i?.agent?.text?.initialText,temporaryId:crypto.randomUUID()}],updatedAt:null}),b(_=>_+1)}};return C.useEffect(()=>{const _=gt.getApiUrl(),N=gt.getFetchConfig({httpVerb:"GET",contentType:"application/json"});let I=`${_}/company/settings/${t}`;I+=`/${e}`,fetch(I,{...N,credentials:"omit"}).then(async L=>{const A=await L.json();a(A),XS({settings:A,setCurrentConversation:u,setArchivedConversation:d}),n?.()}).catch(L=>{r.warn("error in settings fetch",L)})},[t,e,r]),{contextCompanySettings:s,contextInitialConversationState:w}};function KS(e,t={},n,r){const i=_n(),{id:a,nonce:s,target:o,disableConstructable:u}=t,c=o,d=C.useRef(null),f=C.useRef(null);C.useEffect(()=>{if(!o)return;if(!e){n&&(i.log("No custom css found."),r?.());return}if(!u&&"adoptedStyleSheets"in c&&typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype)return d.current||(d.current=new CSSStyleSheet,c.adoptedStyleSheets=[...c.adoptedStyleSheets,d.current]),d.current.replaceSync(e),i.log("Loading custom css via stylesheet."),r?.(),()=>{const h=c.adoptedStyleSheets||[],b=h.indexOf(d.current);if(b>=0){const y=h.slice();y.splice(b,1),c.adoptedStyleSheets=y}d.current=null};if(!f.current){const h=document.createElement("style");h.type="text/css",a&&(h.id=a),s&&(h.nonce=s),(c instanceof Document&&c.head||c).appendChild(h),f.current=h}return f.current.textContent=e,i.log("Loading custom css via style tag."),r?.(),()=>{f.current?.parentNode?.removeChild(f.current),f.current=null}},[e,a,s,o,u,i])}function ZS(e,t){const{manifest:n,origins:r}=JS(e,t);r.forEach(Yd),qd(n),$d(n)}function JS(e,t){const n=t??vt(),r=e_(e),i=new Set,a=new Set,s=new Set,o=new Set;for(const{url:d,mode:f}of r)switch(t_(f,d,n)){case"svg":a.add(d);break;case"lottie":s.add(d);break;case"spritesheet":o.add(d);break;case"image":i.add(d);break}const u={images:Array.from(i),svgs:Array.from(a),lotties:Array.from(s),sprites:Array.from(o)},c=n_(u,n);return{manifest:u,origins:c}}function e_(e){if(!e?.agent?.display)return[];const t=e.agent.display,n=[t.launcher,t.assistant,t.search].filter(Boolean),r=[];for(const i of n)i?.assetUrl&&r.push({url:i.assetUrl,mode:i.mode});return r}function t_(e,t,n){if(e)switch(e){case"svg":return"svg";case"lottie":return"lottie";case"spritesheet":return"spritesheet";case"image":return"image";case"video":return"video"}try{const i=new URL(t,document.baseURI).pathname.toLowerCase();if(i.endsWith(".svg"))return"svg";if(i.endsWith(".lottie")||i.endsWith(".zip")||i.endsWith(".json"))return i.endsWith(".json"),"lottie";if(/\.(png|webp|jpg|jpeg|gif|avi,ef)$/.test(i))return"image";if(/\.(mp4|webm|mov|m4v|ogg)$/.test(i))return"video"}catch(r){n.warn("error in normalizeKind:",r)}return"unknown"}function n_(e,t){const n=new Set,r=i=>{if(i)try{const a=new URL(i,document.baseURI);n.add(`${a.protocol}//${a.host}`)}catch(a){t.warn("error in uniqueOriginsFromManifest",a)}};return(e.images??[]).forEach(r),(e.svgs??[]).forEach(r),(e.lotties??[]).forEach(r),(e.sprites??[]).forEach(r),Array.from(n)}const r_=({children:e,appToken:t,agentId:n,appRoot:r,logger:i,identityProvider:a})=>{var s=navigator.language;i.log("Brower language",s);const o=qS(s,i),{appCurrentLang:u,handleSetContextCurrentLang:c}=YS(Zr,o),d={appCurrentLang:u,setAppCurrentLang:c},f=HS(),{contextCompanySettings:p,contextInitialConversationState:h}=QS({agentId:n,appToken:t,onFetched:f.setHasFetchedSettings});return ZS(p.companySettings,i),KS(p.companySettings?.agent?.display?.CSSRules,{id:`${n}`,target:r},f.appInternalContext.hasFetchedSettings,f.setHasDisplayedCss),x.jsx(x.Fragment,{children:x.jsx(ed.Provider,{value:a,children:x.jsx(gu.Provider,{value:i,children:x.jsx(wh,{locale:u?.locale,messages:u?.translatedText,children:x.jsx(Vc.Provider,{value:d,children:x.jsx(cd.Provider,{value:f,children:x.jsx(rn.Provider,{value:p,children:x.jsx(Jc.Provider,{value:h,children:f.appInternalContext.hasDisplayedCSS&&e})})})})})})})})};var Sn=(e=>(e.LAUNCHER="launcher",e.CHATBOX="chatbox",e))(Sn||{});function i_({appToken:e,displayMode:t="launcher",agentId:n,appRoot:r,identityProvider:i}){const a=_n();e||a.warn("appToken not defined in ai-client. Please see the documentation at URL_ERROR_IN_DOC");const s=zS(t);return a.log(`App boot in ${s} mode.`),x.jsx("div",{className:"chatSystemWidget app-root",id:"chatSystemWidget",children:x.jsx(r_,{appToken:e,agentId:n,appRoot:r,logger:a,identityProvider:i,children:x.jsx(US,{displayMode:s,appToken:e,agentId:n})})})}const a_=`*, ::before, ::after {
172
+ `,children:[x.jsxs("div",{className:"pl-3 relative z-20 bg-violet-700 py-2 text-white text-left flex justify-start items-center chatsystem-header",children:[x.jsx(Bc,{className:"chatSystem-widgetLogo",logo:x.jsx(Fc,{}),label:i}),x.jsx("div",{className:"absolute right-12 top-1/2 -translate-y-1/2",children:x.jsx(ud,{tone:"dark",onStartNewDiscussion:r})}),x.jsx(MS,{setIsWidgetOpen:e.setIsWidgetOpen})]}),x.jsx(td,{appToken:e.appToken,agentId:e.agentId})]})}),FS=({isWidgetOpen:e,appToken:t,agentId:n,setIsWidgetOpen:r})=>{const i=C.useRef(null);return C.useEffect(()=>{if(!e)return;const a=s=>{const o=i.current;if(!o)return;const u=typeof s.composedPath=="function"?s.composedPath():[];if(u.length>0){if(u.includes(o))return}else{const c=s.target;if(c&&o.contains(c))return}r(!1)};return document.addEventListener("pointerdown",a,!0),()=>{document.removeEventListener("pointerdown",a,!0)}},[e,r]),x.jsx("div",{children:x.jsx(rs,{nodeRef:i,in:e,timeout:200,classNames:"menuTransition",unmountOnExit:!0,children:x.jsx(BS,{ref:i,props:{appToken:t,agentId:n,setIsWidgetOpen:r}})})})},HS=()=>{const{resetConversation:e}=ts();return x.jsx("div",{className:"relative z-20 flex justify-end px-2 pt-2",children:x.jsx(ud,{tone:"light",onStartNewDiscussion:e})})},ld=()=>({hasFetchedSettings:!1,hasDisplayedCSS:!1}),US=()=>{const[e,t]=C.useState(ld());return{appInternalContext:e,setAppInternalContext:t,setHasFetchedSettings:()=>{t(i=>({...i,hasFetchedSettings:!0}))},setHasDisplayedCss:()=>{t(i=>({...i,hasDisplayedCSS:!0}))}}},cd=C.createContext({appInternalContext:ld(),setAppInternalContext:()=>{},setHasFetchedSettings:()=>{}}),jS=({displayMode:e,appToken:t,agentId:n})=>{const[r,i]=C.useState(!1),{appInternalContext:a}=C.useContext(cd);return x.jsxs(x.Fragment,{children:[e===Sn.LAUNCHER&&a.hasFetchedSettings&&x.jsxs(x.Fragment,{children:[x.jsx(tf,{isWidgetOpen:r,setIsWidgetOpen:i}),x.jsx(FS,{isWidgetOpen:r,appToken:t,agentId:n,setIsWidgetOpen:i})]}),e===Sn.CHATBOX&&a.hasFetchedSettings&&x.jsxs("div",{className:"chatBox w-full max-w-[1200px] mx-auto",children:[x.jsx(HS,{}),x.jsx(td,{appToken:t,agentId:n})]})]})},zS=e=>Object.values(Sn).includes(e),$S=e=>{const t=vt();return zS(e)?e:(t.warn(`Display mode not valid. Using ${Sn.LAUNCHER} as default.`),Sn.LAUNCHER)},YS=(e,t)=>{let n,r;return typeof window<"u"&&(r=window.localStorage.getItem(Tx)),r&&e?.[r]!==void 0?n=e[r]:(n=e[t],n.isDefault=!0),n},GS=(e,t)=>{const[n,r]=C.useState(e[t]),i=a=>{Object.keys(e).includes(a?.locale)?r(a):r(e[lt.ENGLISH])};return C.useEffect(()=>{let a=YS(e,t);a.locale!==t&&r(e[a.locale])},[]),{appCurrentLang:n,handleSetContextCurrentLang:i}},qS=e=>Object.values(lt).includes(e),VS=(e,t)=>{const n=t??vt();return qS(e)?e:(n.warn(`Language ${e} not handled for now. Using ${lt.ENGLISH}.`),lt.ENGLISH)};function WS(e,t=Date.now()){return t-e}function XS(e,t=Date.now()){return WS(new Date(e).getTime(),t)<=Hx}function QS({settings:e,setCurrentConversation:t,setArchivedConversation:n}){const r=Wc({key:Jr});if(!r){t({discussionId:null,items:[{userType:"assistant",content:e.agent.text.initialText,temporaryId:crypto.randomUUID()}]});return}XS(r.updatedAt)?t({discussionId:r.discussionId,items:r.items,updatedAt:r.updatedAt}):(t({discussionId:null,items:[{userType:"assistant",content:e.agent.text.initialText,temporaryId:crypto.randomUUID()}]}),n({discussionId:r.discussionId,items:r.items,updatedAt:r.updatedAt}))}const KS=({agentId:e,appToken:t,onFetched:n})=>{const r=_n(),[i,a]=C.useState({}),s={companySettings:i,setCompanySettings:a},[o,u]=C.useState({discussionId:null,items:[],updatedAt:null}),[c,d]=C.useState({discussionId:null,items:[],updatedAt:null}),[f,p]=C.useState(()=>Vx()),[h,b]=C.useState(0),w={currentConversation:o,setCurrentConversation:u,archivedConversation:c,setArchivedConversation:d,chatboxBootState:f,setChatboxBootState:p,resetConversationRequestId:h,resetConversation:()=>{qx(),p({mode:At.ai,customerSupportState:null,reason:"manual_start_new_conversation"}),u({discussionId:null,items:[{userType:"assistant",content:i?.agent?.text?.initialText,temporaryId:crypto.randomUUID()}],updatedAt:null}),b(_=>_+1)}};return C.useEffect(()=>{const _=gt.getApiUrl(),N=gt.getFetchConfig({httpVerb:"GET",contentType:"application/json"});let I=`${_}/company/settings/${t}`;I+=`/${e}`,fetch(I,{...N,credentials:"omit"}).then(async L=>{const A=await L.json();a(A),QS({settings:A,setCurrentConversation:u,setArchivedConversation:d}),n?.()}).catch(L=>{r.warn("error in settings fetch",L)})},[t,e,r]),{contextCompanySettings:s,contextInitialConversationState:w}};function ZS(e,t={},n,r){const i=_n(),{id:a,nonce:s,target:o,disableConstructable:u}=t,c=o,d=C.useRef(null),f=C.useRef(null);C.useEffect(()=>{if(!o)return;if(!e){n&&(i.log("No custom css found."),r?.());return}if(!u&&"adoptedStyleSheets"in c&&typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype)return d.current||(d.current=new CSSStyleSheet,c.adoptedStyleSheets=[...c.adoptedStyleSheets,d.current]),d.current.replaceSync(e),i.log("Loading custom css via stylesheet."),r?.(),()=>{const h=c.adoptedStyleSheets||[],b=h.indexOf(d.current);if(b>=0){const y=h.slice();y.splice(b,1),c.adoptedStyleSheets=y}d.current=null};if(!f.current){const h=document.createElement("style");h.type="text/css",a&&(h.id=a),s&&(h.nonce=s),(c instanceof Document&&c.head||c).appendChild(h),f.current=h}return f.current.textContent=e,i.log("Loading custom css via style tag."),r?.(),()=>{f.current?.parentNode?.removeChild(f.current),f.current=null}},[e,a,s,o,u,i])}function JS(e,t){const{manifest:n,origins:r}=e_(e,t);r.forEach(Yd),qd(n),$d(n)}function e_(e,t){const n=t??vt(),r=t_(e),i=new Set,a=new Set,s=new Set,o=new Set;for(const{url:d,mode:f}of r)switch(n_(f,d,n)){case"svg":a.add(d);break;case"lottie":s.add(d);break;case"spritesheet":o.add(d);break;case"image":i.add(d);break}const u={images:Array.from(i),svgs:Array.from(a),lotties:Array.from(s),sprites:Array.from(o)},c=r_(u,n);return{manifest:u,origins:c}}function t_(e){if(!e?.agent?.display)return[];const t=e.agent.display,n=[t.launcher,t.assistant,t.search].filter(Boolean),r=[];for(const i of n)i?.assetUrl&&r.push({url:i.assetUrl,mode:i.mode});return r}function n_(e,t,n){if(e)switch(e){case"svg":return"svg";case"lottie":return"lottie";case"spritesheet":return"spritesheet";case"image":return"image";case"video":return"video"}try{const i=new URL(t,document.baseURI).pathname.toLowerCase();if(i.endsWith(".svg"))return"svg";if(i.endsWith(".lottie")||i.endsWith(".zip")||i.endsWith(".json"))return i.endsWith(".json"),"lottie";if(/\.(png|webp|jpg|jpeg|gif|avi,ef)$/.test(i))return"image";if(/\.(mp4|webm|mov|m4v|ogg)$/.test(i))return"video"}catch(r){n.warn("error in normalizeKind:",r)}return"unknown"}function r_(e,t){const n=new Set,r=i=>{if(i)try{const a=new URL(i,document.baseURI);n.add(`${a.protocol}//${a.host}`)}catch(a){t.warn("error in uniqueOriginsFromManifest",a)}};return(e.images??[]).forEach(r),(e.svgs??[]).forEach(r),(e.lotties??[]).forEach(r),(e.sprites??[]).forEach(r),Array.from(n)}const i_=({children:e,appToken:t,agentId:n,appRoot:r,logger:i,identityProvider:a})=>{var s=navigator.language;i.log("Brower language",s);const o=VS(s,i),{appCurrentLang:u,handleSetContextCurrentLang:c}=GS(Zr,o),d={appCurrentLang:u,setAppCurrentLang:c},f=US(),{contextCompanySettings:p,contextInitialConversationState:h}=KS({agentId:n,appToken:t,onFetched:f.setHasFetchedSettings});return JS(p.companySettings,i),ZS(p.companySettings?.agent?.display?.CSSRules,{id:`${n}`,target:r},f.appInternalContext.hasFetchedSettings,f.setHasDisplayedCss),x.jsx(x.Fragment,{children:x.jsx(ed.Provider,{value:a,children:x.jsx(gu.Provider,{value:i,children:x.jsx(wh,{locale:u?.locale,messages:u?.translatedText,children:x.jsx(Vc.Provider,{value:d,children:x.jsx(cd.Provider,{value:f,children:x.jsx(rn.Provider,{value:p,children:x.jsx(Jc.Provider,{value:h,children:f.appInternalContext.hasDisplayedCSS&&e})})})})})})})})};var Sn=(e=>(e.LAUNCHER="launcher",e.CHATBOX="chatbox",e))(Sn||{});function a_({appToken:e,displayMode:t="launcher",agentId:n,appRoot:r,identityProvider:i}){const a=_n();e||a.warn("appToken not defined in ai-client. Please see the documentation at URL_ERROR_IN_DOC");const s=$S(t);return a.log(`App boot in ${s} mode.`),x.jsx("div",{className:"chatSystemWidget app-root",id:"chatSystemWidget",children:x.jsx(i_,{appToken:e,agentId:n,appRoot:r,logger:a,identityProvider:i,children:x.jsx(jS,{displayMode:s,appToken:e,agentId:n})})})}const s_=`*, ::before, ::after {
173
173
  --tw-border-spacing-x: 0;
174
174
  --tw-border-spacing-y: 0;
175
175
  --tw-translate-x: 0;
@@ -2071,7 +2071,7 @@ video {
2071
2071
  padding-right: 6rem;
2072
2072
  }
2073
2073
  }
2074
- `,s_=`
2074
+ `,o_=`
2075
2075
  .chatBox {
2076
2076
  overflow-x: hidden; /* Hide horizontal scrollbar */
2077
2077
  overflow-wrap: anywhere;
@@ -2296,7 +2296,7 @@ video {
2296
2296
  width: 100%;
2297
2297
  }
2298
2298
  }
2299
- `,o_=`/* React-Css Transitions */
2299
+ `,u_=`/* React-Css Transitions */
2300
2300
  .menuTransition-enter {
2301
2301
  opacity: 0;
2302
2302
  transform: scale(0.9) translateX(200px);
@@ -2365,7 +2365,7 @@ textarea::placeholder {
2365
2365
  .messagesContainer {
2366
2366
  outline:none
2367
2367
  }
2368
- `,u_=`/* Core mic button */
2368
+ `,l_=`/* Core mic button */
2369
2369
  .mic-core {
2370
2370
  position: absolute;
2371
2371
  inset: 0;
@@ -2413,7 +2413,7 @@ textarea::placeholder {
2413
2413
  70% { opacity: 0.12; }
2414
2414
  100% { transform: scale(2.1); opacity: 0; }
2415
2415
  }
2416
- `,l_=`/* 1) Remove UA outline on the shadow host */
2416
+ `,c_=`/* 1) Remove UA outline on the shadow host */
2417
2417
  :host(:focus),
2418
2418
  :host(:focus-visible) { outline: none; }
2419
2419
 
@@ -2425,9 +2425,9 @@ textarea::placeholder {
2425
2425
 
2426
2426
  /* Ensure the wrapper itself doesn't get a default outline either */
2427
2427
  .app-root:focus { outline: none; }
2428
- `,su=`${a_}
2429
- ${s_}
2428
+ `,su=`${s_}
2430
2429
  ${o_}
2431
- ${l_}
2432
- ${u_}`;function c_({cssHref:e,appToken:t,agentId:n,displayMode:r,shouldDisplayLogs:i,...a}){const s=r==="launcher"?"body":"inline",o=C.useRef(null),u=C.useRef(null),[c,d]=C.useState(null),[f,p]=C.useState(null),h=C.useMemo(()=>Ud(i),[i]);return jd(h),C.useEffect(()=>{if(typeof document>"u")return;const b=s==="inline"?o.current:document.body;if(!b)return;const y=document.createElement("div");b.appendChild(y),u.current=y;const w=y.attachShadow({mode:"open",delegatesFocus:!0});p(w);let _=!1;try{if("adoptedStyleSheets"in w&&!e){const I=new CSSStyleSheet;I.replaceSync(su),w.adoptedStyleSheets=[...w.adoptedStyleSheets??[],I],_=!0}}catch{}if(!_)if(e){const I=document.createElement("link");I.rel="stylesheet",I.href=e,w.appendChild(I)}else{const I=document.createElement("style");I.textContent=su,w.appendChild(I)}const N=document.createElement("div");return w.appendChild(N),d(N),()=>{d(null),y.remove(),u.current=null}},[s,e]),x.jsxs(x.Fragment,{children:[s==="inline"&&x.jsx("div",{ref:o})," ",c&&Mn.createPortal(x.jsx(i_,{...a,appToken:t,agentId:n,displayMode:r,appRoot:f}),c)]})}exports.App=c_;
2430
+ ${u_}
2431
+ ${c_}
2432
+ ${l_}`;function d_({cssHref:e,appToken:t,agentId:n,displayMode:r,shouldDisplayLogs:i,...a}){const s=r==="launcher"?"body":"inline",o=C.useRef(null),u=C.useRef(null),[c,d]=C.useState(null),[f,p]=C.useState(null),h=C.useMemo(()=>Ud(i),[i]);return jd(h),C.useEffect(()=>{if(typeof document>"u")return;const b=s==="inline"?o.current:document.body;if(!b)return;const y=document.createElement("div");b.appendChild(y),u.current=y;const w=y.attachShadow({mode:"open",delegatesFocus:!0});p(w);let _=!1;try{if("adoptedStyleSheets"in w&&!e){const I=new CSSStyleSheet;I.replaceSync(su),w.adoptedStyleSheets=[...w.adoptedStyleSheets??[],I],_=!0}}catch{}if(!_)if(e){const I=document.createElement("link");I.rel="stylesheet",I.href=e,w.appendChild(I)}else{const I=document.createElement("style");I.textContent=su,w.appendChild(I)}const N=document.createElement("div");return w.appendChild(N),d(N),()=>{d(null),y.remove(),u.current=null}},[s,e]),x.jsxs(x.Fragment,{children:[s==="inline"&&x.jsx("div",{ref:o})," ",c&&Mn.createPortal(x.jsx(a_,{...a,appToken:t,agentId:n,displayMode:r,appRoot:f}),c)]})}exports.App=d_;
2433
2433
  //# sourceMappingURL=index.cjs.map