@1interface/shared-core 0.2.2 → 0.2.4
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.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -233,7 +233,7 @@ export declare const defaultLightThemeStyles: ChatThemeStyles;
|
|
|
233
233
|
|
|
234
234
|
export declare function detectOrgSwitch(activeOrgId: string, storage: SyncKeyValueStorage): OrgSwitchReason;
|
|
235
235
|
|
|
236
|
-
export declare function detectTextDirection(text: string, fallback?: TextDirection): DirectionResult;
|
|
236
|
+
export declare function detectTextDirection(text: string | null | undefined, fallback?: TextDirection): DirectionResult;
|
|
237
237
|
|
|
238
238
|
export declare const DEVICE_TOKEN_HEADER = "x-device-token";
|
|
239
239
|
|
|
@@ -864,7 +864,7 @@ export declare const updateUser: ActionCreatorWithNonInferrablePayload<"auth/upd
|
|
|
864
864
|
|
|
865
865
|
export declare function useBranding(): BrandingContextValue;
|
|
866
866
|
|
|
867
|
-
export declare function useMessageDirection(msgId: string, text: string, lang?: string): TextDirection;
|
|
867
|
+
export declare function useMessageDirection(msgId: string, text: string | null | undefined, lang?: string): TextDirection;
|
|
868
868
|
|
|
869
869
|
export declare const useNetworkState: () => NetworkState;
|
|
870
870
|
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("@reduxjs/toolkit"),r=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const o=new Date,n=o.getFullYear()%100,a=o.getMonth()+1;return!(s<n||s===n&&r<a||r>12)},s=e=>{if(!e)return"";if(!r(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,o=s.getFullYear()%100,n=s.getMonth()+1;if(r<o||r===o&&e<n||e>12)return""}}return e},o={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let n=null,a=null;const i=[];function c(e){if(n=e,i.length>0){const t=i.splice(0,i.length);for(const r of t)e.emit(r)}}function u(e){a=e}function l(e,t){const r=a?function(e){try{return e()??{}}catch{return{}}}(a):{},{message:s,...o}=t,c={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};n?n.emit(c):(i.length>=200&&i.shift(),i.push(c))}const d={debug(e){l(o.DEBUG,e)},info(e){l(o.INFO,e)},warn(e){l(o.WARN,e)},error(e){l(o.ERROR,e)},flush:()=>n?.flush?.()},p={[o.DEBUG]:0,[o.INFO]:1,[o.WARN]:2,[o.ERROR]:3};function g(e={}){const t=p[e.minLevel??o.DEBUG];return{emit(e){p[e.level]<t||(e.level===o.ERROR?console.error:e.level===o.WARN?console.warn:e.level===o.DEBUG?console.debug:console.info)(e)}}}const E={[o.DEBUG]:5,[o.INFO]:9,[o.WARN]:13,[o.ERROR]:17};function x(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function m(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=x(s));return t}let f=!1,F=null,T=!0;function h(e){T=e}function S(e){f||(f=!0,u(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),c(function(e){const t=[g({minLevel:e.consoleMinLevel??(e.isDev?o.DEBUG:o.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const o=[];function n(){s||(s=async function(){const[t,s,n,a]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),i=a.resourceFromAttributes(e.resourceAttrs),c=new n.OTLPLogExporter({url:e.endpoint}),u=new s.LoggerProvider({resource:i,processors:[new s.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...o}=e;l.emit({severityNumber:E[t],severityText:t,body:JSON.stringify(e),attributes:m(o),timestamp:new Date(s)})},async flush(){await u.forceFlush()}},o.length>0){const e=o.splice(0,o.length);for(const t of e)r.emit(t)}}().catch(()=>{o.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(n(),o.length>=200&&o.shift(),o.push(e)))},async flush(){(s||r)&&(n(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,o=e.wrapBatch??(e=>e),n=[];let a=null;function i(){return null!==a&&(clearTimeout(a),a=null),0===n.length||0===(t=n.splice(0,n.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){n.length>=s&&n.shift(),n.push(e),n.length>=t?i():null===a&&(a=setTimeout(()=>{a=null,i()},r))},async flush(){await i()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){T&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&F?.())}const y=Object.freeze(Object.defineProperty({__proto__:null,initLogger:S,registerPlatformFlushAttacher:function(e){F=e},resetInitLoggerStateForTests:function(){f=!1,F=null,T=!0},setNetworkLoggingEnabled:h},Symbol.toStringTag,{value:"Module"}));let A,O="",_={},R=null,I=()=>null,C=()=>null,N=()=>null,D=!1;const M=()=>R,v=()=>N(),k=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${O}/api${t}`},w="chat",B={CONVERSATIONS:()=>k("/conversations"),CONVERSATION_STREAM:e=>k(`/conversations/${e}`),CONVERSATION_START:e=>k(`/conversations/${e}/start`),WEBRTC_OFFER:e=>k(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>k(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return k("/transcribe")},get BRANDING(){return k("/branding")},get CONFIG(){return k("/config")},get PROFILE(){return k("/profile")},get AUTH_ME(){return k("/auth/me")},get ORGANIZATIONS_EXISTS(){return k("/organizations/exists")},get DEBUG(){return k("/debug")},get TOOL_SERVERS(){return k("/tool-servers")},TOOL_SERVER_AUTH_START:e=>k(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>k(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return k("/tool-servers/auth/exchange")},get LOG(){return k("/log")}},b={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},L={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},P={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let U=!0;const H=3,G=500,K=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(d.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},$="bridge-toast";function W(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent($,{detail:e}))}const j=$,V=e=>!!e&&Date.now()>=e-b.TOKEN_CLOCK_SKEW_MS,z=e=>!e||Date.now()>=e-b.TOKEN_REFRESH_THRESHOLD_MS;function X(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),o=JSON.parse(s);return o&&"object"==typeof o&&!Array.isArray(o)?o:null}catch{return null}}function Y(e){const t=X(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}const J={LTR:"ltr",RTL:"rtl"},q=[[1488,1514],[1519,1522],[1568,1610],[1646,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1791],[1808,1839],[1869,1919],[1920,1957],[1969,1969],[1994,2026],[2048,2069],[2112,2136],[2160,2190],[2208,2239],[64285,64335],[64336,64975],[65136,65276],[125184,125251]],Z=[[12352,12543],[19968,40959],[44032,55215]],Q=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,ee=["arab","hebr","thaa","syrc","adlm","nkoo"],te=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],re=["und","zxx","mul"];function se(e,t){for(const[r,s]of t)if(e>=r&&e<=s)return!0;return!1}function oe(e,t=J.LTR){const r=(e??"").replace(Q," ");let s=0,o=0;for(const e of r){const t=e.codePointAt(0);se(t,q)?s+=1:(e.toLowerCase()!==e.toUpperCase()||se(t,Z))&&(o+=1)}const n=s+o;return 0===n?{dir:t,confident:!1}:{dir:s/n>=.2?J.RTL:J.LTR,confident:n>=12}}function ne(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1))if(4===e.length)return ee.indexOf(e)>=0?J.RTL:J.LTR;const r=t[0];return!r||re.indexOf(r)>=0?null:te.indexOf(r)>=0?J.RTL:J.LTR}class ae{static instance;events={};constructor(){}static getInstance(){return ae.instance||(ae.instance=new ae),ae.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){d.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const ie=ae.getInstance(),ce={LIGHT:"light",DARK:"dark",SYSTEM:"system"},ue=[ce.LIGHT,ce.DARK,ce.SYSTEM],le={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},de={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:le.PILL,chatInputPlaceholder:"Type anything..."},pe={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:le.PILL,chatInputPlaceholder:"Type anything..."};function ge(e){return e===ce.LIGHT?pe:de}const Ee=de;function xe(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const o=Math.max(0,Math.min(100,t));return`#${s}${Math.round(o/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function me(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function fe(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function Fe(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function Te(e){switch(e){case"pill":return le.PILL;case"none":return le.SHARP;default:return 0===parseInt(e??"",10)?le.SHARP:le.ROUNDED}}const he=e.createContext(void 0),Se=e.createContext(null);let ye=null;const Ae=()=>ye,Oe=e.createContext(null),_e={isConnected:!0,isInternetReachable:!0},Re=t.createSlice({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:o,expiresIn:n}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==o&&(e.refreshToken=o),void 0!==n?e.tokenExpiresAt=null===n?null:1e3*n:s&&(e.tokenExpiresAt=Date.now()+b.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:Ie,updateUser:Ce,clearSession:Ne,sessionExpired:De,setSelectedOrgId:Me}=Re.actions,ve=Ie,ke=Ne,we=t.createListenerMiddleware();we.startListening({matcher:t.isAnyOf(Ie,Ce,Ne,De),effect:async(e,t)=>{const r=Ae();if(!r)return;const{auth:s}=t.getState(),o=[];o.push(s.accessToken?r.setItem(L.ACCESS_TOKEN,s.accessToken):r.removeItem(L.ACCESS_TOKEN)),o.push(s.refreshToken?r.setItem(L.REFRESH_TOKEN,s.refreshToken):r.removeItem(L.REFRESH_TOKEN)),o.push(null!=s.tokenExpiresAt?r.setItem(L.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(L.TOKEN_EXPIRES_AT)),o.push(s.user?r.setItem(L.USER,JSON.stringify(s.user)):r.removeItem(L.USER)),(Ne.match(e)||De.match(e))&&o.push(r.removeItem(L.LOCATION_CACHE),r.removeItem(L.DEBUG_MODE),r.removeItem(L.APPEARANCE_MODE_KEY),r.removeItem(L.LOCATION_ENABLED),r.removeItem(L.STT_AUTO_SEND),r.removeItem(L.STT_IMPLEMENTATION),r.removeItem(L.SEND_DIAGNOSTICS),r.removeItem(L.ACTIVE_CONVERSATION_ID)),await Promise.all(o)}});const Be=Re.reducer,be={lastResponseTime:null},Le=t.createSlice({name:"indicator",initialState:be,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(t.isAnyOf(Ne,De),()=>be)}}),{setLastResponseTime:Pe,clearLastResponseTime:Ue}=Le.actions,He=Le.reducer;exports.API_ENDPOINTS=B,exports.APPEARANCE_MODES=ce,exports.APPEARANCE_MODE_VALUES=ue,exports.AUTH_HEADERS=P,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},exports.BRIDGE_TOAST_EVENT_NAME=j,exports.BrandingContext=he,exports.CORNER_RADIUS_MODES=le,exports.DEVICE_TOKEN_HEADER="x-device-token",exports.DIRECTION_VECTORS=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"Hello مرحبا",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"Azerbaijani in Arabic script",lang:"az-Arab",expected:"rtl"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}],exports.EventEmitter=ae,exports.FEATURE_FLAGS={SSO:"sso"},exports.IDP_HINTS={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},exports.INDICATOR_TIMER_ACTIONS={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"},exports.LOG_LEVELS=o,exports.NetworkContext=Oe,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=w,exports.PATTERNS={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},exports.PROFILE_LIMITS={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},exports.STORAGE_KEYS=L,exports.STT_IMPLEMENTATIONS={ONLINE:"online",DEVICE:"device"},exports.StorageContext=Se,exports.TEXT_DIRECTION=J,exports.TIMING=b,exports.brandingToThemeStyles=function(e,t,r=ce.DARK){const s=ge(r);if(!e||!t)return s;const o=t.surface?.chatInput?.border||t.surface?.input?.border,n=t.surface?.userMessage?.border,a=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,inputBorderStyle:o?.style||s.inputBorderStyle,inputBorderColor:o?.color?xe(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:a?.style||s.widgetBorderStyle,widgetBorderColor:a?.color?xe(a.color,a.opacity||100):s.widgetBorderColor,widgetBorderWidth:a?.width||s.widgetBorderWidth,widgetBorderOpacity:a?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:n?.style||s.userMsgBorderStyle,userMsgBorderColor:n?.color?xe(n.color,n.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:n?.width||s.userMsgBorderWidth,userMsgBorderOpacity:n?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:me(e.typography?.fontFamily,s),fontFamilyMono:fe(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:Fe(e.cornerRadius,s),cornerRadiusMode:Te(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}},exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearAuthTokens=function(e){try{e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)}catch{}},exports.clearLastResponseTime=Ue,exports.clearSession=Ne,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=K,maxAttempts:s=H,backoffBaseMs:o=G}=e;let n=null;return function(){return n||(n=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const n=o*2**e+250*Math.random();await new Promise(e=>setTimeout(e,n))}return null})().finally(()=>{n=null}),n)}},exports.defaultChatThemeStyles=Ee,exports.defaultDarkThemeStyles=de,exports.defaultIsTransient=K,exports.defaultLightThemeStyles=pe,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(L.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=Y(t.getItem(L.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.detectTextDirection=oe,exports.ensureFreshToken=async()=>z(v())?await(M()?.())??null:null,exports.eventEmitter=ie,exports.extractTokens=function(e){const t=e.headers.get(P.ACCESS_TOKEN),r=e.headers.get(P.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${P.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${P.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}},exports.formatCVC=e=>e.replace(/\D/g,"").slice(0,4),exports.formatCamelCaseToTitle=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",exports.formatCardNumber=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),exports.formatExpiryDate=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return s(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},exports.formatTimeRemaining=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`},exports.formatTimestamp=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),o=Math.floor(s/6e4),n=Math.floor(s/36e5),a=Math.floor(s/864e5);return o<1?"Just now":o<60?`${o}m ago`:n<24?`${n}h ago`:a<7?`${a}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},exports.generateUniqueId=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),exports.getApiUrl=k,exports.getAppearanceModeStorageKey=e=>e?`${L.APPEARANCE_MODE_KEY}:${e}`:L.APPEARANCE_MODE_KEY,exports.getArrayOfObjects=function(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e},exports.getBaseUrl=()=>O,exports.getCustomHeaders=()=>_,exports.getDefaultThemeStyles=ge,exports.getErrorMessage=function(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t},exports.getInitials=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},exports.getPaymentId=function(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id},exports.getPaymentProviderHint=()=>A,exports.getSendDiagnostics=()=>U,exports.getStorageRef=Ae,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-b.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=M,exports.handleSharedEvent=function(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}},exports.hasWidgets=e=>Array.isArray(e.widget)&&e.widget.length>0,exports.hexToRgba=function(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),n=parseInt(r.slice(4,6),16),a=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${o}, ${n}, ${Math.round(a*t*1e3)/1e3})`},exports.hydrateAppBoot=async e=>{const t=await e.getItem(L.SEND_DIAGNOSTICS);U=null===t||"true"===t},exports.hydrateSession=e=>async t=>{const[r,s,o,n]=await Promise.all([e.getItem(L.ACCESS_TOKEN),e.getItem(L.REFRESH_TOKEN),e.getItem(L.TOKEN_EXPIRES_AT),e.getItem(L.USER)]),a=o?parseInt(o,10):null;if((!r||!a||V(a))&&!s)return void(r&&await Promise.all([e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)]));let i=null;if(n)try{i=JSON.parse(n)}catch(e){d.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Ie({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},exports.indicatorReducer=He,exports.initLogger=S,exports.initializeChatConfig=e=>{O=e.baseUrl,_=e.customHeaders||{},A=e.paymentProvider},exports.isDevMode=()=>D,exports.isTokenAboutToExpire=z,exports.isTokenExpired=V,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${w}`:`${e}/${w}`,exports.logger=d,exports.logout=ke,exports.parseJwtPayload=X,exports.parseOrgFromJwt=Y,exports.readAccessToken=()=>I(),exports.readDeviceToken=()=>C(),exports.readTokenExpiresAt=v,exports.registerEventListener=function(e,t){return ie.on(e,t)},exports.registerLoggerContextProvider=u,exports.registerLoggerSink=c,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){n=null,a=null,i.length=0,(await Promise.resolve().then(()=>y)).resetInitLoggerStateForTests()},exports.resolveDirectionFromLang=ne,exports.sanitizeExpiryDate=s,exports.sessionExpired=De,exports.sessionListenerMiddleware=we,exports.sessionReducer=Be,exports.setAccessTokenReader=e=>{I=e},exports.setCredentials=ve,exports.setDeviceTokenReader=e=>{C=e},exports.setIsDev=e=>{D=e},exports.setLastResponseTime=Pe,exports.setModuleStorage=function(e){ye=e},exports.setNetworkLoggingEnabled=h,exports.setSelectedOrgId=Me,exports.setSession=Ie,exports.setTokenExpiresAtReader=e=>{N=e},exports.setTokenRefreshHandler=e=>{R=e},exports.showErrorToast=(e="Please try again")=>W({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>W({title:"Success",description:e,variant:"default"}),exports.showToast=e=>W(e),exports.truncateWordLimit=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},exports.updateUser=Ce,exports.useBranding=function(){const t=e.useContext(he);if(!t)throw new Error("useBranding must be used within a BrandingProvider");return t},exports.useMessageDirection=function(t,r,s){const o=e.useRef(null);o.current&&o.current.msgId===t||(o.current={msgId:t,dir:J.LTR,locked:!1});const n=o.current,a=ne(s);if(a)n.dir=a,n.locked=!0;else if(!n.locked){const{dir:e,confident:t}=oe(r);n.dir=e,n.locked=t}return n.dir},exports.useNetworkState=()=>{const t=e.useContext(Oe),r=e.useCallback(e=>t?t.subscribe(e):()=>{},[t]),s=e.useCallback(()=>t?t.getState():_e,[t]);return e.useSyncExternalStore(r,s,s)},exports.useStorage=()=>{const t=e.useContext(Se);if(!t)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return t},exports.validateExpiryDate=r,exports.writeOrgToStorage=function(e,t){try{t.setItem(L.SELECTED_ORG_ID,e),t.setItem(L.SELECTED_ORG_NAME,e)}catch{}};
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("@reduxjs/toolkit"),r=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const o=new Date,n=o.getFullYear()%100,a=o.getMonth()+1;return!(s<n||s===n&&r<a||r>12)},s=e=>{if(!e)return"";if(!r(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,o=s.getFullYear()%100,n=s.getMonth()+1;if(r<o||r===o&&e<n||e>12)return""}}return e},o={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let n=null,a=null;const i=[];function c(e){if(n=e,i.length>0){const t=i.splice(0,i.length);for(const r of t)e.emit(r)}}function u(e){a=e}function l(e,t){const r=a?function(e){try{return e()??{}}catch{return{}}}(a):{},{message:s,...o}=t,c={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};n?n.emit(c):(i.length>=200&&i.shift(),i.push(c))}const d={debug(e){l(o.DEBUG,e)},info(e){l(o.INFO,e)},warn(e){l(o.WARN,e)},error(e){l(o.ERROR,e)},flush:()=>n?.flush?.()},p={[o.DEBUG]:0,[o.INFO]:1,[o.WARN]:2,[o.ERROR]:3};function g(e={}){const t=p[e.minLevel??o.DEBUG];return{emit(e){p[e.level]<t||(e.level===o.ERROR?console.error:e.level===o.WARN?console.warn:e.level===o.DEBUG?console.debug:console.info)(e)}}}const E={[o.DEBUG]:5,[o.INFO]:9,[o.WARN]:13,[o.ERROR]:17};function x(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function m(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=x(s));return t}let f=!1,F=null,T=!0;function h(e){T=e}function S(e){f||(f=!0,u(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),c(function(e){const t=[g({minLevel:e.consoleMinLevel??(e.isDev?o.DEBUG:o.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const o=[];function n(){s||(s=async function(){const[t,s,n,a]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),i=a.resourceFromAttributes(e.resourceAttrs),c=new n.OTLPLogExporter({url:e.endpoint}),u=new s.LoggerProvider({resource:i,processors:[new s.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...o}=e;l.emit({severityNumber:E[t],severityText:t,body:JSON.stringify(e),attributes:m(o),timestamp:new Date(s)})},async flush(){await u.forceFlush()}},o.length>0){const e=o.splice(0,o.length);for(const t of e)r.emit(t)}}().catch(()=>{o.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(n(),o.length>=200&&o.shift(),o.push(e)))},async flush(){(s||r)&&(n(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,o=e.wrapBatch??(e=>e),n=[];let a=null;function i(){return null!==a&&(clearTimeout(a),a=null),0===n.length||0===(t=n.splice(0,n.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){n.length>=s&&n.shift(),n.push(e),n.length>=t?i():null===a&&(a=setTimeout(()=>{a=null,i()},r))},async flush(){await i()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){T&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&F?.())}const y=Object.freeze(Object.defineProperty({__proto__:null,initLogger:S,registerPlatformFlushAttacher:function(e){F=e},resetInitLoggerStateForTests:function(){f=!1,F=null,T=!0},setNetworkLoggingEnabled:h},Symbol.toStringTag,{value:"Module"}));let O,A="",_={},R=null,I=()=>null,C=()=>null,N=()=>null,D=!1;const M=()=>R,v=()=>N(),k=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${A}/api${t}`},w="chat",B={CONVERSATIONS:()=>k("/conversations"),CONVERSATION_STREAM:e=>k(`/conversations/${e}`),CONVERSATION_START:e=>k(`/conversations/${e}/start`),WEBRTC_OFFER:e=>k(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>k(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return k("/transcribe")},get BRANDING(){return k("/branding")},get CONFIG(){return k("/config")},get PROFILE(){return k("/profile")},get AUTH_ME(){return k("/auth/me")},get ORGANIZATIONS_EXISTS(){return k("/organizations/exists")},get DEBUG(){return k("/debug")},get TOOL_SERVERS(){return k("/tool-servers")},TOOL_SERVER_AUTH_START:e=>k(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>k(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return k("/tool-servers/auth/exchange")},get LOG(){return k("/log")}},b={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},L={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},P={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let U=!0;const H=3,G=500,K=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(d.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},$="bridge-toast";function W(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent($,{detail:e}))}const V=$,j=e=>!!e&&Date.now()>=e-b.TOKEN_CLOCK_SKEW_MS,z=e=>!e||Date.now()>=e-b.TOKEN_REFRESH_THRESHOLD_MS;function X(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),o=JSON.parse(s);return o&&"object"==typeof o&&!Array.isArray(o)?o:null}catch{return null}}function Y(e){const t=X(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}const J={LTR:"ltr",RTL:"rtl"},q=[[1488,1514],[1519,1522],[1568,1610],[1646,1647],[1649,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1788],[1791,1791],[1808,1808],[1810,1839],[1869,1957],[1969,1969],[1994,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2112,2136],[2144,2154],[2160,2183],[2185,2190],[2208,2249],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64433],[64467,64829],[64848,64911],[64914,64967],[65008,65019],[65136,65140],[65142,65276],[69314,69316],[125184,125251],[125259,125259]],Z=[[2304,2405],[2416,2533],[2544,2547],[2554,2661],[2672,2789],[2800,2917],[2928,2929],[2936,3045],[3059,3173],[3184,3191],[3199,3301],[3312,3415],[3423,3429],[3449,3557],[3568,3663],[3674,3791],[3802,3871],[3892,4159],[4170,4239],[4250,4351],[4608,4968],[4989,4991],[6016,6111],[6122,6127],[6138,6143],[12352,12543],[19968,40959],[44032,55215]],Q=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,ee=["arab","hebr","thaa","syrc","adlm","nkoo","samr","mand"],te=/^[a-z]{4}$/,re=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],se=["und","zxx","mul"];function oe(e,t){for(const[r,s]of t)if(e>=r&&e<=s)return!0;return!1}function ne(e,t=J.LTR){const r=(e??"").replace(Q," ");let s=0,o=0;for(const e of r){const t=e.codePointAt(0)??0;t<1424?e.toLowerCase()!==e.toUpperCase()&&(o+=1):oe(t,q)?s+=1:(e.toLowerCase()!==e.toUpperCase()||oe(t,Z))&&(o+=1)}const n=s+o;return 0===n?{dir:t,confident:!1}:{dir:s/n>=.2?J.RTL:J.LTR,confident:n>=12}}function ae(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1)){if(1===e.length)break;if(te.test(e))return ee.indexOf(e)>=0?J.RTL:J.LTR}const r=t[0];return!r||se.indexOf(r)>=0?null:re.indexOf(r)>=0?J.RTL:J.LTR}class ie{static instance;events={};constructor(){}static getInstance(){return ie.instance||(ie.instance=new ie),ie.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){d.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const ce=ie.getInstance(),ue={LIGHT:"light",DARK:"dark",SYSTEM:"system"},le=[ue.LIGHT,ue.DARK,ue.SYSTEM],de={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},pe={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:de.PILL,chatInputPlaceholder:"Type anything..."},ge={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:de.PILL,chatInputPlaceholder:"Type anything..."};function Ee(e){return e===ue.LIGHT?ge:pe}const xe=pe;function me(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const o=Math.max(0,Math.min(100,t));return`#${s}${Math.round(o/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function fe(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function Fe(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function Te(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function he(e){switch(e){case"pill":return de.PILL;case"none":return de.SHARP;default:return 0===parseInt(e??"",10)?de.SHARP:de.ROUNDED}}const Se=e.createContext(void 0),ye=e.createContext(null);let Oe=null;const Ae=()=>Oe,_e=e.createContext(null),Re={isConnected:!0,isInternetReachable:!0},Ie=t.createSlice({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:o,expiresIn:n}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==o&&(e.refreshToken=o),void 0!==n?e.tokenExpiresAt=null===n?null:1e3*n:s&&(e.tokenExpiresAt=Date.now()+b.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:Ce,updateUser:Ne,clearSession:De,sessionExpired:Me,setSelectedOrgId:ve}=Ie.actions,ke=Ce,we=De,Be=t.createListenerMiddleware();Be.startListening({matcher:t.isAnyOf(Ce,Ne,De,Me),effect:async(e,t)=>{const r=Ae();if(!r)return;const{auth:s}=t.getState(),o=[];o.push(s.accessToken?r.setItem(L.ACCESS_TOKEN,s.accessToken):r.removeItem(L.ACCESS_TOKEN)),o.push(s.refreshToken?r.setItem(L.REFRESH_TOKEN,s.refreshToken):r.removeItem(L.REFRESH_TOKEN)),o.push(null!=s.tokenExpiresAt?r.setItem(L.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(L.TOKEN_EXPIRES_AT)),o.push(s.user?r.setItem(L.USER,JSON.stringify(s.user)):r.removeItem(L.USER)),(De.match(e)||Me.match(e))&&o.push(r.removeItem(L.LOCATION_CACHE),r.removeItem(L.DEBUG_MODE),r.removeItem(L.APPEARANCE_MODE_KEY),r.removeItem(L.LOCATION_ENABLED),r.removeItem(L.STT_AUTO_SEND),r.removeItem(L.STT_IMPLEMENTATION),r.removeItem(L.SEND_DIAGNOSTICS),r.removeItem(L.ACTIVE_CONVERSATION_ID)),await Promise.all(o)}});const be=Ie.reducer,Le={lastResponseTime:null},Pe=t.createSlice({name:"indicator",initialState:Le,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(t.isAnyOf(De,Me),()=>Le)}}),{setLastResponseTime:Ue,clearLastResponseTime:He}=Pe.actions,Ge=Pe.reducer;exports.API_ENDPOINTS=B,exports.APPEARANCE_MODES=ue,exports.APPEARANCE_MODE_VALUES=le,exports.AUTH_HEADERS=P,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},exports.BRIDGE_TOAST_EVENT_NAME=V,exports.BrandingContext=Se,exports.CORNER_RADIUS_MODES=de,exports.DEVICE_TOKEN_HEADER="x-device-token",exports.DIRECTION_VECTORS=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"ﻣﺮﺣﺒﺎ ﺑﻜﻢ ﻛﻴﻒ ﺣﺎﻟﻜﻢ ﺍﻟﻴﻮﻡ",expected:"rtl"},{text:"Hello مرحبا",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"यह एक बहुत अच्छी किताब है",expected:"ltr"},{text:"यह एक बहुत अच्छी किताब है जो मुझे बहुत पसंद आई مرحبا",expected:"ltr"},{text:"今日はいい天気ですね",expected:"ltr"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}],exports.EventEmitter=ie,exports.FEATURE_FLAGS={SSO:"sso"},exports.IDP_HINTS={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},exports.INDICATOR_TIMER_ACTIONS={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"},exports.LOG_LEVELS=o,exports.NetworkContext=_e,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=w,exports.PATTERNS={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},exports.PROFILE_LIMITS={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},exports.STORAGE_KEYS=L,exports.STT_IMPLEMENTATIONS={ONLINE:"online",DEVICE:"device"},exports.StorageContext=ye,exports.TEXT_DIRECTION=J,exports.TIMING=b,exports.brandingToThemeStyles=function(e,t,r=ue.DARK){const s=Ee(r);if(!e||!t)return s;const o=t.surface?.chatInput?.border||t.surface?.input?.border,n=t.surface?.userMessage?.border,a=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,inputBorderStyle:o?.style||s.inputBorderStyle,inputBorderColor:o?.color?me(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:a?.style||s.widgetBorderStyle,widgetBorderColor:a?.color?me(a.color,a.opacity||100):s.widgetBorderColor,widgetBorderWidth:a?.width||s.widgetBorderWidth,widgetBorderOpacity:a?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:n?.style||s.userMsgBorderStyle,userMsgBorderColor:n?.color?me(n.color,n.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:n?.width||s.userMsgBorderWidth,userMsgBorderOpacity:n?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:fe(e.typography?.fontFamily,s),fontFamilyMono:Fe(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:Te(e.cornerRadius,s),cornerRadiusMode:he(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}},exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearAuthTokens=function(e){try{e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)}catch{}},exports.clearLastResponseTime=He,exports.clearSession=De,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=K,maxAttempts:s=H,backoffBaseMs:o=G}=e;let n=null;return function(){return n||(n=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const n=o*2**e+250*Math.random();await new Promise(e=>setTimeout(e,n))}return null})().finally(()=>{n=null}),n)}},exports.defaultChatThemeStyles=xe,exports.defaultDarkThemeStyles=pe,exports.defaultIsTransient=K,exports.defaultLightThemeStyles=ge,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(L.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=Y(t.getItem(L.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.detectTextDirection=ne,exports.ensureFreshToken=async()=>z(v())?await(M()?.())??null:null,exports.eventEmitter=ce,exports.extractTokens=function(e){const t=e.headers.get(P.ACCESS_TOKEN),r=e.headers.get(P.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${P.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${P.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}},exports.formatCVC=e=>e.replace(/\D/g,"").slice(0,4),exports.formatCamelCaseToTitle=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",exports.formatCardNumber=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),exports.formatExpiryDate=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return s(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},exports.formatTimeRemaining=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`},exports.formatTimestamp=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),o=Math.floor(s/6e4),n=Math.floor(s/36e5),a=Math.floor(s/864e5);return o<1?"Just now":o<60?`${o}m ago`:n<24?`${n}h ago`:a<7?`${a}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},exports.generateUniqueId=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),exports.getApiUrl=k,exports.getAppearanceModeStorageKey=e=>e?`${L.APPEARANCE_MODE_KEY}:${e}`:L.APPEARANCE_MODE_KEY,exports.getArrayOfObjects=function(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e},exports.getBaseUrl=()=>A,exports.getCustomHeaders=()=>_,exports.getDefaultThemeStyles=Ee,exports.getErrorMessage=function(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t},exports.getInitials=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},exports.getPaymentId=function(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id},exports.getPaymentProviderHint=()=>O,exports.getSendDiagnostics=()=>U,exports.getStorageRef=Ae,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-b.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=M,exports.handleSharedEvent=function(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}},exports.hasWidgets=e=>Array.isArray(e.widget)&&e.widget.length>0,exports.hexToRgba=function(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),n=parseInt(r.slice(4,6),16),a=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${o}, ${n}, ${Math.round(a*t*1e3)/1e3})`},exports.hydrateAppBoot=async e=>{const t=await e.getItem(L.SEND_DIAGNOSTICS);U=null===t||"true"===t},exports.hydrateSession=e=>async t=>{const[r,s,o,n]=await Promise.all([e.getItem(L.ACCESS_TOKEN),e.getItem(L.REFRESH_TOKEN),e.getItem(L.TOKEN_EXPIRES_AT),e.getItem(L.USER)]),a=o?parseInt(o,10):null;if((!r||!a||j(a))&&!s)return void(r&&await Promise.all([e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)]));let i=null;if(n)try{i=JSON.parse(n)}catch(e){d.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Ce({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},exports.indicatorReducer=Ge,exports.initLogger=S,exports.initializeChatConfig=e=>{A=e.baseUrl,_=e.customHeaders||{},O=e.paymentProvider},exports.isDevMode=()=>D,exports.isTokenAboutToExpire=z,exports.isTokenExpired=j,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${w}`:`${e}/${w}`,exports.logger=d,exports.logout=we,exports.parseJwtPayload=X,exports.parseOrgFromJwt=Y,exports.readAccessToken=()=>I(),exports.readDeviceToken=()=>C(),exports.readTokenExpiresAt=v,exports.registerEventListener=function(e,t){return ce.on(e,t)},exports.registerLoggerContextProvider=u,exports.registerLoggerSink=c,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){n=null,a=null,i.length=0,(await Promise.resolve().then(()=>y)).resetInitLoggerStateForTests()},exports.resolveDirectionFromLang=ae,exports.sanitizeExpiryDate=s,exports.sessionExpired=Me,exports.sessionListenerMiddleware=Be,exports.sessionReducer=be,exports.setAccessTokenReader=e=>{I=e},exports.setCredentials=ke,exports.setDeviceTokenReader=e=>{C=e},exports.setIsDev=e=>{D=e},exports.setLastResponseTime=Ue,exports.setModuleStorage=function(e){Oe=e},exports.setNetworkLoggingEnabled=h,exports.setSelectedOrgId=ve,exports.setSession=Ce,exports.setTokenExpiresAtReader=e=>{N=e},exports.setTokenRefreshHandler=e=>{R=e},exports.showErrorToast=(e="Please try again")=>W({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>W({title:"Success",description:e,variant:"default"}),exports.showToast=e=>W(e),exports.truncateWordLimit=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},exports.updateUser=Ne,exports.useBranding=function(){const t=e.useContext(Se);if(!t)throw new Error("useBranding must be used within a BrandingProvider");return t},exports.useMessageDirection=function(t,r,s){const o=e.useRef(null),n=r??"";o.current&&o.current.msgId===t&&n.startsWith(o.current.text)||(o.current={msgId:t,text:n,dir:J.LTR,locked:!1});const a=o.current;a.text=n;const i=ae(s);if(i)a.dir=i,a.locked=!0;else if(!a.locked){const{dir:e,confident:t}=ne(n);a.dir=e,a.locked=t}return a.dir},exports.useNetworkState=()=>{const t=e.useContext(_e),r=e.useCallback(e=>t?t.subscribe(e):()=>{},[t]),s=e.useCallback(()=>t?t.getState():Re,[t]);return e.useSyncExternalStore(r,s,s)},exports.useStorage=()=>{const t=e.useContext(ye);if(!t)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return t},exports.validateExpiryDate=r,exports.writeOrgToStorage=function(e,t){try{t.setItem(L.SELECTED_ORG_ID,e),t.setItem(L.SELECTED_ORG_NAME,e)}catch{}};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useRef as e,createContext as t,useContext as r,useCallback as n,useSyncExternalStore as s}from"react";import{createSlice as o,createListenerMiddleware as i,isAnyOf as a}from"@reduxjs/toolkit";const c=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},u=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),l=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const n=t.getTime()-r.getTime(),s=Math.floor(n/6e4),o=Math.floor(n/36e5),i=Math.floor(n/864e5);return s<1?"Just now":s<60?`${s}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},d=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",g=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",p=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",E=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),f=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),n=Number(t[2]);if(r<1||r>12)return!1;const s=new Date,o=s.getFullYear()%100,i=s.getMonth()+1;return!(n<o||n===o&&r<i||r>12)},F=e=>{if(!e)return"";if(!f(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),n=new Date,s=n.getFullYear()%100,o=n.getMonth()+1;if(r<s||r===s&&e<o||e>12)return""}}return e},m=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return F(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},h=e=>e.replace(/\D/g,"").slice(0,4);function S(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const T=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},y=e=>Array.isArray(e.widget)&&e.widget.length>0;function x(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t}const _={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let O=null,A=null;const R=[];function I(e){if(O=e,R.length>0){const t=R.splice(0,R.length);for(const r of t)e.emit(r)}}function N(e){A=e}async function C(){O=null,A=null,R.length=0,(await Promise.resolve().then(()=>K)).resetInitLoggerStateForTests()}function M(e,t){const r=A?function(e){try{return e()??{}}catch{return{}}}(A):{},{message:n,...s}=t,o={...r,...s,level:e,message:n,timestamp:(new Date).toISOString()};O?O.emit(o):(R.length>=200&&R.shift(),R.push(o))}const D={debug(e){M(_.DEBUG,e)},info(e){M(_.INFO,e)},warn(e){M(_.WARN,e)},error(e){M(_.ERROR,e)},flush:()=>O?.flush?.()},B={[_.DEBUG]:0,[_.INFO]:1,[_.WARN]:2,[_.ERROR]:3};function v(e={}){const t=B[e.minLevel??_.DEBUG];return{emit(e){B[e.level]<t||(e.level===_.ERROR?console.error:e.level===_.WARN?console.warn:e.level===_.DEBUG?console.debug:console.info)(e)}}}const b={[_.DEBUG]:5,[_.INFO]:9,[_.WARN]:13,[_.ERROR]:17};function w(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function k(e){const t={};for(const[r,n]of Object.entries(e))void 0!==n&&(t[r]=w(n));return t}let L=!1,P=null,U=!0;function G(e){U=e}function H(e){L||(L=!0,N(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),I(function(e){const t=[v({minLevel:e.consoleMinLevel??(e.isDev?_.DEBUG:_.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,n=null;const s=[];function o(){n||(n=async function(){const[t,n,o,i]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),a=i.resourceFromAttributes(e.resourceAttrs),c=new o.OTLPLogExporter({url:e.endpoint}),u=new n.LoggerProvider({resource:a,processors:[new n.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:n,...s}=e;l.emit({severityNumber:b[t],severityText:t,body:JSON.stringify(e),attributes:k(s),timestamp:new Date(n)})},async flush(){await u.forceFlush()}},s.length>0){const e=s.splice(0,s.length);for(const t of e)r.emit(t)}}().catch(()=>{s.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(o(),s.length>=200&&s.shift(),s.push(e)))},async flush(){(n||r)&&(o(),await n,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,n=e.maxQueueSize??2048,s=e.wrapBatch??(e=>e),o=[];let i=null;function a(){return null!==i&&(clearTimeout(i),i=null),0===o.length||0===(t=o.splice(0,o.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){o.length>=n&&o.shift(),o.push(e),o.length>=t?a():null===i&&(i=setTimeout(()=>{i=null,a()},r))},async flush(){await a()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){U&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&P?.())}const K=Object.freeze(Object.defineProperty({__proto__:null,initLogger:H,registerPlatformFlushAttacher:function(e){P=e},resetInitLoggerStateForTests:function(){L=!1,P=null,U=!0},setNetworkLoggingEnabled:G},Symbol.toStringTag,{value:"Module"}));let $,W="",j={},z=null,V=()=>null,X=()=>null,Y=()=>null,J=!1;const Z=e=>{W=e.baseUrl,j=e.customHeaders||{},$=e.paymentProvider},q=()=>W,Q=()=>$,ee=()=>j,te=e=>{z=e},re=()=>z,ne=e=>{V=e},se=()=>V(),oe=e=>{X=e},ie=()=>X(),ae=e=>{Y=e},ce=()=>Y(),ue=e=>{J=e},le=()=>J,de=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${W}/api${t}`},ge="chat",pe=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${ge}`:`${e}/${ge}`,Ee={CONVERSATIONS:()=>de("/conversations"),CONVERSATION_STREAM:e=>de(`/conversations/${e}`),CONVERSATION_START:e=>de(`/conversations/${e}/start`),WEBRTC_OFFER:e=>de(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>de(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return de("/transcribe")},get BRANDING(){return de("/branding")},get CONFIG(){return de("/config")},get PROFILE(){return de("/profile")},get AUTH_ME(){return de("/auth/me")},get ORGANIZATIONS_EXISTS(){return de("/organizations/exists")},get DEBUG(){return de("/debug")},get TOOL_SERVERS(){return de("/tool-servers")},TOOL_SERVER_AUTH_START:e=>de(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>de(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return de("/tool-servers/auth/exchange")},get LOG(){return de("/log")}},fe={SSO:"sso"},Fe={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},me={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},he={ONLINE:"online",DEVICE:"device"},Se=e=>e?`${me.APPEARANCE_MODE_KEY}:${e}`:me.APPEARANCE_MODE_KEY,Te={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},ye="x-device-token",xe={LOGIN:"/auth/login",SIGNUP:"/auth/signup",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},_e={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},Oe={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16};let Ae=!0;const Re=async e=>{const t=await e.getItem(me.SEND_DIAGNOSTICS);Ae=null===t||"true"===t},Ie=()=>Ae,Ne=3,Ce=500,Me=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(D.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function De(e){const{performRefresh:t,isTransient:r=Me,maxAttempts:n=Ne,backoffBaseMs:s=Ce}=e;let o=null;return function(){return o||(o=(async()=>{for(let e=0;e<n;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===n-1)break;const o=s*2**e+250*Math.random();await new Promise(e=>setTimeout(e,o))}return null})().finally(()=>{o=null}),o)}}const Be="bridge-toast";function ve(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(Be,{detail:e}))}const be=e=>ve(e),we=(e="Please try again")=>ve({title:"Error",description:e,variant:"destructive"}),ke=(e="Successfully")=>ve({title:"Success",description:e,variant:"default"}),Le=Be,Pe=e=>!!e&&Date.now()>=e-Fe.TOKEN_CLOCK_SKEW_MS,Ue=e=>!e||Date.now()>=e-Fe.TOKEN_REFRESH_THRESHOLD_MS,Ge=async()=>Ue(ce())?await(re()?.())??null:null,He=e=>e?Math.max(0,e-Date.now()):0,Ke=e=>e?Math.max(0,e-Fe.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,$e=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function We(e){const t=e.headers.get(Te.ACCESS_TOKEN),r=e.headers.get(Te.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${Te.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${Te.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function je(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),n=atob(r),s=JSON.parse(n);return s&&"object"==typeof s&&!Array.isArray(s)?s:null}catch{return null}}function ze(e){const t=je(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function Ve(e,t){try{const r=t.getItem(me.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const n=ze(t.getItem(me.ACCESS_TOKEN));return n&&n!==e?"jwt":null}catch{return null}}function Xe(e){try{e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)}catch{}}function Ye(e,t){try{t.setItem(me.SELECTED_ORG_ID,e),t.setItem(me.SELECTED_ORG_NAME,e)}catch{}}const Je={LTR:"ltr",RTL:"rtl"},Ze=[[1488,1514],[1519,1522],[1568,1610],[1646,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1791],[1808,1839],[1869,1919],[1920,1957],[1969,1969],[1994,2026],[2048,2069],[2112,2136],[2160,2190],[2208,2239],[64285,64335],[64336,64975],[65136,65276],[125184,125251]],qe=[[12352,12543],[19968,40959],[44032,55215]],Qe=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,et=["arab","hebr","thaa","syrc","adlm","nkoo"],tt=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],rt=["und","zxx","mul"];function nt(e,t){for(const[r,n]of t)if(e>=r&&e<=n)return!0;return!1}function st(e,t=Je.LTR){const r=(e??"").replace(Qe," ");let n=0,s=0;for(const e of r){const t=e.codePointAt(0);nt(t,Ze)?n+=1:(e.toLowerCase()!==e.toUpperCase()||nt(t,qe))&&(s+=1)}const o=n+s;return 0===o?{dir:t,confident:!1}:{dir:n/o>=.2?Je.RTL:Je.LTR,confident:o>=12}}function ot(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1))if(4===e.length)return et.indexOf(e)>=0?Je.RTL:Je.LTR;const r=t[0];return!r||rt.indexOf(r)>=0?null:tt.indexOf(r)>=0?Je.RTL:Je.LTR}function it(t,r,n){const s=e(null);s.current&&s.current.msgId===t||(s.current={msgId:t,dir:Je.LTR,locked:!1});const o=s.current,i=ot(n);if(i)o.dir=i,o.locked=!0;else if(!o.locked){const{dir:e,confident:t}=st(r);o.dir=e,o.locked=t}return o.dir}const at=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"Hello مرحبا",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"Azerbaijani in Arabic script",lang:"az-Arab",expected:"rtl"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}];class ct{static instance;events={};constructor(){}static getInstance(){return ct.instance||(ct.instance=new ct),ct.instance}on(e,t,r){const n="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(n),()=>{this.off(e,n)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){D.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const ut=ct.getInstance();function lt(e,t){return ut.on(e,t)}const dt={LIGHT:"light",DARK:"dark",SYSTEM:"system"},gt=[dt.LIGHT,dt.DARK,dt.SYSTEM],pt={FOREGROUND:"foreground",BACKGROUND:"background"},Et={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},ft={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:Et.PILL,chatInputPlaceholder:"Type anything..."},Ft={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:Et.PILL,chatInputPlaceholder:"Type anything..."};function mt(e){return e===dt.LIGHT?Ft:ft}const ht=ft;function St(e,t){const r=e.replace("#","");let n;n=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const s=Math.max(0,Math.min(100,t));return`#${n}${Math.round(s/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function Tt(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function yt(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function xt(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function _t(e){switch(e){case"pill":return Et.PILL;case"none":return Et.SHARP;default:return 0===parseInt(e??"",10)?Et.SHARP:Et.ROUNDED}}function Ot(e,t,r=dt.DARK){const n=mt(r);if(!e||!t)return n;const s=t.surface?.chatInput?.border||t.surface?.input?.border,o=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||n.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||n.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||n.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sidebarBorderColor,widgetBg:t.surface?.widget?.background||n.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||n.settingsGroupBg,inputBorderStyle:s?.style||n.inputBorderStyle,inputBorderColor:s?.color?St(s.color,s.opacity||100):n.inputBorderColor,inputBorderWidth:s?.width||n.inputBorderWidth,inputBorderOpacity:s?.opacity||100,widgetBorderStyle:i?.style||n.widgetBorderStyle,widgetBorderColor:i?.color?St(i.color,i.opacity||100):n.widgetBorderColor,widgetBorderWidth:i?.width||n.widgetBorderWidth,widgetBorderOpacity:i?.opacity??n.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||n.placeholderColor,primaryText:t.text?.primary||n.primaryText,secondaryText:t.text?.secondary||n.secondaryText,tertiaryText:t.text?.tertiary||n.tertiaryText,userMsgBg:t.surface?.userMessage?.background||n.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||n.userMsgText,userMsgBorderStyle:o?.style||n.userMsgBorderStyle,userMsgBorderColor:o?.color?St(o.color,o.opacity||100):n.userMsgBorderColor,userMsgBorderWidth:o?.width||n.userMsgBorderWidth,userMsgBorderOpacity:o?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||n.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||n.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||n.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||n.statusPrimary.solid,background:t.status?.primary?.background||n.statusPrimary.background,text:t.status?.primary?.text||n.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||n.statusSecondary.solid,background:t.status?.secondary?.background||n.statusSecondary.background,text:t.status?.secondary?.text||n.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||n.statusSuccess.solid,background:t.status?.success?.background||n.statusSuccess.background,text:t.status?.success?.text||n.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||n.statusDanger.solid,background:t.status?.danger?.background||n.statusDanger.background,text:t.status?.danger?.text||n.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||n.statusWarning.solid,background:t.status?.warning?.background||n.statusWarning.background,text:t.status?.warning?.text||n.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||n.statusInfo.solid,background:t.status?.info?.background||n.statusInfo.background,text:t.status?.info?.text||n.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||n.statusDiscovery.solid,background:t.status?.discovery?.background||n.statusDiscovery.background,text:t.status?.discovery?.text||n.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||n.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||n.switchUncheckedColor,fontFamily:Tt(e.typography?.fontFamily,n),fontFamilyMono:yt(e.typography?.fontFamilyMono,n),fontSize:14,borderRadius:xt(e.cornerRadius,n),cornerRadiusMode:_t(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}}function At(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const n=parseInt(r.slice(0,2),16),s=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16),i=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${n}, ${s}, ${o}, ${Math.round(i*t*1e3)/1e3})`}const Rt=t(void 0);function It(){const e=r(Rt);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}const Nt=t(null),Ct=()=>{const e=r(Nt);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e};let Mt=null;function Dt(e){Mt=e}const Bt=()=>Mt,vt=t(null),bt={isConnected:!0,isInternetReachable:!0},wt=()=>{const e=r(vt),t=n(t=>e?e.subscribe(t):()=>{},[e]),o=n(()=>e?e.getState():bt,[e]);return s(t,o,o)},kt=o({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:n,refreshToken:s,expiresIn:o}=t.payload;void 0!==r&&(e.user=r),void 0!==n&&(e.accessToken=n),void 0!==s&&(e.refreshToken=s),void 0!==o?e.tokenExpiresAt=null===o?null:1e3*o:n&&(e.tokenExpiresAt=Date.now()+Fe.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:Lt,updateUser:Pt,clearSession:Ut,sessionExpired:Gt,setSelectedOrgId:Ht}=kt.actions,Kt=Lt,$t=Ut,Wt=e=>async t=>{const[r,n,s,o]=await Promise.all([e.getItem(me.ACCESS_TOKEN),e.getItem(me.REFRESH_TOKEN),e.getItem(me.TOKEN_EXPIRES_AT),e.getItem(me.USER)]),i=s?parseInt(s,10):null;if((!r||!i||Pe(i))&&!n)return void(r&&await Promise.all([e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)]));let a=null;if(o)try{a=JSON.parse(o)}catch(e){D.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Lt({user:a,accessToken:r,refreshToken:n,expiresIn:null!=i?i/1e3:null}))},jt=i();jt.startListening({matcher:a(Lt,Pt,Ut,Gt),effect:async(e,t)=>{const r=Bt();if(!r)return;const{auth:n}=t.getState(),s=[];s.push(n.accessToken?r.setItem(me.ACCESS_TOKEN,n.accessToken):r.removeItem(me.ACCESS_TOKEN)),s.push(n.refreshToken?r.setItem(me.REFRESH_TOKEN,n.refreshToken):r.removeItem(me.REFRESH_TOKEN)),s.push(null!=n.tokenExpiresAt?r.setItem(me.TOKEN_EXPIRES_AT,String(n.tokenExpiresAt)):r.removeItem(me.TOKEN_EXPIRES_AT)),s.push(n.user?r.setItem(me.USER,JSON.stringify(n.user)):r.removeItem(me.USER)),(Ut.match(e)||Gt.match(e))&&s.push(r.removeItem(me.LOCATION_CACHE),r.removeItem(me.DEBUG_MODE),r.removeItem(me.APPEARANCE_MODE_KEY),r.removeItem(me.LOCATION_ENABLED),r.removeItem(me.STT_AUTO_SEND),r.removeItem(me.STT_IMPLEMENTATION),r.removeItem(me.SEND_DIAGNOSTICS),r.removeItem(me.ACTIVE_CONVERSATION_ID)),await Promise.all(s)}});const zt=kt.reducer,Vt={lastResponseTime:null},Xt=o({name:"indicator",initialState:Vt,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(a(Ut,Gt),()=>Vt)}}),{setLastResponseTime:Yt,clearLastResponseTime:Jt}=Xt.actions,Zt=Xt.reducer;function qt(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}}const Qt={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},er={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function tr(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{Ee as API_ENDPOINTS,dt as APPEARANCE_MODES,gt as APPEARANCE_MODE_VALUES,Te as AUTH_HEADERS,xe as AUTH_PATHS,Le as BRIDGE_TOAST_EVENT_NAME,Rt as BrandingContext,Et as CORNER_RADIUS_MODES,ye as DEVICE_TOKEN_HEADER,at as DIRECTION_VECTORS,ct as EventEmitter,fe as FEATURE_FLAGS,Qt as IDP_HINTS,er as INDICATOR_TIMER_ACTIONS,_ as LOG_LEVELS,vt as NetworkContext,pt as ORB_POSITIONS,ge as ORG_MOUNT_SUFFIX,_e as PATTERNS,Oe as PROFILE_LIMITS,me as STORAGE_KEYS,he as STT_IMPLEMENTATIONS,Nt as StorageContext,Je as TEXT_DIRECTION,Fe as TIMING,Ot as brandingToThemeStyles,d as capitalizeFirst,Xe as clearAuthTokens,Jt as clearLastResponseTime,Ut as clearSession,De as createTokenRefresher,ht as defaultChatThemeStyles,ft as defaultDarkThemeStyles,Me as defaultIsTransient,Ft as defaultLightThemeStyles,Ve as detectOrgSwitch,st as detectTextDirection,Ge as ensureFreshToken,ut as eventEmitter,We as extractTokens,h as formatCVC,g as formatCamelCaseToTitle,E as formatCardNumber,m as formatExpiryDate,$e as formatTimeRemaining,l as formatTimestamp,u as generateUniqueId,de as getApiUrl,Se as getAppearanceModeStorageKey,S as getArrayOfObjects,q as getBaseUrl,ee as getCustomHeaders,mt as getDefaultThemeStyles,x as getErrorMessage,T as getInitials,tr as getPaymentId,Q as getPaymentProviderHint,Ie as getSendDiagnostics,Bt as getStorageRef,He as getTimeUntilExpiry,Ke as getTimeUntilRefresh,re as getTokenRefreshHandler,qt as handleSharedEvent,y as hasWidgets,At as hexToRgba,Re as hydrateAppBoot,Wt as hydrateSession,Zt as indicatorReducer,H as initLogger,Z as initializeChatConfig,le as isDevMode,Ue as isTokenAboutToExpire,Pe as isTokenExpired,pe as joinOrgMountBase,D as logger,$t as logout,je as parseJwtPayload,ze as parseOrgFromJwt,se as readAccessToken,ie as readDeviceToken,ce as readTokenExpiresAt,lt as registerEventListener,N as registerLoggerContextProvider,I as registerLoggerSink,p as removeSpecialCharsAndSpaces,C as resetLoggerForTests,ot as resolveDirectionFromLang,F as sanitizeExpiryDate,Gt as sessionExpired,jt as sessionListenerMiddleware,zt as sessionReducer,ne as setAccessTokenReader,Kt as setCredentials,oe as setDeviceTokenReader,ue as setIsDev,Yt as setLastResponseTime,Dt as setModuleStorage,G as setNetworkLoggingEnabled,Ht as setSelectedOrgId,Lt as setSession,ae as setTokenExpiresAtReader,te as setTokenRefreshHandler,we as showErrorToast,ke as showSuccessToast,be as showToast,c as truncateWordLimit,Pt as updateUser,It as useBranding,it as useMessageDirection,wt as useNetworkState,Ct as useStorage,f as validateExpiryDate,Ye as writeOrgToStorage};
|
|
1
|
+
import{useRef as e,createContext as t,useContext as r,useCallback as n,useSyncExternalStore as s}from"react";import{createSlice as o,createListenerMiddleware as a,isAnyOf as i}from"@reduxjs/toolkit";const c=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},u=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),l=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const n=t.getTime()-r.getTime(),s=Math.floor(n/6e4),o=Math.floor(n/36e5),a=Math.floor(n/864e5);return s<1?"Just now":s<60?`${s}m ago`:o<24?`${o}h ago`:a<7?`${a}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},d=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",g=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",p=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",E=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),f=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),n=Number(t[2]);if(r<1||r>12)return!1;const s=new Date,o=s.getFullYear()%100,a=s.getMonth()+1;return!(n<o||n===o&&r<a||r>12)},F=e=>{if(!e)return"";if(!f(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),n=new Date,s=n.getFullYear()%100,o=n.getMonth()+1;if(r<s||r===s&&e<o||e>12)return""}}return e},m=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return F(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},h=e=>e.replace(/\D/g,"").slice(0,4);function S(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const T=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},x=e=>Array.isArray(e.widget)&&e.widget.length>0;function y(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t}const _={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let O=null,R=null;const A=[];function I(e){if(O=e,A.length>0){const t=A.splice(0,A.length);for(const r of t)e.emit(r)}}function N(e){R=e}async function C(){O=null,R=null,A.length=0,(await Promise.resolve().then(()=>K)).resetInitLoggerStateForTests()}function M(e,t){const r=R?function(e){try{return e()??{}}catch{return{}}}(R):{},{message:n,...s}=t,o={...r,...s,level:e,message:n,timestamp:(new Date).toISOString()};O?O.emit(o):(A.length>=200&&A.shift(),A.push(o))}const D={debug(e){M(_.DEBUG,e)},info(e){M(_.INFO,e)},warn(e){M(_.WARN,e)},error(e){M(_.ERROR,e)},flush:()=>O?.flush?.()},v={[_.DEBUG]:0,[_.INFO]:1,[_.WARN]:2,[_.ERROR]:3};function B(e={}){const t=v[e.minLevel??_.DEBUG];return{emit(e){v[e.level]<t||(e.level===_.ERROR?console.error:e.level===_.WARN?console.warn:e.level===_.DEBUG?console.debug:console.info)(e)}}}const w={[_.DEBUG]:5,[_.INFO]:9,[_.WARN]:13,[_.ERROR]:17};function b(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function k(e){const t={};for(const[r,n]of Object.entries(e))void 0!==n&&(t[r]=b(n));return t}let L=!1,P=null,U=!0;function G(e){U=e}function H(e){L||(L=!0,N(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),I(function(e){const t=[B({minLevel:e.consoleMinLevel??(e.isDev?_.DEBUG:_.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,n=null;const s=[];function o(){n||(n=async function(){const[t,n,o,a]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),i=a.resourceFromAttributes(e.resourceAttrs),c=new o.OTLPLogExporter({url:e.endpoint}),u=new n.LoggerProvider({resource:i,processors:[new n.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:n,...s}=e;l.emit({severityNumber:w[t],severityText:t,body:JSON.stringify(e),attributes:k(s),timestamp:new Date(n)})},async flush(){await u.forceFlush()}},s.length>0){const e=s.splice(0,s.length);for(const t of e)r.emit(t)}}().catch(()=>{s.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(o(),s.length>=200&&s.shift(),s.push(e)))},async flush(){(n||r)&&(o(),await n,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,n=e.maxQueueSize??2048,s=e.wrapBatch??(e=>e),o=[];let a=null;function i(){return null!==a&&(clearTimeout(a),a=null),0===o.length||0===(t=o.splice(0,o.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){o.length>=n&&o.shift(),o.push(e),o.length>=t?i():null===a&&(a=setTimeout(()=>{a=null,i()},r))},async flush(){await i()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){U&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&P?.())}const K=Object.freeze(Object.defineProperty({__proto__:null,initLogger:H,registerPlatformFlushAttacher:function(e){P=e},resetInitLoggerStateForTests:function(){L=!1,P=null,U=!0},setNetworkLoggingEnabled:G},Symbol.toStringTag,{value:"Module"}));let $,W="",j={},V=null,z=()=>null,X=()=>null,Y=()=>null,J=!1;const Z=e=>{W=e.baseUrl,j=e.customHeaders||{},$=e.paymentProvider},q=()=>W,Q=()=>$,ee=()=>j,te=e=>{V=e},re=()=>V,ne=e=>{z=e},se=()=>z(),oe=e=>{X=e},ae=()=>X(),ie=e=>{Y=e},ce=()=>Y(),ue=e=>{J=e},le=()=>J,de=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${W}/api${t}`},ge="chat",pe=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${ge}`:`${e}/${ge}`,Ee={CONVERSATIONS:()=>de("/conversations"),CONVERSATION_STREAM:e=>de(`/conversations/${e}`),CONVERSATION_START:e=>de(`/conversations/${e}/start`),WEBRTC_OFFER:e=>de(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>de(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return de("/transcribe")},get BRANDING(){return de("/branding")},get CONFIG(){return de("/config")},get PROFILE(){return de("/profile")},get AUTH_ME(){return de("/auth/me")},get ORGANIZATIONS_EXISTS(){return de("/organizations/exists")},get DEBUG(){return de("/debug")},get TOOL_SERVERS(){return de("/tool-servers")},TOOL_SERVER_AUTH_START:e=>de(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>de(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return de("/tool-servers/auth/exchange")},get LOG(){return de("/log")}},fe={SSO:"sso"},Fe={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},me={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},he={ONLINE:"online",DEVICE:"device"},Se=e=>e?`${me.APPEARANCE_MODE_KEY}:${e}`:me.APPEARANCE_MODE_KEY,Te={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},xe="x-device-token",ye={LOGIN:"/auth/login",SIGNUP:"/auth/signup",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},_e={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},Oe={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16};let Re=!0;const Ae=async e=>{const t=await e.getItem(me.SEND_DIAGNOSTICS);Re=null===t||"true"===t},Ie=()=>Re,Ne=3,Ce=500,Me=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(D.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function De(e){const{performRefresh:t,isTransient:r=Me,maxAttempts:n=Ne,backoffBaseMs:s=Ce}=e;let o=null;return function(){return o||(o=(async()=>{for(let e=0;e<n;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===n-1)break;const o=s*2**e+250*Math.random();await new Promise(e=>setTimeout(e,o))}return null})().finally(()=>{o=null}),o)}}const ve="bridge-toast";function Be(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(ve,{detail:e}))}const we=e=>Be(e),be=(e="Please try again")=>Be({title:"Error",description:e,variant:"destructive"}),ke=(e="Successfully")=>Be({title:"Success",description:e,variant:"default"}),Le=ve,Pe=e=>!!e&&Date.now()>=e-Fe.TOKEN_CLOCK_SKEW_MS,Ue=e=>!e||Date.now()>=e-Fe.TOKEN_REFRESH_THRESHOLD_MS,Ge=async()=>Ue(ce())?await(re()?.())??null:null,He=e=>e?Math.max(0,e-Date.now()):0,Ke=e=>e?Math.max(0,e-Fe.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,$e=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function We(e){const t=e.headers.get(Te.ACCESS_TOKEN),r=e.headers.get(Te.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${Te.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${Te.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function je(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),n=atob(r),s=JSON.parse(n);return s&&"object"==typeof s&&!Array.isArray(s)?s:null}catch{return null}}function Ve(e){const t=je(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function ze(e,t){try{const r=t.getItem(me.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const n=Ve(t.getItem(me.ACCESS_TOKEN));return n&&n!==e?"jwt":null}catch{return null}}function Xe(e){try{e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)}catch{}}function Ye(e,t){try{t.setItem(me.SELECTED_ORG_ID,e),t.setItem(me.SELECTED_ORG_NAME,e)}catch{}}const Je={LTR:"ltr",RTL:"rtl"},Ze=[[1488,1514],[1519,1522],[1568,1610],[1646,1647],[1649,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1788],[1791,1791],[1808,1808],[1810,1839],[1869,1957],[1969,1969],[1994,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2112,2136],[2144,2154],[2160,2183],[2185,2190],[2208,2249],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64433],[64467,64829],[64848,64911],[64914,64967],[65008,65019],[65136,65140],[65142,65276],[69314,69316],[125184,125251],[125259,125259]],qe=[[2304,2405],[2416,2533],[2544,2547],[2554,2661],[2672,2789],[2800,2917],[2928,2929],[2936,3045],[3059,3173],[3184,3191],[3199,3301],[3312,3415],[3423,3429],[3449,3557],[3568,3663],[3674,3791],[3802,3871],[3892,4159],[4170,4239],[4250,4351],[4608,4968],[4989,4991],[6016,6111],[6122,6127],[6138,6143],[12352,12543],[19968,40959],[44032,55215]],Qe=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,et=["arab","hebr","thaa","syrc","adlm","nkoo","samr","mand"],tt=/^[a-z]{4}$/,rt=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],nt=["und","zxx","mul"];function st(e,t){for(const[r,n]of t)if(e>=r&&e<=n)return!0;return!1}function ot(e,t=Je.LTR){const r=(e??"").replace(Qe," ");let n=0,s=0;for(const e of r){const t=e.codePointAt(0)??0;t<1424?e.toLowerCase()!==e.toUpperCase()&&(s+=1):st(t,Ze)?n+=1:(e.toLowerCase()!==e.toUpperCase()||st(t,qe))&&(s+=1)}const o=n+s;return 0===o?{dir:t,confident:!1}:{dir:n/o>=.2?Je.RTL:Je.LTR,confident:o>=12}}function at(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1)){if(1===e.length)break;if(tt.test(e))return et.indexOf(e)>=0?Je.RTL:Je.LTR}const r=t[0];return!r||nt.indexOf(r)>=0?null:rt.indexOf(r)>=0?Je.RTL:Je.LTR}function it(t,r,n){const s=e(null),o=r??"";s.current&&s.current.msgId===t&&o.startsWith(s.current.text)||(s.current={msgId:t,text:o,dir:Je.LTR,locked:!1});const a=s.current;a.text=o;const i=at(n);if(i)a.dir=i,a.locked=!0;else if(!a.locked){const{dir:e,confident:t}=ot(o);a.dir=e,a.locked=t}return a.dir}const ct=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"ﻣﺮﺣﺒﺎ ﺑﻜﻢ ﻛﻴﻒ ﺣﺎﻟﻜﻢ ﺍﻟﻴﻮﻡ",expected:"rtl"},{text:"Hello مرحبا",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"यह एक बहुत अच्छी किताब है",expected:"ltr"},{text:"यह एक बहुत अच्छी किताब है जो मुझे बहुत पसंद आई مرحبا",expected:"ltr"},{text:"今日はいい天気ですね",expected:"ltr"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}];class ut{static instance;events={};constructor(){}static getInstance(){return ut.instance||(ut.instance=new ut),ut.instance}on(e,t,r){const n="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(n),()=>{this.off(e,n)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){D.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const lt=ut.getInstance();function dt(e,t){return lt.on(e,t)}const gt={LIGHT:"light",DARK:"dark",SYSTEM:"system"},pt=[gt.LIGHT,gt.DARK,gt.SYSTEM],Et={FOREGROUND:"foreground",BACKGROUND:"background"},ft={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},Ft={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:ft.PILL,chatInputPlaceholder:"Type anything..."},mt={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:ft.PILL,chatInputPlaceholder:"Type anything..."};function ht(e){return e===gt.LIGHT?mt:Ft}const St=Ft;function Tt(e,t){const r=e.replace("#","");let n;n=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const s=Math.max(0,Math.min(100,t));return`#${n}${Math.round(s/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function xt(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function yt(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function _t(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function Ot(e){switch(e){case"pill":return ft.PILL;case"none":return ft.SHARP;default:return 0===parseInt(e??"",10)?ft.SHARP:ft.ROUNDED}}function Rt(e,t,r=gt.DARK){const n=ht(r);if(!e||!t)return n;const s=t.surface?.chatInput?.border||t.surface?.input?.border,o=t.surface?.userMessage?.border,a=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||n.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||n.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||n.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sidebarBorderColor,widgetBg:t.surface?.widget?.background||n.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||n.settingsGroupBg,inputBorderStyle:s?.style||n.inputBorderStyle,inputBorderColor:s?.color?Tt(s.color,s.opacity||100):n.inputBorderColor,inputBorderWidth:s?.width||n.inputBorderWidth,inputBorderOpacity:s?.opacity||100,widgetBorderStyle:a?.style||n.widgetBorderStyle,widgetBorderColor:a?.color?Tt(a.color,a.opacity||100):n.widgetBorderColor,widgetBorderWidth:a?.width||n.widgetBorderWidth,widgetBorderOpacity:a?.opacity??n.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||n.placeholderColor,primaryText:t.text?.primary||n.primaryText,secondaryText:t.text?.secondary||n.secondaryText,tertiaryText:t.text?.tertiary||n.tertiaryText,userMsgBg:t.surface?.userMessage?.background||n.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||n.userMsgText,userMsgBorderStyle:o?.style||n.userMsgBorderStyle,userMsgBorderColor:o?.color?Tt(o.color,o.opacity||100):n.userMsgBorderColor,userMsgBorderWidth:o?.width||n.userMsgBorderWidth,userMsgBorderOpacity:o?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||n.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||n.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||n.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||n.statusPrimary.solid,background:t.status?.primary?.background||n.statusPrimary.background,text:t.status?.primary?.text||n.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||n.statusSecondary.solid,background:t.status?.secondary?.background||n.statusSecondary.background,text:t.status?.secondary?.text||n.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||n.statusSuccess.solid,background:t.status?.success?.background||n.statusSuccess.background,text:t.status?.success?.text||n.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||n.statusDanger.solid,background:t.status?.danger?.background||n.statusDanger.background,text:t.status?.danger?.text||n.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||n.statusWarning.solid,background:t.status?.warning?.background||n.statusWarning.background,text:t.status?.warning?.text||n.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||n.statusInfo.solid,background:t.status?.info?.background||n.statusInfo.background,text:t.status?.info?.text||n.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||n.statusDiscovery.solid,background:t.status?.discovery?.background||n.statusDiscovery.background,text:t.status?.discovery?.text||n.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||n.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||n.switchUncheckedColor,fontFamily:xt(e.typography?.fontFamily,n),fontFamilyMono:yt(e.typography?.fontFamilyMono,n),fontSize:14,borderRadius:_t(e.cornerRadius,n),cornerRadiusMode:Ot(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}}function At(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const n=parseInt(r.slice(0,2),16),s=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16),a=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${n}, ${s}, ${o}, ${Math.round(a*t*1e3)/1e3})`}const It=t(void 0);function Nt(){const e=r(It);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}const Ct=t(null),Mt=()=>{const e=r(Ct);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e};let Dt=null;function vt(e){Dt=e}const Bt=()=>Dt,wt=t(null),bt={isConnected:!0,isInternetReachable:!0},kt=()=>{const e=r(wt),t=n(t=>e?e.subscribe(t):()=>{},[e]),o=n(()=>e?e.getState():bt,[e]);return s(t,o,o)},Lt=o({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:n,refreshToken:s,expiresIn:o}=t.payload;void 0!==r&&(e.user=r),void 0!==n&&(e.accessToken=n),void 0!==s&&(e.refreshToken=s),void 0!==o?e.tokenExpiresAt=null===o?null:1e3*o:n&&(e.tokenExpiresAt=Date.now()+Fe.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:Pt,updateUser:Ut,clearSession:Gt,sessionExpired:Ht,setSelectedOrgId:Kt}=Lt.actions,$t=Pt,Wt=Gt,jt=e=>async t=>{const[r,n,s,o]=await Promise.all([e.getItem(me.ACCESS_TOKEN),e.getItem(me.REFRESH_TOKEN),e.getItem(me.TOKEN_EXPIRES_AT),e.getItem(me.USER)]),a=s?parseInt(s,10):null;if((!r||!a||Pe(a))&&!n)return void(r&&await Promise.all([e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)]));let i=null;if(o)try{i=JSON.parse(o)}catch(e){D.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Pt({user:i,accessToken:r,refreshToken:n,expiresIn:null!=a?a/1e3:null}))},Vt=a();Vt.startListening({matcher:i(Pt,Ut,Gt,Ht),effect:async(e,t)=>{const r=Bt();if(!r)return;const{auth:n}=t.getState(),s=[];s.push(n.accessToken?r.setItem(me.ACCESS_TOKEN,n.accessToken):r.removeItem(me.ACCESS_TOKEN)),s.push(n.refreshToken?r.setItem(me.REFRESH_TOKEN,n.refreshToken):r.removeItem(me.REFRESH_TOKEN)),s.push(null!=n.tokenExpiresAt?r.setItem(me.TOKEN_EXPIRES_AT,String(n.tokenExpiresAt)):r.removeItem(me.TOKEN_EXPIRES_AT)),s.push(n.user?r.setItem(me.USER,JSON.stringify(n.user)):r.removeItem(me.USER)),(Gt.match(e)||Ht.match(e))&&s.push(r.removeItem(me.LOCATION_CACHE),r.removeItem(me.DEBUG_MODE),r.removeItem(me.APPEARANCE_MODE_KEY),r.removeItem(me.LOCATION_ENABLED),r.removeItem(me.STT_AUTO_SEND),r.removeItem(me.STT_IMPLEMENTATION),r.removeItem(me.SEND_DIAGNOSTICS),r.removeItem(me.ACTIVE_CONVERSATION_ID)),await Promise.all(s)}});const zt=Lt.reducer,Xt={lastResponseTime:null},Yt=o({name:"indicator",initialState:Xt,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(i(Gt,Ht),()=>Xt)}}),{setLastResponseTime:Jt,clearLastResponseTime:Zt}=Yt.actions,qt=Yt.reducer;function Qt(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}}const er={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},tr={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function rr(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{Ee as API_ENDPOINTS,gt as APPEARANCE_MODES,pt as APPEARANCE_MODE_VALUES,Te as AUTH_HEADERS,ye as AUTH_PATHS,Le as BRIDGE_TOAST_EVENT_NAME,It as BrandingContext,ft as CORNER_RADIUS_MODES,xe as DEVICE_TOKEN_HEADER,ct as DIRECTION_VECTORS,ut as EventEmitter,fe as FEATURE_FLAGS,er as IDP_HINTS,tr as INDICATOR_TIMER_ACTIONS,_ as LOG_LEVELS,wt as NetworkContext,Et as ORB_POSITIONS,ge as ORG_MOUNT_SUFFIX,_e as PATTERNS,Oe as PROFILE_LIMITS,me as STORAGE_KEYS,he as STT_IMPLEMENTATIONS,Ct as StorageContext,Je as TEXT_DIRECTION,Fe as TIMING,Rt as brandingToThemeStyles,d as capitalizeFirst,Xe as clearAuthTokens,Zt as clearLastResponseTime,Gt as clearSession,De as createTokenRefresher,St as defaultChatThemeStyles,Ft as defaultDarkThemeStyles,Me as defaultIsTransient,mt as defaultLightThemeStyles,ze as detectOrgSwitch,ot as detectTextDirection,Ge as ensureFreshToken,lt as eventEmitter,We as extractTokens,h as formatCVC,g as formatCamelCaseToTitle,E as formatCardNumber,m as formatExpiryDate,$e as formatTimeRemaining,l as formatTimestamp,u as generateUniqueId,de as getApiUrl,Se as getAppearanceModeStorageKey,S as getArrayOfObjects,q as getBaseUrl,ee as getCustomHeaders,ht as getDefaultThemeStyles,y as getErrorMessage,T as getInitials,rr as getPaymentId,Q as getPaymentProviderHint,Ie as getSendDiagnostics,Bt as getStorageRef,He as getTimeUntilExpiry,Ke as getTimeUntilRefresh,re as getTokenRefreshHandler,Qt as handleSharedEvent,x as hasWidgets,At as hexToRgba,Ae as hydrateAppBoot,jt as hydrateSession,qt as indicatorReducer,H as initLogger,Z as initializeChatConfig,le as isDevMode,Ue as isTokenAboutToExpire,Pe as isTokenExpired,pe as joinOrgMountBase,D as logger,Wt as logout,je as parseJwtPayload,Ve as parseOrgFromJwt,se as readAccessToken,ae as readDeviceToken,ce as readTokenExpiresAt,dt as registerEventListener,N as registerLoggerContextProvider,I as registerLoggerSink,p as removeSpecialCharsAndSpaces,C as resetLoggerForTests,at as resolveDirectionFromLang,F as sanitizeExpiryDate,Ht as sessionExpired,Vt as sessionListenerMiddleware,zt as sessionReducer,ne as setAccessTokenReader,$t as setCredentials,oe as setDeviceTokenReader,ue as setIsDev,Jt as setLastResponseTime,vt as setModuleStorage,G as setNetworkLoggingEnabled,Kt as setSelectedOrgId,Pt as setSession,ie as setTokenExpiresAtReader,te as setTokenRefreshHandler,be as showErrorToast,ke as showSuccessToast,we as showToast,c as truncateWordLimit,Ut as updateUser,Nt as useBranding,it as useMessageDirection,kt as useNetworkState,Mt as useStorage,f as validateExpiryDate,Ye as writeOrgToStorage};
|