ahs-cti 0.0.8 → 0.0.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.
Files changed (139) hide show
  1. package/dist/agentDetailReport-F44HMQ5O.mjs +27 -0
  2. package/dist/agentDetailReport-F44HMQ5O.mjs.map +1 -0
  3. package/dist/{agentPerformanceReport-JZK5DN5E.mjs → agentPerformanceReport-TTOMNENK.mjs} +25 -15
  4. package/dist/{agentPerformanceReport-JZK5DN5E.mjs.map → agentPerformanceReport-TTOMNENK.mjs.map} +1 -1
  5. package/dist/auditReport-QTMAKVTN.mjs +26 -0
  6. package/dist/auditReport-QTMAKVTN.mjs.map +1 -0
  7. package/dist/{callHistory-T3M76D4B.mjs → callHistory-4J4J2XHA.mjs} +20 -10
  8. package/dist/{callHistory-T3M76D4B.mjs.map → callHistory-4J4J2XHA.mjs.map} +1 -1
  9. package/dist/{campaigns-5PVHXBSD.mjs → campaigns-N3UNUGQP.mjs} +23 -13
  10. package/dist/{campaigns-5PVHXBSD.mjs.map → campaigns-N3UNUGQP.mjs.map} +1 -1
  11. package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs → caroQualityAuditDashboard-TNS4L2NR.mjs} +12 -2
  12. package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs.map → caroQualityAuditDashboard-TNS4L2NR.mjs.map} +1 -1
  13. package/dist/{caroVoiceAI-GGJCVUIQ.mjs → caroVoiceAI-OUTAAIFE.mjs} +12 -2
  14. package/dist/{caroVoiceAI-GGJCVUIQ.mjs.map → caroVoiceAI-OUTAAIFE.mjs.map} +1 -1
  15. package/dist/{cdrReport-ZMDHSZUW.mjs → cdrReport-Z35OLYUL.mjs} +26 -16
  16. package/dist/{cdrReport-ZMDHSZUW.mjs.map → cdrReport-Z35OLYUL.mjs.map} +1 -1
  17. package/dist/chunk-3PNP6G5P.mjs +92 -0
  18. package/dist/chunk-3PNP6G5P.mjs.map +1 -0
  19. package/dist/{chunk-DF5EFKXC.mjs → chunk-45MLTWV7.mjs} +12 -2
  20. package/dist/{chunk-DF5EFKXC.mjs.map → chunk-45MLTWV7.mjs.map} +1 -1
  21. package/dist/chunk-635IIVZE.mjs +24 -0
  22. package/dist/{chunk-FRKV2U3I.mjs.map → chunk-635IIVZE.mjs.map} +1 -1
  23. package/dist/chunk-677RFPP5.mjs +24 -0
  24. package/dist/{chunk-7LE2VTAI.mjs.map → chunk-677RFPP5.mjs.map} +1 -1
  25. package/dist/{chunk-Q6G3MPS7.mjs → chunk-ERSNXW5X.mjs} +11 -1
  26. package/dist/{chunk-Q6G3MPS7.mjs.map → chunk-ERSNXW5X.mjs.map} +1 -1
  27. package/dist/{chunk-H7GRWLYI.mjs → chunk-G6KRLGGC.mjs} +13 -3
  28. package/dist/{chunk-H7GRWLYI.mjs.map → chunk-G6KRLGGC.mjs.map} +1 -1
  29. package/dist/chunk-GFVR3HLK.mjs +24 -0
  30. package/dist/{chunk-6WLG2PXL.mjs.map → chunk-GFVR3HLK.mjs.map} +1 -1
  31. package/dist/{chunk-E6KYWWAI.mjs → chunk-GTI2ZVQX.mjs} +12 -2
  32. package/dist/{chunk-E6KYWWAI.mjs.map → chunk-GTI2ZVQX.mjs.map} +1 -1
  33. package/dist/chunk-H22TUCN3.mjs +24 -0
  34. package/dist/{chunk-AOJRUZTO.mjs.map → chunk-H22TUCN3.mjs.map} +1 -1
  35. package/dist/{chunk-YAQYTUTX.mjs → chunk-HAOFUADN.mjs} +12 -2
  36. package/dist/{chunk-YAQYTUTX.mjs.map → chunk-HAOFUADN.mjs.map} +1 -1
  37. package/dist/{chunk-33QNSXP7.mjs → chunk-JHC7OUQG.mjs} +21 -11
  38. package/dist/chunk-JHC7OUQG.mjs.map +1 -0
  39. package/dist/chunk-KSVNZKRD.mjs +10930 -0
  40. package/dist/chunk-KSVNZKRD.mjs.map +1 -0
  41. package/dist/{chunk-VVDJLUYT.mjs → chunk-M7FJYZF6.mjs} +12 -2
  42. package/dist/{chunk-VVDJLUYT.mjs.map → chunk-M7FJYZF6.mjs.map} +1 -1
  43. package/dist/{chunk-DNTGBNZD.mjs → chunk-NDZDJWXY.mjs} +13 -3
  44. package/dist/{chunk-DNTGBNZD.mjs.map → chunk-NDZDJWXY.mjs.map} +1 -1
  45. package/dist/chunk-S2SMCH2C.mjs +71 -0
  46. package/dist/chunk-S2SMCH2C.mjs.map +1 -0
  47. package/dist/{chunk-IDZWA6HG.mjs → chunk-S34CQVTF.mjs} +14 -4
  48. package/dist/{chunk-IDZWA6HG.mjs.map → chunk-S34CQVTF.mjs.map} +1 -1
  49. package/dist/{chunk-2M3YEXYA.mjs → chunk-SUS5RUCA.mjs} +17 -7
  50. package/dist/{chunk-2M3YEXYA.mjs.map → chunk-SUS5RUCA.mjs.map} +1 -1
  51. package/dist/{chunk-3J7KQNEU.mjs → chunk-TCYBXDAP.mjs} +13 -3
  52. package/dist/{chunk-3J7KQNEU.mjs.map → chunk-TCYBXDAP.mjs.map} +1 -1
  53. package/dist/chunk-VII5JNA6.mjs +24 -0
  54. package/dist/{chunk-WTBVFN4H.mjs.map → chunk-VII5JNA6.mjs.map} +1 -1
  55. package/dist/chunk-W3ECDLUB.mjs +24 -0
  56. package/dist/{chunk-OHJIW3I3.mjs.map → chunk-W3ECDLUB.mjs.map} +1 -1
  57. package/dist/{chunk-VBIDPX5Z.mjs → chunk-Y4PAUTZ4.mjs} +13 -3
  58. package/dist/{chunk-VBIDPX5Z.mjs.map → chunk-Y4PAUTZ4.mjs.map} +1 -1
  59. package/dist/{chunk-NAZO4HKB.mjs → chunk-ZSRD3ZXF.mjs} +12 -2
  60. package/dist/{chunk-NAZO4HKB.mjs.map → chunk-ZSRD3ZXF.mjs.map} +1 -1
  61. package/dist/index.mjs +33 -23
  62. package/dist/index.mjs.map +1 -1
  63. package/dist/{liveStatus-YSBYSVOO.mjs → liveStatus-PRDEL7CK.mjs} +16 -6
  64. package/dist/{liveStatus-YSBYSVOO.mjs.map → liveStatus-PRDEL7CK.mjs.map} +1 -1
  65. package/dist/{loginReport-YIVBJVJD.mjs → loginReport-47QNACQU.mjs} +22 -12
  66. package/dist/{loginReport-YIVBJVJD.mjs.map → loginReport-47QNACQU.mjs.map} +1 -1
  67. package/dist/{managementDashboard-7EMQC2UA.mjs → managementDashboard-SZFYULKA.mjs} +22 -12
  68. package/dist/{managementDashboard-7EMQC2UA.mjs.map → managementDashboard-SZFYULKA.mjs.map} +1 -1
  69. package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs → qualityAuditDashboard-FHRGB77R.mjs} +12 -2
  70. package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs.map → qualityAuditDashboard-FHRGB77R.mjs.map} +1 -1
  71. package/dist-react/agentDetailReport-PDKQKJNL.mjs +23 -0
  72. package/dist-react/agentPerformanceReport-MU2FASNN.mjs +544 -0
  73. package/dist-react/agentPerformanceReport-MU2FASNN.mjs.map +1 -0
  74. package/dist-react/auditReport-WH2KDNYT.mjs +25 -0
  75. package/{dist/auditReport-6ZUJ4UFO.mjs.map → dist-react/auditReport-WH2KDNYT.mjs.map} +1 -1
  76. package/dist-react/callHistory-HXXRYUIV.mjs +832 -0
  77. package/dist-react/callHistory-HXXRYUIV.mjs.map +1 -0
  78. package/dist-react/campaigns-J7KIAATE.mjs +3139 -0
  79. package/dist-react/campaigns-J7KIAATE.mjs.map +1 -0
  80. package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs +76 -0
  81. package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs.map +1 -0
  82. package/dist-react/caroVoiceAI-XGDUETXI.mjs +31 -0
  83. package/dist-react/caroVoiceAI-XGDUETXI.mjs.map +1 -0
  84. package/dist-react/cdrReport-SX2FZAO6.mjs +858 -0
  85. package/dist-react/cdrReport-SX2FZAO6.mjs.map +1 -0
  86. package/dist-react/chunk-4YF4IDV6.mjs +72 -0
  87. package/dist-react/chunk-4YF4IDV6.mjs.map +1 -0
  88. package/dist-react/chunk-ADM2JJCP.mjs +190 -0
  89. package/dist-react/chunk-ADM2JJCP.mjs.map +1 -0
  90. package/dist-react/chunk-EN7HM2MD.mjs +688 -0
  91. package/dist-react/chunk-EN7HM2MD.mjs.map +1 -0
  92. package/{dist/chunk-LHE4QGJJ.mjs → dist-react/chunk-F7G2XFRU.mjs} +12 -2
  93. package/{dist/chunk-LHE4QGJJ.mjs.map → dist-react/chunk-F7G2XFRU.mjs.map} +1 -1
  94. package/{dist/chunk-DJP744FF.mjs → dist-react/chunk-GUMGXVIT.mjs} +12 -2
  95. package/{dist/chunk-DJP744FF.mjs.map → dist-react/chunk-GUMGXVIT.mjs.map} +1 -1
  96. package/dist-react/chunk-KRXHK4AU.mjs +127 -0
  97. package/dist-react/chunk-KRXHK4AU.mjs.map +1 -0
  98. package/{dist/chunk-U2UDKXMB.mjs → dist-react/chunk-LWDAC6QU.mjs} +12 -2
  99. package/{dist/chunk-U2UDKXMB.mjs.map → dist-react/chunk-LWDAC6QU.mjs.map} +1 -1
  100. package/dist-react/chunk-LX6I32Y4.mjs +106 -0
  101. package/dist-react/chunk-LX6I32Y4.mjs.map +1 -0
  102. package/dist-react/chunk-MCD5FQNY.mjs +428 -0
  103. package/dist-react/chunk-MCD5FQNY.mjs.map +1 -0
  104. package/dist-react/chunk-MD472UKG.mjs +757 -0
  105. package/{dist/chunk-33QNSXP7.mjs.map → dist-react/chunk-MD472UKG.mjs.map} +1 -1
  106. package/dist-react/chunk-ORNNWQI6.mjs +67 -0
  107. package/dist-react/chunk-ORNNWQI6.mjs.map +1 -0
  108. package/dist-react/chunk-S4J35V4B.mjs +126 -0
  109. package/dist-react/chunk-S4J35V4B.mjs.map +1 -0
  110. package/dist-react/chunk-T53WMN5A.mjs +126 -0
  111. package/dist-react/chunk-T53WMN5A.mjs.map +1 -0
  112. package/dist-react/chunk-UTSRABCL.mjs +96 -0
  113. package/dist-react/chunk-UTSRABCL.mjs.map +1 -0
  114. package/dist-react/incoming-4WP3FJI4.mp3 +0 -0
  115. package/dist-react/incoming.mp3 +0 -0
  116. package/dist-react/index.d.mts +2476 -0
  117. package/dist-react/index.d.ts +2477 -0
  118. package/dist-react/index.js +26713 -0
  119. package/dist-react/index.js.map +1 -0
  120. package/dist-react/index.mjs +4675 -0
  121. package/dist-react/index.mjs.map +1 -0
  122. package/dist-react/liveStatus-IDZ7CPYK.mjs +1087 -0
  123. package/dist-react/liveStatus-IDZ7CPYK.mjs.map +1 -0
  124. package/dist-react/loginReport-F47GUU53.mjs +990 -0
  125. package/dist-react/loginReport-F47GUU53.mjs.map +1 -0
  126. package/dist-react/managementDashboard-GC5E7NEL.mjs +540 -0
  127. package/dist-react/managementDashboard-GC5E7NEL.mjs.map +1 -0
  128. package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs +76 -0
  129. package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs.map +1 -0
  130. package/package.json +17 -2
  131. package/dist/agentDetailReport-ZR7U2LLB.mjs +0 -17
  132. package/dist/auditReport-6ZUJ4UFO.mjs +0 -16
  133. package/dist/chunk-6WLG2PXL.mjs +0 -14
  134. package/dist/chunk-7LE2VTAI.mjs +0 -14
  135. package/dist/chunk-AOJRUZTO.mjs +0 -14
  136. package/dist/chunk-FRKV2U3I.mjs +0 -14
  137. package/dist/chunk-OHJIW3I3.mjs +0 -14
  138. package/dist/chunk-WTBVFN4H.mjs +0 -14
  139. /package/{dist/agentDetailReport-ZR7U2LLB.mjs.map → dist-react/agentDetailReport-PDKQKJNL.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../call-control-sdk/lib/pages/callHistory/index.tsx","../call-control-sdk/lib/pages/common/components/Transcript.tsx","../node_modules/@mui/icons-material/ExpandLess.mjs","../call-control-sdk/lib/pages/callHistory/useCallHistory.ts"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\r\nimport {\r\n\tBox,\r\n\tTypography,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTablePagination,\r\n\tToggleButton,\r\n\tToggleButtonGroup,\r\n\tIconButton,\r\n\tCollapse,\r\n\tCircularProgress,\r\n\tChip,\r\n\tStack,\r\n\tSwitch,\r\n\tFormControlLabel,\r\n\tTooltip,\r\n\tInputAdornment,\r\n\tOutlinedInput,\r\n\tuseTheme,\r\n\tPaper,\r\n} from \"@mui/material\";\r\nimport Transcript from \"../common/components/Transcript\";\r\nimport KeyboardArrowDown from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport PlayArrow from \"@mui/icons-material/PlayArrow\";\r\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\r\nimport Search from \"@mui/icons-material/Search\";\r\nimport Phone from \"@mui/icons-material/Phone\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\nimport AppButton from \"../common/components/AppButton\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useCallHistory } from \"./useCallHistory\";\r\nimport type { CallHistoryItem, MissedCallDetails, CallFilter } from \"./types\";\r\n\r\n// ──── Header cell columns ────────────────────────────────────────────────────\r\n\r\nconst CALL_HISTORY_COLS = [\"Call UID\", \"Mobile\", \"Type\", \"Start Time\", \"End Time\", \"Recording\", \"Agent\", \"Details\"] as const;\r\nconst MISSED_CALLS_COLS = [\"Agent ID\", \"Agent Name\", \"Mobile No\", \"Type\", \"Actions\"] as const;\r\nconst CENTER_COLS = new Set([\"Type\", \"Recording\", \"Agent\", \"Details\", \"Actions\"]);\r\n\r\n// ──── Main content (needs SDKProvider above it for useToast) ─────────────────\r\n\r\nconst CallHistoryContent = memo(() => {\r\n\tconst theme = useTheme();\r\n\tconst { showToast } = useToast();\r\n\tconst { calls, callsTotal, missedCalls, loading, fetchCallHistory, fetchMissedCalls, fetchRecording } =\r\n\t\tuseCallHistory();\r\n\r\n\tconst [filter, setFilter] = useState<CallFilter>(\"ALL\");\r\n\tconst [search, setSearch] = useState(\"\");\r\n\tconst [showMissedCalls, setShowMissedCalls] = useState(false);\r\n\tconst [page, setPage] = useState(0);\r\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\r\n\r\n\t// Debounced search (sent to the server for call history).\r\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\r\n\tuseEffect(() => {\r\n\t\tconst t = setTimeout(() => setDebouncedSearch(search.trim()), 400);\r\n\t\treturn () => clearTimeout(t);\r\n\t}, [search]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (showMissedCalls) {\r\n\t\t\tfetchMissedCalls();\r\n\t\t} else {\r\n\t\t\t// Call history is paginated + searched + filtered server-side.\r\n\t\t\tfetchCallHistory({\r\n\t\t\t\tpage: page + 1,\r\n\t\t\t\tpageSize: rowsPerPage,\r\n\t\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\r\n\t\t\t});\r\n\t\t}\r\n\t}, [showMissedCalls, page, rowsPerPage, filter, debouncedSearch, fetchCallHistory, fetchMissedCalls]);\r\n\r\n\t// Call history is filtered/searched server-side, so render the rows as-is.\r\n\tconst filteredCalls = calls;\r\n\r\n\tconst filteredMissedCalls = missedCalls\r\n\t\t.filter((c) => filter === \"ALL\" || c.callType?.toUpperCase() === filter)\r\n\t\t.filter((c) => {\r\n\t\t\tconst q = search.toLowerCase();\r\n\t\t\treturn (\r\n\t\t\t\tc.agentId?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.username?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.mobileNumber?.toLowerCase().includes(q)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\treturn (\r\n\t\t<Box>\r\n\t\t\t{/* PAGE HEADER */}\r\n\t\t\t<SDKPageHeader\r\n\t\t\t\ttitle=\"Call History\"\r\n\t\t\t\tactions={\r\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={1}>\r\n\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : <RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\tshowMissedCalls\r\n\t\t\t\t\t\t\t\t\t? fetchMissedCalls()\r\n\t\t\t\t\t\t\t\t\t: fetchCallHistory({\r\n\t\t\t\t\t\t\t\t\t\tpage: page + 1,\r\n\t\t\t\t\t\t\t\t\t\tpageSize: rowsPerPage,\r\n\t\t\t\t\t\t\t\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\t\t\t\t\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\r\n\t\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={loading}\r\n\t\t\t\t\t\t\tsx={{ height: 36 }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\t\tonChange={(e) => { setSearch(e.target.value); setPage(0); }}\r\n\t\t\t\t\t\t\tplaceholder=\"Search\"\r\n\t\t\t\t\t\t\tsx={{ width: 220, fontSize: \"0.82rem\", height: 36 }}\r\n\t\t\t\t\t\t\tendAdornment={\r\n\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t\t<Search sx={{ fontSize: 18, color: \"#999\" }} />\r\n\t\t\t\t\t\t\t\t</InputAdornment>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\r\n\t\t\t<Box py={1.5} px={2}>\r\n\t\t\t\t{/* FILTER BAR */}\r\n\t\t\t\t<Stack direction=\"row\" spacing={2} alignItems=\"center\" mb={2}>\r\n\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\tcontrol={\r\n\t\t\t\t\t\t\t<Switch\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tchecked={showMissedCalls}\r\n\t\t\t\t\t\t\t\tonChange={(_, checked) => { setShowMissedCalls(checked); setPage(0); }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.8rem\", color: \"#555\" }}>\r\n\t\t\t\t\t\t\t\tMissed Calls\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsx={{ ml: 0 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<ToggleButtonGroup\r\n\t\t\t\t\t\tvalue={filter}\r\n\t\t\t\t\t\texclusive\r\n\t\t\t\t\t\tonChange={(_, v) => { if (v) { setFilter(v); setPage(0); } }}\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tborder: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\tborderRadius: \"50px\",\r\n\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\"& .MuiToggleButton-root\": {\r\n\t\t\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\t\t\tborderRight: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\t\tcolor: \"#555\",\r\n\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\ttextTransform: \"uppercase\",\r\n\t\t\t\t\t\t\t\tfontSize: \"0.72rem\",\r\n\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\tpy: 0.5,\r\n\t\t\t\t\t\t\t\tborderRadius: 0,\r\n\t\t\t\t\t\t\t\t\"&:last-of-type\": { borderRight: \"none\" },\r\n\t\t\t\t\t\t\t\t\"&.Mui-selected\": {\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\tcolor: \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: theme.palette.primary.dark },\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}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ToggleButton value=\"ALL\">All</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"INCOMING\">Inbound</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"OUTGOING\">Outbound</ToggleButton>\r\n\t\t\t\t\t</ToggleButtonGroup>\r\n\t\t\t\t</Stack>\r\n\r\n\t\t\t\t{/* TABLE */}\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ display: 'flex', flexDirection: 'column' }}>\r\n\t\t\t\t <Box sx={{ overflowY: 'auto', maxHeight: 600 }}>\r\n\t\t\t\t\t<Table stickyHeader size=\"small\">\r\n\t\t\t\t\t\t{showMissedCalls ? (\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\t{MISSED_CALLS_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\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{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\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{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} />\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredMissedCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredMissedCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<MissedCallRow key={`${row.agentId}-${row.mobileNumber}-${i}`} row={row} />\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</>\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\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\t{CALL_HISTORY_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\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{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\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{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4 }}>\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</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredCalls.map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<ExpandableRow\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={row.call_uuid}\r\n\t\t\t\t\t\t\t\t\t\t\t\trow={row}\r\n\t\t\t\t\t\t\t\t\t\t\t\tstriped={i % 2 === 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tfetchRecording={fetchRecording}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonError={(msg) => showToast(msg, \"error\")}\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)}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t </Box>\r\n\t\t\t\t <TablePagination\r\n\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\tcount={showMissedCalls ? filteredMissedCalls.length : callsTotal}\r\n\t\t\t\t\t\tpage={page}\r\n\t\t\t\t\t\trowsPerPage={rowsPerPage}\r\n\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\r\n\t\t\t\t\t\tonRowsPerPageChange={(e) => { setRowsPerPage(parseInt(e.target.value, 10)); setPage(0); }}\r\n\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\r\n\t\t\t\t\t\tsx={{ borderTop: '1px solid #e0e0e0' }}\r\n\t\t\t\t />\r\n\t\t\t\t</TableContainer>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nCallHistoryContent.displayName = \"CallHistoryContent\";\r\n\r\n// ──── Missed Call Row ─────────────────────────────────────────────────────────\r\n\r\nconst MissedCallRow = memo(({ row }: { row: MissedCallDetails }) => {\r\n\tconst theme = useTheme();\r\n\treturn (\r\n\t\t<TableRow hover>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", color: theme.palette.primary.main }}>\r\n\t\t\t\t{row.agentId}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>{row.username}</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>\r\n\t\t\t\t{row.mobileNumber} ({row.callCount})\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", textTransform: \"uppercase\" }}>\r\n\t\t\t\t{row.callType}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell align=\"center\">\r\n\t\t\t\t<Phone sx={{ color: \"#c0392b\", fontSize: 20, cursor: \"pointer\" }} />\r\n\t\t\t</TableCell>\r\n\t\t</TableRow>\r\n\t);\r\n});\r\n\r\nMissedCallRow.displayName = \"MissedCallRow\";\r\n\r\n// ──── Expandable Row ──────────────────────────────────────────────────────────\r\n\r\n/* Coordinates playback so only one recording is open at a time. */\r\nconst activePlayers = new Set<(activeId: string) => void>();\r\nconst notifyPlay = (activeId: string) => {\r\n\tactivePlayers.forEach((fn) => fn(activeId));\r\n};\r\n\r\nfunction ExpandableRow({\r\n\trow,\r\n\tstriped,\r\n\tfetchRecording,\r\n\tonError,\r\n}: {\r\n\trow: CallHistoryItem;\r\n\tstriped: boolean;\r\n\tfetchRecording: (call_uuid: string) => Promise<Blob>;\r\n\tonError: (msg: string) => void;\r\n}) {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [audioURL, setAudioURL] = useState<string | null>(null);\r\n\tconst [loadingAudio, setLoadingAudio] = useState(false);\r\n\r\n\tconst closePlayer = useCallback(() => {\r\n\t\tsetAudioURL((prev) => {\r\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\r\n\t\t\treturn null;\r\n\t\t});\r\n\t}, []);\r\n\r\n\t// Close this player whenever another recording starts playing.\r\n\tuseEffect(() => {\r\n\t\tconst onPlay = (activeId: string) => {\r\n\t\t\tif (activeId !== row.call_uuid) closePlayer();\r\n\t\t};\r\n\t\tactivePlayers.add(onPlay);\r\n\t\treturn () => {\r\n\t\t\tactivePlayers.delete(onPlay);\r\n\t\t};\r\n\t}, [row.call_uuid, closePlayer]);\r\n\r\n\tconst handlePlay = async () => {\r\n\t\tif (!row.recording.available) return;\r\n\t\tnotifyPlay(row.call_uuid);\r\n\t\tsetLoadingAudio(true);\r\n\t\ttry {\r\n\t\t\tconst blob = await fetchRecording(row.call_uuid);\r\n\t\t\tsetAudioURL(URL.createObjectURL(blob));\r\n\t\t} catch {\r\n\t\t\tonError(\"Recording not available\");\r\n\t\t} finally {\r\n\t\t\tsetLoadingAudio(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleToggle = () => setOpen((prev) => !prev);\r\n\r\n\tconst bg = striped ? \"#fafafa\" : \"white\";\r\n\tconst cellSx = { fontSize: \"0.82rem\", backgroundColor: bg };\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<TableRow hover>\r\n\t\t\t\t<TableCell sx={{ ...cellSx, maxWidth: 130 }}>\r\n\t\t\t\t\t<Tooltip title={row.call_uuid} arrow>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tnoWrap\r\n\t\t\t\t\t\t\tsx={{ fontSize: 13, maxWidth: 130, overflow: \"hidden\", textOverflow: \"ellipsis\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{row.call_uuid}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>{row.mobile_no}</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tlabel={row.call_type}\r\n\t\t\t\t\t\tcolor={row.call_type === \"INCOMING\" ? \"success\" : \"primary\"}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{new Date(row.start_time).toLocaleString()}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{row.end_time ? new Date(row.end_time).toLocaleString() : \"—\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.recording.available ? (\r\n\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\tonClick={handlePlay}\r\n\t\t\t\t\t\t\tdisabled={loadingAudio}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{loadingAudio ? <CircularProgress size={18} /> : <PlayArrow />}\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Chip size=\"small\" label=\"No File\" />\r\n\t\t\t\t\t)}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.agent_id ?? \"\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<IconButton onClick={handleToggle} size=\"small\">\r\n\t\t\t\t\t\t{open ? <ExpandLess /> : <KeyboardArrowDown />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\r\n\t\t\t{/* Audio player row */}\r\n\t\t\t{audioURL && (\r\n\t\t\t\t<TableRow>\r\n\t\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t\t<Box p={2}>\r\n\t\t\t\t\t\t\t<audio\r\n\t\t\t\t\t\t\t\tcontrols\r\n\t\t\t\t\t\t\t\tautoPlay\r\n\t\t\t\t\t\t\t\tsrc={audioURL}\r\n\t\t\t\t\t\t\t\tonEnded={closePlayer}\r\n\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</TableCell>\r\n\t\t\t\t</TableRow>\r\n\t\t\t)}\r\n\r\n\t\t\t{/* Details collapse row */}\r\n\t\t\t<TableRow>\r\n\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t<Collapse in={open} unmountOnExit>\r\n\t\t\t\t\t\t<Box p={2} bgcolor=\"#f9fafc\" borderTop=\"1px solid #eee\">\r\n\t\t\t\t\t\t\t{open && <Transcript row={row} />}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Collapse>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\n// ──── Default Export — wraps with SDKProvider for toast context ───────────────\r\n\r\nconst CallHistory: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<CallHistoryContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default CallHistory;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n\tAvatar,\r\n\tBox,\r\n\tCircularProgress,\r\n\tRating,\r\n\tStack,\r\n\tTooltip,\r\n\tTypography,\r\n} from \"@mui/material\";\r\nimport axiosInstance from \"../../../services/axios\";\r\nimport { END_POINT } from \"../../../services/endPoint\";\r\nimport type { CallHistoryItem, TranscriptData, SentimentMetric, ConversationTypeClassification } from \"../../callHistory/types\";\r\n\r\n// ──── Gauge ───────────────────────────────────────────────────────────────────\r\n\r\nconst GAUGE_COLORS = [\"#e74c3c\", \"#e67e22\", \"#f1c40f\", \"#a3d977\", \"#2ecc71\"];\r\n\r\nfunction scoreColor(score: number) {\r\n\tconst idx = Math.max(0, Math.min(4, Math.round(score) - 1));\r\n\treturn GAUGE_COLORS[idx];\r\n}\r\n\r\nfunction GaugeTooltip({ metric }: { metric?: SentimentMetric }) {\r\n\tif (!metric) return <>—</>;\r\n\treturn (\r\n\t\t<Box sx={{ maxWidth: 240 }}>\r\n\t\t\t{typeof metric.Model_Prediction_Confidence_Level === \"number\" && (\r\n\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", fontWeight: 600, mb: 0.5 }}>\r\n\t\t\t\t\tModel Confidence: {metric.Model_Prediction_Confidence_Level}%\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<Typography sx={{ fontSize: \"0.72rem\", lineHeight: 1.4 }}>\r\n\t\t\t\t{metric.Observations ?? \"\"}\r\n\t\t\t</Typography>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction Gauge({ score, label }: { score: number; label: string }) {\r\n\tconst max = 5;\r\n\tconst radius = 32;\r\n\tconst stroke = 7;\r\n\tconst circumference = 2 * Math.PI * radius;\r\n\tconst pct = Math.max(0, Math.min(1, score / max));\r\n\tconst dash = circumference * pct;\r\n\tconst color = scoreColor(score);\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", px: 1 }}>\r\n\t\t\t<Box sx={{ position: \"relative\", width: 80, height: 80 }}>\r\n\t\t\t\t<svg width={80} height={80} viewBox=\"0 0 80 80\">\r\n\t\t\t\t\t<circle cx={40} cy={40} r={radius} fill=\"none\" stroke=\"#eee\" strokeWidth={stroke} />\r\n\t\t\t\t\t<circle\r\n\t\t\t\t\t\tcx={40}\r\n\t\t\t\t\t\tcy={40}\r\n\t\t\t\t\t\tr={radius}\r\n\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\tstroke={color}\r\n\t\t\t\t\t\tstrokeWidth={stroke}\r\n\t\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\t\tstrokeDasharray={`${dash} ${circumference - dash}`}\r\n\t\t\t\t\t\ttransform=\"rotate(-90 40 40)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\t\tinset: 0,\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: \"center\",\r\n\t\t\t\t\t\tfontSize: 18,\r\n\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\tcolor: \"#444\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{score}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Typography\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tmt: 0.5,\r\n\t\t\t\t\tfontSize: \"0.7rem\",\r\n\t\t\t\t\tcolor: \"primary.main\",\r\n\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\tlineHeight: 1.2,\r\n\t\t\t\t\tmaxWidth: 110,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{label}\r\n\t\t\t</Typography>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Classification Bar ──────────────────────────────────────────────────────\r\n\r\nfunction ClassificationBar({ classification }: { classification?: ConversationTypeClassification }) {\r\n\t// Build segments dynamically from all keys (mirrors CRM's linearProgressBar)\r\n\tconst COLOR_MAP: Record<string, string> = {\r\n\t\tInformational_Queries: \"#5bc0eb\",\r\n\t\tAction_Oriented_Queries: \"#3aa3d0\",\r\n\t\tEscalations_or_Complaints: \"#9b59b6\",\r\n\t};\r\n\tconst segments = Object.entries(classification ?? {})\r\n\t\t.filter(([, v]) => v != null)\r\n\t\t.map(([key, value]) => ({\r\n\t\t\tlabel: key.replaceAll(\"_\", \" \"),\r\n\t\t\tvalue: Number(value) || 0,\r\n\t\t\tcolor: COLOR_MAP[key] ?? \"#7e57c2\",\r\n\t\t}));\r\n\tconst total = segments.reduce((s, seg) => s + seg.value, 0) || 1;\r\n\r\n\treturn (\r\n\t\t<Box>\r\n\t\t\t<Stack direction=\"row\" spacing={2} mb={0.75} sx={{ flexWrap: \"wrap\", rowGap: 0.5 }}>\r\n\t\t\t\t{segments.map((s) => (\r\n\t\t\t\t\t<Typography key={s.label} sx={{ fontSize: \"0.72rem\", color: s.color, fontWeight: 600 }}>\r\n\t\t\t\t\t\t{s.label}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t))}\r\n\t\t\t</Stack>\r\n\t\t\t<Box sx={{ display: \"flex\", width: \"100%\", height: 8, borderRadius: 4, overflow: \"hidden\" }}>\r\n\t\t\t\t{segments.map((s) => (\r\n\t\t\t\t\t<Box key={s.label} sx={{ width: `${(s.value / total) * 100}%`, backgroundColor: s.color }} />\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Section Box ─────────────────────────────────────────────────────────────\r\n\r\nfunction SectionBox({ title, children }: { title: string; children: React.ReactNode }) {\r\n\treturn (\r\n\t\t<Box sx={(t) => ({ border: `1.5px solid ${t.palette.primary.main}`, borderRadius: 1, p: 1, mb: 1.25 })}>\r\n\t\t\t<Typography sx={{ fontSize: \"0.75rem\", fontWeight: 700, mb: 0.5 }}>{title}</Typography>\r\n\t\t\t{children}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Resolve API response shape ──────────────────────────────────────────────\r\n\r\nfunction resolveTranscriptData(raw: any): TranscriptData | null {\r\n\tif (!raw) return null;\r\n\tconst payload = raw.data ?? raw;\r\n\r\n\t// New shape: { Call_Center_Interaction_Hospital_Service: {...}, transcription?: string }\r\n\tif (payload.Call_Center_Interaction_Hospital_Service) {\r\n\t\treturn {\r\n\t\t\ttranscription: payload.transcription,\r\n\t\t\tsentiment_analysis: {\r\n\t\t\t\tCall_Center_Interaction_Hospital_Service: payload.Call_Center_Interaction_Hospital_Service,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\t// Legacy shape: { transcription, sentiment_analysis: { Call_Center_Interaction_Hospital_Service } }\r\n\treturn payload as TranscriptData;\r\n}\r\n\r\n// ──── Main Transcript Component ───────────────────────────────────────────────\r\n\r\ninterface TranscriptProps {\r\n\trow: CallHistoryItem;\r\n}\r\n\r\nconst Transcript: React.FC<TranscriptProps> = ({ row }) => {\r\n\tconst [transcript, setTranscript] = useState<TranscriptData | null>(null);\r\n\tconst [loading, setLoading] = useState(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet cancelled = false;\r\n\t\tsetLoading(true);\r\n\t\taxiosInstance\r\n\t\t\t.get(END_POINT.CALLSAGE_SENTIMENT(row.call_uuid))\r\n\t\t\t.then((res) => {\r\n\t\t\t\tif (!cancelled) setTranscript(resolveTranscriptData(res.data));\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tif (!cancelled) setTranscript(null);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tif (!cancelled) setLoading(false);\r\n\t\t\t});\r\n\t\treturn () => { cancelled = true; };\r\n\t}, [row.call_uuid]);\r\n\r\n\tif (loading) {\r\n\t\treturn (\r\n\t\t\t<Box display=\"flex\" justifyContent=\"center\" py={3}>\r\n\t\t\t\t<CircularProgress size={22} />\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\tconst svc = transcript?.sentiment_analysis?.Call_Center_Interaction_Hospital_Service;\r\n\tconst summary = svc?.Call_Summary;\r\n\tconst breakdown = svc?.Sentiment_Analysis_Breakdown;\r\n\tconst patient = breakdown?.Patient_Sentiment_Analysis ?? {};\r\n\tconst agent = breakdown?.Agent_Sentiment_Analysis ?? {};\r\n\tconst oss = breakdown?.[\"Overall_Sentiment_Score_(OSS)\"];\r\n\tconst classification = svc?.Conversation_Type_Classification;\r\n\tconst positives = svc?.Key_Highlights_Issues_Identified?.Positive_Aspects ?? [];\r\n\tconst improvements = svc?.Key_Highlights_Issues_Identified?.Areas_for_Improvement ?? [];\r\n\tconst lines = (transcript?.transcription ?? \"\").split(\"\\n\").filter((l) => l.trim().length > 0);\r\n\r\n\t// Dynamic aspect iteration — mirrors CRM's processSentimentData approach\r\n\tconst patientAspects = Object.entries(patient).filter(([key]) => key !== \"Overall_Sentiment\");\r\n\tconst agentAspects = Object.entries(agent).filter(([key]) => key !== \"Overall_Agent_Performance\");\r\n\r\n\tconst patientAvg = patient[\"Overall_Sentiment\"]?.Sentiment_Score\r\n\t\t?? (patientAspects.reduce((sum, [, m]) => sum + (m?.Sentiment_Score ?? 0), 0) / (patientAspects.length || 1));\r\n\tconst agentAvg = agent[\"Overall_Agent_Performance\"]?.Sentiment_Score\r\n\t\t?? (agentAspects.reduce((sum, [, m]) => sum + (m?.Sentiment_Score ?? 0), 0) / (agentAspects.length || 1));\r\n\tconst overall = oss?.Sentiment_Score ?? (patientAvg + agentAvg) / 2;\r\n\r\n\tif (!svc && lines.length === 0) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<Typography fontWeight={600} fontSize=\"0.85rem\" mb={0.5}>\r\n\t\t\t\t\tCall Details\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\tCall UID: {row.call_uuid}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\tAgent: {row.agent_id ?? \"Unassigned\"}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\" color=\"#999\" mt={1}>\r\n\t\t\t\t\tNo transcript available for this call.\r\n\t\t\t\t</Typography>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", md: \"1fr 1fr\" }, gap: 1.5 }}>\r\n\t\t\t{/* LEFT — Summary + Transcript (transcript hidden when not available) */}\r\n\t\t\t<Box>\r\n\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\", mb: 1.25 }}>\r\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={0.5}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.85rem\", color: \"primary.main\" }}>\r\n\t\t\t\t\t\t\tCall Summary\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"#555\" }}>Overall Satisfaction:</Typography>\r\n\t\t\t\t\t\t\t<Rating size=\"small\" value={overall} precision={0.5} readOnly />\r\n\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#444\", lineHeight: 1.45 }}>\r\n\t\t\t\t\t\t{summary ?? \"-\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{lines.length > 0 ? (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.85rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tTranscript\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 360, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t{lines.map((line, idx) => {\r\n\t\t\t\t\t\t\t\tconst isPatient = line.trim().toLowerCase().startsWith(\"patient\");\r\n\t\t\t\t\t\t\t\tconst text = line.replace(/^\\s*(Patient|Agent)\\s*:\\s*/i, \"\");\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tkey={idx}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\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\tjustifyContent: isPatient ? \"flex-end\" : \"flex-start\",\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\tmb: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\tgap: 0.75,\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{!isPatient && <Avatar sx={{ width: 22, height: 22, fontSize: 12 }} />}\r\n\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\tsx={(t) => ({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"70%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1.25,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: isPatient ? \"8px 8px 0 8px\" : \"8px 8px 8px 0\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isPatient ? t.palette.primary.main : \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: isPatient ? t.palette.common.white : \"#222\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: isPatient ? \"none\" : \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"0.8rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\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{text}\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t{isPatient && <Avatar sx={{ width: 22, height: 22, fontSize: 12 }} />}\r\n\t\t\t\t\t\t\t\t\t</Box>\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</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tKey Highlights & Issues Identified\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 180, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#2ecc71\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t✅ Positive Aspects:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{positives.length > 0 ?\r\n\t\t\t\t\t\t\t\tpositives.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#e67e22\", mt: 1, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t⚠️ Areas of Improvements:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{improvements.length > 0 ?\r\n\t\t\t\t\t\t\t\timprovements.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* RIGHT — Sentiment Analysis + Key Highlights (highlights hidden when moved to left) */}\r\n\t\t\t<Box>\r\n\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\", mb: lines.length > 0 ? 1.25 : 0 }}>\r\n\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\tSentiment Analysis\r\n\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 1, mb: 1 }}>\r\n\t\t\t\t\t\t<SectionBox title=\"Patient Sentiment\">\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" justifyContent=\"space-around\" flexWrap=\"wrap\" mb={0.5}>\r\n\t\t\t\t\t\t\t\t{patientAspects.map(([key, metric]) => (\r\n\t\t\t\t\t\t\t\t\t<Tooltip key={key} title={<GaugeTooltip metric={metric} />} arrow>\r\n\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t<Gauge\r\n\t\t\t\t\t\t\t\t\t\t\t\tscore={metric?.Sentiment_Score ?? 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={key.replaceAll(\"_\", \" \")}\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</span>\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</Stack>\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.7rem\", fontWeight: 600 }}>Patient Sentiment:</Typography>\r\n\t\t\t\t\t\t\t\t<Rating size=\"small\" value={patientAvg} precision={0.5} readOnly />\r\n\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t</SectionBox>\r\n\r\n\t\t\t\t\t\t<SectionBox title=\"Agent Performance\">\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" justifyContent=\"space-around\" flexWrap=\"wrap\" mb={0.5}>\r\n\t\t\t\t\t\t\t\t{agentAspects.map(([key, metric]) => (\r\n\t\t\t\t\t\t\t\t\t<Tooltip key={key} title={<GaugeTooltip metric={metric} />} arrow>\r\n\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t<Gauge\r\n\t\t\t\t\t\t\t\t\t\t\t\tscore={metric?.Sentiment_Score ?? 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={key.replaceAll(\"_\", \" \")}\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</span>\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</Stack>\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.7rem\", fontWeight: 600 }}>Agent Performance:</Typography>\r\n\t\t\t\t\t\t\t\t<Rating size=\"small\" value={agentAvg} precision={0.5} readOnly />\r\n\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t</SectionBox>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<SectionBox title=\"Conversation Classification\">\r\n\t\t\t\t\t\t<ClassificationBar classification={classification} />\r\n\t\t\t\t\t</SectionBox>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{lines.length > 0 && (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tKey Highlights & Issues Identified\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 180, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#2ecc71\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t✅ Positive Aspects:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{positives.length > 0 ?\r\n\t\t\t\t\t\t\t\tpositives.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#e67e22\", mt: 1, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t⚠️ Areas of Improvements:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{improvements.length > 0 ?\r\n\t\t\t\t\t\t\t\timprovements.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default Transcript;\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');","import { useState, useCallback } from \"react\";\r\nimport axiosInstance, { deepFindArray } from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { CallHistoryItem, MissedCallDetails, TranscriptData } from \"./types\";\r\n\r\nconst MOCK_TRANSCRIPT: TranscriptData = {\r\n\ttranscription: [\r\n\t\t\"Agent: Welcome, please wait while your call is being transferred.\",\r\n\t\t\"Patient: Welcome, please wait while your call is being connected.\",\r\n\t\t\"Agent: Please wait while your call is connected.\",\r\n\t\t\"Agent: I will show you how you can also book new appointments if you need an appointment.\",\r\n\t\t\"Agent: And you can select your specialty.\",\r\n\t\t\"Patient: I am not getting it.\",\r\n\t\t\"Patient: Yes, I am speaking.\",\r\n\t\t\"Patient: I don't know what the reason is.\",\r\n\t\t\"Patient: Yes.\",\r\n\t\t\"Patient: I will do it according to the plan.\",\r\n\t\t\"Patient: I am not getting any information about that.\",\r\n\t\t\"Patient: Yeah, so I want to see the result.\",\r\n\t\t\"Patient: I am not doing it now.\",\r\n\t\t\"Agent: So we also have a new point.\",\r\n\t\t\"Agent: We can include that.\",\r\n\t\t\"Agent: So, um, these are the entities of the bank.\",\r\n\t\t\"Agent: If you have any questions, I can answer them for you.\",\r\n\t\t\"Patient: How much is it?\",\r\n\t\t\"Patient: No, I don't want to do it.\",\r\n\t\t\"Patient: I just got some calling.\",\r\n\t\t\"Patient: I will call now.\",\r\n\t].join(\"\\n\"),\r\n\tsentiment_analysis: {\r\n\t\tCall_Center_Interaction_Hospital_Service: {\r\n\t\t\tCall_Summary:\r\n\t\t\t\t\"The conversation involved a patient attempting to get information regarding booking an appointment and the status of their results. The agent provided some guidance but the patient expressed confusion and dissatisfaction with the information provided, leading to frustration.\",\r\n\t\t\tSentiment_Analysis_Breakdown: {\r\n\t\t\t\tPatient_Sentiment_Analysis: {\r\n\t\t\t\t\t\"Resolution_Confidence_Index_(RCI)\": {\r\n\t\t\t\t\t\tSentiment_Score: 1,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient expressed confusion and dissatisfaction, stating 'I am not getting any information about that' and 'I am not doing it now', indicating a lack of clarity and resolution.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 85,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"Tone_And_Emotional_Analysis_(TEA)\": {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient displayed frustration with statements like 'I don't know what the reason is' and 'I am not getting it', indicating a high level of dissatisfaction throughout the call.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 80,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tOverall_Sentiment: {\r\n\t\t\t\t\t\tSentiment_Score: 1.5,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient showed significant frustration and confusion, leading to a low overall sentiment.\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tAgent_Sentiment_Analysis: {\r\n\t\t\t\t\tEmpathy_Score: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent attempted to provide information but lacked engagement and empathy, as evidenced by the unclear responses and minimal reassurance offered to the patient.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 75,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tConfidence_Score: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent's responses were somewhat unclear and lacked confidence, particularly when addressing the patient's inquiries, leading to a perception of hesitation.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 70,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tOverall_Agent_Performance: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent's performance was below expectations, lacking both empathy and clarity.\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t\"Overall_Sentiment_Score_(OSS)\": {\r\n\t\t\t\t\tSentiment_Score: 1.7,\r\n\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\"The overall conversation reflected a low satisfaction level from the patient, compounded by the agent's lack of clarity and engagement.\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tConversation_Type_Classification: {\r\n\t\t\t\tInformational_Queries: \"40%\",\r\n\t\t\t\tAction_Oriented_Queries: \"40%\",\r\n\t\t\t\tEscalations_or_Complaints: \"20%\",\r\n\t\t\t},\r\n\t\t\tKey_Highlights_Issues_Identified: {\r\n\t\t\t\tPositive_Aspects: [\r\n\t\t\t\t\t\"The agent attempted to provide information about booking appointments.\",\r\n\t\t\t\t],\r\n\t\t\t\tAreas_for_Improvement: [\r\n\t\t\t\t\t\"The agent needs to improve clarity in communication and show more empathy towards patient concerns.\",\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n\r\nexport interface CallHistoryParams {\r\n\tpage?: number;\r\n\tpageSize?: number;\r\n\tsearch?: string;\r\n\tcall_type?: \"INCOMING\" | \"OUTGOING\";\r\n}\r\n\r\nexport function useCallHistory() {\r\n\tconst [calls, setCalls] = useState<CallHistoryItem[]>([]);\r\n\t// Real total (server returns { ..., total }).\r\n\tconst [callsTotal, setCallsTotal] = useState(-1);\r\n\tconst [missedCalls, setMissedCalls] = useState<MissedCallDetails[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchCallHistory = useCallback(async (params?: CallHistoryParams) => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst page = params?.page ?? 1;\r\n\t\t\tconst pageSize = params?.pageSize ?? 10;\r\n\t\t\t// POST with query params: page (1-indexed), pageSize, search, call_type.\r\n\t\t\tconst query: Record<string, unknown> = { page, pageSize };\r\n\t\t\tif (params?.search) query.search = params.search;\r\n\t\t\tif (params?.call_type) query.call_type = params.call_type;\r\n\t\t\tconst res = await axiosInstance.post(END_POINT.CALLS_HISTORY, {}, { params: query });\r\n\t\t\t// Find the records array wherever it sits (flat array, { records }, { data: [...] }, ...).\r\n\t\t\tconst records = deepFindArray<CallHistoryItem>(res.data, [\"records\"]);\r\n\t\t\tconst d: any = res.data;\r\n\t\t\tconst total =\r\n\t\t\t\ttypeof d?.total === \"number\" ? d.total\r\n\t\t\t\t: typeof d?.count === \"number\" ? d.count\r\n\t\t\t\t: typeof d?.totalCount === \"number\" ? d.totalCount\r\n\t\t\t\t: -1;\r\n\t\t\tsetCalls(records);\r\n\t\t\tsetCallsTotal(total >= 0 ? total : records.length < pageSize ? (page - 1) * pageSize + records.length : -1);\r\n\t\t} catch {\r\n\t\t\tsetCalls([]);\r\n\t\t\tsetCallsTotal(-1);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchMissedCalls = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.MISSED_CALLS);\r\n\t\t\tsetMissedCalls(Array.isArray(res.data?.data) ? res.data.data : []);\r\n\t\t} catch {\r\n\t\t\tsetMissedCalls([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchRecording = useCallback(async (call_uuid: string): Promise<Blob> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.RECORDING_BY_CALL(call_uuid), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst fetchTranscript = useCallback(async (_call_uuid: string): Promise<TranscriptData | null> => {\r\n\t\tawait new Promise((r) => setTimeout(r, 400));\r\n\t\treturn MOCK_TRANSCRIPT;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tcalls,\r\n\t\tcallsTotal,\r\n\t\tmissedCalls,\r\n\t\tloading,\r\n\t\tfetchCallHistory,\r\n\t\tfetchMissedCalls,\r\n\t\tfetchRecording,\r\n\t\tfetchTranscript,\r\n\t};\r\n}\r\n"],"mappings":"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","names":["useCallback","useEffect","useState","_a","useState","useState","Fragment","jsx","jsxs","useState","useEffect","useCallback"]}
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/callHistory/index.tsx","../call-control-sdk/lib/pages/common/components/Transcript.tsx","../node_modules/@mui/icons-material/ExpandLess.mjs","../call-control-sdk/lib/pages/callHistory/useCallHistory.ts"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\r\nimport {\r\n\tBox,\r\n\tTypography,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTablePagination,\r\n\tToggleButton,\r\n\tToggleButtonGroup,\r\n\tIconButton,\r\n\tCollapse,\r\n\tCircularProgress,\r\n\tChip,\r\n\tStack,\r\n\tSwitch,\r\n\tFormControlLabel,\r\n\tTooltip,\r\n\tInputAdornment,\r\n\tOutlinedInput,\r\n\tuseTheme,\r\n\tPaper,\r\n} from \"@mui/material\";\r\nimport Transcript from \"../common/components/Transcript\";\r\nimport KeyboardArrowDown from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport PlayArrow from \"@mui/icons-material/PlayArrow\";\r\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\r\nimport Search from \"@mui/icons-material/Search\";\r\nimport Phone from \"@mui/icons-material/Phone\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\nimport AppButton from \"../common/components/AppButton\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useCallHistory } from \"./useCallHistory\";\r\nimport type { CallHistoryItem, MissedCallDetails, CallFilter } from \"./types\";\r\n\r\n// ──── Header cell columns ────────────────────────────────────────────────────\r\n\r\nconst CALL_HISTORY_COLS = [\"Call UID\", \"Mobile\", \"Type\", \"Start Time\", \"End Time\", \"Recording\", \"Agent\", \"Details\"] as const;\r\nconst MISSED_CALLS_COLS = [\"Agent ID\", \"Agent Name\", \"Mobile No\", \"Type\", \"Actions\"] as const;\r\nconst CENTER_COLS = new Set([\"Type\", \"Recording\", \"Agent\", \"Details\", \"Actions\"]);\r\n\r\n// ──── Main content (needs SDKProvider above it for useToast) ─────────────────\r\n\r\nconst CallHistoryContent = memo(() => {\r\n\tconst theme = useTheme();\r\n\tconst { showToast } = useToast();\r\n\tconst { calls, callsTotal, missedCalls, loading, fetchCallHistory, fetchMissedCalls, fetchRecording } =\r\n\t\tuseCallHistory();\r\n\r\n\tconst [filter, setFilter] = useState<CallFilter>(\"ALL\");\r\n\tconst [search, setSearch] = useState(\"\");\r\n\tconst [showMissedCalls, setShowMissedCalls] = useState(false);\r\n\tconst [page, setPage] = useState(0);\r\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\r\n\r\n\t// Debounced search (sent to the server for call history).\r\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\r\n\tuseEffect(() => {\r\n\t\tconst t = setTimeout(() => setDebouncedSearch(search.trim()), 400);\r\n\t\treturn () => clearTimeout(t);\r\n\t}, [search]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (showMissedCalls) {\r\n\t\t\tfetchMissedCalls();\r\n\t\t} else {\r\n\t\t\t// Call history is paginated + searched + filtered server-side.\r\n\t\t\tfetchCallHistory({\r\n\t\t\t\tpage: page + 1,\r\n\t\t\t\tpageSize: rowsPerPage,\r\n\t\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\r\n\t\t\t});\r\n\t\t}\r\n\t}, [showMissedCalls, page, rowsPerPage, filter, debouncedSearch, fetchCallHistory, fetchMissedCalls]);\r\n\r\n\t// Call history is filtered/searched server-side, so render the rows as-is.\r\n\tconst filteredCalls = calls;\r\n\r\n\tconst filteredMissedCalls = missedCalls\r\n\t\t.filter((c) => filter === \"ALL\" || c.callType?.toUpperCase() === filter)\r\n\t\t.filter((c) => {\r\n\t\t\tconst q = search.toLowerCase();\r\n\t\t\treturn (\r\n\t\t\t\tc.agentId?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.username?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.mobileNumber?.toLowerCase().includes(q)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\treturn (\r\n\t\t<Box>\r\n\t\t\t{/* PAGE HEADER */}\r\n\t\t\t<SDKPageHeader\r\n\t\t\t\ttitle=\"Call History\"\r\n\t\t\t\tactions={\r\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={1}>\r\n\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : <RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\tshowMissedCalls\r\n\t\t\t\t\t\t\t\t\t? fetchMissedCalls()\r\n\t\t\t\t\t\t\t\t\t: fetchCallHistory({\r\n\t\t\t\t\t\t\t\t\t\tpage: page + 1,\r\n\t\t\t\t\t\t\t\t\t\tpageSize: rowsPerPage,\r\n\t\t\t\t\t\t\t\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\t\t\t\t\t\t\t\tcall_type: filter === \"ALL\" ? undefined : filter,\r\n\t\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={loading}\r\n\t\t\t\t\t\t\tsx={{ height: 36 }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\t\tonChange={(e) => { setSearch(e.target.value); setPage(0); }}\r\n\t\t\t\t\t\t\tplaceholder=\"Search\"\r\n\t\t\t\t\t\t\tsx={{ width: 220, fontSize: \"0.82rem\", height: 36 }}\r\n\t\t\t\t\t\t\tendAdornment={\r\n\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t\t<Search sx={{ fontSize: 18, color: \"#999\" }} />\r\n\t\t\t\t\t\t\t\t</InputAdornment>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\r\n\t\t\t<Box py={1.5} px={2}>\r\n\t\t\t\t{/* FILTER BAR */}\r\n\t\t\t\t<Stack direction=\"row\" spacing={2} alignItems=\"center\" mb={2}>\r\n\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\tcontrol={\r\n\t\t\t\t\t\t\t<Switch\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tchecked={showMissedCalls}\r\n\t\t\t\t\t\t\t\tonChange={(_, checked) => { setShowMissedCalls(checked); setPage(0); }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.8rem\", color: \"#555\" }}>\r\n\t\t\t\t\t\t\t\tMissed Calls\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsx={{ ml: 0 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<ToggleButtonGroup\r\n\t\t\t\t\t\tvalue={filter}\r\n\t\t\t\t\t\texclusive\r\n\t\t\t\t\t\tonChange={(_, v) => { if (v) { setFilter(v); setPage(0); } }}\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tborder: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\tborderRadius: \"50px\",\r\n\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\"& .MuiToggleButton-root\": {\r\n\t\t\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\t\t\tborderRight: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\t\tcolor: \"#555\",\r\n\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\ttextTransform: \"uppercase\",\r\n\t\t\t\t\t\t\t\tfontSize: \"0.72rem\",\r\n\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\tpy: 0.5,\r\n\t\t\t\t\t\t\t\tborderRadius: 0,\r\n\t\t\t\t\t\t\t\t\"&:last-of-type\": { borderRight: \"none\" },\r\n\t\t\t\t\t\t\t\t\"&.Mui-selected\": {\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\tcolor: \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: theme.palette.primary.dark },\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}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ToggleButton value=\"ALL\">All</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"INCOMING\">Inbound</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"OUTGOING\">Outbound</ToggleButton>\r\n\t\t\t\t\t</ToggleButtonGroup>\r\n\t\t\t\t</Stack>\r\n\r\n\t\t\t\t{/* TABLE */}\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ display: 'flex', flexDirection: 'column' }}>\r\n\t\t\t\t <Box sx={{ overflowY: 'auto', maxHeight: 600 }}>\r\n\t\t\t\t\t<Table stickyHeader size=\"small\">\r\n\t\t\t\t\t\t{showMissedCalls ? (\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\t{MISSED_CALLS_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\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{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\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{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} />\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredMissedCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredMissedCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<MissedCallRow key={`${row.agentId}-${row.mobileNumber}-${i}`} row={row} />\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</>\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\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\t{CALL_HISTORY_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\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{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\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{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4 }}>\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</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredCalls.map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<ExpandableRow\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={row.call_uuid}\r\n\t\t\t\t\t\t\t\t\t\t\t\trow={row}\r\n\t\t\t\t\t\t\t\t\t\t\t\tstriped={i % 2 === 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tfetchRecording={fetchRecording}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonError={(msg) => showToast(msg, \"error\")}\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)}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t </Box>\r\n\t\t\t\t <TablePagination\r\n\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\tcount={showMissedCalls ? filteredMissedCalls.length : callsTotal}\r\n\t\t\t\t\t\tpage={page}\r\n\t\t\t\t\t\trowsPerPage={rowsPerPage}\r\n\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\r\n\t\t\t\t\t\tonRowsPerPageChange={(e) => { setRowsPerPage(parseInt(e.target.value, 10)); setPage(0); }}\r\n\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\r\n\t\t\t\t\t\tsx={{ borderTop: '1px solid #e0e0e0' }}\r\n\t\t\t\t />\r\n\t\t\t\t</TableContainer>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nCallHistoryContent.displayName = \"CallHistoryContent\";\r\n\r\n// ──── Missed Call Row ─────────────────────────────────────────────────────────\r\n\r\nconst MissedCallRow = memo(({ row }: { row: MissedCallDetails }) => {\r\n\tconst theme = useTheme();\r\n\treturn (\r\n\t\t<TableRow hover>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", color: theme.palette.primary.main }}>\r\n\t\t\t\t{row.agentId}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>{row.username}</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>\r\n\t\t\t\t{row.mobileNumber} ({row.callCount})\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", textTransform: \"uppercase\" }}>\r\n\t\t\t\t{row.callType}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell align=\"center\">\r\n\t\t\t\t<Phone sx={{ color: \"#c0392b\", fontSize: 20, cursor: \"pointer\" }} />\r\n\t\t\t</TableCell>\r\n\t\t</TableRow>\r\n\t);\r\n});\r\n\r\nMissedCallRow.displayName = \"MissedCallRow\";\r\n\r\n// ──── Expandable Row ──────────────────────────────────────────────────────────\r\n\r\n/* Coordinates playback so only one recording is open at a time. */\r\nconst activePlayers = new Set<(activeId: string) => void>();\r\nconst notifyPlay = (activeId: string) => {\r\n\tactivePlayers.forEach((fn) => fn(activeId));\r\n};\r\n\r\nfunction ExpandableRow({\r\n\trow,\r\n\tstriped,\r\n\tfetchRecording,\r\n\tonError,\r\n}: {\r\n\trow: CallHistoryItem;\r\n\tstriped: boolean;\r\n\tfetchRecording: (call_uuid: string) => Promise<Blob>;\r\n\tonError: (msg: string) => void;\r\n}) {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [audioURL, setAudioURL] = useState<string | null>(null);\r\n\tconst [loadingAudio, setLoadingAudio] = useState(false);\r\n\r\n\tconst closePlayer = useCallback(() => {\r\n\t\tsetAudioURL((prev) => {\r\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\r\n\t\t\treturn null;\r\n\t\t});\r\n\t}, []);\r\n\r\n\t// Close this player whenever another recording starts playing.\r\n\tuseEffect(() => {\r\n\t\tconst onPlay = (activeId: string) => {\r\n\t\t\tif (activeId !== row.call_uuid) closePlayer();\r\n\t\t};\r\n\t\tactivePlayers.add(onPlay);\r\n\t\treturn () => {\r\n\t\t\tactivePlayers.delete(onPlay);\r\n\t\t};\r\n\t}, [row.call_uuid, closePlayer]);\r\n\r\n\tconst handlePlay = async () => {\r\n\t\tif (!row.recording.available) return;\r\n\t\tnotifyPlay(row.call_uuid);\r\n\t\tsetLoadingAudio(true);\r\n\t\ttry {\r\n\t\t\tconst blob = await fetchRecording(row.call_uuid);\r\n\t\t\tsetAudioURL(URL.createObjectURL(blob));\r\n\t\t} catch {\r\n\t\t\tonError(\"Recording not available\");\r\n\t\t} finally {\r\n\t\t\tsetLoadingAudio(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleToggle = () => setOpen((prev) => !prev);\r\n\r\n\tconst bg = striped ? \"#fafafa\" : \"white\";\r\n\tconst cellSx = { fontSize: \"0.82rem\", backgroundColor: bg };\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<TableRow hover>\r\n\t\t\t\t<TableCell sx={{ ...cellSx, maxWidth: 130 }}>\r\n\t\t\t\t\t<Tooltip title={row.call_uuid} arrow>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tnoWrap\r\n\t\t\t\t\t\t\tsx={{ fontSize: 13, maxWidth: 130, overflow: \"hidden\", textOverflow: \"ellipsis\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{row.call_uuid}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>{row.mobile_no}</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tlabel={row.call_type}\r\n\t\t\t\t\t\tcolor={row.call_type === \"INCOMING\" ? \"success\" : \"primary\"}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{new Date(row.start_time).toLocaleString()}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{row.end_time ? new Date(row.end_time).toLocaleString() : \"—\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.recording.available ? (\r\n\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\tonClick={handlePlay}\r\n\t\t\t\t\t\t\tdisabled={loadingAudio}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{loadingAudio ? <CircularProgress size={18} /> : <PlayArrow />}\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Chip size=\"small\" label=\"No File\" />\r\n\t\t\t\t\t)}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.agent_id ?? \"\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<IconButton onClick={handleToggle} size=\"small\">\r\n\t\t\t\t\t\t{open ? <ExpandLess /> : <KeyboardArrowDown />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\r\n\t\t\t{/* Audio player row */}\r\n\t\t\t{audioURL && (\r\n\t\t\t\t<TableRow>\r\n\t\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t\t<Box p={2}>\r\n\t\t\t\t\t\t\t<audio\r\n\t\t\t\t\t\t\t\tcontrols\r\n\t\t\t\t\t\t\t\tautoPlay\r\n\t\t\t\t\t\t\t\tsrc={audioURL}\r\n\t\t\t\t\t\t\t\tonEnded={closePlayer}\r\n\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</TableCell>\r\n\t\t\t\t</TableRow>\r\n\t\t\t)}\r\n\r\n\t\t\t{/* Details collapse row */}\r\n\t\t\t<TableRow>\r\n\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t<Collapse in={open} unmountOnExit>\r\n\t\t\t\t\t\t<Box p={2} bgcolor=\"#f9fafc\" borderTop=\"1px solid #eee\">\r\n\t\t\t\t\t\t\t{open && <Transcript row={row} />}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Collapse>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\n// ──── Default Export — wraps with SDKProvider for toast context ───────────────\r\n\r\nconst CallHistory: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<CallHistoryContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default CallHistory;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n\tAvatar,\r\n\tBox,\r\n\tCircularProgress,\r\n\tRating,\r\n\tStack,\r\n\tTooltip,\r\n\tTypography,\r\n} from \"@mui/material\";\r\nimport axiosInstance from \"../../../services/axios\";\r\nimport { END_POINT } from \"../../../services/endPoint\";\r\nimport type { CallHistoryItem, TranscriptData, SentimentMetric, ConversationTypeClassification } from \"../../callHistory/types\";\r\n\r\n// ──── Gauge ───────────────────────────────────────────────────────────────────\r\n\r\nconst GAUGE_COLORS = [\"#e74c3c\", \"#e67e22\", \"#f1c40f\", \"#a3d977\", \"#2ecc71\"];\r\n\r\nfunction scoreColor(score: number) {\r\n\tconst idx = Math.max(0, Math.min(4, Math.round(score) - 1));\r\n\treturn GAUGE_COLORS[idx];\r\n}\r\n\r\nfunction GaugeTooltip({ metric }: { metric?: SentimentMetric }) {\r\n\tif (!metric) return <>—</>;\r\n\treturn (\r\n\t\t<Box sx={{ maxWidth: 240 }}>\r\n\t\t\t{typeof metric.Model_Prediction_Confidence_Level === \"number\" && (\r\n\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", fontWeight: 600, mb: 0.5 }}>\r\n\t\t\t\t\tModel Confidence: {metric.Model_Prediction_Confidence_Level}%\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<Typography sx={{ fontSize: \"0.72rem\", lineHeight: 1.4 }}>\r\n\t\t\t\t{metric.Observations ?? \"\"}\r\n\t\t\t</Typography>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction Gauge({ score, label }: { score: number; label: string }) {\r\n\tconst max = 5;\r\n\tconst radius = 32;\r\n\tconst stroke = 7;\r\n\tconst circumference = 2 * Math.PI * radius;\r\n\tconst pct = Math.max(0, Math.min(1, score / max));\r\n\tconst dash = circumference * pct;\r\n\tconst color = scoreColor(score);\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", px: 1 }}>\r\n\t\t\t<Box sx={{ position: \"relative\", width: 80, height: 80 }}>\r\n\t\t\t\t<svg width={80} height={80} viewBox=\"0 0 80 80\">\r\n\t\t\t\t\t<circle cx={40} cy={40} r={radius} fill=\"none\" stroke=\"#eee\" strokeWidth={stroke} />\r\n\t\t\t\t\t<circle\r\n\t\t\t\t\t\tcx={40}\r\n\t\t\t\t\t\tcy={40}\r\n\t\t\t\t\t\tr={radius}\r\n\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\tstroke={color}\r\n\t\t\t\t\t\tstrokeWidth={stroke}\r\n\t\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\t\tstrokeDasharray={`${dash} ${circumference - dash}`}\r\n\t\t\t\t\t\ttransform=\"rotate(-90 40 40)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\t\tinset: 0,\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: \"center\",\r\n\t\t\t\t\t\tfontSize: 18,\r\n\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\tcolor: \"#444\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{score}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Typography\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tmt: 0.5,\r\n\t\t\t\t\tfontSize: \"0.7rem\",\r\n\t\t\t\t\tcolor: \"primary.main\",\r\n\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\ttextAlign: \"center\",\r\n\t\t\t\t\tlineHeight: 1.2,\r\n\t\t\t\t\tmaxWidth: 110,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{label}\r\n\t\t\t</Typography>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Classification Bar ──────────────────────────────────────────────────────\r\n\r\nfunction ClassificationBar({ classification }: { classification?: ConversationTypeClassification }) {\r\n\t// Build segments dynamically from all keys (mirrors CRM's linearProgressBar)\r\n\tconst COLOR_MAP: Record<string, string> = {\r\n\t\tInformational_Queries: \"#5bc0eb\",\r\n\t\tAction_Oriented_Queries: \"#3aa3d0\",\r\n\t\tEscalations_or_Complaints: \"#9b59b6\",\r\n\t};\r\n\tconst segments = Object.entries(classification ?? {})\r\n\t\t.filter(([, v]) => v != null)\r\n\t\t.map(([key, value]) => ({\r\n\t\t\tlabel: key.replaceAll(\"_\", \" \"),\r\n\t\t\tvalue: Number(value) || 0,\r\n\t\t\tcolor: COLOR_MAP[key] ?? \"#7e57c2\",\r\n\t\t}));\r\n\tconst total = segments.reduce((s, seg) => s + seg.value, 0) || 1;\r\n\r\n\treturn (\r\n\t\t<Box>\r\n\t\t\t<Stack direction=\"row\" spacing={2} mb={0.75} sx={{ flexWrap: \"wrap\", rowGap: 0.5 }}>\r\n\t\t\t\t{segments.map((s) => (\r\n\t\t\t\t\t<Typography key={s.label} sx={{ fontSize: \"0.72rem\", color: s.color, fontWeight: 600 }}>\r\n\t\t\t\t\t\t{s.label}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t))}\r\n\t\t\t</Stack>\r\n\t\t\t<Box sx={{ display: \"flex\", width: \"100%\", height: 8, borderRadius: 4, overflow: \"hidden\" }}>\r\n\t\t\t\t{segments.map((s) => (\r\n\t\t\t\t\t<Box key={s.label} sx={{ width: `${(s.value / total) * 100}%`, backgroundColor: s.color }} />\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Section Box ─────────────────────────────────────────────────────────────\r\n\r\nfunction SectionBox({ title, children }: { title: string; children: React.ReactNode }) {\r\n\treturn (\r\n\t\t<Box sx={(t) => ({ border: `1.5px solid ${t.palette.primary.main}`, borderRadius: 1, p: 1, mb: 1.25 })}>\r\n\t\t\t<Typography sx={{ fontSize: \"0.75rem\", fontWeight: 700, mb: 0.5 }}>{title}</Typography>\r\n\t\t\t{children}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Resolve API response shape ──────────────────────────────────────────────\r\n\r\nfunction resolveTranscriptData(raw: any): TranscriptData | null {\r\n\tif (!raw) return null;\r\n\tconst payload = raw.data ?? raw;\r\n\r\n\t// New shape: { Call_Center_Interaction_Hospital_Service: {...}, transcription?: string }\r\n\tif (payload.Call_Center_Interaction_Hospital_Service) {\r\n\t\treturn {\r\n\t\t\ttranscription: payload.transcription,\r\n\t\t\tsentiment_analysis: {\r\n\t\t\t\tCall_Center_Interaction_Hospital_Service: payload.Call_Center_Interaction_Hospital_Service,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\t// Legacy shape: { transcription, sentiment_analysis: { Call_Center_Interaction_Hospital_Service } }\r\n\treturn payload as TranscriptData;\r\n}\r\n\r\n// ──── Main Transcript Component ───────────────────────────────────────────────\r\n\r\ninterface TranscriptProps {\r\n\trow: CallHistoryItem;\r\n}\r\n\r\nconst Transcript: React.FC<TranscriptProps> = ({ row }) => {\r\n\tconst [transcript, setTranscript] = useState<TranscriptData | null>(null);\r\n\tconst [loading, setLoading] = useState(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet cancelled = false;\r\n\t\tsetLoading(true);\r\n\t\taxiosInstance\r\n\t\t\t.get(END_POINT.CALLSAGE_SENTIMENT(row.call_uuid))\r\n\t\t\t.then((res) => {\r\n\t\t\t\tif (!cancelled) setTranscript(resolveTranscriptData(res.data));\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tif (!cancelled) setTranscript(null);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tif (!cancelled) setLoading(false);\r\n\t\t\t});\r\n\t\treturn () => { cancelled = true; };\r\n\t}, [row.call_uuid]);\r\n\r\n\tif (loading) {\r\n\t\treturn (\r\n\t\t\t<Box display=\"flex\" justifyContent=\"center\" py={3}>\r\n\t\t\t\t<CircularProgress size={22} />\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\tconst svc = transcript?.sentiment_analysis?.Call_Center_Interaction_Hospital_Service;\r\n\tconst summary = svc?.Call_Summary;\r\n\tconst breakdown = svc?.Sentiment_Analysis_Breakdown;\r\n\tconst patient = breakdown?.Patient_Sentiment_Analysis ?? {};\r\n\tconst agent = breakdown?.Agent_Sentiment_Analysis ?? {};\r\n\tconst oss = breakdown?.[\"Overall_Sentiment_Score_(OSS)\"];\r\n\tconst classification = svc?.Conversation_Type_Classification;\r\n\tconst positives = svc?.Key_Highlights_Issues_Identified?.Positive_Aspects ?? [];\r\n\tconst improvements = svc?.Key_Highlights_Issues_Identified?.Areas_for_Improvement ?? [];\r\n\tconst lines = (transcript?.transcription ?? \"\").split(\"\\n\").filter((l) => l.trim().length > 0);\r\n\r\n\t// Dynamic aspect iteration — mirrors CRM's processSentimentData approach\r\n\tconst patientAspects = Object.entries(patient).filter(([key]) => key !== \"Overall_Sentiment\");\r\n\tconst agentAspects = Object.entries(agent).filter(([key]) => key !== \"Overall_Agent_Performance\");\r\n\r\n\tconst patientAvg = patient[\"Overall_Sentiment\"]?.Sentiment_Score\r\n\t\t?? (patientAspects.reduce((sum, [, m]) => sum + (m?.Sentiment_Score ?? 0), 0) / (patientAspects.length || 1));\r\n\tconst agentAvg = agent[\"Overall_Agent_Performance\"]?.Sentiment_Score\r\n\t\t?? (agentAspects.reduce((sum, [, m]) => sum + (m?.Sentiment_Score ?? 0), 0) / (agentAspects.length || 1));\r\n\tconst overall = oss?.Sentiment_Score ?? (patientAvg + agentAvg) / 2;\r\n\r\n\tif (!svc && lines.length === 0) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<Typography fontWeight={600} fontSize=\"0.85rem\" mb={0.5}>\r\n\t\t\t\t\tCall Details\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\tCall UID: {row.call_uuid}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\tAgent: {row.agent_id ?? \"Unassigned\"}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\" color=\"#999\" mt={1}>\r\n\t\t\t\t\tNo transcript available for this call.\r\n\t\t\t\t</Typography>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", md: \"1fr 1fr\" }, gap: 1.5 }}>\r\n\t\t\t{/* LEFT — Summary + Transcript (transcript hidden when not available) */}\r\n\t\t\t<Box>\r\n\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\", mb: 1.25 }}>\r\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={0.5}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.85rem\", color: \"primary.main\" }}>\r\n\t\t\t\t\t\t\tCall Summary\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"#555\" }}>Overall Satisfaction:</Typography>\r\n\t\t\t\t\t\t\t<Rating size=\"small\" value={overall} precision={0.5} readOnly />\r\n\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t</Stack>\r\n\t\t\t\t\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#444\", lineHeight: 1.45 }}>\r\n\t\t\t\t\t\t{summary ?? \"-\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{lines.length > 0 ? (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.85rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tTranscript\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 360, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t{lines.map((line, idx) => {\r\n\t\t\t\t\t\t\t\tconst isPatient = line.trim().toLowerCase().startsWith(\"patient\");\r\n\t\t\t\t\t\t\t\tconst text = line.replace(/^\\s*(Patient|Agent)\\s*:\\s*/i, \"\");\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tkey={idx}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\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\tjustifyContent: isPatient ? \"flex-end\" : \"flex-start\",\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\tmb: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\tgap: 0.75,\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{!isPatient && <Avatar sx={{ width: 22, height: 22, fontSize: 12 }} />}\r\n\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\tsx={(t) => ({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: \"70%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1.25,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: isPatient ? \"8px 8px 0 8px\" : \"8px 8px 8px 0\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isPatient ? t.palette.primary.main : \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: isPatient ? t.palette.common.white : \"#222\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: isPatient ? \"none\" : \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"0.8rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\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{text}\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t{isPatient && <Avatar sx={{ width: 22, height: 22, fontSize: 12 }} />}\r\n\t\t\t\t\t\t\t\t\t</Box>\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</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tKey Highlights & Issues Identified\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 180, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#2ecc71\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t✅ Positive Aspects:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{positives.length > 0 ?\r\n\t\t\t\t\t\t\t\tpositives.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#e67e22\", mt: 1, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t⚠️ Areas of Improvements:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{improvements.length > 0 ?\r\n\t\t\t\t\t\t\t\timprovements.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* RIGHT — Sentiment Analysis + Key Highlights (highlights hidden when moved to left) */}\r\n\t\t\t<Box>\r\n\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\", mb: lines.length > 0 ? 1.25 : 0 }}>\r\n\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\tSentiment Analysis\r\n\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 1, mb: 1 }}>\r\n\t\t\t\t\t\t<SectionBox title=\"Patient Sentiment\">\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" justifyContent=\"space-around\" flexWrap=\"wrap\" mb={0.5}>\r\n\t\t\t\t\t\t\t\t{patientAspects.map(([key, metric]) => (\r\n\t\t\t\t\t\t\t\t\t<Tooltip key={key} title={<GaugeTooltip metric={metric} />} arrow>\r\n\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t<Gauge\r\n\t\t\t\t\t\t\t\t\t\t\t\tscore={metric?.Sentiment_Score ?? 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={key.replaceAll(\"_\", \" \")}\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</span>\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</Stack>\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.7rem\", fontWeight: 600 }}>Patient Sentiment:</Typography>\r\n\t\t\t\t\t\t\t\t<Rating size=\"small\" value={patientAvg} precision={0.5} readOnly />\r\n\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t</SectionBox>\r\n\r\n\t\t\t\t\t\t<SectionBox title=\"Agent Performance\">\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" justifyContent=\"space-around\" flexWrap=\"wrap\" mb={0.5}>\r\n\t\t\t\t\t\t\t\t{agentAspects.map(([key, metric]) => (\r\n\t\t\t\t\t\t\t\t\t<Tooltip key={key} title={<GaugeTooltip metric={metric} />} arrow>\r\n\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t<Gauge\r\n\t\t\t\t\t\t\t\t\t\t\t\tscore={metric?.Sentiment_Score ?? 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={key.replaceAll(\"_\", \" \")}\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</span>\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</Stack>\r\n\t\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.7rem\", fontWeight: 600 }}>Agent Performance:</Typography>\r\n\t\t\t\t\t\t\t\t<Rating size=\"small\" value={agentAvg} precision={0.5} readOnly />\r\n\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t</SectionBox>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<SectionBox title=\"Conversation Classification\">\r\n\t\t\t\t\t\t<ClassificationBar classification={classification} />\r\n\t\t\t\t\t</SectionBox>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{lines.length > 0 && (\r\n\t\t\t\t\t<Box sx={{ p: 1.25, border: \"1px solid #e0e0e0\", borderRadius: 1, backgroundColor: \"#fff\" }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.9rem\", color: \"primary.main\", mb: 1 }}>\r\n\t\t\t\t\t\t\tKey Highlights & Issues Identified\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t<Box sx={{ maxHeight: 180, overflowY: \"auto\", pr: 0.5 }}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#2ecc71\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t✅ Positive Aspects:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{positives.length > 0 ?\r\n\t\t\t\t\t\t\t\tpositives.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", fontWeight: 700, color: \"#e67e22\", mt: 1, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t⚠️ Areas of Improvements:\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t{improvements.length > 0 ?\r\n\t\t\t\t\t\t\t\timprovements.map((p, i) => (\r\n\t\t\t\t\t\t\t\t\t<Typography key={i} sx={{ fontSize: \"0.78rem\", color: \"#333\", pl: 1.5, mb: 0.25 }}>\r\n\t\t\t\t\t\t\t\t\t\t• {p}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t:\t<Typography sx={{ fontSize: \"0.78rem\", color: \"#999\", pl: 1.5 }}>—</Typography>}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default Transcript;\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');","import { useState, useCallback } from \"react\";\r\nimport axiosInstance, { deepFindArray } from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { CallHistoryItem, MissedCallDetails, TranscriptData } from \"./types\";\r\n\r\nconst MOCK_TRANSCRIPT: TranscriptData = {\r\n\ttranscription: [\r\n\t\t\"Agent: Welcome, please wait while your call is being transferred.\",\r\n\t\t\"Patient: Welcome, please wait while your call is being connected.\",\r\n\t\t\"Agent: Please wait while your call is connected.\",\r\n\t\t\"Agent: I will show you how you can also book new appointments if you need an appointment.\",\r\n\t\t\"Agent: And you can select your specialty.\",\r\n\t\t\"Patient: I am not getting it.\",\r\n\t\t\"Patient: Yes, I am speaking.\",\r\n\t\t\"Patient: I don't know what the reason is.\",\r\n\t\t\"Patient: Yes.\",\r\n\t\t\"Patient: I will do it according to the plan.\",\r\n\t\t\"Patient: I am not getting any information about that.\",\r\n\t\t\"Patient: Yeah, so I want to see the result.\",\r\n\t\t\"Patient: I am not doing it now.\",\r\n\t\t\"Agent: So we also have a new point.\",\r\n\t\t\"Agent: We can include that.\",\r\n\t\t\"Agent: So, um, these are the entities of the bank.\",\r\n\t\t\"Agent: If you have any questions, I can answer them for you.\",\r\n\t\t\"Patient: How much is it?\",\r\n\t\t\"Patient: No, I don't want to do it.\",\r\n\t\t\"Patient: I just got some calling.\",\r\n\t\t\"Patient: I will call now.\",\r\n\t].join(\"\\n\"),\r\n\tsentiment_analysis: {\r\n\t\tCall_Center_Interaction_Hospital_Service: {\r\n\t\t\tCall_Summary:\r\n\t\t\t\t\"The conversation involved a patient attempting to get information regarding booking an appointment and the status of their results. The agent provided some guidance but the patient expressed confusion and dissatisfaction with the information provided, leading to frustration.\",\r\n\t\t\tSentiment_Analysis_Breakdown: {\r\n\t\t\t\tPatient_Sentiment_Analysis: {\r\n\t\t\t\t\t\"Resolution_Confidence_Index_(RCI)\": {\r\n\t\t\t\t\t\tSentiment_Score: 1,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient expressed confusion and dissatisfaction, stating 'I am not getting any information about that' and 'I am not doing it now', indicating a lack of clarity and resolution.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 85,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"Tone_And_Emotional_Analysis_(TEA)\": {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient displayed frustration with statements like 'I don't know what the reason is' and 'I am not getting it', indicating a high level of dissatisfaction throughout the call.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 80,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tOverall_Sentiment: {\r\n\t\t\t\t\t\tSentiment_Score: 1.5,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The patient showed significant frustration and confusion, leading to a low overall sentiment.\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tAgent_Sentiment_Analysis: {\r\n\t\t\t\t\tEmpathy_Score: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent attempted to provide information but lacked engagement and empathy, as evidenced by the unclear responses and minimal reassurance offered to the patient.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 75,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tConfidence_Score: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent's responses were somewhat unclear and lacked confidence, particularly when addressing the patient's inquiries, leading to a perception of hesitation.\",\r\n\t\t\t\t\t\tModel_Prediction_Confidence_Level: 70,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tOverall_Agent_Performance: {\r\n\t\t\t\t\t\tSentiment_Score: 2,\r\n\t\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\t\"The agent's performance was below expectations, lacking both empathy and clarity.\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t\"Overall_Sentiment_Score_(OSS)\": {\r\n\t\t\t\t\tSentiment_Score: 1.7,\r\n\t\t\t\t\tObservations:\r\n\t\t\t\t\t\t\"The overall conversation reflected a low satisfaction level from the patient, compounded by the agent's lack of clarity and engagement.\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tConversation_Type_Classification: {\r\n\t\t\t\tInformational_Queries: \"40%\",\r\n\t\t\t\tAction_Oriented_Queries: \"40%\",\r\n\t\t\t\tEscalations_or_Complaints: \"20%\",\r\n\t\t\t},\r\n\t\t\tKey_Highlights_Issues_Identified: {\r\n\t\t\t\tPositive_Aspects: [\r\n\t\t\t\t\t\"The agent attempted to provide information about booking appointments.\",\r\n\t\t\t\t],\r\n\t\t\t\tAreas_for_Improvement: [\r\n\t\t\t\t\t\"The agent needs to improve clarity in communication and show more empathy towards patient concerns.\",\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n\r\nexport interface CallHistoryParams {\r\n\tpage?: number;\r\n\tpageSize?: number;\r\n\tsearch?: string;\r\n\tcall_type?: \"INCOMING\" | \"OUTGOING\";\r\n}\r\n\r\nexport function useCallHistory() {\r\n\tconst [calls, setCalls] = useState<CallHistoryItem[]>([]);\r\n\t// Real total (server returns { ..., total }).\r\n\tconst [callsTotal, setCallsTotal] = useState(-1);\r\n\tconst [missedCalls, setMissedCalls] = useState<MissedCallDetails[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchCallHistory = useCallback(async (params?: CallHistoryParams) => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst page = params?.page ?? 1;\r\n\t\t\tconst pageSize = params?.pageSize ?? 10;\r\n\t\t\t// POST with query params: page (1-indexed), pageSize, search, call_type.\r\n\t\t\tconst query: Record<string, unknown> = { page, pageSize };\r\n\t\t\tif (params?.search) query.search = params.search;\r\n\t\t\tif (params?.call_type) query.call_type = params.call_type;\r\n\t\t\tconst res = await axiosInstance.post(END_POINT.CALLS_HISTORY, {}, { params: query });\r\n\t\t\t// Find the records array wherever it sits (flat array, { records }, { data: [...] }, ...).\r\n\t\t\tconst records = deepFindArray<CallHistoryItem>(res.data, [\"records\"]);\r\n\t\t\tconst d: any = res.data;\r\n\t\t\tconst total =\r\n\t\t\t\ttypeof d?.total === \"number\" ? d.total\r\n\t\t\t\t: typeof d?.count === \"number\" ? d.count\r\n\t\t\t\t: typeof d?.totalCount === \"number\" ? d.totalCount\r\n\t\t\t\t: -1;\r\n\t\t\tsetCalls(records);\r\n\t\t\tsetCallsTotal(total >= 0 ? total : records.length < pageSize ? (page - 1) * pageSize + records.length : -1);\r\n\t\t} catch {\r\n\t\t\tsetCalls([]);\r\n\t\t\tsetCallsTotal(-1);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchMissedCalls = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.MISSED_CALLS);\r\n\t\t\tsetMissedCalls(Array.isArray(res.data?.data) ? res.data.data : []);\r\n\t\t} catch {\r\n\t\t\tsetMissedCalls([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchRecording = useCallback(async (call_uuid: string): Promise<Blob> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.RECORDING_BY_CALL(call_uuid), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst fetchTranscript = useCallback(async (_call_uuid: string): Promise<TranscriptData | null> => {\r\n\t\tawait new Promise((r) => setTimeout(r, 400));\r\n\t\treturn MOCK_TRANSCRIPT;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tcalls,\r\n\t\tcallsTotal,\r\n\t\tmissedCalls,\r\n\t\tloading,\r\n\t\tfetchCallHistory,\r\n\t\tfetchMissedCalls,\r\n\t\tfetchRecording,\r\n\t\tfetchTranscript,\r\n\t};\r\n}\r\n"],"mappings":"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","names":["useCallback","useEffect","useState","_a","useState","useState","Fragment","jsx","jsxs","useState","useEffect","useCallback"]}
@@ -1,46 +1,56 @@
1
+ import * as __ext_react from "react";
2
+ import * as __ext_react_dom from "react-dom";
3
+ import * as __ext_react_jsx from "react/jsx-runtime";
4
+ var __cjsExternals = { "react": __ext_react, "react-dom": __ext_react_dom, "react/jsx-runtime": __ext_react_jsx };
5
+ var require = function (id) {
6
+ var mod = __cjsExternals[id];
7
+ if (mod) return mod.default || mod;
8
+ throw new Error('Dynamic require of "' + id + '" is not supported');
9
+ };
10
+
1
11
  import {
2
12
  Pause_default,
3
13
  useGetCallerData
4
- } from "./chunk-H7GRWLYI.mjs";
14
+ } from "./chunk-G6KRLGGC.mjs";
5
15
  import {
6
16
  SDKPageHeader
7
- } from "./chunk-DNTGBNZD.mjs";
17
+ } from "./chunk-NDZDJWXY.mjs";
8
18
  import {
9
19
  Phone_default
10
- } from "./chunk-6WLG2PXL.mjs";
20
+ } from "./chunk-GFVR3HLK.mjs";
11
21
  import {
12
22
  getRecordingByCall
13
- } from "./chunk-DJP744FF.mjs";
23
+ } from "./chunk-S2SMCH2C.mjs";
14
24
  import {
15
25
  Download_default
16
- } from "./chunk-FRKV2U3I.mjs";
26
+ } from "./chunk-635IIVZE.mjs";
17
27
  import {
18
28
  SDKPermissionGuard,
19
29
  useSDKPermissions
20
- } from "./chunk-3J7KQNEU.mjs";
30
+ } from "./chunk-TCYBXDAP.mjs";
21
31
  import {
22
32
  PlayArrow_default
23
- } from "./chunk-7LE2VTAI.mjs";
33
+ } from "./chunk-677RFPP5.mjs";
24
34
  import {
25
35
  AdapterDayjs,
26
36
  DateRangePicker,
27
37
  LocalizationProvider
28
- } from "./chunk-E6KYWWAI.mjs";
38
+ } from "./chunk-GTI2ZVQX.mjs";
29
39
  import {
30
40
  Refresh_default,
31
41
  Search_default
32
- } from "./chunk-YAQYTUTX.mjs";
42
+ } from "./chunk-HAOFUADN.mjs";
33
43
  import {
34
44
  SDKProvider,
35
45
  useToast
36
- } from "./chunk-VVDJLUYT.mjs";
46
+ } from "./chunk-M7FJYZF6.mjs";
37
47
  import {
38
48
  END_POINT,
39
49
  SDK_PERMISSIONS,
40
50
  axios_default,
41
51
  deepFindArray,
42
52
  deepFindTotal
43
- } from "./chunk-LHE4QGJJ.mjs";
53
+ } from "./chunk-KSVNZKRD.mjs";
44
54
  import {
45
55
  Box_default,
46
56
  Button_default,
@@ -72,7 +82,7 @@ import {
72
82
  alpha,
73
83
  createSvgIcon,
74
84
  useTheme
75
- } from "./chunk-Q6G3MPS7.mjs";
85
+ } from "./chunk-ERSNXW5X.mjs";
76
86
 
77
87
  // call-control-sdk/lib/pages/campaigns/index.tsx
78
88
  import { memo, useCallback as useCallback2, useEffect, useRef, useState as useState2 } from "react";
@@ -3181,4 +3191,4 @@ var campaigns_default = Campaigns;
3181
3191
  export {
3182
3192
  campaigns_default as default
3183
3193
  };
3184
- //# sourceMappingURL=campaigns-5PVHXBSD.mjs.map
3194
+ //# sourceMappingURL=campaigns-N3UNUGQP.mjs.map