ahs-cti 1.0.0-beta.47 → 1.0.0-beta.49

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.
Files changed (28) hide show
  1. package/dist/{agentDetailReport-2Z5I7XNO.mjs → agentDetailReport-EXJZOAWB.mjs} +3 -3
  2. package/dist/{agentPerformanceReport-XVYNBFXB.mjs → agentPerformanceReport-WJEQKLIL.mjs} +5 -5
  3. package/dist/{callHistory-RFHCXVJA.mjs → callHistory-PJV7ZX3R.mjs} +2 -2
  4. package/dist/{campaigns-KUDBCYHP.mjs → campaigns-UMAMUUDZ.mjs} +4 -4
  5. package/dist/{cdrReport-ZSITXXEP.mjs → cdrReport-4DLCPYQ4.mjs} +4 -4
  6. package/dist/{chunk-DRD72WVS.mjs → chunk-3SHCNPBA.mjs} +2 -2
  7. package/dist/{chunk-MR7Z44GR.mjs → chunk-APYLQRX7.mjs} +2 -2
  8. package/dist/{chunk-XIRHJLJS.mjs → chunk-HADAFS7N.mjs} +2 -2
  9. package/dist/{chunk-JGYXK7TO.mjs → chunk-KNTFDU2K.mjs} +2 -2
  10. package/dist/{chunk-WROV2G6D.mjs → chunk-NDBIVYJT.mjs} +4 -1
  11. package/dist/chunk-NDBIVYJT.mjs.map +1 -0
  12. package/dist/index.js +131 -37
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +136 -46
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/{loginReport-FPRGQUEF.mjs → loginReport-JTW2KEUN.mjs} +4 -4
  17. package/package.json +1 -1
  18. package/dist/chunk-WROV2G6D.mjs.map +0 -1
  19. /package/dist/{agentDetailReport-2Z5I7XNO.mjs.map → agentDetailReport-EXJZOAWB.mjs.map} +0 -0
  20. /package/dist/{agentPerformanceReport-XVYNBFXB.mjs.map → agentPerformanceReport-WJEQKLIL.mjs.map} +0 -0
  21. /package/dist/{callHistory-RFHCXVJA.mjs.map → callHistory-PJV7ZX3R.mjs.map} +0 -0
  22. /package/dist/{campaigns-KUDBCYHP.mjs.map → campaigns-UMAMUUDZ.mjs.map} +0 -0
  23. /package/dist/{cdrReport-ZSITXXEP.mjs.map → cdrReport-4DLCPYQ4.mjs.map} +0 -0
  24. /package/dist/{chunk-DRD72WVS.mjs.map → chunk-3SHCNPBA.mjs.map} +0 -0
  25. /package/dist/{chunk-MR7Z44GR.mjs.map → chunk-APYLQRX7.mjs.map} +0 -0
  26. /package/dist/{chunk-XIRHJLJS.mjs.map → chunk-HADAFS7N.mjs.map} +0 -0
  27. /package/dist/{chunk-JGYXK7TO.mjs.map → chunk-KNTFDU2K.mjs.map} +0 -0
  28. /package/dist/{loginReport-FPRGQUEF.mjs.map → loginReport-JTW2KEUN.mjs.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  agentDetailReport_default
3
- } from "./chunk-DRD72WVS.mjs";
3
+ } from "./chunk-3SHCNPBA.mjs";
4
4
  import "./chunk-G5Q2CBVN.mjs";
5
- import "./chunk-WROV2G6D.mjs";
5
+ import "./chunk-NDBIVYJT.mjs";
6
6
  export {
7
7
  agentDetailReport_default as default
8
8
  };
9
- //# sourceMappingURL=agentDetailReport-2Z5I7XNO.mjs.map
9
+ //# sourceMappingURL=agentDetailReport-EXJZOAWB.mjs.map
@@ -4,13 +4,13 @@ import {
4
4
  headCellSx,
5
5
  reportBodyCellSx,
6
6
  sortLabelSx
7
- } from "./chunk-JGYXK7TO.mjs";
7
+ } from "./chunk-KNTFDU2K.mjs";
8
8
  import {
9
9
  SDKPermissionGuard
10
- } from "./chunk-XIRHJLJS.mjs";
10
+ } from "./chunk-HADAFS7N.mjs";
11
11
  import {
12
12
  agentDetailReport_default
13
- } from "./chunk-DRD72WVS.mjs";
13
+ } from "./chunk-3SHCNPBA.mjs";
14
14
  import {
15
15
  AppButton,
16
16
  PageHeader
@@ -22,7 +22,7 @@ import {
22
22
  __spreadProps,
23
23
  __spreadValues,
24
24
  axios_default
25
- } from "./chunk-WROV2G6D.mjs";
25
+ } from "./chunk-NDBIVYJT.mjs";
26
26
 
27
27
  // call-control-sdk/lib/pages/agentPerformanceReport/index.tsx
28
28
  import { useState as useState2, useEffect, useCallback as useCallback2, useMemo } from "react";
@@ -507,4 +507,4 @@ var agentPerformanceReport_default = AgentPerformanceReport;
507
507
  export {
508
508
  agentPerformanceReport_default as default
509
509
  };
510
- //# sourceMappingURL=agentPerformanceReport-XVYNBFXB.mjs.map
510
+ //# sourceMappingURL=agentPerformanceReport-WJEQKLIL.mjs.map
@@ -8,7 +8,7 @@ import {
8
8
  __spreadValues,
9
9
  axios_default,
10
10
  useToast
11
- } from "./chunk-WROV2G6D.mjs";
11
+ } from "./chunk-NDBIVYJT.mjs";
12
12
 
13
13
  // call-control-sdk/lib/pages/callHistory/index.tsx
14
14
  import { memo, useEffect, useState as useState2 } from "react";
@@ -361,4 +361,4 @@ var callHistory_default = CallHistory;
361
361
  export {
362
362
  callHistory_default as default
363
363
  };
364
- //# sourceMappingURL=callHistory-RFHCXVJA.mjs.map
364
+ //# sourceMappingURL=callHistory-PJV7ZX3R.mjs.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  useGetCallerData
3
- } from "./chunk-MR7Z44GR.mjs";
3
+ } from "./chunk-APYLQRX7.mjs";
4
4
  import {
5
5
  SDKPageHeader
6
6
  } from "./chunk-I5VT6XXH.mjs";
7
7
  import {
8
8
  SDKPermissionGuard,
9
9
  useSDKPermissions
10
- } from "./chunk-XIRHJLJS.mjs";
10
+ } from "./chunk-HADAFS7N.mjs";
11
11
  import {
12
12
  END_POINT,
13
13
  SDKProvider,
@@ -16,7 +16,7 @@ import {
16
16
  __spreadValues,
17
17
  axios_default,
18
18
  useToast
19
- } from "./chunk-WROV2G6D.mjs";
19
+ } from "./chunk-NDBIVYJT.mjs";
20
20
 
21
21
  // call-control-sdk/lib/pages/campaigns/index.tsx
22
22
  import { memo, useCallback as useCallback2, useEffect, useRef, useState as useState2 } from "react";
@@ -2749,4 +2749,4 @@ var campaigns_default = Campaigns;
2749
2749
  export {
2750
2750
  campaigns_default as default
2751
2751
  };
2752
- //# sourceMappingURL=campaigns-KUDBCYHP.mjs.map
2752
+ //# sourceMappingURL=campaigns-UMAMUUDZ.mjs.map
@@ -2,10 +2,10 @@ import {
2
2
  ReportFilterBar,
3
3
  SearchBar,
4
4
  headCellSx
5
- } from "./chunk-JGYXK7TO.mjs";
5
+ } from "./chunk-KNTFDU2K.mjs";
6
6
  import {
7
7
  SDKPermissionGuard
8
- } from "./chunk-XIRHJLJS.mjs";
8
+ } from "./chunk-HADAFS7N.mjs";
9
9
  import {
10
10
  AppButton,
11
11
  PageHeader
@@ -17,7 +17,7 @@ import {
17
17
  __spreadProps,
18
18
  __spreadValues,
19
19
  axios_default
20
- } from "./chunk-WROV2G6D.mjs";
20
+ } from "./chunk-NDBIVYJT.mjs";
21
21
 
22
22
  // call-control-sdk/lib/pages/cdrReport/index.tsx
23
23
  import { useCallback as useCallback2, useEffect, useMemo, useRef, useState as useState2 } from "react";
@@ -544,4 +544,4 @@ var cdrReport_default = CdrReport;
544
544
  export {
545
545
  cdrReport_default as default
546
546
  };
547
- //# sourceMappingURL=cdrReport-ZSITXXEP.mjs.map
547
+ //# sourceMappingURL=cdrReport-4DLCPYQ4.mjs.map
@@ -9,7 +9,7 @@ import {
9
9
  __spreadValues,
10
10
  axios_default,
11
11
  sdkStateManager
12
- } from "./chunk-WROV2G6D.mjs";
12
+ } from "./chunk-NDBIVYJT.mjs";
13
13
 
14
14
  // call-control-sdk/lib/pages/agentDetailReport/index.tsx
15
15
  import { useState as useState2, useEffect, useMemo, useCallback as useCallback2 } from "react";
@@ -739,4 +739,4 @@ var agentDetailReport_default = AgentDetailReport;
739
739
  export {
740
740
  agentDetailReport_default
741
741
  };
742
- //# sourceMappingURL=chunk-DRD72WVS.mjs.map
742
+ //# sourceMappingURL=chunk-3SHCNPBA.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sdkStateManager
3
- } from "./chunk-WROV2G6D.mjs";
3
+ } from "./chunk-NDBIVYJT.mjs";
4
4
 
5
5
  // call-control-sdk/lib/hooks/useGetCallerData.ts
6
6
  import { useState, useEffect } from "react";
@@ -46,4 +46,4 @@ var useGetCallerData = () => {
46
46
  export {
47
47
  useGetCallerData
48
48
  };
49
- //# sourceMappingURL=chunk-MR7Z44GR.mjs.map
49
+ //# sourceMappingURL=chunk-APYLQRX7.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sdkStateManager
3
- } from "./chunk-WROV2G6D.mjs";
3
+ } from "./chunk-NDBIVYJT.mjs";
4
4
 
5
5
  // call-control-sdk/lib/hooks/useSDKPermissions.ts
6
6
  import { useState, useEffect, useCallback } from "react";
@@ -141,4 +141,4 @@ export {
141
141
  SDKAccessDenied,
142
142
  SDKPermissionGuard
143
143
  };
144
- //# sourceMappingURL=chunk-XIRHJLJS.mjs.map
144
+ //# sourceMappingURL=chunk-HADAFS7N.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  __spreadProps,
7
7
  __spreadValues,
8
8
  axios_default
9
- } from "./chunk-WROV2G6D.mjs";
9
+ } from "./chunk-NDBIVYJT.mjs";
10
10
 
11
11
  // call-control-sdk/lib/pages/common/components/SearchBar.tsx
12
12
  import { TextField, InputAdornment, IconButton } from "@mui/material";
@@ -483,4 +483,4 @@ export {
483
483
  sortLabelSx,
484
484
  reportBodyCellSx
485
485
  };
486
- //# sourceMappingURL=chunk-JGYXK7TO.mjs.map
486
+ //# sourceMappingURL=chunk-KNTFDU2K.mjs.map
@@ -387,6 +387,9 @@ var SDKStateManager = class {
387
387
  var _a2;
388
388
  return (_a2 = this.transferLeadDataProvider) == null ? void 0 : _a2.call(this);
389
389
  }
390
+ clearTransferLeadData() {
391
+ this.transferLeadDataProvider = () => void 0;
392
+ }
390
393
  // public setHolding(isHolding: boolean): void {
391
394
  // this.state.isHolding = isHolding;
392
395
  // this.saveToStorage();
