@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 +17 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +171 -160
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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]})})},
|
|
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"})," "]})]})})})}),
|
|
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(
|
|
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
|
|
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})})]})},
|
|
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(
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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=`${
|
|
2429
|
-
${s_}
|
|
2428
|
+
`,su=`${s_}
|
|
2430
2429
|
${o_}
|
|
2431
|
-
${
|
|
2432
|
-
${
|
|
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
|