call-control-sdk 6.4.5-dev.7 → 6.4.5-dev.9

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../call-control-sdk/index.ts","../call-control-sdk/lib/services/endPoint.ts","../call-control-sdk/lib/hooks/sdk-state.ts","../call-control-sdk/lib/hooks/eventsTracker.ts","../call-control-sdk/lib/hooks/useLogout.ts","../call-control-sdk/lib/services/axios.ts","../call-control-sdk/lib/hooks/useEndCall.ts","../call-control-sdk/lib/hooks/useClickToCall.ts","../call-control-sdk/lib/hooks/useGetCallerData.ts","../call-control-sdk/lib/hooks/useGetAuthorizationToken.ts","../call-control-sdk/lib/components/callControlPanel.tsx","../call-control-sdk/lib/components/callControls.tsx","../call-control-sdk/lib/hooks/useDraggable.ts","../call-control-sdk/lib/hooks/useSDKState.ts","../call-control-sdk/lib/services/request.ts","../call-control-sdk/lib/services/toastMessage.tsx","../call-control-sdk/lib/components/dialog.tsx","../call-control-sdk/lib/components/styles.ts","../call-control-sdk/lib/components/SDKProvider.tsx"],"sourcesContent":["import { eventTracker } from \"./lib/hooks/eventsTracker\";\r\nimport { sdkStateManager } from \"./lib/hooks/sdk-state\";\r\nimport { useLogout } from \"./lib/hooks/useLogout\";\r\nimport { BASE_URL } from \"./lib/services/endPoint\";\r\nimport { useEndCall } from \"./lib/hooks/useEndCall\";\r\nimport { SDKConfig } from \"./types\";\r\nimport { useClickToCall } from \"./lib/hooks/useClickToCall\";\r\nimport { useGetCallerData } from \"./lib/hooks/useGetCallerData\";\r\nimport { useGetAuthorizationToken } from \"./lib/hooks/useGetAuthorizationToken\";\r\n\r\nexport { CallControlPanel } from \"./lib/components/callControlPanel\";\r\n\r\nexport type { CallControlPanelProps, CallData, SDKConfig } from \"./types\";\r\n\r\ninterface InitSDKParams {\r\n\tapiKey: string;\r\n\r\n\ttenantId: string;\r\n\r\n\tagentId: string;\r\n\r\n\tsdkConfig?: SDKConfig;\r\n}\r\n\r\nexport async function initSDK({\r\n\tapiKey,\r\n\ttenantId,\r\n\tagentId,\r\n\tsdkConfig,\r\n}: InitSDKParams): Promise<void> {\r\n\tif (!apiKey || typeof apiKey !== \"string\" || apiKey.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: API key is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\tif (!tenantId || typeof tenantId !== \"string\" || tenantId.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: Tenant ID is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\tif (!agentId || typeof agentId !== \"string\" || agentId.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: Agent ID is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\ttry {\r\n\t\tconst initResult = await eventTracker.init({\r\n\t\t\tapiKey: apiKey.trim(),\r\n\t\t\ttenantId: tenantId.trim(),\r\n\t\t\tagentId: agentId.trim(),\r\n\t\t\tbaseUrl: BASE_URL,\r\n\t\t});\r\n\r\n\t\tif (initResult) {\r\n\t\t\tconsole.log(\"SDK initialized successfully\");\r\n\t\t\tsdkStateManager.initialize(\r\n\t\t\t\tapiKey.trim(),\r\n\t\t\t\ttenantId.trim(),\r\n\t\t\t\tagentId.trim(),\r\n\t\t\t\tsdkConfig,\r\n\t\t\t\tinitResult\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tconsole.error(\"SDK initialization failed: Event tracker initialization returned false\");\r\n\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\tthrow new Error(\r\n\t\t\t\t\"SDK initialization failed: Unable to establish connection with the CTI system\"\r\n\t\t\t);\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tconsole.error(\"SDK initialization error:\", error);\r\n\t\tsdkStateManager.setInitCheck();\r\n\r\n\t\tif (error instanceof Error) {\r\n\t\t\tthrow error;\r\n\t\t} else {\r\n\t\t\tthrow new Error(`SDK initialization failed: ${String(error)}`);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getSDKVersion(): string {\r\n\treturn \"6.x.x\";\r\n}\r\n\r\nexport function isSDKInitialized(): boolean {\r\n\treturn sdkStateManager.getState().isInitialized;\r\n}\r\n\r\nexport { useLogout, useEndCall, useClickToCall, useGetCallerData, useGetAuthorizationToken };\r\n","export const IP = \"uat-cti.aighospitals.com\";\r\nexport const BASE_URL = `https://${IP}:8095`;\r\nexport const WS_BASE_URL = `wss://${IP}:8095`;\r\nexport const VERSION = {\r\n\tv1: \"/api/v1\",\r\n};\r\n\r\nexport const END_POINT = {\r\n\tLOGIN: `${BASE_URL}${VERSION.v1}/cti/login?provider=convox`,\r\n\tREADY_AGENT: `${BASE_URL}${VERSION.v1}/cti/ready-agent?provider=convox`,\r\n\tUPDATE_AGENT_BREAK: `${BASE_URL}${VERSION.v1}/cti/update-agent-status?provider=convox`,\r\n\tCLICK_TO_CALL: `${BASE_URL}${VERSION.v1}/cti/calls?provider=convox`,\r\n\tHOLD_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/hold?provider=convox`,\r\n\tMUTE_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/mute?provider=convox`,\r\n\tUNMUTE_CALL: `${BASE_URL}${VERSION.v1}/cti/unmute-call?provider=convox`,\r\n\tEND_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/end?provider=convox`,\r\n\tLOGOUT: `${BASE_URL}${VERSION.v1}/cti/logout?provider=convox`,\r\n\r\n\tCONFERENCE_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/conference?provider=convox`,\r\n\tCONFERENCE_CALL_HOLD_OR_UN_HOLD: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hold?provider=convox`,\r\n\tCONFERENCE_CALL_MUTE_OT_UN_MUTE: `${BASE_URL}${VERSION.v1}/cti/calls/conference/mute?provider=convox`,\r\n\tCONFERENCE_CALL_END: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hangup?provider=convox`,\r\n\tCONFERENCE_CALL_END_ALL: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hangup/all?provider=convox`,\r\n\tTRANSFER_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/transfer?provider=convox`,\r\n\r\n\tAGENTS_LIST: `${BASE_URL}${VERSION.v1}/cti/users`,\r\n\tPROCESS_LIST: `${BASE_URL}${VERSION.v1}/cti/processes-list`,\r\n\tTRANSFER_TO_DETAILS: `${BASE_URL}${VERSION.v1}/cti/transfer-to-details?provider=convox`,\r\n\r\n\tCALL_HISTORY: `${BASE_URL}${VERSION.v1}/dashboard/call-history`,\r\n\tSENTIMENTAL_ANALYSIS: `${BASE_URL}${VERSION.v1}/users/get_sentiment_analysis`,\r\n};\r\n\r\nexport const WS_END_POINT = {\r\n\tWS: `${WS_BASE_URL}${VERSION.v1}/cti/ws`,\r\n};\r\n\r\nexport const STORAGE_KEY = \"call-control-sdk-state\";\r\n","import type {\r\n\tSDKState,\r\n\tCallData,\r\n\tCallStatus,\r\n\tConferenceLineTypes,\r\n\tSDKConfig,\r\n\tInitSDKRes,\r\n} from \"../../types\";\r\nimport { STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nclass SDKStateManager {\r\n\tprivate state: SDKState;\r\n\tprivate listeners: Array<() => void> = [];\r\n\tprivate readonly STORAGE_KEY = STORAGE_KEY;\r\n\r\n\tprivate apiKey: string | undefined;\r\n\tprivate tenantId: string | undefined;\r\n\r\n\tconstructor() {\r\n\t\tthis.state = this.getInitialState();\r\n\t\tthis.loadFromStorage();\r\n\t}\r\n\r\n\tprivate getInitialState(): SDKState {\r\n\t\treturn {\r\n\t\t\tauthorization: undefined,\r\n\t\t\tprocess: null,\r\n\t\t\tagentId: \"\",\r\n\t\t\topenConferenceDialog: false,\r\n\t\t\topenCallTransferDialog: false,\r\n\t\t\tisInitialized: false,\r\n\t\t\tsdkConfig: {\r\n\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\tisDraggable: true,\r\n\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\tdisabled: {},\r\n\t\t\t\tenabled: {},\r\n\t\t\t\toutlined: {},\r\n\t\t\t},\r\n\t\t\tisHolding: false,\r\n\t\t\tisMuted: false,\r\n\t\t\tstatus: \"idle\",\r\n\t\t\tcallStartTime: null,\r\n\t\t\tcontrolPanelPosition: { x: 10, y: 10 },\r\n\t\t\tiframePosition: { x: 10, y: 80 },\r\n\t\t\tcallData: {\r\n\t\t\t\tagent_id: \"\",\r\n\t\t\t\tstatus: \"\",\r\n\t\t\t\ttype: \"\",\r\n\t\t\t\tevent_time: \"\",\r\n\t\t\t\tphone_number: \"\",\r\n\t\t\t},\r\n\t\t\tconferenceLine: [\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 1,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 2,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 3,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 4,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 5,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t}\r\n\r\n\tprivate loadFromStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\tif (stored) {\r\n\t\t\t\tconst parsedState = JSON.parse(stored);\r\n\r\n\t\t\t\tthis.state = {\r\n\t\t\t\t\t...this.state,\r\n\t\t\t\t\tagentId: parsedState.agentId || \"\",\r\n\t\t\t\t\tauthorization: parsedState.authorization || undefined,\r\n\t\t\t\t\tprocess: parsedState.process || null,\r\n\t\t\t\t\topenConferenceDialog: parsedState?.openConferenceDialog || false,\r\n\t\t\t\t\topenCallTransferDialog: parsedState?.openCallTransferDialog || false,\r\n\t\t\t\t\tisInitialized: parsedState.isInitialized || false,\r\n\t\t\t\t\tsdkConfig: parsedState.sdkConfig || {\r\n\t\t\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\t\t\tisDraggable: true,\r\n\t\t\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\t\t\tdisabled: {},\r\n\t\t\t\t\t\tenabled: {},\r\n\t\t\t\t\t\toutlined: {},\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisHolding: parsedState.isHolding || false,\r\n\t\t\t\t\tisMuted: parsedState.isMuted || false,\r\n\t\t\t\t\tstatus: parsedState.status || \"idle\",\r\n\t\t\t\t\tcallStartTime: parsedState.callStartTime || null,\r\n\t\t\t\t\tcontrolPanelPosition: parsedState.controlPanelPosition || {\r\n\t\t\t\t\t\tx: 10,\r\n\t\t\t\t\t\ty: 10,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tiframePosition: parsedState.iframePosition || { x: 10, y: 80 },\r\n\t\t\t\t\tcallData: parsedState.callData || {\r\n\t\t\t\t\t\tmobileNumber: \"\",\r\n\t\t\t\t\t\tcallReferenceId: \"\",\r\n\t\t\t\t\t\tagent_id: \"\",\r\n\t\t\t\t\t\tstatus: \"\",\r\n\t\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\t\tevent_time: \"\",\r\n\t\t\t\t\t\tphone_number: \"\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// Fix: Properly handle conferenceLine with fallback to initial state\r\n\t\t\t\t\tconferenceLine:\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\tparsedState.conferenceLine &&\r\n\t\t\t\t\t\t\tArray.isArray(parsedState.conferenceLine) &&\r\n\t\t\t\t\t\t\tparsedState.conferenceLine.length > 0\r\n\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\tparsedState.conferenceLine\r\n\t\t\t\t\t\t:\tthis.state.conferenceLine,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to load SDK state from localStorage:\", error);\r\n\t\t\t// If loading fails, keep the initial state\r\n\t\t}\r\n\t}\r\n\r\n\tprivate saveToStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst persistentState = {\r\n\t\t\t\tagentId: this.state.agentId,\r\n\t\t\t\tauthorization: this.state.authorization,\r\n\t\t\t\tprocess: this.state.process,\r\n\t\t\t\tisInitialized: this.state.isInitialized,\r\n\t\t\t\topenConferenceDialog: this.state.openConferenceDialog,\r\n\t\t\t\topenCallTransferDialog: this.state.openCallTransferDialog,\r\n\t\t\t\tsdkConfig: this.state.sdkConfig,\r\n\t\t\t\tisHolding: this.state.isHolding,\r\n\t\t\t\tisMuted: this.state.isMuted,\r\n\t\t\t\tstatus: this.state.status,\r\n\t\t\t\tcallStartTime: this.state.callStartTime,\r\n\t\t\t\tcontrolPanelPosition: this.state.controlPanelPosition,\r\n\t\t\t\tiframePosition: this.state.iframePosition,\r\n\t\t\t\tcallData: this.state.callData,\r\n\t\t\t\tconferenceLine: this.state.conferenceLine,\r\n\t\t\t};\r\n\t\t\tlocalStorage.setItem(this.STORAGE_KEY, JSON.stringify(persistentState));\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to save SDK state to localStorage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate notifyListeners(): void {\r\n\t\tthis.listeners.forEach((listener) => listener());\r\n\t}\r\n\r\n\tprivate validateCredentials(apiKey: string, tenantId: string): void {\r\n\t\tif (!apiKey || typeof apiKey !== \"string\" || apiKey.trim().length === 0) {\r\n\t\t\tthrow new Error(\"API key not available\");\r\n\t\t}\r\n\t\tif (!tenantId || typeof tenantId !== \"string\" || tenantId.trim().length === 0) {\r\n\t\t\tthrow new Error(\"Tenant ID not available\");\r\n\t\t}\r\n\t\tthis.apiKey = apiKey.trim();\r\n\t\tthis.tenantId = tenantId.trim();\r\n\t}\r\n\r\n\tpublic initialize(\r\n\t\tapiKey: string,\r\n\t\ttenantId: string,\r\n\t\tagentId: string,\r\n\t\tsdkConfig?: SDKConfig,\r\n\t\tinitResult?: InitSDKRes\r\n\t): void {\r\n\t\tthis.validateCredentials(apiKey, tenantId);\r\n\t\tif (!agentId || typeof agentId !== \"string\" || agentId.trim().length === 0) {\r\n\t\t\tthrow new Error(\"Agent ID not available\");\r\n\t\t} else {\r\n\t\t\tthis.state.agentId = agentId;\r\n\t\t\tthis.state.openConferenceDialog = false;\r\n\t\t\tthis.state.openCallTransferDialog = false;\r\n\t\t\tthis.state.authorization = initResult;\r\n\t\t\tthis.state.sdkConfig = {\r\n\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\tisDraggable: true,\r\n\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\tdisabled: {},\r\n\t\t\t\tenabled: {},\r\n\t\t\t\toutlined: {},\r\n\t\t\t\t...sdkConfig,\r\n\t\t\t};\r\n\t\t\tthis.state.isInitialized = true;\r\n\t\t\tthis.saveToStorage();\r\n\t\t\tthis.notifyListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getState(): SDKState {\r\n\t\treturn { ...this.state };\r\n\t}\r\n\r\n\tpublic getCredentials(): { apiKey: string | undefined; tenantId: string | undefined } {\r\n\t\treturn { apiKey: this.apiKey, tenantId: this.tenantId };\r\n\t}\r\n\tpublic getSdkAuthToken(): string | undefined {\r\n\t\treturn this.state.authorization?.accessToken;\r\n\t}\r\n\r\n\tpublic subscribe(listener: () => void): () => void {\r\n\t\tthis.listeners.push(listener);\r\n\t\treturn () => {\r\n\t\t\tconst index = this.listeners.indexOf(listener);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis.listeners.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tpublic setHolding(isHolding: boolean): void {\r\n\t\tthis.state.isHolding = isHolding;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setMuted(isMuted: boolean): void {\r\n\t\tthis.state.isMuted = isMuted;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setStatus(status: CallStatus): void {\r\n\t\tthis.state.status = status;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setProcess(process: { process_id: number; process_name: string }): void {\r\n\t\tthis.state.process = process;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setControlPanelPosition(position: { x: number; y: number }): void {\r\n\t\tthis.state.controlPanelPosition = position;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setIframePosition(position: { x: number; y: number }): void {\r\n\t\tthis.state.iframePosition = position;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic startCall(): void {\r\n\t\tthis.state.callStartTime = Date.now();\r\n\t\tthis.state.status = \"on call\";\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic endCall(): void {\r\n\t\tthis.state.callStartTime = null;\r\n\t\tthis.state.status = \"idle\";\r\n\t\tthis.state.isHolding = false;\r\n\t\tthis.state.isMuted = false;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setInitCheck(): void {\r\n\t\tthis.state.isInitialized = false;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setOpenConferenceDialog(open: boolean): void {\r\n\t\tthis.state.openConferenceDialog = open;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setOpenCallTransferDialog(open: boolean): void {\r\n\t\tthis.state.openCallTransferDialog = open;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic updateCallData(data: Partial<CallData>): void {\r\n\t\tthis.state.callData = { ...this.state.callData, ...data };\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic updateConferenceData(data: ConferenceLineTypes[]): void {\r\n\t\tthis.state.conferenceLine = [...data];\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setConferenceLine(line: ConferenceLineTypes): void {\r\n\t\tif (!this.state.conferenceLine || !Array.isArray(this.state.conferenceLine)) {\r\n\t\t\tconsole.warn(\"Conference line data corrupted, resetting to initial state\");\r\n\t\t\tthis.state.conferenceLine = this.getInitialState().conferenceLine;\r\n\t\t}\r\n\r\n\t\tconst conferenceLineData = this.state.conferenceLine?.map((each: ConferenceLineTypes) => {\r\n\t\t\tif (each.line === line.line) {\r\n\t\t\t\treturn line;\r\n\t\t\t}\r\n\t\t\treturn each;\r\n\t\t});\r\n\t\tthis.state.conferenceLine = conferenceLineData;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic resetConferenceLines(): void {\r\n\t\tthis.state.conferenceLine = this.getInitialState().conferenceLine;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic clearStorageAndReset(): void {\r\n\t\ttry {\r\n\t\t\tlocalStorage.removeItem(this.STORAGE_KEY);\r\n\t\t\tthis.state = this.getInitialState();\r\n\t\t\tthis.notifyListeners();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to clear localStorage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic debugStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\tconsole.log(\"Current localStorage data:\", stored);\r\n\t\t\tif (stored) {\r\n\t\t\t\tconsole.log(\"Parsed localStorage data:\", JSON.parse(stored));\r\n\t\t\t}\r\n\t\t\tconsole.log(\"Current state:\", this.state);\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"Error debugging storage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getConferenceLines(): ConferenceLineTypes[] {\r\n\t\treturn this.state.conferenceLine || [];\r\n\t}\r\n}\r\n\r\nexport const sdkStateManager = new SDKStateManager();\r\n","import { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport interface EventTrackerConfig {\r\n\tapiKey: string;\r\n\ttenantId: string;\r\n\tagentId: string;\r\n\tsessionId?: string;\r\n\tbaseUrl?: string;\r\n\tautoTrack?:\r\n\t\t| boolean\r\n\t\t| {\r\n\t\t\t\tpageVisits?: boolean;\r\n\t\t\t\tclicks?: boolean;\r\n\t\t\t\tforms?: boolean;\r\n\t\t\t\tinputs?: boolean;\r\n\t\t\t\tscrolling?: boolean;\r\n\t\t\t\tperformance?: boolean;\r\n\t\t\t\terrors?: boolean;\r\n\t\t\t\tvisibility?: boolean;\r\n\t\t };\r\n\tretryAttempts?: number;\r\n\tqueueSize?: number;\r\n\tflushInterval?: number;\r\n}\r\n\r\nexport interface EventData {\r\n\t[key: string]: any;\r\n}\r\n\r\nexport interface EventTrackerInstance {\r\n\tinit(config: EventTrackerConfig): Promise<string | null>;\r\n\t// logEvent(eventType: string, eventData?: EventData): Promise<void>;\r\n\t// closeTicket(): Promise<void>;\r\n\tisInitialized(): boolean;\r\n\tgetConfig(): EventTrackerConfig | null;\r\n\t// getTicketId(): string | null;\r\n\t// flush()?: Promise<void>;\r\n}\r\n\r\nclass EventTrackerSDK implements EventTrackerInstance {\r\n\tprivate config: EventTrackerConfig | null = null;\r\n\tprivate ticketId: string | null = null;\r\n\tprivate baseUrl: string = \"\";\r\n\tprivate eventQueue: Array<{\r\n\t\teventType: string;\r\n\t\teventData?: EventData;\r\n\t\ttimestamp: number;\r\n\t}> = [];\r\n\t// private isOnline: boolean = true;\r\n\t// private retryQueue: Array<() => Promise<void>> = [];\r\n\tprivate flushTimer: ReturnType<typeof setInterval> | null = null;\r\n\r\n\tasync init(config: EventTrackerConfig): Promise<any | null> {\r\n\t\tthis.config = {\r\n\t\t\tautoTrack: true,\r\n\t\t\tretryAttempts: 3,\r\n\t\t\tqueueSize: 100,\r\n\t\t\tflushInterval: 5000,\r\n\t\t\t...config,\r\n\t\t};\r\n\r\n\t\tthis.baseUrl = config.baseUrl || (typeof window !== \"undefined\" ? window.location.origin : \"\");\r\n\r\n\t\tthis.setupNetworkDetection();\r\n\r\n\t\tconst ticket = await this.createTicket();\r\n\r\n\t\tthis.startPeriodicFlush();\r\n\r\n\t\tconsole.log(\"EventTracker SDK initialized successfully\");\r\n\t\treturn ticket;\r\n\t}\r\n\r\n\tisInitialized(): boolean {\r\n\t\treturn this.config !== null && this.ticketId !== null;\r\n\t}\r\n\r\n\tgetConfig(): EventTrackerConfig | null {\r\n\t\treturn this.config;\r\n\t}\r\n\r\n\tgetTicketId(): string | null {\r\n\t\treturn this.ticketId;\r\n\t}\r\n\r\n\tprivate async createTicket(): Promise<string | null> {\r\n\t\tif (!this.config) {\r\n\t\t\tthrow new Error(\"EventTracker not initialized\");\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await this.makeRequest(\"/api/v1/et/init\", {\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\tagentId: this.config.agentId,\r\n\t\t\t\t\tsessionId: this.config.sessionId,\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\t\tthrow new Error(`Failed to initialize: ${response.status} ${response.statusText}`);\r\n\t\t\t}\r\n\r\n\t\t\tconst data = await response.json();\r\n\t\t\tthis.ticketId = data.ticketId;\r\n\r\n\t\t\tif (this.config.autoTrack) {\r\n\t\t\t\tthis.setupAutoTracking();\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"EventTracker initialization failed:\", error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync logEvent(eventType: string, eventData?: EventData): Promise<void> {\r\n\t\tif (!this.config || !this.ticketId) {\r\n\t\t\tconsole.warn(\"EventTracker not initialized, skipping event:\", eventType);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst event = {\r\n\t\t\teventType,\r\n\t\t\teventData,\r\n\t\t\ttimestamp: Date.now(),\r\n\t\t};\r\n\r\n\t\tthis.eventQueue.push(event);\r\n\r\n\t\tif (this.eventQueue.length > (this.config.queueSize || 100)) {\r\n\t\t\tthis.eventQueue.shift();\r\n\t\t}\r\n\r\n\t\t// if (this.isOnline) {\r\n\t\t// \ttry {\r\n\t\t// \t\tawait this.sendEvent(event);\r\n\t\t// \t} catch (error) {\r\n\t\t// \t\tconsole.warn(\"Failed to send event, will retry later:\", error);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\t// private async sendEvent(event: {\r\n\t// \teventType: string;\r\n\t// \teventData?: EventData;\r\n\t// \ttimestamp: number;\r\n\t// }): Promise<void> {\r\n\t// \tif (!this.config || !this.ticketId) return;\r\n\r\n\t// \ttry {\r\n\t// \t\tconst response = await this.makeRequest(\"/api/v1/et/event\", {\r\n\t// \t\t\tmethod: \"POST\",\r\n\t// \t\t\theaders: {\r\n\t// \t\t\t\t\"Content-Type\": \"application/json\",\r\n\t// \t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t// \t\t\t},\r\n\t// \t\t\tbody: JSON.stringify({\r\n\t// \t\t\t\tticketId: this.ticketId,\r\n\t// \t\t\t\teventType: event.eventType,\r\n\t// \t\t\t\teventData: event.eventData,\r\n\t// \t\t\t}),\r\n\t// \t\t});\r\n\r\n\t// \t\tif (!response.ok) {\r\n\t// \t\t\tthrow new Error(`Failed to log event: ${response.status} ${response.statusText}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tconst index = this.eventQueue.findIndex((e) => e.timestamp === event.timestamp);\r\n\t// \t\tif (index > -1) {\r\n\t// \t\t\tthis.eventQueue.splice(index, 1);\r\n\t// \t\t}\r\n\t// \t} catch (error) {\r\n\t// \t\tconsole.error(\"Event logging failed:\", error);\r\n\r\n\t// \t\t// this.retryQueue.push(() => this.sendEvent(event));\r\n\t// \t}\r\n\t// }\r\n\r\n\t// async closeTicket(): Promise<void> {\r\n\t// \tif (!this.config || !this.ticketId) {\r\n\t// \t\tthrow new Error(\"EventTracker not initialized\");\r\n\t// \t}\r\n\r\n\t// \tawait this.flush();\r\n\r\n\t// \ttry {\r\n\t// \t\tconst response = await this.makeRequest(\"/api/v1/et/close\", {\r\n\t// \t\t\tmethod: \"POST\",\r\n\t// \t\t\theaders: {\r\n\t// \t\t\t\t\"Content-Type\": \"application/json\",\r\n\t// \t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t// \t\t\t},\r\n\t// \t\t\tbody: JSON.stringify({\r\n\t// \t\t\t\tticketId: this.ticketId,\r\n\t// \t\t\t}),\r\n\t// \t\t});\r\n\r\n\t// \t\tif (!response.ok) {\r\n\t// \t\t\tthrow new Error(`Failed to close ticket: ${response.status} ${response.statusText}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tthis.ticketId = null;\r\n\t// \t\tthis.stopPeriodicFlush();\r\n\r\n\t// \t\tconsole.log(\"Ticket closed successfully\");\r\n\t// \t} catch (error) {\r\n\t// \t\tconsole.error(\"Ticket close failed:\", error);\r\n\t// \t\tthrow error;\r\n\t// \t}\r\n\t// }\r\n\r\n\t// async flush(): Promise<void> {\r\n\t// \tif (!this.isOnline || this.eventQueue.length === 0) return;\r\n\r\n\t// \t// const eventsToFlush = [...this.eventQueue];\r\n\r\n\t// \t// for (const event of eventsToFlush) {\r\n\t// \t// \tawait this.sendEvent(event);\r\n\t// \t// }\r\n\r\n\t// \tconst retryItems = [...this.retryQueue];\r\n\t// \tthis.retryQueue = [];\r\n\r\n\t// \tfor (const retryFn of retryItems) {\r\n\t// \t\ttry {\r\n\t// \t\t\tawait retryFn();\r\n\t// \t\t} catch (error) {\r\n\t// \t\t\tconsole.error(\"Retry failed:\", error);\r\n\t// \t\t}\r\n\t// \t}\r\n\t// }\r\n\r\n\tprivate async makeRequest(url: string, options: RequestInit): Promise<Response> {\r\n\t\tconst fullUrl = `${this.baseUrl}${url}`;\r\n\t\tconst maxRetries = this.config?.retryAttempts || 3;\r\n\r\n\t\tfor (let attempt = 1; attempt <= maxRetries; attempt++) {\r\n\t\t\ttry {\r\n\t\t\t\tconst response = await fetch(fullUrl, options);\r\n\t\t\t\treturn response;\r\n\t\t\t} catch (error) {\r\n\t\t\t\tif (attempt === maxRetries) {\r\n\t\t\t\t\tthrow error;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\r\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delay));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Max retries exceeded\");\r\n\t}\r\n\r\n\tprivate setupAutoTracking(): void {\r\n\t\tif (typeof window === \"undefined\" || !this.config?.autoTrack) return;\r\n\r\n\t\tconst autoTrackConfig = this.config.autoTrack === true ? {} : this.config.autoTrack;\r\n\r\n\t\tif (autoTrackConfig.pageVisits !== false) {\r\n\t\t\tthis.logEvent(\"pageVisit\", {\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\ttitle: document.title,\r\n\t\t\t\treferrer: document.referrer,\r\n\t\t\t\tuserAgent: navigator.userAgent,\r\n\t\t\t\tviewport: {\r\n\t\t\t\t\twidth: window.innerWidth,\r\n\t\t\t\t\theight: window.innerHeight,\r\n\t\t\t\t},\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t}).catch((error) => console.warn(\"Failed to track page visit:\", error));\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.clicks !== false) {\r\n\t\t\tdocument.addEventListener(\"click\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLElement | HTMLButtonElement;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\ttarget.tagName === \"BUTTON\" ||\r\n\t\t\t\t\ttarget.tagName === \"A\" ||\r\n\t\t\t\t\ttarget.onclick ||\r\n\t\t\t\t\ttarget.getAttribute(\"role\") === \"button\" ||\r\n\t\t\t\t\t(target instanceof HTMLButtonElement && target.type === \"button\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.logEvent(\"click\", {\r\n\t\t\t\t\t\telement: target.tagName,\r\n\t\t\t\t\t\ttext: target.textContent?.trim().substring(0, 100),\r\n\t\t\t\t\t\thref: target.getAttribute(\"href\"),\r\n\t\t\t\t\t\tid: target.id,\r\n\t\t\t\t\t\tclassName: target.className,\r\n\t\t\t\t\t\trole: target.getAttribute(\"role\"),\r\n\t\t\t\t\t\tposition: {\r\n\t\t\t\t\t\t\tx: event.clientX,\r\n\t\t\t\t\t\t\ty: event.clientY,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t}).catch((error) => console.warn(\"Failed to track click:\", error));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.forms !== false) {\r\n\t\t\tdocument.addEventListener(\"submit\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLFormElement;\r\n\t\t\t\tconst formData = new FormData(target);\r\n\t\t\t\tconst formFields: Record<string, string> = {};\r\n\r\n\t\t\t\tformData.forEach((value, key) => {\r\n\t\t\t\t\tformFields[key] = value.toString();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.logEvent(\"formSubmission\", {\r\n\t\t\t\t\tformId: target.id,\r\n\t\t\t\t\taction: target.action,\r\n\t\t\t\t\tmethod: target.method,\r\n\t\t\t\t\tfields: Object.keys(formFields),\r\n\t\t\t\t\tfieldCount: Object.keys(formFields).length,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t}).catch((error) => console.warn(\"Failed to track form submission:\", error));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.inputs !== false) {\r\n\t\t\tlet inputTimer: ReturnType<typeof setInterval>;\r\n\t\t\tdocument.addEventListener(\"input\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLInputElement;\r\n\t\t\t\tif (\r\n\t\t\t\t\ttarget.tagName === \"INPUT\" ||\r\n\t\t\t\t\ttarget.tagName === \"TEXTAREA\" ||\r\n\t\t\t\t\ttarget.tagName === \"SELECT\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tclearTimeout(inputTimer);\r\n\t\t\t\t\tinputTimer = setTimeout(() => {\r\n\t\t\t\t\t\tthis.logEvent(\"fieldChange\", {\r\n\t\t\t\t\t\t\telement: target.tagName,\r\n\t\t\t\t\t\t\ttype: target.getAttribute(\"type\"),\r\n\t\t\t\t\t\t\tname: target.getAttribute(\"name\"),\r\n\t\t\t\t\t\t\tid: target.id,\r\n\t\t\t\t\t\t\tvalueLength: target.value?.length || 0,\r\n\t\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t\t}).catch((error) => console.warn(\"Failed to track field change:\", error));\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst sessionStartTime = Date.now();\r\n\t\twindow.addEventListener(\"beforeunload\", () => {\r\n\t\t\tconst sessionDuration = Date.now() - sessionStartTime;\r\n\r\n\t\t\tthis.logEvent(\"pageUnload\", {\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\tsessionDuration: sessionDuration,\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t});\r\n\r\n\t\t\t// if (this.ticketId) {\r\n\t\t\t// \tnavigator.sendBeacon(\r\n\t\t\t// \t\t`${this.baseUrl}/api/v1/et/close`,\r\n\t\t\t// \t\tJSON.stringify({\r\n\t\t\t// \t\t\tticketId: this.ticketId,\r\n\t\t\t// \t\t})\r\n\t\t\t// \t);\r\n\t\t\t// }\r\n\t\t});\r\n\r\n\t\tif (autoTrackConfig.visibility !== false) {\r\n\t\t\tdocument.addEventListener(\"visibilitychange\", () => {\r\n\t\t\t\tthis.logEvent(\"visibilityChange\", {\r\n\t\t\t\t\thidden: document.hidden,\r\n\t\t\t\t\tvisibilityState: document.visibilityState,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.errors !== false) {\r\n\t\t\twindow.addEventListener(\"error\", (event) => {\r\n\t\t\t\tthis.logEvent(\"jsError\", {\r\n\t\t\t\t\tmessage: event.message,\r\n\t\t\t\t\tfilename: event.filename,\r\n\t\t\t\t\tlineno: event.lineno,\r\n\t\t\t\t\tcolno: event.colno,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener(\"unhandledrejection\", (event) => {\r\n\t\t\t\tthis.logEvent(\"unhandledRejection\", {\r\n\t\t\t\t\treason: event.reason?.toString(),\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tautoTrackConfig.performance !== false &&\r\n\t\t\ttypeof window.performance !== \"undefined\" &&\r\n\t\t\twindow.performance.navigation\r\n\t\t) {\r\n\t\t\twindow.addEventListener(\"load\", () => {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst navigation = window.performance.navigation;\r\n\t\t\t\t\tconst timing = window.performance.timing;\r\n\r\n\t\t\t\t\tthis.logEvent(\"performanceMetrics\", {\r\n\t\t\t\t\t\tnavigationTime: timing.navigationStart,\r\n\t\t\t\t\t\tloadTime: timing.loadEventEnd - timing.navigationStart,\r\n\t\t\t\t\t\tdomReady: timing.domContentLoadedEventEnd - timing.navigationStart,\r\n\t\t\t\t\t\trenderTime: timing.loadEventEnd - timing.domContentLoadedEventEnd,\r\n\t\t\t\t\t\tnavigationType: navigation.type,\r\n\t\t\t\t\t\tredirectCount: navigation.redirectCount,\r\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 1000);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupNetworkDetection(): void {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\t// this.isOnline = navigator.onLine;\r\n\r\n\t\twindow.addEventListener(\"online\", () => {\r\n\t\t\t// this.isOnline = true;\r\n\t\t\tconsole.log(\"EventTracker: Back online, flushing queued events\");\r\n\t\t\t// this.flush();\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\"offline\", () => {\r\n\t\t\t// this.isOnline = false;\r\n\t\t\tconsole.log(\"EventTracker: Offline, queueing events\");\r\n\t\t});\r\n\t}\r\n\r\n\tprivate startPeriodicFlush(): void {\r\n\t\tif (this.flushTimer) {\r\n\t\t\tclearInterval(this.flushTimer);\r\n\t\t}\r\n\r\n\t\t// const interval = this.config?.flushInterval || 5000;\r\n\t\t// this.flushTimer = setInterval(() => {\r\n\t\t// \tthis.flush();\r\n\t\t// }, interval);\r\n\t}\r\n\r\n\t// private stopPeriodicFlush(): void {\r\n\t// \tif (this.flushTimer) {\r\n\t// \t\tclearInterval(this.flushTimer);\r\n\t// \t\tthis.flushTimer = null;\r\n\t// \t}\r\n\t// }\r\n}\r\n\r\nexport const eventTracker = new EventTrackerSDK();\r\n\r\nif (typeof window !== \"undefined\") {\r\n\t(window as any).EventTracker = eventTracker;\r\n}\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nexport interface LogoutPayload {\r\n\taction: string;\r\n\tuserId: string;\r\n}\r\n\r\nexport const useLogout = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleLogout = useCallback(async () => {\r\n\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\tconst payload: LogoutPayload = {\r\n\t\t\taction: \"LOGOUTUSER\",\r\n\t\t\tuserId: state.agentId || \"\",\r\n\t\t};\r\n\r\n\t\treturn axiosInstance\r\n\t\t\t.post(END_POINT.LOGOUT, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tsdkStateManager.clearStorageAndReset();\r\n\r\n\t\t\t\tlocalStorage.clear();\r\n\r\n\t\t\t\tsessionStorage.clear();\r\n\r\n\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\treturn res?.data;\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\tsetError(err);\r\n\r\n\t\t\t\treturn err?.response?.data;\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tlogout: handleLogout,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse, AxiosError, InternalAxiosRequestConfig } from \"axios\";\r\nimport { BASE_URL } from \"./endPoint\";\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\n\r\nconst DEFAULT_TOKEN = sdkStateManager.getSdkAuthToken() ?? \"\";\r\n\r\nconst REQUEST_TIMEOUT = 60000;\r\n\r\nfunction getAuthToken(): string {\r\n\treturn sdkStateManager.getSdkAuthToken() ?? \"\";\r\n}\r\n\r\nfunction createAxiosInstance(): AxiosInstance {\r\n\tconst instance = axios.create({\r\n\t\tbaseURL: BASE_URL,\r\n\t\theaders: {\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\tAccept: \"application/json\",\r\n\t\t\t\"x-tenant-id\": sdkStateManager.getCredentials()?.tenantId ?? \"\",\r\n\t\t\t\"x-api-key\": sdkStateManager.getCredentials()?.apiKey ?? \"\",\r\n\t\t\tAuthorization: `${DEFAULT_TOKEN}`,\r\n\t\t},\r\n\t\ttimeout: REQUEST_TIMEOUT,\r\n\t\twithCredentials: false,\r\n\t});\r\n\r\n\tinstance.interceptors.request.use(\r\n\t\t(config: InternalAxiosRequestConfig) => {\r\n\t\t\tconst token = getAuthToken();\r\n\r\n\t\t\tif (token && config.headers) {\r\n\t\t\t\tconfig.headers.Authorization = `${token}`;\r\n\t\t\t\t// config.headers[\"x-tenant-id\"] = sdkStateManager.getCredentials()?.tenantId ?? \"\";\r\n\t\t\t\t// config.headers[\"x-api-key\"] = sdkStateManager.getCredentials()?.apiKey ?? \"\";\r\n\t\t\t}\r\n\r\n\t\t\t(config as any).metadata = { startTime: new Date().getTime() };\r\n\r\n\t\t\treturn config;\r\n\t\t},\r\n\t\t(error: AxiosError) => {\r\n\t\t\tconsole.error(\"Request interceptor error:\", error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t);\r\n\r\n\tinstance.interceptors.response.use(\r\n\t\t(response: AxiosResponse) => {\r\n\t\t\tconst endTime = new Date().getTime();\r\n\t\t\tconst startTime = (response.config as any).metadata?.startTime;\r\n\t\t\tif (startTime) {\r\n\t\t\t\tconsole.log(`Request to ${response.config.url} took ${endTime - startTime}ms`);\r\n\t\t\t}\r\n\r\n\t\t\treturn response;\r\n\t\t},\r\n\t\tasync (error: AxiosError) => {\r\n\t\t\tconst originalRequest = error.config as InternalAxiosRequestConfig & { _retry?: boolean };\r\n\r\n\t\t\tif (error.response?.status === 401 && !originalRequest._retry) {\r\n\t\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\t\tconsole.warn(\"Unauthorized request, attempting retry...\");\r\n\t\t\t}\r\n\r\n\t\t\tif (!error.response) {\r\n\t\t\t\tconsole.error(\"Network error:\", error.message);\r\n\t\t\t\terror.message = \"Network error: Please check your internet connection\";\r\n\t\t\t}\r\n\r\n\t\t\tif (error.response && error.response.status >= 500) {\r\n\t\t\t\tconsole.error(\"Server error:\", error.response.status, error.response.data);\r\n\t\t\t\terror.message = \"Server error: Please try again later\";\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t);\r\n\r\n\treturn instance;\r\n}\r\n\r\nconst axiosInstance: AxiosInstance = createAxiosInstance();\r\n\r\nexport default axiosInstance;\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nexport interface EndCallPayload {\r\n\taction: string;\r\n\tdisposition: string;\r\n\tuserId: string;\r\n\tprocessid: string;\r\n\tmobile_number: string;\r\n\tset_followUp: string;\r\n\tcallback_date: string;\r\n\tcallback_hrs: string;\r\n\tcallback_mins: string;\r\n\trefno?: string;\r\n}\r\n\r\nexport const useEndCall = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleEndCall = useCallback(\r\n\t\tasync (data: {\r\n\t\t\tdisposition?: string;\r\n\t\t\tfollowUp?: string;\r\n\t\t\tcallbackDate?: string;\r\n\t\t\tcallbackHrs?: string;\r\n\t\t\tcallbackMins?: string;\r\n\t\t}) => {\r\n\t\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\t\tsetLoading(true);\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"ENDCALL\",\r\n\t\t\t\tuserId: state?.agentId,\r\n\t\t\t\tprocessid: state?.process?.process_id?.toString() ?? \"\",\r\n\t\t\t\tprocess_name: state?.process?.process_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state?.callData?.convox_id ?? \"\",\r\n\t\t\t\tmobile_number: state?.callData?.phone_number ?? \"\",\r\n\r\n\t\t\t\tdisposition: data?.disposition ?? \"RES\",\r\n\t\t\t\tset_followUp: data?.followUp ?? \"N\",\r\n\t\t\t\tcallback_date: data?.callbackDate ?? \"\",\r\n\t\t\t\tcallback_hrs: data?.callbackHrs ?? \"\",\r\n\t\t\t\tcallback_mins: data?.callbackMins ?? \"\",\r\n\t\t\t\tendcall_type: \"CLOSE\",\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.END_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsdkStateManager.endCall();\r\n\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[]\r\n\t);\r\n\r\n\treturn {\r\n\t\thandleEndCall,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport interface StartCallPayload {\r\n\tmobileNumber: string; // 📱 Phone number to call\r\n}\r\n\r\nexport const useClickToCall = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleStartCall = useCallback(async (data: StartCallPayload) => {\r\n\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\tif (state?.callData?.status === \"IDLE\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"CALL\",\r\n\t\t\t\tuserId: state?.agentId,\r\n\t\t\t\tphone_number: data?.mobileNumber,\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.CLICK_TO_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t} else if (state?.callData?.status === \"ONCALL\") {\r\n\t\t\tconst line_used = state?.conferenceLine\r\n\t\t\t\t?.filter((each: any) => each.line !== 1)\r\n\t\t\t\t?.find((each: any) => each.status === \"IDLE\" && !each?.isCallStart);\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\t\toperation: `CALL${line_used.line}`,\r\n\t\t\t\tline_used: String(line_used.line),\r\n\t\t\t\tthirdparty_no: data?.mobileNumber,\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\tsdkStateManager.setConferenceLine({\r\n\t\t\t\t\t\t...line_used,\r\n\t\t\t\t\t\tisCallStart: true,\r\n\t\t\t\t\t\tstatus: \"ONCALL\",\r\n\t\t\t\t\t\tphone: data?.mobileNumber,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsdkStateManager.setOpenConferenceDialog(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\talert(\"Agent is not ready\");\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\thandleStartCall,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\nimport type { CallData } from \"../../types\";\r\n\r\nexport const useGetCallerData = (): CallData => {\r\n\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\tsdkStateManager.getState().callData;\r\n\tconst initialCallData = {\r\n\t\tphone_number,\r\n\t\tstatus,\r\n\t\tcallReferenceId: convox_id,\r\n\t\tagent_id,\r\n\t\tprocess_id,\r\n\t\tprocess_name,\r\n\t};\r\n\tconst [callData, setCallData] = useState<CallData>(initialCallData);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\t\t\tsdkStateManager.getState().callData;\r\n\t\t\tconst currentCallData = {\r\n\t\t\t\tphone_number,\r\n\t\t\t\tstatus,\r\n\t\t\t\tcallReferenceId: convox_id,\r\n\t\t\t\tagent_id,\r\n\t\t\t\tprocess_id,\r\n\t\t\t\tprocess_name,\r\n\t\t\t};\r\n\t\t\tsetCallData(currentCallData);\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn callData;\r\n};\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport const useGetAuthorizationToken = () => {\r\n\tconst [token, setToken] = useState<string | undefined>(sdkStateManager.getSdkAuthToken());\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tsetToken(sdkStateManager.getSdkAuthToken());\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn token;\r\n};\r\n","import { memo, useCallback } from \"react\";\r\nimport type { CallControlPanelProps } from \"../../types\";\r\nimport { CallControls } from \"./callControls\";\r\nimport { SDKProvider } from \"./SDKProvider\";\r\n\r\nexport const CallControlPanel = memo<CallControlPanelProps>(({ onDataChange }) => {\r\n\tconst handleDataChange = useCallback(\r\n\t\t(data: any) => {\r\n\t\t\ttry {\r\n\t\t\t\tif (onDataChange && typeof onDataChange === \"function\") {\r\n\t\t\t\t\tonDataChange(data);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(\"Error in CallControlPanel data change handler:\", error);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[onDataChange]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<SDKProvider>\r\n\t\t\t<CallControls onDataChange={handleDataChange} />\r\n\t\t</SDKProvider>\r\n\t);\r\n});\r\n\r\nCallControlPanel.displayName = \"CallControlPanel\";\r\n","import {\r\n\tCallEnd,\r\n\tClose,\r\n\tDragIndicator,\r\n\tGroup,\r\n\tKeyboardArrowDown,\r\n\tLayers,\r\n\tMic,\r\n\tMicOff,\r\n\tPause,\r\n\tPending,\r\n\tPhone,\r\n\tPlayArrow,\r\n\tSupportAgent,\r\n\tTransferWithinAStation,\r\n\tUpcoming,\r\n\tWifiCalling3,\r\n} from \"@mui/icons-material\";\r\n\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tChip,\r\n\tCircularProgress,\r\n\tFade,\r\n\tIconButton,\r\n\tMenu,\r\n\tMenuItem,\r\n\tPaper,\r\n\tTextField,\r\n\tTooltip,\r\n\tTypography,\r\n\tuseTheme,\r\n} from \"@mui/material\";\r\n\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\n\r\nimport type { CallControlPanelProps, ConferenceLineTypes } from \"../../types\";\r\n\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\nimport { useDraggable } from \"../hooks/useDraggable\";\r\nimport { useSDKState } from \"../hooks/useSDKState\";\r\n\r\nimport { END_POINT, IP, WS_END_POINT } from \"../services/endPoint\";\r\nimport { usePostRequest } from \"../services/request\";\r\n\r\nimport {\r\n\tCallHistoryDialog,\r\n\tCallTransferDialog,\r\n\tConferenceDialog,\r\n\tEndCallDispositionDialog,\r\n\tProcessorListDialog,\r\n} from \"./dialog\";\r\n\r\nimport useStyles from \"./styles\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\nimport { useToast } from \"../services/toastMessage\";\r\n\r\nconst getCombineConfrenceData = (\r\n\tconferenceData: ConferenceLineTypes[],\r\n\tapiData: any,\r\n\tdata: any\r\n) => {\r\n\tconst updatedConferenceData = conferenceData.map((item) => {\r\n\t\tif (item?.line === 1) {\r\n\t\t\tconst statusKey = `line_${item.line}_status`;\r\n\t\t\t// return {\r\n\t\t\t// \t...item,\r\n\t\t\t// \tstatus: apiData[statusKey] ?? \"IDLE\",\r\n\t\t\t// \tphone: apiData[phoneKey] !== \"0\" ? apiData[phoneKey] : \"\",\r\n\t\t\t// };\r\n\t\t\treturn {\r\n\t\t\t\t...item,\r\n\t\t\t\tline: 1,\r\n\t\t\t\tstatus: apiData[statusKey] ?? data?.status,\r\n\t\t\t\tphone: data?.phone_number ?? \"\",\r\n\t\t\t\t// isMute: false,\r\n\t\t\t\t// isHold: false,\r\n\t\t\t\t// isMergeCall: false,\r\n\t\t\t\t// isCallStart: true,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tconst statusKey = `line_${item.line}_status`;\r\n\t\t\tconst phoneKey = `line_${item.line}_phonenumber`;\r\n\t\t\treturn {\r\n\t\t\t\t...item,\r\n\t\t\t\tstatus: apiData[statusKey] ?? \"IDLE\",\r\n\t\t\t\tphone: apiData[phoneKey] !== \"0\" ? apiData[phoneKey] : \"\",\r\n\t\t\t};\r\n\t\t}\r\n\t});\r\n\r\n\treturn updatedConferenceData;\r\n};\r\n\r\nconst formatDuration = (seconds: number): string => {\r\n\tconst mins = Math.floor(seconds / 60);\r\n\tconst secs = seconds % 60;\r\n\treturn `${mins.toString().padStart(2, \"0\")}:${secs.toString().padStart(2, \"0\")}`;\r\n};\r\n\r\nexport function CallControls({ onDataChange }: CallControlPanelProps) {\r\n\tconst theme = useTheme();\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\tconst { disabled, enabled, outlined } = useStyles({\r\n\t\tdisabled: state.sdkConfig?.disabled || {},\r\n\t\tenabled: state.sdkConfig?.enabled || {},\r\n\t\toutlined: state.sdkConfig?.outlined || {},\r\n\t});\r\n\r\n\tconst webSocketRef = useRef<WebSocket | null>(null);\r\n\tconst audioRef = useRef<HTMLAudioElement | null>(null);\r\n\tconst reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\tconst pingIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\tconst reconnectAttemptsRef = useRef<number>(0);\r\n\tconst maxReconnectAttempts = 60;\r\n\tconst baseReconnectDelay = 1000; // 1 second\r\n\tconst maxReconnectDelay = 30000; // 30 seconds\r\n\r\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [showIframe, setShowIframe] = useState<boolean>(true);\r\n\tconst [statusAnchorEl, setStatusAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [dialerAnchorEl, setDialerAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [openCallDisposition, setOpenCallDisposition] = useState(false);\r\n\tconst [openProcessorDialog, setOpenProcessorDialog] = useState(false);\r\n\tconst [openCallHistoryDialog, setOpenCallHistoryDialog] = useState(false);\r\n\tconst [processList, setProcessList] = useState(null);\r\n\tconst [phoneNumber, setPhoneNumber] = useState<string>(\"\");\r\n\tconst [callDuration, setCallDuration] = useState(0);\r\n\r\n\tconst { position, isDragging, dragRef, handleMouseDown, handleTouchStart } = useDraggable(\r\n\t\tstate.controlPanelPosition,\r\n\t\t(newPosition) => sdkStateManager.setControlPanelPosition(newPosition)\r\n\t);\r\n\r\n\tconst {\r\n\t\tposition: iframePosition,\r\n\t\tisDragging: iframeIsDragging,\r\n\t\tdragRef: iframeDragRef,\r\n\t\thandleMouseDown: iframeHandleMouseDown,\r\n\t\thandleTouchStart: iframeHandleTouchStart,\r\n\t} = useDraggable(state.iframePosition, (newPosition) =>\r\n\t\tsdkStateManager.setIframePosition(newPosition)\r\n\t);\r\n\r\n\tconst [clickToCall, { isLoading: clickToCallLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tphone_number: string;\r\n\t\tuserId: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsetPhoneNumber(\"\");\r\n\t\t\tsetDialerAnchorEl(null);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [holdOrUnHold, { isLoading: holdOrUnHoldLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tuserId: string;\r\n\t\trefno?: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setHolding(!state.isHolding);\r\n\t\t},\r\n\t\tonError: (error) => {\r\n\t\t\tconsole.log(\"❌ Hold operation error:\", error);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [muteOrUnMute, { isLoading: muteOrUnMuteLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tuserId: string;\r\n\t\trefno?: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setMuted(!state.isMuted);\r\n\t\t},\r\n\t\tonError: (error) => {\r\n\t\t\tconsole.log(\"❌ Mute operation error:\", error);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [readyAgentStatus, { isLoading: agentReadyLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\trefno?: string;\r\n\t\tuserId: string;\r\n\t}>();\r\n\r\n\tconst [updateAgentStatus, { isLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tbreak_type: string;\r\n\t\tuserId: string;\r\n\t}>();\r\n\r\n\tconst [endCall, { isLoading: endCallLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tdisposition: string;\r\n\t\tuserId: string;\r\n\t\tprocessid: string;\r\n\t\tmobile_number: string;\r\n\t\tset_followUp: string;\r\n\t\tcallback_date: string;\r\n\t\tcallback_hrs: string;\r\n\t\tcallback_mins: string;\r\n\t\trefno?: string;\r\n\t}>();\r\n\r\n\tconst handleCloseQueueCounts = () => {\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleOpenDialer = (event: React.MouseEvent<HTMLElement>) => {\r\n\t\tsetShowIframe(true);\r\n\t\tsetDialerAnchorEl(event.currentTarget);\r\n\t\tsdkStateManager.setStatus(\"dial\");\r\n\t};\r\n\r\n\tconst handleCloseDialer = () => {\r\n\t\tif (state.status !== \"on call\") {\r\n\t\t\tsdkStateManager.setStatus(\"idle\");\r\n\t\t}\r\n\r\n\t\tsetDialerAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleOpenAgentStatus = (event: React.MouseEvent<HTMLElement>) => {\r\n\t\tsetStatusAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleCloseAgentStatus = () => {\r\n\t\tsetStatusAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleAgentReady = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: \"READYAGENT\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\r\n\t\treadyAgentStatus(END_POINT.READY_AGENT, payload);\r\n\t};\r\n\r\n\tconst handleUpdateAgentStatus = (status: string) => {\r\n\t\tsetStatusAnchorEl(null);\r\n\t\tconst payload = {\r\n\t\t\taction: \"AGENTBREAK\",\r\n\t\t\tbreak_type: status,\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\t\tupdateAgentStatus(END_POINT.UPDATE_AGENT_BREAK, payload);\r\n\t};\r\n\r\n\tconst handleStartCall = (number: string) => {\r\n\t\tif (number.length !== 10) {\r\n\t\t\tshowToast(\"Invalid phone number\", \"error\");\r\n\t\t} else if (!/^\\d+$/.test(number)) {\r\n\t\t\tshowToast(\"Invalid phone number\", \"error\");\r\n\t\t} else {\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"CALL\",\r\n\t\t\t\tphone_number: number,\r\n\t\t\t\tuserId: state.agentId,\r\n\t\t\t};\r\n\r\n\t\t\tclickToCall(END_POINT.CLICK_TO_CALL, payload);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleHoldToggle = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: state.isHolding ? \"UNHOLD\" : \"HOLD\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\t\tholdOrUnHold(END_POINT.HOLD_CALL, payload);\r\n\t};\r\n\r\n\tconst handleMuteToggle = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: state.isMuted ? \"UNMUTE\" : \"MUTE\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\r\n\t\tmuteOrUnMute(END_POINT.MUTE_CALL, payload);\r\n\t};\r\n\r\n\tconst handleEndCall = (data: {\r\n\t\tdisposition: { label: string; value: string };\r\n\t\tfollowUp: { label: string; value: string };\r\n\t\tcallbackDate: string;\r\n\t\tcallbackHrs: string;\r\n\t\tcallbackMins: string;\r\n\t}) => {\r\n\t\tconst payload = {\r\n\t\t\taction: \"ENDCALL\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t\tprocessid: state.process?.process_id?.toString() ?? \"\",\r\n\t\t\tprocess_name: state.process?.process_name ?? \"\",\r\n\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\r\n\t\t\tdisposition: data?.disposition?.value ?? \"\",\r\n\t\t\tset_followUp: data?.followUp?.value ?? \"\",\r\n\t\t\tcallback_date: data?.callbackDate ?? \"\",\r\n\t\t\tcallback_hrs: data?.callbackHrs ?? \"\",\r\n\t\t\tcallback_mins: data?.callbackMins ?? \"\",\r\n\t\t\tendcall_type: \"CLOSE\",\r\n\t\t};\r\n\t\tsetPhoneNumber(\"\");\r\n\t\tendCall(END_POINT.END_CALL, payload);\r\n\t\tsdkStateManager.endCall();\r\n\t\tsetOpenCallDisposition(false);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handleBeforeUnload = (e: BeforeUnloadEvent) => {\r\n\t\t\te.preventDefault();\r\n\t\t};\r\n\r\n\t\twindow.addEventListener(\"beforeunload\", handleBeforeUnload);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"beforeunload\", handleBeforeUnload);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet interval: ReturnType<typeof setInterval>;\r\n\r\n\t\tif (state.callData.status && state.callData.status === \"ONCALL\") {\r\n\t\t\tinterval = setInterval(() => {\r\n\t\t\t\tconst elapsed = Math.floor((Date.now() - state.callStartTime!) / 1000);\r\n\t\t\t\tsetCallDuration(elapsed);\r\n\t\t\t}, 1000);\r\n\t\t} else {\r\n\t\t\tsetCallDuration(0);\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tif (interval) clearInterval(interval);\r\n\t\t};\r\n\t}, [state.callData.status]);\r\n\r\n\tuseEffect(() => {\r\n\t\taudioRef.current = new Audio(\"../ringtones/incoming.mp3\");\r\n\t\taudioRef.current.loop = true;\r\n\t\taudioRef.current.volume = 0.7;\r\n\r\n\t\treturn () => {\r\n\t\t\tif (audioRef.current) {\r\n\t\t\t\taudioRef.current.pause();\r\n\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\taudioRef.current = null;\r\n\t\t\t}\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onDataChange && state.callData) {\r\n\t\t\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\t\t\tstate.callData;\r\n\t\t\tconst callData = {\r\n\t\t\t\tphone_number,\r\n\t\t\t\tstatus,\r\n\t\t\t\tcallReferenceId: convox_id,\r\n\t\t\t\tagent_id,\r\n\t\t\t\tprocess_id,\r\n\t\t\t\tprocess_name,\r\n\t\t\t};\r\n\t\t\tonDataChange(callData);\r\n\t\t}\r\n\t}, [state.callData, onDataChange]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (state.agentId) {\r\n\t\t\taxiosInstance\r\n\t\t\t\t.post(END_POINT.PROCESS_LIST, {\r\n\t\t\t\t\tuserId: state.agentId,\r\n\t\t\t\t\taction: \"GETAGENTPROCESSLIST\",\r\n\t\t\t\t\trefno: \"1234221233\",\r\n\t\t\t\t})\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res && res.data && res?.data?.length > 1) {\r\n\t\t\t\t\t\tsetProcessList(res.data.data);\r\n\t\t\t\t\t\tsetOpenProcessorDialog(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsdkStateManager.setProcess(res?.data?.data[0]);\r\n\t\t\t\t\t\tsetOpenProcessorDialog(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tshowToast(err.response.data.message, \"error\");\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tconsole.log(\"No agentId available, skipping API call\");\r\n\t\t}\r\n\t}, [state.agentId]);\r\n\r\n\tconst connectWebSocket = () => {\r\n\t\tif (!state.agentId) {\r\n\t\t\tconsole.log(\"No agentId available, cannot connect WebSocket\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clear any existing reconnection timeout\r\n\t\tif (reconnectTimeoutRef.current) {\r\n\t\t\tclearTimeout(reconnectTimeoutRef.current);\r\n\t\t\treconnectTimeoutRef.current = null;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\twebSocketRef.current = new WebSocket(`${WS_END_POINT.WS}?agent_id=${state.agentId}`);\r\n\r\n\t\t\twebSocketRef.current.onopen = () => {\r\n\t\t\t\tconsole.log(\"🌐 WebSocket connection established\");\r\n\t\t\t\t// Reset reconnect attempts on successful connection\r\n\t\t\t\treconnectAttemptsRef.current = 0;\r\n\r\n\t\t\t\t// Start ping interval to keep connection alive (every 30 seconds)\r\n\t\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\t}\r\n\t\t\t\tpingIntervalRef.current = setInterval(() => {\r\n\t\t\t\t\tif (webSocketRef.current && webSocketRef.current.readyState === WebSocket.OPEN) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t// Send ping message\r\n\t\t\t\t\t\t\twebSocketRef.current.send(JSON.stringify({ type: \"ping\" }));\r\n\t\t\t\t\t\t\tconsole.log(\"📡 WebSocket ping sent\");\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tconsole.error(\"Failed to send ping:\", error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 30000); // Ping every 30 seconds\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onmessage = (event) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst data = JSON.parse(event.data);\r\n\r\n\t\t\t\t\t// Handle pong response\r\n\t\t\t\t\tif (data.type === \"pong\") {\r\n\t\t\t\t\t\tconsole.log(\"📡 WebSocket pong received\");\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst confrence = getCombineConfrenceData(\r\n\t\t\t\t\t\tstate?.conferenceLine,\r\n\t\t\t\t\t\tdata?.conferencestatus,\r\n\t\t\t\t\t\tdata\r\n\t\t\t\t\t);\r\n\t\t\t\t\t/* use it for debugging */\r\n\t\t\t\t\t// console.log(confrence, \"📊 Parsed JSON:\", data);\r\n\r\n\t\t\t\t\tsdkStateManager.updateCallData(data);\r\n\r\n\t\t\t\t\tsdkStateManager.updateConferenceData([...confrence]);\r\n\r\n\t\t\t\t\tif (data.status === \"RINGING\" || data.status === \"DIALING\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.play().catch((error) => {\r\n\t\t\t\t\t\t\t\tconsole.error(\"Failed to play ringtone:\", error);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (data.status === \"ONCALL\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.pause();\r\n\t\t\t\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsdkStateManager.startCall();\r\n\t\t\t\t\t\tif (!showIframe) {\r\n\t\t\t\t\t\t\tsetShowIframe(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (data.status === \"WRAPUP\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.pause();\r\n\t\t\t\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsdkStateManager.endCall();\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tconsole.log(\"📨 Raw message:\", event.data);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onclose = (event) => {\r\n\t\t\t\tconsole.log(\"🔌 WebSocket connection closed\", event.code, event.reason);\r\n\r\n\t\t\t\t// Clear ping interval\r\n\t\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\t\tpingIntervalRef.current = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Only reconnect if it wasn't a manual close (code 1000) and we haven't exceeded max attempts\r\n\t\t\t\tif (event.code !== 1000 && reconnectAttemptsRef.current < maxReconnectAttempts) {\r\n\t\t\t\t\treconnectAttemptsRef.current += 1;\r\n\r\n\t\t\t\t\t// Calculate exponential backoff delay\r\n\t\t\t\t\tconst delay = Math.min(\r\n\t\t\t\t\t\tbaseReconnectDelay * Math.pow(2, reconnectAttemptsRef.current - 1),\r\n\t\t\t\t\t\tmaxReconnectDelay\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconsole.log(\r\n\t\t\t\t\t\t`🔄 Attempting to reconnect WebSocket (attempt ${reconnectAttemptsRef.current}/${maxReconnectAttempts}) in ${delay}ms`\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\treconnectTimeoutRef.current = setTimeout(() => {\r\n\t\t\t\t\t\tconnectWebSocket();\r\n\t\t\t\t\t}, delay);\r\n\t\t\t\t} else if (reconnectAttemptsRef.current >= maxReconnectAttempts) {\r\n\t\t\t\t\tconsole.error(\"❌ Maximum reconnection attempts reached. Please refresh the page.\");\r\n\t\t\t\t\tshowToast(\"WebSocket connection failed. Please refresh the page.\", \"error\");\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onerror = (error) => {\r\n\t\t\t\tconsole.error(\"❌ WebSocket error:\", error);\r\n\t\t\t\t// The onclose handler will handle reconnection\r\n\t\t\t};\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"❌ Failed to create WebSocket:\", error);\r\n\t\t\t// Attempt reconnection\r\n\t\t\tif (reconnectAttemptsRef.current < maxReconnectAttempts) {\r\n\t\t\t\treconnectAttemptsRef.current += 1;\r\n\t\t\t\tconst delay = Math.min(\r\n\t\t\t\t\tbaseReconnectDelay * Math.pow(2, reconnectAttemptsRef.current - 1),\r\n\t\t\t\t\tmaxReconnectDelay\r\n\t\t\t\t);\r\n\t\t\t\treconnectTimeoutRef.current = setTimeout(() => {\r\n\t\t\t\t\tconnectWebSocket();\r\n\t\t\t\t}, delay);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (state.agentId) {\r\n\t\t\tconnectWebSocket();\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\t// Cleanup: close WebSocket and clear intervals/timeouts\r\n\t\t\tif (reconnectTimeoutRef.current) {\r\n\t\t\t\tclearTimeout(reconnectTimeoutRef.current);\r\n\t\t\t\treconnectTimeoutRef.current = null;\r\n\t\t\t}\r\n\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\tpingIntervalRef.current = null;\r\n\t\t\t}\r\n\t\t\tif (webSocketRef.current) {\r\n\t\t\t\t// Close with code 1000 (normal closure) to prevent reconnection\r\n\t\t\t\twebSocketRef.current.close(1000, \"Component unmounting\");\r\n\t\t\t\twebSocketRef.current = null;\r\n\t\t\t}\r\n\t\t\treconnectAttemptsRef.current = 0;\r\n\t\t};\r\n\t}, [state.agentId]);\r\n\r\n\tif (!state.isInitialized || !state.process) {\r\n\t\treturn (\r\n\t\t\t<Box>\r\n\t\t\t\t{Boolean(openProcessorDialog) && (\r\n\t\t\t\t\t<ProcessorListDialog\r\n\t\t\t\t\t\tprocessList={processList}\r\n\t\t\t\t\t\topen={openProcessorDialog}\r\n\t\t\t\t\t\tsetOpen={setOpenProcessorDialog}\r\n\t\t\t\t\t\thandleSelectedProcessor={(data: { process_id: number; process_name: string }) => {\r\n\t\t\t\t\t\t\tsdkStateManager.setProcess(data);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Box>\r\n\t\t\t\t<Fade\r\n\t\t\t\t\tin={true}\r\n\t\t\t\t\ttimeout={300}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Paper\r\n\t\t\t\t\t\tref={state.sdkConfig?.isDraggable ? dragRef : null}\r\n\t\t\t\t\t\televation={\r\n\t\t\t\t\t\t\tisDragging ? 4\r\n\t\t\t\t\t\t\t: state.sdkConfig?.isDraggable ?\r\n\t\t\t\t\t\t\t\t1\r\n\t\t\t\t\t\t\t:\t0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tposition: state.sdkConfig?.isDraggable ? \"fixed\" : \"relative\",\r\n\t\t\t\t\t\t\tleft: state.sdkConfig?.isDraggable ? position.x : \"auto\",\r\n\t\t\t\t\t\t\ttop: state.sdkConfig?.isDraggable ? position.y : \"auto\",\r\n\t\t\t\t\t\t\tdisplay: \"inline-block\",\r\n\t\t\t\t\t\t\twidth: \"auto\",\r\n\t\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\tp: 0.5,\r\n\t\t\t\t\t\t\tborderRadius: 3,\r\n\t\t\t\t\t\t\tbgcolor: \"background.paper\",\r\n\t\t\t\t\t\t\tzIndex: state.sdkConfig?.isDraggable ? Number.MAX_SAFE_INTEGER : 0,\r\n\t\t\t\t\t\t\ttransition: theme.transitions.create([\"box-shadow\", \"transform\"], {\r\n\t\t\t\t\t\t\t\tduration: theme.transitions.duration.short,\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tuserSelect: \"none\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\tmargin: \"0px 10px\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{state.sdkConfig?.isDraggable && (\r\n\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: \"all-scroll\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tonMouseDown={handleMouseDown}\r\n\t\t\t\t\t\t\t\t\t\tonTouchStart={handleTouchStart}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<DragIndicator />{\" \"}\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t{!state.sdkConfig?.disabledDialButton && (\r\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Dial\">\r\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"ONCALL\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"BREAK\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"RINGING\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOpenDialer(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"warning\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<WifiCalling3\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"action.selected\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:\t\"success.main\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"success.main\",\r\n\t\t\t\t\t\t\t\t\t\twidth: \"40px\",\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\tfontSize: \"18px\",\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{formatDuration(callDuration)}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t<Chip\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tpadding: \"18px 0px\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\tisLoading || agentReadyLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size=\"20px\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{state.callData?.status?.toUpperCase() ?? \"N/A\"}\r\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tonClick={handleOpenAgentStatus}\r\n\t\t\t\t\t\t\t\t\tdeleteIcon={<KeyboardArrowDown color=\"primary\" />}\r\n\t\t\t\t\t\t\t\t\tonDelete={handleOpenAgentStatus}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<Tooltip title={\"Agent Ready\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleAgentReady();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tclasses={{\r\n\t\t\t\t\t\t\t\t\t\t\troot:\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t\"enabled\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t...((\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\toutlined\r\n\t\t\t\t\t\t\t\t\t\t\t:\tenabled),\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={agentReadyLoading}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SupportAgent />\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t<Tooltip title={state.isHolding ? \"Resume\" : \"Hold\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isHolding && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\thandleHoldToggle();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isHolding && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" && !state.isHolding) ||\r\n\t\t\t\t\t\t\t\t\t\t\tholdOrUnHoldLoading\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{holdOrUnHoldLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t: state.isHolding ?\r\n\t\t\t\t\t\t\t\t\t\t\t<PlayArrow />\r\n\t\t\t\t\t\t\t\t\t\t:\t<Pause />}\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t<Tooltip title={state.isMuted ? \"Unmute\" : \"Mute\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isMuted && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\thandleMuteToggle();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isMuted && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" && !state.isMuted) ||\r\n\t\t\t\t\t\t\t\t\t\t\tmuteOrUnMuteLoading\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{muteOrUnMuteLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t: state.isMuted ?\r\n\t\t\t\t\t\t\t\t\t\t\t<MicOff />\r\n\t\t\t\t\t\t\t\t\t\t:\t<Mic />}\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableCallTransferButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"Transfer Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={state.openCallTransferDialog ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (state.callData?.status?.toUpperCase() === \"ONCALL\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsdkStateManager.setOpenCallTransferDialog(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.openCallTransferDialog ? { ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={state.callData?.status?.toUpperCase() !== \"ONCALL\"}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<TransferWithinAStation />\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableConferenceButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"Conference Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={state.openConferenceDialog ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (state.callData?.status?.toUpperCase() === \"ONCALL\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsdkStateManager.setOpenConferenceDialog(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.openConferenceDialog ? { ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={state.callData?.status?.toUpperCase() !== \"ONCALL\"}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Group />\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableEndCallButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"End Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenCallDisposition(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRight: \"1px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"error.main\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tminWidth: \"60px !important\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \" 0px 2px 1px #5f3f3f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: `1px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"40px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \" 0px 2px 1px #5f3f3f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...disabled,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tminWidth: \"60px !important\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"RINGING\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"WRAPUP\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tendCallLoading\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{endCallLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Paper>\r\n\t\t\t\t</Fade>\r\n\t\t\t</Box>\r\n\t\t\t<Fade\r\n\t\t\t\tin={true}\r\n\t\t\t\ttimeout={300}\r\n\t\t\t>\r\n\t\t\t\t<Paper\r\n\t\t\t\t\tref={iframeDragRef}\r\n\t\t\t\t\televation={iframeIsDragging ? 4 : 1}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\t\tleft: iframePosition.x,\r\n\t\t\t\t\t\ttop: iframePosition.y,\r\n\t\t\t\t\t\tborderRadius: 2,\r\n\t\t\t\t\t\tbgcolor: \"background.paper\",\r\n\t\t\t\t\t\tzIndex: Number.MAX_SAFE_INTEGER,\r\n\t\t\t\t\t\ttransition: theme.transitions.create([\"box-shadow\", \"transform\"], {\r\n\t\t\t\t\t\t\tduration: theme.transitions.duration.short,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tvisibility: showIframe && !state.sdkConfig?.disableSoftPhone ? \"visible\" : \"hidden\",\r\n\t\t\t\t\t\tuserSelect: \"none\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\tcursor: \"all-scroll\",\r\n\t\t\t\t\t\t\tpadding: \"0px 10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonMouseDown={iframeHandleMouseDown}\r\n\t\t\t\t\t\tonTouchStart={iframeHandleTouchStart}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<DragIndicator\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\ttransform: \"rotate(90deg)\",\r\n\t\t\t\t\t\t\t\tcolor: \"#7b7b7b\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>{\" \"}\r\n\t\t\t\t\t\t<IconButton onClick={() => setShowIframe(false)}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<iframe\r\n\t\t\t\t\t\t\tsrc={`https://${IP}/ConVoxCCS/iframe?agent_id=${state.agentId}&process_id=${state.process?.process_id}`}\r\n\t\t\t\t\t\t\theight={380}\r\n\t\t\t\t\t\t\twidth={420}\r\n\t\t\t\t\t\t\tallow=\"camera; microphone; autoplay\"\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t></iframe>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Fade>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={dialerAnchorEl}\r\n\t\t\t\topen={Boolean(dialerAnchorEl)}\r\n\t\t\t\tonClose={handleCloseDialer}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tall: \"unset\",\r\n\t\t\t\t\t\tpadding: \"10px\",\r\n\t\t\t\t\t\t\"&hover\": {\r\n\t\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<TextField\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tvalue={phoneNumber}\r\n\t\t\t\t\t\tplaceholder=\"Enter Mobile No.\"\r\n\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\tsetPhoneNumber(e.target.value);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\tcolor=\"info\"\r\n\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\thandleStartCall(phoneNumber);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{clickToCallLoading ?\r\n\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tcolor: theme.palette.success.main,\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t:\t<Phone color=\"success\" />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={statusAnchorEl}\r\n\t\t\t\topen={Boolean(statusAnchorEl)}\r\n\t\t\t\tonClose={handleCloseAgentStatus}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<MenuItem onClick={() => handleUpdateAgentStatus(\"Lunch\")}>- Break</MenuItem>\r\n\t\t\t\t{/* <MenuItem onClick={() => handleUpdateAgentStatus(\"Tea\")}>- Tea</MenuItem> */}\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\topen={Boolean(anchorEl)}\r\n\t\t\t\tonClose={handleCloseQueueCounts}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\tjustifyContent: \"flex-start\",\r\n\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\tpadding: \"0px 10px\",\r\n\t\t\t\t\t\t\"&hover\": {\r\n\t\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Layers color=\"secondary\" />}\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tlabel=\"Waiting - 25\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Pending color=\"info\" />}\r\n\t\t\t\t\t\tlabel=\"Pending - 99+\"\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Upcoming color=\"success\" />}\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tlabel=\"Upcoming - 66\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</Box>\r\n\t\t\t</Menu>\r\n\r\n\t\t\t{Boolean(state.openConferenceDialog) && <ConferenceDialog />}\r\n\r\n\t\t\t{Boolean(state.openCallTransferDialog) && (\r\n\t\t\t\t<CallTransferDialog open={state.openCallTransferDialog} />\r\n\t\t\t)}\r\n\r\n\t\t\t{Boolean(openCallDisposition) && (\r\n\t\t\t\t<EndCallDispositionDialog\r\n\t\t\t\t\topen={openCallDisposition}\r\n\t\t\t\t\tsetOpen={setOpenCallDisposition}\r\n\t\t\t\t\tonSubmitDisposition={handleEndCall}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\r\n\t\t\t{Boolean(openCallHistoryDialog) && (\r\n\t\t\t\t<CallHistoryDialog\r\n\t\t\t\t\topen={openCallHistoryDialog}\r\n\t\t\t\t\tsetOpen={setOpenCallHistoryDialog}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { type MouseEvent, type TouchEvent, useCallback, useRef, useState } from \"react\";\r\n\r\ninterface Position {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\ninterface UseDraggableReturn {\r\n\tposition: Position;\r\n\tisDragging: boolean;\r\n\tdragRef: any;\r\n\thandleMouseDown: (_e: MouseEvent<HTMLDivElement>) => void;\r\n\thandleTouchStart: (_e: TouchEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport function useDraggable(\r\n\tinitialPosition: Position,\r\n\tonPositionChange?: (_position: Position) => void\r\n): UseDraggableReturn {\r\n\tconst [position, setPosition] = useState<Position>(initialPosition);\r\n\r\n\tconst [isDragging, setIsDragging] = useState(false);\r\n\r\n\tconst dragRef = useRef<HTMLDivElement>();\r\n\r\n\tconst dragStart = useRef<Position>({ x: 0, y: 0 });\r\n\r\n\tconst elementStart = useRef<Position>({ x: 0, y: 0 });\r\n\r\n\tconst updatePosition = useCallback(\r\n\t\t(newPosition: Position) => {\r\n\t\t\tconst element = dragRef.current;\r\n\t\t\tif (!element) return;\r\n\r\n\t\t\tconst rect = element.getBoundingClientRect();\r\n\t\t\tconst viewportWidth = window.innerWidth;\r\n\t\t\tconst viewportHeight = window.innerHeight;\r\n\r\n\t\t\tconst constrainedPosition = {\r\n\t\t\t\tx: Math.max(0, Math.min(newPosition.x, viewportWidth - rect.width)),\r\n\t\t\t\ty: Math.max(0, Math.min(newPosition.y, viewportHeight - rect.height)),\r\n\t\t\t};\r\n\r\n\t\t\tsetPosition(constrainedPosition);\r\n\t\t\tonPositionChange?.(constrainedPosition);\r\n\t\t},\r\n\t\t[onPositionChange]\r\n\t);\r\n\r\n\tconst handleStart = useCallback(\r\n\t\t(clientX: number, clientY: number) => {\r\n\t\t\tsetIsDragging(true);\r\n\t\t\tdragStart.current = { x: clientX, y: clientY };\r\n\t\t\telementStart.current = position;\r\n\r\n\t\t\tconst handleMove = (moveClientX: number, moveClientY: number) => {\r\n\t\t\t\tconst deltaX = moveClientX - dragStart.current.x;\r\n\t\t\t\tconst deltaY = moveClientY - dragStart.current.y;\r\n\r\n\t\t\t\tupdatePosition({\r\n\t\t\t\t\tx: elementStart.current.x + deltaX,\r\n\t\t\t\t\ty: elementStart.current.y + deltaY,\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tconst handleMouseMove = (e: globalThis.MouseEvent) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\thandleMove(e.clientX, e.clientY);\r\n\t\t\t};\r\n\r\n\t\t\tconst handleTouchMove = (e: globalThis.TouchEvent) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst touch = e.touches[0];\r\n\t\t\t\tif (touch) {\r\n\t\t\t\t\thandleMove(touch.clientX, touch.clientY);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst handleEnd = () => {\r\n\t\t\t\tsetIsDragging(false);\r\n\t\t\t\tdocument.removeEventListener(\"mousemove\", handleMouseMove);\r\n\t\t\t\tdocument.removeEventListener(\"mouseup\", handleEnd);\r\n\t\t\t\tdocument.removeEventListener(\"touchmove\", handleTouchMove);\r\n\t\t\t\tdocument.removeEventListener(\"touchend\", handleEnd);\r\n\t\t\t};\r\n\r\n\t\t\tdocument.addEventListener(\"mousemove\", handleMouseMove);\r\n\t\t\tdocument.addEventListener(\"mouseup\", handleEnd);\r\n\t\t\tdocument.addEventListener(\"touchmove\", handleTouchMove, {\r\n\t\t\t\tpassive: false,\r\n\t\t\t});\r\n\t\t\tdocument.addEventListener(\"touchend\", handleEnd);\r\n\t\t},\r\n\t\t[position, updatePosition]\r\n\t);\r\n\r\n\tconst handleMouseDown = useCallback(\r\n\t\t(e: MouseEvent<HTMLDivElement>) => {\r\n\t\t\te.preventDefault();\r\n\t\t\thandleStart(e.clientX, e.clientY);\r\n\t\t},\r\n\t\t[handleStart]\r\n\t);\r\n\r\n\tconst handleTouchStart = useCallback(\r\n\t\t(e: TouchEvent<HTMLDivElement>) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tconst touch = e.touches[0];\r\n\t\t\tif (touch) {\r\n\t\t\t\thandleStart(touch.clientX, touch.clientY);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[handleStart]\r\n\t);\r\n\r\n\treturn {\r\n\t\tposition,\r\n\t\tisDragging,\r\n\t\tdragRef,\r\n\t\thandleMouseDown,\r\n\t\thandleTouchStart,\r\n\t};\r\n}\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\nimport type { SDKState } from \"../../types\";\r\n\r\nexport function useSDKState(): SDKState {\r\n\tconst [state, setState] = useState<SDKState>(sdkStateManager.getState());\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tsetState(sdkStateManager.getState());\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn state;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { type AxiosRequestConfig } from \"axios\";\r\nimport { useCallback, useReducer } from \"react\";\r\n\r\nimport axiosInstance from \"./axios\";\r\nimport { useToast } from \"./toastMessage\";\r\nimport {\r\n\tRequestResult,\r\n\tUseGetRequest,\r\n\tRequestOptions,\r\n\tUsePostRequest,\r\n\tUsePutRequest,\r\n\tUseDeleteRequest,\r\n\tUsePatchRequest,\r\n} from \"../../types\";\r\n\r\nconst initialState = {\r\n\tisLoading: false,\r\n\tisSuccess: false,\r\n\tisError: false,\r\n\terror: null,\r\n\tdata: null,\r\n};\r\n\r\nconst reducer = (state: typeof initialState, action: { type: string; payload: any }) => {\r\n\tif (action.type === \"isLoading\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisLoading: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"isSuccess\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisSuccess: true,\r\n\t\t\tdata: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"isError\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisError: true,\r\n\t\t\terror: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"reset\") {\r\n\t\treturn {\r\n\t\t\tisLoading: false,\r\n\t\t\tisSuccess: false,\r\n\t\t\tisError: false,\r\n\t\t\terror: null,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\tthrow Error(\"Unknown action.\");\r\n};\r\n\r\nexport const useGetRequest = <T = UseGetRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst getRequest = useCallback(\r\n\t\t(url: string, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.get(url, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, config);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, config);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, config);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [getRequest, state];\r\n};\r\n\r\nexport const usePostRequest = <T = UsePostRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null, disabledSuccessToast = false } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst postRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.post(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\tif (!disabledSuccessToast) {\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [postRequest, state];\r\n};\r\n\r\nexport const usePutRequest = <T = UsePutRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst putRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.put(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, payload);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [putRequest, state];\r\n};\r\n\r\nexport const useDeleteRequest = <T = UseDeleteRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst deleteRequest = useCallback(\r\n\t\t(url: string, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.delete(url, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, config);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, config);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, config);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [deleteRequest, state];\r\n};\r\n\r\nexport const usePatchRequest = <T = UsePatchRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst patchRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.patch(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, payload);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [patchRequest, state];\r\n};\r\n","import { createContext, useContext, useState, ReactNode } from \"react\";\r\nimport { Snackbar, Alert, AlertColor } from \"@mui/material\";\r\n\r\ntype ToastContextType = {\r\n\tshowToast: (message: string, severity?: AlertColor) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nexport const useToast = () => {\r\n\tconst ctx = useContext(ToastContext);\r\n\tif (!ctx) throw new Error(\"useToast must be used inside ToastProvider\");\r\n\treturn ctx;\r\n};\r\n\r\nexport const ToastProvider = ({ children }: { children: ReactNode }) => {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [message, setMessage] = useState(\"\");\r\n\tconst [severity, setSeverity] = useState<AlertColor>(\"info\");\r\n\r\n\tconst showToast = (msg: string, sev: AlertColor = \"info\") => {\r\n\t\tsetMessage(msg);\r\n\t\tsetSeverity(sev);\r\n\t\tsetOpen(true);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ToastContext.Provider value={{ showToast }}>\r\n\t\t\t{children}\r\n\t\t\t<Snackbar\r\n\t\t\t\topen={open}\r\n\t\t\t\tcolor={severity}\r\n\t\t\t\tautoHideDuration={3000}\r\n\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\tanchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n\t\t\t>\r\n\t\t\t\t<Alert\r\n\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\tseverity={severity}\r\n\t\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\t\tsx={{ width: \"100%\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{message}\r\n\t\t\t\t</Alert>\r\n\t\t\t</Snackbar>\r\n\t\t</ToastContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tCall,\r\n\tCallEnd,\r\n\tCallSplit,\r\n\tClose,\r\n\tMic,\r\n\tMicOff,\r\n\tPause,\r\n\tPhoneDisabled,\r\n\tPlayArrow,\r\n\tSupportAgent,\r\n} from \"@mui/icons-material\";\r\n\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tDialog,\r\n\tIconButton,\r\n\tPaper,\r\n\tTextField,\r\n\tTypography,\r\n\tAutocomplete,\r\n\tTooltip,\r\n\tuseTheme,\r\n\tTableContainer,\r\n\tTable,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTableCell,\r\n\tTableBody,\r\n\tCircularProgress,\r\n} from \"@mui/material\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { useSDKState } from \"../hooks/useSDKState\";\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\n\r\nimport { usePostRequest } from \"../services/request\";\r\nimport { END_POINT } from \"../services/endPoint\";\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nimport type { ConferenceLineTypes } from \"../../types\";\r\n\r\nimport { useToast } from \"../services/toastMessage\";\r\n\r\nimport useStyles from \"./styles\";\r\n\r\ntype TransferCallRequest = {\r\n\tmobile_number?: string;\r\n\tuserid?: string;\r\n\ttype?: string;\r\n\ttransfer_to?: string;\r\n\tcallreferenceid?: string;\r\n\tprocessid?: string;\r\n\tprocess_name?: string;\r\n};\r\n\r\nconst ConferenceTableRow = ({ each, isMergeCall }: any) => {\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\tconst { disabled, enabled, outlined } = useStyles({\r\n\t\tdisabled: state.sdkConfig?.disabled || {},\r\n\t\tenabled: state.sdkConfig?.enabled || {},\r\n\t\toutlined: state.sdkConfig?.outlined || {},\r\n\t});\r\n\tconst theme = useTheme();\r\n\r\n\tconst [conferenceCallStart, setConferenceCallStart] = useState(false);\r\n\tconst [conferenceCallMerge, setConferenceCallMerge] = useState(false);\r\n\tconst [conferenceCallHoldOrUnHold, setConferenceCallHoldOrUnHold] = useState(false);\r\n\tconst [conferenceCallMuteOrUnMute, setConferenceCallMuteOrUnMute] = useState(false);\r\n\tconst [conferenceCallEnd, setConferenceCallEnd] = useState(false);\r\n\r\n\tconst onConferenceLineUpdate = (line: ConferenceLineTypes, data: any) => {\r\n\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t};\r\n\r\n\tconst onConferenceCallStart = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallStart(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: `CALL${line_used.line}`,\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallStart(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onMergeConferenceCall = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallMerge(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: `CONFERENCE`,\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallMerge(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onHoldOrUnHoldConferenceCall = (line: ConferenceLineTypes, data: any, type: string) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallHoldOrUnHold(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: type,\r\n\t\t\thold_channel_no: type === \"HOLDUSER\" ? `hold${line_used.line}` : `unhold${line_used.line}`,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_HOLD_OR_UN_HOLD, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallHoldOrUnHold(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onMuteOrUnMuteConferenceCall = (line: ConferenceLineTypes, data: any, type: string) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallMuteOrUnMute(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: type,\r\n\t\t\tchannel_no: type === \"MUTEUSER\" ? `mute${line_used.line}` : `play${line_used.line}`,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_MUTE_OT_UN_MUTE, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallMuteOrUnMute(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onEndConferenceCall = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallEnd(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: \"HANGUP_CHANNEL\",\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tuser_type: `THIRDPARTY${line_used.line - 1}`,\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_END, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallEnd(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<TableRow\r\n\t\t\tkey={each.line}\r\n\t\t\tsx={{\r\n\t\t\t\tborder: \"2px solid #fff\",\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Typography>Line {each?.line ?? \"\"}. </Typography>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Typography\r\n\t\t\t\t\tvariant=\"body2\"\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tpx: 1,\r\n\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{each?.status ?? \"\"}\r\n\t\t\t\t</Typography>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<Typography variant=\"body2\">{each?.line === 1 ? \"Internal\" : \"External\"}</Typography>\r\n\t\t\t\t</Button>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<TextField\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\tplaceholder=\"Phone Number\"\r\n\t\t\t\t\tfullWidth\r\n\t\t\t\t\tvalue={each?.phone || \"\"}\r\n\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\teach?.line === 1 ||\r\n\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\teach?.status === \"CONFERENCE\" ||\r\n\t\t\t\t\t\teach?.status === \"HOLD\" ||\r\n\t\t\t\t\t\teach?.status === \"MUTE\"\r\n\t\t\t\t\t}\r\n\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\tonConferenceLineUpdate(each, { phone: e.target.value });\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\tjustifyContent: \"space-around\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{each.line !== 1 && (\r\n\t\t\t\t\t\t<Tooltip title=\"Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={each?.status !== \"IDLE\" ? \"outlined\" : \"contained\"}\r\n\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" ?\r\n\t\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"success.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `0px 2px 1px ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"success.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonConferenceCallStart(each, {});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={each?.status !== \"IDLE\"}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{conferenceCallStart ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\t<Call\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: each?.status !== \"IDLE\" ? \"default\" : \"#f3f2f2\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{each.line === 1 && (\r\n\t\t\t\t\t\t<Tooltip title=\"Merge Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={isMergeCall ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\tisMergeCall ?\r\n\t\t\t\t\t\t\t\t\t\t{ ...enabled, padding: \"0px 16px\" }\r\n\t\t\t\t\t\t\t\t\t:\t{ ...disabled, padding: \"0px 16px\" }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonMergeConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\t\tisMergeCall: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={!isMergeCall || conferenceCallMerge}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{each?.isMergeCall ? \"Merged\" : \"Merge\"}\r\n\t\t\t\t\t\t\t\t{conferenceCallMerge ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress size=\"20px\" />\r\n\t\t\t\t\t\t\t\t:\t<CallSplit />}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<Tooltip title={each.status !== \"HOLD\" ? \"Hold\" : \"Un Hold\"}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant={each.status === \"HOLD\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\teach.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"CONFERENCE\"\r\n\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t: each?.status === \"ONCALL\" || each?.status === \"CONFERENCE\" ?\r\n\t\t\t\t\t\t\t\t\t// each.status === \"IDLE\"\r\n\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tif (each.status === \"HOLD\") {\r\n\t\t\t\t\t\t\t\t\tonHoldOrUnHoldConferenceCall(each, { isHold: false }, \"UNHOLDUSER\");\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tonHoldOrUnHoldConferenceCall(each, { isHold: true }, \"HOLDUSER\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" ||\r\n\t\t\t\t\t\t\t\tconferenceCallHoldOrUnHold\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallHoldOrUnHold ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t: each.status === \"HOLD\" ?\r\n\t\t\t\t\t\t\t\t<PlayArrow />\r\n\t\t\t\t\t\t\t:\t<Pause />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t<Tooltip title={each.status !== \"MUTE\" ? \"Mute\" : \"Un Mute\"}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant={each.status === \"MUTE\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\teach.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"CONFERENCE\"\r\n\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t: each?.status === \"ONCALL\" || each?.status === \"CONFERENCE\" ?\r\n\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tif (each.status === \"MUTE\") {\r\n\t\t\t\t\t\t\t\t\tonMuteOrUnMuteConferenceCall(each, { isMute: false }, \"PLAYUSER\");\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tonMuteOrUnMuteConferenceCall(each, { isMute: true }, \"MUTEUSER\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"HOLD\" ||\r\n\t\t\t\t\t\t\t\tconferenceCallMuteOrUnMute\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallMuteOrUnMute ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t: each.status === \"MUTE\" ?\r\n\t\t\t\t\t\t\t\t<MicOff />\r\n\t\t\t\t\t\t\t:\t<Mic />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t{each?.line !== 1 ?\r\n\t\t\t\t\t\t<Tooltip title=\"End Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" && each?.status !== \"DISCONNECTED\" ?\r\n\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" && each?.status !== \"DISCONNECTED\" ?\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `0px 2px 1px ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...disabled,\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonEndConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\t\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t\t\t\t\t\t\tisMute: false,\r\n\t\t\t\t\t\t\t\t\t\tisHold: false,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\teach?.status === \"IDLE\" || each?.status === \"DISCONNECTED\" || conferenceCallEnd\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{conferenceCallEnd ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t:\t<Button\r\n\t\t\t\t\t\t\tvariant={each?.isCallStart ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"none\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tonEndConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t\t\t\t\t\tisMute: false,\r\n\t\t\t\t\t\t\t\t\tisHold: false,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" || each?.status === \"DISCONNECTED\" || conferenceCallEnd\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallEnd ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</Box>\r\n\t\t\t</TableCell>\r\n\t\t</TableRow>\r\n\t);\r\n};\r\n\r\nexport function ConferenceDialog() {\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [conferenceCallEndAll, setConferenceCallEndAll] = useState(false);\r\n\r\n\tconst handleClose = () => {\r\n\t\tsdkStateManager.setOpenConferenceDialog(false);\r\n\t};\r\n\r\n\tconst onEndAllConferenceCalls = () => {\r\n\t\tsetConferenceCallEndAll(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: \"ENDCONFERENCE\",\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_END_ALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.resetConferenceLines();\r\n\t\t\t\thandleClose();\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallEndAll(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst isMergeCall = useMemo(() => {\r\n\t\treturn state?.conferenceLine?.some((each: any) => {\r\n\t\t\tif (each.line !== 1) {\r\n\t\t\t\treturn each.status === \"ONCALL\";\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\t}, [state.conferenceLine]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={state.openConferenceDialog}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"10px 16px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\">{state?.agentId ?? \"\"} conference</Typography>\r\n\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 2px #e7e5e5ff\",\r\n\t\t\t\t\t\t\tmargin: \"0px 15px\",\r\n\t\t\t\t\t\t\tborderRadius: \"20px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<TableContainer\r\n\t\t\t\t\t\t\tcomponent={Paper}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\toutline: \"0px solid gray !important\",\r\n\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 6px #e7e5e5ff\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Table\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborder: \"4px solid #ffffff !important\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t<TableRow\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tborder: \"2px solid #f3f3f3ff !important\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tLine\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tStatus\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tCall Type\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tMobile Number\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tCall Actions\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t{state?.conferenceLine.map((each: any) => (\r\n\t\t\t\t\t\t\t\t\t\t<ConferenceTableRow\r\n\t\t\t\t\t\t\t\t\t\t\teach={each}\r\n\t\t\t\t\t\t\t\t\t\t\tisMergeCall={isMergeCall}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tm={2}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={onEndAllConferenceCalls}\r\n\t\t\t\t\t\t\tdisabled={conferenceCallEndAll}\r\n\t\t\t\t\t\t\tsx={{ px: 2, borderRadius: \"20px\", textTransform: \"capitalize\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallEndAll ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"8px\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t:\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.main\",\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"error.dark\" },\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"8px\",\r\n\t\t\t\t\t\t\t\t\t\twidth: \"28px\",\r\n\t\t\t\t\t\t\t\t\t\theight: \"28px\",\r\n\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\tlineHeight: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: \"50%\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<PhoneDisabled\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tEnd Conference\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function CallTransferDialog({ open }: any) {\r\n\tconst state = useSDKState();\r\n\r\n\tconst [transferCall] = usePostRequest<TransferCallRequest>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setOpenCallTransferDialog(false);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [currentselecteTab, setCurrentselecteTab] = useState(\"process\");\r\n\r\n\tconst [getIdelAgentsList, { data: idleAgentsList, isLoading: isIdleAgentsListLoading }] =\r\n\t\tusePostRequest<any>({\r\n\t\t\tdisabledSuccessToast: true,\r\n\t\t});\r\n\r\n\tconst [\r\n\t\tgetProcessAndQueuesList,\r\n\t\t{ data: processAndQueuesList, isLoading: isProcessAndQueuesListLoading },\r\n\t] = usePostRequest<{\r\n\t\tstatus: string;\r\n\t\tactive: boolean;\r\n\t\tprocess?: any[];\r\n\t\tqueue?: any[];\r\n\t}>({\r\n\t\tdisabledSuccessToast: true,\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\tsdkStateManager.setOpenCallTransferDialog(false);\r\n\t};\r\n\r\n\tconst handleTransferCall = (data: any, type: string) => {\r\n\t\tif (type === \"PROCESS\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"PROCESS\",\r\n\t\t\t\ttransfer_to: data?.process_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t} else if (type === \"QUEUE\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"QUEUE\",\r\n\t\t\t\ttransfer_to: data?.queue_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t} else if (type === \"AGENT\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"AGENT\",\r\n\t\t\t\ttransfer_to: data?.user_id ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tgetIdelAgentsList(END_POINT.AGENTS_LIST, {\r\n\t\t\tstatus: \"IDLE\",\r\n\t\t\tactive: true,\r\n\t\t});\r\n\r\n\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\tstatus: \"ACTIVE\",\r\n\t\t\tactive: true,\r\n\t\t});\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Call Transfer</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"6px 10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1 }}>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"process\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"process\");\r\n\t\t\t\t\t\t\t\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"ACTIVE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tProcess\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"queues\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"queues\");\r\n\t\t\t\t\t\t\t\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"ACTIVE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tQueues\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"agents\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"agents\");\r\n\t\t\t\t\t\t\t\t\tgetIdelAgentsList(END_POINT.AGENTS_LIST, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tAgents\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t{(isProcessAndQueuesListLoading || isIdleAgentsListLoading) && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\theight: \"80px\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<CircularProgress />{\" \"}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"process\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process &&\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.length > 0\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.map((process: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{process.process_name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(process, \"PROCESS\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Process Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"queues\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue &&\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue?.length > 0\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue?.map((queue: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{queue.queue_name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.find(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(process: any) => process.process_id === queue.process_id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)?.process_name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"(\" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.find(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(process: any) => process.process_id === queue.process_id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)?.process_name +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\")\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t:\t\"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(queue, \"QUEUE\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Queues Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"agents\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{idleAgentsList?.data && idleAgentsList?.data?.length > 0 ?\r\n\t\t\t\t\t\t\t\t\t\tidleAgentsList?.data?.map((agent: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{agent.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(agent, \"AGENT\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Agents Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function EndCallDispositionDialog({ open, setOpen, onSubmitDisposition }: any) {\r\n\tconst [formData, setFormData] = useState({\r\n\t\tdisposition: { label: \"Resolved\", value: \"RES\" },\r\n\t\tfollowUp: { label: \"No\", value: \"N\" },\r\n\t\tcallbackDate: \"\",\r\n\t\tcallbackHrs: \"\",\r\n\t\tcallbackMins: \"\",\r\n\t});\r\n\tconst dispositionOptions = [\r\n\t\t{ label: \"Not Interested\", value: \"NI\" },\r\n\t\t{ label: \"Resolved\", value: \"RES\" },\r\n\t];\r\n\tconst followUpOptions = [\r\n\t\t{ label: \"Yes\", value: \"Y\" },\r\n\t\t{ label: \"No\", value: \"N\" },\r\n\t];\r\n\r\n\tconst handleChange = (field: keyof typeof formData, value: { label: string } | null | string) => {\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\t};\r\n\r\n\tconst handleReset = () => {\r\n\t\tsetFormData({\r\n\t\t\tdisposition: { label: \"Resolved\", value: \"RES\" },\r\n\t\t\tfollowUp: { label: \"No\", value: \"N\" },\r\n\t\t\tcallbackDate: \"\",\r\n\t\t\tcallbackHrs: \"\",\r\n\t\t\tcallbackMins: \"\",\r\n\t\t});\r\n\t};\r\n\r\n\tconst handleClose = () => {\r\n\t\thandleReset();\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"xs\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\tm={1}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\tCall Disposition\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Autocomplete\r\n\t\t\t\t\t\t\t\tvalue={formData.disposition}\r\n\t\t\t\t\t\t\t\toptions={dispositionOptions}\r\n\t\t\t\t\t\t\t\tgetOptionLabel={(opt) => opt.label}\r\n\t\t\t\t\t\t\t\tonChange={(_, val) => handleChange(\"disposition\", val)}\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\trenderInput={(params) => (\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\t{...params}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Disposition\"\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<Autocomplete\r\n\t\t\t\t\t\t\t\toptions={followUpOptions}\r\n\t\t\t\t\t\t\t\tgetOptionLabel={(opt) => opt.label}\r\n\t\t\t\t\t\t\t\tvalue={formData.followUp}\r\n\t\t\t\t\t\t\t\tonChange={(_, val) => handleChange(\"followUp\", val)}\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\trenderInput={(params) => (\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\t{...params}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Follow Up\"\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{formData?.followUp?.label?.toLowerCase() === \"yes\" && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t\t\tmt={2}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Callback Date\"\r\n\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\t\t\t\tinputLabel: { shrink: true },\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackDate}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackDate\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Hours (0-23)\"\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackHrs}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackHrs\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{formData?.followUp?.label?.toLowerCase() === \"yes\" && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t\t\tmt={2}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Minutes (0-59)\"\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackMins}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackMins\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t<Box sx={{ flex: 1 }}></Box>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\ttextAlign=\"right\"\r\n\t\t\t\t\t\tm={2}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={handleClose}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tcancel\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={() => onSubmitDisposition(formData)}\r\n\t\t\t\t\t\t\tsx={{ px: 2, borderRadius: \"10px\", textTransform: \"capitalize\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function ProcessorListDialog({\r\n\topen,\r\n\tsetOpen,\r\n\tprocessList = null,\r\n\thandleSelectedProcessor,\r\n}: any) {\r\n\tconst handleClose = () => {\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tmaxWidth={\"xs\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Process List</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"6px 10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{processList.length > 0 ?\r\n\t\t\t\t\t\t\tprocessList?.map((process: any, index: any) => (\r\n\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\thandleSelectedProcessor(process);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t{process.process_name}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t:\tnull}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function CallHistoryDialog({ open, setOpen }: any) {\r\n\tconst handleClose = () => {\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Call History</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tp={6}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tComing Soon...\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n","import { SxProps, useTheme } from \"@mui/material\";\r\n\r\nconst useStyles = ({\r\n disabled,\r\n enabled,\r\n outlined,\r\n}: {\r\n disabled: SxProps;\r\n enabled: SxProps;\r\n outlined: SxProps;\r\n}): {\r\n disabled: SxProps;\r\n enabled: SxProps;\r\n outlined: SxProps;\r\n} => {\r\n const theme = useTheme();\r\n return {\r\n disabled: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n border: `1px solid rgb(206, 204, 204)`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: \" 0px 2px 2px rgba(0, 0, 0, 0.79)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...disabled,\r\n },\r\n enabled: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n boxShadow: \" 0px 2px 1px rgba(0, 0, 0, 0.507)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: \" 0px 2px 1px rgba(0, 0, 0, 0.507)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...enabled,\r\n },\r\n outlined: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n backgroundColor: theme.palette.grey[200],\r\n boxShadow: `0px 2px 1px ${theme.palette.primary.light}`,\r\n border: `0px solid ${theme.palette.primary.main}`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: `0px 2px 1px ${theme.palette.primary.main}`,\r\n border: `0px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...outlined,\r\n },\r\n };\r\n};\r\n\r\nexport default useStyles;\r\n","import { ReactNode, memo } from \"react\";\r\nimport { ToastProvider } from \"../services/toastMessage\";\r\nimport React from \"react\";\r\nimport { SDKProviderProps } from \"../../types\";\r\n\r\nexport const SDKProvider = memo<SDKProviderProps>(({ children }) => {\r\n\treturn <ToastProvider>{children}</ToastProvider>;\r\n});\r\n\r\nSDKProvider.displayName = \"SDKProvider\";\r\n"],"mappings":"s+BAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,sBAAAE,GAAA,kBAAAC,GAAA,YAAAC,GAAA,qBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,6BAAAC,GAAA,qBAAAC,GAAA,cAAAC,KAAA,eAAAC,GAAAX,ICAO,IAAMY,GAAK,2BACLC,EAAW,WAAWD,EAAE,QACxBE,GAAc,SAASF,EAAE,QACzBG,EAAU,CACtB,GAAI,SACL,EAEaC,EAAY,CACxB,MAAO,GAAGH,CAAQ,GAAGE,EAAQ,EAAE,6BAC/B,YAAa,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,mCACrC,mBAAoB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,2CAC5C,cAAe,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,6BACvC,UAAW,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,kCACnC,UAAW,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,kCACnC,YAAa,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,mCACrC,SAAU,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,iCAClC,OAAQ,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,8BAEhC,gBAAiB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,wCACzC,gCAAiC,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,6CACzD,gCAAiC,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,6CACzD,oBAAqB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,+CAC7C,wBAAyB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,mDACjD,cAAe,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,sCAEvC,YAAa,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,aACrC,aAAc,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,sBACtC,oBAAqB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,2CAE7C,aAAc,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,0BACtC,qBAAsB,GAAGF,CAAQ,GAAGE,EAAQ,EAAE,+BAC/C,EAEaE,GAAe,CAC3B,GAAI,GAAGH,EAAW,GAAGC,EAAQ,EAAE,SAChC,EAEaG,GAAc,yBC3B3B,IAAMC,GAAN,KAAsB,CAQrB,aAAc,CAPdC,GAAA,KAAQ,SACRA,GAAA,KAAQ,YAA+B,CAAC,GACxCA,GAAA,KAAiB,cAAcC,IAE/BD,GAAA,KAAQ,UACRA,GAAA,KAAQ,YAGP,KAAK,MAAQ,KAAK,gBAAgB,EAClC,KAAK,gBAAgB,CACtB,CAEQ,iBAA4B,CACnC,MAAO,CACN,cAAe,OACf,QAAS,KACT,QAAS,GACT,qBAAsB,GACtB,uBAAwB,GACxB,cAAe,GACf,UAAW,CACV,qBAAsB,GACtB,mBAAoB,GACpB,0BAA2B,GAC3B,YAAa,GACb,iBAAkB,GAClB,wBAAyB,GACzB,SAAU,CAAC,EACX,QAAS,CAAC,EACV,SAAU,CAAC,CACZ,EACA,UAAW,GACX,QAAS,GACT,OAAQ,OACR,cAAe,KACf,qBAAsB,CAAE,EAAG,GAAI,EAAG,EAAG,EACrC,eAAgB,CAAE,EAAG,GAAI,EAAG,EAAG,EAC/B,SAAU,CACT,SAAU,GACV,OAAQ,GACR,KAAM,GACN,WAAY,GACZ,aAAc,EACf,EACA,eAAgB,CACf,CACC,KAAM,EACN,OAAQ,OACR,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,YAAa,EACd,EACA,CACC,KAAM,EACN,OAAQ,OACR,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,YAAa,EACd,EACA,CACC,KAAM,EACN,OAAQ,OACR,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,YAAa,EACd,EACA,CACC,KAAM,EACN,OAAQ,OACR,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,YAAa,EACd,EACA,CACC,KAAM,EACN,OAAQ,OACR,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,YAAa,GACb,YAAa,EACd,CACD,CACD,CACD,CAEQ,iBAAwB,CAC/B,GAAI,CACH,IAAME,EAAS,aAAa,QAAQ,KAAK,WAAW,EACpD,GAAIA,EAAQ,CACX,IAAMC,EAAc,KAAK,MAAMD,CAAM,EAErC,KAAK,MAAQE,EAAAC,EAAA,GACT,KAAK,OADI,CAEZ,QAASF,EAAY,SAAW,GAChC,cAAeA,EAAY,eAAiB,OAC5C,QAASA,EAAY,SAAW,KAChC,sBAAsBA,GAAA,YAAAA,EAAa,uBAAwB,GAC3D,wBAAwBA,GAAA,YAAAA,EAAa,yBAA0B,GAC/D,cAAeA,EAAY,eAAiB,GAC5C,UAAWA,EAAY,WAAa,CACnC,qBAAsB,GACtB,mBAAoB,GACpB,0BAA2B,GAC3B,YAAa,GACb,iBAAkB,GAClB,wBAAyB,GACzB,SAAU,CAAC,EACX,QAAS,CAAC,EACV,SAAU,CAAC,CACZ,EACA,UAAWA,EAAY,WAAa,GACpC,QAASA,EAAY,SAAW,GAChC,OAAQA,EAAY,QAAU,OAC9B,cAAeA,EAAY,eAAiB,KAC5C,qBAAsBA,EAAY,sBAAwB,CACzD,EAAG,GACH,EAAG,EACJ,EACA,eAAgBA,EAAY,gBAAkB,CAAE,EAAG,GAAI,EAAG,EAAG,EAC7D,SAAUA,EAAY,UAAY,CACjC,aAAc,GACd,gBAAiB,GACjB,SAAU,GACV,OAAQ,GACR,KAAM,GACN,WAAY,GACZ,aAAc,EACf,EAEA,eAEEA,EAAY,gBACZ,MAAM,QAAQA,EAAY,cAAc,GACxCA,EAAY,eAAe,OAAS,EAEpCA,EAAY,eACX,KAAK,MAAM,cACf,EACD,CACD,OAASG,EAAO,CACf,QAAQ,KAAK,8CAA+CA,CAAK,CAElE,CACD,CAEQ,eAAsB,CAC7B,GAAI,CACH,IAAMC,EAAkB,CACvB,QAAS,KAAK,MAAM,QACpB,cAAe,KAAK,MAAM,cAC1B,QAAS,KAAK,MAAM,QACpB,cAAe,KAAK,MAAM,cAC1B,qBAAsB,KAAK,MAAM,qBACjC,uBAAwB,KAAK,MAAM,uBACnC,UAAW,KAAK,MAAM,UACtB,UAAW,KAAK,MAAM,UACtB,QAAS,KAAK,MAAM,QACpB,OAAQ,KAAK,MAAM,OACnB,cAAe,KAAK,MAAM,cAC1B,qBAAsB,KAAK,MAAM,qBACjC,eAAgB,KAAK,MAAM,eAC3B,SAAU,KAAK,MAAM,SACrB,eAAgB,KAAK,MAAM,cAC5B,EACA,aAAa,QAAQ,KAAK,YAAa,KAAK,UAAUA,CAAe,CAAC,CACvE,OAASD,EAAO,CACf,QAAQ,KAAK,4CAA6CA,CAAK,CAChE,CACD,CAEQ,iBAAwB,CAC/B,KAAK,UAAU,QAASE,GAAaA,EAAS,CAAC,CAChD,CAEQ,oBAAoBC,EAAgBC,EAAwB,CACnE,GAAI,CAACD,GAAU,OAAOA,GAAW,UAAYA,EAAO,KAAK,EAAE,SAAW,EACrE,MAAM,IAAI,MAAM,uBAAuB,EAExC,GAAI,CAACC,GAAY,OAAOA,GAAa,UAAYA,EAAS,KAAK,EAAE,SAAW,EAC3E,MAAM,IAAI,MAAM,yBAAyB,EAE1C,KAAK,OAASD,EAAO,KAAK,EAC1B,KAAK,SAAWC,EAAS,KAAK,CAC/B,CAEO,WACND,EACAC,EACAC,EACAC,EACAC,EACO,CAEP,GADA,KAAK,oBAAoBJ,EAAQC,CAAQ,EACrC,CAACC,GAAW,OAAOA,GAAY,UAAYA,EAAQ,KAAK,EAAE,SAAW,EACxE,MAAM,IAAI,MAAM,wBAAwB,EAExC,KAAK,MAAM,QAAUA,EACrB,KAAK,MAAM,qBAAuB,GAClC,KAAK,MAAM,uBAAyB,GACpC,KAAK,MAAM,cAAgBE,EAC3B,KAAK,MAAM,UAAYR,EAAA,CACtB,qBAAsB,GACtB,mBAAoB,GACpB,0BAA2B,GAC3B,YAAa,GACb,iBAAkB,GAClB,wBAAyB,GACzB,SAAU,CAAC,EACX,QAAS,CAAC,EACV,SAAU,CAAC,GACRO,GAEJ,KAAK,MAAM,cAAgB,GAC3B,KAAK,cAAc,EACnB,KAAK,gBAAgB,CAEvB,CAEO,UAAqB,CAC3B,OAAOP,EAAA,GAAK,KAAK,MAClB,CAEO,gBAA+E,CACrF,MAAO,CAAE,OAAQ,KAAK,OAAQ,SAAU,KAAK,QAAS,CACvD,CACO,iBAAsC,CA1P9C,IAAAS,EA2PE,OAAOA,EAAA,KAAK,MAAM,gBAAX,YAAAA,EAA0B,WAClC,CAEO,UAAUN,EAAkC,CAClD,YAAK,UAAU,KAAKA,CAAQ,EACrB,IAAM,CACZ,IAAMO,EAAQ,KAAK,UAAU,QAAQP,CAAQ,EACzCO,EAAQ,IACX,KAAK,UAAU,OAAOA,EAAO,CAAC,CAEhC,CACD,CAEO,WAAWC,EAA0B,CAC3C,KAAK,MAAM,UAAYA,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,SAASC,EAAwB,CACvC,KAAK,MAAM,QAAUA,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,UAAUC,EAA0B,CAC1C,KAAK,MAAM,OAASA,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,WAAWC,EAA6D,CAC9E,KAAK,MAAM,QAAUA,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,wBAAwBC,EAA0C,CACxE,KAAK,MAAM,qBAAuBA,EAClC,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,kBAAkBA,EAA0C,CAClE,KAAK,MAAM,eAAiBA,EAC5B,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,WAAkB,CACxB,KAAK,MAAM,cAAgB,KAAK,IAAI,EACpC,KAAK,MAAM,OAAS,UACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,SAAgB,CACtB,KAAK,MAAM,cAAgB,KAC3B,KAAK,MAAM,OAAS,OACpB,KAAK,MAAM,UAAY,GACvB,KAAK,MAAM,QAAU,GACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,cAAqB,CAC3B,KAAK,MAAM,cAAgB,GAC3B,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,wBAAwBC,EAAqB,CACnD,KAAK,MAAM,qBAAuBA,EAClC,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,0BAA0BA,EAAqB,CACrD,KAAK,MAAM,uBAAyBA,EACpC,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,eAAeC,EAA+B,CACpD,KAAK,MAAM,SAAWjB,IAAA,GAAK,KAAK,MAAM,UAAaiB,GACnD,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,qBAAqBA,EAAmC,CAC9D,KAAK,MAAM,eAAiB,CAAC,GAAGA,CAAI,EACpC,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,kBAAkBC,EAAiC,CA1V3D,IAAAT,GA2VM,CAAC,KAAK,MAAM,gBAAkB,CAAC,MAAM,QAAQ,KAAK,MAAM,cAAc,KACzE,QAAQ,KAAK,4DAA4D,EACzE,KAAK,MAAM,eAAiB,KAAK,gBAAgB,EAAE,gBAGpD,IAAMU,GAAqBV,EAAA,KAAK,MAAM,iBAAX,YAAAA,EAA2B,IAAKW,GACtDA,EAAK,OAASF,EAAK,KACfA,EAEDE,GAER,KAAK,MAAM,eAAiBD,EAC5B,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,sBAA6B,CACnC,KAAK,MAAM,eAAiB,KAAK,gBAAgB,EAAE,eACnD,KAAK,cAAc,EACnB,KAAK,gBAAgB,CACtB,CAEO,sBAA6B,CACnC,GAAI,CACH,aAAa,WAAW,KAAK,WAAW,EACxC,KAAK,MAAQ,KAAK,gBAAgB,EAClC,KAAK,gBAAgB,CACtB,OAASlB,EAAO,CACf,QAAQ,KAAK,gCAAiCA,CAAK,CACpD,CACD,CAEO,cAAqB,CAC3B,GAAI,CACH,IAAMJ,EAAS,aAAa,QAAQ,KAAK,WAAW,EACpD,QAAQ,IAAI,6BAA8BA,CAAM,EAC5CA,GACH,QAAQ,IAAI,4BAA6B,KAAK,MAAMA,CAAM,CAAC,EAE5D,QAAQ,IAAI,iBAAkB,KAAK,KAAK,CACzC,OAASI,EAAO,CACf,QAAQ,MAAM,2BAA4BA,CAAK,CAChD,CACD,CAEO,oBAA4C,CAClD,OAAO,KAAK,MAAM,gBAAkB,CAAC,CACtC,CACD,EAEaoB,EAAkB,IAAI3B,GCtWnC,IAAM4B,GAAN,KAAsD,CAAtD,cACCC,GAAA,KAAQ,SAAoC,MAC5CA,GAAA,KAAQ,WAA0B,MAClCA,GAAA,KAAQ,UAAkB,IAC1BA,GAAA,KAAQ,aAIH,CAAC,GAGNA,GAAA,KAAQ,aAAoD,MAE5D,MAAM,KAAKC,EAAiD,CAC3D,KAAK,OAASC,EAAA,CACb,UAAW,GACX,cAAe,EACf,UAAW,IACX,cAAe,KACZD,GAGJ,KAAK,QAAUA,EAAO,UAAY,OAAO,QAAW,YAAc,OAAO,SAAS,OAAS,IAE3F,KAAK,sBAAsB,EAE3B,IAAME,EAAS,MAAM,KAAK,aAAa,EAEvC,YAAK,mBAAmB,EAExB,QAAQ,IAAI,2CAA2C,EAChDA,CACR,CAEA,eAAyB,CACxB,OAAO,KAAK,SAAW,MAAQ,KAAK,WAAa,IAClD,CAEA,WAAuC,CACtC,OAAO,KAAK,MACb,CAEA,aAA6B,CAC5B,OAAO,KAAK,QACb,CAEA,MAAc,cAAuC,CACpD,GAAI,CAAC,KAAK,OACT,MAAM,IAAI,MAAM,8BAA8B,EAG/C,GAAI,CACH,IAAMC,EAAW,MAAM,KAAK,YAAY,kBAAmB,CAC1D,OAAQ,OACR,QAAS,CACR,eAAgB,mBAChB,YAAa,KAAK,OAAO,MAC1B,EACA,KAAM,KAAK,UAAU,CACpB,QAAS,KAAK,OAAO,QACrB,UAAW,KAAK,OAAO,SACxB,CAAC,CACF,CAAC,EAED,GAAI,CAACA,EAAS,GACb,MAAAC,EAAgB,aAAa,EACvB,IAAI,MAAM,yBAAyBD,EAAS,MAAM,IAAIA,EAAS,UAAU,EAAE,EAGlF,IAAME,EAAO,MAAMF,EAAS,KAAK,EACjC,YAAK,SAAWE,EAAK,SAEjB,KAAK,OAAO,WACf,KAAK,kBAAkB,EAEjBA,CACR,OAASC,EAAO,CACf,cAAQ,MAAM,sCAAuCA,CAAK,EACpDA,CACP,CACD,CAEA,MAAM,SAASC,EAAmBC,EAAsC,CACvE,GAAI,CAAC,KAAK,QAAU,CAAC,KAAK,SAAU,CACnC,QAAQ,KAAK,gDAAiDD,CAAS,EACvE,MACD,CAEA,IAAME,EAAQ,CACb,UAAAF,EACA,UAAAC,EACA,UAAW,KAAK,IAAI,CACrB,EAEA,KAAK,WAAW,KAAKC,CAAK,EAEtB,KAAK,WAAW,QAAU,KAAK,OAAO,WAAa,MACtD,KAAK,WAAW,MAAM,CAUxB,CA4FA,MAAc,YAAYC,EAAaC,EAAyC,CA9OjF,IAAAC,EA+OE,IAAMC,EAAU,GAAG,KAAK,OAAO,GAAGH,CAAG,GAC/BI,IAAaF,EAAA,KAAK,SAAL,YAAAA,EAAa,gBAAiB,EAEjD,QAASG,EAAU,EAAGA,GAAWD,EAAYC,IAC5C,GAAI,CAEH,OADiB,MAAM,MAAMF,EAASF,CAAO,CAE9C,OAASL,EAAO,CACf,GAAIS,IAAYD,EACf,MAAMR,EAGP,IAAMU,EAAQ,KAAK,IAAI,IAAO,KAAK,IAAI,EAAGD,EAAU,CAAC,EAAG,GAAK,EAC7D,MAAM,IAAI,QAASE,GAAY,WAAWA,EAASD,CAAK,CAAC,CAC1D,CAGD,MAAM,IAAI,MAAM,sBAAsB,CACvC,CAEQ,mBAA0B,CAnQnC,IAAAJ,EAoQE,GAAI,OAAO,QAAW,aAAe,GAACA,EAAA,KAAK,SAAL,MAAAA,EAAa,WAAW,OAE9D,IAAMM,EAAkB,KAAK,OAAO,YAAc,GAAO,CAAC,EAAI,KAAK,OAAO,UAiE1E,GA/DIA,EAAgB,aAAe,IAClC,KAAK,SAAS,YAAa,CAC1B,IAAK,OAAO,SAAS,KACrB,MAAO,SAAS,MAChB,SAAU,SAAS,SACnB,UAAW,UAAU,UACrB,SAAU,CACT,MAAO,OAAO,WACd,OAAQ,OAAO,WAChB,EACA,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,EAAE,MAAOZ,GAAU,QAAQ,KAAK,8BAA+BA,CAAK,CAAC,EAGnEY,EAAgB,SAAW,IAC9B,SAAS,iBAAiB,QAAUT,GAAU,CAvRjD,IAAAG,EAwRI,IAAMO,EAASV,EAAM,QAGpBU,EAAO,UAAY,UACnBA,EAAO,UAAY,KACnBA,EAAO,SACPA,EAAO,aAAa,MAAM,IAAM,UAC/BA,aAAkB,mBAAqBA,EAAO,OAAS,WAExD,KAAK,SAAS,QAAS,CACtB,QAASA,EAAO,QAChB,MAAMP,EAAAO,EAAO,cAAP,YAAAP,EAAoB,OAAO,UAAU,EAAG,KAC9C,KAAMO,EAAO,aAAa,MAAM,EAChC,GAAIA,EAAO,GACX,UAAWA,EAAO,UAClB,KAAMA,EAAO,aAAa,MAAM,EAChC,SAAU,CACT,EAAGV,EAAM,QACT,EAAGA,EAAM,OACV,EACA,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,EAAE,MAAOH,GAAU,QAAQ,KAAK,yBAA0BA,CAAK,CAAC,CAEnE,CAAC,EAGEY,EAAgB,QAAU,IAC7B,SAAS,iBAAiB,SAAWT,GAAU,CAC9C,IAAMU,EAASV,EAAM,OACfW,EAAW,IAAI,SAASD,CAAM,EAC9BE,EAAqC,CAAC,EAE5CD,EAAS,QAAQ,CAACE,EAAOC,IAAQ,CAChCF,EAAWE,CAAG,EAAID,EAAM,SAAS,CAClC,CAAC,EAED,KAAK,SAAS,iBAAkB,CAC/B,OAAQH,EAAO,GACf,OAAQA,EAAO,OACf,OAAQA,EAAO,OACf,OAAQ,OAAO,KAAKE,CAAU,EAC9B,WAAY,OAAO,KAAKA,CAAU,EAAE,OACpC,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,EAAE,MAAOf,GAAU,QAAQ,KAAK,mCAAoCA,CAAK,CAAC,CAC5E,CAAC,EAGEY,EAAgB,SAAW,GAAO,CACrC,IAAIM,EACJ,SAAS,iBAAiB,QAAUf,GAAU,CAC7C,IAAMU,EAASV,EAAM,QAEpBU,EAAO,UAAY,SACnBA,EAAO,UAAY,YACnBA,EAAO,UAAY,YAEnB,aAAaK,CAAU,EACvBA,EAAa,WAAW,IAAM,CAjVnC,IAAAZ,EAkVM,KAAK,SAAS,cAAe,CAC5B,QAASO,EAAO,QAChB,KAAMA,EAAO,aAAa,MAAM,EAChC,KAAMA,EAAO,aAAa,MAAM,EAChC,GAAIA,EAAO,GACX,cAAaP,EAAAO,EAAO,QAAP,YAAAP,EAAc,SAAU,EACrC,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,EAAE,MAAON,GAAU,QAAQ,KAAK,gCAAiCA,CAAK,CAAC,CACzE,EAAG,GAAI,EAET,CAAC,CACF,CAEA,IAAMmB,EAAmB,KAAK,IAAI,EAClC,OAAO,iBAAiB,eAAgB,IAAM,CAC7C,IAAMC,EAAkB,KAAK,IAAI,EAAID,EAErC,KAAK,SAAS,aAAc,CAC3B,IAAK,OAAO,SAAS,KACrB,gBAAiBC,EACjB,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,CAUF,CAAC,EAEGR,EAAgB,aAAe,IAClC,SAAS,iBAAiB,mBAAoB,IAAM,CACnD,KAAK,SAAS,mBAAoB,CACjC,OAAQ,SAAS,OACjB,gBAAiB,SAAS,gBAC1B,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,CACF,CAAC,EAGEA,EAAgB,SAAW,KAC9B,OAAO,iBAAiB,QAAUT,GAAU,CAC3C,KAAK,SAAS,UAAW,CACxB,QAASA,EAAM,QACf,SAAUA,EAAM,SAChB,OAAQA,EAAM,OACd,MAAOA,EAAM,MACb,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,CACF,CAAC,EAED,OAAO,iBAAiB,qBAAuBA,GAAU,CAxY5D,IAAAG,EAyYI,KAAK,SAAS,qBAAsB,CACnC,QAAQA,EAAAH,EAAM,SAAN,YAAAG,EAAc,WACtB,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,CACF,CAAC,GAIDM,EAAgB,cAAgB,IAChC,OAAO,OAAO,aAAgB,aAC9B,OAAO,YAAY,YAEnB,OAAO,iBAAiB,OAAQ,IAAM,CACrC,WAAW,IAAM,CAChB,IAAMS,EAAa,OAAO,YAAY,WAChCC,EAAS,OAAO,YAAY,OAElC,KAAK,SAAS,qBAAsB,CACnC,eAAgBA,EAAO,gBACvB,SAAUA,EAAO,aAAeA,EAAO,gBACvC,SAAUA,EAAO,yBAA2BA,EAAO,gBACnD,WAAYA,EAAO,aAAeA,EAAO,yBACzC,eAAgBD,EAAW,KAC3B,cAAeA,EAAW,cAC1B,UAAW,IAAI,KAAK,EAAE,YAAY,CACnC,CAAC,CACF,EAAG,GAAI,CACR,CAAC,CAEH,CAEQ,uBAA8B,CACjC,OAAO,QAAW,cAItB,OAAO,iBAAiB,SAAU,IAAM,CAEvC,QAAQ,IAAI,mDAAmD,CAEhE,CAAC,EAED,OAAO,iBAAiB,UAAW,IAAM,CAExC,QAAQ,IAAI,wCAAwC,CACrD,CAAC,EACF,CAEQ,oBAA2B,CAC9B,KAAK,YACR,cAAc,KAAK,UAAU,CAO/B,CAQD,EAEaE,GAAe,IAAI/B,GAE5B,OAAO,QAAW,cACpB,OAAe,aAAe+B,IC/chC,IAAAC,GAAsC,iBCAtC,IAAAC,GAA4F,qBAA5F,IAAAC,GAIMC,IAAgBD,GAAAE,EAAgB,gBAAgB,IAAhC,KAAAF,GAAqC,GAErDG,GAAkB,IAExB,SAASC,IAAuB,CARhC,IAAAJ,EASC,OAAOA,EAAAE,EAAgB,gBAAgB,IAAhC,KAAAF,EAAqC,EAC7C,CAEA,SAASK,IAAqC,CAZ9C,IAAAL,EAAAM,EAAAC,EAAAC,EAaC,IAAMC,EAAW,GAAAC,QAAM,OAAO,CAC7B,QAASC,EACT,QAAS,CACR,eAAgB,mBAChB,OAAQ,mBACR,eAAeL,GAAAN,EAAAE,EAAgB,eAAe,IAA/B,YAAAF,EAAkC,WAAlC,KAAAM,EAA8C,GAC7D,aAAaE,GAAAD,EAAAL,EAAgB,eAAe,IAA/B,YAAAK,EAAkC,SAAlC,KAAAC,EAA4C,GACzD,cAAe,GAAGP,EAAa,EAChC,EACA,QAASE,GACT,gBAAiB,EAClB,CAAC,EAED,OAAAM,EAAS,aAAa,QAAQ,IAC5BG,GAAuC,CACvC,IAAMC,EAAQT,GAAa,EAE3B,OAAIS,GAASD,EAAO,UACnBA,EAAO,QAAQ,cAAgB,GAAGC,CAAK,IAKvCD,EAAe,SAAW,CAAE,UAAW,IAAI,KAAK,EAAE,QAAQ,CAAE,EAEtDA,CACR,EACCE,IACA,QAAQ,MAAM,6BAA8BA,CAAK,EAC1C,QAAQ,OAAOA,CAAK,EAE7B,EAEAL,EAAS,aAAa,SAAS,IAC7BM,GAA4B,CA/C/B,IAAAf,EAgDG,IAAMgB,EAAU,IAAI,KAAK,EAAE,QAAQ,EAC7BC,GAAajB,EAAAe,EAAS,OAAe,WAAxB,YAAAf,EAAkC,UACrD,OAAIiB,GACH,QAAQ,IAAI,cAAcF,EAAS,OAAO,GAAG,SAASC,EAAUC,CAAS,IAAI,EAGvEF,CACR,EACA,MAAOD,GAAsB,CAxD/B,IAAAd,EAyDG,IAAMkB,EAAkBJ,EAAM,OAE9B,QAAId,EAAAc,EAAM,WAAN,YAAAd,EAAgB,UAAW,KAAO,CAACkB,EAAgB,SACtDhB,EAAgB,aAAa,EAC7B,QAAQ,KAAK,2CAA2C,GAGpDY,EAAM,WACV,QAAQ,MAAM,iBAAkBA,EAAM,OAAO,EAC7CA,EAAM,QAAU,wDAGbA,EAAM,UAAYA,EAAM,SAAS,QAAU,MAC9C,QAAQ,MAAM,gBAAiBA,EAAM,SAAS,OAAQA,EAAM,SAAS,IAAI,EACzEA,EAAM,QAAU,wCAGV,QAAQ,OAAOA,CAAK,CAC5B,CACD,EAEOL,CACR,CAEA,IAAMU,GAA+Bd,GAAoB,EAElDe,GAAQD,GDtER,IAAME,GAAY,IAAM,CAC9B,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAAOC,CAAQ,KAAI,aAAS,IAAI,EAEjC,CAACC,EAAMC,CAAO,KAAI,aAAS,IAAI,EAuCrC,MAAO,CACN,UAtCoB,gBAAY,SAAY,CAxB9C,IAAAC,EAyBE,IAAMC,EAAQ,KAAK,OAAMD,EAAA,aAAa,QAAQE,EAAW,IAAhC,KAAAF,EAAqC,EAAE,EAEhET,EAAW,EAAI,EAEf,IAAMY,EAAyB,CAC9B,OAAQ,aACR,OAAQF,EAAM,SAAW,EAC1B,EAEA,OAAOG,GACL,KAAKC,EAAU,OAAQF,CAAO,EAC9B,KAAMG,IACNC,EAAgB,qBAAqB,EAErC,aAAa,MAAM,EAEnB,eAAe,MAAM,EAErBR,EAAQO,GAAA,YAAAA,EAAK,IAAI,EAEjBb,EAAW,EAAI,EAERa,GAAA,YAAAA,EAAK,KACZ,EACA,MAAOE,GAAQ,CAjDnB,IAAAR,EAkDI,OAAAL,EAAW,EAAI,EAEfE,EAASW,CAAG,GAELR,EAAAQ,GAAA,YAAAA,EAAK,WAAL,YAAAR,EAAe,IACvB,CAAC,EACA,QAAQ,IAAM,CACdT,EAAW,EAAK,CACjB,CAAC,CACH,EAAG,CAAC,CAAC,EAIJ,UAAWD,EACX,UAAWE,EACX,QAASE,EACT,MAAOE,EACP,KAAME,CACP,CACD,EErEA,IAAAW,GAAsC,iBAqB/B,IAAMC,GAAa,IAAM,CAC/B,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAAOC,CAAQ,KAAI,aAAS,IAAI,EAEjC,CAACC,EAAMC,CAAO,KAAI,aAAS,IAAI,EAuDrC,MAAO,CACN,iBAtDqB,gBACrB,MAAOD,GAMD,CAvCR,IAAAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAwCG,IAAMC,EAAQ,KAAK,OAAMf,EAAA,aAAa,QAAQgB,EAAW,IAAhC,KAAAhB,EAAqC,EAAE,EAEhET,EAAW,EAAI,EAEf,IAAM0B,EAAU,CACf,OAAQ,UACR,OAAQF,GAAA,YAAAA,EAAO,QACf,WAAWZ,GAAAD,GAAAD,EAAAc,GAAA,YAAAA,EAAO,UAAP,YAAAd,EAAgB,aAAhB,YAAAC,EAA4B,aAA5B,KAAAC,EAA0C,GACrD,cAAcE,GAAAD,EAAAW,GAAA,YAAAA,EAAO,UAAP,YAAAX,EAAgB,eAAhB,KAAAC,EAAgC,GAC9C,iBAAiBE,GAAAD,EAAAS,GAAA,YAAAA,EAAO,WAAP,YAAAT,EAAiB,YAAjB,KAAAC,EAA8B,GAC/C,eAAeE,GAAAD,EAAAO,GAAA,YAAAA,EAAO,WAAP,YAAAP,EAAiB,eAAjB,KAAAC,EAAiC,GAEhD,aAAaC,EAAAZ,GAAA,YAAAA,EAAM,cAAN,KAAAY,EAAqB,MAClC,cAAcC,EAAAb,GAAA,YAAAA,EAAM,WAAN,KAAAa,EAAkB,IAChC,eAAeC,EAAAd,GAAA,YAAAA,EAAM,eAAN,KAAAc,EAAsB,GACrC,cAAcC,GAAAf,GAAA,YAAAA,EAAM,cAAN,KAAAe,GAAqB,GACnC,eAAeC,GAAAhB,GAAA,YAAAA,EAAM,eAAN,KAAAgB,GAAsB,GACrC,aAAc,OACf,EAEA,OAAOI,GACL,KAAKC,EAAU,SAAUF,CAAO,EAChC,KAAMG,IACNC,EAAgB,QAAQ,EAExBtB,EAAQqB,GAAA,YAAAA,EAAK,IAAI,EAEjB3B,EAAW,EAAI,EAER2B,GAAA,YAAAA,EAAK,KACZ,EACA,MAAOE,GAAQ,CAvEpB,IAAAtB,EAwEK,OAAAL,EAAW,EAAI,EAEfE,EAASyB,CAAG,GAELtB,EAAAsB,GAAA,YAAAA,EAAK,WAAL,YAAAtB,EAAe,IACvB,CAAC,EACA,QAAQ,IAAM,CACdT,EAAW,EAAK,CACjB,CAAC,CACH,EACA,CAAC,CACF,EAIC,UAAWD,EACX,UAAWE,EACX,QAASE,EACT,MAAOE,EACP,KAAME,CACP,CACD,EC7FA,IAAAyB,GAAsC,iBAW/B,IAAMC,GAAiB,IAAM,CACnC,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtC,CAACC,EAAOC,CAAQ,KAAI,aAAS,IAAI,EAEjC,CAACC,EAAMC,CAAO,KAAI,aAAS,IAAI,EAgFrC,MAAO,CACN,mBA/EuB,gBAAY,MAAOD,GAA2B,CAtBvE,IAAAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAuBE,IAAMC,EAAQ,KAAK,OAAMT,EAAA,aAAa,QAAQU,EAAW,IAAhC,KAAAV,EAAqC,EAAE,EAIhE,GAFAT,EAAW,EAAI,IAEXU,EAAAQ,GAAA,YAAAA,EAAO,WAAP,YAAAR,EAAiB,UAAW,OAAQ,CACvC,IAAMU,EAAU,CACf,OAAQ,OACR,OAAQF,GAAA,YAAAA,EAAO,QACf,aAAcX,GAAA,YAAAA,EAAM,YACrB,EAEA,OAAOc,GACL,KAAKC,EAAU,cAAeF,CAAO,EACrC,KAAMG,IACNf,EAAQe,GAAA,YAAAA,EAAK,IAAI,EAEjBrB,EAAW,EAAI,EAERqB,GAAA,YAAAA,EAAK,KACZ,EACA,MAAOC,GAAQ,CA3CpB,IAAAf,EA4CK,OAAAL,EAAW,EAAI,EAEfE,EAASkB,CAAG,GAELf,EAAAe,GAAA,YAAAA,EAAK,WAAL,YAAAf,EAAe,IACvB,CAAC,EACA,QAAQ,IAAM,CACdT,EAAW,EAAK,CACjB,CAAC,CACH,WAAWW,EAAAO,GAAA,YAAAA,EAAO,WAAP,YAAAP,EAAiB,UAAW,SAAU,CAChD,IAAMc,GAAYZ,GAAAD,EAAAM,GAAA,YAAAA,EAAO,iBAAP,YAAAN,EACf,OAAQc,GAAcA,EAAK,OAAS,KADrB,YAAAb,EAEf,KAAMa,GAAcA,EAAK,SAAW,QAAU,EAACA,GAAA,MAAAA,EAAM,cAElDN,EAAU,CACf,OAAQ,sBACR,UAAW,OAAOK,EAAU,IAAI,GAChC,UAAW,OAAOA,EAAU,IAAI,EAChC,cAAelB,GAAA,YAAAA,EAAM,aACrB,QAAQQ,GAAAD,EAAAI,EAAM,WAAN,YAAAJ,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,GAAAD,EAAAE,EAAM,WAAN,YAAAF,EAAgB,eAAhB,KAAAC,EAAgC,EAC1C,EAEA,OAAOI,GACL,KAAKC,EAAU,gBAAiBF,CAAO,EACvC,KAAMG,IACNf,EAAQe,GAAA,YAAAA,EAAK,IAAI,EAEjBrB,EAAW,EAAI,EAEfyB,EAAgB,kBAAkBC,EAAAC,EAAA,GAC9BJ,GAD8B,CAEjC,YAAa,GACb,OAAQ,SACR,MAAOlB,GAAA,YAAAA,EAAM,YACd,EAAC,EAEDoB,EAAgB,wBAAwB,EAAI,EAErCJ,GAAA,YAAAA,EAAK,KACZ,EACA,MAAOC,GAAQ,CArFpB,IAAAf,EAsFK,OAAAL,EAAW,EAAI,EAEfE,EAASkB,CAAG,GAELf,EAAAe,GAAA,YAAAA,EAAK,WAAL,YAAAf,EAAe,IACvB,CAAC,EACA,QAAQ,IAAM,CACdT,EAAW,EAAK,CACjB,CAAC,CACH,MACC,MAAM,oBAAoB,CAE5B,EAAG,CAAC,CAAC,EAIJ,UAAWD,EACX,UAAWE,EACX,QAASE,EACT,MAAOE,EACP,KAAME,CACP,CACD,EC5GA,IAAAuB,GAAoC,iBAI7B,IAAMC,GAAmB,IAAgB,CAC/C,GAAM,CAAE,WAAAC,EAAY,aAAAC,EAAc,OAAAC,EAAQ,aAAAC,EAAc,SAAAC,EAAU,UAAAC,CAAU,EAC3EC,EAAgB,SAAS,EAAE,SACtBC,EAAkB,CACvB,aAAAJ,EACA,OAAAD,EACA,gBAAiBG,EACjB,SAAAD,EACA,WAAAJ,EACA,aAAAC,CACD,EACM,CAACO,EAAUC,CAAW,KAAI,aAAmBF,CAAe,EAElE,uBAAU,IACWD,EAAgB,UAAU,IAAM,CACnD,GAAM,CAAE,WAAAN,EAAY,aAAAC,EAAc,OAAAC,EAAQ,aAAAC,EAAc,SAAAC,EAAU,UAAAC,CAAU,EAC3EC,EAAgB,SAAS,EAAE,SAS5BG,EARwB,CACvB,aAAAN,EACA,OAAAD,EACA,gBAAiBG,EACjB,SAAAD,EACA,WAAAJ,EACA,aAAAC,CACD,CAC2B,CAC5B,CAAC,EAGC,CAAC,CAAC,EAEEO,CACR,ECpCA,IAAAE,GAAoC,iBAG7B,IAAMC,GAA2B,IAAM,CAC7C,GAAM,CAACC,EAAOC,CAAQ,KAAI,aAA6BC,EAAgB,gBAAgB,CAAC,EAExF,uBAAU,IACWA,EAAgB,UAAU,IAAM,CACnDD,EAASC,EAAgB,gBAAgB,CAAC,CAC3C,CAAC,EAGC,CAAC,CAAC,EAEEF,CACR,ECfA,IAAAG,GAAkC,iBCAlC,IAAAC,EAiBO,+BAEPC,EAcO,yBAEPC,EAAmD,iBClCnD,IAAAC,GAAgF,iBAezE,SAASC,GACfC,EACAC,EACqB,CACrB,GAAM,CAACC,EAAUC,CAAW,KAAI,aAAmBH,CAAe,EAE5D,CAACI,EAAYC,CAAa,KAAI,aAAS,EAAK,EAE5CC,KAAU,WAAuB,EAEjCC,KAAY,WAAiB,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAE3CC,KAAe,WAAiB,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAE9CC,KAAiB,gBACrBC,GAA0B,CAC1B,IAAMC,EAAUL,EAAQ,QACxB,GAAI,CAACK,EAAS,OAEd,IAAMC,EAAOD,EAAQ,sBAAsB,EACrCE,EAAgB,OAAO,WACvBC,EAAiB,OAAO,YAExBC,EAAsB,CAC3B,EAAG,KAAK,IAAI,EAAG,KAAK,IAAIL,EAAY,EAAGG,EAAgBD,EAAK,KAAK,CAAC,EAClE,EAAG,KAAK,IAAI,EAAG,KAAK,IAAIF,EAAY,EAAGI,EAAiBF,EAAK,MAAM,CAAC,CACrE,EAEAT,EAAYY,CAAmB,EAC/Bd,GAAA,MAAAA,EAAmBc,EACpB,EACA,CAACd,CAAgB,CAClB,EAEMe,KAAc,gBACnB,CAACC,EAAiBC,IAAoB,CACrCb,EAAc,EAAI,EAClBE,EAAU,QAAU,CAAE,EAAGU,EAAS,EAAGC,CAAQ,EAC7CV,EAAa,QAAUN,EAEvB,IAAMiB,EAAa,CAACC,EAAqBC,IAAwB,CAChE,IAAMC,EAASF,EAAcb,EAAU,QAAQ,EACzCgB,EAASF,EAAcd,EAAU,QAAQ,EAE/CE,EAAe,CACd,EAAGD,EAAa,QAAQ,EAAIc,EAC5B,EAAGd,EAAa,QAAQ,EAAIe,CAC7B,CAAC,CACF,EAEMC,EAAmBC,GAA6B,CACrDA,EAAE,eAAe,EACjBN,EAAWM,EAAE,QAASA,EAAE,OAAO,CAChC,EAEMC,EAAmBD,GAA6B,CACrDA,EAAE,eAAe,EACjB,IAAME,EAAQF,EAAE,QAAQ,CAAC,EACrBE,GACHR,EAAWQ,EAAM,QAASA,EAAM,OAAO,CAEzC,EAEMC,EAAY,IAAM,CACvBvB,EAAc,EAAK,EACnB,SAAS,oBAAoB,YAAamB,CAAe,EACzD,SAAS,oBAAoB,UAAWI,CAAS,EACjD,SAAS,oBAAoB,YAAaF,CAAe,EACzD,SAAS,oBAAoB,WAAYE,CAAS,CACnD,EAEA,SAAS,iBAAiB,YAAaJ,CAAe,EACtD,SAAS,iBAAiB,UAAWI,CAAS,EAC9C,SAAS,iBAAiB,YAAaF,EAAiB,CACvD,QAAS,EACV,CAAC,EACD,SAAS,iBAAiB,WAAYE,CAAS,CAChD,EACA,CAAC1B,EAAUO,CAAc,CAC1B,EAEMoB,KAAkB,gBACtBJ,GAAkC,CAClCA,EAAE,eAAe,EACjBT,EAAYS,EAAE,QAASA,EAAE,OAAO,CACjC,EACA,CAACT,CAAW,CACb,EAEMc,KAAmB,gBACvBL,GAAkC,CAClCA,EAAE,eAAe,EACjB,IAAME,EAAQF,EAAE,QAAQ,CAAC,EACrBE,GACHX,EAAYW,EAAM,QAASA,EAAM,OAAO,CAE1C,EACA,CAACX,CAAW,CACb,EAEA,MAAO,CACN,SAAAd,EACA,WAAAE,EACA,QAAAE,EACA,gBAAAuB,EACA,iBAAAC,CACD,CACD,CC3HA,IAAAC,GAAoC,iBAI7B,SAASC,IAAwB,CACvC,GAAM,CAACC,EAAOC,CAAQ,KAAI,aAAmBC,EAAgB,SAAS,CAAC,EAEvE,uBAAU,IACWA,EAAgB,UAAU,IAAM,CACnDD,EAASC,EAAgB,SAAS,CAAC,CACpC,CAAC,EAGC,CAAC,CAAC,EAEEF,CACR,CCdA,IAAAG,GAAwC,iBCFxC,IAAAC,GAA+D,iBAC/DC,GAA4C,yBA0B1CC,GAAA,6BApBIC,MAAe,kBAA4C,MAAS,EAE7DC,GAAW,IAAM,CAC7B,IAAMC,KAAM,eAAWF,EAAY,EACnC,GAAI,CAACE,EAAK,MAAM,IAAI,MAAM,4CAA4C,EACtE,OAAOA,CACR,EAEaC,GAAgB,CAAC,CAAE,SAAAC,CAAS,IAA+B,CACvE,GAAM,CAACC,EAAMC,CAAO,KAAI,aAAS,EAAK,EAChC,CAACC,EAASC,CAAU,KAAI,aAAS,EAAE,EACnC,CAACC,EAAUC,CAAW,KAAI,aAAqB,MAAM,EAErDC,EAAY,CAACC,EAAaC,EAAkB,SAAW,CAC5DL,EAAWI,CAAG,EACdF,EAAYG,CAAG,EACfP,EAAQ,EAAI,CACb,EAEA,SACC,SAACN,GAAa,SAAb,CAAsB,MAAO,CAAE,UAAAW,CAAU,EACxC,UAAAP,KACD,QAAC,aACA,KAAMC,EACN,MAAOI,EACP,iBAAkB,IAClB,QAAS,IAAMH,EAAQ,EAAK,EAC5B,aAAc,CAAE,SAAU,MAAO,WAAY,OAAQ,EAErD,oBAAC,UACA,QAAQ,SACR,SAAUG,EACV,QAAS,IAAMH,EAAQ,EAAK,EAC5B,GAAI,CAAE,MAAO,MAAO,EAEnB,SAAAC,EACF,EACD,GACD,CAEF,ED/BA,IAAMO,GAAe,CACpB,UAAW,GACX,UAAW,GACX,QAAS,GACT,MAAO,KACP,KAAM,IACP,EAEMC,GAAU,CAACC,EAA4BC,IAA2C,CACvF,GAAIA,EAAO,OAAS,YACnB,OAAOC,EAAAC,EAAA,GACHH,GADG,CAEN,UAAWC,EAAO,OACnB,GACM,GAAIA,EAAO,OAAS,YAC1B,OAAOC,EAAAC,EAAA,GACHH,GADG,CAEN,UAAW,GACX,KAAMC,EAAO,OACd,GACM,GAAIA,EAAO,OAAS,UAC1B,OAAOC,EAAAC,EAAA,GACHH,GADG,CAEN,QAAS,GACT,MAAOC,EAAO,OACf,GACM,GAAIA,EAAO,OAAS,QAC1B,MAAO,CACN,UAAW,GACX,UAAW,GACX,QAAS,GACT,MAAO,KACP,KAAM,IACP,EAED,MAAM,MAAM,iBAAiB,CAC9B,EA2EO,IAAMG,GAAiB,CAC7BC,EAAwB,CAAC,IACkE,CAC3F,GAAM,CAAE,UAAAC,EAAY,KAAM,QAAAC,EAAU,KAAM,qBAAAC,EAAuB,EAAM,EAAIH,EAErE,CAAE,UAAAI,CAAU,EAAIC,GAAS,EAEzB,CAACC,EAAOC,CAAQ,KAAI,eAAWC,GAASC,EAAY,EAuD1D,MAAO,IArDa,gBACnB,CAACC,EAAaC,EAAYC,EAAS,CAAC,IAAM,CACzCL,EAAS,CACR,KAAM,YACN,QAAS,EACV,CAAC,EAEDM,GACE,KAAKH,EAAKC,EAASC,CAAM,EACzB,KAAME,GAAQ,CAjJnB,IAAAC,EAkJKR,EAAS,CACR,KAAM,YACN,QAASO,EAAI,IACd,CAAC,EAEDb,GAAA,MAAAA,EAAYa,EAAI,KAAMH,GACjBR,GACJC,GAAUW,EAAAD,EAAI,OAAJ,YAAAC,EAAU,QAAS,SAAS,CAExC,CAAC,EACA,MAAOC,GAAQ,CA5JpB,IAAAD,EAAAE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA6JK,IAAMC,EAAQ,CACb,QAAQX,GAAAF,EAAAC,EAAI,WAAJ,YAAAD,EAAc,SAAd,KAAAE,EAAwB,IAChC,UACCE,GAAAD,EAAAF,EAAI,WAAJ,YAAAE,EAAc,OAAd,YAAAC,EAAoB,WACpBE,GAAAD,EAAAJ,EAAI,WAAJ,YAAAI,EAAc,OAAd,YAAAC,EAAoB,UACpBL,EAAI,SACJ,4BACD,MAAMO,GAAAD,EAAAN,EAAI,WAAJ,YAAAM,EAAc,OAAd,KAAAC,EAAsB,KAC5B,YAAYE,GAAAD,EAAAR,EAAI,WAAJ,YAAAQ,EAAc,aAAd,KAAAC,EAA4B,GACxC,MAAMC,EAAAV,GAAA,YAAAA,EAAK,OAAL,KAAAU,EAAa,GACnB,MAAMC,EAAAX,GAAA,YAAAA,EAAK,OAAL,KAAAW,EAAa,EACpB,EAEAvB,EAAUwB,EAAM,QAAS,OAAO,EAEhCrB,EAAS,CACR,KAAM,UACN,QAASqB,CACV,CAAC,EAED1B,GAAA,MAAAA,EAAU0B,EAAOjB,EAClB,CAAC,EACA,QAAQ,IAAM,CACdJ,EAAS,CACR,KAAM,YACN,QAAS,EACV,CAAC,CACF,CAAC,CACH,EACA,CAACN,EAAWC,EAASE,CAAS,CAC/B,EAEqBE,CAAK,CAC3B,EE5LA,IAAAuB,EAWO,+BAEPC,EAkBO,yBAEPC,GAAoD,iBCnCpD,IAAAC,GAAkC,yBAElC,IAAMC,GAAY,CAAC,CACjB,SAAAC,EACA,QAAAC,EACA,SAAAC,CACF,IAQK,CACH,IAAMC,KAAQ,aAAS,EACvB,MAAO,CACL,SAAUC,EAAA,CACR,QAAS,MACT,OAAQ,MACR,SAAU,kBACV,aAAc,OACd,OAAQ,+BACR,OAAQ,OACR,UAAW,CACT,UAAW,mCACX,OAAQ,aAAaD,EAAM,QAAQ,QAAQ,IAAI,EACjD,EACA,WAAY,CACV,QAAS,eACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC9D,GACGH,GAEL,QAASI,EAAA,CACP,QAAS,MACT,OAAQ,MACR,SAAU,kBACV,aAAc,OACd,UAAW,oCACX,OAAQ,aAAaD,EAAM,QAAQ,QAAQ,IAAI,GAC/C,OAAQ,OACR,UAAW,CACT,UAAW,oCACX,OAAQ,aAAaA,EAAM,QAAQ,QAAQ,IAAI,EACjD,EACA,WAAY,CACV,QAAS,eACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC9D,GACGF,GAEL,SAAUG,EAAA,CACR,QAAS,MACT,OAAQ,MACR,SAAU,kBACV,aAAc,OACd,gBAAiBD,EAAM,QAAQ,KAAK,GAAG,EACvC,UAAW,eAAeA,EAAM,QAAQ,QAAQ,KAAK,GACrD,OAAQ,aAAaA,EAAM,QAAQ,QAAQ,IAAI,GAC/C,OAAQ,OACR,UAAW,CACT,UAAW,eAAeA,EAAM,QAAQ,QAAQ,IAAI,GACpD,OAAQ,aAAaA,EAAM,QAAQ,QAAQ,IAAI,EACjD,EACA,WAAY,CACV,QAAS,eACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC9D,GACGD,EAEP,CACF,EAEOG,GAAQN,GDkLZ,IAAAO,EAAA,6BAhMGC,GAAqB,CAAC,CAAE,KAAAC,EAAM,YAAAC,CAAY,IAAW,CA5D3D,IAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GA6DC,IAAMC,EAAQC,GAAY,EACpB,CAAE,UAAAC,CAAU,EAAIC,GAAS,EACzB,CAAE,SAAAC,EAAU,QAAAC,EAAS,SAAAC,CAAS,EAAIC,GAAU,CACjD,WAAUZ,EAAAK,EAAM,YAAN,YAAAL,EAAiB,WAAY,CAAC,EACxC,UAASC,EAAAI,EAAM,YAAN,YAAAJ,EAAiB,UAAW,CAAC,EACtC,WAAUC,EAAAG,EAAM,YAAN,YAAAH,EAAiB,WAAY,CAAC,CACzC,CAAC,EACKW,KAAQ,YAAS,EAEjB,CAACC,EAAqBC,CAAsB,KAAI,aAAS,EAAK,EAC9D,CAACC,EAAqBC,CAAsB,KAAI,aAAS,EAAK,EAC9D,CAACC,EAA4BC,CAA6B,KAAI,aAAS,EAAK,EAC5E,CAACC,EAA4BC,CAA6B,KAAI,aAAS,EAAK,EAC5E,CAACC,EAAmBC,CAAoB,KAAI,aAAS,EAAK,EAE1DC,EAAyB,CAACC,EAA2BC,IAAc,CACxEC,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,EAEMG,EAAwB,CAACJ,EAA2BC,IAAc,CAhFzE,IAAA1B,EAAAC,EAAAC,EAAAC,GAiFE,IAAM2B,EAAYF,IAAA,GAAKH,GAASC,GAEhCX,EAAuB,EAAI,EAE3B,IAAMgB,EAAU,CACf,OAAQ,sBACR,UAAW,OAAOD,EAAU,IAAI,GAChC,UAAW,OAAOA,EAAU,IAAI,EAChC,cAAeA,EAAU,MACzB,QAAQ7B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,IAAAD,EAAAG,EAAM,WAAN,YAAAH,EAAgB,eAAhB,KAAAC,GAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,gBAAiBF,CAAO,EACvC,KAAMG,GAAQ,CAhGlB,IAAAlC,EAiGIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,CAAC,EACA,MAAOS,GAAQ,CApGnB,IAAAnC,EAAAC,EAAAC,GAAAC,GAqGI,IAAMiC,IACLnC,GAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,EAAoB,WACpBE,IAAAD,GAAAiC,EAAI,WAAJ,YAAAjC,GAAc,OAAd,YAAAC,GAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdrB,EAAuB,EAAK,CAC7B,CAAC,CACH,EAEMsB,EAAwB,CAACZ,EAA2BC,IAAc,CAjHzE,IAAA1B,EAAAC,EAAAC,EAAAC,GAkHE,IAAM2B,EAAYF,IAAA,GAAKH,GAASC,GAEhCT,EAAuB,EAAI,EAE3B,IAAMc,EAAU,CACf,OAAQ,sBACR,UAAW,aACX,UAAW,OAAOD,EAAU,IAAI,EAChC,cAAeA,EAAU,MACzB,QAAQ7B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,IAAAD,EAAAG,EAAM,WAAN,YAAAH,EAAgB,eAAhB,KAAAC,GAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,gBAAiBF,CAAO,EACvC,KAAMG,GAAQ,CAjIlB,IAAAlC,EAkIIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,CAAC,EACA,MAAOS,GAAQ,CArInB,IAAAnC,EAAAC,EAAAC,GAAAC,GAsII,IAAMiC,IACLnC,GAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,EAAoB,WACpBE,IAAAD,GAAAiC,EAAI,WAAJ,YAAAjC,GAAc,OAAd,YAAAC,GAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdnB,EAAuB,EAAK,CAC7B,CAAC,CACH,EAEMqB,EAA+B,CAACb,EAA2BC,EAAWa,IAAiB,CAlJ9F,IAAAvC,EAAAC,EAAAC,GAAAC,EAmJE,IAAM2B,EAAYF,IAAA,GAAKH,GAASC,GAEhCP,EAA8B,EAAI,EAElC,IAAMY,EAAU,CACf,OAAQ,sBACR,UAAWQ,EACX,gBAAiBA,IAAS,WAAa,OAAOT,EAAU,IAAI,GAAK,SAASA,EAAU,IAAI,GACxF,QAAQ7B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,GAAAD,GAAAG,EAAM,WAAN,YAAAH,GAAgB,eAAhB,KAAAC,EAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,gCAAiCF,CAAO,EACvD,KAAMG,GAAQ,CAjKlB,IAAAlC,EAkKIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,CAAC,EACA,MAAOS,GAAQ,CArKnB,IAAAnC,EAAAC,GAAAC,GAAAC,GAsKI,IAAMiC,IACLnC,IAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,GAAoB,WACpBE,IAAAD,GAAAiC,EAAI,WAAJ,YAAAjC,GAAc,OAAd,YAAAC,GAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdjB,EAA8B,EAAK,CACpC,CAAC,CACH,EAEMqB,EAA+B,CAACf,EAA2BC,EAAWa,IAAiB,CAlL9F,IAAAvC,EAAAC,EAAAC,GAAAC,EAmLE,IAAM2B,EAAYF,IAAA,GAAKH,GAASC,GAEhCL,EAA8B,EAAI,EAElC,IAAMU,EAAU,CACf,OAAQ,sBACR,UAAWQ,EACX,WAAYA,IAAS,WAAa,OAAOT,EAAU,IAAI,GAAK,OAAOA,EAAU,IAAI,GACjF,QAAQ7B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,cAAe6B,EAAU,MACzB,SAAS3B,GAAAD,GAAAG,EAAM,WAAN,YAAAH,GAAgB,eAAhB,KAAAC,EAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,gCAAiCF,CAAO,EACvD,KAAMG,GAAQ,CAlMlB,IAAAlC,EAmMIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,CAAC,EACA,MAAOS,GAAQ,CAtMnB,IAAAnC,EAAAC,GAAAC,GAAAC,GAuMI,IAAMiC,IACLnC,IAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,GAAoB,WACpBE,IAAAD,GAAAiC,EAAI,WAAJ,YAAAjC,GAAc,OAAd,YAAAC,GAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdf,EAA8B,EAAK,CACpC,CAAC,CACH,EAEMoB,EAAsB,CAAChB,EAA2BC,IAAc,CAnNvE,IAAA1B,EAAAC,EAAAC,EAAAC,GAoNE,IAAM2B,EAAYF,IAAA,GAAKH,GAASC,GAEhCH,EAAqB,EAAI,EAEzB,IAAMQ,EAAU,CACf,OAAQ,sBACR,UAAW,iBACX,UAAW,OAAOD,EAAU,IAAI,EAChC,UAAW,aAAaA,EAAU,KAAO,CAAC,GAC1C,cAAeA,EAAU,MACzB,QAAQ7B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,IAAAD,EAAAG,EAAM,WAAN,YAAAH,EAAgB,eAAhB,KAAAC,GAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,oBAAqBF,CAAO,EAC3C,KAAMG,GAAQ,CApOlB,IAAAlC,EAqOIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,kBAAkBC,IAAA,GAAKH,GAASC,EAAM,CACvD,CAAC,EACA,MAAOS,GAAQ,CAxOnB,IAAAnC,EAAAC,EAAAC,GAAAC,GAyOI,IAAMiC,IACLnC,GAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,EAAoB,WACpBE,IAAAD,GAAAiC,EAAI,WAAJ,YAAAjC,GAAc,OAAd,YAAAC,GAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdb,EAAqB,EAAK,CAC3B,CAAC,CACH,EAEA,SACC,QAAC,YAEA,GAAI,CACH,OAAQ,gBACT,EAEA,oBAAC,aACA,GAAI,CACH,QAAS,KACV,EAEA,oBAAC,cAAW,mBAAMpB,GAAAL,GAAA,YAAAA,EAAM,OAAN,KAAAK,GAAc,GAAG,MAAE,EACtC,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EAEA,mBAAC,cACA,QAAQ,QACR,GAAI,CACH,GAAI,EACJ,aAAc,MACf,EAEC,UAAAC,GAAAN,GAAA,YAAAA,EAAM,SAAN,KAAAM,GAAgB,GAClB,EACD,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EAEA,mBAAC,UACA,GAAI,CACH,cAAe,YAChB,EACA,KAAK,QAEL,mBAAC,cAAW,QAAQ,QAAS,UAAAN,GAAA,YAAAA,EAAM,QAAS,EAAI,WAAa,WAAW,EACzE,EACD,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EAEA,mBAAC,aACA,KAAK,QACL,YAAY,eACZ,UAAS,GACT,OAAOA,GAAA,YAAAA,EAAM,QAAS,GACtB,UACCA,GAAA,YAAAA,EAAM,QAAS,IACfA,GAAA,YAAAA,EAAM,UAAW,WACjBA,GAAA,YAAAA,EAAM,UAAW,iBACjBA,GAAA,YAAAA,EAAM,UAAW,eACjBA,GAAA,YAAAA,EAAM,UAAW,SACjBA,GAAA,YAAAA,EAAM,UAAW,OAElB,SAAW4C,GAAM,CAChBlB,EAAuB1B,EAAM,CAAE,MAAO4C,EAAE,OAAO,KAAM,CAAC,CACvD,EACD,EACD,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EAEA,oBAAC,OACA,GAAI,CACH,QAAS,OACT,WAAY,SACZ,eAAgB,cACjB,EAEC,UAAA5C,EAAK,OAAS,MACd,OAAC,WAAQ,MAAM,OACd,mBAAC,UACA,SAASA,GAAA,YAAAA,EAAM,UAAW,OAAS,WAAa,YAChD,MAAM,UACN,IACCA,GAAA,YAAAA,EAAM,UAAW,OAChB8B,EAAA,GAAKnB,GACJkC,EAAAf,EAAA,GACGlB,GADH,CAEA,OAAQ,aAAaG,EAAM,QAAQ,QAAQ,KAAK,GAChD,UAAW,CACV,QAAS,gBACT,UAAW,eAAeA,EAAM,QAAQ,QAAQ,KAAK,GACrD,OAAQ,aAAaA,EAAM,QAAQ,QAAQ,KAAK,EACjD,EACA,WAAY,CACX,QAAS,gBACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC7D,CACD,GAEF,QAAS,IAAM,CACdgB,EAAsB/B,EAAM,CAAC,CAAC,CAC/B,EACA,UAAUA,GAAA,YAAAA,EAAM,UAAW,OAE1B,SAAAgB,KACA,OAAC,oBACA,KAAK,OACL,MAAM,UACP,KACC,OAAC,QACD,GAAI,CACH,OAAOhB,GAAA,YAAAA,EAAM,UAAW,OAAS,UAAY,SAC9C,EACD,EAEF,EACD,EAEAA,EAAK,OAAS,MACd,OAAC,WAAQ,MAAM,aACd,oBAAC,UACA,QAASC,EAAc,YAAc,WACrC,GACCA,EACC4C,EAAAf,EAAA,GAAKlB,GAAL,CAAc,QAAS,UAAW,GACjCiC,EAAAf,EAAA,GAAKnB,GAAL,CAAe,QAAS,UAAW,GAEtC,QAAS,IAAM,CACd4B,EAAsBvC,EAAM,CAC3B,YAAa,EACd,CAAC,CACF,EACA,SAAU,CAACC,GAAeiB,EAEzB,UAAAlB,GAAA,MAAAA,EAAM,YAAc,SAAW,QAC/BkB,KACA,OAAC,oBAAiB,KAAK,OAAO,KAC7B,OAAC,cAAU,GACd,EACD,KAED,OAAC,WAAQ,MAAOlB,EAAK,SAAW,OAAS,OAAS,UACjD,mBAAC,UACA,QAASA,EAAK,SAAW,OAAS,YAAc,WAChD,GAEEA,EAAK,SAAW,iBAChBA,GAAA,YAAAA,EAAM,UAAW,WACjBA,GAAA,YAAAA,EAAM,UAAW,aAEjB8B,EAAA,GAAKnB,IACJX,GAAA,YAAAA,EAAM,UAAW,WAAYA,GAAA,YAAAA,EAAM,UAAW,aAE/C8B,EAAA,GAAKjB,GACJiB,EAAA,GAAKnB,GAER,QAAS,IAAM,CACVX,EAAK,SAAW,OACnBwC,EAA6BxC,EAAM,CAAE,OAAQ,EAAM,EAAG,YAAY,EAElEwC,EAA6BxC,EAAM,CAAE,OAAQ,EAAK,EAAG,UAAU,CAEjE,EACA,UACCA,GAAA,YAAAA,EAAM,UAAW,iBACjBA,GAAA,YAAAA,EAAM,UAAW,QACjBoB,EAGA,SAAAA,KACA,OAAC,oBACA,KAAK,OACL,GAAI,CACH,MAAOL,EAAM,QAAQ,QAAQ,IAC9B,EACD,EACCf,EAAK,SAAW,UACjB,OAAC,cAAU,KACV,OAAC,UAAM,EACV,EACD,KACA,OAAC,WAAQ,MAAOA,EAAK,SAAW,OAAS,OAAS,UACjD,mBAAC,UACA,QAASA,EAAK,SAAW,OAAS,YAAc,WAChD,GAEEA,EAAK,SAAW,iBAChBA,GAAA,YAAAA,EAAM,UAAW,WACjBA,GAAA,YAAAA,EAAM,UAAW,aAEjB8B,EAAA,GAAKnB,IACJX,GAAA,YAAAA,EAAM,UAAW,WAAYA,GAAA,YAAAA,EAAM,UAAW,aAC/C8B,EAAA,GAAKjB,GACJiB,EAAA,GAAKnB,GAER,QAAS,IAAM,CACVX,EAAK,SAAW,OACnB0C,EAA6B1C,EAAM,CAAE,OAAQ,EAAM,EAAG,UAAU,EAEhE0C,EAA6B1C,EAAM,CAAE,OAAQ,EAAK,EAAG,UAAU,CAEjE,EACA,UACCA,GAAA,YAAAA,EAAM,UAAW,iBACjBA,GAAA,YAAAA,EAAM,UAAW,SACjBA,GAAA,YAAAA,EAAM,UAAW,QACjBsB,EAGA,SAAAA,KACA,OAAC,oBACA,KAAK,OACL,GAAI,CACH,MAAOP,EAAM,QAAQ,QAAQ,IAC9B,EACD,EACCf,EAAK,SAAW,UACjB,OAAC,WAAO,KACP,OAAC,QAAI,EACR,EACD,GACCA,GAAA,YAAAA,EAAM,QAAS,KACf,OAAC,WAAQ,MAAM,WACd,mBAAC,UACA,SACCA,GAAA,YAAAA,EAAM,UAAW,SAAUA,GAAA,YAAAA,EAAM,UAAW,eAC3C,YACC,WAEH,MAAM,QACN,IACCA,GAAA,YAAAA,EAAM,UAAW,SAAUA,GAAA,YAAAA,EAAM,UAAW,eAC3C6C,EAAAf,EAAA,GACIlB,GADJ,CAEC,OAAQ,aAAaG,EAAM,QAAQ,MAAM,KAAK,GAC9C,UAAW,CACV,QAAS,cACT,UAAW,eAAeA,EAAM,QAAQ,MAAM,KAAK,GACnD,OAAQ,aAAaA,EAAM,QAAQ,MAAM,KAAK,EAC/C,EACA,WAAY,CACX,QAAS,cACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC7D,CACD,GACCe,EAAA,GACGnB,GAGN,QAAS,IAAM,CACdgC,EAAoB3C,EAAM,CACzB,YAAa,GACb,YAAa,GACb,OAAQ,GACR,OAAQ,EACT,CAAC,CACF,EACA,UACCA,GAAA,YAAAA,EAAM,UAAW,SAAUA,GAAA,YAAAA,EAAM,UAAW,gBAAkBwB,EAG9D,SAAAA,KACA,OAAC,oBACA,KAAK,OACL,MAAM,QACP,KACC,OAAC,YAAQ,EACZ,EACD,KACC,OAAC,UACD,QAASxB,GAAA,MAAAA,EAAM,YAAc,YAAc,WAC3C,MAAM,QACN,GAAI,CACH,QAAS,MACV,EACA,QAAS,IAAM,CACd2C,EAAoB3C,EAAM,CACzB,YAAa,GACb,YAAa,GACb,OAAQ,GACR,OAAQ,EACT,CAAC,CACF,EACA,UACCA,GAAA,YAAAA,EAAM,UAAW,SAAUA,GAAA,YAAAA,EAAM,UAAW,gBAAkBwB,EAG9D,SAAAA,KACA,OAAC,oBACA,KAAK,OACL,MAAM,QACP,KACC,OAAC,YAAQ,EACZ,GAEF,EACD,IAvSKxB,EAAK,IAwSX,CAEF,EAEO,SAAS8C,IAAmB,CAniBnC,IAAA5C,EAoiBC,IAAMK,EAAQC,GAAY,EACpB,CAAE,UAAAC,CAAU,EAAIC,GAAS,EAEzB,CAACqC,EAAsBC,CAAuB,KAAI,aAAS,EAAK,EAEhEC,EAAc,IAAM,CACzBpB,EAAgB,wBAAwB,EAAK,CAC9C,EAEMqB,EAA0B,IAAM,CA7iBvC,IAAAhD,EAAAC,EAAAC,EAAAC,EA8iBE2C,EAAwB,EAAI,EAE5B,IAAMf,EAAU,CACf,OAAQ,sBACR,UAAW,gBACX,QAAQ9B,GAAAD,EAAAK,EAAM,WAAN,YAAAL,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,SAASE,GAAAD,EAAAG,EAAM,WAAN,YAAAH,EAAgB,eAAhB,KAAAC,EAAgC,EAC1C,EAEA6B,GACE,KAAKC,EAAU,wBAAyBF,CAAO,EAC/C,KAAMG,GAAQ,CAzjBlB,IAAAlC,EA0jBIO,GAAUP,EAAAkC,EAAI,OAAJ,YAAAlC,EAAU,QAAS,SAAS,EACtC2B,EAAgB,qBAAqB,EACrCoB,EAAY,CACb,CAAC,EACA,MAAOZ,GAAQ,CA9jBnB,IAAAnC,EAAAC,EAAAC,EAAAC,EA+jBI,IAAMiC,IACLnC,GAAAD,EAAAmC,EAAI,WAAJ,YAAAnC,EAAc,OAAd,YAAAC,EAAoB,WACpBE,GAAAD,EAAAiC,EAAI,WAAJ,YAAAjC,EAAc,OAAd,YAAAC,EAAoB,UACpBgC,EAAI,SACJ,4BACD5B,EAAU6B,EAAS,OAAO,CAC3B,CAAC,EACA,QAAQ,IAAM,CACdU,EAAwB,EAAK,CAC9B,CAAC,CACH,EAEM/C,KAAc,YAAQ,IAAM,CA3kBnC,IAAAC,EA4kBE,OAAOA,EAAAK,GAAA,YAAAA,EAAO,iBAAP,YAAAL,EAAuB,KAAMF,GAC/BA,EAAK,OAAS,EACVA,EAAK,SAAW,SAEjB,GAET,EAAG,CAACO,EAAM,cAAc,CAAC,EAEzB,SACC,mBACC,mBAAC,UACA,KAAMA,EAAM,qBACZ,kBAAgB,qBAChB,mBAAiB,2BACjB,UAAS,GACT,SAAU,KAEV,oBAAC,SAAM,GAAI,CAAE,aAAc,CAAE,EAC5B,qBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,WACV,EAEA,qBAAC,cAAW,QAAQ,QAAS,WAAAL,EAAAK,GAAA,YAAAA,EAAO,UAAP,KAAAL,EAAkB,GAAG,eAAW,KAE7D,OAAC,cAAW,QAAS+C,EACpB,mBAAC,UAAM,EACR,GACD,KAEA,OAAC,OACA,GAAI,CACH,UAAW,wBACX,OAAQ,WACR,aAAc,MACf,EAEA,mBAAC,kBACA,UAAW,QACX,GAAI,CACH,QAAS,4BACT,UAAW,uBACZ,EAEA,oBAAC,SACA,GAAI,CACH,OAAQ,8BACT,EAEA,oBAAC,aACA,oBAAC,YACA,GAAI,CACH,OAAQ,gCACT,EAEA,oBAAC,aACA,GAAI,CACH,QAAS,KACV,EACA,gBAED,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EACA,kBAED,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EACA,qBAED,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EACA,yBAED,KACA,OAAC,aACA,GAAI,CACH,QAAS,KACV,EACA,wBAED,GACD,EACD,KACA,OAAC,aACC,SAAA1C,GAAA,YAAAA,EAAO,eAAe,IAAKP,MAC3B,OAACD,GAAA,CACA,KAAMC,EACN,YAAaC,EACd,GAEF,GACD,EACD,EACD,KACA,OAAC,OACA,UAAU,SACV,EAAG,EAEH,oBAAC,UACA,QAAQ,WACR,MAAM,QACN,KAAK,QACL,QAASiD,EACT,SAAUH,EACV,GAAI,CAAE,GAAI,EAAG,aAAc,OAAQ,cAAe,YAAa,EAE9D,UAAAA,KACA,OAAC,oBACA,KAAK,OACL,MAAM,QACN,GAAI,CACH,YAAa,KACd,EACD,KACC,OAAC,cACD,GAAI,CACH,QAAS,aACT,UAAW,CAAE,QAAS,YAAa,EACnC,YAAa,MACb,MAAO,OACP,OAAQ,OACR,SAAU,OACV,WAAY,MACZ,WAAY,OACZ,cAAe,SACf,cAAe,aACf,MAAO,QACP,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,aAAc,KACf,EAEA,mBAAC,iBACA,GAAI,CACH,MAAO,QACP,SAAU,OACV,WAAY,KACb,EACD,EACD,EACA,kBAEF,EACD,GACD,EACD,EACD,CAEF,CAEO,SAASI,GAAmB,CAAE,KAAAC,CAAK,EAAQ,CA/uBlD,IAAAlD,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+C,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAgvBC,IAAMpD,EAAQC,GAAY,EAEpB,CAACoD,CAAY,EAAIC,GAAoC,CAC1D,UAAW,IAAM,CAChBhC,EAAgB,0BAA0B,EAAK,CAChD,CACD,CAAC,EAEK,CAACiC,EAAmBC,CAAoB,KAAI,aAAS,SAAS,EAE9D,CAACC,EAAmB,CAAE,KAAMC,EAAgB,UAAWC,CAAwB,CAAC,EACrFL,GAAoB,CACnB,qBAAsB,EACvB,CAAC,EAEI,CACLM,EACA,CAAE,KAAMC,EAAsB,UAAWC,CAA8B,CACxE,EAAIR,GAKD,CACF,qBAAsB,EACvB,CAAC,EAEKZ,EAAc,IAAM,CACzBpB,EAAgB,0BAA0B,EAAK,CAChD,EAEMyC,EAAqB,CAAC1C,EAAWa,IAAiB,CA/wBzD,IAAAvC,GAAAC,GAAAC,EAAAC,EAAAC,EAAA+C,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,EAAAC,EAAAY,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAgxBE,GAAIlD,IAAS,UAAW,CACvB,IAAMR,GAAU,CACf,eAAe9B,IAAAD,GAAAK,EAAM,WAAN,YAAAL,GAAgB,eAAhB,KAAAC,GAAgC,GAC/C,QAAQE,GAAAD,EAAAG,EAAM,WAAN,YAAAH,EAAgB,WAAhB,KAAAC,EAA4B,GACpC,KAAM,UACN,aAAaC,EAAAsB,GAAA,YAAAA,EAAM,eAAN,KAAAtB,EAAsB,GACnC,iBAAiBgD,GAAAD,EAAA9C,EAAM,WAAN,YAAA8C,EAAgB,YAAhB,KAAAC,EAA6B,GAC9C,UAAW,QAAOE,GAAAD,EAAAhD,EAAM,WAAN,YAAAgD,EAAgB,aAAhB,KAAAC,EAA8B,EAAE,EAClD,cAAcE,GAAAD,GAAAlD,EAAM,WAAN,YAAAkD,GAAgB,eAAhB,KAAAC,EAAgC,EAC/C,EACAE,EAAazB,EAAU,cAAeF,EAAO,CAC9C,SAAWQ,IAAS,QAAS,CAC5B,IAAMR,GAAU,CACf,eAAesC,GAAAZ,EAAApD,EAAM,WAAN,YAAAoD,EAAgB,eAAhB,KAAAY,EAAgC,GAC/C,QAAQE,IAAAD,EAAAjE,EAAM,WAAN,YAAAiE,EAAgB,WAAhB,KAAAC,GAA4B,GACpC,KAAM,QACN,aAAaC,GAAA9C,GAAA,YAAAA,EAAM,aAAN,KAAA8C,GAAoB,GACjC,iBAAiBE,IAAAD,GAAApE,EAAM,WAAN,YAAAoE,GAAgB,YAAhB,KAAAC,GAA6B,GAC9C,UAAW,QAAOE,IAAAD,GAAAtE,EAAM,WAAN,YAAAsE,GAAgB,aAAhB,KAAAC,GAA8B,EAAE,EAClD,cAAcE,IAAAD,GAAAxE,EAAM,WAAN,YAAAwE,GAAgB,eAAhB,KAAAC,GAAgC,EAC/C,EACApB,EAAazB,EAAU,cAAeF,EAAO,CAC9C,SAAWQ,IAAS,QAAS,CAC5B,IAAMR,GAAU,CACf,eAAeiD,IAAAD,GAAA1E,EAAM,WAAN,YAAA0E,GAAgB,eAAhB,KAAAC,GAAgC,GAC/C,QAAQE,IAAAD,GAAA5E,EAAM,WAAN,YAAA4E,GAAgB,WAAhB,KAAAC,GAA4B,GACpC,KAAM,QACN,aAAaC,GAAAzD,GAAA,YAAAA,EAAM,UAAN,KAAAyD,GAAiB,GAC9B,iBAAiBE,IAAAD,GAAA/E,EAAM,WAAN,YAAA+E,GAAgB,YAAhB,KAAAC,GAA6B,GAC9C,UAAW,QAAOE,IAAAD,GAAAjF,EAAM,WAAN,YAAAiF,GAAgB,aAAhB,KAAAC,GAA8B,EAAE,EAClD,cAAcE,IAAAD,GAAAnF,EAAM,WAAN,YAAAmF,GAAgB,eAAhB,KAAAC,GAAgC,EAC/C,EACA/B,EAAazB,EAAU,cAAeF,EAAO,CAC9C,CACD,EAEA,uBAAU,IAAM,CACf+B,EAAkB7B,EAAU,YAAa,CACxC,OAAQ,OACR,OAAQ,EACT,CAAC,EAEDgC,EAAwBhC,EAAU,oBAAqB,CACtD,OAAQ,SACR,OAAQ,EACT,CAAC,CACF,EAAG,CAAC,CAAC,KAGJ,mBACC,mBAAC,UACA,KAAMiB,EACN,kBAAgB,qBAChB,mBAAiB,2BACjB,UAAS,GACT,SAAU,KAEV,oBAAC,SAAM,GAAI,CAAE,aAAc,CAAE,EAC5B,qBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,WACT,UAAW,uBACZ,EAEA,oBAAC,cAAW,QAAQ,QAAQ,0BAAc,KAC1C,OAAC,cAAW,QAASH,EACpB,mBAAC,UAAM,EACR,GACD,KAEA,QAAC,OACA,GAAI,CACH,UAAW,wBACX,QAAS,WACT,OAAQ,OACR,aAAc,MACf,EAEA,qBAAC,OAAI,GAAI,CAAE,QAAS,OAAQ,IAAK,CAAE,EAClC,oBAAC,UACA,QAASa,IAAsB,UAAY,YAAc,WACzD,QAAS,IAAM,CACdC,EAAqB,SAAS,EAC9BI,EAAwBhC,EAAU,oBAAqB,CACtD,OAAQ,SACR,OAAQ,EACT,CAAC,CACF,EACA,mBAED,KACA,OAAC,UACA,QAAS2B,IAAsB,SAAW,YAAc,WACxD,QAAS,IAAM,CACdC,EAAqB,QAAQ,EAC7BI,EAAwBhC,EAAU,oBAAqB,CACtD,OAAQ,SACR,OAAQ,EACT,CAAC,CACF,EACA,kBAED,KACA,OAAC,UACA,QAAS2B,IAAsB,SAAW,YAAc,WACxD,QAAS,IAAM,CACdC,EAAqB,QAAQ,EAC7BC,EAAkB7B,EAAU,YAAa,CACxC,OAAQ,OACR,OAAQ,EACT,CAAC,CACF,EACA,kBAED,GACD,GACEkC,GAAiCH,OAClC,QAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,OAAQ,MACT,EAEA,oBAAC,qBAAiB,EAAG,KACtB,EAEA,CAACG,GACD,CAACH,GACDJ,IAAsB,cACrB,OAAC,OAAI,GAAI,CAAE,QAAS,OAAQ,IAAK,EAAG,SAAU,MAAO,EAEnD,UAAA5D,EAAAkE,GAAA,YAAAA,EAAsB,OAAtB,MAAAlE,EAA4B,WAC5BE,GAAAD,EAAAiE,GAAA,YAAAA,EAAsB,OAAtB,YAAAjE,EAA4B,UAA5B,YAAAC,EAAqC,QAAS,GAE9CE,GAAAD,EAAA+D,GAAA,YAAAA,EAAsB,OAAtB,YAAA/D,EAA4B,UAA5B,YAAAC,EAAqC,IAAI,CAACsF,EAAcC,OACvD,QAAC,OAEA,GAAI,CACH,EAAG,EACH,QAAS,OACT,WAAY,SACZ,UAAW,wBACX,QAAS,MACT,aAAc,OACd,UAAW,CAAE,QAAS,iBAAkB,CACzC,EAEA,qBAAC,cACA,QAAQ,QACR,GAAI,CACH,GAAI,EACJ,MAAO,QACP,SAAU,QACV,QAAS,OACT,WAAY,QACb,EAEA,oBAAC,gBAAa,GAAI,CAAE,YAAa,KAAM,EAAG,EACzCD,EAAQ,cACV,KAEA,OAAC,cACA,MAAM,UACN,GAAI,CACH,QAAS,eACT,UAAW,CAAE,QAAS,iBAAkB,CACzC,EACA,QAAS,IAAM,CACdtB,EAAmBsB,EAAS,SAAS,CACtC,EAEA,mBAAC,SAAK,EACP,IApCKC,CAqCN,MAEA,OAAC,cACD,QAAQ,QACR,GAAI,CACH,SAAU,OACV,cAAe,SACf,cAAe,aACf,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,OAAQ,WACR,MAAO,OACP,OAAQ,MACT,EACA,4BAED,EAEF,EAED,CAACxB,GACD,CAACH,GACDJ,IAAsB,aACrB,OAAC,OAAI,GAAI,CAAE,QAAS,OAAQ,IAAK,EAAG,SAAU,MAAO,EAEnD,UAAAT,EAAAe,GAAA,YAAAA,EAAsB,OAAtB,MAAAf,EAA4B,SAC5BE,GAAAD,EAAAc,GAAA,YAAAA,EAAsB,OAAtB,YAAAd,EAA4B,QAA5B,YAAAC,EAAmC,QAAS,GAE5CE,GAAAD,EAAAY,GAAA,YAAAA,EAAsB,OAAtB,YAAAZ,EAA4B,QAA5B,YAAAC,EAAmC,IAAI,CAACqC,EAAYD,IAAY,CAh+B1E,IAAA3F,GAAAC,GAAAC,EAAAC,EAAAC,EAAA+C,EAi+BW,iBAAC,OAEA,GAAI,CACH,EAAG,EACH,QAAS,OACT,WAAY,SACZ,UAAW,wBACX,QAAS,MACT,aAAc,OACd,UAAW,CAAE,QAAS,iBAAkB,CACzC,EAEA,qBAAC,cACA,QAAQ,QACR,GAAI,CACH,GAAI,EACJ,MAAO,QACP,SAAU,QACV,QAAS,OACT,WAAY,QACb,EAEA,oBAAC,gBAAa,GAAI,CAAE,YAAa,KAAM,EAAG,EACzCyC,EAAM,YAEN1F,GAAAD,IAAAD,GAAAkE,GAAA,YAAAA,EAAsB,OAAtB,YAAAlE,GAA4B,UAA5B,YAAAC,GAAqC,KACnCyF,GAAiBA,EAAQ,aAAeE,EAAM,cADhD,MAAA1F,EAEG,gBAEH,OAAC,cACA,QAAQ,QACR,GAAI,CACH,SAAU,OACV,WAAY,MACZ,cAAe,SACf,cAAe,aACf,MAAO,MACR,EAEC,eACAiD,GAAA/C,GAAAD,EAAA+D,GAAA,YAAAA,EAAsB,OAAtB,YAAA/D,EAA4B,UAA5B,YAAAC,EAAqC,KACnCsF,GAAiBA,EAAQ,aAAeE,EAAM,cADhD,YAAAzC,EAEG,cACH,IACF,EACC,IACH,KAEA,OAAC,cACA,MAAM,UACN,GAAI,CACH,QAAS,eACT,UAAW,CAAE,QAAS,iBAAkB,CACzC,EACA,QAAS,IAAM,CACdiB,EAAmBwB,EAAO,OAAO,CAClC,EAEA,mBAAC,SAAK,EACP,IA1DKD,CA2DN,OAEA,OAAC,cACD,QAAQ,QACR,GAAI,CACH,SAAU,OACV,cAAe,SACf,cAAe,aACf,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,OAAQ,WACR,MAAO,OACP,OAAQ,MACT,EACA,2BAED,EAEF,EAED,CAACxB,GACD,CAACH,GACDJ,IAAsB,aACrB,OAAC,OAAI,GAAI,CAAE,QAAS,OAAQ,IAAK,EAAG,SAAU,MAAO,EACnD,SAAAG,GAAA,MAAAA,EAAgB,QAAQP,EAAAO,GAAA,YAAAA,EAAgB,OAAhB,YAAAP,EAAsB,QAAS,GACvDC,EAAAM,GAAA,YAAAA,EAAgB,OAAhB,YAAAN,EAAsB,IAAI,CAACoC,EAAYF,OACtC,QAAC,OAEA,GAAI,CACH,EAAG,EACH,QAAS,OACT,WAAY,SACZ,UAAW,wBACX,QAAS,MACT,aAAc,OACd,UAAW,CAAE,QAAS,iBAAkB,CACzC,EAEA,qBAAC,cACA,QAAQ,QACR,GAAI,CACH,GAAI,EACJ,MAAO,QACP,SAAU,QACV,QAAS,OACT,WAAY,QACb,EAEA,oBAAC,gBAAa,GAAI,CAAE,YAAa,KAAM,EAAG,EACzCE,EAAM,MACR,KAEA,OAAC,cACA,MAAM,UACN,GAAI,CACH,QAAS,eACT,UAAW,CAAE,QAAS,iBAAkB,CACzC,EACA,QAAS,IAAM,CACdzB,EAAmByB,EAAO,OAAO,CAClC,EAEA,mBAAC,SAAK,EACP,IApCKF,CAqCN,MAEA,OAAC,cACD,QAAQ,QACR,GAAI,CACH,SAAU,OACV,cAAe,SACf,cAAe,aACf,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,OAAQ,WACR,MAAO,OACP,OAAQ,MACT,EACA,2BAED,EAEF,GAEH,GACD,EACD,EACD,CAEF,CAEO,SAASG,GAAyB,CAAE,KAAA5C,EAAM,QAAA6C,EAAS,oBAAAC,CAAoB,EAAQ,CA5nCtF,IAAAhG,EAAAC,EAAAC,EAAAC,EA6nCC,GAAM,CAAC8F,EAAUC,CAAW,KAAI,aAAS,CACxC,YAAa,CAAE,MAAO,WAAY,MAAO,KAAM,EAC/C,SAAU,CAAE,MAAO,KAAM,MAAO,GAAI,EACpC,aAAc,GACd,YAAa,GACb,aAAc,EACf,CAAC,EACKC,EAAqB,CAC1B,CAAE,MAAO,iBAAkB,MAAO,IAAK,EACvC,CAAE,MAAO,WAAY,MAAO,KAAM,CACnC,EACMC,EAAkB,CACvB,CAAE,MAAO,MAAO,MAAO,GAAI,EAC3B,CAAE,MAAO,KAAM,MAAO,GAAI,CAC3B,EAEMC,EAAe,CAACC,EAA8BC,IAA6C,CAChGL,EAAaM,GAAU7D,EAAAf,EAAA,GAAK4E,GAAL,CAAW,CAACF,CAAK,EAAGC,CAAM,EAAE,CACpD,EAEME,EAAc,IAAM,CACzBP,EAAY,CACX,YAAa,CAAE,MAAO,WAAY,MAAO,KAAM,EAC/C,SAAU,CAAE,MAAO,KAAM,MAAO,GAAI,EACpC,aAAc,GACd,YAAa,GACb,aAAc,EACf,CAAC,CACF,EAEMnD,EAAc,IAAM,CACzB0D,EAAY,EACZV,EAAQ,EAAK,CACd,EAEA,SACC,mBACC,mBAAC,UACA,KAAM7C,EACN,kBAAgB,qBAChB,mBAAiB,2BACjB,UAAS,GACT,SAAU,KAEV,oBAAC,SAAM,GAAI,CAAE,aAAc,CAAE,EAC5B,oBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,QAAS,WACT,UAAW,uBACZ,EAEA,oBAAC,cACA,QAAQ,QACR,EAAG,EAEF,cAAI,oBAEN,EACD,KAEA,QAAC,OACA,GAAI,CACH,UAAW,wBACX,QAAS,OACT,OAAQ,OACR,aAAc,MACf,EAEA,qBAAC,OACA,QAAQ,OACR,IAAK,EAEL,oBAAC,gBACA,MAAO+C,EAAS,YAChB,QAASE,EACT,eAAiBO,GAAQA,EAAI,MAC7B,SAAU,CAACC,EAAGC,IAAQP,EAAa,cAAeO,CAAG,EACrD,KAAK,QACL,YAAcC,MACb,OAAC,YAAAlE,EAAAf,EAAA,GACIiF,GADJ,CAEA,MAAM,cACN,UAAS,IACV,EAED,GAAI,CAAE,KAAM,CAAE,EACf,KACA,OAAC,gBACA,QAAST,EACT,eAAiBM,GAAQA,EAAI,MAC7B,MAAOT,EAAS,SAChB,SAAU,CAACU,EAAGC,IAAQP,EAAa,WAAYO,CAAG,EAClD,KAAK,QACL,YAAcC,MACb,OAAC,YAAAlE,EAAAf,EAAA,GACIiF,GADJ,CAEA,MAAM,YACN,UAAS,IACV,EAED,GAAI,CAAE,KAAM,CAAE,EACf,GACD,IAEC5G,GAAAD,EAAAiG,GAAA,YAAAA,EAAU,WAAV,YAAAjG,EAAoB,QAApB,YAAAC,EAA2B,iBAAkB,UAC7C,QAAC,OACA,QAAQ,OACR,IAAK,EACL,GAAI,EAEJ,oBAAC,aACA,KAAK,QACL,MAAM,gBACN,KAAK,OACL,UAAW,CACV,WAAY,CAAE,OAAQ,EAAK,CAC5B,EACA,MAAOgG,EAAS,aAChB,SAAWvD,GAAM2D,EAAa,eAAgB3D,EAAE,OAAO,KAAK,EAC5D,UAAS,GACT,GAAI,CAAE,KAAM,CAAE,EACf,KACA,OAAC,aACA,KAAK,QACL,MAAM,eACN,KAAK,OACL,MAAOuD,EAAS,YAChB,SAAWvD,GAAM2D,EAAa,cAAe3D,EAAE,OAAO,KAAK,EAC3D,UAAS,GACT,GAAI,CAAE,KAAM,CAAE,EACf,GACD,IAEAvC,GAAAD,EAAA+F,GAAA,YAAAA,EAAU,WAAV,YAAA/F,EAAoB,QAApB,YAAAC,EAA2B,iBAAkB,UAC7C,QAAC,OACA,QAAQ,OACR,IAAK,EACL,GAAI,EAEJ,oBAAC,aACA,KAAK,QACL,MAAM,iBACN,KAAK,OACL,MAAO8F,EAAS,aAChB,SAAWvD,GAAM2D,EAAa,eAAgB3D,EAAE,OAAO,KAAK,EAC5D,UAAS,GACT,GAAI,CAAE,KAAM,CAAE,EACf,KACA,OAAC,OAAI,GAAI,CAAE,KAAM,CAAE,EAAG,GACvB,GAEF,KAEA,QAAC,OACA,UAAU,QACV,EAAG,EAEH,oBAAC,UACA,QAAQ,WACR,MAAM,QACN,KAAK,QACL,QAASK,EACT,GAAI,CACH,GAAI,EACJ,GAAI,EACJ,aAAc,OACd,cAAe,YAChB,EACA,kBAED,KACA,OAAC,UACA,QAAQ,YACR,MAAM,UACN,KAAK,QACL,QAAS,IAAMiD,EAAoBC,CAAQ,EAC3C,GAAI,CAAE,GAAI,EAAG,aAAc,OAAQ,cAAe,YAAa,EAC/D,kBAED,GACD,GACD,EACD,EACD,CAEF,CAEO,SAASa,GAAoB,CACnC,KAAA5D,EACA,QAAA6C,EACA,YAAAgB,EAAc,KACd,wBAAAC,CACD,EAAQ,CAKP,SACC,mBACC,mBAAC,UACA,KAAM9D,EACN,kBAAgB,qBAChB,mBAAiB,2BACjB,SAAU,KAEV,oBAAC,SAAM,GAAI,CAAE,aAAc,CAAE,EAC5B,qBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,WACT,UAAW,uBACZ,EAEA,oBAAC,cAAW,QAAQ,QAAQ,yBAAa,KACzC,OAAC,cAAW,QAvBG,IAAM,CACzB6C,EAAQ,EAAK,CACd,EAsBM,mBAAC,UAAM,EACR,GACD,KAEA,OAAC,OACA,GAAI,CACH,UAAW,wBACX,QAAS,WACT,OAAQ,OACR,aAAc,MACf,EAEC,SAAAgB,EAAY,OAAS,EACrBA,GAAA,YAAAA,EAAa,IAAI,CAACrB,EAAcC,OAC/B,OAAC,OAEA,GAAI,CACH,EAAG,EACH,QAAS,OACT,WAAY,SACZ,UAAW,wBACX,QAAS,MACT,OAAQ,WACR,aAAc,OACd,OAAQ,UACR,UAAW,CAAE,QAAS,iBAAkB,CACzC,EACA,QAAS,IAAM,CACdqB,EAAwBtB,CAAO,CAChC,EAEA,oBAAC,cACA,QAAQ,QACR,GAAI,CACH,GAAI,EACJ,MAAO,QACP,SAAU,QACV,QAAS,OACT,WAAY,QACb,EAEA,oBAAC,gBAAa,GAAI,CAAE,YAAa,KAAM,EAAG,EACzCA,EAAQ,cACV,GA5BKC,CA6BN,GAEA,KACH,GACD,EACD,EACD,CAEF,CAEO,SAASsB,GAAkB,CAAE,KAAA/D,EAAM,QAAA6C,CAAQ,EAAQ,CAKzD,SACC,mBACC,mBAAC,UACA,KAAM7C,EACN,kBAAgB,qBAChB,mBAAiB,2BACjB,UAAS,GACT,SAAU,KAEV,oBAAC,SAAM,GAAI,CAAE,aAAc,CAAE,EAC5B,qBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,gBAChB,WAAY,SACZ,QAAS,WACT,UAAW,uBACZ,EAEA,oBAAC,cAAW,QAAQ,QAAQ,yBAAa,KACzC,OAAC,cAAW,QAxBG,IAAM,CACzB6C,EAAQ,EAAK,CACd,EAuBM,mBAAC,UAAM,EACR,GACD,KAEA,OAAC,OACA,GAAI,CACH,UAAW,wBACX,OAAQ,OACR,aAAc,OACd,UAAW,SACX,SAAU,OACV,WAAY,MACb,EACA,EAAG,EACH,0BAED,GACD,EACD,EACD,CAEF,CLr4BK,IAAAmB,EAAA,6BA9fCC,GAA0B,CAC/BC,EACAC,EACAC,IAE8BF,EAAe,IAAKG,GAAS,CAhE5D,IAAAC,EAAAC,EAAAC,EAiEE,IAAIH,GAAA,YAAAA,EAAM,QAAS,EAAG,CACrB,IAAMI,EAAY,QAAQJ,EAAK,IAAI,UAMnC,OAAOK,EAAAC,EAAA,GACHN,GADG,CAEN,KAAM,EACN,QAAQC,EAAAH,EAAQM,CAAS,IAAjB,KAAAH,EAAsBF,GAAA,YAAAA,EAAM,OACpC,OAAOG,EAAAH,GAAA,YAAAA,EAAM,eAAN,KAAAG,EAAsB,EAK9B,EACD,KAAO,CACN,IAAME,EAAY,QAAQJ,EAAK,IAAI,UAC7BO,EAAW,QAAQP,EAAK,IAAI,eAClC,OAAOK,EAAAC,EAAA,GACHN,GADG,CAEN,QAAQG,EAAAL,EAAQM,CAAS,IAAjB,KAAAD,EAAsB,OAC9B,MAAOL,EAAQS,CAAQ,IAAM,IAAMT,EAAQS,CAAQ,EAAI,EACxD,EACD,CACD,CAAC,EAKIC,GAAkBC,GAA4B,CACnD,IAAMC,EAAO,KAAK,MAAMD,EAAU,EAAE,EAC9BE,EAAOF,EAAU,GACvB,MAAO,GAAGC,EAAK,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,IAAIC,EAAK,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,EAC/E,EAEO,SAASC,GAAa,CAAE,aAAAC,CAAa,EAA0B,CAtGtE,IAAAZ,GAAAC,GAAAC,GAAAW,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAuGC,IAAMC,KAAQ,YAAS,EACjBC,EAAQC,GAAY,EACpB,CAAE,UAAAC,CAAU,EAAIC,GAAS,EACzB,CAAE,SAAAC,EAAU,QAAAC,EAAS,SAAAC,CAAS,EAAIC,GAAU,CACjD,WAAUnG,GAAA4F,EAAM,YAAN,YAAA5F,GAAiB,WAAY,CAAC,EACxC,UAASC,GAAA2F,EAAM,YAAN,YAAA3F,GAAiB,UAAW,CAAC,EACtC,WAAUC,GAAA0F,EAAM,YAAN,YAAA1F,GAAiB,WAAY,CAAC,CACzC,CAAC,EAEKkG,KAAe,UAAyB,IAAI,EAC5CC,KAAW,UAAgC,IAAI,EAC/CC,KAAsB,UAA6C,IAAI,EACvEC,KAAkB,UAA8C,IAAI,EACpEC,KAAuB,UAAe,CAAC,EACvCC,EAAuB,GACvBC,EAAqB,IACrBC,EAAoB,IAEpB,CAACC,EAAUC,CAAW,KAAI,YAA6B,IAAI,EAC3D,CAACC,EAAYC,CAAa,KAAI,YAAkB,EAAI,EACpD,CAACC,EAAgBC,CAAiB,KAAI,YAA6B,IAAI,EACvE,CAACC,EAAgBC,CAAiB,KAAI,YAA6B,IAAI,EACvE,CAACC,EAAqBC,CAAsB,KAAI,YAAS,EAAK,EAC9D,CAACC,EAAqBC,CAAsB,KAAI,YAAS,EAAK,EAC9D,CAACC,GAAuBC,EAAwB,KAAI,YAAS,EAAK,EAClE,CAACC,EAAaC,CAAc,KAAI,YAAS,IAAI,EAC7C,CAACC,EAAaC,CAAc,KAAI,YAAiB,EAAE,EACnD,CAACC,EAAcC,CAAe,KAAI,YAAS,CAAC,EAE5C,CAAE,SAAAC,EAAU,WAAAC,GAAY,QAAAC,EAAS,gBAAAC,EAAiB,iBAAAC,CAAiB,EAAIC,GAC5EzC,EAAM,qBACL0C,GAAgBC,EAAgB,wBAAwBD,CAAW,CACrE,EAEM,CACL,SAAUE,EACV,WAAYC,GACZ,QAASC,GACT,gBAAiBC,GACjB,iBAAkBC,EACnB,EAAIP,GAAazC,EAAM,eAAiB0C,GACvCC,EAAgB,kBAAkBD,CAAW,CAC9C,EAEM,CAACO,GAAa,CAAE,UAAWC,EAAmB,CAAC,EAAIC,GAItD,CACF,UAAW,IAAM,CAChBlB,EAAe,EAAE,EACjBV,EAAkB,IAAI,CACvB,CACD,CAAC,EAEK,CAAC6B,GAAc,CAAE,UAAWC,EAAoB,CAAC,EAAIF,GAIxD,CACF,UAAW,IAAM,CAChBR,EAAgB,WAAW,CAAC3C,EAAM,SAAS,CAC5C,EACA,QAAUsD,GAAU,CACnB,QAAQ,IAAI,+BAA2BA,CAAK,CAC7C,CACD,CAAC,EAEK,CAACC,GAAc,CAAE,UAAWC,EAAoB,CAAC,EAAIL,GAIxD,CACF,UAAW,IAAM,CAChBR,EAAgB,SAAS,CAAC3C,EAAM,OAAO,CACxC,EACA,QAAUsD,GAAU,CACnB,QAAQ,IAAI,+BAA2BA,CAAK,CAC7C,CACD,CAAC,EAEK,CAACG,GAAkB,CAAE,UAAWC,EAAkB,CAAC,EAAIP,GAI1D,EAEG,CAACQ,GAAmB,CAAE,UAAAC,EAAU,CAAC,EAAIT,GAIxC,EAEG,CAACU,GAAS,CAAE,UAAWC,EAAe,CAAC,EAAIX,GAW9C,EAEGY,GAAyB,IAAM,CACpC9C,EAAY,IAAI,CACjB,EAEM+C,GAAoBC,GAAyC,CAClE9C,EAAc,EAAI,EAClBI,EAAkB0C,EAAM,aAAa,EACrCtB,EAAgB,UAAU,MAAM,CACjC,EAEMuB,GAAoB,IAAM,CAC3BlE,EAAM,SAAW,WACpB2C,EAAgB,UAAU,MAAM,EAGjCpB,EAAkB,IAAI,CACvB,EAEM4C,GAAyBF,GAAyC,CACvE5C,EAAkB4C,EAAM,aAAa,CACtC,EAEMG,GAAyB,IAAM,CACpC/C,EAAkB,IAAI,CACvB,EAEMgD,GAAmB,IAAM,CAC9B,IAAMC,EAAU,CACf,OAAQ,aACR,OAAQtE,EAAM,OACf,EAEAyD,GAAiBc,EAAU,YAAaD,CAAO,CAChD,EAEME,GAA2BC,GAAmB,CACnDpD,EAAkB,IAAI,EACtB,IAAMiD,EAAU,CACf,OAAQ,aACR,WAAYG,EACZ,OAAQzE,EAAM,OACf,EACA2D,GAAkBY,EAAU,mBAAoBD,CAAO,CACxD,EAEMI,GAAmBC,GAAmB,CAC3C,GAAIA,EAAO,SAAW,GACrBzE,EAAU,uBAAwB,OAAO,UAC/B,CAAC,QAAQ,KAAKyE,CAAM,EAC9BzE,EAAU,uBAAwB,OAAO,MACnC,CACN,IAAMoE,EAAU,CACf,OAAQ,OACR,aAAcK,EACd,OAAQ3E,EAAM,OACf,EAEAiD,GAAYsB,EAAU,cAAeD,CAAO,CAC7C,CACD,EAEMM,GAAmB,IAAM,CAC9B,IAAMN,EAAU,CACf,OAAQtE,EAAM,UAAY,SAAW,OACrC,OAAQA,EAAM,OACf,EACAoD,GAAamB,EAAU,UAAWD,CAAO,CAC1C,EAEMO,GAAmB,IAAM,CAC9B,IAAMP,EAAU,CACf,OAAQtE,EAAM,QAAU,SAAW,OACnC,OAAQA,EAAM,OACf,EAEAuD,GAAagB,EAAU,UAAWD,CAAO,CAC1C,EAEMQ,GAAiB5K,GAMjB,CArSP,IAAAE,EAAAC,GAAAC,GAAAW,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAsSE,IAAMyI,EAAU,CACf,OAAQ,UACR,OAAQtE,EAAM,QACd,WAAW1F,IAAAD,IAAAD,EAAA4F,EAAM,UAAN,YAAA5F,EAAe,aAAf,YAAAC,GAA2B,aAA3B,KAAAC,GAAyC,GACpD,cAAcY,IAAAD,GAAA+E,EAAM,UAAN,YAAA/E,GAAe,eAAf,KAAAC,GAA+B,GAC7C,iBAAiBE,IAAAD,GAAA6E,EAAM,WAAN,YAAA7E,GAAgB,YAAhB,KAAAC,GAA6B,GAC9C,eAAeE,IAAAD,GAAA2E,EAAM,WAAN,YAAA3E,GAAgB,eAAhB,KAAAC,GAAgC,GAE/C,aAAaE,IAAAD,GAAArB,GAAA,YAAAA,EAAM,cAAN,YAAAqB,GAAmB,QAAnB,KAAAC,GAA4B,GACzC,cAAcE,IAAAD,GAAAvB,GAAA,YAAAA,EAAM,WAAN,YAAAuB,GAAgB,QAAhB,KAAAC,GAAyB,GACvC,eAAeC,GAAAzB,GAAA,YAAAA,EAAM,eAAN,KAAAyB,GAAsB,GACrC,cAAcC,GAAA1B,GAAA,YAAAA,EAAM,cAAN,KAAA0B,GAAqB,GACnC,eAAeC,GAAA3B,GAAA,YAAAA,EAAM,eAAN,KAAA2B,GAAsB,GACrC,aAAc,OACf,EACAoG,EAAe,EAAE,EACjB4B,GAAQU,EAAU,SAAUD,CAAO,EACnC3B,EAAgB,QAAQ,EACxBlB,EAAuB,EAAK,CAC7B,KAEA,aAAU,IAAM,CACf,IAAMsD,EAAsBC,GAAyB,CACpDA,EAAE,eAAe,CAClB,EAEA,cAAO,iBAAiB,eAAgBD,CAAkB,EAEnD,IAAM,CACZ,OAAO,oBAAoB,eAAgBA,CAAkB,CAC9D,CACD,EAAG,CAAC,CAAC,KAEL,aAAU,IAAM,CACf,IAAIE,EAEJ,OAAIjF,EAAM,SAAS,QAAUA,EAAM,SAAS,SAAW,SACtDiF,EAAW,YAAY,IAAM,CAC5B,IAAMC,EAAU,KAAK,OAAO,KAAK,IAAI,EAAIlF,EAAM,eAAkB,GAAI,EACrEmC,EAAgB+C,CAAO,CACxB,EAAG,GAAI,EAEP/C,EAAgB,CAAC,EAGX,IAAM,CACR8C,GAAU,cAAcA,CAAQ,CACrC,CACD,EAAG,CAACjF,EAAM,SAAS,MAAM,CAAC,KAE1B,aAAU,KACTS,EAAS,QAAU,IAAI,MAAM,2BAA2B,EACxDA,EAAS,QAAQ,KAAO,GACxBA,EAAS,QAAQ,OAAS,GAEnB,IAAM,CACRA,EAAS,UACZA,EAAS,QAAQ,MAAM,EACvBA,EAAS,QAAQ,YAAc,EAC/BA,EAAS,QAAU,KAErB,GACE,CAAC,CAAC,KAEL,aAAU,IAAM,CACf,GAAIzF,GAAgBgF,EAAM,SAAU,CACnC,GAAM,CAAE,WAAAmF,EAAY,aAAAC,EAAc,OAAAX,EAAQ,aAAAY,GAAc,SAAAC,GAAU,UAAAC,EAAU,EAC3EvF,EAAM,SASPhF,EARiB,CAChB,aAAAqK,GACA,OAAAZ,EACA,gBAAiBc,GACjB,SAAAD,GACA,WAAAH,EACA,aAAAC,CACD,CACqB,CACtB,CACD,EAAG,CAACpF,EAAM,SAAUhF,CAAY,CAAC,KAEjC,aAAU,IAAM,CACXgF,EAAM,QACTwF,GACE,KAAKjB,EAAU,aAAc,CAC7B,OAAQvE,EAAM,QACd,OAAQ,sBACR,MAAO,YACR,CAAC,EACA,KAAMyF,GAAQ,CA9XnB,IAAArL,EAAAC,EA+XSoL,GAAOA,EAAI,QAAQrL,EAAAqL,GAAA,YAAAA,EAAK,OAAL,YAAArL,EAAW,QAAS,GAC1C2H,EAAe0D,EAAI,KAAK,IAAI,EAC5B9D,EAAuB,EAAI,IAE3BgB,EAAgB,YAAWtI,EAAAoL,GAAA,YAAAA,EAAK,OAAL,YAAApL,EAAW,KAAK,EAAE,EAC7CsH,EAAuB,EAAK,EAE9B,CAAC,EACA,MAAO+D,GAAQ,CACfxF,EAAUwF,EAAI,SAAS,KAAK,QAAS,OAAO,CAC7C,CAAC,EAEF,QAAQ,IAAI,yCAAyC,CAEvD,EAAG,CAAC1F,EAAM,OAAO,CAAC,EAElB,IAAM2F,GAAmB,IAAM,CAC9B,GAAI,CAAC3F,EAAM,QAAS,CACnB,QAAQ,IAAI,gDAAgD,EAC5D,MACD,CAGIU,EAAoB,UACvB,aAAaA,EAAoB,OAAO,EACxCA,EAAoB,QAAU,MAG/B,GAAI,CACHF,EAAa,QAAU,IAAI,UAAU,GAAGoF,GAAa,EAAE,aAAa5F,EAAM,OAAO,EAAE,EAEnFQ,EAAa,QAAQ,OAAS,IAAM,CACnC,QAAQ,IAAI,4CAAqC,EAEjDI,EAAqB,QAAU,EAG3BD,EAAgB,SACnB,cAAcA,EAAgB,OAAO,EAEtCA,EAAgB,QAAU,YAAY,IAAM,CAC3C,GAAIH,EAAa,SAAWA,EAAa,QAAQ,aAAe,UAAU,KACzE,GAAI,CAEHA,EAAa,QAAQ,KAAK,KAAK,UAAU,CAAE,KAAM,MAAO,CAAC,CAAC,EAC1D,QAAQ,IAAI,+BAAwB,CACrC,OAAS8C,EAAO,CACf,QAAQ,MAAM,uBAAwBA,CAAK,CAC5C,CAEF,EAAG,GAAK,CACT,EAEA9C,EAAa,QAAQ,UAAayD,GAAU,CAC3C,GAAI,CACH,IAAM/J,EAAO,KAAK,MAAM+J,EAAM,IAAI,EAGlC,GAAI/J,EAAK,OAAS,OAAQ,CACzB,QAAQ,IAAI,mCAA4B,EACxC,MACD,CAEA,IAAM2L,EAAY9L,GACjBiG,GAAA,YAAAA,EAAO,eACP9F,GAAA,YAAAA,EAAM,iBACNA,CACD,EAIAyI,EAAgB,eAAezI,CAAI,EAEnCyI,EAAgB,qBAAqB,CAAC,GAAGkD,CAAS,CAAC,GAE/C3L,EAAK,SAAW,WAAaA,EAAK,SAAW,YAC5CuG,EAAS,SACZA,EAAS,QAAQ,KAAK,EAAE,MAAO6C,IAAU,CACxC,QAAQ,MAAM,2BAA4BA,EAAK,CAChD,CAAC,EAICpJ,EAAK,SAAW,WACfuG,EAAS,UACZA,EAAS,QAAQ,MAAM,EACvBA,EAAS,QAAQ,YAAc,GAEhCkC,EAAgB,UAAU,EACrBzB,GACJC,EAAc,EAAI,GAIhBjH,EAAK,SAAW,WACfuG,EAAS,UACZA,EAAS,QAAQ,MAAM,EACvBA,EAAS,QAAQ,YAAc,GAEhCkC,EAAgB,QAAQ,EAE1B,OAAQqC,EAAA,CACP,QAAQ,IAAI,yBAAmBf,EAAM,IAAI,CAC1C,CACD,EAEAzD,EAAa,QAAQ,QAAWyD,GAAU,CAUzC,GATA,QAAQ,IAAI,wCAAkCA,EAAM,KAAMA,EAAM,MAAM,EAGlEtD,EAAgB,UACnB,cAAcA,EAAgB,OAAO,EACrCA,EAAgB,QAAU,MAIvBsD,EAAM,OAAS,KAAQrD,EAAqB,QAAUC,EAAsB,CAC/ED,EAAqB,SAAW,EAGhC,IAAMkF,EAAQ,KAAK,IAClBhF,EAAqB,KAAK,IAAI,EAAGF,EAAqB,QAAU,CAAC,EACjEG,CACD,EAEA,QAAQ,IACP,wDAAiDH,EAAqB,OAAO,IAAIC,CAAoB,QAAQiF,CAAK,IACnH,EAEApF,EAAoB,QAAU,WAAW,IAAM,CAC9CiF,GAAiB,CAClB,EAAGG,CAAK,CACT,MAAWlF,EAAqB,SAAWC,IAC1C,QAAQ,MAAM,wEAAmE,EACjFX,EAAU,wDAAyD,OAAO,EAE5E,EAEAM,EAAa,QAAQ,QAAW8C,GAAU,CACzC,QAAQ,MAAM,0BAAsBA,CAAK,CAE1C,CACD,OAASA,EAAO,CAGf,GAFA,QAAQ,MAAM,qCAAiCA,CAAK,EAEhD1C,EAAqB,QAAUC,EAAsB,CACxDD,EAAqB,SAAW,EAChC,IAAMkF,EAAQ,KAAK,IAClBhF,EAAqB,KAAK,IAAI,EAAGF,EAAqB,QAAU,CAAC,EACjEG,CACD,EACAL,EAAoB,QAAU,WAAW,IAAM,CAC9CiF,GAAiB,CAClB,EAAGG,CAAK,CACT,CACD,CACD,EA0BA,SAxBA,aAAU,KACL9F,EAAM,SACT2F,GAAiB,EAGX,IAAM,CAERjF,EAAoB,UACvB,aAAaA,EAAoB,OAAO,EACxCA,EAAoB,QAAU,MAE3BC,EAAgB,UACnB,cAAcA,EAAgB,OAAO,EACrCA,EAAgB,QAAU,MAEvBH,EAAa,UAEhBA,EAAa,QAAQ,MAAM,IAAM,sBAAsB,EACvDA,EAAa,QAAU,MAExBI,EAAqB,QAAU,CAChC,GACE,CAACZ,EAAM,OAAO,CAAC,EAEd,CAACA,EAAM,eAAiB,CAACA,EAAM,WAEjC,OAAC,OACC,WAAQ0B,MACR,OAACqE,GAAA,CACA,YAAajE,EACb,KAAMJ,EACN,QAASC,EACT,wBAA0BzH,GAAuD,CAChFyI,EAAgB,WAAWzI,CAAI,CAChC,EACD,EAEF,KAKD,oBACC,oBAAC,OACA,mBAAC,QACA,GAAI,GACJ,QAAS,IAET,mBAAC,SACA,KAAKe,GAAA+E,EAAM,YAAN,MAAA/E,GAAiB,YAAcqH,EAAU,KAC9C,UACCD,GAAa,GACXnH,GAAA8E,EAAM,YAAN,MAAA9E,GAAiB,YAClB,EACC,EAEH,GAAI,CACH,UAAUC,GAAA6E,EAAM,YAAN,MAAA7E,GAAiB,YAAc,QAAU,WACnD,MAAMC,GAAA4E,EAAM,YAAN,MAAA5E,GAAiB,YAAcgH,EAAS,EAAI,OAClD,KAAK/G,GAAA2E,EAAM,YAAN,MAAA3E,GAAiB,YAAc+G,EAAS,EAAI,OACjD,QAAS,eACT,MAAO,OACP,WAAY,EACZ,WAAY,SACZ,EAAG,GACH,aAAc,EACd,QAAS,mBACT,QAAQ9G,GAAA0E,EAAM,YAAN,MAAA1E,GAAiB,YAAc,OAAO,iBAAmB,EACjE,WAAYyE,EAAM,YAAY,OAAO,CAAC,aAAc,WAAW,EAAG,CACjE,SAAUA,EAAM,YAAY,SAAS,KACtC,CAAC,EACD,WAAY,MACb,EAEA,oBAAC,OACA,GAAI,CACH,QAAS,OACT,WAAY,QACb,EAEA,qBAAC,OACA,GAAI,CACH,QAAS,OACT,WAAY,SACZ,IAAK,EACL,OAAQ,UACT,EAEC,YAAAxE,GAAAyE,EAAM,YAAN,YAAAzE,GAAiB,iBACjB,QAAC,cACA,UAAU,MACV,KAAK,QACL,GAAI,CACH,OAAQ,YACT,EACA,YAAagH,EACb,aAAcC,EAEd,oBAAC,kBAAc,EAAG,KACnB,KAGD,OAAC,OACC,YAAChH,GAAAwE,EAAM,YAAN,MAAAxE,GAAiB,wBAClB,OAAC,WAAQ,MAAM,OACd,mBAAC,cACA,KAAK,QACL,QAAUwJ,GAAM,CAxoB5B,IAAA5K,EAAAC,EAAAC,GAAAW,GAAAC,GAAAC,GAAAC,GAAAC,KA0oBchB,GAAAD,EAAA4F,EAAM,WAAN,YAAA5F,EAAgB,SAAhB,YAAAC,EAAwB,iBAAkB,YAC1CY,IAAAX,GAAA0F,EAAM,WAAN,YAAA1F,GAAgB,SAAhB,YAAAW,GAAwB,iBAAkB,WAC1CE,IAAAD,GAAA8E,EAAM,WAAN,YAAA9E,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAA4E,EAAM,WAAN,YAAA5E,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,UAE1C2I,GAAiBgB,CAAC,CAEpB,EACA,GAAI,CACH,QAAS,eACT,UAAW,CACV,QAAS,SACV,CACD,EAEA,mBAAC,gBACA,GAAI,CACH,QAEEtJ,IAAAD,GAAAuE,EAAM,WAAN,YAAAvE,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,YAC1CE,IAAAD,GAAAqE,EAAM,WAAN,YAAArE,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,WAC1CE,IAAAD,GAAAmE,EAAM,WAAN,YAAAnE,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAAiE,EAAM,WAAN,YAAAjE,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1C,kBACC,cACJ,EACD,EACD,EACD,EAEF,KACA,OAAC,cACA,GAAI,CACH,MAAO,eACP,MAAO,OACP,YAAa,OACb,SAAU,OACV,WAAY,KACb,EAEC,SAAArB,GAAeuH,CAAY,EAC7B,KAEA,OAAC,QACA,GAAI,CACH,QAAS,UACV,EACA,MACC0B,IAAaF,MACZ,OAAC,OACA,GAAI,CACH,WAAY,OACZ,MAAO,OACP,QAAS,OACT,WAAY,SACZ,eAAgB,QACjB,EAEA,mBAAC,oBAAiB,KAAK,OAAO,EAC/B,KACC,OAAC,cACD,QAAQ,QACR,GAAI,CACH,WAAY,OACZ,MAAO,OACP,UAAW,QACZ,EAEC,UAAAvH,IAAAD,IAAAD,GAAA+D,EAAM,WAAN,YAAA/D,GAAgB,SAAhB,YAAAC,GAAwB,gBAAxB,KAAAC,GAAyC,MAC3C,EAEF,QAASgI,GACT,cAAY,OAAC,qBAAkB,MAAM,UAAU,EAC/C,SAAUA,GACX,GACD,KAEA,QAAC,OACA,GAAI,CACH,QAAS,OACT,IAAK,EACL,eAAgB,SAChB,WAAY,QACb,EAEA,oBAAC,WAAQ,MAAO,cACf,mBAAC,UACA,UAEE9H,IAAAD,GAAA4D,EAAM,WAAN,YAAA5D,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,WAC1CE,IAAAD,GAAA0D,EAAM,WAAN,YAAA1D,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1C,WACC,YAEH,QAAUyI,GAAM,CA1uB1B,IAAA5K,EAAAC,EAAAC,GAAAW,MA4uBYZ,GAAAD,EAAA4F,EAAM,WAAN,YAAA5F,EAAgB,SAAhB,YAAAC,EAAwB,iBAAkB,WAC1CY,IAAAX,GAAA0F,EAAM,WAAN,YAAA1F,GAAgB,SAAhB,YAAAW,GAAwB,iBAAkB,YAE1C+J,EAAE,gBAAgB,EAClBX,GAAiB,EAEnB,EACA,QAAS,CACR,OAEE5H,IAAAD,GAAAwD,EAAM,WAAN,YAAAxD,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,WAC1CE,IAAAD,GAAAsD,EAAM,WAAN,YAAAtD,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1C,WACC,SACJ,EACA,GAAIlC,EAAA,KAEFoC,IAAAD,GAAAoD,EAAM,WAAN,YAAApD,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,WAC1CE,IAAAD,GAAAkD,EAAM,WAAN,YAAAlD,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1CuD,EACCD,GAEH,SAAUqD,GAEV,mBAAC,iBAAa,EACf,EACD,KAEA,OAAC,WAAQ,MAAO1D,EAAM,UAAY,SAAW,OAC5C,mBAAC,UACA,QACCA,EAAM,aAAa/C,IAAAD,GAAAgD,EAAM,WAAN,YAAAhD,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC5D,YACC,WAEH,QAAU+H,GAAM,CACfA,EAAE,gBAAgB,EAClBJ,GAAiB,CAClB,EACA,GACC5E,EAAM,aAAa7C,IAAAD,GAAA8C,EAAM,WAAN,YAAA9C,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC5D1C,EAAA,GAAK4F,KACJhD,IAAAD,GAAA4C,EAAM,WAAN,YAAA5C,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC3C5C,EAAA,GAAK6F,GACJ7F,EAAA,GAAK2F,GAER,WACE7C,IAAAD,GAAA0C,EAAM,WAAN,YAAA1C,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,UAAY,CAACyC,EAAM,WAC9DqD,GAGA,SAAAA,MACA,OAAC,oBACA,KAAK,OACL,GAAI,CACH,MAAOtD,EAAM,QAAQ,QAAQ,IAC9B,EACD,EACCC,EAAM,aACP,OAAC,cAAU,KACV,OAAC,UAAM,EACV,EACD,KAEA,OAAC,WAAQ,MAAOA,EAAM,QAAU,SAAW,OAC1C,mBAAC,UACA,QACCA,EAAM,WAAWvC,IAAAD,GAAAwC,EAAM,WAAN,YAAAxC,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC1D,YACC,WAEH,QAAUuH,GAAM,CACfA,EAAE,gBAAgB,EAClBH,GAAiB,CAClB,EACA,GACC7E,EAAM,WAAWrC,IAAAD,GAAAsC,EAAM,WAAN,YAAAtC,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC1DlD,EAAA,GAAK4F,KACJxC,IAAAD,GAAAoC,EAAM,WAAN,YAAApC,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC3CpD,EAAA,GAAK6F,GACJ7F,EAAA,GAAK2F,GAER,WACErC,IAAAD,GAAAkC,EAAM,WAAN,YAAAlC,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,UAAY,CAACiC,EAAM,SAC9DwD,GAGA,SAAAA,MACA,OAAC,oBACA,KAAK,OACL,GAAI,CACH,MAAOzD,EAAM,QAAQ,QAAQ,IAC9B,EACD,EACCC,EAAM,WACP,OAAC,WAAO,KACP,OAAC,QAAI,EACR,EACD,EAEC,GAAChC,GAAAgC,EAAM,YAAN,MAAAhC,GAAiB,+BAClB,OAAC,WAAQ,MAAO,gBACf,mBAAC,UACA,QAASgC,EAAM,uBAAyB,YAAc,WACtD,QAAUgF,GAAM,CAt1B3B,IAAA5K,EAAAC,IAu1BgBA,GAAAD,EAAA4F,EAAM,WAAN,YAAA5F,EAAgB,SAAhB,YAAAC,EAAwB,iBAAkB,WAC7C2K,EAAE,gBAAgB,EAClBrC,EAAgB,0BAA0B,EAAI,EAEhD,EACA,GACC3C,EAAM,uBAAyBvF,EAAA,GAAK4F,KAClCnC,IAAAD,GAAA+B,EAAM,WAAN,YAAA/B,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC3CzD,EAAA,GAAK6F,GACJ7F,EAAA,GAAK2F,GAER,WAAUhC,IAAAD,GAAA6B,EAAM,WAAN,YAAA7B,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAEpD,mBAAC,2BAAuB,EACzB,EACD,EAGA,GAACC,GAAA2B,EAAM,YAAN,MAAA3B,GAAiB,6BAClB,OAAC,WAAQ,MAAO,kBACf,mBAAC,UACA,QAAS2B,EAAM,qBAAuB,YAAc,WACpD,QAAUgF,GAAM,CA72B3B,IAAA5K,EAAAC,IA82BgBA,GAAAD,EAAA4F,EAAM,WAAN,YAAA5F,EAAgB,SAAhB,YAAAC,EAAwB,iBAAkB,WAC7C2K,EAAE,gBAAgB,EAClBrC,EAAgB,wBAAwB,EAAI,EAE9C,EACA,GACC3C,EAAM,qBAAuBvF,EAAA,GAAK4F,KAChC9B,IAAAD,GAAA0B,EAAM,WAAN,YAAA1B,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAC3C9D,EAAA,GAAK6F,GACJ7F,EAAA,GAAK2F,GAER,WAAU3B,IAAAD,GAAAwB,EAAM,WAAN,YAAAxB,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAEpD,mBAAC,UAAM,EACR,EACD,EAGA,GAACC,GAAAsB,EAAM,YAAN,MAAAtB,GAAiB,0BAClB,OAAC,WAAQ,MAAO,WACf,mBAAC,UACA,UAEEE,IAAAD,GAAAqB,EAAM,WAAN,YAAArB,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,YAC1CE,IAAAD,GAAAmB,EAAM,WAAN,YAAAnB,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAAiB,EAAM,WAAN,YAAAjB,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1C,YACC,WAEH,QAAUgG,GAAM,CA54B3B,IAAA5K,EAAAC,EAAAC,GAAAW,GAAAC,GAAAC,MA84Bad,GAAAD,EAAA4F,EAAM,WAAN,YAAA5F,EAAgB,SAAhB,YAAAC,EAAwB,iBAAkB,YAC1CY,IAAAX,GAAA0F,EAAM,WAAN,YAAA1F,GAAgB,SAAhB,YAAAW,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAA8E,EAAM,WAAN,YAAA9E,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,YAE1C6J,EAAE,gBAAgB,EAClBvD,EAAuB,EAAI,EAE7B,EACA,KAEEvC,IAAAD,GAAAe,EAAM,WAAN,YAAAf,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,YAC1CE,IAAAD,GAAAa,EAAM,WAAN,YAAAb,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAAW,EAAM,WAAN,YAAAX,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,SAE1C9E,EAAAC,EAAA,GACI4F,GADJ,CAEC,YAAa,MACb,gBAAiB,aACjB,SAAU,kBACV,UAAW,uBACX,OAAQ,aAAaN,EAAM,QAAQ,MAAM,KAAK,GAC9C,OAAQ,OACR,UAAW,CACV,QAAS,cACT,UAAW,uBACX,OAAQ,aAAaA,EAAM,QAAQ,MAAM,KAAK,EAC/C,EACA,WAAY,CACX,QAAS,cACT,UAAW,sBAAsBA,EAAM,QAAQ,QAAQ,KAAK,EAC7D,CACD,GACCvF,EAAAC,EAAA,GACG2F,GADH,CAEA,SAAU,iBACX,GAEF,WACEZ,IAAAD,GAAAS,EAAM,WAAN,YAAAT,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,YAC1CE,IAAAD,GAAAO,EAAM,WAAN,YAAAP,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,aAC1CE,IAAAD,GAAAK,EAAM,WAAN,YAAAL,GAAgB,SAAhB,YAAAC,GAAwB,iBAAkB,UAC3CkE,GAGA,SAAAA,MACA,OAAC,oBACA,KAAK,OACL,MAAM,QACP,KACC,OAAC,YAAQ,EACZ,EACD,GAEF,GACD,EACD,EACD,EACD,KACA,OAAC,QACA,GAAI,GACJ,QAAS,IAET,oBAAC,SACA,IAAKhB,GACL,UAAWD,GAAmB,EAAI,EAClC,GAAI,CACH,SAAU,WACV,KAAMD,EAAe,EACrB,IAAKA,EAAe,EACpB,aAAc,EACd,QAAS,mBACT,OAAQ,OAAO,iBACf,WAAY7C,EAAM,YAAY,OAAO,CAAC,aAAc,WAAW,EAAG,CACjE,SAAUA,EAAM,YAAY,SAAS,KACtC,CAAC,EACD,WAAYmB,GAAc,GAACrB,GAAAG,EAAM,YAAN,MAAAH,GAAiB,kBAAmB,UAAY,SAC3E,WAAY,MACb,EAEA,qBAAC,OACA,GAAI,CACH,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,OAAQ,aACR,QAAS,UACV,EACA,YAAakD,GACb,aAAcC,GAEd,oBAAC,iBACA,GAAI,CACH,UAAW,gBACX,MAAO,SACR,EACD,EAAG,OACH,OAAC,cAAW,QAAS,IAAM7B,EAAc,EAAK,EAC7C,mBAAC,UAAM,EACR,GACD,KACA,OAAC,OACA,mBAAC,UACA,IAAK,WAAW6E,EAAE,8BAA8BhG,EAAM,OAAO,gBAAeF,GAAAE,EAAM,UAAN,YAAAF,GAAe,UAAU,GACrG,OAAQ,IACR,MAAO,IACP,MAAM,+BACN,MAAO,CACN,OAAQ,MACT,EACA,EACF,GACD,EACD,KAEA,OAAC,QACA,SAAUwB,EACV,KAAM,EAAQA,EACd,QAAS4C,GACT,QAAUc,GAAMA,EAAE,gBAAgB,EAClC,GAAI,CACH,OAAQ,KACT,EAEA,oBAAC,OACA,GAAI,CACH,IAAK,QACL,QAAS,OACT,SAAU,CACT,gBAAiB,OAClB,CACD,EAEA,oBAAC,aACA,KAAK,QACL,MAAOhD,EACP,YAAY,mBACZ,SAAWgD,GAAM,CAChB/C,EAAe+C,EAAE,OAAO,KAAK,CAC9B,EACD,KACA,OAAC,cACA,MAAM,OACN,QAAS,IAAM,CACdN,GAAgB1C,CAAW,CAC5B,EAEC,SAAAkB,MACA,OAAC,oBACA,KAAK,OACL,GAAI,CACH,MAAOnD,EAAM,QAAQ,QAAQ,IAC9B,EACD,KACC,OAAC,SAAM,MAAM,UAAU,EAC1B,GACD,EACD,KAEA,OAAC,QACA,SAAUqB,EACV,KAAM,EAAQA,EACd,QAASgD,GACT,QAAUY,GAAMA,EAAE,gBAAgB,EAClC,GAAI,CACH,OAAQ,KACT,EAEA,mBAAC,YAAS,QAAS,IAAMR,GAAwB,OAAO,EAAG,mBAAO,EAEnE,KAEA,OAAC,QACA,SAAUxD,EACV,KAAM,EAAQA,EACd,QAAS+C,GACT,QAAUiB,GAAMA,EAAE,gBAAgB,EAClC,GAAI,CACH,OAAQ,KACT,EAEA,oBAAC,OACA,GAAI,CACH,QAAS,OACT,eAAgB,aAChB,cAAe,SACf,QAAS,WACT,SAAU,CACT,gBAAiB,OAClB,CACD,EAEA,oBAAC,QACA,QAAM,OAAC,UAAO,MAAM,YAAY,EAChC,QAAQ,WACR,MAAM,eACN,GAAI,CACH,OAAQ,SACT,EACD,KAEA,OAAC,QACA,QAAM,OAAC,WAAQ,MAAM,OAAO,EAC5B,MAAM,gBACN,QAAQ,WACR,GAAI,CACH,OAAQ,SACT,EACD,KAEA,OAAC,QACA,QAAM,OAAC,YAAS,MAAM,UAAU,EAChC,QAAQ,WACR,MAAM,gBACN,GAAI,CACH,OAAQ,SACT,EACD,GACD,EACD,EAEC,EAAQhF,EAAM,yBAAyB,OAACiG,GAAA,EAAiB,EAEzD,EAAQjG,EAAM,2BACd,OAACkG,GAAA,CAAmB,KAAMlG,EAAM,uBAAwB,EAGxD,EAAQwB,MACR,OAAC2E,GAAA,CACA,KAAM3E,EACN,QAASC,EACT,oBAAqBqD,GACtB,EAGA,EAAQlD,OACR,OAACwE,GAAA,CACA,KAAMxE,GACN,QAASC,GACV,GAEF,CAEF,COhoCA,IAAAwE,GAAgC,iBAMxB,IAAAC,GAAA,6BADKC,MAAc,SAAuB,CAAC,CAAE,SAAAC,CAAS,OACtD,QAACC,GAAA,CAAe,SAAAD,EAAS,CAChC,EAEDD,GAAY,YAAc,cRYvB,IAAAG,GAAA,6BAhBUC,MAAmB,SAA4B,CAAC,CAAE,aAAAC,CAAa,IAAM,CACjF,IAAMC,KAAmB,gBACvBC,GAAc,CACd,GAAI,CACCF,GAAgB,OAAOA,GAAiB,YAC3CA,EAAaE,CAAI,CAEnB,OAASC,EAAO,CACf,QAAQ,MAAM,iDAAkDA,CAAK,CACtE,CACD,EACA,CAACH,CAAY,CACd,EAEA,SACC,QAACI,GAAA,CACA,oBAACC,GAAA,CAAa,aAAcJ,EAAkB,EAC/C,CAEF,CAAC,EAEDF,GAAiB,YAAc,mBVF/B,eAAsBO,GAAQ,CAC7B,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,CACD,EAAiC,CAChC,GAAI,CAACH,GAAU,OAAOA,GAAW,UAAYA,EAAO,KAAK,EAAE,SAAW,EACrE,MAAM,IAAI,MACT,+EACD,EAGD,GAAI,CAACC,GAAY,OAAOA,GAAa,UAAYA,EAAS,KAAK,EAAE,SAAW,EAC3E,MAAM,IAAI,MACT,iFACD,EAGD,GAAI,CAACC,GAAW,OAAOA,GAAY,UAAYA,EAAQ,KAAK,EAAE,SAAW,EACxE,MAAM,IAAI,MACT,gFACD,EAGD,GAAI,CACH,IAAME,EAAa,MAAMC,GAAa,KAAK,CAC1C,OAAQL,EAAO,KAAK,EACpB,SAAUC,EAAS,KAAK,EACxB,QAASC,EAAQ,KAAK,EACtB,QAASI,CACV,CAAC,EAED,GAAIF,EACH,QAAQ,IAAI,8BAA8B,EAC1CG,EAAgB,WACfP,EAAO,KAAK,EACZC,EAAS,KAAK,EACdC,EAAQ,KAAK,EACbC,EACAC,CACD,MAEA,eAAQ,MAAM,wEAAwE,EACtFG,EAAgB,aAAa,EACvB,IAAI,MACT,+EACD,CAEF,OAASC,EAAO,CAIf,MAHA,QAAQ,MAAM,4BAA6BA,CAAK,EAChDD,EAAgB,aAAa,EAEzBC,aAAiB,MACdA,EAEA,IAAI,MAAM,8BAA8B,OAAOA,CAAK,CAAC,EAAE,CAE/D,CACD,CAEO,SAASC,IAAwB,CACvC,MAAO,OACR,CAEO,SAASC,IAA4B,CAC3C,OAAOH,EAAgB,SAAS,EAAE,aACnC","names":["index_exports","__export","CallControlPanel","getSDKVersion","initSDK","isSDKInitialized","useClickToCall","useEndCall","useGetAuthorizationToken","useGetCallerData","useLogout","__toCommonJS","IP","BASE_URL","WS_BASE_URL","VERSION","END_POINT","WS_END_POINT","STORAGE_KEY","SDKStateManager","__publicField","STORAGE_KEY","stored","parsedState","__spreadProps","__spreadValues","error","persistentState","listener","apiKey","tenantId","agentId","sdkConfig","initResult","_a","index","isHolding","isMuted","status","process","position","open","data","line","conferenceLineData","each","sdkStateManager","EventTrackerSDK","__publicField","config","__spreadValues","ticket","response","sdkStateManager","data","error","eventType","eventData","event","url","options","_a","fullUrl","maxRetries","attempt","delay","resolve","autoTrackConfig","target","formData","formFields","value","key","inputTimer","sessionStartTime","sessionDuration","navigation","timing","eventTracker","import_react","import_axios","_a","DEFAULT_TOKEN","sdkStateManager","REQUEST_TIMEOUT","getAuthToken","createAxiosInstance","_b","_c","_d","instance","axios","BASE_URL","config","token","error","response","endTime","startTime","originalRequest","axiosInstance","axios_default","useLogout","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","state","STORAGE_KEY","payload","axios_default","END_POINT","res","sdkStateManager","err","import_react","useEndCall","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","state","STORAGE_KEY","payload","axios_default","END_POINT","res","sdkStateManager","err","import_react","useClickToCall","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","_b","_c","_d","_e","_f","_g","_h","_i","state","STORAGE_KEY","payload","axios_default","END_POINT","res","err","line_used","each","sdkStateManager","__spreadProps","__spreadValues","import_react","useGetCallerData","process_id","process_name","status","phone_number","agent_id","convox_id","sdkStateManager","initialCallData","callData","setCallData","import_react","useGetAuthorizationToken","token","setToken","sdkStateManager","import_react","import_icons_material","import_material","import_react","import_react","useDraggable","initialPosition","onPositionChange","position","setPosition","isDragging","setIsDragging","dragRef","dragStart","elementStart","updatePosition","newPosition","element","rect","viewportWidth","viewportHeight","constrainedPosition","handleStart","clientX","clientY","handleMove","moveClientX","moveClientY","deltaX","deltaY","handleMouseMove","e","handleTouchMove","touch","handleEnd","handleMouseDown","handleTouchStart","import_react","useSDKState","state","setState","sdkStateManager","import_react","import_react","import_material","import_jsx_runtime","ToastContext","useToast","ctx","ToastProvider","children","open","setOpen","message","setMessage","severity","setSeverity","showToast","msg","sev","initialState","reducer","state","action","__spreadProps","__spreadValues","usePostRequest","props","onSuccess","onError","disabledSuccessToast","showToast","useToast","state","dispatch","reducer","initialState","url","payload","config","axios_default","res","_a","err","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","error","import_icons_material","import_material","import_react","import_material","useStyles","disabled","enabled","outlined","theme","__spreadValues","styles_default","import_jsx_runtime","ConferenceTableRow","each","isMergeCall","_a","_b","_c","_d","_e","state","useSDKState","showToast","useToast","disabled","enabled","outlined","styles_default","theme","conferenceCallStart","setConferenceCallStart","conferenceCallMerge","setConferenceCallMerge","conferenceCallHoldOrUnHold","setConferenceCallHoldOrUnHold","conferenceCallMuteOrUnMute","setConferenceCallMuteOrUnMute","conferenceCallEnd","setConferenceCallEnd","onConferenceLineUpdate","line","data","sdkStateManager","__spreadValues","onConferenceCallStart","line_used","payload","axios_default","END_POINT","res","err","message","onMergeConferenceCall","onHoldOrUnHoldConferenceCall","type","onMuteOrUnMuteConferenceCall","onEndConferenceCall","e","__spreadProps","ConferenceDialog","conferenceCallEndAll","setConferenceCallEndAll","handleClose","onEndAllConferenceCalls","CallTransferDialog","open","_f","_g","_h","_i","_j","_k","_l","transferCall","usePostRequest","currentselecteTab","setCurrentselecteTab","getIdelAgentsList","idleAgentsList","isIdleAgentsListLoading","getProcessAndQueuesList","processAndQueuesList","isProcessAndQueuesListLoading","handleTransferCall","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","process","index","queue","agent","EndCallDispositionDialog","setOpen","onSubmitDisposition","formData","setFormData","dispositionOptions","followUpOptions","handleChange","field","value","prev","handleReset","opt","_","val","params","ProcessorListDialog","processList","handleSelectedProcessor","CallHistoryDialog","import_jsx_runtime","getCombineConfrenceData","conferenceData","apiData","data","item","_a","_b","_c","statusKey","__spreadProps","__spreadValues","phoneKey","formatDuration","seconds","mins","secs","CallControls","onDataChange","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","theme","state","useSDKState","showToast","useToast","disabled","enabled","outlined","styles_default","webSocketRef","audioRef","reconnectTimeoutRef","pingIntervalRef","reconnectAttemptsRef","maxReconnectAttempts","baseReconnectDelay","maxReconnectDelay","anchorEl","setAnchorEl","showIframe","setShowIframe","statusAnchorEl","setStatusAnchorEl","dialerAnchorEl","setDialerAnchorEl","openCallDisposition","setOpenCallDisposition","openProcessorDialog","setOpenProcessorDialog","openCallHistoryDialog","setOpenCallHistoryDialog","processList","setProcessList","phoneNumber","setPhoneNumber","callDuration","setCallDuration","position","isDragging","dragRef","handleMouseDown","handleTouchStart","useDraggable","newPosition","sdkStateManager","iframePosition","iframeIsDragging","iframeDragRef","iframeHandleMouseDown","iframeHandleTouchStart","clickToCall","clickToCallLoading","usePostRequest","holdOrUnHold","holdOrUnHoldLoading","error","muteOrUnMute","muteOrUnMuteLoading","readyAgentStatus","agentReadyLoading","updateAgentStatus","isLoading","endCall","endCallLoading","handleCloseQueueCounts","handleOpenDialer","event","handleCloseDialer","handleOpenAgentStatus","handleCloseAgentStatus","handleAgentReady","payload","END_POINT","handleUpdateAgentStatus","status","handleStartCall","number","handleHoldToggle","handleMuteToggle","handleEndCall","handleBeforeUnload","e","interval","elapsed","process_id","process_name","phone_number","agent_id","convox_id","axios_default","res","err","connectWebSocket","WS_END_POINT","confrence","delay","ProcessorListDialog","IP","ConferenceDialog","CallTransferDialog","EndCallDispositionDialog","CallHistoryDialog","import_react","import_jsx_runtime","SDKProvider","children","ToastProvider","import_jsx_runtime","CallControlPanel","onDataChange","handleDataChange","data","error","SDKProvider","CallControls","initSDK","apiKey","tenantId","agentId","sdkConfig","initResult","eventTracker","BASE_URL","sdkStateManager","error","getSDKVersion","isSDKInitialized"]}
1
+ {"version":3,"sources":["../call-control-sdk/index.ts","../call-control-sdk/lib/services/endPoint.ts","../call-control-sdk/lib/hooks/sdk-state.ts","../call-control-sdk/lib/hooks/eventsTracker.ts","../call-control-sdk/lib/hooks/useLogout.ts","../call-control-sdk/lib/services/axios.ts","../call-control-sdk/lib/hooks/useEndCall.ts","../call-control-sdk/lib/hooks/useClickToCall.ts","../call-control-sdk/lib/hooks/useGetCallerData.ts","../call-control-sdk/lib/hooks/useGetAuthorizationToken.ts","../call-control-sdk/lib/components/callControlPanel.tsx","../call-control-sdk/lib/components/callControls.tsx","../call-control-sdk/lib/hooks/useDraggable.ts","../call-control-sdk/lib/hooks/useSDKState.ts","../call-control-sdk/lib/services/request.ts","../call-control-sdk/lib/services/toastMessage.tsx","../call-control-sdk/lib/components/dialog.tsx","../call-control-sdk/lib/components/styles.ts","../call-control-sdk/lib/components/SDKProvider.tsx"],"sourcesContent":["import { eventTracker } from \"./lib/hooks/eventsTracker\";\r\nimport { sdkStateManager } from \"./lib/hooks/sdk-state\";\r\nimport { useLogout } from \"./lib/hooks/useLogout\";\r\nimport { BASE_URL } from \"./lib/services/endPoint\";\r\nimport { useEndCall } from \"./lib/hooks/useEndCall\";\r\nimport { SDKConfig } from \"./types\";\r\nimport { useClickToCall } from \"./lib/hooks/useClickToCall\";\r\nimport { useGetCallerData } from \"./lib/hooks/useGetCallerData\";\r\nimport { useGetAuthorizationToken } from \"./lib/hooks/useGetAuthorizationToken\";\r\n\r\nexport { CallControlPanel } from \"./lib/components/callControlPanel\";\r\n\r\nexport type { CallControlPanelProps, CallData, SDKConfig } from \"./types\";\r\n\r\ninterface InitSDKParams {\r\n\tapiKey: string;\r\n\r\n\ttenantId: string;\r\n\r\n\tagentId: string;\r\n\r\n\tsdkConfig?: SDKConfig;\r\n}\r\n\r\nexport async function initSDK({\r\n\tapiKey,\r\n\ttenantId,\r\n\tagentId,\r\n\tsdkConfig,\r\n}: InitSDKParams): Promise<void> {\r\n\tif (!apiKey || typeof apiKey !== \"string\" || apiKey.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: API key is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\tif (!tenantId || typeof tenantId !== \"string\" || tenantId.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: Tenant ID is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\tif (!agentId || typeof agentId !== \"string\" || agentId.trim().length === 0) {\r\n\t\tthrow new Error(\r\n\t\t\t\"SDK initialization failed: Agent ID is required and must be a non-empty string\"\r\n\t\t);\r\n\t}\r\n\r\n\ttry {\r\n\t\tconst initResult = await eventTracker.init({\r\n\t\t\tapiKey: apiKey.trim(),\r\n\t\t\ttenantId: tenantId.trim(),\r\n\t\t\tagentId: agentId.trim(),\r\n\t\t\tbaseUrl: BASE_URL,\r\n\t\t});\r\n\r\n\t\tif (initResult) {\r\n\t\t\tconsole.log(\"SDK initialized successfully\");\r\n\t\t\tsdkStateManager.initialize(\r\n\t\t\t\tapiKey.trim(),\r\n\t\t\t\ttenantId.trim(),\r\n\t\t\t\tagentId.trim(),\r\n\t\t\t\tsdkConfig,\r\n\t\t\t\tinitResult\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tconsole.error(\"SDK initialization failed: Event tracker initialization returned false\");\r\n\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\tthrow new Error(\r\n\t\t\t\t\"SDK initialization failed: Unable to establish connection with the CTI system\"\r\n\t\t\t);\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tconsole.error(\"SDK initialization error:\", error);\r\n\t\tsdkStateManager.setInitCheck();\r\n\r\n\t\tif (error instanceof Error) {\r\n\t\t\tthrow error;\r\n\t\t} else {\r\n\t\t\tthrow new Error(`SDK initialization failed: ${String(error)}`);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getSDKVersion(): string {\r\n\treturn \"6.x.x\";\r\n}\r\n\r\nexport function isSDKInitialized(): boolean {\r\n\treturn sdkStateManager.getState().isInitialized;\r\n}\r\n\r\nexport { useLogout, useEndCall, useClickToCall, useGetCallerData, useGetAuthorizationToken };\r\n","export const IP = \"uat-cti.aighospitals.com\";\r\nexport const BASE_URL = `https://${IP}:8095`;\r\nexport const WS_BASE_URL = `wss://${IP}:8095`;\r\nexport const VERSION = {\r\n\tv1: \"/api/v1\",\r\n};\r\n\r\nexport const END_POINT = {\r\n\tLOGIN: `${BASE_URL}${VERSION.v1}/cti/login?provider=convox`,\r\n\tREADY_AGENT: `${BASE_URL}${VERSION.v1}/cti/ready-agent?provider=convox`,\r\n\tUPDATE_AGENT_BREAK: `${BASE_URL}${VERSION.v1}/cti/update-agent-status?provider=convox`,\r\n\tCLICK_TO_CALL: `${BASE_URL}${VERSION.v1}/cti/calls?provider=convox`,\r\n\tHOLD_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/hold?provider=convox`,\r\n\tMUTE_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/mute?provider=convox`,\r\n\tUNMUTE_CALL: `${BASE_URL}${VERSION.v1}/cti/unmute-call?provider=convox`,\r\n\tEND_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/end?provider=convox`,\r\n\tLOGOUT: `${BASE_URL}${VERSION.v1}/cti/logout?provider=convox`,\r\n\r\n\tCONFERENCE_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/conference?provider=convox`,\r\n\tCONFERENCE_CALL_HOLD_OR_UN_HOLD: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hold?provider=convox`,\r\n\tCONFERENCE_CALL_MUTE_OT_UN_MUTE: `${BASE_URL}${VERSION.v1}/cti/calls/conference/mute?provider=convox`,\r\n\tCONFERENCE_CALL_END: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hangup?provider=convox`,\r\n\tCONFERENCE_CALL_END_ALL: `${BASE_URL}${VERSION.v1}/cti/calls/conference/hangup/all?provider=convox`,\r\n\tTRANSFER_CALL: `${BASE_URL}${VERSION.v1}/cti/calls/transfer?provider=convox`,\r\n\r\n\tAGENTS_LIST: `${BASE_URL}${VERSION.v1}/cti/users`,\r\n\tPROCESS_LIST: `${BASE_URL}${VERSION.v1}/cti/processes-list`,\r\n\tTRANSFER_TO_DETAILS: `${BASE_URL}${VERSION.v1}/cti/transfer-to-details?provider=convox`,\r\n\r\n\tCALL_HISTORY: `${BASE_URL}${VERSION.v1}/dashboard/call-history`,\r\n\tSENTIMENTAL_ANALYSIS: `${BASE_URL}${VERSION.v1}/users/get_sentiment_analysis`,\r\n};\r\n\r\nexport const WS_END_POINT = {\r\n\tWS: `${WS_BASE_URL}${VERSION.v1}/cti/ws`,\r\n};\r\n\r\nexport const STORAGE_KEY = \"call-control-sdk-state\";\r\n","import type {\r\n\tSDKState,\r\n\tCallData,\r\n\tCallStatus,\r\n\tConferenceLineTypes,\r\n\tSDKConfig,\r\n\tInitSDKRes,\r\n} from \"../../types\";\r\nimport { STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nclass SDKStateManager {\r\n\tprivate state: SDKState;\r\n\tprivate listeners: Array<() => void> = [];\r\n\tprivate readonly STORAGE_KEY = STORAGE_KEY;\r\n\r\n\tprivate apiKey: string | undefined;\r\n\tprivate tenantId: string | undefined;\r\n\r\n\tconstructor() {\r\n\t\tthis.state = this.getInitialState();\r\n\t\tthis.loadFromStorage();\r\n\t}\r\n\r\n\tprivate getInitialState(): SDKState {\r\n\t\treturn {\r\n\t\t\tauthorization: undefined,\r\n\t\t\tprocess: null,\r\n\t\t\tagentId: \"\",\r\n\t\t\topenConferenceDialog: false,\r\n\t\t\topenCallTransferDialog: false,\r\n\t\t\tisInitialized: false,\r\n\t\t\tsdkConfig: {\r\n\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\tisDraggable: true,\r\n\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\tdisabled: {},\r\n\t\t\t\tenabled: {},\r\n\t\t\t\toutlined: {},\r\n\t\t\t},\r\n\t\t\tisHolding: false,\r\n\t\t\tisMuted: false,\r\n\t\t\tstatus: \"idle\",\r\n\t\t\tcallStartTime: null,\r\n\t\t\tcontrolPanelPosition: { x: 10, y: 10 },\r\n\t\t\tiframePosition: { x: 10, y: 80 },\r\n\t\t\tcallData: {\r\n\t\t\t\tagent_id: \"\",\r\n\t\t\t\tstatus: \"\",\r\n\t\t\t\ttype: \"\",\r\n\t\t\t\tevent_time: \"\",\r\n\t\t\t\tphone_number: \"\",\r\n\t\t\t},\r\n\t\t\tconferenceLine: [\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 1,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 2,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 3,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 4,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tline: 5,\r\n\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\tphone: \"\",\r\n\t\t\t\t\tisMute: false,\r\n\t\t\t\t\tisHold: false,\r\n\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t}\r\n\r\n\tprivate loadFromStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\tif (stored) {\r\n\t\t\t\tconst parsedState = JSON.parse(stored);\r\n\r\n\t\t\t\tthis.state = {\r\n\t\t\t\t\t...this.state,\r\n\t\t\t\t\tagentId: parsedState.agentId || \"\",\r\n\t\t\t\t\tauthorization: parsedState.authorization || undefined,\r\n\t\t\t\t\tprocess: parsedState.process || null,\r\n\t\t\t\t\topenConferenceDialog: parsedState?.openConferenceDialog || false,\r\n\t\t\t\t\topenCallTransferDialog: parsedState?.openCallTransferDialog || false,\r\n\t\t\t\t\tisInitialized: parsedState.isInitialized || false,\r\n\t\t\t\t\tsdkConfig: parsedState.sdkConfig || {\r\n\t\t\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\t\t\tisDraggable: true,\r\n\t\t\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\t\t\tdisabled: {},\r\n\t\t\t\t\t\tenabled: {},\r\n\t\t\t\t\t\toutlined: {},\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisHolding: parsedState.isHolding || false,\r\n\t\t\t\t\tisMuted: parsedState.isMuted || false,\r\n\t\t\t\t\tstatus: parsedState.status || \"idle\",\r\n\t\t\t\t\tcallStartTime: parsedState.callStartTime || null,\r\n\t\t\t\t\tcontrolPanelPosition: parsedState.controlPanelPosition || {\r\n\t\t\t\t\t\tx: 10,\r\n\t\t\t\t\t\ty: 10,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tiframePosition: parsedState.iframePosition || { x: 10, y: 80 },\r\n\t\t\t\t\tcallData: parsedState.callData || {\r\n\t\t\t\t\t\tmobileNumber: \"\",\r\n\t\t\t\t\t\tcallReferenceId: \"\",\r\n\t\t\t\t\t\tagent_id: \"\",\r\n\t\t\t\t\t\tstatus: \"\",\r\n\t\t\t\t\t\ttype: \"\",\r\n\t\t\t\t\t\tevent_time: \"\",\r\n\t\t\t\t\t\tphone_number: \"\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// Fix: Properly handle conferenceLine with fallback to initial state\r\n\t\t\t\t\tconferenceLine:\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\tparsedState.conferenceLine &&\r\n\t\t\t\t\t\t\tArray.isArray(parsedState.conferenceLine) &&\r\n\t\t\t\t\t\t\tparsedState.conferenceLine.length > 0\r\n\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\tparsedState.conferenceLine\r\n\t\t\t\t\t\t:\tthis.state.conferenceLine,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to load SDK state from localStorage:\", error);\r\n\t\t\t// If loading fails, keep the initial state\r\n\t\t}\r\n\t}\r\n\r\n\tprivate saveToStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst persistentState = {\r\n\t\t\t\tagentId: this.state.agentId,\r\n\t\t\t\tauthorization: this.state.authorization,\r\n\t\t\t\tprocess: this.state.process,\r\n\t\t\t\tisInitialized: this.state.isInitialized,\r\n\t\t\t\topenConferenceDialog: this.state.openConferenceDialog,\r\n\t\t\t\topenCallTransferDialog: this.state.openCallTransferDialog,\r\n\t\t\t\tsdkConfig: this.state.sdkConfig,\r\n\t\t\t\tisHolding: this.state.isHolding,\r\n\t\t\t\tisMuted: this.state.isMuted,\r\n\t\t\t\tstatus: this.state.status,\r\n\t\t\t\tcallStartTime: this.state.callStartTime,\r\n\t\t\t\tcontrolPanelPosition: this.state.controlPanelPosition,\r\n\t\t\t\tiframePosition: this.state.iframePosition,\r\n\t\t\t\tcallData: this.state.callData,\r\n\t\t\t\tconferenceLine: this.state.conferenceLine,\r\n\t\t\t};\r\n\t\t\tlocalStorage.setItem(this.STORAGE_KEY, JSON.stringify(persistentState));\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to save SDK state to localStorage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate notifyListeners(): void {\r\n\t\tthis.listeners.forEach((listener) => listener());\r\n\t}\r\n\r\n\tprivate validateCredentials(apiKey: string, tenantId: string): void {\r\n\t\tif (!apiKey || typeof apiKey !== \"string\" || apiKey.trim().length === 0) {\r\n\t\t\tthrow new Error(\"API key not available\");\r\n\t\t}\r\n\t\tif (!tenantId || typeof tenantId !== \"string\" || tenantId.trim().length === 0) {\r\n\t\t\tthrow new Error(\"Tenant ID not available\");\r\n\t\t}\r\n\t\tthis.apiKey = apiKey.trim();\r\n\t\tthis.tenantId = tenantId.trim();\r\n\t}\r\n\r\n\tpublic initialize(\r\n\t\tapiKey: string,\r\n\t\ttenantId: string,\r\n\t\tagentId: string,\r\n\t\tsdkConfig?: SDKConfig,\r\n\t\tinitResult?: InitSDKRes\r\n\t): void {\r\n\t\tthis.validateCredentials(apiKey, tenantId);\r\n\t\tif (!agentId || typeof agentId !== \"string\" || agentId.trim().length === 0) {\r\n\t\t\tthrow new Error(\"Agent ID not available\");\r\n\t\t} else {\r\n\t\t\tthis.state.agentId = agentId;\r\n\t\t\tthis.state.openConferenceDialog = false;\r\n\t\t\tthis.state.openCallTransferDialog = false;\r\n\t\t\tthis.state.authorization = initResult;\r\n\t\t\tthis.state.sdkConfig = {\r\n\t\t\t\tdisableEndCallButton: false,\r\n\t\t\t\tdisabledDialButton: false,\r\n\t\t\t\tdisableCallTransferButton: false,\r\n\t\t\t\tisDraggable: true,\r\n\t\t\t\tdisableSoftPhone: false,\r\n\t\t\t\tdisableConferenceButton: false,\r\n\t\t\t\tdisabled: {},\r\n\t\t\t\tenabled: {},\r\n\t\t\t\toutlined: {},\r\n\t\t\t\t...sdkConfig,\r\n\t\t\t};\r\n\t\t\tthis.state.isInitialized = true;\r\n\t\t\tthis.saveToStorage();\r\n\t\t\tthis.notifyListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getState(): SDKState {\r\n\t\treturn { ...this.state };\r\n\t}\r\n\r\n\tpublic getCredentials(): { apiKey: string | undefined; tenantId: string | undefined } {\r\n\t\treturn { apiKey: this.apiKey, tenantId: this.tenantId };\r\n\t}\r\n\tpublic getSdkAuthToken(): string | undefined {\r\n\t\treturn this.state.authorization?.accessToken;\r\n\t}\r\n\r\n\tpublic subscribe(listener: () => void): () => void {\r\n\t\tthis.listeners.push(listener);\r\n\t\treturn () => {\r\n\t\t\tconst index = this.listeners.indexOf(listener);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis.listeners.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tpublic setHolding(isHolding: boolean): void {\r\n\t\tthis.state.isHolding = isHolding;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setMuted(isMuted: boolean): void {\r\n\t\tthis.state.isMuted = isMuted;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setStatus(status: CallStatus): void {\r\n\t\tthis.state.status = status;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setProcess(process: { process_id: number; process_name: string }): void {\r\n\t\tthis.state.process = process;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setControlPanelPosition(position: { x: number; y: number }): void {\r\n\t\tthis.state.controlPanelPosition = position;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setIframePosition(position: { x: number; y: number }): void {\r\n\t\tthis.state.iframePosition = position;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic startCall(): void {\r\n\t\tthis.state.callStartTime = Date.now();\r\n\t\tthis.state.status = \"on call\";\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic endCall(): void {\r\n\t\tthis.state.callStartTime = null;\r\n\t\tthis.state.status = \"idle\";\r\n\t\tthis.state.isHolding = false;\r\n\t\tthis.state.isMuted = false;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setInitCheck(): void {\r\n\t\tthis.state.isInitialized = false;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setOpenConferenceDialog(open: boolean): void {\r\n\t\tthis.state.openConferenceDialog = open;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setOpenCallTransferDialog(open: boolean): void {\r\n\t\tthis.state.openCallTransferDialog = open;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic updateCallData(data: Partial<CallData>): void {\r\n\t\tthis.state.callData = { ...this.state.callData, ...data };\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic updateConferenceData(data: ConferenceLineTypes[]): void {\r\n\t\tthis.state.conferenceLine = [...data];\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic setConferenceLine(line: ConferenceLineTypes): void {\r\n\t\tif (!this.state.conferenceLine || !Array.isArray(this.state.conferenceLine)) {\r\n\t\t\tconsole.warn(\"Conference line data corrupted, resetting to initial state\");\r\n\t\t\tthis.state.conferenceLine = this.getInitialState().conferenceLine;\r\n\t\t}\r\n\r\n\t\tconst conferenceLineData = this.state.conferenceLine?.map((each: ConferenceLineTypes) => {\r\n\t\t\tif (each.line === line.line) {\r\n\t\t\t\treturn line;\r\n\t\t\t}\r\n\t\t\treturn each;\r\n\t\t});\r\n\t\tthis.state.conferenceLine = conferenceLineData;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic resetConferenceLines(): void {\r\n\t\tthis.state.conferenceLine = this.getInitialState().conferenceLine;\r\n\t\tthis.saveToStorage();\r\n\t\tthis.notifyListeners();\r\n\t}\r\n\r\n\tpublic clearStorageAndReset(): void {\r\n\t\ttry {\r\n\t\t\tlocalStorage.removeItem(this.STORAGE_KEY);\r\n\t\t\tthis.state = this.getInitialState();\r\n\t\t\tthis.notifyListeners();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn(\"Failed to clear localStorage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic debugStorage(): void {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\tconsole.log(\"Current localStorage data:\", stored);\r\n\t\t\tif (stored) {\r\n\t\t\t\tconsole.log(\"Parsed localStorage data:\", JSON.parse(stored));\r\n\t\t\t}\r\n\t\t\tconsole.log(\"Current state:\", this.state);\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"Error debugging storage:\", error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getConferenceLines(): ConferenceLineTypes[] {\r\n\t\treturn this.state.conferenceLine || [];\r\n\t}\r\n}\r\n\r\nexport const sdkStateManager = new SDKStateManager();\r\n","import { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport interface EventTrackerConfig {\r\n\tapiKey: string;\r\n\ttenantId: string;\r\n\tagentId: string;\r\n\tsessionId?: string;\r\n\tbaseUrl?: string;\r\n\tautoTrack?:\r\n\t\t| boolean\r\n\t\t| {\r\n\t\t\t\tpageVisits?: boolean;\r\n\t\t\t\tclicks?: boolean;\r\n\t\t\t\tforms?: boolean;\r\n\t\t\t\tinputs?: boolean;\r\n\t\t\t\tscrolling?: boolean;\r\n\t\t\t\tperformance?: boolean;\r\n\t\t\t\terrors?: boolean;\r\n\t\t\t\tvisibility?: boolean;\r\n\t\t };\r\n\tretryAttempts?: number;\r\n\tqueueSize?: number;\r\n\tflushInterval?: number;\r\n}\r\n\r\nexport interface EventData {\r\n\t[key: string]: any;\r\n}\r\n\r\nexport interface EventTrackerInstance {\r\n\tinit(config: EventTrackerConfig): Promise<string | null>;\r\n\t// logEvent(eventType: string, eventData?: EventData): Promise<void>;\r\n\t// closeTicket(): Promise<void>;\r\n\tisInitialized(): boolean;\r\n\tgetConfig(): EventTrackerConfig | null;\r\n\t// getTicketId(): string | null;\r\n\t// flush()?: Promise<void>;\r\n}\r\n\r\nclass EventTrackerSDK implements EventTrackerInstance {\r\n\tprivate config: EventTrackerConfig | null = null;\r\n\tprivate ticketId: string | null = null;\r\n\tprivate baseUrl: string = \"\";\r\n\tprivate eventQueue: Array<{\r\n\t\teventType: string;\r\n\t\teventData?: EventData;\r\n\t\ttimestamp: number;\r\n\t}> = [];\r\n\t// private isOnline: boolean = true;\r\n\t// private retryQueue: Array<() => Promise<void>> = [];\r\n\tprivate flushTimer: ReturnType<typeof setInterval> | null = null;\r\n\r\n\tasync init(config: EventTrackerConfig): Promise<any | null> {\r\n\t\tthis.config = {\r\n\t\t\tautoTrack: true,\r\n\t\t\tretryAttempts: 3,\r\n\t\t\tqueueSize: 100,\r\n\t\t\tflushInterval: 5000,\r\n\t\t\t...config,\r\n\t\t};\r\n\r\n\t\tthis.baseUrl = config.baseUrl || (typeof window !== \"undefined\" ? window.location.origin : \"\");\r\n\r\n\t\tthis.setupNetworkDetection();\r\n\r\n\t\tconst ticket = await this.createTicket();\r\n\r\n\t\tthis.startPeriodicFlush();\r\n\r\n\t\tconsole.log(\"EventTracker SDK initialized successfully\");\r\n\t\treturn ticket;\r\n\t}\r\n\r\n\tisInitialized(): boolean {\r\n\t\treturn this.config !== null && this.ticketId !== null;\r\n\t}\r\n\r\n\tgetConfig(): EventTrackerConfig | null {\r\n\t\treturn this.config;\r\n\t}\r\n\r\n\tgetTicketId(): string | null {\r\n\t\treturn this.ticketId;\r\n\t}\r\n\r\n\tprivate async createTicket(): Promise<string | null> {\r\n\t\tif (!this.config) {\r\n\t\t\tthrow new Error(\"EventTracker not initialized\");\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await this.makeRequest(\"/api/v1/et/init\", {\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\tagentId: this.config.agentId,\r\n\t\t\t\t\tsessionId: this.config.sessionId,\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\t\tthrow new Error(`Failed to initialize: ${response.status} ${response.statusText}`);\r\n\t\t\t}\r\n\r\n\t\t\tconst data = await response.json();\r\n\t\t\tthis.ticketId = data.ticketId;\r\n\r\n\t\t\tif (this.config.autoTrack) {\r\n\t\t\t\tthis.setupAutoTracking();\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"EventTracker initialization failed:\", error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync logEvent(eventType: string, eventData?: EventData): Promise<void> {\r\n\t\tif (!this.config || !this.ticketId) {\r\n\t\t\tconsole.warn(\"EventTracker not initialized, skipping event:\", eventType);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst event = {\r\n\t\t\teventType,\r\n\t\t\teventData,\r\n\t\t\ttimestamp: Date.now(),\r\n\t\t};\r\n\r\n\t\tthis.eventQueue.push(event);\r\n\r\n\t\tif (this.eventQueue.length > (this.config.queueSize || 100)) {\r\n\t\t\tthis.eventQueue.shift();\r\n\t\t}\r\n\r\n\t\t// if (this.isOnline) {\r\n\t\t// \ttry {\r\n\t\t// \t\tawait this.sendEvent(event);\r\n\t\t// \t} catch (error) {\r\n\t\t// \t\tconsole.warn(\"Failed to send event, will retry later:\", error);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\t// private async sendEvent(event: {\r\n\t// \teventType: string;\r\n\t// \teventData?: EventData;\r\n\t// \ttimestamp: number;\r\n\t// }): Promise<void> {\r\n\t// \tif (!this.config || !this.ticketId) return;\r\n\r\n\t// \ttry {\r\n\t// \t\tconst response = await this.makeRequest(\"/api/v1/et/event\", {\r\n\t// \t\t\tmethod: \"POST\",\r\n\t// \t\t\theaders: {\r\n\t// \t\t\t\t\"Content-Type\": \"application/json\",\r\n\t// \t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t// \t\t\t},\r\n\t// \t\t\tbody: JSON.stringify({\r\n\t// \t\t\t\tticketId: this.ticketId,\r\n\t// \t\t\t\teventType: event.eventType,\r\n\t// \t\t\t\teventData: event.eventData,\r\n\t// \t\t\t}),\r\n\t// \t\t});\r\n\r\n\t// \t\tif (!response.ok) {\r\n\t// \t\t\tthrow new Error(`Failed to log event: ${response.status} ${response.statusText}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tconst index = this.eventQueue.findIndex((e) => e.timestamp === event.timestamp);\r\n\t// \t\tif (index > -1) {\r\n\t// \t\t\tthis.eventQueue.splice(index, 1);\r\n\t// \t\t}\r\n\t// \t} catch (error) {\r\n\t// \t\tconsole.error(\"Event logging failed:\", error);\r\n\r\n\t// \t\t// this.retryQueue.push(() => this.sendEvent(event));\r\n\t// \t}\r\n\t// }\r\n\r\n\t// async closeTicket(): Promise<void> {\r\n\t// \tif (!this.config || !this.ticketId) {\r\n\t// \t\tthrow new Error(\"EventTracker not initialized\");\r\n\t// \t}\r\n\r\n\t// \tawait this.flush();\r\n\r\n\t// \ttry {\r\n\t// \t\tconst response = await this.makeRequest(\"/api/v1/et/close\", {\r\n\t// \t\t\tmethod: \"POST\",\r\n\t// \t\t\theaders: {\r\n\t// \t\t\t\t\"Content-Type\": \"application/json\",\r\n\t// \t\t\t\t\"X-API-Key\": this.config.apiKey,\r\n\t// \t\t\t},\r\n\t// \t\t\tbody: JSON.stringify({\r\n\t// \t\t\t\tticketId: this.ticketId,\r\n\t// \t\t\t}),\r\n\t// \t\t});\r\n\r\n\t// \t\tif (!response.ok) {\r\n\t// \t\t\tthrow new Error(`Failed to close ticket: ${response.status} ${response.statusText}`);\r\n\t// \t\t}\r\n\r\n\t// \t\tthis.ticketId = null;\r\n\t// \t\tthis.stopPeriodicFlush();\r\n\r\n\t// \t\tconsole.log(\"Ticket closed successfully\");\r\n\t// \t} catch (error) {\r\n\t// \t\tconsole.error(\"Ticket close failed:\", error);\r\n\t// \t\tthrow error;\r\n\t// \t}\r\n\t// }\r\n\r\n\t// async flush(): Promise<void> {\r\n\t// \tif (!this.isOnline || this.eventQueue.length === 0) return;\r\n\r\n\t// \t// const eventsToFlush = [...this.eventQueue];\r\n\r\n\t// \t// for (const event of eventsToFlush) {\r\n\t// \t// \tawait this.sendEvent(event);\r\n\t// \t// }\r\n\r\n\t// \tconst retryItems = [...this.retryQueue];\r\n\t// \tthis.retryQueue = [];\r\n\r\n\t// \tfor (const retryFn of retryItems) {\r\n\t// \t\ttry {\r\n\t// \t\t\tawait retryFn();\r\n\t// \t\t} catch (error) {\r\n\t// \t\t\tconsole.error(\"Retry failed:\", error);\r\n\t// \t\t}\r\n\t// \t}\r\n\t// }\r\n\r\n\tprivate async makeRequest(url: string, options: RequestInit): Promise<Response> {\r\n\t\tconst fullUrl = `${this.baseUrl}${url}`;\r\n\t\tconst maxRetries = this.config?.retryAttempts || 3;\r\n\r\n\t\tfor (let attempt = 1; attempt <= maxRetries; attempt++) {\r\n\t\t\ttry {\r\n\t\t\t\tconst response = await fetch(fullUrl, options);\r\n\t\t\t\treturn response;\r\n\t\t\t} catch (error) {\r\n\t\t\t\tif (attempt === maxRetries) {\r\n\t\t\t\t\tthrow error;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\r\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delay));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Max retries exceeded\");\r\n\t}\r\n\r\n\tprivate setupAutoTracking(): void {\r\n\t\tif (typeof window === \"undefined\" || !this.config?.autoTrack) return;\r\n\r\n\t\tconst autoTrackConfig = this.config.autoTrack === true ? {} : this.config.autoTrack;\r\n\r\n\t\tif (autoTrackConfig.pageVisits !== false) {\r\n\t\t\tthis.logEvent(\"pageVisit\", {\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\ttitle: document.title,\r\n\t\t\t\treferrer: document.referrer,\r\n\t\t\t\tuserAgent: navigator.userAgent,\r\n\t\t\t\tviewport: {\r\n\t\t\t\t\twidth: window.innerWidth,\r\n\t\t\t\t\theight: window.innerHeight,\r\n\t\t\t\t},\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t}).catch((error) => console.warn(\"Failed to track page visit:\", error));\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.clicks !== false) {\r\n\t\t\tdocument.addEventListener(\"click\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLElement | HTMLButtonElement;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\ttarget.tagName === \"BUTTON\" ||\r\n\t\t\t\t\ttarget.tagName === \"A\" ||\r\n\t\t\t\t\ttarget.onclick ||\r\n\t\t\t\t\ttarget.getAttribute(\"role\") === \"button\" ||\r\n\t\t\t\t\t(target instanceof HTMLButtonElement && target.type === \"button\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.logEvent(\"click\", {\r\n\t\t\t\t\t\telement: target.tagName,\r\n\t\t\t\t\t\ttext: target.textContent?.trim().substring(0, 100),\r\n\t\t\t\t\t\thref: target.getAttribute(\"href\"),\r\n\t\t\t\t\t\tid: target.id,\r\n\t\t\t\t\t\tclassName: target.className,\r\n\t\t\t\t\t\trole: target.getAttribute(\"role\"),\r\n\t\t\t\t\t\tposition: {\r\n\t\t\t\t\t\t\tx: event.clientX,\r\n\t\t\t\t\t\t\ty: event.clientY,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t}).catch((error) => console.warn(\"Failed to track click:\", error));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.forms !== false) {\r\n\t\t\tdocument.addEventListener(\"submit\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLFormElement;\r\n\t\t\t\tconst formData = new FormData(target);\r\n\t\t\t\tconst formFields: Record<string, string> = {};\r\n\r\n\t\t\t\tformData.forEach((value, key) => {\r\n\t\t\t\t\tformFields[key] = value.toString();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.logEvent(\"formSubmission\", {\r\n\t\t\t\t\tformId: target.id,\r\n\t\t\t\t\taction: target.action,\r\n\t\t\t\t\tmethod: target.method,\r\n\t\t\t\t\tfields: Object.keys(formFields),\r\n\t\t\t\t\tfieldCount: Object.keys(formFields).length,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t}).catch((error) => console.warn(\"Failed to track form submission:\", error));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.inputs !== false) {\r\n\t\t\tlet inputTimer: ReturnType<typeof setInterval>;\r\n\t\t\tdocument.addEventListener(\"input\", (event) => {\r\n\t\t\t\tconst target = event.target as HTMLInputElement;\r\n\t\t\t\tif (\r\n\t\t\t\t\ttarget.tagName === \"INPUT\" ||\r\n\t\t\t\t\ttarget.tagName === \"TEXTAREA\" ||\r\n\t\t\t\t\ttarget.tagName === \"SELECT\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tclearTimeout(inputTimer);\r\n\t\t\t\t\tinputTimer = setTimeout(() => {\r\n\t\t\t\t\t\tthis.logEvent(\"fieldChange\", {\r\n\t\t\t\t\t\t\telement: target.tagName,\r\n\t\t\t\t\t\t\ttype: target.getAttribute(\"type\"),\r\n\t\t\t\t\t\t\tname: target.getAttribute(\"name\"),\r\n\t\t\t\t\t\t\tid: target.id,\r\n\t\t\t\t\t\t\tvalueLength: target.value?.length || 0,\r\n\t\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t\t}).catch((error) => console.warn(\"Failed to track field change:\", error));\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst sessionStartTime = Date.now();\r\n\t\twindow.addEventListener(\"beforeunload\", () => {\r\n\t\t\tconst sessionDuration = Date.now() - sessionStartTime;\r\n\r\n\t\t\tthis.logEvent(\"pageUnload\", {\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\tsessionDuration: sessionDuration,\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t});\r\n\r\n\t\t\t// if (this.ticketId) {\r\n\t\t\t// \tnavigator.sendBeacon(\r\n\t\t\t// \t\t`${this.baseUrl}/api/v1/et/close`,\r\n\t\t\t// \t\tJSON.stringify({\r\n\t\t\t// \t\t\tticketId: this.ticketId,\r\n\t\t\t// \t\t})\r\n\t\t\t// \t);\r\n\t\t\t// }\r\n\t\t});\r\n\r\n\t\tif (autoTrackConfig.visibility !== false) {\r\n\t\t\tdocument.addEventListener(\"visibilitychange\", () => {\r\n\t\t\t\tthis.logEvent(\"visibilityChange\", {\r\n\t\t\t\t\thidden: document.hidden,\r\n\t\t\t\t\tvisibilityState: document.visibilityState,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (autoTrackConfig.errors !== false) {\r\n\t\t\twindow.addEventListener(\"error\", (event) => {\r\n\t\t\t\tthis.logEvent(\"jsError\", {\r\n\t\t\t\t\tmessage: event.message,\r\n\t\t\t\t\tfilename: event.filename,\r\n\t\t\t\t\tlineno: event.lineno,\r\n\t\t\t\t\tcolno: event.colno,\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener(\"unhandledrejection\", (event) => {\r\n\t\t\t\tthis.logEvent(\"unhandledRejection\", {\r\n\t\t\t\t\treason: event.reason?.toString(),\r\n\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tautoTrackConfig.performance !== false &&\r\n\t\t\ttypeof window.performance !== \"undefined\" &&\r\n\t\t\twindow.performance.navigation\r\n\t\t) {\r\n\t\t\twindow.addEventListener(\"load\", () => {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst navigation = window.performance.navigation;\r\n\t\t\t\t\tconst timing = window.performance.timing;\r\n\r\n\t\t\t\t\tthis.logEvent(\"performanceMetrics\", {\r\n\t\t\t\t\t\tnavigationTime: timing.navigationStart,\r\n\t\t\t\t\t\tloadTime: timing.loadEventEnd - timing.navigationStart,\r\n\t\t\t\t\t\tdomReady: timing.domContentLoadedEventEnd - timing.navigationStart,\r\n\t\t\t\t\t\trenderTime: timing.loadEventEnd - timing.domContentLoadedEventEnd,\r\n\t\t\t\t\t\tnavigationType: navigation.type,\r\n\t\t\t\t\t\tredirectCount: navigation.redirectCount,\r\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 1000);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupNetworkDetection(): void {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\t// this.isOnline = navigator.onLine;\r\n\r\n\t\twindow.addEventListener(\"online\", () => {\r\n\t\t\t// this.isOnline = true;\r\n\t\t\tconsole.log(\"EventTracker: Back online, flushing queued events\");\r\n\t\t\t// this.flush();\r\n\t\t});\r\n\r\n\t\twindow.addEventListener(\"offline\", () => {\r\n\t\t\t// this.isOnline = false;\r\n\t\t\tconsole.log(\"EventTracker: Offline, queueing events\");\r\n\t\t});\r\n\t}\r\n\r\n\tprivate startPeriodicFlush(): void {\r\n\t\tif (this.flushTimer) {\r\n\t\t\tclearInterval(this.flushTimer);\r\n\t\t}\r\n\r\n\t\t// const interval = this.config?.flushInterval || 5000;\r\n\t\t// this.flushTimer = setInterval(() => {\r\n\t\t// \tthis.flush();\r\n\t\t// }, interval);\r\n\t}\r\n\r\n\t// private stopPeriodicFlush(): void {\r\n\t// \tif (this.flushTimer) {\r\n\t// \t\tclearInterval(this.flushTimer);\r\n\t// \t\tthis.flushTimer = null;\r\n\t// \t}\r\n\t// }\r\n}\r\n\r\nexport const eventTracker = new EventTrackerSDK();\r\n\r\nif (typeof window !== \"undefined\") {\r\n\t(window as any).EventTracker = eventTracker;\r\n}\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nexport interface LogoutPayload {\r\n\taction: string;\r\n\tuserId: string;\r\n}\r\n\r\nexport const useLogout = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleLogout = useCallback(async () => {\r\n\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\tconst payload: LogoutPayload = {\r\n\t\t\taction: \"LOGOUTUSER\",\r\n\t\t\tuserId: state.agentId || \"\",\r\n\t\t};\r\n\r\n\t\treturn axiosInstance\r\n\t\t\t.post(END_POINT.LOGOUT, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tsdkStateManager.clearStorageAndReset();\r\n\r\n\t\t\t\tlocalStorage.clear();\r\n\r\n\t\t\t\tsessionStorage.clear();\r\n\r\n\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\treturn res?.data;\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\tsetError(err);\r\n\r\n\t\t\t\treturn err?.response?.data;\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tlogout: handleLogout,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse, AxiosError, InternalAxiosRequestConfig } from \"axios\";\r\nimport { BASE_URL } from \"./endPoint\";\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\n\r\nconst DEFAULT_TOKEN = sdkStateManager.getSdkAuthToken() ?? \"\";\r\n\r\nconst REQUEST_TIMEOUT = 60000;\r\n\r\nfunction getAuthToken(): string {\r\n\treturn sdkStateManager.getSdkAuthToken() ?? \"\";\r\n}\r\n\r\nfunction createAxiosInstance(): AxiosInstance {\r\n\tconst instance = axios.create({\r\n\t\tbaseURL: BASE_URL,\r\n\t\theaders: {\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\tAccept: \"application/json\",\r\n\t\t\t\"x-tenant-id\": sdkStateManager.getCredentials()?.tenantId ?? \"\",\r\n\t\t\t\"x-api-key\": sdkStateManager.getCredentials()?.apiKey ?? \"\",\r\n\t\t\tAuthorization: `${DEFAULT_TOKEN}`,\r\n\t\t},\r\n\t\ttimeout: REQUEST_TIMEOUT,\r\n\t\twithCredentials: false,\r\n\t});\r\n\r\n\tinstance.interceptors.request.use(\r\n\t\t(config: InternalAxiosRequestConfig) => {\r\n\t\t\tconst token = getAuthToken();\r\n\r\n\t\t\tif (token && config.headers) {\r\n\t\t\t\tconfig.headers.Authorization = `${token}`;\r\n\t\t\t\t// config.headers[\"x-tenant-id\"] = sdkStateManager.getCredentials()?.tenantId ?? \"\";\r\n\t\t\t\t// config.headers[\"x-api-key\"] = sdkStateManager.getCredentials()?.apiKey ?? \"\";\r\n\t\t\t}\r\n\r\n\t\t\t(config as any).metadata = { startTime: new Date().getTime() };\r\n\r\n\t\t\treturn config;\r\n\t\t},\r\n\t\t(error: AxiosError) => {\r\n\t\t\tconsole.error(\"Request interceptor error:\", error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t);\r\n\r\n\tinstance.interceptors.response.use(\r\n\t\t(response: AxiosResponse) => {\r\n\t\t\tconst endTime = new Date().getTime();\r\n\t\t\tconst startTime = (response.config as any).metadata?.startTime;\r\n\t\t\tif (startTime) {\r\n\t\t\t\tconsole.log(`Request to ${response.config.url} took ${endTime - startTime}ms`);\r\n\t\t\t}\r\n\r\n\t\t\treturn response;\r\n\t\t},\r\n\t\tasync (error: AxiosError) => {\r\n\t\t\tconst originalRequest = error.config as InternalAxiosRequestConfig & { _retry?: boolean };\r\n\r\n\t\t\tif (error.response?.status === 401 && !originalRequest._retry) {\r\n\t\t\t\tsdkStateManager.setInitCheck();\r\n\t\t\t\tconsole.warn(\"Unauthorized request, attempting retry...\");\r\n\t\t\t}\r\n\r\n\t\t\tif (!error.response) {\r\n\t\t\t\tconsole.error(\"Network error:\", error.message);\r\n\t\t\t\terror.message = \"Network error: Please check your internet connection\";\r\n\t\t\t}\r\n\r\n\t\t\tif (error.response && error.response.status >= 500) {\r\n\t\t\t\tconsole.error(\"Server error:\", error.response.status, error.response.data);\r\n\t\t\t\terror.message = \"Server error: Please try again later\";\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t);\r\n\r\n\treturn instance;\r\n}\r\n\r\nconst axiosInstance: AxiosInstance = createAxiosInstance();\r\n\r\nexport default axiosInstance;\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nexport interface EndCallPayload {\r\n\taction: string;\r\n\tdisposition: string;\r\n\tuserId: string;\r\n\tprocessid: string;\r\n\tmobile_number: string;\r\n\tset_followUp: string;\r\n\tcallback_date: string;\r\n\tcallback_hrs: string;\r\n\tcallback_mins: string;\r\n\trefno?: string;\r\n}\r\n\r\nexport const useEndCall = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleEndCall = useCallback(\r\n\t\tasync (data: {\r\n\t\t\tdisposition?: string;\r\n\t\t\tfollowUp?: string;\r\n\t\t\tcallbackDate?: string;\r\n\t\t\tcallbackHrs?: string;\r\n\t\t\tcallbackMins?: string;\r\n\t\t}) => {\r\n\t\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\t\tsetLoading(true);\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"ENDCALL\",\r\n\t\t\t\tuserId: state?.agentId,\r\n\t\t\t\tprocessid: state?.process?.process_id?.toString() ?? \"\",\r\n\t\t\t\tprocess_name: state?.process?.process_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state?.callData?.convox_id ?? \"\",\r\n\t\t\t\tmobile_number: state?.callData?.phone_number ?? \"\",\r\n\r\n\t\t\t\tdisposition: data?.disposition ?? \"RES\",\r\n\t\t\t\tset_followUp: data?.followUp ?? \"N\",\r\n\t\t\t\tcallback_date: data?.callbackDate ?? \"\",\r\n\t\t\t\tcallback_hrs: data?.callbackHrs ?? \"\",\r\n\t\t\t\tcallback_mins: data?.callbackMins ?? \"\",\r\n\t\t\t\tendcall_type: \"CLOSE\",\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.END_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsdkStateManager.endCall();\r\n\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[]\r\n\t);\r\n\r\n\treturn {\r\n\t\thandleEndCall,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import { useCallback, useState } from \"react\";\r\n\r\nimport { END_POINT, STORAGE_KEY } from \"../services/endPoint\";\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport interface StartCallPayload {\r\n\tmobileNumber: string; // 📱 Phone number to call\r\n}\r\n\r\nexport const useClickToCall = () => {\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst [success, setSuccess] = useState(false);\r\n\r\n\tconst [isError, setIsError] = useState(false);\r\n\r\n\tconst [error, setError] = useState(null);\r\n\r\n\tconst [data, setData] = useState(null);\r\n\r\n\tconst handleStartCall = useCallback(async (data: StartCallPayload) => {\r\n\t\tconst state = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"\");\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\tif (state?.callData?.status === \"IDLE\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"CALL\",\r\n\t\t\t\tuserId: state?.agentId,\r\n\t\t\t\tphone_number: data?.mobileNumber,\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.CLICK_TO_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t} else if (state?.callData?.status === \"ONCALL\") {\r\n\t\t\tconst line_used = state?.conferenceLine\r\n\t\t\t\t?.filter((each: any) => each.line !== 1)\r\n\t\t\t\t?.find((each: any) => each.status === \"IDLE\" && !each?.isCallStart);\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\t\toperation: `CALL${line_used.line}`,\r\n\t\t\t\tline_used: String(line_used.line),\r\n\t\t\t\tthirdparty_no: data?.mobileNumber,\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\r\n\t\t\treturn axiosInstance\r\n\t\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tsetData(res?.data);\r\n\r\n\t\t\t\t\tsetSuccess(true);\r\n\r\n\t\t\t\t\tsdkStateManager.setConferenceLine({\r\n\t\t\t\t\t\t...line_used,\r\n\t\t\t\t\t\tisCallStart: true,\r\n\t\t\t\t\t\tstatus: \"ONCALL\",\r\n\t\t\t\t\t\tphone: data?.mobileNumber,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsdkStateManager.setOpenConferenceDialog(true);\r\n\r\n\t\t\t\t\treturn res?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetIsError(true);\r\n\r\n\t\t\t\t\tsetError(err);\r\n\r\n\t\t\t\t\treturn err?.response?.data;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\talert(\"Agent is not ready\");\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\thandleStartCall,\r\n\t\tisLoading: loading,\r\n\t\tisSuccess: success,\r\n\t\tisError: isError,\r\n\t\terror: error,\r\n\t\tdata: data,\r\n\t};\r\n};\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\nimport type { CallData } from \"../../types\";\r\n\r\nexport const useGetCallerData = (): CallData => {\r\n\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\tsdkStateManager.getState().callData;\r\n\tconst initialCallData = {\r\n\t\tphone_number,\r\n\t\tstatus,\r\n\t\tcallReferenceId: convox_id,\r\n\t\tagent_id,\r\n\t\tprocess_id,\r\n\t\tprocess_name,\r\n\t};\r\n\tconst [callData, setCallData] = useState<CallData>(initialCallData);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\t\t\tsdkStateManager.getState().callData;\r\n\t\t\tconst currentCallData = {\r\n\t\t\t\tphone_number,\r\n\t\t\t\tstatus,\r\n\t\t\t\tcallReferenceId: convox_id,\r\n\t\t\t\tagent_id,\r\n\t\t\t\tprocess_id,\r\n\t\t\t\tprocess_name,\r\n\t\t\t};\r\n\t\t\tsetCallData(currentCallData);\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn callData;\r\n};\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\n\r\nexport const useGetAuthorizationToken = () => {\r\n\tconst [token, setToken] = useState<string | undefined>(sdkStateManager.getSdkAuthToken());\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tsetToken(sdkStateManager.getSdkAuthToken());\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn token;\r\n};\r\n","import { memo, useCallback } from \"react\";\r\nimport type { CallControlPanelProps } from \"../../types\";\r\nimport { CallControls } from \"./callControls\";\r\nimport { SDKProvider } from \"./SDKProvider\";\r\n\r\nexport const CallControlPanel = memo<CallControlPanelProps>(({ onDataChange }) => {\r\n\tconst handleDataChange = useCallback(\r\n\t\t(data: any) => {\r\n\t\t\ttry {\r\n\t\t\t\tif (onDataChange && typeof onDataChange === \"function\") {\r\n\t\t\t\t\tonDataChange(data);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(\"Error in CallControlPanel data change handler:\", error);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[onDataChange]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<SDKProvider>\r\n\t\t\t<CallControls onDataChange={handleDataChange} />\r\n\t\t</SDKProvider>\r\n\t);\r\n});\r\n\r\nCallControlPanel.displayName = \"CallControlPanel\";\r\n","import {\r\n\tCallEnd,\r\n\tClose,\r\n\tDragIndicator,\r\n\tGroup,\r\n\tKeyboardArrowDown,\r\n\tLayers,\r\n\tMic,\r\n\tMicOff,\r\n\tPause,\r\n\tPending,\r\n\tPhone,\r\n\tPlayArrow,\r\n\tSupportAgent,\r\n\tTransferWithinAStation,\r\n\tUpcoming,\r\n\tWifiCalling3,\r\n} from \"@mui/icons-material\";\r\n\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tChip,\r\n\tCircularProgress,\r\n\tFade,\r\n\tIconButton,\r\n\tMenu,\r\n\tMenuItem,\r\n\tPaper,\r\n\tTextField,\r\n\tTooltip,\r\n\tTypography,\r\n\tuseTheme,\r\n} from \"@mui/material\";\r\n\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\n\r\nimport type { CallControlPanelProps, ConferenceLineTypes } from \"../../types\";\r\n\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\nimport { useDraggable } from \"../hooks/useDraggable\";\r\nimport { useSDKState } from \"../hooks/useSDKState\";\r\n\r\nimport { END_POINT, IP, WS_END_POINT } from \"../services/endPoint\";\r\nimport { usePostRequest } from \"../services/request\";\r\n\r\nimport {\r\n\tCallHistoryDialog,\r\n\tCallTransferDialog,\r\n\tConferenceDialog,\r\n\tEndCallDispositionDialog,\r\n\tProcessorListDialog,\r\n} from \"./dialog\";\r\n\r\nimport useStyles from \"./styles\";\r\n\r\nimport axiosInstance from \"../services/axios\";\r\nimport { useToast } from \"../services/toastMessage\";\r\nimport incomingRingtone from \"../ringtones/incoming.mp3\";\r\nconst getCombineConfrenceData = (\r\n\tconferenceData: ConferenceLineTypes[],\r\n\tapiData: any,\r\n\tdata: any\r\n) => {\r\n\tconst updatedConferenceData = conferenceData.map((item) => {\r\n\t\tif (item?.line === 1) {\r\n\t\t\tconst statusKey = `line_${item.line}_status`;\r\n\t\t\t// return {\r\n\t\t\t// \t...item,\r\n\t\t\t// \tstatus: apiData[statusKey] ?? \"IDLE\",\r\n\t\t\t// \tphone: apiData[phoneKey] !== \"0\" ? apiData[phoneKey] : \"\",\r\n\t\t\t// };\r\n\t\t\treturn {\r\n\t\t\t\t...item,\r\n\t\t\t\tline: 1,\r\n\t\t\t\tstatus: apiData[statusKey] ?? data?.status,\r\n\t\t\t\tphone: data?.phone_number ?? \"\",\r\n\t\t\t\t// isMute: false,\r\n\t\t\t\t// isHold: false,\r\n\t\t\t\t// isMergeCall: false,\r\n\t\t\t\t// isCallStart: true,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tconst statusKey = `line_${item.line}_status`;\r\n\t\t\tconst phoneKey = `line_${item.line}_phonenumber`;\r\n\t\t\treturn {\r\n\t\t\t\t...item,\r\n\t\t\t\tstatus: apiData[statusKey] ?? \"IDLE\",\r\n\t\t\t\tphone: apiData[phoneKey] !== \"0\" ? apiData[phoneKey] : \"\",\r\n\t\t\t};\r\n\t\t}\r\n\t});\r\n\r\n\treturn updatedConferenceData;\r\n};\r\n\r\nconst formatDuration = (seconds: number): string => {\r\n\tconst mins = Math.floor(seconds / 60);\r\n\tconst secs = seconds % 60;\r\n\treturn `${mins.toString().padStart(2, \"0\")}:${secs.toString().padStart(2, \"0\")}`;\r\n};\r\n\r\nexport function CallControls({ onDataChange }: CallControlPanelProps) {\r\n\tconst theme = useTheme();\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\tconst { disabled, enabled, outlined } = useStyles({\r\n\t\tdisabled: state.sdkConfig?.disabled || {},\r\n\t\tenabled: state.sdkConfig?.enabled || {},\r\n\t\toutlined: state.sdkConfig?.outlined || {},\r\n\t});\r\n\r\n\tconst webSocketRef = useRef<WebSocket | null>(null);\r\n\tconst audioRef = useRef<HTMLAudioElement | null>(null);\r\n\tconst reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\tconst pingIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\tconst reconnectAttemptsRef = useRef<number>(0);\r\n\tconst maxReconnectAttempts = 60;\r\n\tconst baseReconnectDelay = 1000; // 1 second\r\n\tconst maxReconnectDelay = 30000; // 30 seconds\r\n\r\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [showIframe, setShowIframe] = useState<boolean>(true);\r\n\tconst [statusAnchorEl, setStatusAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [dialerAnchorEl, setDialerAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [openCallDisposition, setOpenCallDisposition] = useState(false);\r\n\tconst [openProcessorDialog, setOpenProcessorDialog] = useState(false);\r\n\tconst [openCallHistoryDialog, setOpenCallHistoryDialog] = useState(false);\r\n\tconst [processList, setProcessList] = useState(null);\r\n\tconst [phoneNumber, setPhoneNumber] = useState<string>(\"\");\r\n\tconst [callDuration, setCallDuration] = useState(0);\r\n\r\n\tconst { position, isDragging, dragRef, handleMouseDown, handleTouchStart } = useDraggable(\r\n\t\tstate.controlPanelPosition,\r\n\t\t(newPosition) => sdkStateManager.setControlPanelPosition(newPosition)\r\n\t);\r\n\r\n\tconst {\r\n\t\tposition: iframePosition,\r\n\t\tisDragging: iframeIsDragging,\r\n\t\tdragRef: iframeDragRef,\r\n\t\thandleMouseDown: iframeHandleMouseDown,\r\n\t\thandleTouchStart: iframeHandleTouchStart,\r\n\t} = useDraggable(state.iframePosition, (newPosition) =>\r\n\t\tsdkStateManager.setIframePosition(newPosition)\r\n\t);\r\n\r\n\tconst [clickToCall, { isLoading: clickToCallLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tphone_number: string;\r\n\t\tuserId: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsetPhoneNumber(\"\");\r\n\t\t\tsetDialerAnchorEl(null);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [holdOrUnHold, { isLoading: holdOrUnHoldLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tuserId: string;\r\n\t\trefno?: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setHolding(!state.isHolding);\r\n\t\t},\r\n\t\tonError: (error) => {\r\n\t\t\tconsole.log(\"❌ Hold operation error:\", error);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [muteOrUnMute, { isLoading: muteOrUnMuteLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tuserId: string;\r\n\t\trefno?: string;\r\n\t}>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setMuted(!state.isMuted);\r\n\t\t},\r\n\t\tonError: (error) => {\r\n\t\t\tconsole.log(\"❌ Mute operation error:\", error);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [readyAgentStatus, { isLoading: agentReadyLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\trefno?: string;\r\n\t\tuserId: string;\r\n\t}>();\r\n\r\n\tconst [updateAgentStatus, { isLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tbreak_type: string;\r\n\t\tuserId: string;\r\n\t}>();\r\n\r\n\tconst [endCall, { isLoading: endCallLoading }] = usePostRequest<{\r\n\t\taction: string;\r\n\t\tdisposition: string;\r\n\t\tuserId: string;\r\n\t\tprocessid: string;\r\n\t\tmobile_number: string;\r\n\t\tset_followUp: string;\r\n\t\tcallback_date: string;\r\n\t\tcallback_hrs: string;\r\n\t\tcallback_mins: string;\r\n\t\trefno?: string;\r\n\t}>();\r\n\r\n\tconst handleCloseQueueCounts = () => {\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleOpenDialer = (event: React.MouseEvent<HTMLElement>) => {\r\n\t\tsetShowIframe(true);\r\n\t\tsetDialerAnchorEl(event.currentTarget);\r\n\t\tsdkStateManager.setStatus(\"dial\");\r\n\t};\r\n\r\n\tconst handleCloseDialer = () => {\r\n\t\tif (state.status !== \"on call\") {\r\n\t\t\tsdkStateManager.setStatus(\"idle\");\r\n\t\t}\r\n\r\n\t\tsetDialerAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleOpenAgentStatus = (event: React.MouseEvent<HTMLElement>) => {\r\n\t\tsetStatusAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleCloseAgentStatus = () => {\r\n\t\tsetStatusAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleAgentReady = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: \"READYAGENT\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\r\n\t\treadyAgentStatus(END_POINT.READY_AGENT, payload);\r\n\t};\r\n\r\n\tconst handleUpdateAgentStatus = (status: string) => {\r\n\t\tsetStatusAnchorEl(null);\r\n\t\tconst payload = {\r\n\t\t\taction: \"AGENTBREAK\",\r\n\t\t\tbreak_type: status,\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\t\tupdateAgentStatus(END_POINT.UPDATE_AGENT_BREAK, payload);\r\n\t};\r\n\r\n\tconst handleStartCall = (number: string) => {\r\n\t\tif (number.length !== 10) {\r\n\t\t\tshowToast(\"Invalid phone number\", \"error\");\r\n\t\t} else if (!/^\\d+$/.test(number)) {\r\n\t\t\tshowToast(\"Invalid phone number\", \"error\");\r\n\t\t} else {\r\n\t\t\tconst payload = {\r\n\t\t\t\taction: \"CALL\",\r\n\t\t\t\tphone_number: number,\r\n\t\t\t\tuserId: state.agentId,\r\n\t\t\t};\r\n\r\n\t\t\tclickToCall(END_POINT.CLICK_TO_CALL, payload);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleHoldToggle = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: state.isHolding ? \"UNHOLD\" : \"HOLD\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\t\tholdOrUnHold(END_POINT.HOLD_CALL, payload);\r\n\t};\r\n\r\n\tconst handleMuteToggle = () => {\r\n\t\tconst payload = {\r\n\t\t\taction: state.isMuted ? \"UNMUTE\" : \"MUTE\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t};\r\n\r\n\t\tmuteOrUnMute(END_POINT.MUTE_CALL, payload);\r\n\t};\r\n\r\n\tconst handleEndCall = (data: {\r\n\t\tdisposition: { label: string; value: string };\r\n\t\tfollowUp: { label: string; value: string };\r\n\t\tcallbackDate: string;\r\n\t\tcallbackHrs: string;\r\n\t\tcallbackMins: string;\r\n\t}) => {\r\n\t\tconst payload = {\r\n\t\t\taction: \"ENDCALL\",\r\n\t\t\tuserId: state.agentId,\r\n\t\t\tprocessid: state.process?.process_id?.toString() ?? \"\",\r\n\t\t\tprocess_name: state.process?.process_name ?? \"\",\r\n\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\r\n\t\t\tdisposition: data?.disposition?.value ?? \"\",\r\n\t\t\tset_followUp: data?.followUp?.value ?? \"\",\r\n\t\t\tcallback_date: data?.callbackDate ?? \"\",\r\n\t\t\tcallback_hrs: data?.callbackHrs ?? \"\",\r\n\t\t\tcallback_mins: data?.callbackMins ?? \"\",\r\n\t\t\tendcall_type: \"CLOSE\",\r\n\t\t};\r\n\t\tsetPhoneNumber(\"\");\r\n\t\tendCall(END_POINT.END_CALL, payload);\r\n\t\tsdkStateManager.endCall();\r\n\t\tsetOpenCallDisposition(false);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handleBeforeUnload = (e: BeforeUnloadEvent) => {\r\n\t\t\te.preventDefault();\r\n\t\t};\r\n\r\n\t\twindow.addEventListener(\"beforeunload\", handleBeforeUnload);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"beforeunload\", handleBeforeUnload);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet interval: ReturnType<typeof setInterval>;\r\n\r\n\t\tif (state.callData.status && state.callData.status === \"ONCALL\") {\r\n\t\t\tinterval = setInterval(() => {\r\n\t\t\t\tconst elapsed = Math.floor((Date.now() - state.callStartTime!) / 1000);\r\n\t\t\t\tsetCallDuration(elapsed);\r\n\t\t\t}, 1000);\r\n\t\t} else {\r\n\t\t\tsetCallDuration(0);\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tif (interval) clearInterval(interval);\r\n\t\t};\r\n\t}, [state.callData.status]);\r\n\r\n\tuseEffect(() => {\r\n\t\taudioRef.current = new Audio(incomingRingtone);\r\n\t\taudioRef.current.loop = true;\r\n\t\taudioRef.current.volume = 0.7;\r\n\r\n\t\treturn () => {\r\n\t\t\tif (audioRef.current) {\r\n\t\t\t\taudioRef.current.pause();\r\n\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\taudioRef.current = null;\r\n\t\t\t}\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onDataChange && state.callData) {\r\n\t\t\tconst { process_id, process_name, status, phone_number, agent_id, convox_id } =\r\n\t\t\t\tstate.callData;\r\n\t\t\tconst callData = {\r\n\t\t\t\tphone_number,\r\n\t\t\t\tstatus,\r\n\t\t\t\tcallReferenceId: convox_id,\r\n\t\t\t\tagent_id,\r\n\t\t\t\tprocess_id,\r\n\t\t\t\tprocess_name,\r\n\t\t\t};\r\n\t\t\tonDataChange(callData);\r\n\t\t}\r\n\t}, [state.callData, onDataChange]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (state.agentId) {\r\n\t\t\taxiosInstance\r\n\t\t\t\t.post(END_POINT.PROCESS_LIST, {\r\n\t\t\t\t\tuserId: state.agentId,\r\n\t\t\t\t\taction: \"GETAGENTPROCESSLIST\",\r\n\t\t\t\t\trefno: \"1234221233\",\r\n\t\t\t\t})\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res && res.data && res?.data?.length > 1) {\r\n\t\t\t\t\t\tsetProcessList(res.data.data);\r\n\t\t\t\t\t\tsetOpenProcessorDialog(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsdkStateManager.setProcess(res?.data?.data[0]);\r\n\t\t\t\t\t\tsetOpenProcessorDialog(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tshowToast(err.response.data.message, \"error\");\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tconsole.log(\"No agentId available, skipping API call\");\r\n\t\t}\r\n\t}, [state.agentId]);\r\n\r\n\tconst connectWebSocket = () => {\r\n\t\tif (!state.agentId) {\r\n\t\t\tconsole.log(\"No agentId available, cannot connect WebSocket\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clear any existing reconnection timeout\r\n\t\tif (reconnectTimeoutRef.current) {\r\n\t\t\tclearTimeout(reconnectTimeoutRef.current);\r\n\t\t\treconnectTimeoutRef.current = null;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\twebSocketRef.current = new WebSocket(`${WS_END_POINT.WS}?agent_id=${state.agentId}`);\r\n\r\n\t\t\twebSocketRef.current.onopen = () => {\r\n\t\t\t\tconsole.log(\"🌐 WebSocket connection established\");\r\n\t\t\t\t// Reset reconnect attempts on successful connection\r\n\t\t\t\treconnectAttemptsRef.current = 0;\r\n\r\n\t\t\t\t// Start ping interval to keep connection alive (every 30 seconds)\r\n\t\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\t}\r\n\t\t\t\tpingIntervalRef.current = setInterval(() => {\r\n\t\t\t\t\tif (webSocketRef.current && webSocketRef.current.readyState === WebSocket.OPEN) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t// Send ping message\r\n\t\t\t\t\t\t\twebSocketRef.current.send(JSON.stringify({ type: \"ping\" }));\r\n\t\t\t\t\t\t\tconsole.log(\"📡 WebSocket ping sent\");\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tconsole.error(\"Failed to send ping:\", error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 30000); // Ping every 30 seconds\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onmessage = (event) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst data = JSON.parse(event.data);\r\n\r\n\t\t\t\t\t// Handle pong response\r\n\t\t\t\t\tif (data.type === \"pong\") {\r\n\t\t\t\t\t\tconsole.log(\"📡 WebSocket pong received\");\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst confrence = getCombineConfrenceData(\r\n\t\t\t\t\t\tstate?.conferenceLine,\r\n\t\t\t\t\t\tdata?.conferencestatus,\r\n\t\t\t\t\t\tdata\r\n\t\t\t\t\t);\r\n\t\t\t\t\t/* use it for debugging */\r\n\t\t\t\t\t// console.log(confrence, \"📊 Parsed JSON:\", data);\r\n\r\n\t\t\t\t\tsdkStateManager.updateCallData(data);\r\n\r\n\t\t\t\t\tsdkStateManager.updateConferenceData([...confrence]);\r\n\r\n\t\t\t\t\tif (data.status === \"RINGING\" || data.status === \"DIALING\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.play().catch((error) => {\r\n\t\t\t\t\t\t\t\tconsole.error(\"Failed to play ringtone:\", error);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (data.status === \"ONCALL\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.pause();\r\n\t\t\t\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsdkStateManager.startCall();\r\n\t\t\t\t\t\tif (!showIframe) {\r\n\t\t\t\t\t\t\tsetShowIframe(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (data.status === \"WRAPUP\") {\r\n\t\t\t\t\t\tif (audioRef.current) {\r\n\t\t\t\t\t\t\taudioRef.current.pause();\r\n\t\t\t\t\t\t\taudioRef.current.currentTime = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsdkStateManager.endCall();\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tconsole.log(\"📨 Raw message:\", event.data);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onclose = (event) => {\r\n\t\t\t\tconsole.log(\"🔌 WebSocket connection closed\", event.code, event.reason);\r\n\r\n\t\t\t\t// Clear ping interval\r\n\t\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\t\tpingIntervalRef.current = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Only reconnect if it wasn't a manual close (code 1000) and we haven't exceeded max attempts\r\n\t\t\t\tif (event.code !== 1000 && reconnectAttemptsRef.current < maxReconnectAttempts) {\r\n\t\t\t\t\treconnectAttemptsRef.current += 1;\r\n\r\n\t\t\t\t\t// Calculate exponential backoff delay\r\n\t\t\t\t\tconst delay = Math.min(\r\n\t\t\t\t\t\tbaseReconnectDelay * Math.pow(2, reconnectAttemptsRef.current - 1),\r\n\t\t\t\t\t\tmaxReconnectDelay\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconsole.log(\r\n\t\t\t\t\t\t`🔄 Attempting to reconnect WebSocket (attempt ${reconnectAttemptsRef.current}/${maxReconnectAttempts}) in ${delay}ms`\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\treconnectTimeoutRef.current = setTimeout(() => {\r\n\t\t\t\t\t\tconnectWebSocket();\r\n\t\t\t\t\t}, delay);\r\n\t\t\t\t} else if (reconnectAttemptsRef.current >= maxReconnectAttempts) {\r\n\t\t\t\t\tconsole.error(\"❌ Maximum reconnection attempts reached. Please refresh the page.\");\r\n\t\t\t\t\tshowToast(\"WebSocket connection failed. Please refresh the page.\", \"error\");\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\twebSocketRef.current.onerror = (error) => {\r\n\t\t\t\tconsole.error(\"❌ WebSocket error:\", error);\r\n\t\t\t\t// The onclose handler will handle reconnection\r\n\t\t\t};\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\"❌ Failed to create WebSocket:\", error);\r\n\t\t\t// Attempt reconnection\r\n\t\t\tif (reconnectAttemptsRef.current < maxReconnectAttempts) {\r\n\t\t\t\treconnectAttemptsRef.current += 1;\r\n\t\t\t\tconst delay = Math.min(\r\n\t\t\t\t\tbaseReconnectDelay * Math.pow(2, reconnectAttemptsRef.current - 1),\r\n\t\t\t\t\tmaxReconnectDelay\r\n\t\t\t\t);\r\n\t\t\t\treconnectTimeoutRef.current = setTimeout(() => {\r\n\t\t\t\t\tconnectWebSocket();\r\n\t\t\t\t}, delay);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (state.agentId) {\r\n\t\t\tconnectWebSocket();\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\t// Cleanup: close WebSocket and clear intervals/timeouts\r\n\t\t\tif (reconnectTimeoutRef.current) {\r\n\t\t\t\tclearTimeout(reconnectTimeoutRef.current);\r\n\t\t\t\treconnectTimeoutRef.current = null;\r\n\t\t\t}\r\n\t\t\tif (pingIntervalRef.current) {\r\n\t\t\t\tclearInterval(pingIntervalRef.current);\r\n\t\t\t\tpingIntervalRef.current = null;\r\n\t\t\t}\r\n\t\t\tif (webSocketRef.current) {\r\n\t\t\t\t// Close with code 1000 (normal closure) to prevent reconnection\r\n\t\t\t\twebSocketRef.current.close(1000, \"Component unmounting\");\r\n\t\t\t\twebSocketRef.current = null;\r\n\t\t\t}\r\n\t\t\treconnectAttemptsRef.current = 0;\r\n\t\t};\r\n\t}, [state.agentId]);\r\n\r\n\tif (!state.isInitialized || !state.process) {\r\n\t\treturn (\r\n\t\t\t<Box>\r\n\t\t\t\t{Boolean(openProcessorDialog) && (\r\n\t\t\t\t\t<ProcessorListDialog\r\n\t\t\t\t\t\tprocessList={processList}\r\n\t\t\t\t\t\topen={openProcessorDialog}\r\n\t\t\t\t\t\tsetOpen={setOpenProcessorDialog}\r\n\t\t\t\t\t\thandleSelectedProcessor={(data: { process_id: number; process_name: string }) => {\r\n\t\t\t\t\t\t\tsdkStateManager.setProcess(data);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Box>\r\n\t\t\t\t<Fade\r\n\t\t\t\t\tin={true}\r\n\t\t\t\t\ttimeout={300}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Paper\r\n\t\t\t\t\t\tref={state.sdkConfig?.isDraggable ? dragRef : null}\r\n\t\t\t\t\t\televation={\r\n\t\t\t\t\t\t\tisDragging ? 4\r\n\t\t\t\t\t\t\t: state.sdkConfig?.isDraggable ?\r\n\t\t\t\t\t\t\t\t1\r\n\t\t\t\t\t\t\t:\t0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tposition: state.sdkConfig?.isDraggable ? \"fixed\" : \"relative\",\r\n\t\t\t\t\t\t\tleft: state.sdkConfig?.isDraggable ? position.x : \"auto\",\r\n\t\t\t\t\t\t\ttop: state.sdkConfig?.isDraggable ? position.y : \"auto\",\r\n\t\t\t\t\t\t\tdisplay: \"inline-block\",\r\n\t\t\t\t\t\t\twidth: \"auto\",\r\n\t\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\tp: 0.5,\r\n\t\t\t\t\t\t\tborderRadius: 3,\r\n\t\t\t\t\t\t\tbgcolor: \"background.paper\",\r\n\t\t\t\t\t\t\tzIndex: state.sdkConfig?.isDraggable ? Number.MAX_SAFE_INTEGER : 0,\r\n\t\t\t\t\t\t\ttransition: theme.transitions.create([\"box-shadow\", \"transform\"], {\r\n\t\t\t\t\t\t\t\tduration: theme.transitions.duration.short,\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tuserSelect: \"none\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\tmargin: \"0px 10px\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{state.sdkConfig?.isDraggable && (\r\n\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: \"all-scroll\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tonMouseDown={handleMouseDown}\r\n\t\t\t\t\t\t\t\t\t\tonTouchStart={handleTouchStart}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<DragIndicator />{\" \"}\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t{!state.sdkConfig?.disabledDialButton && (\r\n\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Dial\">\r\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"ONCALL\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"BREAK\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"RINGING\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOpenDialer(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"warning\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<WifiCalling3\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"action.selected\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:\t\"success.main\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"success.main\",\r\n\t\t\t\t\t\t\t\t\t\twidth: \"40px\",\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\tfontSize: \"18px\",\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{formatDuration(callDuration)}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t<Chip\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tpadding: \"18px 0px\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\tisLoading || agentReadyLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size=\"20px\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{state.callData?.status?.toUpperCase() ?? \"N/A\"}\r\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tonClick={handleOpenAgentStatus}\r\n\t\t\t\t\t\t\t\t\tdeleteIcon={<KeyboardArrowDown color=\"primary\" />}\r\n\t\t\t\t\t\t\t\t\tonDelete={handleOpenAgentStatus}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<Tooltip title={\"Agent Ready\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleAgentReady();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tclasses={{\r\n\t\t\t\t\t\t\t\t\t\t\troot:\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t\"enabled\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t...((\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"BREAK\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"MISSED\"\r\n\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\toutlined\r\n\t\t\t\t\t\t\t\t\t\t\t:\tenabled),\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={agentReadyLoading}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SupportAgent />\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t<Tooltip title={state.isHolding ? \"Resume\" : \"Hold\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isHolding && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\thandleHoldToggle();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isHolding && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" && !state.isHolding) ||\r\n\t\t\t\t\t\t\t\t\t\t\tholdOrUnHoldLoading\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{holdOrUnHoldLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t: state.isHolding ?\r\n\t\t\t\t\t\t\t\t\t\t\t<PlayArrow />\r\n\t\t\t\t\t\t\t\t\t\t:\t<Pause />}\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t<Tooltip title={state.isMuted ? \"Unmute\" : \"Mute\"}>\r\n\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isMuted && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\thandleMuteToggle();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\tstate.isMuted && state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" && !state.isMuted) ||\r\n\t\t\t\t\t\t\t\t\t\t\tmuteOrUnMuteLoading\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{muteOrUnMuteLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t: state.isMuted ?\r\n\t\t\t\t\t\t\t\t\t\t\t<MicOff />\r\n\t\t\t\t\t\t\t\t\t\t:\t<Mic />}\r\n\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableCallTransferButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"Transfer Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={state.openCallTransferDialog ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (state.callData?.status?.toUpperCase() === \"ONCALL\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsdkStateManager.setOpenCallTransferDialog(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.openCallTransferDialog ? { ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={state.callData?.status?.toUpperCase() !== \"ONCALL\"}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<TransferWithinAStation />\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableConferenceButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"Conference Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={state.openConferenceDialog ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (state.callData?.status?.toUpperCase() === \"ONCALL\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsdkStateManager.setOpenConferenceDialog(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate.openConferenceDialog ? { ...enabled }\r\n\t\t\t\t\t\t\t\t\t\t\t\t: state.callData?.status?.toUpperCase() === \"ONCALL\" ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={state.callData?.status?.toUpperCase() !== \"ONCALL\"}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Group />\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{!state.sdkConfig?.disableEndCallButton && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title={\"End Call\"}>\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenCallDisposition(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"RINGING\" ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() === \"WRAPUP\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRight: \"1px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"error.main\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tminWidth: \"60px !important\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \" 0px 2px 1px #5f3f3f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: `1px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: \"40px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \" 0px 2px 1px #5f3f3f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...disabled,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tminWidth: \"60px !important\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t\t(state.callData?.status?.toUpperCase() !== \"ONCALL\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"RINGING\" &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.callData?.status?.toUpperCase() !== \"WRAPUP\") ||\r\n\t\t\t\t\t\t\t\t\t\t\t\tendCallLoading\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{endCallLoading ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Paper>\r\n\t\t\t\t</Fade>\r\n\t\t\t</Box>\r\n\t\t\t<Fade\r\n\t\t\t\tin={true}\r\n\t\t\t\ttimeout={300}\r\n\t\t\t>\r\n\t\t\t\t<Paper\r\n\t\t\t\t\tref={iframeDragRef}\r\n\t\t\t\t\televation={iframeIsDragging ? 4 : 1}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\t\tleft: iframePosition.x,\r\n\t\t\t\t\t\ttop: iframePosition.y,\r\n\t\t\t\t\t\tborderRadius: 2,\r\n\t\t\t\t\t\tbgcolor: \"background.paper\",\r\n\t\t\t\t\t\tzIndex: Number.MAX_SAFE_INTEGER,\r\n\t\t\t\t\t\ttransition: theme.transitions.create([\"box-shadow\", \"transform\"], {\r\n\t\t\t\t\t\t\tduration: theme.transitions.duration.short,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tvisibility: showIframe && !state.sdkConfig?.disableSoftPhone ? \"visible\" : \"hidden\",\r\n\t\t\t\t\t\tuserSelect: \"none\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\tcursor: \"all-scroll\",\r\n\t\t\t\t\t\t\tpadding: \"0px 10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonMouseDown={iframeHandleMouseDown}\r\n\t\t\t\t\t\tonTouchStart={iframeHandleTouchStart}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<DragIndicator\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\ttransform: \"rotate(90deg)\",\r\n\t\t\t\t\t\t\t\tcolor: \"#7b7b7b\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>{\" \"}\r\n\t\t\t\t\t\t<IconButton onClick={() => setShowIframe(false)}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<iframe\r\n\t\t\t\t\t\t\tsrc={`https://${IP}/ConVoxCCS/iframe?agent_id=${state.agentId}&process_id=${state.process?.process_id}`}\r\n\t\t\t\t\t\t\theight={380}\r\n\t\t\t\t\t\t\twidth={420}\r\n\t\t\t\t\t\t\tallow=\"camera; microphone; autoplay\"\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t></iframe>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Fade>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={dialerAnchorEl}\r\n\t\t\t\topen={Boolean(dialerAnchorEl)}\r\n\t\t\t\tonClose={handleCloseDialer}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tall: \"unset\",\r\n\t\t\t\t\t\tpadding: \"10px\",\r\n\t\t\t\t\t\t\"&hover\": {\r\n\t\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<TextField\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tvalue={phoneNumber}\r\n\t\t\t\t\t\tplaceholder=\"Enter Mobile No.\"\r\n\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\tsetPhoneNumber(e.target.value);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\tcolor=\"info\"\r\n\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\thandleStartCall(phoneNumber);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{clickToCallLoading ?\r\n\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tcolor: theme.palette.success.main,\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t:\t<Phone color=\"success\" />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={statusAnchorEl}\r\n\t\t\t\topen={Boolean(statusAnchorEl)}\r\n\t\t\t\tonClose={handleCloseAgentStatus}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<MenuItem onClick={() => handleUpdateAgentStatus(\"Lunch\")}>- Break</MenuItem>\r\n\t\t\t\t{/* <MenuItem onClick={() => handleUpdateAgentStatus(\"Tea\")}>- Tea</MenuItem> */}\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\topen={Boolean(anchorEl)}\r\n\t\t\t\tonClose={handleCloseQueueCounts}\r\n\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tzIndex: 99999,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\tjustifyContent: \"flex-start\",\r\n\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\tpadding: \"0px 10px\",\r\n\t\t\t\t\t\t\"&hover\": {\r\n\t\t\t\t\t\t\tbackgroundColor: \"white\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Layers color=\"secondary\" />}\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tlabel=\"Waiting - 25\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Pending color=\"info\" />}\r\n\t\t\t\t\t\tlabel=\"Pending - 99+\"\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\ticon={<Upcoming color=\"success\" />}\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tlabel=\"Upcoming - 66\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tmargin: \"4px 2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</Box>\r\n\t\t\t</Menu>\r\n\r\n\t\t\t{Boolean(state.openConferenceDialog) && <ConferenceDialog />}\r\n\r\n\t\t\t{Boolean(state.openCallTransferDialog) && (\r\n\t\t\t\t<CallTransferDialog open={state.openCallTransferDialog} />\r\n\t\t\t)}\r\n\r\n\t\t\t{Boolean(openCallDisposition) && (\r\n\t\t\t\t<EndCallDispositionDialog\r\n\t\t\t\t\topen={openCallDisposition}\r\n\t\t\t\t\tsetOpen={setOpenCallDisposition}\r\n\t\t\t\t\tonSubmitDisposition={handleEndCall}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\r\n\t\t\t{Boolean(openCallHistoryDialog) && (\r\n\t\t\t\t<CallHistoryDialog\r\n\t\t\t\t\topen={openCallHistoryDialog}\r\n\t\t\t\t\tsetOpen={setOpenCallHistoryDialog}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { type MouseEvent, type TouchEvent, useCallback, useRef, useState } from \"react\";\r\n\r\ninterface Position {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\ninterface UseDraggableReturn {\r\n\tposition: Position;\r\n\tisDragging: boolean;\r\n\tdragRef: any;\r\n\thandleMouseDown: (_e: MouseEvent<HTMLDivElement>) => void;\r\n\thandleTouchStart: (_e: TouchEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport function useDraggable(\r\n\tinitialPosition: Position,\r\n\tonPositionChange?: (_position: Position) => void\r\n): UseDraggableReturn {\r\n\tconst [position, setPosition] = useState<Position>(initialPosition);\r\n\r\n\tconst [isDragging, setIsDragging] = useState(false);\r\n\r\n\tconst dragRef = useRef<HTMLDivElement>();\r\n\r\n\tconst dragStart = useRef<Position>({ x: 0, y: 0 });\r\n\r\n\tconst elementStart = useRef<Position>({ x: 0, y: 0 });\r\n\r\n\tconst updatePosition = useCallback(\r\n\t\t(newPosition: Position) => {\r\n\t\t\tconst element = dragRef.current;\r\n\t\t\tif (!element) return;\r\n\r\n\t\t\tconst rect = element.getBoundingClientRect();\r\n\t\t\tconst viewportWidth = window.innerWidth;\r\n\t\t\tconst viewportHeight = window.innerHeight;\r\n\r\n\t\t\tconst constrainedPosition = {\r\n\t\t\t\tx: Math.max(0, Math.min(newPosition.x, viewportWidth - rect.width)),\r\n\t\t\t\ty: Math.max(0, Math.min(newPosition.y, viewportHeight - rect.height)),\r\n\t\t\t};\r\n\r\n\t\t\tsetPosition(constrainedPosition);\r\n\t\t\tonPositionChange?.(constrainedPosition);\r\n\t\t},\r\n\t\t[onPositionChange]\r\n\t);\r\n\r\n\tconst handleStart = useCallback(\r\n\t\t(clientX: number, clientY: number) => {\r\n\t\t\tsetIsDragging(true);\r\n\t\t\tdragStart.current = { x: clientX, y: clientY };\r\n\t\t\telementStart.current = position;\r\n\r\n\t\t\tconst handleMove = (moveClientX: number, moveClientY: number) => {\r\n\t\t\t\tconst deltaX = moveClientX - dragStart.current.x;\r\n\t\t\t\tconst deltaY = moveClientY - dragStart.current.y;\r\n\r\n\t\t\t\tupdatePosition({\r\n\t\t\t\t\tx: elementStart.current.x + deltaX,\r\n\t\t\t\t\ty: elementStart.current.y + deltaY,\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tconst handleMouseMove = (e: globalThis.MouseEvent) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\thandleMove(e.clientX, e.clientY);\r\n\t\t\t};\r\n\r\n\t\t\tconst handleTouchMove = (e: globalThis.TouchEvent) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst touch = e.touches[0];\r\n\t\t\t\tif (touch) {\r\n\t\t\t\t\thandleMove(touch.clientX, touch.clientY);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst handleEnd = () => {\r\n\t\t\t\tsetIsDragging(false);\r\n\t\t\t\tdocument.removeEventListener(\"mousemove\", handleMouseMove);\r\n\t\t\t\tdocument.removeEventListener(\"mouseup\", handleEnd);\r\n\t\t\t\tdocument.removeEventListener(\"touchmove\", handleTouchMove);\r\n\t\t\t\tdocument.removeEventListener(\"touchend\", handleEnd);\r\n\t\t\t};\r\n\r\n\t\t\tdocument.addEventListener(\"mousemove\", handleMouseMove);\r\n\t\t\tdocument.addEventListener(\"mouseup\", handleEnd);\r\n\t\t\tdocument.addEventListener(\"touchmove\", handleTouchMove, {\r\n\t\t\t\tpassive: false,\r\n\t\t\t});\r\n\t\t\tdocument.addEventListener(\"touchend\", handleEnd);\r\n\t\t},\r\n\t\t[position, updatePosition]\r\n\t);\r\n\r\n\tconst handleMouseDown = useCallback(\r\n\t\t(e: MouseEvent<HTMLDivElement>) => {\r\n\t\t\te.preventDefault();\r\n\t\t\thandleStart(e.clientX, e.clientY);\r\n\t\t},\r\n\t\t[handleStart]\r\n\t);\r\n\r\n\tconst handleTouchStart = useCallback(\r\n\t\t(e: TouchEvent<HTMLDivElement>) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tconst touch = e.touches[0];\r\n\t\t\tif (touch) {\r\n\t\t\t\thandleStart(touch.clientX, touch.clientY);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[handleStart]\r\n\t);\r\n\r\n\treturn {\r\n\t\tposition,\r\n\t\tisDragging,\r\n\t\tdragRef,\r\n\t\thandleMouseDown,\r\n\t\thandleTouchStart,\r\n\t};\r\n}\r\n","import { useState, useEffect } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\nimport type { SDKState } from \"../../types\";\r\n\r\nexport function useSDKState(): SDKState {\r\n\tconst [state, setState] = useState<SDKState>(sdkStateManager.getState());\r\n\r\n\tuseEffect(() => {\r\n\t\tconst unsubscribe = sdkStateManager.subscribe(() => {\r\n\t\t\tsetState(sdkStateManager.getState());\r\n\t\t});\r\n\r\n\t\treturn unsubscribe;\r\n\t}, []);\r\n\r\n\treturn state;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { type AxiosRequestConfig } from \"axios\";\r\nimport { useCallback, useReducer } from \"react\";\r\n\r\nimport axiosInstance from \"./axios\";\r\nimport { useToast } from \"./toastMessage\";\r\nimport {\r\n\tRequestResult,\r\n\tUseGetRequest,\r\n\tRequestOptions,\r\n\tUsePostRequest,\r\n\tUsePutRequest,\r\n\tUseDeleteRequest,\r\n\tUsePatchRequest,\r\n} from \"../../types\";\r\n\r\nconst initialState = {\r\n\tisLoading: false,\r\n\tisSuccess: false,\r\n\tisError: false,\r\n\terror: null,\r\n\tdata: null,\r\n};\r\n\r\nconst reducer = (state: typeof initialState, action: { type: string; payload: any }) => {\r\n\tif (action.type === \"isLoading\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisLoading: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"isSuccess\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisSuccess: true,\r\n\t\t\tdata: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"isError\") {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tisError: true,\r\n\t\t\terror: action.payload,\r\n\t\t};\r\n\t} else if (action.type === \"reset\") {\r\n\t\treturn {\r\n\t\t\tisLoading: false,\r\n\t\t\tisSuccess: false,\r\n\t\t\tisError: false,\r\n\t\t\terror: null,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\tthrow Error(\"Unknown action.\");\r\n};\r\n\r\nexport const useGetRequest = <T = UseGetRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst getRequest = useCallback(\r\n\t\t(url: string, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.get(url, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, config);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, config);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, config);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [getRequest, state];\r\n};\r\n\r\nexport const usePostRequest = <T = UsePostRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null, disabledSuccessToast = false } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst postRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.post(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\tif (!disabledSuccessToast) {\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [postRequest, state];\r\n};\r\n\r\nexport const usePutRequest = <T = UsePutRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst putRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.put(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, payload);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [putRequest, state];\r\n};\r\n\r\nexport const useDeleteRequest = <T = UseDeleteRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst deleteRequest = useCallback(\r\n\t\t(url: string, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.delete(url, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, config);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, config);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, config);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [deleteRequest, state];\r\n};\r\n\r\nexport const usePatchRequest = <T = UsePatchRequest>(\r\n\tprops: RequestOptions = {}\r\n): [(_url: string, _payload: T, _config?: AxiosRequestConfig) => void, RequestResult<T>] => {\r\n\tconst { onSuccess = null, onError = null } = props;\r\n\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\tconst patchRequest = useCallback(\r\n\t\t(url: string, payload: T, config = {}) => {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\tpayload: true,\r\n\t\t\t});\r\n\r\n\t\t\taxiosInstance\r\n\t\t\t\t.patch(url, payload, config)\r\n\t\t\t\t.then((res) => {\r\n\t\t\t\t\tif (res.data?.success) {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isSuccess\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tonSuccess?.(res.data, payload);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\t\tpayload: res.data,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tshowToast(res.data?.message, \"error\");\r\n\r\n\t\t\t\t\t\tonError?.(res.data, payload);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconst error = {\r\n\t\t\t\t\t\tstatus: err.response?.status ?? 500,\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\t\t\"An unknown error occurred\",\r\n\t\t\t\t\t\tdata: err.response?.data ?? null,\r\n\t\t\t\t\t\tstatusText: err.response?.statusText ?? \"\",\r\n\t\t\t\t\t\tcode: err?.code ?? \"\",\r\n\t\t\t\t\t\tname: err?.name ?? \"\",\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tshowToast(error.message, \"error\");\r\n\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isError\",\r\n\t\t\t\t\t\tpayload: error,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tonError?.(error, payload);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: \"isLoading\",\r\n\t\t\t\t\t\tpayload: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t[onSuccess, onError, showToast]\r\n\t);\r\n\r\n\treturn [patchRequest, state];\r\n};\r\n","import { createContext, useContext, useState, ReactNode } from \"react\";\r\nimport { Snackbar, Alert, AlertColor } from \"@mui/material\";\r\n\r\ntype ToastContextType = {\r\n\tshowToast: (message: string, severity?: AlertColor) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nexport const useToast = () => {\r\n\tconst ctx = useContext(ToastContext);\r\n\tif (!ctx) throw new Error(\"useToast must be used inside ToastProvider\");\r\n\treturn ctx;\r\n};\r\n\r\nexport const ToastProvider = ({ children }: { children: ReactNode }) => {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [message, setMessage] = useState(\"\");\r\n\tconst [severity, setSeverity] = useState<AlertColor>(\"info\");\r\n\r\n\tconst showToast = (msg: string, sev: AlertColor = \"info\") => {\r\n\t\tsetMessage(msg);\r\n\t\tsetSeverity(sev);\r\n\t\tsetOpen(true);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ToastContext.Provider value={{ showToast }}>\r\n\t\t\t{children}\r\n\t\t\t<Snackbar\r\n\t\t\t\topen={open}\r\n\t\t\t\tcolor={severity}\r\n\t\t\t\tautoHideDuration={3000}\r\n\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\tanchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n\t\t\t>\r\n\t\t\t\t<Alert\r\n\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\tseverity={severity}\r\n\t\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\t\tsx={{ width: \"100%\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{message}\r\n\t\t\t\t</Alert>\r\n\t\t\t</Snackbar>\r\n\t\t</ToastContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tCall,\r\n\tCallEnd,\r\n\tCallSplit,\r\n\tClose,\r\n\tMic,\r\n\tMicOff,\r\n\tPause,\r\n\tPhoneDisabled,\r\n\tPlayArrow,\r\n\tSupportAgent,\r\n} from \"@mui/icons-material\";\r\n\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tDialog,\r\n\tIconButton,\r\n\tPaper,\r\n\tTextField,\r\n\tTypography,\r\n\tAutocomplete,\r\n\tTooltip,\r\n\tuseTheme,\r\n\tTableContainer,\r\n\tTable,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTableCell,\r\n\tTableBody,\r\n\tCircularProgress,\r\n} from \"@mui/material\";\r\n\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { useSDKState } from \"../hooks/useSDKState\";\r\nimport { sdkStateManager } from \"../hooks/sdk-state\";\r\n\r\nimport { usePostRequest } from \"../services/request\";\r\nimport { END_POINT } from \"../services/endPoint\";\r\nimport axiosInstance from \"../services/axios\";\r\n\r\nimport type { ConferenceLineTypes } from \"../../types\";\r\n\r\nimport { useToast } from \"../services/toastMessage\";\r\n\r\nimport useStyles from \"./styles\";\r\n\r\ntype TransferCallRequest = {\r\n\tmobile_number?: string;\r\n\tuserid?: string;\r\n\ttype?: string;\r\n\ttransfer_to?: string;\r\n\tcallreferenceid?: string;\r\n\tprocessid?: string;\r\n\tprocess_name?: string;\r\n};\r\n\r\nconst ConferenceTableRow = ({ each, isMergeCall }: any) => {\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\tconst { disabled, enabled, outlined } = useStyles({\r\n\t\tdisabled: state.sdkConfig?.disabled || {},\r\n\t\tenabled: state.sdkConfig?.enabled || {},\r\n\t\toutlined: state.sdkConfig?.outlined || {},\r\n\t});\r\n\tconst theme = useTheme();\r\n\r\n\tconst [conferenceCallStart, setConferenceCallStart] = useState(false);\r\n\tconst [conferenceCallMerge, setConferenceCallMerge] = useState(false);\r\n\tconst [conferenceCallHoldOrUnHold, setConferenceCallHoldOrUnHold] = useState(false);\r\n\tconst [conferenceCallMuteOrUnMute, setConferenceCallMuteOrUnMute] = useState(false);\r\n\tconst [conferenceCallEnd, setConferenceCallEnd] = useState(false);\r\n\r\n\tconst onConferenceLineUpdate = (line: ConferenceLineTypes, data: any) => {\r\n\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t};\r\n\r\n\tconst onConferenceCallStart = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallStart(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: `CALL${line_used.line}`,\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallStart(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onMergeConferenceCall = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallMerge(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: `CONFERENCE`,\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallMerge(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onHoldOrUnHoldConferenceCall = (line: ConferenceLineTypes, data: any, type: string) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallHoldOrUnHold(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: type,\r\n\t\t\thold_channel_no: type === \"HOLDUSER\" ? `hold${line_used.line}` : `unhold${line_used.line}`,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_HOLD_OR_UN_HOLD, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallHoldOrUnHold(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onMuteOrUnMuteConferenceCall = (line: ConferenceLineTypes, data: any, type: string) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallMuteOrUnMute(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: type,\r\n\t\t\tchannel_no: type === \"MUTEUSER\" ? `mute${line_used.line}` : `play${line_used.line}`,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_MUTE_OT_UN_MUTE, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallMuteOrUnMute(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst onEndConferenceCall = (line: ConferenceLineTypes, data: any) => {\r\n\t\tconst line_used = { ...line, ...data };\r\n\r\n\t\tsetConferenceCallEnd(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: \"HANGUP_CHANNEL\",\r\n\t\t\tline_used: String(line_used.line),\r\n\t\t\tuser_type: `THIRDPARTY${line_used.line - 1}`,\r\n\t\t\tthirdparty_no: line_used.phone,\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_END, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.setConferenceLine({ ...line, ...data });\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallEnd(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<TableRow\r\n\t\t\tkey={each.line}\r\n\t\t\tsx={{\r\n\t\t\t\tborder: \"2px solid #fff\",\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Typography>Line {each?.line ?? \"\"}. </Typography>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Typography\r\n\t\t\t\t\tvariant=\"body2\"\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tpx: 1,\r\n\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{each?.status ?? \"\"}\r\n\t\t\t\t</Typography>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<Typography variant=\"body2\">{each?.line === 1 ? \"Internal\" : \"External\"}</Typography>\r\n\t\t\t\t</Button>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<TextField\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\tplaceholder=\"Phone Number\"\r\n\t\t\t\t\tfullWidth\r\n\t\t\t\t\tvalue={each?.phone || \"\"}\r\n\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\teach?.line === 1 ||\r\n\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\teach?.status === \"CONFERENCE\" ||\r\n\t\t\t\t\t\teach?.status === \"HOLD\" ||\r\n\t\t\t\t\t\teach?.status === \"MUTE\"\r\n\t\t\t\t\t}\r\n\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\tonConferenceLineUpdate(each, { phone: e.target.value });\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\tjustifyContent: \"space-around\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{each.line !== 1 && (\r\n\t\t\t\t\t\t<Tooltip title=\"Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={each?.status !== \"IDLE\" ? \"outlined\" : \"contained\"}\r\n\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" ?\r\n\t\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"success.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `0px 2px 1px ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.success.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"success.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonConferenceCallStart(each, {});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={each?.status !== \"IDLE\"}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{conferenceCallStart ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\t<Call\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: each?.status !== \"IDLE\" ? \"default\" : \"#f3f2f2\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{each.line === 1 && (\r\n\t\t\t\t\t\t<Tooltip title=\"Merge Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={isMergeCall ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\tisMergeCall ?\r\n\t\t\t\t\t\t\t\t\t\t{ ...enabled, padding: \"0px 16px\" }\r\n\t\t\t\t\t\t\t\t\t:\t{ ...disabled, padding: \"0px 16px\" }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonMergeConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\t\tisMergeCall: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={!isMergeCall || conferenceCallMerge}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{each?.isMergeCall ? \"Merged\" : \"Merge\"}\r\n\t\t\t\t\t\t\t\t{conferenceCallMerge ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress size=\"20px\" />\r\n\t\t\t\t\t\t\t\t:\t<CallSplit />}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<Tooltip title={each.status !== \"HOLD\" ? \"Hold\" : \"Un Hold\"}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant={each.status === \"HOLD\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\teach.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"CONFERENCE\"\r\n\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t: each?.status === \"ONCALL\" || each?.status === \"CONFERENCE\" ?\r\n\t\t\t\t\t\t\t\t\t// each.status === \"IDLE\"\r\n\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tif (each.status === \"HOLD\") {\r\n\t\t\t\t\t\t\t\t\tonHoldOrUnHoldConferenceCall(each, { isHold: false }, \"UNHOLDUSER\");\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tonHoldOrUnHoldConferenceCall(each, { isHold: true }, \"HOLDUSER\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" ||\r\n\t\t\t\t\t\t\t\tconferenceCallHoldOrUnHold\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallHoldOrUnHold ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t: each.status === \"HOLD\" ?\r\n\t\t\t\t\t\t\t\t<PlayArrow />\r\n\t\t\t\t\t\t\t:\t<Pause />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t<Tooltip title={each.status !== \"MUTE\" ? \"Mute\" : \"Un Mute\"}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant={each.status === \"MUTE\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\teach.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"ONCALL\" ||\r\n\t\t\t\t\t\t\t\t\teach?.status === \"CONFERENCE\"\r\n\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t{ ...disabled }\r\n\t\t\t\t\t\t\t\t: each?.status === \"ONCALL\" || each?.status === \"CONFERENCE\" ?\r\n\t\t\t\t\t\t\t\t\t{ ...outlined }\r\n\t\t\t\t\t\t\t\t:\t{ ...disabled }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tif (each.status === \"MUTE\") {\r\n\t\t\t\t\t\t\t\t\tonMuteOrUnMuteConferenceCall(each, { isMute: false }, \"PLAYUSER\");\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tonMuteOrUnMuteConferenceCall(each, { isMute: true }, \"MUTEUSER\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"DISCONNECTED\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" ||\r\n\t\t\t\t\t\t\t\teach?.status === \"HOLD\" ||\r\n\t\t\t\t\t\t\t\tconferenceCallMuteOrUnMute\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallMuteOrUnMute ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t: each.status === \"MUTE\" ?\r\n\t\t\t\t\t\t\t\t<MicOff />\r\n\t\t\t\t\t\t\t:\t<Mic />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t{each?.line !== 1 ?\r\n\t\t\t\t\t\t<Tooltip title=\"End Call\">\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" && each?.status !== \"DISCONNECTED\" ?\r\n\t\t\t\t\t\t\t\t\t\t\"contained\"\r\n\t\t\t\t\t\t\t\t\t:\t\"outlined\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\tsx={\r\n\t\t\t\t\t\t\t\t\teach?.status !== \"IDLE\" && each?.status !== \"DISCONNECTED\" ?\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...enabled,\r\n\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `0px 2px 1px ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: `0px solid ${theme.palette.error.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:active\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.light\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t:\t{\r\n\t\t\t\t\t\t\t\t\t\t\t...disabled,\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonEndConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\t\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t\t\t\t\t\t\tisMute: false,\r\n\t\t\t\t\t\t\t\t\t\tisHold: false,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\teach?.status === \"IDLE\" || each?.status === \"DISCONNECTED\" || conferenceCallEnd\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{conferenceCallEnd ?\r\n\t\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t:\t<Button\r\n\t\t\t\t\t\t\tvariant={each?.isCallStart ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"none\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tonEndConferenceCall(each, {\r\n\t\t\t\t\t\t\t\t\tisCallStart: false,\r\n\t\t\t\t\t\t\t\t\tisMergeCall: false,\r\n\t\t\t\t\t\t\t\t\tisMute: false,\r\n\t\t\t\t\t\t\t\t\tisHold: false,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\teach?.status === \"IDLE\" || each?.status === \"DISCONNECTED\" || conferenceCallEnd\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallEnd ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t:\t<CallEnd />}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</Box>\r\n\t\t\t</TableCell>\r\n\t\t</TableRow>\r\n\t);\r\n};\r\n\r\nexport function ConferenceDialog() {\r\n\tconst state = useSDKState();\r\n\tconst { showToast } = useToast();\r\n\r\n\tconst [conferenceCallEndAll, setConferenceCallEndAll] = useState(false);\r\n\r\n\tconst handleClose = () => {\r\n\t\tsdkStateManager.setOpenConferenceDialog(false);\r\n\t};\r\n\r\n\tconst onEndAllConferenceCalls = () => {\r\n\t\tsetConferenceCallEndAll(true);\r\n\r\n\t\tconst payload = {\r\n\t\t\taction: \"EXTERNAL_CONFERENCE\",\r\n\t\t\toperation: \"ENDCONFERENCE\",\r\n\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\tprocess: state.callData?.process_name ?? \"\",\r\n\t\t};\r\n\r\n\t\taxiosInstance\r\n\t\t\t.post(END_POINT.CONFERENCE_CALL_END_ALL, payload)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tshowToast(res.data?.message, \"success\");\r\n\t\t\t\tsdkStateManager.resetConferenceLines();\r\n\t\t\t\thandleClose();\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconst message =\r\n\t\t\t\t\terr.response?.data?.detail ||\r\n\t\t\t\t\terr.response?.data?.message ||\r\n\t\t\t\t\terr.message ||\r\n\t\t\t\t\t\"An unknown error occurred\";\r\n\t\t\t\tshowToast(message, \"error\");\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetConferenceCallEndAll(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst isMergeCall = useMemo(() => {\r\n\t\treturn state?.conferenceLine?.some((each: any) => {\r\n\t\t\tif (each.line !== 1) {\r\n\t\t\t\treturn each.status === \"ONCALL\";\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\t}, [state.conferenceLine]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={state.openConferenceDialog}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"10px 16px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\">{state?.agentId ?? \"\"} conference</Typography>\r\n\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 2px #e7e5e5ff\",\r\n\t\t\t\t\t\t\tmargin: \"0px 15px\",\r\n\t\t\t\t\t\t\tborderRadius: \"20px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<TableContainer\r\n\t\t\t\t\t\t\tcomponent={Paper}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\toutline: \"0px solid gray !important\",\r\n\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 6px #e7e5e5ff\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Table\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborder: \"4px solid #ffffff !important\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t<TableRow\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tborder: \"2px solid #f3f3f3ff !important\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tLine\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tStatus\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tCall Type\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tMobile Number\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tCall Actions\r\n\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t{state?.conferenceLine.map((each: any) => (\r\n\t\t\t\t\t\t\t\t\t\t<ConferenceTableRow\r\n\t\t\t\t\t\t\t\t\t\t\teach={each}\r\n\t\t\t\t\t\t\t\t\t\t\tisMergeCall={isMergeCall}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\tm={2}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={onEndAllConferenceCalls}\r\n\t\t\t\t\t\t\tdisabled={conferenceCallEndAll}\r\n\t\t\t\t\t\t\tsx={{ px: 2, borderRadius: \"20px\", textTransform: \"capitalize\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{conferenceCallEndAll ?\r\n\t\t\t\t\t\t\t\t<CircularProgress\r\n\t\t\t\t\t\t\t\t\tsize=\"20px\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"8px\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t:\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tbgcolor: \"error.main\",\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"error.dark\" },\r\n\t\t\t\t\t\t\t\t\t\tmarginRight: \"8px\",\r\n\t\t\t\t\t\t\t\t\t\twidth: \"28px\",\r\n\t\t\t\t\t\t\t\t\t\theight: \"28px\",\r\n\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\tlineHeight: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: \"50%\",\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<PhoneDisabled\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tEnd Conference\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function CallTransferDialog({ open }: any) {\r\n\tconst state = useSDKState();\r\n\r\n\tconst [transferCall] = usePostRequest<TransferCallRequest>({\r\n\t\tonSuccess: () => {\r\n\t\t\tsdkStateManager.setOpenCallTransferDialog(false);\r\n\t\t},\r\n\t});\r\n\r\n\tconst [currentselecteTab, setCurrentselecteTab] = useState(\"process\");\r\n\r\n\tconst [getIdelAgentsList, { data: idleAgentsList, isLoading: isIdleAgentsListLoading }] =\r\n\t\tusePostRequest<any>({\r\n\t\t\tdisabledSuccessToast: true,\r\n\t\t});\r\n\r\n\tconst [\r\n\t\tgetProcessAndQueuesList,\r\n\t\t{ data: processAndQueuesList, isLoading: isProcessAndQueuesListLoading },\r\n\t] = usePostRequest<{\r\n\t\tstatus: string;\r\n\t\tactive: boolean;\r\n\t\tprocess?: any[];\r\n\t\tqueue?: any[];\r\n\t}>({\r\n\t\tdisabledSuccessToast: true,\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\tsdkStateManager.setOpenCallTransferDialog(false);\r\n\t};\r\n\r\n\tconst handleTransferCall = (data: any, type: string) => {\r\n\t\tif (type === \"PROCESS\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"PROCESS\",\r\n\t\t\t\ttransfer_to: data?.process_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t} else if (type === \"QUEUE\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"QUEUE\",\r\n\t\t\t\ttransfer_to: data?.queue_name ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t} else if (type === \"AGENT\") {\r\n\t\t\tconst payload = {\r\n\t\t\t\tmobile_number: state.callData?.phone_number ?? \"\",\r\n\t\t\t\tuserid: state.callData?.agent_id ?? \"\",\r\n\t\t\t\ttype: \"AGENT\",\r\n\t\t\t\ttransfer_to: data?.user_id ?? \"\",\r\n\t\t\t\tcallreferenceid: state.callData?.convox_id ?? \"\",\r\n\t\t\t\tprocessid: String(state.callData?.process_id ?? \"\"),\r\n\t\t\t\tprocess_name: state.callData?.process_name ?? \"\",\r\n\t\t\t};\r\n\t\t\ttransferCall(END_POINT.TRANSFER_CALL, payload);\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tgetIdelAgentsList(END_POINT.AGENTS_LIST, {\r\n\t\t\tstatus: \"IDLE\",\r\n\t\t\tactive: true,\r\n\t\t});\r\n\r\n\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\tstatus: \"ACTIVE\",\r\n\t\t\tactive: true,\r\n\t\t});\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Call Transfer</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"6px 10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1 }}>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"process\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"process\");\r\n\t\t\t\t\t\t\t\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"ACTIVE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tProcess\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"queues\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"queues\");\r\n\t\t\t\t\t\t\t\t\tgetProcessAndQueuesList(END_POINT.TRANSFER_TO_DETAILS, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"ACTIVE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tQueues\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\tvariant={currentselecteTab === \"agents\" ? \"contained\" : \"outlined\"}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCurrentselecteTab(\"agents\");\r\n\t\t\t\t\t\t\t\t\tgetIdelAgentsList(END_POINT.AGENTS_LIST, {\r\n\t\t\t\t\t\t\t\t\t\tstatus: \"IDLE\",\r\n\t\t\t\t\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tAgents\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t{(isProcessAndQueuesListLoading || isIdleAgentsListLoading) && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\theight: \"80px\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<CircularProgress />{\" \"}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"process\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process &&\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.length > 0\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.map((process: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{process.process_name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(process, \"PROCESS\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Process Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"queues\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue &&\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue?.length > 0\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.queue?.map((queue: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{queue.queue_name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.find(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(process: any) => process.process_id === queue.process_id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)?.process_name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"600\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"(\" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessAndQueuesList?.data?.process?.find(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(process: any) => process.process_id === queue.process_id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)?.process_name +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\")\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t:\t\"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(queue, \"QUEUE\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Queues Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!isProcessAndQueuesListLoading &&\r\n\t\t\t\t\t\t\t!isIdleAgentsListLoading &&\r\n\t\t\t\t\t\t\tcurrentselecteTab === \"agents\" && (\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t{idleAgentsList?.data && idleAgentsList?.data?.length > 0 ?\r\n\t\t\t\t\t\t\t\t\t\tidleAgentsList?.data?.map((agent: any, index: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{agent.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"success\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbgcolor: \"action.hover\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleTransferCall(agent, \"AGENT\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Call />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t:\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tletterSpacing: \"0.02em\",\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"gray\",\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"60px\",\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNo Agents Found\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function EndCallDispositionDialog({ open, setOpen, onSubmitDisposition }: any) {\r\n\tconst [formData, setFormData] = useState({\r\n\t\tdisposition: { label: \"Resolved\", value: \"RES\" },\r\n\t\tfollowUp: { label: \"No\", value: \"N\" },\r\n\t\tcallbackDate: \"\",\r\n\t\tcallbackHrs: \"\",\r\n\t\tcallbackMins: \"\",\r\n\t});\r\n\tconst dispositionOptions = [\r\n\t\t{ label: \"Not Interested\", value: \"NI\" },\r\n\t\t{ label: \"Resolved\", value: \"RES\" },\r\n\t];\r\n\tconst followUpOptions = [\r\n\t\t{ label: \"Yes\", value: \"Y\" },\r\n\t\t{ label: \"No\", value: \"N\" },\r\n\t];\r\n\r\n\tconst handleChange = (field: keyof typeof formData, value: { label: string } | null | string) => {\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\t};\r\n\r\n\tconst handleReset = () => {\r\n\t\tsetFormData({\r\n\t\t\tdisposition: { label: \"Resolved\", value: \"RES\" },\r\n\t\t\tfollowUp: { label: \"No\", value: \"N\" },\r\n\t\t\tcallbackDate: \"\",\r\n\t\t\tcallbackHrs: \"\",\r\n\t\t\tcallbackMins: \"\",\r\n\t\t});\r\n\t};\r\n\r\n\tconst handleClose = () => {\r\n\t\thandleReset();\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"xs\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"center\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\tm={1}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\tCall Disposition\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Autocomplete\r\n\t\t\t\t\t\t\t\tvalue={formData.disposition}\r\n\t\t\t\t\t\t\t\toptions={dispositionOptions}\r\n\t\t\t\t\t\t\t\tgetOptionLabel={(opt) => opt.label}\r\n\t\t\t\t\t\t\t\tonChange={(_, val) => handleChange(\"disposition\", val)}\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\trenderInput={(params) => (\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\t{...params}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Disposition\"\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<Autocomplete\r\n\t\t\t\t\t\t\t\toptions={followUpOptions}\r\n\t\t\t\t\t\t\t\tgetOptionLabel={(opt) => opt.label}\r\n\t\t\t\t\t\t\t\tvalue={formData.followUp}\r\n\t\t\t\t\t\t\t\tonChange={(_, val) => handleChange(\"followUp\", val)}\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\trenderInput={(params) => (\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\t{...params}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Follow Up\"\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{formData?.followUp?.label?.toLowerCase() === \"yes\" && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t\t\tmt={2}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Callback Date\"\r\n\t\t\t\t\t\t\t\t\ttype=\"date\"\r\n\t\t\t\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\t\t\t\tinputLabel: { shrink: true },\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackDate}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackDate\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Hours (0-23)\"\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackHrs}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackHrs\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{formData?.followUp?.label?.toLowerCase() === \"yes\" && (\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tdisplay=\"flex\"\r\n\t\t\t\t\t\t\t\tgap={2}\r\n\t\t\t\t\t\t\t\tmt={2}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tlabel=\"Minutes (0-59)\"\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tvalue={formData.callbackMins}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => handleChange(\"callbackMins\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\tsx={{ flex: 1 }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t<Box sx={{ flex: 1 }}></Box>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\ttextAlign=\"right\"\r\n\t\t\t\t\t\tm={2}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tcolor=\"error\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={handleClose}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\ttextTransform: \"capitalize\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tcancel\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\tsize=\"large\"\r\n\t\t\t\t\t\t\tonClick={() => onSubmitDisposition(formData)}\r\n\t\t\t\t\t\t\tsx={{ px: 2, borderRadius: \"10px\", textTransform: \"capitalize\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function ProcessorListDialog({\r\n\topen,\r\n\tsetOpen,\r\n\tprocessList = null,\r\n\thandleSelectedProcessor,\r\n}: any) {\r\n\tconst handleClose = () => {\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tmaxWidth={\"xs\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Process List</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tpadding: \"6px 10px\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{processList.length > 0 ?\r\n\t\t\t\t\t\t\tprocessList?.map((process: any, index: any) => (\r\n\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tp: 1,\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\t\t\t\tpadding: \"6px\",\r\n\t\t\t\t\t\t\t\t\t\tmargin: \"10px 0px\",\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { bgcolor: \"action.selected\" },\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\thandleSelectedProcessor(process);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\tvariant=\"body1\"\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tmx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\twidth: \"200px\",\r\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"250px\",\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SupportAgent sx={{ marginRight: \"4px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t{process.process_name}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t:\tnull}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport function CallHistoryDialog({ open, setOpen }: any) {\r\n\tconst handleClose = () => {\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Dialog\r\n\t\t\t\topen={open}\r\n\t\t\t\taria-labelledby=\"alert-dialog-title\"\r\n\t\t\t\taria-describedby=\"alert-dialog-description\"\r\n\t\t\t\tfullWidth\r\n\t\t\t\tmaxWidth={\"md\"}\r\n\t\t\t>\r\n\t\t\t\t<Paper sx={{ borderRadius: 2 }}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tpadding: \"4px 16px\",\r\n\t\t\t\t\t\t\tboxShadow: \"0px 1px 2px #f5f5f5ff\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Typography variant=\"body1\"> Call History</Typography>\r\n\t\t\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t\t\t<Close />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tboxShadow: \"1px 1px 4px #d3d3d3ff\",\r\n\t\t\t\t\t\t\tmargin: \"10px\",\r\n\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\t\t\tfontWeight: \"bold\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tp={6}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tComing Soon...\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Paper>\r\n\t\t\t</Dialog>\r\n\t\t</>\r\n\t);\r\n}\r\n","import { SxProps, useTheme } from \"@mui/material\";\r\n\r\nconst useStyles = ({\r\n disabled,\r\n enabled,\r\n outlined,\r\n}: {\r\n disabled: SxProps;\r\n enabled: SxProps;\r\n outlined: SxProps;\r\n}): {\r\n disabled: SxProps;\r\n enabled: SxProps;\r\n outlined: SxProps;\r\n} => {\r\n const theme = useTheme();\r\n return {\r\n disabled: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n border: `1px solid rgb(206, 204, 204)`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: \" 0px 2px 2px rgba(0, 0, 0, 0.79)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...disabled,\r\n },\r\n enabled: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n boxShadow: \" 0px 2px 1px rgba(0, 0, 0, 0.507)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: \" 0px 2px 1px rgba(0, 0, 0, 0.507)\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...enabled,\r\n },\r\n outlined: {\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n minWidth: \"40px !important\",\r\n borderRadius: \"16px\",\r\n backgroundColor: theme.palette.grey[200],\r\n boxShadow: `0px 2px 1px ${theme.palette.primary.light}`,\r\n border: `0px solid ${theme.palette.primary.main}`,\r\n height: \"40px\",\r\n \"&:hover\": {\r\n boxShadow: `0px 2px 1px ${theme.palette.primary.main}`,\r\n border: `0px solid ${theme.palette.primary.main}`,\r\n },\r\n \"&:active\": {\r\n bgcolor: \"primary.main\",\r\n boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`,\r\n },\r\n ...outlined,\r\n },\r\n };\r\n};\r\n\r\nexport default useStyles;\r\n","import { ReactNode, memo } from \"react\";\r\nimport { ToastProvider } from \"../services/toastMessage\";\r\nimport React from \"react\";\r\nimport { SDKProviderProps } from \"../../types\";\r\n\r\nexport const SDKProvider = memo<SDKProviderProps>(({ children }) => {\r\n\treturn <ToastProvider>{children}</ToastProvider>;\r\n});\r\n\r\nSDKProvider.displayName = \"SDKProvider\";\r\n"],"mappings":"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","names":["index_exports","__export","CallControlPanel","getSDKVersion","initSDK","isSDKInitialized","useClickToCall","useEndCall","useGetAuthorizationToken","useGetCallerData","useLogout","__toCommonJS","IP","BASE_URL","WS_BASE_URL","VERSION","END_POINT","WS_END_POINT","STORAGE_KEY","SDKStateManager","__publicField","STORAGE_KEY","stored","parsedState","__spreadProps","__spreadValues","error","persistentState","listener","apiKey","tenantId","agentId","sdkConfig","initResult","_a","index","isHolding","isMuted","status","process","position","open","data","line","conferenceLineData","each","sdkStateManager","EventTrackerSDK","__publicField","config","__spreadValues","ticket","response","sdkStateManager","data","error","eventType","eventData","event","url","options","_a","fullUrl","maxRetries","attempt","delay","resolve","autoTrackConfig","target","formData","formFields","value","key","inputTimer","sessionStartTime","sessionDuration","navigation","timing","eventTracker","import_react","import_axios","_a","DEFAULT_TOKEN","sdkStateManager","REQUEST_TIMEOUT","getAuthToken","createAxiosInstance","_b","_c","_d","instance","axios","BASE_URL","config","token","error","response","endTime","startTime","originalRequest","axiosInstance","axios_default","useLogout","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","state","STORAGE_KEY","payload","axios_default","END_POINT","res","sdkStateManager","err","import_react","useEndCall","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","state","STORAGE_KEY","payload","axios_default","END_POINT","res","sdkStateManager","err","import_react","useClickToCall","loading","setLoading","success","setSuccess","isError","setIsError","error","setError","data","setData","_a","_b","_c","_d","_e","_f","_g","_h","_i","state","STORAGE_KEY","payload","axios_default","END_POINT","res","err","line_used","each","sdkStateManager","__spreadProps","__spreadValues","import_react","useGetCallerData","process_id","process_name","status","phone_number","agent_id","convox_id","sdkStateManager","initialCallData","callData","setCallData","import_react","useGetAuthorizationToken","token","setToken","sdkStateManager","import_react","import_icons_material","import_material","import_react","import_react","useDraggable","initialPosition","onPositionChange","position","setPosition","isDragging","setIsDragging","dragRef","dragStart","elementStart","updatePosition","newPosition","element","rect","viewportWidth","viewportHeight","constrainedPosition","handleStart","clientX","clientY","handleMove","moveClientX","moveClientY","deltaX","deltaY","handleMouseMove","e","handleTouchMove","touch","handleEnd","handleMouseDown","handleTouchStart","import_react","useSDKState","state","setState","sdkStateManager","import_react","import_react","import_material","import_jsx_runtime","ToastContext","useToast","ctx","ToastProvider","children","open","setOpen","message","setMessage","severity","setSeverity","showToast","msg","sev","initialState","reducer","state","action","__spreadProps","__spreadValues","usePostRequest","props","onSuccess","onError","disabledSuccessToast","showToast","useToast","state","dispatch","reducer","initialState","url","payload","config","axios_default","res","_a","err","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","error","import_icons_material","import_material","import_react","import_material","useStyles","disabled","enabled","outlined","theme","__spreadValues","styles_default","import_jsx_runtime","ConferenceTableRow","each","isMergeCall","_a","_b","_c","_d","_e","state","useSDKState","showToast","useToast","disabled","enabled","outlined","styles_default","theme","conferenceCallStart","setConferenceCallStart","conferenceCallMerge","setConferenceCallMerge","conferenceCallHoldOrUnHold","setConferenceCallHoldOrUnHold","conferenceCallMuteOrUnMute","setConferenceCallMuteOrUnMute","conferenceCallEnd","setConferenceCallEnd","onConferenceLineUpdate","line","data","sdkStateManager","__spreadValues","onConferenceCallStart","line_used","payload","axios_default","END_POINT","res","err","message","onMergeConferenceCall","onHoldOrUnHoldConferenceCall","type","onMuteOrUnMuteConferenceCall","onEndConferenceCall","e","__spreadProps","ConferenceDialog","conferenceCallEndAll","setConferenceCallEndAll","handleClose","onEndAllConferenceCalls","CallTransferDialog","open","_f","_g","_h","_i","_j","_k","_l","transferCall","usePostRequest","currentselecteTab","setCurrentselecteTab","getIdelAgentsList","idleAgentsList","isIdleAgentsListLoading","getProcessAndQueuesList","processAndQueuesList","isProcessAndQueuesListLoading","handleTransferCall","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","process","index","queue","agent","EndCallDispositionDialog","setOpen","onSubmitDisposition","formData","setFormData","dispositionOptions","followUpOptions","handleChange","field","value","prev","handleReset","opt","_","val","params","ProcessorListDialog","processList","handleSelectedProcessor","CallHistoryDialog","import_jsx_runtime","getCombineConfrenceData","conferenceData","apiData","data","item","_a","_b","_c","statusKey","__spreadProps","__spreadValues","phoneKey","formatDuration","seconds","mins","secs","CallControls","onDataChange","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","theme","state","useSDKState","showToast","useToast","disabled","enabled","outlined","styles_default","webSocketRef","audioRef","reconnectTimeoutRef","pingIntervalRef","reconnectAttemptsRef","maxReconnectAttempts","baseReconnectDelay","maxReconnectDelay","anchorEl","setAnchorEl","showIframe","setShowIframe","statusAnchorEl","setStatusAnchorEl","dialerAnchorEl","setDialerAnchorEl","openCallDisposition","setOpenCallDisposition","openProcessorDialog","setOpenProcessorDialog","openCallHistoryDialog","setOpenCallHistoryDialog","processList","setProcessList","phoneNumber","setPhoneNumber","callDuration","setCallDuration","position","isDragging","dragRef","handleMouseDown","handleTouchStart","useDraggable","newPosition","sdkStateManager","iframePosition","iframeIsDragging","iframeDragRef","iframeHandleMouseDown","iframeHandleTouchStart","clickToCall","clickToCallLoading","usePostRequest","holdOrUnHold","holdOrUnHoldLoading","error","muteOrUnMute","muteOrUnMuteLoading","readyAgentStatus","agentReadyLoading","updateAgentStatus","isLoading","endCall","endCallLoading","handleCloseQueueCounts","handleOpenDialer","event","handleCloseDialer","handleOpenAgentStatus","handleCloseAgentStatus","handleAgentReady","payload","END_POINT","handleUpdateAgentStatus","status","handleStartCall","number","handleHoldToggle","handleMuteToggle","handleEndCall","handleBeforeUnload","e","interval","elapsed","incoming_default","process_id","process_name","phone_number","agent_id","convox_id","axios_default","res","err","connectWebSocket","WS_END_POINT","confrence","delay","ProcessorListDialog","IP","ConferenceDialog","CallTransferDialog","EndCallDispositionDialog","CallHistoryDialog","import_react","import_jsx_runtime","SDKProvider","children","ToastProvider","import_jsx_runtime","CallControlPanel","onDataChange","handleDataChange","data","error","SDKProvider","CallControls","initSDK","apiKey","tenantId","agentId","sdkConfig","initResult","eventTracker","BASE_URL","sdkStateManager","error","getSDKVersion","isSDKInitialized"]}