@@ -1047,4 +1050,4 @@ export {
1047
1050
  useToast,
1048
1051
  SDKProvider
1049
1052
  };
1050
- //# sourceMappingURL=chunk-WROV2G6D.mjs.map
1053
+ //# sourceMappingURL=chunk-NDBIVYJT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../call-control-sdk/lib/permissions/sdk-constants.ts","../call-control-sdk/lib/hooks/sdk-state.ts","../call-control-sdk/lib/utils/storage.ts","../call-control-sdk/lib/services/toastMessage.tsx","../call-control-sdk/lib/components/SDKProvider.tsx","../call-control-sdk/lib/services/endPoint.ts","../call-control-sdk/lib/services/axios.ts"],"sourcesContent":["/**\r\n * SDK Permission Constants\r\n *\r\n * Defines permission codes for call control features.\r\n * These codes match the 'items' in the backend entitlements response.\r\n */\r\n\r\nexport const SDK_WILDCARD = \"*\" as const;\r\n\r\n/** Menu entitlement codes from userInfo.entitlements.menus */\r\nexport const SDK_MENU_CODES = {\r\n WILDCARD: SDK_WILDCARD,\r\n CALL_HISTORY: \"call_history\",\r\n CAMPAIGNS: \"dialer_auto\",\r\n LOGIN_REPORT: \"login_report\",\r\n CDR_REPORT: \"cdr_report\",\r\n AGENT_PERFORMANCE_REPORT: \"agent_performance\",\r\n AGENT_DETAIL_REPORT: \"agent_detail\",\r\n} as const;\r\n\r\nexport const SDK_PERMISSIONS = {\r\n WILDCARD: SDK_WILDCARD,\r\n // main object key constants\r\n\r\n CALLS: \"calls\",\r\n CALL_TRANSFER: \"call_transfer\",\r\n CALL_CONFERENCE: \"call_conference\",\r\n\r\n // in each object has items list of objects\r\n\r\n CALL_INBOUND: \"call_inbound\",\r\n CALL_OUTBOUND: \"call_outbound\",\r\n\r\n CONFERENCE: \"call_conference\",\r\n\r\n TRANSFER_BLIND: \"call_transfer_blind\",\r\n TRANSFER_ATTENDED: \"call_transfer_attended\",\r\n TRANSFER_WARM: \"call_transfer_warm\",\r\n\r\n // Campaigns\r\n CAMPAIGNS_CREATE: \"campaigns:create\",\r\n CAMPAIGNS_READ: \"campaigns:read\",\r\n CAMPAIGNS_UPDATE: \"campaigns:update\",\r\n CAMPAIGNS_DELETE: \"campaigns:delete\",\r\n CAMPAIGNS_MANAGE: \"campaigns:manage\",\r\n CAMPAIGNS_CONTROL: \"campaigns:control\",\r\n\r\n // Reports — Agent Login\r\n REPORTS_AGENT_LOGIN_READ: \"reports:agent_login:read\",\r\n REPORTS_AGENT_LOGIN_EXPORT: \"reports:agent_login:export\",\r\n REPORTS_AGENT_LOGIN_MANAGE: \"reports:agent_login:manage\",\r\n\r\n // CDR Report\r\n REPORTS_CDR_READ: \"reports:cdr:read\",\r\n REPORTS_CDR_EXPORT: \"reports:cdr:export\",\r\n REPORTS_CDR_MANAGE: \"reports:cdr:manage\",\r\n\r\n // Reports — Agent Performance / Detail\r\n REPORTS_AGENT_PERFORMANCE_READ: \"reports:agent_performance:read\",\r\n REPORTS_AGENT_PERFORMANCE_EXPORT: \"reports:agent_performance:export\",\r\n REPORTS_AGENT_PERFORMANCE_MANAGE: \"reports:agent_performance:manage\",\r\n} as const;\r\n","import { getSession, removeSession, setSession } from \"@react-solutions/vault\";\r\nimport type {\r\n SDKState,\r\n CallData,\r\n ConferenceLineTypes,\r\n SDKConfig,\r\n InitSDKRes,\r\n URLConfig,\r\n ConsultInfo,\r\n} from \"../../types\";\r\nimport { STORAGE_KEY } from \"../utils/storage\";\r\nimport {\r\n SDK_PERMISSIONS,\r\n type SDKEntitlements,\r\n type ControlsFromPermissions,\r\n SDK_MENU_CODES,\r\n} from \"../permissions\";\r\n\r\nclass SDKStateManager {\r\n private state: SDKState;\r\n private listeners: Array<() => void> = [];\r\n private readonly STORAGE_KEY = STORAGE_KEY;\r\n\r\n private apiKey: string | undefined;\r\n private tenantId: string | undefined;\r\n private transferLeadDataProvider: (() => any) | undefined;\r\n\r\n constructor() {\r\n this.state = this.getInitialState();\r\n this.loadFromStorage();\r\n }\r\n\r\n private getInitialState(): SDKState {\r\n return {\r\n authorization: undefined,\r\n process: null,\r\n agentId: \"\",\r\n openConferenceDialog: false,\r\n openCallTransferDialog: false,\r\n isInitialized: false,\r\n sdkConfig: {\r\n disableEndCallButton: false,\r\n disableEndConference: false,\r\n disabledDialButton: false,\r\n disabledMoreOptionsButton: false,\r\n enableSmsServices: false,\r\n enableQueueName: false,\r\n disableCallTransferButton: false,\r\n disableBlindTransfer: false,\r\n disableAttendedTransfer: false,\r\n disableWarmTransfer: false,\r\n isDraggable: true,\r\n disableSoftPhone: false,\r\n disableConferenceButton: false,\r\n disableHoldButton: false,\r\n disableMuteButton: false,\r\n disableAlternateDialing: true,\r\n disabled: {},\r\n enabled: {},\r\n outlined: {},\r\n },\r\n urlConfig: {\r\n baseURL: \"\",\r\n iframeURL: \"\",\r\n iframeAPIURL: \"\",\r\n webSocketURL: \"\",\r\n coreBaseURL: \"\",\r\n id: \"\",\r\n password: \"\",\r\n },\r\n callStartTime: null,\r\n controlPanelPosition: { x: 10, y: 10 },\r\n iframePosition: {\r\n x: window.screen?.availWidth - 460,\r\n y: window.screen?.height - 580,\r\n },\r\n callData: {\r\n agent_id: -1,\r\n queue_name: \"\",\r\n hold: 0,\r\n mute: 0,\r\n status: \"\",\r\n type: \"\",\r\n event_time: \"\",\r\n phone_number: \"\",\r\n },\r\n conferenceLine: [\r\n {\r\n line: 1,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 2,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 3,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 4,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 5,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n ],\r\n hold: 0,\r\n mute: 0,\r\n agentStatus: \"\",\r\n sdk: null,\r\n isPermissionsLoaded: false,\r\n userPermissions: null,\r\n menuEntitlements: null,\r\n consultInfo: null,\r\n rootCallUuid: null,\r\n backendCallControls: null,\r\n };\r\n }\r\n\r\n private loadFromStorage(): void {\r\n try {\r\n const stored = <SDKState>getSession(this.STORAGE_KEY);\r\n if (stored) {\r\n const parsedState = stored;\r\n this.state = {\r\n ...this.state,\r\n agentId: parsedState.agentId || \"\",\r\n authorization: parsedState.authorization || undefined,\r\n process: parsedState.process || null,\r\n openConferenceDialog: parsedState?.openConferenceDialog || false,\r\n openCallTransferDialog: parsedState?.openCallTransferDialog || false,\r\n isInitialized: parsedState.isInitialized || false,\r\n sdkConfig: parsedState.sdkConfig || {\r\n disableEndCallButton: false,\r\n disableEndConference: false,\r\n disabledMoreOptionsButton: false,\r\n enableSmsServices: false,\r\n enableQueueName: false,\r\n disabledDialButton: false,\r\n disableCallTransferButton: false,\r\n disableBlindTransfer: false,\r\n disableAttendedTransfer: false,\r\n disableWarmTransfer: false,\r\n isDraggable: true,\r\n disableSoftPhone: false,\r\n disableConferenceButton: false,\r\n disableHoldButton: false,\r\n disableMuteButton: false,\r\n disableAlternateDialing: true,\r\n disabled: {},\r\n enabled: {},\r\n outlined: {},\r\n },\r\n urlConfig: parsedState.urlConfig || {\r\n id: \"\",\r\n baseURL: \"\",\r\n iframeURL: \"\",\r\n iframeAPIURL: \"\",\r\n webSocketURL: \"\",\r\n coreBaseURL: \"\",\r\n password: \"\",\r\n },\r\n callStartTime: parsedState.callStartTime || null,\r\n controlPanelPosition: parsedState.controlPanelPosition || {\r\n x: 10,\r\n y: 10,\r\n },\r\n iframePosition: parsedState.iframePosition || {\r\n x: window.screen?.availWidth - 460,\r\n y: window.screen?.height - 580,\r\n },\r\n callData: parsedState.callData || {\r\n mobileNumber: \"\",\r\n callReferenceId: \"\",\r\n agent_id: \"\",\r\n status: \"\",\r\n type: \"\",\r\n event_time: \"\",\r\n phone_number: \"\",\r\n },\r\n conferenceLine:\r\n parsedState.conferenceLine &&\r\n Array.isArray(parsedState.conferenceLine) &&\r\n parsedState.conferenceLine.length > 0\r\n ? parsedState.conferenceLine\r\n : this.state.conferenceLine,\r\n agentStatus: parsedState.agentStatus,\r\n sdk: parsedState.sdk || null,\r\n isPermissionsLoaded: parsedState.isPermissionsLoaded || false,\r\n userPermissions: parsedState.userPermissions || null,\r\n menuEntitlements: parsedState.menuEntitlements || null,\r\n rootCallUuid: parsedState.rootCallUuid ?? null,\r\n };\r\n }\r\n } catch (error) {\r\n console.warn(\"Failed to load SDK state:\", error);\r\n }\r\n }\r\n\r\n private saveToStorage(): void {\r\n try {\r\n const persistentState = {\r\n agentId: this.state.agentId,\r\n authorization: this.state.authorization,\r\n process: this.state.process,\r\n isInitialized: this.state.isInitialized,\r\n openConferenceDialog: this.state.openConferenceDialog,\r\n openCallTransferDialog: this.state.openCallTransferDialog,\r\n sdkConfig: this.state.sdkConfig,\r\n urlConfig: this.state.urlConfig,\r\n callStartTime: this.state.callStartTime,\r\n controlPanelPosition: this.state.controlPanelPosition,\r\n iframePosition: this.state.iframePosition,\r\n callData: this.state.callData,\r\n conferenceLine: this.state.conferenceLine,\r\n agentStatus: this.state.agentStatus,\r\n sdk: this.state.sdk,\r\n isPermissionsLoaded: this.state.isPermissionsLoaded,\r\n userPermissions: this.state.userPermissions,\r\n menuEntitlements: this.state.menuEntitlements,\r\n rootCallUuid: this.state.rootCallUuid,\r\n };\r\n setSession(this.STORAGE_KEY, persistentState);\r\n } catch (error) {\r\n console.warn(\"Failed to save SDK state:\", error);\r\n }\r\n }\r\n\r\n private notifyListeners(): void {\r\n this.listeners.forEach((listener) => listener());\r\n }\r\n\r\n private validateCredentials(apiKey: string, tenantId: string): void {\r\n if (!apiKey || typeof apiKey !== \"string\" || apiKey.trim().length === 0) {\r\n throw new Error(\"API key not available\");\r\n }\r\n if (\r\n !tenantId ||\r\n typeof tenantId !== \"string\" ||\r\n tenantId.trim().length === 0\r\n ) {\r\n throw new Error(\"Tenant ID not available\");\r\n }\r\n this.apiKey = apiKey.trim();\r\n this.tenantId = tenantId.trim();\r\n }\r\n\r\n public initialize(\r\n apiKey: string,\r\n tenantId: string,\r\n agentId: string,\r\n urlConfig?: URLConfig,\r\n initResult?: InitSDKRes,\r\n sdkConfig?: SDKConfig,\r\n rawBackendCallControls?: SDKConfig,\r\n ): void {\r\n this.validateCredentials(apiKey, tenantId);\r\n if (\r\n !agentId ||\r\n typeof agentId !== \"string\" ||\r\n agentId.trim().length === 0\r\n ) {\r\n throw new Error(\"Agent ID not available\");\r\n } else {\r\n this.state.agentId = agentId;\r\n this.state.openConferenceDialog = false;\r\n this.state.openCallTransferDialog = false;\r\n this.state.authorization = initResult;\r\n this.state.backendCallControls = rawBackendCallControls ?? null;\r\n this.state.sdkConfig = {\r\n disableEndCallButton: false,\r\n disableEndConference: false,\r\n disabledDialButton: false,\r\n disabledMoreOptionsButton: false,\r\n enableQueueName: false,\r\n disableCallTransferButton: false,\r\n disableBlindTransfer: false,\r\n disableAttendedTransfer: false,\r\n disableWarmTransfer: false,\r\n isDraggable: true,\r\n disableSoftPhone: false,\r\n disableConferenceButton: false,\r\n disableHoldButton: false,\r\n disableMuteButton: false,\r\n disableAlternateDialing: true,\r\n disabled: {},\r\n enabled: {},\r\n outlined: {},\r\n ...sdkConfig,\r\n ...initResult?.callControls,\r\n };\r\n this.state.urlConfig = {\r\n baseURL: urlConfig?.baseURL || \"\",\r\n iframeURL: urlConfig?.iframeURL || \"\",\r\n iframeAPIURL: urlConfig?.iframeAPIURL || \"\",\r\n webSocketURL: urlConfig?.webSocketURL || \"\",\r\n coreBaseURL: urlConfig?.coreBaseURL || \"\",\r\n id: initResult?.userInfo?.id ? String(initResult.userInfo.id) : \"\",\r\n password: urlConfig?.password || \"\",\r\n };\r\n this.state.isInitialized = true;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n }\r\n\r\n public getState(): SDKState {\r\n return { ...this.state };\r\n }\r\n\r\n public getCredentials(): {\r\n apiKey: string | undefined;\r\n tenantId: string | undefined;\r\n } {\r\n return { apiKey: this.apiKey, tenantId: this.tenantId };\r\n }\r\n public getSdkAuthToken(): string | undefined {\r\n return this.state.authorization?.accessToken;\r\n }\r\n\r\n public subscribe(listener: () => void): () => void {\r\n this.listeners.push(listener);\r\n return () => {\r\n const index = this.listeners.indexOf(listener);\r\n if (index > -1) {\r\n this.listeners.splice(index, 1);\r\n }\r\n };\r\n }\r\n\r\n public registerTransferLeadDataProvider(fn: () => any): void {\r\n this.transferLeadDataProvider = fn;\r\n }\r\n\r\n public getTransferLeadData(): any {\r\n return this.transferLeadDataProvider?.();\r\n }\r\n\r\n public clearTransferLeadData(): void {\r\n // Reset provider to return empty so lead_data is omitted on next transfer\r\n this.transferLeadDataProvider = () => undefined;\r\n }\r\n\r\n // public setHolding(isHolding: boolean): void {\r\n // \tthis.state.isHolding = isHolding;\r\n // \tthis.saveToStorage();\r\n // \tthis.notifyListeners();\r\n // }\r\n\r\n // public setMuted(isMuted: boolean): void {\r\n // \tthis.state.isMuted = isMuted;\r\n // \tthis.saveToStorage();\r\n // \tthis.notifyListeners();\r\n // }\r\n\r\n public setProcess(process: {\r\n process_id: number;\r\n process_name: string;\r\n }): void {\r\n this.state.process = process;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setControlPanelPosition(position: { x: number; y: number }): void {\r\n this.state.controlPanelPosition = position;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setIframePosition(position: { x: number; y: number }): void {\r\n this.state.iframePosition = position;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public startCall(): void {\r\n this.state.callStartTime = Date.now();\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public endCall(): void {\r\n this.state.callStartTime = null;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setInitCheck(): void {\r\n this.state.isInitialized = false;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setOpenConferenceDialog(open: boolean): void {\r\n this.state.openConferenceDialog = open;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setOpenCallTransferDialog(open: boolean): void {\r\n this.state.openCallTransferDialog = open;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setConsultInfo(info: ConsultInfo | null): void {\r\n this.state.consultInfo = info;\r\n this.notifyListeners();\r\n }\r\n\r\n public setRootCallUuid(uuid: string | null): void {\r\n this.state.rootCallUuid = uuid;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setAgentStatus(status: string): void {\r\n this.state.agentStatus = status;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public updateCallData(data: Partial<CallData>): void {\r\n this.state.callData = { ...this.state.callData, ...data };\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public updateConferenceData(data: ConferenceLineTypes[]): void {\r\n this.state.conferenceLine = [...data];\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public setConferenceLine(line: ConferenceLineTypes): void {\r\n if (\r\n !this.state.conferenceLine ||\r\n !Array.isArray(this.state.conferenceLine)\r\n ) {\r\n this.state.conferenceLine = this.getInitialState().conferenceLine;\r\n }\r\n\r\n const conferenceLineData = this.state.conferenceLine?.map(\r\n (each: ConferenceLineTypes) => {\r\n if (each.line === line.line) {\r\n return line;\r\n }\r\n return each;\r\n },\r\n );\r\n this.state.conferenceLine = conferenceLineData;\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public resetConferenceLines(): void {\r\n this.state.conferenceLine = [\r\n {\r\n line: 1,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 2,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 3,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 4,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n {\r\n line: 5,\r\n status: \"IDLE\",\r\n type: \"\",\r\n phone: \"\",\r\n isMute: false,\r\n isHold: false,\r\n isCallStart: false,\r\n isMergeCall: false,\r\n },\r\n ];\r\n\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n public clearStorageAndReset(): void {\r\n try {\r\n removeSession(this.STORAGE_KEY);\r\n this.state = this.getInitialState();\r\n this.notifyListeners();\r\n } catch (error) {\r\n console.warn(\"Failed to clear:\", error);\r\n }\r\n }\r\n\r\n public getConferenceLines(): ConferenceLineTypes[] {\r\n return this.state.conferenceLine || [];\r\n }\r\n\r\n /**\r\n * Update SDK config with permission-based controls.\r\n * Merges the provided controls with existing config.\r\n */\r\n public updateSDKConfigFromPermissions(\r\n permissionControls: Partial<SDKConfig>,\r\n ): void {\r\n this.state.sdkConfig = {\r\n ...this.state.sdkConfig,\r\n ...permissionControls,\r\n };\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n /**\r\n * Revert call consult controls back to the base permission-derived values.\r\n * Called when a CALL_STATE event arrives without call_consult_controls.\r\n */\r\n public resetConsultControls(): void {\r\n const base = this.getControlsConfig();\r\n this.state.sdkConfig = {\r\n ...this.state.sdkConfig,\r\n disableEndCallButton: base.disableEndCallButton,\r\n disableCallTransferButton: base.disableCallTransferButton,\r\n disableConferenceButton: base.disableConferenceButton,\r\n disableHoldButton: base.disableHoldButton,\r\n disableMuteButton: base.disableMuteButton,\r\n };\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n // ============ Entitlement Logic (Ported from SDKPermissionManager) ============\r\n\r\n /**\r\n * Set user information (entitlements) from login response\r\n */\r\n public setSDKPermissions(userInfo: any): void {\r\n if (!userInfo) return;\r\n\r\n // In a real scenario, this would come from userInfo.entitlements?.sdk\r\n // For now, we use the structured format expected by the SDK\r\n\r\n const sdk: SDKEntitlements = userInfo.entitlements?.sdk;\r\n const sdkPermissions = Array.isArray(userInfo.permissions) ? userInfo.permissions : null;\r\n // const sdkMenus = Array.isArray(userInfo.entitlements?.menus)\r\n // ? userInfo.entitlements.menus\r\n // : null;\r\n\r\n const sdkMenus:any[] = [\r\n {\r\n \"code\": SDK_MENU_CODES.WILDCARD,\r\n \"name\": \"Role Management\",\r\n \"enabled\": true\r\n },\r\n // {\r\n // \"code\": SDK_MENU_CODES.CALL_HISTORY,\r\n // \"name\": \"Role Management\",\r\n // \"enabled\": true\r\n // }\r\n ]\r\n\r\n // const sdkPermissions: any = [\r\n // \"campaigns:create\"\r\n // ]\r\n\r\n // const sdk: SDKEntitlements = {\r\n // calls: {\r\n // enabled: true,\r\n // items: [\r\n // {\r\n // code: SDK_PERMISSIONS.CALL_OUTBOUND,\r\n // enabled: true,\r\n // },\r\n // {\r\n // code: SDK_PERMISSIONS.CALL_INBOUND,\r\n // enabled: true,\r\n // },\r\n // ],\r\n // },\r\n // call_transfer: {\r\n // enabled: true,\r\n // items: [\r\n // {\r\n // code: SDK_PERMISSIONS.TRANSFER_BLIND,\r\n // enabled: true,\r\n // },\r\n // {\r\n // code: SDK_PERMISSIONS.TRANSFER_ATTENDED,\r\n // enabled: true,\r\n // },\r\n // {\r\n // code: SDK_PERMISSIONS.TRANSFER_WARM,\r\n // enabled: true,\r\n // },\r\n // ],\r\n // },\r\n // call_conference: {\r\n // enabled: true,\r\n // items: [\r\n // {\r\n // code: SDK_PERMISSIONS.CONFERENCE,\r\n // enabled: true,\r\n // },\r\n // ],\r\n // },\r\n // };\r\n\r\n this.state.sdk = sdk;\r\n this.state.userPermissions = sdkPermissions\r\n this.state.menuEntitlements = sdkMenus\r\n this.state.isPermissionsLoaded = true;\r\n\r\n // Automatically update SDK config based on these new entitlements\r\n const permissionControls = this.getControlsConfig();\r\n this.updateSDKConfigFromPermissions(permissionControls);\r\n\r\n this.saveToStorage();\r\n this.notifyListeners();\r\n }\r\n\r\n /**\r\n * Check if a bit is enabled in entitlements\r\n */\r\n public isBitEnabled(\r\n category: keyof SDKEntitlements,\r\n bitCode: string,\r\n ): boolean {\r\n const sdk = this.state.sdk;\r\n if (!sdk) return false;\r\n\r\n const categoryEntitlement = sdk[category];\r\n if (!categoryEntitlement) return false;\r\n if (!categoryEntitlement.enabled) return false;\r\n\r\n if (!bitCode) return true; // Just checking category enabledness\r\n\r\n const bit = categoryEntitlement.items?.find(\r\n (item: any) => item.code === bitCode,\r\n );\r\n return bit ? bit.enabled : false;\r\n }\r\n\r\n /** Check if the user has a specific flat permission (e.g. \"calls:inbound\") */\r\n public hasPermission(permission: string): boolean {\r\n const perms = this.state.userPermissions;\r\n if (!perms) return false;\r\n return perms.includes(\"*\") || perms.includes(permission);\r\n }\r\n\r\n /** Check if any of the provided permissions is granted */\r\n public hasAnyPermission(permissions: string[]): boolean {\r\n return permissions.some((p) => this.hasPermission(p));\r\n }\r\n\r\n /** Check if all of the provided permissions are granted */\r\n public hasAllPermissions(permissions: string[]): boolean {\r\n return permissions.every((p) => this.hasPermission(p));\r\n }\r\n\r\n /** Check if a menu entitlement is enabled (e.g. \"campaign\"). Supports \"*\" wildcard. */\r\n public hasMenuFeature(code: string): boolean {\r\n const menus = this.state.menuEntitlements;\r\n if (!menus) return false;\r\n if (menus.some((m) => m.code === \"*\" && m.enabled)) return true;\r\n const entry = menus.find((m) => m.code === code);\r\n return entry ? entry.enabled : false;\r\n }\r\n\r\n /**\r\n * Get SDK controls configuration derived exclusively from structured entitlements.\r\n */\r\n public getControlsConfig(): ControlsFromPermissions {\r\n const { sdk, isPermissionsLoaded } = this.state;\r\n\r\n // If entitlements not loaded yet or missing, disable everything (Fail Closed)\r\n if (!isPermissionsLoaded || !sdk) {\r\n return {\r\n disabledDialButton: true,\r\n disableEndCallButton: true,\r\n disableCallTransferButton: true,\r\n disableBlindTransfer: true,\r\n disableAttendedTransfer: true,\r\n disableWarmTransfer: true,\r\n disableConferenceButton: true,\r\n disableHoldButton: true,\r\n disableMuteButton: true,\r\n disabledMoreOptionsButton: true,\r\n };\r\n }\r\n\r\n // --- Dial/Inbound Checks ---\r\n const isDialAllowed = this.isBitEnabled(\r\n \"calls\",\r\n SDK_PERMISSIONS.CALL_OUTBOUND,\r\n );\r\n const isInboundAllowed = this.isBitEnabled(\r\n \"calls\",\r\n SDK_PERMISSIONS.CALL_INBOUND,\r\n );\r\n const isAnyCallAllowed = isDialAllowed || isInboundAllowed;\r\n // AND with backend callControls: if backend disabled it, permissions alone can't re-enable it\r\n const backendDisabledEndCall = !!this.state.backendCallControls?.disableEndCallButton;\r\n\r\n // --- Call Controls ---\r\n const isHoldAllowed = isAnyCallAllowed;\r\n const isMuteAllowed = isAnyCallAllowed;\r\n const isEndCallAllowed = isAnyCallAllowed && !backendDisabledEndCall;\r\n const isConferenceAllowed = this.isBitEnabled(\"call_conference\", \"\");\r\n const isTransferEnabled = this.isBitEnabled(\"call_transfer\", \"\");\r\n\r\n // --- Transfer Controls ---\r\n const isBlindAllowed = this.isBitEnabled(\r\n \"call_transfer\",\r\n SDK_PERMISSIONS.TRANSFER_BLIND,\r\n );\r\n const isAttendedAllowed = this.isBitEnabled(\r\n \"call_transfer\",\r\n SDK_PERMISSIONS.TRANSFER_ATTENDED,\r\n );\r\n const isWarmAllowed = this.isBitEnabled(\r\n \"call_transfer\",\r\n SDK_PERMISSIONS.TRANSFER_WARM,\r\n );\r\n\r\n return {\r\n disabledDialButton: !isDialAllowed,\r\n disableEndCallButton: !isEndCallAllowed,\r\n disableCallTransferButton: !isTransferEnabled,\r\n disableBlindTransfer: !isBlindAllowed,\r\n disableAttendedTransfer: !isAttendedAllowed,\r\n disableWarmTransfer: !isWarmAllowed,\r\n disableConferenceButton: !isConferenceAllowed,\r\n disableHoldButton: !isHoldAllowed,\r\n disableMuteButton: !isMuteAllowed,\r\n disabledMoreOptionsButton: false,\r\n };\r\n }\r\n}\r\n\r\nexport const sdkStateManager = new SDKStateManager();\r\n\r\nexport type { SDKStateManager };\r\n","export const STORAGE_KEY = \"call-control-sdk-state\";\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\nconst noopToast: ToastContextType = {\r\n\tshowToast: (message, severity) => {\r\n\t\tconsole.warn(`[Toast outside provider] ${severity ?? \"info\"}: ${message}`);\r\n\t},\r\n};\r\n\r\nexport const useToast = () => {\r\n\tconst ctx = useContext(ToastContext);\r\n\treturn ctx ?? noopToast;\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","import { 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","import { sdkStateManager } from \"../hooks/sdk-state\";\r\n\r\n\r\n// export const IP = \"192.168.100.254\";\r\n\r\n// export const IFRAME_IP = \"10.10.95.25\"\r\n// export const IFRAME_URL = `https://${IFRAME_IP}:8089`;\r\n// export const IFRAME_API_URL = `https://${IFRAME_IP}:8000`;\r\n\r\n\r\n// export const BASE_URL = `http://${IP}:8095`;\r\n// export const WS_BASE_URL = `ws://${IP}:8095`;\r\n\r\n// export const IFRAME_URL = sdkStateManager?.getState()?.urlConfig?.iframeURL\r\n// export const IFRAME_API_URL = sdkStateManager?.getState()?.urlConfig?.iframeAPIURL\r\n\r\n// Dynamically get URLs from SDK state\r\nconst getBaseURL = () => sdkStateManager?.getState()?.urlConfig?.baseURL || \"\";\r\nconst getCoreURL = () => sdkStateManager?.getState()?.urlConfig?.coreBaseURL || \"\";\r\n\r\nexport const BASE_URL = getBaseURL();\r\nexport const CORE_URL = getCoreURL();\r\n\r\nexport const VERSION = {\r\n\tv1: \"/api/v1\",\r\n};\r\n\r\n// Dynamic endpoint getters that fetch URLs from SDK state at runtime\r\nexport const END_POINT = {\r\n\tget LOGIN() { return `${getBaseURL()}${VERSION.v1}/cti/login?provider=convox`; },\r\n\tget READY_AGENT() { return `${getCoreURL()}${VERSION.v1}/agents/ready`; },\r\n\tget UPDATE_AGENT_BREAK() { return `${getCoreURL()}${VERSION.v1}/agents/status`; },\r\n\tget CLICK_TO_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/dial`; },\r\n\tget HOLD_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/hold`; },\r\n\tget MUTE_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/mute`; },\r\n\tget UNMUTE_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/mute`; },\r\n\tget END_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/hangup`; },\r\n\tget LOGOUT() { return `${getBaseURL()}${VERSION.v1}/cti/logout?provider=convox`; },\r\n\r\n\tget CONFERENCE_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/conference/add`; },\r\n\tget CONFERENCE_MERGE_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/conference/merge`; },\r\n\tget CONFERENCE_CALL_HOLD_OR_UN_HOLD() { return `${getCoreURL()}${VERSION.v1}/cti/calls/hold`; },\r\n\tget CONFERENCE_CALL_MUTE_OT_UN_MUTE() { return `${getCoreURL()}${VERSION.v1}/cti/calls/mute`; },\r\n\tget CONFERENCE_CALL_END() { return `${getCoreURL()}${VERSION.v1}/cti/calls/hangup`; },\r\n\tget CONFERENCE_CALL_END_ALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/hangup`; },\r\n\tget CONFERENCE_CALL_TRANSFER() { return `${getCoreURL()}${VERSION.v1}/cti/calls/conference/transfer`; },\r\n\tget TRANSFER_CALL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/transfer-call`; },\r\n\tget TRANSFER_COMPLETE() { return `${getCoreURL()}${VERSION.v1}/cti/calls/transfer/complete`; },\r\n\tget TRANSFER_CANCEL() { return `${getCoreURL()}${VERSION.v1}/cti/calls/transfer/cancel`; },\r\n\r\n\tget AGENTS_LIST() { return `${getBaseURL()}${VERSION.v1}/cti/users`; },\r\n\tget PROCESS_LIST() { return `${getBaseURL()}${VERSION.v1}/cti/processes-list`; },\r\n\tget BREAKS_LIST() { return `${getBaseURL()}${VERSION.v1}/cti/breaks`; },\r\n\tget TRANSFER_TO_DETAILS() { return `${getBaseURL()}${VERSION.v1}/cti/transfer-to-details?provider=convox`; },\r\n\tget SEND_NOTIFICATIONS() { return `${getBaseURL()}${VERSION.v1}/cti/notifications/send`; },\r\n\r\n\tget CALL_HISTORY() { return `${getBaseURL()}${VERSION.v1}/dashboard/call-history`; },\r\n\tget SENTIMENTAL_ANALYSIS() { return `${getBaseURL()}${VERSION.v1}/users/get_sentiment_analysis`; },\r\n\tget DISPOSITIONS() { return `${getBaseURL()}${VERSION.v1}/cti/calls/dispositions`; },\r\n\tget HOSPITALS_SERVICES() { return `${getBaseURL()}${VERSION.v1}/cti/hospital/services`; },\r\n\tget BLIEND_TRANSFER() { return `${getBaseURL()}${VERSION.v1}/cti/calls/blind_transfer?provider=convox`; },\r\n\r\n\tget AUTH_LOGOUT() { return `${getBaseURL()}${VERSION.v1}/auth/logout`; },\r\n\r\n\t// Permissions\r\n\tget USER_PERMISSIONS() { return `${getBaseURL()}${VERSION.v1}/rbac/users/me/permissions`; },\r\n\r\n\t// Supervisor Call Monitoring (Listen / Whisper / Barge via ChanSpy)\r\n\tget SUPERVISOR_CALL_LISTEN() { return `${getBaseURL()}${VERSION.v1}/cti/supervisor/listen`; },\r\n\tget SUPERVISOR_CALL_LEAVE() { return `${getBaseURL()}${VERSION.v1}/cti/supervisor/leave`; },\r\n\tget SUPERVISOR_CALL_CHANGE_MODE() { return `${getBaseURL()}${VERSION.v1}/cti/supervisor/mode`; },\r\n\r\n\t// Call History pages\r\n\tget CALLS_HISTORY() { return `${getBaseURL()}${VERSION.v1}/calls/history`; },\r\n\tget MISSED_CALLS() { return `${getBaseURL()}${VERSION.v1}/supervisor/missed-calls`; },\r\n\tRECORDING_BY_CALL: (call_uuid: string) => `${getBaseURL()}${VERSION.v1}/recordings/call/${call_uuid}`,\r\n\r\n\t// Campaigns\r\n\tget CAMPAIGNS_GET_ALL() { return `${getBaseURL()}${VERSION.v1}/dialer/campaigns`; },\r\n\tget CAMPAIGNS_CREATE() { return `${getBaseURL()}${VERSION.v1}/dialer/campaigns`; },\r\n\tCAMPAIGNS_GET_BY_ID: (id: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${id}`,\r\n\tCAMPAIGNS_UPDATE: (id: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${id}`,\r\n\tCAMPAIGNS_ACTIVATE: (id: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${id}/activate`,\r\n\tCAMPAIGNS_PAUSE: (id: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${id}/pause`,\r\n\tCAMPAIGNS_ARCHIVE: (id: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${id}/archive`,\r\n\tCAMPAIGNS_LEADS: (campaignId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads`,\r\n\tCAMPAIGNS_DELETE_LEAD: (campaignId: number | string, leadId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads/${leadId}`,\r\n\tCAMPAIGNS_DIAL_PREVIEW: (campaignId: number | string, leadId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads/${leadId}/dial-preview`,\r\n\tCAMPAIGNS_LEADS_UPLOAD_EXCEL: (campaignId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads/upload/excel`,\r\n\tCAMPAIGNS_LEADS_TEMPLATE_EXCEL: (campaignId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads/template/excel`,\r\n\tCAMPAIGNS_LEADS_EXPORT_EXCEL: (campaignId: number | string) => `${getBaseURL()}${VERSION.v1}/dialer/campaigns/${campaignId}/leads/export/excel`,\r\n\r\n\t// Login Report\r\n\tget LOGIN_REPORT() { return `${getBaseURL()}${VERSION.v1}/reports/login-report`; },\r\n\tget LOGIN_REPORT_AGENTS() { return `${getBaseURL()}${VERSION.v1}/reports/login-report/agents`; },\r\n\tLOGIN_REPORT_AGENT_SESSIONS: (agentId: string) => `${getBaseURL()}${VERSION.v1}/reports/login-report/agents/${agentId}/sessions`,\r\n\tLOGIN_REPORT_AGENT_SESSIONS_EXPORT_EXCEL: (agentId: string) => `${getBaseURL()}${VERSION.v1}/reports/login-report/agents/${agentId}/sessions/export/excel`,\r\n\tget LOGIN_REPORT_EXPORT_EXCEL() { return `${getBaseURL()}${VERSION.v1}/reports/login-report/export/excel`; },\r\n\r\n\t// CDR Report\r\n\tget CDR_REPORT() { return `${getBaseURL()}${VERSION.v1}/reports/cdr-report`; },\r\n\tget CDR_REPORT_RECORDS() { return `${getBaseURL()}${VERSION.v1}/reports/cdr-report/records`; },\r\n\tget CDR_REPORT_EXPORT_EXCEL() { return `${getBaseURL()}${VERSION.v1}/reports/cdr-report/export/excel`; },\r\n\r\n\t// CDR Report filter sources (match what main app's CdrReport calls)\r\n\tget USERS_LIST() { return `${getBaseURL()}${VERSION.v1}/users/`; },\r\n\tget MASTER_QUEUES() { return `${getBaseURL()}${VERSION.v1}/master/queue`; },\r\n\r\n\t// Reports\r\n\tget AGENT_PERFORMANCE_REPORT() { return `${getBaseURL()}${VERSION.v1}/reports/agent-performance-report`; },\r\n\tget AGENT_PERFORMANCE_REPORT_AGENTS() { return `${getBaseURL()}${VERSION.v1}/reports/agent-performance-report/agents`; },\r\n\tget AGENT_PERFORMANCE_REPORT_EXPORT_EXCEL() { return `${getBaseURL()}${VERSION.v1}/reports/agent-performance-report/export/excel`; },\r\n\tAGENT_DETAIL_REPORT: (agentId: string) => `${getBaseURL()}${VERSION.v1}/reports/agent-detail-report/${agentId}`,\r\n\t// get CDR_REPORT() { return `${getBaseURL()}${VERSION.v1}/reports/cdr-report`; },\r\n\r\n\t// Queues (used by Campaigns → Queue Linking)\r\n\tget QUEUES_GET_ALL() { return `${getBaseURL()}${VERSION.v1}/master/queue`; },\r\n\tget QUEUES_CREATE() { return `${getBaseURL()}${VERSION.v1}/master/queue`; },\r\n\r\n\t// Processes\r\n\tget MASTER_PROCESS() { return `${getBaseURL()}${VERSION.v1}/master/process`; },\r\n};\r\n\r\n// export const WS_END_POINT = {\r\n// \tWS: `${WS_BASE_URL}${VERSION.v1}/cti/ws`,\r\n// };\r\n\r\n// export const STORAGE_KEY = \"call-control-sdk-state\";\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\t// baseURL: sdkStateManager.getState()?.urlConfig?.baseURL,\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\t\t? (DEFAULT_TOKEN.startsWith(\"Bearer \") ? DEFAULT_TOKEN : `Bearer ${DEFAULT_TOKEN}`)\r\n\t\t\t\t: \"\",\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\t// Only add \"Bearer \" prefix if the token doesn't already have it\r\n\t\t\t\tconst authToken = token.startsWith(\"Bearer \") ? token : `Bearer ${token}`;\r\n\t\t\t\tconfig.headers.Authorization = authToken;\r\n\t\t\t}\r\n\r\n\t\t\t// Debug log for API calls\r\n\t\t\tconsole.log(\"API Request:\", {\r\n\t\t\t\turl: config.url,\r\n\t\t\t\tmethod: config.method,\r\n\t\t\t\thasToken: !!token,\r\n\t\t\t\ttokenStartsWithBearer: token?.startsWith(\"Bearer \"),\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAuthorization: config.headers.Authorization,\r\n\t\t\t\t\t\"x-tenant-id\": config.headers[\"x-tenant-id\"],\r\n\t\t\t\t\t\"x-api-key\": config.headers[\"x-api-key\"],\r\n\t\t\t\t}\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\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,eAAe;AAGrB,IAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,cAAc;AAAA,EACd,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,0BAA0B;AAAA,EAC1B,qBAAqB;AACvB;AAEO,IAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA;AAAA,EAGV,OAAO;AAAA,EACP,eAAe;AAAA,EACf,iBAAiB;AAAA;AAAA,EAIjB,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,YAAY;AAAA,EAEZ,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,eAAe;AAAA;AAAA,EAGf,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA;AAAA,EAGnB,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA;AAAA,EAG5B,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA;AAAA,EAGpB,gCAAgC;AAAA,EAChC,kCAAkC;AAAA,EAClC,kCAAkC;AACpC;;;AC7DA,SAAS,YAAY,eAAe,kBAAkB;;;ACA/C,IAAM,cAAc;;;ADkB3B,IAAM,kBAAN,MAAsB;AAAA,EASpB,cAAc;AARd,wBAAQ;AACR,wBAAQ,aAA+B,CAAC;AACxC,wBAAiB,eAAc;AAE/B,wBAAQ;AACR,wBAAQ;AACR,wBAAQ;AAGN,SAAK,QAAQ,KAAK,gBAAgB;AAClC,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,kBAA4B;AAhCtC,QAAAA,KAAA;AAiCI,WAAO;AAAA,MACL,eAAe;AAAA,MACf,SAAS;AAAA,MACT,SAAS;AAAA,MACT,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,eAAe;AAAA,MACf,WAAW;AAAA,QACT,sBAAsB;AAAA,QACtB,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,QACpB,2BAA2B;AAAA,QAC3B,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,2BAA2B;AAAA,QAC3B,sBAAsB;AAAA,QACtB,yBAAyB;AAAA,QACzB,qBAAqB;AAAA,QACrB,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,yBAAyB;AAAA,QACzB,UAAU,CAAC;AAAA,QACX,SAAS,CAAC;AAAA,QACV,UAAU,CAAC;AAAA,MACb;AAAA,MACA,WAAW;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,QACX,cAAc;AAAA,QACd,cAAc;AAAA,QACd,aAAa;AAAA,QACb,IAAI;AAAA,QACJ,UAAU;AAAA,MACZ;AAAA,MACA,eAAe;AAAA,MACf,sBAAsB,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,MACrC,gBAAgB;AAAA,QACd,KAAGA,MAAA,OAAO,WAAP,gBAAAA,IAAe,cAAa;AAAA,QAC/B,KAAG,YAAO,WAAP,mBAAe,UAAS;AAAA,MAC7B;AAAA,MACA,UAAU;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB;AAAA,MACA,gBAAgB;AAAA,QACd;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,MACb,KAAK;AAAA,MACL,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,qBAAqB;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,kBAAwB;AAvJlC,QAAAA,KAAA;AAwJI,QAAI;AACF,YAAM,SAAmB,WAAW,KAAK,WAAW;AACpD,UAAI,QAAQ;AACV,cAAM,cAAc;AACpB,aAAK,QAAQ,iCACR,KAAK,QADG;AAAA,UAEX,SAAS,YAAY,WAAW;AAAA,UAChC,eAAe,YAAY,iBAAiB;AAAA,UAC5C,SAAS,YAAY,WAAW;AAAA,UAChC,uBAAsB,2CAAa,yBAAwB;AAAA,UAC3D,yBAAwB,2CAAa,2BAA0B;AAAA,UAC/D,eAAe,YAAY,iBAAiB;AAAA,UAC5C,WAAW,YAAY,aAAa;AAAA,YAClC,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,2BAA2B;AAAA,YAC3B,mBAAmB;AAAA,YACnB,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,2BAA2B;AAAA,YAC3B,sBAAsB;AAAA,YACtB,yBAAyB;AAAA,YACzB,qBAAqB;AAAA,YACrB,aAAa;AAAA,YACb,kBAAkB;AAAA,YAClB,yBAAyB;AAAA,YACzB,mBAAmB;AAAA,YACnB,mBAAmB;AAAA,YACnB,yBAAyB;AAAA,YACzB,UAAU,CAAC;AAAA,YACX,SAAS,CAAC;AAAA,YACV,UAAU,CAAC;AAAA,UACb;AAAA,UACA,WAAW,YAAY,aAAa;AAAA,YAClC,IAAI;AAAA,YACJ,SAAS;AAAA,YACT,WAAW;AAAA,YACX,cAAc;AAAA,YACd,cAAc;AAAA,YACd,aAAa;AAAA,YACb,UAAU;AAAA,UACZ;AAAA,UACA,eAAe,YAAY,iBAAiB;AAAA,UAC5C,sBAAsB,YAAY,wBAAwB;AAAA,YACxD,GAAG;AAAA,YACH,GAAG;AAAA,UACL;AAAA,UACA,gBAAgB,YAAY,kBAAkB;AAAA,YAC5C,KAAGA,MAAA,OAAO,WAAP,gBAAAA,IAAe,cAAa;AAAA,YAC/B,KAAG,YAAO,WAAP,mBAAe,UAAS;AAAA,UAC7B;AAAA,UACA,UAAU,YAAY,YAAY;AAAA,YAChC,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,cAAc;AAAA,UAChB;AAAA,UACA,gBACE,YAAY,kBACZ,MAAM,QAAQ,YAAY,cAAc,KACxC,YAAY,eAAe,SAAS,IAChC,YAAY,iBACZ,KAAK,MAAM;AAAA,UACjB,aAAa,YAAY;AAAA,UACzB,KAAK,YAAY,OAAO;AAAA,UACxB,qBAAqB,YAAY,uBAAuB;AAAA,UACxD,iBAAiB,YAAY,mBAAmB;AAAA,UAChD,kBAAkB,YAAY,oBAAoB;AAAA,UAClD,eAAc,iBAAY,iBAAZ,YAA4B;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,KAAK,6BAA6B,KAAK;AAAA,IACjD;AAAA,EACF;AAAA,EAEQ,gBAAsB;AAC5B,QAAI;AACF,YAAM,kBAAkB;AAAA,QACtB,SAAS,KAAK,MAAM;AAAA,QACpB,eAAe,KAAK,MAAM;AAAA,QAC1B,SAAS,KAAK,MAAM;AAAA,QACpB,eAAe,KAAK,MAAM;AAAA,QAC1B,sBAAsB,KAAK,MAAM;AAAA,QACjC,wBAAwB,KAAK,MAAM;AAAA,QACnC,WAAW,KAAK,MAAM;AAAA,QACtB,WAAW,KAAK,MAAM;AAAA,QACtB,eAAe,KAAK,MAAM;AAAA,QAC1B,sBAAsB,KAAK,MAAM;AAAA,QACjC,gBAAgB,KAAK,MAAM;AAAA,QAC3B,UAAU,KAAK,MAAM;AAAA,QACrB,gBAAgB,KAAK,MAAM;AAAA,QAC3B,aAAa,KAAK,MAAM;AAAA,QACxB,KAAK,KAAK,MAAM;AAAA,QAChB,qBAAqB,KAAK,MAAM;AAAA,QAChC,iBAAiB,KAAK,MAAM;AAAA,QAC5B,kBAAkB,KAAK,MAAM;AAAA,QAC7B,cAAc,KAAK,MAAM;AAAA,MAC3B;AACA,iBAAW,KAAK,aAAa,eAAe;AAAA,IAC9C,SAAS,OAAO;AACd,cAAQ,KAAK,6BAA6B,KAAK;AAAA,IACjD;AAAA,EACF;AAAA,EAEQ,kBAAwB;AAC9B,SAAK,UAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA,EACjD;AAAA,EAEQ,oBAAoB,QAAgB,UAAwB;AAClE,QAAI,CAAC,UAAU,OAAO,WAAW,YAAY,OAAO,KAAK,EAAE,WAAW,GAAG;AACvE,YAAM,IAAI,MAAM,uBAAuB;AAAA,IACzC;AACA,QACE,CAAC,YACD,OAAO,aAAa,YACpB,SAAS,KAAK,EAAE,WAAW,GAC3B;AACA,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AACA,SAAK,SAAS,OAAO,KAAK;AAC1B,SAAK,WAAW,SAAS,KAAK;AAAA,EAChC;AAAA,EAEO,WACL,QACA,UACA,SACA,WACA,YACA,WACA,wBACM;AA/RV,QAAAA;AAgSI,SAAK,oBAAoB,QAAQ,QAAQ;AACzC,QACE,CAAC,WACD,OAAO,YAAY,YACnB,QAAQ,KAAK,EAAE,WAAW,GAC1B;AACA,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C,OAAO;AACL,WAAK,MAAM,UAAU;AACrB,WAAK,MAAM,uBAAuB;AAClC,WAAK,MAAM,yBAAyB;AACpC,WAAK,MAAM,gBAAgB;AAC3B,WAAK,MAAM,sBAAsB,0DAA0B;AAC3D,WAAK,MAAM,YAAY;AAAA,QACrB,sBAAsB;AAAA,QACtB,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,QACpB,2BAA2B;AAAA,QAC3B,iBAAiB;AAAA,QACjB,2BAA2B;AAAA,QAC3B,sBAAsB;AAAA,QACtB,yBAAyB;AAAA,QACzB,qBAAqB;AAAA,QACrB,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,yBAAyB;AAAA,QACzB,UAAU,CAAC;AAAA,QACX,SAAS,CAAC;AAAA,QACV,UAAU,CAAC;AAAA,SACR,YACA,yCAAY;AAEjB,WAAK,MAAM,YAAY;AAAA,QACrB,UAAS,uCAAW,YAAW;AAAA,QAC/B,YAAW,uCAAW,cAAa;AAAA,QACnC,eAAc,uCAAW,iBAAgB;AAAA,QACzC,eAAc,uCAAW,iBAAgB;AAAA,QACzC,cAAa,uCAAW,gBAAe;AAAA,QACvC,MAAIA,MAAA,yCAAY,aAAZ,gBAAAA,IAAsB,MAAK,OAAO,WAAW,SAAS,EAAE,IAAI;AAAA,QAChE,WAAU,uCAAW,aAAY;AAAA,MACnC;AACA,WAAK,MAAM,gBAAgB;AAC3B,WAAK,cAAc;AACnB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEO,WAAqB;AAC1B,WAAO,mBAAK,KAAK;AAAA,EACnB;AAAA,EAEO,iBAGL;AACA,WAAO,EAAE,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS;AAAA,EACxD;AAAA,EACO,kBAAsC;AA5V/C,QAAAA;AA6VI,YAAOA,MAAA,KAAK,MAAM,kBAAX,gBAAAA,IAA0B;AAAA,EACnC;AAAA,EAEO,UAAU,UAAkC;AACjD,SAAK,UAAU,KAAK,QAAQ;AAC5B,WAAO,MAAM;AACX,YAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;AAC7C,UAAI,QAAQ,IAAI;AACd,aAAK,UAAU,OAAO,OAAO,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEO,iCAAiC,IAAqB;AAC3D,SAAK,2BAA2B;AAAA,EAClC;AAAA,EAEO,sBAA2B;AA9WpC,QAAAA;AA+WI,YAAOA,MAAA,KAAK,6BAAL,gBAAAA,IAAA;AAAA,EACT;AAAA,EAEO,wBAA8B;AAEnC,SAAK,2BAA2B,MAAM;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,WAAW,SAGT;AACP,SAAK,MAAM,UAAU;AACrB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,wBAAwB,UAA0C;AACvE,SAAK,MAAM,uBAAuB;AAClC,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,kBAAkB,UAA0C;AACjE,SAAK,MAAM,iBAAiB;AAC5B,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,YAAkB;AACvB,SAAK,MAAM,gBAAgB,KAAK,IAAI;AACpC,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,UAAgB;AACrB,SAAK,MAAM,gBAAgB;AAC3B,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,eAAqB;AAC1B,SAAK,MAAM,gBAAgB;AAC3B,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,wBAAwB,MAAqB;AAClD,SAAK,MAAM,uBAAuB;AAClC,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,0BAA0B,MAAqB;AACpD,SAAK,MAAM,yBAAyB;AACpC,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,eAAe,MAAgC;AACpD,SAAK,MAAM,cAAc;AACzB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,gBAAgB,MAA2B;AAChD,SAAK,MAAM,eAAe;AAC1B,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,eAAe,QAAsB;AAC1C,SAAK,MAAM,cAAc;AACzB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,eAAe,MAA+B;AACnD,SAAK,MAAM,WAAW,kCAAK,KAAK,MAAM,WAAa;AACnD,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,qBAAqB,MAAmC;AAC7D,SAAK,MAAM,iBAAiB,CAAC,GAAG,IAAI;AACpC,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,kBAAkB,MAAiC;AAnd5D,QAAAA;AAodI,QACE,CAAC,KAAK,MAAM,kBACZ,CAAC,MAAM,QAAQ,KAAK,MAAM,cAAc,GACxC;AACA,WAAK,MAAM,iBAAiB,KAAK,gBAAgB,EAAE;AAAA,IACrD;AAEA,UAAM,sBAAqBA,MAAA,KAAK,MAAM,mBAAX,gBAAAA,IAA2B;AAAA,MACpD,CAAC,SAA8B;AAC7B,YAAI,KAAK,SAAS,KAAK,MAAM;AAC3B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAEF,SAAK,MAAM,iBAAiB;AAC5B,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,uBAA6B;AAClC,SAAK,MAAM,iBAAiB;AAAA,MAC1B;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AAEA,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEO,uBAA6B;AAClC,QAAI;AACF,oBAAc,KAAK,WAAW;AAC9B,WAAK,QAAQ,KAAK,gBAAgB;AAClC,WAAK,gBAAgB;AAAA,IACvB,SAAS,OAAO;AACd,cAAQ,KAAK,oBAAoB,KAAK;AAAA,IACxC;AAAA,EACF;AAAA,EAEO,qBAA4C;AACjD,WAAO,KAAK,MAAM,kBAAkB,CAAC;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,+BACL,oBACM;AACN,SAAK,MAAM,YAAY,kCAClB,KAAK,MAAM,YACX;AAEL,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,uBAA6B;AAClC,UAAM,OAAO,KAAK,kBAAkB;AACpC,SAAK,MAAM,YAAY,iCAClB,KAAK,MAAM,YADO;AAAA,MAErB,sBAAsB,KAAK;AAAA,MAC3B,2BAA2B,KAAK;AAAA,MAChC,yBAAyB,KAAK;AAAA,MAC9B,mBAAmB,KAAK;AAAA,MACxB,mBAAmB,KAAK;AAAA,IAC1B;AACA,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,kBAAkB,UAAqB;AAtlBhD,QAAAA;AAulBI,QAAI,CAAC,SAAU;AAKf,UAAM,OAAuBA,MAAA,SAAS,iBAAT,gBAAAA,IAAuB;AACpD,UAAM,iBAAiB,MAAM,QAAQ,SAAS,WAAW,IAAI,SAAS,cAAc;AAKpF,UAAM,WAAiB;AAAA,MACrB;AAAA,QACE,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AAgDA,SAAK,MAAM,MAAM;AACjB,SAAK,MAAM,kBAAkB;AAC7B,SAAK,MAAM,mBAAmB;AAC9B,SAAK,MAAM,sBAAsB;AAGjC,UAAM,qBAAqB,KAAK,kBAAkB;AAClD,SAAK,+BAA+B,kBAAkB;AAEtD,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKO,aACL,UACA,SACS;AAhrBb,QAAAA;AAirBI,UAAM,MAAM,KAAK,MAAM;AACvB,QAAI,CAAC,IAAK,QAAO;AAEjB,UAAM,sBAAsB,IAAI,QAAQ;AACxC,QAAI,CAAC,oBAAqB,QAAO;AACjC,QAAI,CAAC,oBAAoB,QAAS,QAAO;AAEzC,QAAI,CAAC,QAAS,QAAO;AAErB,UAAM,OAAMA,MAAA,oBAAoB,UAApB,gBAAAA,IAA2B;AAAA,MACrC,CAAC,SAAc,KAAK,SAAS;AAAA;AAE/B,WAAO,MAAM,IAAI,UAAU;AAAA,EAC7B;AAAA;AAAA,EAGO,cAAc,YAA6B;AAChD,UAAM,QAAQ,KAAK,MAAM;AACzB,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,SAAS,GAAG,KAAK,MAAM,SAAS,UAAU;AAAA,EACzD;AAAA;AAAA,EAGO,iBAAiB,aAAgC;AACtD,WAAO,YAAY,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;AAAA,EACtD;AAAA;AAAA,EAGO,kBAAkB,aAAgC;AACvD,WAAO,YAAY,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;AAAA,EACvD;AAAA;AAAA,EAGO,eAAe,MAAuB;AAC3C,UAAM,QAAQ,KAAK,MAAM;AACzB,QAAI,CAAC,MAAO,QAAO;AACnB,QAAI,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,OAAO,EAAG,QAAO;AAC3D,UAAM,QAAQ,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/C,WAAO,QAAQ,MAAM,UAAU;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKO,oBAA6C;AA7tBtD,QAAAA;AA8tBI,UAAM,EAAE,KAAK,oBAAoB,IAAI,KAAK;AAG1C,QAAI,CAAC,uBAAuB,CAAC,KAAK;AAChC,aAAO;AAAA,QACL,oBAAoB;AAAA,QACpB,sBAAsB;AAAA,QACtB,2BAA2B;AAAA,QAC3B,sBAAsB;AAAA,QACtB,yBAAyB;AAAA,QACzB,qBAAqB;AAAA,QACrB,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,2BAA2B;AAAA,MAC7B;AAAA,IACF;AAGA,UAAM,gBAAgB,KAAK;AAAA,MACzB;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,UAAM,mBAAmB,KAAK;AAAA,MAC5B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,UAAM,mBAAmB,iBAAiB;AAE1C,UAAM,yBAAyB,CAAC,GAACA,MAAA,KAAK,MAAM,wBAAX,gBAAAA,IAAgC;AAGjE,UAAM,gBAAgB;AACtB,UAAM,gBAAgB;AACtB,UAAM,mBAAmB,oBAAoB,CAAC;AAC9C,UAAM,sBAAsB,KAAK,aAAa,mBAAmB,EAAE;AACnE,UAAM,oBAAoB,KAAK,aAAa,iBAAiB,EAAE;AAG/D,UAAM,iBAAiB,KAAK;AAAA,MAC1B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,UAAM,oBAAoB,KAAK;AAAA,MAC7B;AAAA,MACA,gBAAgB;AAAA,IAClB;AACA,UAAM,gBAAgB,KAAK;AAAA,MACzB;AAAA,MACA,gBAAgB;AAAA,IAClB;AAEA,WAAO;AAAA,MACL,oBAAoB,CAAC;AAAA,MACrB,sBAAsB,CAAC;AAAA,MACvB,2BAA2B,CAAC;AAAA,MAC5B,sBAAsB,CAAC;AAAA,MACvB,yBAAyB,CAAC;AAAA,MAC1B,qBAAqB,CAAC;AAAA,MACtB,yBAAyB,CAAC;AAAA,MAC1B,mBAAmB,CAAC;AAAA,MACpB,mBAAmB,CAAC;AAAA,MACpB,2BAA2B;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB,IAAI,gBAAgB;;;AEjyBnD,SAAS,eAAe,YAAY,gBAA2B;AAC/D,SAAS,UAAU,aAAyB;AA+B1C,SASE,KATF;AAzBF,IAAM,eAAe,cAA4C,MAAS;AAE1E,IAAM,YAA8B;AAAA,EACnC,WAAW,CAAC,SAAS,aAAa;AACjC,YAAQ,KAAK,4BAA4B,8BAAY,MAAM,KAAK,OAAO,EAAE;AAAA,EAC1E;AACD;AAEO,IAAM,WAAW,MAAM;AAC7B,QAAM,MAAM,WAAW,YAAY;AACnC,SAAO,oBAAO;AACf;AAEO,IAAM,gBAAgB,CAAC,EAAE,SAAS,MAA+B;AACvE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,EAAE;AACzC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAqB,MAAM;AAE3D,QAAM,YAAY,CAAC,KAAa,MAAkB,WAAW;AAC5D,eAAW,GAAG;AACd,gBAAY,GAAG;AACf,YAAQ,IAAI;AAAA,EACb;AAEA,SACC,qBAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,UAAU,GACxC;AAAA;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,SAAS,MAAM,QAAQ,KAAK;AAAA,QAC5B,cAAc,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,QAErD;AAAA,UAAC;AAAA;AAAA,YACA,SAAQ;AAAA,YACR;AAAA,YACA,SAAS,MAAM,QAAQ,KAAK;AAAA,YAC5B,IAAI,EAAE,OAAO,OAAO;AAAA,YAEnB;AAAA;AAAA,QACF;AAAA;AAAA,IACD;AAAA,KACD;AAEF;;;ACpDA,SAAS,YAAY;AAMb,gBAAAC,YAAA;AADD,IAAM,cAAc,KAAuB,CAAC,EAAE,SAAS,MAAM;AACnE,SAAO,gBAAAA,KAAC,iBAAe,UAAS;AACjC,CAAC;AAED,YAAY,cAAc;;;ACQ1B,IAAM,aAAa,MAAG;AAjBtB,MAAAC,KAAA;AAiByB,uBAAAA,MAAA,oCAAAA,IAAiB,eAAjB,mBAA6B,cAA7B,mBAAwC,YAAW;AAAA;AAC5E,IAAM,aAAa,MAAG;AAlBtB,MAAAA,KAAA;AAkByB,uBAAAA,MAAA,oCAAAA,IAAiB,eAAjB,mBAA6B,cAA7B,mBAAwC,gBAAe;AAAA;AAEzE,IAAM,WAAW,WAAW;AAC5B,IAAM,WAAW,WAAW;AAE5B,IAAM,UAAU;AAAA,EACtB,IAAI;AACL;AAGO,IAAM,YAAY;AAAA,EACxB,IAAI,QAAQ;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA8B;AAAA,EAC/E,IAAI,cAAc;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAiB;AAAA,EACxE,IAAI,qBAAqB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAkB;AAAA,EAChF,IAAI,gBAAgB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAAA,EAC5E,IAAI,YAAY;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAAA,EACxE,IAAI,YAAY;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAAA,EACxE,IAAI,cAAc;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAa;AAAA,EACpE,IAAI,WAAW;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqB;AAAA,EACzE,IAAI,SAAS;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA+B;AAAA,EAEjF,IAAI,kBAAkB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA6B;AAAA,EACxF,IAAI,wBAAwB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA+B;AAAA,EAChG,IAAI,kCAAkC;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAAA,EAC9F,IAAI,kCAAkC;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAAA,EAC9F,IAAI,sBAAsB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqB;AAAA,EACpF,IAAI,0BAA0B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqB;AAAA,EACxF,IAAI,2BAA2B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAkC;AAAA,EACtG,IAAI,gBAAgB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA4B;AAAA,EACrF,IAAI,oBAAoB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAgC;AAAA,EAC7F,IAAI,kBAAkB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA8B;AAAA,EAEzF,IAAI,cAAc;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAc;AAAA,EACrE,IAAI,eAAe;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAuB;AAAA,EAC/E,IAAI,cAAc;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAe;AAAA,EACtE,IAAI,sBAAsB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA4C;AAAA,EAC3G,IAAI,qBAAqB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA2B;AAAA,EAEzF,IAAI,eAAe;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA2B;AAAA,EACnF,IAAI,uBAAuB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAiC;AAAA,EACjG,IAAI,eAAe;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA2B;AAAA,EACnF,IAAI,qBAAqB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA0B;AAAA,EACxF,IAAI,kBAAkB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA6C;AAAA,EAExG,IAAI,cAAc;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAgB;AAAA;AAAA,EAGvE,IAAI,mBAAmB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA8B;AAAA;AAAA,EAG1F,IAAI,yBAAyB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA0B;AAAA,EAC5F,IAAI,wBAAwB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAyB;AAAA,EAC1F,IAAI,8BAA8B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAwB;AAAA;AAAA,EAG/F,IAAI,gBAAgB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAkB;AAAA,EAC3E,IAAI,eAAe;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA4B;AAAA,EACpF,mBAAmB,CAAC,cAAsB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,oBAAoB,SAAS;AAAA;AAAA,EAGnG,IAAI,oBAAoB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqB;AAAA,EAClF,IAAI,mBAAmB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqB;AAAA,EACjF,qBAAqB,CAAC,OAAwB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE;AAAA,EACjG,kBAAkB,CAAC,OAAwB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE;AAAA,EAC9F,oBAAoB,CAAC,OAAwB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE;AAAA,EAChG,iBAAiB,CAAC,OAAwB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE;AAAA,EAC7F,mBAAmB,CAAC,OAAwB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,EAAE;AAAA,EAC/F,iBAAiB,CAAC,eAAgC,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU;AAAA,EAC7G,uBAAuB,CAAC,YAA6B,WAA4B,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU,UAAU,MAAM;AAAA,EAC5J,wBAAwB,CAAC,YAA6B,WAA4B,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU,UAAU,MAAM;AAAA,EAC7J,8BAA8B,CAAC,eAAgC,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU;AAAA,EAC1H,gCAAgC,CAAC,eAAgC,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU;AAAA,EAC5H,8BAA8B,CAAC,eAAgC,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,qBAAqB,UAAU;AAAA;AAAA,EAG1H,IAAI,eAAe;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAyB;AAAA,EACjF,IAAI,sBAAsB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAgC;AAAA,EAC/F,6BAA6B,CAAC,YAAoB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,gCAAgC,OAAO;AAAA,EACrH,0CAA0C,CAAC,YAAoB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,gCAAgC,OAAO;AAAA,EAClI,IAAI,4BAA4B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAsC;AAAA;AAAA,EAG3G,IAAI,aAAa;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAuB;AAAA,EAC7E,IAAI,qBAAqB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA+B;AAAA,EAC7F,IAAI,0BAA0B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAoC;AAAA;AAAA,EAGvG,IAAI,aAAa;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAW;AAAA,EACjE,IAAI,gBAAgB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAiB;AAAA;AAAA,EAG1E,IAAI,2BAA2B;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAqC;AAAA,EACzG,IAAI,kCAAkC;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAA4C;AAAA,EACvH,IAAI,wCAAwC;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAkD;AAAA,EACnI,qBAAqB,CAAC,YAAoB,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE,gCAAgC,OAAO;AAAA;AAAA;AAAA,EAI7G,IAAI,iBAAiB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAiB;AAAA,EAC3E,IAAI,gBAAgB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAiB;AAAA;AAAA,EAG1E,IAAI,iBAAiB;AAAE,WAAO,GAAG,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,EAAmB;AAC9E;;;ACzHA,OAAO,WAAqF;AAA5F;AAIA,IAAM,iBAAgB,qBAAgB,gBAAgB,MAAhC,YAAqC;AAE3D,IAAM,kBAAkB;AAExB,SAAS,eAAuB;AARhC,MAAAC;AASC,UAAOA,MAAA,gBAAgB,gBAAgB,MAAhC,OAAAA,MAAqC;AAC7C;AAEA,SAAS,sBAAqC;AAZ9C,MAAAA,KAAA;AAaC,QAAM,WAAW,MAAM,OAAO;AAAA;AAAA,IAE7B,SAAS;AAAA,MACR,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,gBAAe,MAAAA,MAAA,gBAAgB,eAAe,MAA/B,gBAAAA,IAAkC,aAAlC,YAA8C;AAAA,MAC7D,cAAa,2BAAgB,eAAe,MAA/B,mBAAkC,WAAlC,YAA4C;AAAA,MACzD,eAAe,gBACX,cAAc,WAAW,SAAS,IAAI,gBAAgB,UAAU,aAAa,KAC9E;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,iBAAiB;AAAA,EAClB,CAAC;AAED,WAAS,aAAa,QAAQ;AAAA,IAC7B,CAAC,WAAuC;AACvC,YAAM,QAAQ,aAAa;AAE3B,UAAI,SAAS,OAAO,SAAS;AAE5B,cAAM,YAAY,MAAM,WAAW,SAAS,IAAI,QAAQ,UAAU,KAAK;AACvE,eAAO,QAAQ,gBAAgB;AAAA,MAChC;AAGA,cAAQ,IAAI,gBAAgB;AAAA,QAC3B,KAAK,OAAO;AAAA,QACZ,QAAQ,OAAO;AAAA,QACf,UAAU,CAAC,CAAC;AAAA,QACZ,uBAAuB,+BAAO,WAAW;AAAA,QACzC,SAAS;AAAA,UACR,eAAe,OAAO,QAAQ;AAAA,UAC9B,eAAe,OAAO,QAAQ,aAAa;AAAA,UAC3C,aAAa,OAAO,QAAQ,WAAW;AAAA,QACxC;AAAA,MACD,CAAC;AAED,MAAC,OAAe,WAAW,EAAE,YAAW,oBAAI,KAAK,GAAE,QAAQ,EAAE;AAE7D,aAAO;AAAA,IACR;AAAA,IACA,CAAC,UAAsB;AACtB,cAAQ,MAAM,8BAA8B,KAAK;AACjD,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC5B;AAAA,EACD;AAEA,WAAS,aAAa,SAAS;AAAA,IAC9B,CAAC,aAA4B;AAC5B,aAAO;AAAA,IACR;AAAA,IACA,OAAO,UAAsB;AAjE/B,UAAAA;AAkEG,YAAM,kBAAkB,MAAM;AAE9B,YAAIA,MAAA,MAAM,aAAN,gBAAAA,IAAgB,YAAW,OAAO,CAAC,gBAAgB,QAAQ;AAC9D,wBAAgB,aAAa;AAC7B,gBAAQ,KAAK,2CAA2C;AAAA,MACzD;AAEA,UAAI,CAAC,MAAM,UAAU;AACpB,gBAAQ,MAAM,kBAAkB,MAAM,OAAO;AAC7C,cAAM,UAAU;AAAA,MACjB;AAEA,UAAI,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK;AACnD,gBAAQ,MAAM,iBAAiB,MAAM,SAAS,QAAQ,MAAM,SAAS,IAAI;AACzE,cAAM,UAAU;AAAA,MACjB;AAEA,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC5B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAM,gBAA+B,oBAAoB;AAEzD,IAAO,gBAAQ;","names":["_a","jsx","_a","_a"]}
package/dist/index.js CHANGED
@@ -440,6 +440,9 @@ var init_sdk_state = __esm({
440
440
  var _a2;
441
441
  return (_a2 = this.transferLeadDataProvider) == null ? void 0 : _a2.call(this);
442
442
  }
443
+ clearTransferLeadData() {
444
+ this.transferLeadDataProvider = () => void 0;
445
+ }
443
446
  // public setHolding(isHolding: boolean): void {
444
447
  // this.state.isHolding = isHolding;
445
448
  // this.saveToStorage();
@@ -7775,6 +7778,7 @@ __export(index_exports, {
7775
7778
  initSDK: () => initSDK,
7776
7779
  isSDKInitialized: () => isSDKInitialized,
7777
7780
  logout: () => logout,
7781
+ registerTransferLeadData: () => registerTransferLeadData,
7778
7782
  sdkStateManager: () => sdkStateManager,
7779
7783
  startMonitoring: () => startMonitoring,
7780
7784
  stopMonitoring: () => stopMonitoring,
@@ -8636,11 +8640,18 @@ var ConferenceTableRow = ({ each, isLineDialing }) => {
8636
8640
  import_material3.TextField,
8637
8641
  {
8638
8642
  size: "small",
8643
+ type: "tel",
8639
8644
  placeholder: "Phone Number",
8640
8645
  fullWidth: true,
8641
8646
  value: (each == null ? void 0 : each.phone) || "",
8642
8647
  error: hasPhoneConflict,
8643
8648
  helperText: phoneConflictHelperText,
8649
+ slotProps: {
8650
+ htmlInput: {
8651
+ inputMode: "numeric",
8652
+ maxLength: 11
8653
+ }
8654
+ },
8644
8655
  disabled: (each == null ? void 0 : each.line) === 1 || [
8645
8656
  "ONCALL" /* ONCALL */,
8646
8657
  "DISCONNECTED" /* DISCONNECTED */,
@@ -8650,8 +8661,33 @@ var ConferenceTableRow = ({ each, isLineDialing }) => {
8650
8661
  "DIALING" /* DIALING */,
8651
8662
  "RINGING" /* RINGING */
8652
8663
  ].includes((_h = each == null ? void 0 : each.status) != null ? _h : "") || isLineDialing,
8664
+ onKeyDown: (e) => {
8665
+ const allowedKeys = [
8666
+ "Backspace",
8667
+ "Delete",
8668
+ "Tab",
8669
+ "ArrowLeft",
8670
+ "ArrowRight",
8671
+ "ArrowUp",
8672
+ "ArrowDown",
8673
+ "Home",
8674
+ "End"
8675
+ ];
8676
+ if (!/^\d$/.test(e.key) && !allowedKeys.includes(e.key) && !(e.ctrlKey || e.metaKey)) {
8677
+ e.preventDefault();
8678
+ }
8679
+ },
8680
+ onPaste: (e) => {
8681
+ const pasted = e.clipboardData.getData("text");
8682
+ if (!/^\d*$/.test(pasted)) {
8683
+ e.preventDefault();
8684
+ }
8685
+ },
8653
8686
  onChange: (e) => {
8654
- onConferenceLineUpdate(each, { phone: e.target.value });
8687
+ const v = e.target.value;
8688
+ if (/^\d*$/.test(v)) {
8689
+ onConferenceLineUpdate(each, { phone: v });
8690
+ }
8655
8691
  }
8656
8692
  }
8657
8693
  )
@@ -8738,43 +8774,43 @@ var ConferenceTableRow = ({ each, isLineDialing }) => {
8738
8774
  )
8739
8775
  }
8740
8776
  ) }),
8741
- (each == null ? void 0 : each.line) !== 1 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8742
- import_material3.Tooltip,
8743
- {
8744
- title: hasPhoneConflict ? phoneConflictHelperText || "Cannot dial this number" : "Call",
8745
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8746
- import_material3.Button,
8747
- {
8748
- variant: (each == null ? void 0 : each.status) !== "IDLE" /* IDLE */ ? "outlined" : "contained",
8749
- color: "success",
8750
- sx: (each == null ? void 0 : each.status) !== "IDLE" /* IDLE */ || hasPhoneConflict ? __spreadValues({}, disabled) : __spreadProps(__spreadValues({}, enabled), {
8751
- border: `0px solid ${theme.palette.success.light}`,
8752
- "&:hover": {
8753
- bgcolor: "success.light",
8754
- boxShadow: `0px 2px 1px ${theme.palette.success.light}`,
8755
- border: `0px solid ${theme.palette.success.light}`
8756
- },
8757
- "&:active": {
8758
- bgcolor: "success.light",
8759
- boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`
8760
- }
8761
- }),
8762
- onClick: () => {
8763
- onConferenceCallStart(each, {});
8777
+ (each == null ? void 0 : each.line) !== 1 && (() => {
8778
+ var _a3, _b2;
8779
+ const hasMinDigits = ((_b2 = (_a3 = each == null ? void 0 : each.phone) == null ? void 0 : _a3.length) != null ? _b2 : 0) >= 3;
8780
+ const callDisabled = (each == null ? void 0 : each.status) !== "IDLE" /* IDLE */ || isLineDialing || hasPhoneConflict || !hasMinDigits;
8781
+ const tooltipTitle = hasPhoneConflict ? phoneConflictHelperText || "Cannot dial this number" : !(each == null ? void 0 : each.phone) ? "Enter mobile number" : !hasMinDigits ? "Enter at least 3 digits" : "Call";
8782
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Tooltip, { title: tooltipTitle, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8783
+ import_material3.Button,
8784
+ {
8785
+ variant: callDisabled ? "outlined" : "contained",
8786
+ color: "success",
8787
+ sx: callDisabled ? __spreadValues({}, disabled) : __spreadProps(__spreadValues({}, enabled), {
8788
+ border: `0px solid ${theme.palette.success.light}`,
8789
+ "&:hover": {
8790
+ bgcolor: "success.light",
8791
+ boxShadow: `0px 2px 1px ${theme.palette.success.light}`,
8792
+ border: `0px solid ${theme.palette.success.light}`
8764
8793
  },
8765
- disabled: (each == null ? void 0 : each.status) !== "IDLE" /* IDLE */ || isLineDialing || hasPhoneConflict,
8766
- children: conferenceCallStart ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.CircularProgress, { size: "20px", color: "success" }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8767
- import_Call.default,
8768
- {
8769
- sx: {
8770
- color: (each == null ? void 0 : each.status) !== "IDLE" /* IDLE */ || hasPhoneConflict ? "default" : "#f3f2f2"
8771
- }
8794
+ "&:active": {
8795
+ bgcolor: "success.light",
8796
+ boxShadow: `inset 1px -2px 4px ${theme.palette.primary.light}`
8797
+ }
8798
+ }),
8799
+ onClick: () => {
8800
+ onConferenceCallStart(each, {});
8801
+ },
8802
+ disabled: callDisabled,
8803
+ children: conferenceCallStart ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.CircularProgress, { size: "20px", color: "success" }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8804
+ import_Call.default,
8805
+ {
8806
+ sx: {
8807
+ color: callDisabled ? "default" : "#f3f2f2"
8772
8808
  }
8773
- )
8774
- }
8775
- ) })
8776
- }
8777
- ),
8809
+ }
8810
+ )
8811
+ }
8812
+ ) }) });
8813
+ })(),
8778
8814
  (each == null ? void 0 : each.line) !== 1 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Tooltip, { title: "Merge Call", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
8779
8815
  import_material3.Button,
8780
8816
  {
@@ -9033,6 +9069,7 @@ function CallTransferDialog({ open }) {
9033
9069
  const [transferCall, { isLoading: isTransferLoading }] = usePostRequest({
9034
9070
  onSuccess: () => {
9035
9071
  sdkStateManager.setOpenCallTransferDialog(false);
9072
+ sdkStateManager.clearTransferLeadData();
9036
9073
  }
9037
9074
  });
9038
9075
  const [initiateConsultCall] = usePostRequest({});
@@ -9040,6 +9077,7 @@ function CallTransferDialog({ open }) {
9040
9077
  onSuccess: () => {
9041
9078
  sdkStateManager.setConsultInfo(null);
9042
9079
  sdkStateManager.setOpenCallTransferDialog(false);
9080
+ sdkStateManager.clearTransferLeadData();
9043
9081
  }
9044
9082
  });
9045
9083
  const [cancelConsultTransfer, { isLoading: isCancelConsultLoading }] = usePostRequest({
@@ -9690,6 +9728,28 @@ function CallTransferDialog({ open }) {
9690
9728
  value: mobileNumber,
9691
9729
  error: isSameAsActiveCall,
9692
9730
  helperText: isSameAsActiveCall ? "Cannot transfer to the same number" : "",
9731
+ onKeyDown: (e) => {
9732
+ const allowedKeys = [
9733
+ "Backspace",
9734
+ "Delete",
9735
+ "Tab",
9736
+ "ArrowLeft",
9737
+ "ArrowRight",
9738
+ "ArrowUp",
9739
+ "ArrowDown",
9740
+ "Home",
9741
+ "End"
9742
+ ];
9743
+ if (!/^\d$/.test(e.key) && !allowedKeys.includes(e.key) && !(e.ctrlKey || e.metaKey)) {
9744
+ e.preventDefault();
9745
+ }
9746
+ },
9747
+ onPaste: (e) => {
9748
+ const pasted = e.clipboardData.getData("text");
9749
+ if (!/^\d*$/.test(pasted)) {
9750
+ e.preventDefault();
9751
+ }
9752
+ },
9693
9753
  onChange: (e) => {
9694
9754
  const v = e.target.value;
9695
9755
  if (/^\d*$/.test(v)) {
@@ -11735,15 +11795,45 @@ function CallControls({ onDataChange }) {
11735
11795
  import_material4.TextField,
11736
11796
  {
11737
11797
  size: "small",
11798
+ type: "tel",
11738
11799
  value: phoneNumber,
11739
11800
  placeholder: "Enter Mobile No.",
11801
+ slotProps: {
11802
+ htmlInput: {
11803
+ inputMode: "numeric",
11804
+ maxLength: 11
11805
+ }
11806
+ },
11740
11807
  onChange: (e) => {
11741
11808
  const value = e.target.value;
11742
- setPhoneNumber(value);
11809
+ if (/^\d*$/.test(value)) {
11810
+ setPhoneNumber(value);
11811
+ }
11812
+ },
11813
+ onPaste: (e) => {
11814
+ const pasted = e.clipboardData.getData("text");
11815
+ if (!/^\d*$/.test(pasted)) {
11816
+ e.preventDefault();
11817
+ }
11743
11818
  },
11744
11819
  onKeyDown: (e) => {
11745
11820
  if (e.key === "Enter") {
11746
11821
  handleStartCall(phoneNumber);
11822
+ return;
11823
+ }
11824
+ const allowedKeys = [
11825
+ "Backspace",
11826
+ "Delete",
11827
+ "Tab",
11828
+ "ArrowLeft",
11829
+ "ArrowRight",
11830
+ "ArrowUp",
11831
+ "ArrowDown",
11832
+ "Home",
11833
+ "End"
11834
+ ];
11835
+ if (!/^\d$/.test(e.key) && !allowedKeys.includes(e.key) && !(e.ctrlKey || e.metaKey)) {
11836
+ e.preventDefault();
11747
11837
  }
11748
11838
  }
11749
11839
  }
@@ -12264,6 +12354,9 @@ async function changeMonitorMode(payload) {
12264
12354
  const res = await axios_default.post(END_POINT.SUPERVISOR_CALL_CHANGE_MODE, payload);
12265
12355
  return res.data;
12266
12356
  }
12357
+ function registerTransferLeadData(provider) {
12358
+ sdkStateManager.registerTransferLeadDataProvider(provider);
12359
+ }
12267
12360
 
12268
12361
  // call-control-sdk/index.ts
12269
12362
  async function initSDK({
@@ -12348,6 +12441,7 @@ function isSDKInitialized() {
12348
12441
  initSDK,
12349
12442
  isSDKInitialized,
12350
12443
  logout,
12444
+ registerTransferLeadData,
12351
12445
  sdkStateManager,
12352
12446
  startMonitoring,
12353
12447
  stopMonitoring,