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.
- package/dist/agentDetailReport-F44HMQ5O.mjs +27 -0
- package/dist/agentDetailReport-F44HMQ5O.mjs.map +1 -0
- package/dist/{agentPerformanceReport-JZK5DN5E.mjs → agentPerformanceReport-TTOMNENK.mjs} +25 -15
- package/dist/{agentPerformanceReport-JZK5DN5E.mjs.map → agentPerformanceReport-TTOMNENK.mjs.map} +1 -1
- package/dist/auditReport-QTMAKVTN.mjs +26 -0
- package/dist/auditReport-QTMAKVTN.mjs.map +1 -0
- package/dist/{callHistory-T3M76D4B.mjs → callHistory-4J4J2XHA.mjs} +20 -10
- package/dist/{callHistory-T3M76D4B.mjs.map → callHistory-4J4J2XHA.mjs.map} +1 -1
- package/dist/{campaigns-5PVHXBSD.mjs → campaigns-N3UNUGQP.mjs} +23 -13
- package/dist/{campaigns-5PVHXBSD.mjs.map → campaigns-N3UNUGQP.mjs.map} +1 -1
- package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs → caroQualityAuditDashboard-TNS4L2NR.mjs} +12 -2
- package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs.map → caroQualityAuditDashboard-TNS4L2NR.mjs.map} +1 -1
- package/dist/{caroVoiceAI-GGJCVUIQ.mjs → caroVoiceAI-OUTAAIFE.mjs} +12 -2
- package/dist/{caroVoiceAI-GGJCVUIQ.mjs.map → caroVoiceAI-OUTAAIFE.mjs.map} +1 -1
- package/dist/{cdrReport-ZMDHSZUW.mjs → cdrReport-Z35OLYUL.mjs} +26 -16
- package/dist/{cdrReport-ZMDHSZUW.mjs.map → cdrReport-Z35OLYUL.mjs.map} +1 -1
- package/dist/chunk-3PNP6G5P.mjs +92 -0
- package/dist/chunk-3PNP6G5P.mjs.map +1 -0
- package/dist/{chunk-DF5EFKXC.mjs → chunk-45MLTWV7.mjs} +12 -2
- package/dist/{chunk-DF5EFKXC.mjs.map → chunk-45MLTWV7.mjs.map} +1 -1
- package/dist/chunk-635IIVZE.mjs +24 -0
- package/dist/{chunk-FRKV2U3I.mjs.map → chunk-635IIVZE.mjs.map} +1 -1
- package/dist/chunk-677RFPP5.mjs +24 -0
- package/dist/{chunk-7LE2VTAI.mjs.map → chunk-677RFPP5.mjs.map} +1 -1
- package/dist/{chunk-Q6G3MPS7.mjs → chunk-ERSNXW5X.mjs} +11 -1
- package/dist/{chunk-Q6G3MPS7.mjs.map → chunk-ERSNXW5X.mjs.map} +1 -1
- package/dist/{chunk-H7GRWLYI.mjs → chunk-G6KRLGGC.mjs} +13 -3
- package/dist/{chunk-H7GRWLYI.mjs.map → chunk-G6KRLGGC.mjs.map} +1 -1
- package/dist/chunk-GFVR3HLK.mjs +24 -0
- package/dist/{chunk-6WLG2PXL.mjs.map → chunk-GFVR3HLK.mjs.map} +1 -1
- package/dist/{chunk-E6KYWWAI.mjs → chunk-GTI2ZVQX.mjs} +12 -2
- package/dist/{chunk-E6KYWWAI.mjs.map → chunk-GTI2ZVQX.mjs.map} +1 -1
- package/dist/chunk-H22TUCN3.mjs +24 -0
- package/dist/{chunk-AOJRUZTO.mjs.map → chunk-H22TUCN3.mjs.map} +1 -1
- package/dist/{chunk-YAQYTUTX.mjs → chunk-HAOFUADN.mjs} +12 -2
- package/dist/{chunk-YAQYTUTX.mjs.map → chunk-HAOFUADN.mjs.map} +1 -1
- package/dist/{chunk-33QNSXP7.mjs → chunk-JHC7OUQG.mjs} +21 -11
- package/dist/chunk-JHC7OUQG.mjs.map +1 -0
- package/dist/chunk-KSVNZKRD.mjs +10930 -0
- package/dist/chunk-KSVNZKRD.mjs.map +1 -0
- package/dist/{chunk-VVDJLUYT.mjs → chunk-M7FJYZF6.mjs} +12 -2
- package/dist/{chunk-VVDJLUYT.mjs.map → chunk-M7FJYZF6.mjs.map} +1 -1
- package/dist/{chunk-DNTGBNZD.mjs → chunk-NDZDJWXY.mjs} +13 -3
- package/dist/{chunk-DNTGBNZD.mjs.map → chunk-NDZDJWXY.mjs.map} +1 -1
- package/dist/chunk-S2SMCH2C.mjs +71 -0
- package/dist/chunk-S2SMCH2C.mjs.map +1 -0
- package/dist/{chunk-IDZWA6HG.mjs → chunk-S34CQVTF.mjs} +14 -4
- package/dist/{chunk-IDZWA6HG.mjs.map → chunk-S34CQVTF.mjs.map} +1 -1
- package/dist/{chunk-2M3YEXYA.mjs → chunk-SUS5RUCA.mjs} +17 -7
- package/dist/{chunk-2M3YEXYA.mjs.map → chunk-SUS5RUCA.mjs.map} +1 -1
- package/dist/{chunk-3J7KQNEU.mjs → chunk-TCYBXDAP.mjs} +13 -3
- package/dist/{chunk-3J7KQNEU.mjs.map → chunk-TCYBXDAP.mjs.map} +1 -1
- package/dist/chunk-VII5JNA6.mjs +24 -0
- package/dist/{chunk-WTBVFN4H.mjs.map → chunk-VII5JNA6.mjs.map} +1 -1
- package/dist/chunk-W3ECDLUB.mjs +24 -0
- package/dist/{chunk-OHJIW3I3.mjs.map → chunk-W3ECDLUB.mjs.map} +1 -1
- package/dist/{chunk-VBIDPX5Z.mjs → chunk-Y4PAUTZ4.mjs} +13 -3
- package/dist/{chunk-VBIDPX5Z.mjs.map → chunk-Y4PAUTZ4.mjs.map} +1 -1
- package/dist/{chunk-NAZO4HKB.mjs → chunk-ZSRD3ZXF.mjs} +12 -2
- package/dist/{chunk-NAZO4HKB.mjs.map → chunk-ZSRD3ZXF.mjs.map} +1 -1
- package/dist/index.mjs +33 -23
- package/dist/index.mjs.map +1 -1
- package/dist/{liveStatus-YSBYSVOO.mjs → liveStatus-PRDEL7CK.mjs} +16 -6
- package/dist/{liveStatus-YSBYSVOO.mjs.map → liveStatus-PRDEL7CK.mjs.map} +1 -1
- package/dist/{loginReport-YIVBJVJD.mjs → loginReport-47QNACQU.mjs} +22 -12
- package/dist/{loginReport-YIVBJVJD.mjs.map → loginReport-47QNACQU.mjs.map} +1 -1
- package/dist/{managementDashboard-7EMQC2UA.mjs → managementDashboard-SZFYULKA.mjs} +22 -12
- package/dist/{managementDashboard-7EMQC2UA.mjs.map → managementDashboard-SZFYULKA.mjs.map} +1 -1
- package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs → qualityAuditDashboard-FHRGB77R.mjs} +12 -2
- package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs.map → qualityAuditDashboard-FHRGB77R.mjs.map} +1 -1
- package/dist-react/agentDetailReport-PDKQKJNL.mjs +23 -0
- package/dist-react/agentPerformanceReport-MU2FASNN.mjs +544 -0
- package/dist-react/agentPerformanceReport-MU2FASNN.mjs.map +1 -0
- package/dist-react/auditReport-WH2KDNYT.mjs +25 -0
- package/{dist/auditReport-6ZUJ4UFO.mjs.map → dist-react/auditReport-WH2KDNYT.mjs.map} +1 -1
- package/dist-react/callHistory-HXXRYUIV.mjs +832 -0
- package/dist-react/callHistory-HXXRYUIV.mjs.map +1 -0
- package/dist-react/campaigns-J7KIAATE.mjs +3139 -0
- package/dist-react/campaigns-J7KIAATE.mjs.map +1 -0
- package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs +76 -0
- package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs.map +1 -0
- package/dist-react/caroVoiceAI-XGDUETXI.mjs +31 -0
- package/dist-react/caroVoiceAI-XGDUETXI.mjs.map +1 -0
- package/dist-react/cdrReport-SX2FZAO6.mjs +858 -0
- package/dist-react/cdrReport-SX2FZAO6.mjs.map +1 -0
- package/dist-react/chunk-4YF4IDV6.mjs +72 -0
- package/dist-react/chunk-4YF4IDV6.mjs.map +1 -0
- package/dist-react/chunk-ADM2JJCP.mjs +190 -0
- package/dist-react/chunk-ADM2JJCP.mjs.map +1 -0
- package/dist-react/chunk-EN7HM2MD.mjs +688 -0
- package/dist-react/chunk-EN7HM2MD.mjs.map +1 -0
- package/{dist/chunk-LHE4QGJJ.mjs → dist-react/chunk-F7G2XFRU.mjs} +12 -2
- package/{dist/chunk-LHE4QGJJ.mjs.map → dist-react/chunk-F7G2XFRU.mjs.map} +1 -1
- package/{dist/chunk-DJP744FF.mjs → dist-react/chunk-GUMGXVIT.mjs} +12 -2
- package/{dist/chunk-DJP744FF.mjs.map → dist-react/chunk-GUMGXVIT.mjs.map} +1 -1
- package/dist-react/chunk-KRXHK4AU.mjs +127 -0
- package/dist-react/chunk-KRXHK4AU.mjs.map +1 -0
- package/{dist/chunk-U2UDKXMB.mjs → dist-react/chunk-LWDAC6QU.mjs} +12 -2
- package/{dist/chunk-U2UDKXMB.mjs.map → dist-react/chunk-LWDAC6QU.mjs.map} +1 -1
- package/dist-react/chunk-LX6I32Y4.mjs +106 -0
- package/dist-react/chunk-LX6I32Y4.mjs.map +1 -0
- package/dist-react/chunk-MCD5FQNY.mjs +428 -0
- package/dist-react/chunk-MCD5FQNY.mjs.map +1 -0
- package/dist-react/chunk-MD472UKG.mjs +757 -0
- package/{dist/chunk-33QNSXP7.mjs.map → dist-react/chunk-MD472UKG.mjs.map} +1 -1
- package/dist-react/chunk-ORNNWQI6.mjs +67 -0
- package/dist-react/chunk-ORNNWQI6.mjs.map +1 -0
- package/dist-react/chunk-S4J35V4B.mjs +126 -0
- package/dist-react/chunk-S4J35V4B.mjs.map +1 -0
- package/dist-react/chunk-T53WMN5A.mjs +126 -0
- package/dist-react/chunk-T53WMN5A.mjs.map +1 -0
- package/dist-react/chunk-UTSRABCL.mjs +96 -0
- package/dist-react/chunk-UTSRABCL.mjs.map +1 -0
- package/dist-react/incoming-4WP3FJI4.mp3 +0 -0
- package/dist-react/incoming.mp3 +0 -0
- package/dist-react/index.d.mts +2476 -0
- package/dist-react/index.d.ts +2477 -0
- package/dist-react/index.js +26713 -0
- package/dist-react/index.js.map +1 -0
- package/dist-react/index.mjs +4675 -0
- package/dist-react/index.mjs.map +1 -0
- package/dist-react/liveStatus-IDZ7CPYK.mjs +1087 -0
- package/dist-react/liveStatus-IDZ7CPYK.mjs.map +1 -0
- package/dist-react/loginReport-F47GUU53.mjs +990 -0
- package/dist-react/loginReport-F47GUU53.mjs.map +1 -0
- package/dist-react/managementDashboard-GC5E7NEL.mjs +540 -0
- package/dist-react/managementDashboard-GC5E7NEL.mjs.map +1 -0
- package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs +76 -0
- package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs.map +1 -0
- package/package.json +17 -2
- package/dist/agentDetailReport-ZR7U2LLB.mjs +0 -17
- package/dist/auditReport-6ZUJ4UFO.mjs +0 -16
- package/dist/chunk-6WLG2PXL.mjs +0 -14
- package/dist/chunk-7LE2VTAI.mjs +0 -14
- package/dist/chunk-AOJRUZTO.mjs +0 -14
- package/dist/chunk-FRKV2U3I.mjs +0 -14
- package/dist/chunk-OHJIW3I3.mjs +0 -14
- package/dist/chunk-WTBVFN4H.mjs +0 -14
- /package/{dist/agentDetailReport-ZR7U2LLB.mjs.map → dist-react/agentDetailReport-PDKQKJNL.mjs.map} +0 -0
|
@@ -1,7 +1,17 @@
|
|
|
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
|
Alert_default,
|
|
3
13
|
Snackbar_default
|
|
4
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ERSNXW5X.mjs";
|
|
5
15
|
|
|
6
16
|
// call-control-sdk/lib/services/toastMessage.tsx
|
|
7
17
|
import { createContext, useContext, useState } from "react";
|
|
@@ -62,4 +72,4 @@ export {
|
|
|
62
72
|
useToast,
|
|
63
73
|
SDKProvider
|
|
64
74
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-M7FJYZF6.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../call-control-sdk/lib/services/toastMessage.tsx","../call-control-sdk/lib/components/SDKProvider.tsx"],"sourcesContent":["import { createContext, useContext, useState, ReactNode } from \"react\";\r\nimport { Snackbar, Alert, AlertColor } from \"@mui/material\";\r\n\r\ntype ToastContextType = {\r\n\tshowToast: (message: string, severity?: AlertColor) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nconst noopToast: ToastContextType = {\r\n\tshowToast: (message, severity) => {\r\n\t\tconsole.warn(`[Toast outside provider] ${severity ?? \"info\"}: ${message}`);\r\n\t},\r\n};\r\n\r\nexport const useToast = () => {\r\n\tconst ctx = useContext(ToastContext);\r\n\treturn ctx ?? noopToast;\r\n};\r\n\r\nexport const ToastProvider = ({ children }: { children: ReactNode }) => {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [message, setMessage] = useState(\"\");\r\n\tconst [severity, setSeverity] = useState<AlertColor>(\"info\");\r\n\r\n\tconst showToast = (msg: string, sev: AlertColor = \"info\") => {\r\n\t\tsetMessage(msg);\r\n\t\tsetSeverity(sev);\r\n\t\tsetOpen(true);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ToastContext.Provider value={{ showToast }}>\r\n\t\t\t{children}\r\n\t\t\t<Snackbar\r\n\t\t\t\topen={open}\r\n\t\t\t\tcolor={severity}\r\n\t\t\t\tautoHideDuration={3000}\r\n\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\tanchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n\t\t\t>\r\n\t\t\t\t<Alert\r\n\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\tseverity={severity}\r\n\t\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\t\tsx={{ width: \"100%\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{message}\r\n\t\t\t\t</Alert>\r\n\t\t\t</Snackbar>\r\n\t\t</ToastContext.Provider>\r\n\t);\r\n};\r\n","import { memo } from \"react\";\r\nimport { ToastProvider } from \"../services/toastMessage\";\r\nimport React from \"react\";\r\nimport { SDKProviderProps } from \"../../types\";\r\n\r\nexport const SDKProvider = memo<SDKProviderProps>(({ children }) => {\r\n\treturn <ToastProvider>{children}</ToastProvider>;\r\n});\r\n\r\nSDKProvider.displayName = \"SDKProvider\";\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../call-control-sdk/lib/services/toastMessage.tsx","../call-control-sdk/lib/components/SDKProvider.tsx"],"sourcesContent":["import { createContext, useContext, useState, ReactNode } from \"react\";\r\nimport { Snackbar, Alert, AlertColor } from \"@mui/material\";\r\n\r\ntype ToastContextType = {\r\n\tshowToast: (message: string, severity?: AlertColor) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nconst noopToast: ToastContextType = {\r\n\tshowToast: (message, severity) => {\r\n\t\tconsole.warn(`[Toast outside provider] ${severity ?? \"info\"}: ${message}`);\r\n\t},\r\n};\r\n\r\nexport const useToast = () => {\r\n\tconst ctx = useContext(ToastContext);\r\n\treturn ctx ?? noopToast;\r\n};\r\n\r\nexport const ToastProvider = ({ children }: { children: ReactNode }) => {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [message, setMessage] = useState(\"\");\r\n\tconst [severity, setSeverity] = useState<AlertColor>(\"info\");\r\n\r\n\tconst showToast = (msg: string, sev: AlertColor = \"info\") => {\r\n\t\tsetMessage(msg);\r\n\t\tsetSeverity(sev);\r\n\t\tsetOpen(true);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ToastContext.Provider value={{ showToast }}>\r\n\t\t\t{children}\r\n\t\t\t<Snackbar\r\n\t\t\t\topen={open}\r\n\t\t\t\tcolor={severity}\r\n\t\t\t\tautoHideDuration={3000}\r\n\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\tanchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n\t\t\t>\r\n\t\t\t\t<Alert\r\n\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\tseverity={severity}\r\n\t\t\t\t\tonClose={() => setOpen(false)}\r\n\t\t\t\t\tsx={{ width: \"100%\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{message}\r\n\t\t\t\t</Alert>\r\n\t\t\t</Snackbar>\r\n\t\t</ToastContext.Provider>\r\n\t);\r\n};\r\n","import { memo } from \"react\";\r\nimport { ToastProvider } from \"../services/toastMessage\";\r\nimport React from \"react\";\r\nimport { SDKProviderProps } from \"../../types\";\r\n\r\nexport const SDKProvider = memo<SDKProviderProps>(({ children }) => {\r\n\treturn <ToastProvider>{children}</ToastProvider>;\r\n});\r\n\r\nSDKProvider.displayName = \"SDKProvider\";\r\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS,eAAe,YAAY,gBAA2B;AAgC7D,SASE,KATF;AAzBF,IAAM,eAAe,cAA4C,MAAS;AAE1E,IAAM,YAA8B;AAAA,EACnC,WAAW,CAAC,SAAS,aAAa;AACjC,YAAQ,KAAK,4BAA4B,8BAAY,MAAM,KAAK,OAAO,EAAE;AAAA,EAC1E;AACD;AAEO,IAAM,WAAW,MAAM;AAC7B,QAAM,MAAM,WAAW,YAAY;AACnC,SAAO,oBAAO;AACf;AAEO,IAAM,gBAAgB,CAAC,EAAE,SAAS,MAA+B;AACvE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,EAAE;AACzC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAqB,MAAM;AAE3D,QAAM,YAAY,CAAC,KAAa,MAAkB,WAAW;AAC5D,eAAW,GAAG;AACd,gBAAY,GAAG;AACf,YAAQ,IAAI;AAAA,EACb;AAEA,SACC,qBAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,UAAU,GACxC;AAAA;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,SAAS,MAAM,QAAQ,KAAK;AAAA,QAC5B,cAAc,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,QAErD;AAAA,UAAC;AAAA;AAAA,YACA,SAAQ;AAAA,YACR;AAAA,YACA,SAAS,MAAM,QAAQ,KAAK;AAAA,YAC5B,IAAI,EAAE,OAAO,OAAO;AAAA,YAEnB;AAAA;AAAA,QACF;AAAA;AAAA,IACD;AAAA,KACD;AAEF;;;ACpDA,SAAS,YAAY;AAMb,gBAAAA,YAAA;AADD,IAAM,cAAc,KAAuB,CAAC,EAAE,SAAS,MAAM;AACnE,SAAO,gBAAAA,KAAC,iBAAe,UAAS;AACjC,CAAC;AAED,YAAY,cAAc;","names":["jsx"]}
|
|
@@ -1,11 +1,21 @@
|
|
|
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
|
ArrowBack_default
|
|
3
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HAOFUADN.mjs";
|
|
4
14
|
import {
|
|
5
15
|
Box_default,
|
|
6
16
|
IconButton_default,
|
|
7
17
|
Typography_default
|
|
8
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ERSNXW5X.mjs";
|
|
9
19
|
|
|
10
20
|
// call-control-sdk/lib/components/SDKPageHeader.tsx
|
|
11
21
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -119,4 +129,4 @@ function SDKPageHeader({
|
|
|
119
129
|
export {
|
|
120
130
|
SDKPageHeader
|
|
121
131
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-NDZDJWXY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../call-control-sdk/lib/components/SDKPageHeader.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box, IconButton, Typography } from \"@mui/material\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\n\r\ninterface SDKPageHeaderProps {\r\n\ttitle: string;\r\n\tsubtitle?: React.ReactNode;\r\n\tavatar?: React.ReactNode;\r\n\tshowBack?: boolean;\r\n\tonBack?: () => void;\r\n\tactions?: React.ReactNode;\r\n\tcount?: number;\r\n\tcountLabel?: string;\r\n}\r\n\r\nexport function SDKPageHeader({\r\n\ttitle,\r\n\tsubtitle,\r\n\tavatar,\r\n\tshowBack = false,\r\n\tonBack,\r\n\tactions,\r\n\tcount,\r\n\tcountLabel = \"items\",\r\n}: SDKPageHeaderProps) {\r\n\treturn (\r\n\t\t<Box sx={{ px: { xs: 2, md: 2.5 }, py: \"14px\" }}>\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\talignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\t\tgap: 1,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{/* Left: back + avatar + title */}\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.25, minWidth: 0 }}>\r\n\t\t\t\t\t{showBack && (\r\n\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\tonClick={onBack}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\twidth: 30, height: 30, flexShrink: 0,\r\n\t\t\t\t\t\t\t\tborder: \"none\", borderRadius: \"6px\",\r\n\t\t\t\t\t\t\t\tbackgroundColor: \"action.hover\", color: \"text.secondary\",\r\n\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"action.selected\", color: \"text.primary\" },\r\n\t\t\t\t\t\t\t\ttransition: \"all 0.15s ease\",\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<ArrowBackIcon sx={{ fontSize: 15 }} />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{avatar}\r\n\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tfontWeight: 700,\r\n\t\t\t\t\t\t\t\tfontSize: { xs: \"1.25rem\", sm: \"1.5rem\", lg: \"1.75rem\" },\r\n\t\t\t\t\t\t\t\tcolor: \"text.primary\",\r\n\t\t\t\t\t\t\t\tlineHeight: 1.3,\r\n\t\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\ttextOverflow: \"ellipsis\",\r\n\t\t\t\t\t\t\t\tpl: !showBack ? 0 : 2,\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{title}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t{subtitle && (\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tfontSize: \"0.78rem\",\r\n\t\t\t\t\t\t\t\t\tcolor: \"text.secondary\",\r\n\t\t\t\t\t\t\t\t\tpl: !showBack ? 0 : 2,\r\n\t\t\t\t\t\t\t\t\tmt: 0.2,\r\n\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{subtitle}\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</Box>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Right: count chip + actions */}\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexShrink: 0 }}>\r\n\t\t\t\t\t{count !== undefined && (\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", gap: \"5px\",\r\n\t\t\t\t\t\t\t\tpx: \"10px\", height: 32,\r\n\t\t\t\t\t\t\t\tborder: \"1px solid\", borderColor: \"divider\",\r\n\t\t\t\t\t\t\t\tborderRadius: \"6px\", backgroundColor: \"background.paper\",\r\n\t\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box sx={{ width: 6, height: 6, borderRadius: \"50%\", backgroundColor: \"#1A5F6C\", flexShrink: 0 }} />\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"text.secondary\" }}>\r\n\t\t\t\t\t\t\t\t{count} {countLabel}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{actions}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../call-control-sdk/lib/components/SDKPageHeader.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box, IconButton, Typography } from \"@mui/material\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\n\r\ninterface SDKPageHeaderProps {\r\n\ttitle: string;\r\n\tsubtitle?: React.ReactNode;\r\n\tavatar?: React.ReactNode;\r\n\tshowBack?: boolean;\r\n\tonBack?: () => void;\r\n\tactions?: React.ReactNode;\r\n\tcount?: number;\r\n\tcountLabel?: string;\r\n}\r\n\r\nexport function SDKPageHeader({\r\n\ttitle,\r\n\tsubtitle,\r\n\tavatar,\r\n\tshowBack = false,\r\n\tonBack,\r\n\tactions,\r\n\tcount,\r\n\tcountLabel = \"items\",\r\n}: SDKPageHeaderProps) {\r\n\treturn (\r\n\t\t<Box sx={{ px: { xs: 2, md: 2.5 }, py: \"14px\" }}>\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\talignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\t\tgap: 1,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{/* Left: back + avatar + title */}\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.25, minWidth: 0 }}>\r\n\t\t\t\t\t{showBack && (\r\n\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\tonClick={onBack}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\twidth: 30, height: 30, flexShrink: 0,\r\n\t\t\t\t\t\t\t\tborder: \"none\", borderRadius: \"6px\",\r\n\t\t\t\t\t\t\t\tbackgroundColor: \"action.hover\", color: \"text.secondary\",\r\n\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"action.selected\", color: \"text.primary\" },\r\n\t\t\t\t\t\t\t\ttransition: \"all 0.15s ease\",\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<ArrowBackIcon sx={{ fontSize: 15 }} />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{avatar}\r\n\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tfontWeight: 700,\r\n\t\t\t\t\t\t\t\tfontSize: { xs: \"1.25rem\", sm: \"1.5rem\", lg: \"1.75rem\" },\r\n\t\t\t\t\t\t\t\tcolor: \"text.primary\",\r\n\t\t\t\t\t\t\t\tlineHeight: 1.3,\r\n\t\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\ttextOverflow: \"ellipsis\",\r\n\t\t\t\t\t\t\t\tpl: !showBack ? 0 : 2,\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{title}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t{subtitle && (\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tfontSize: \"0.78rem\",\r\n\t\t\t\t\t\t\t\t\tcolor: \"text.secondary\",\r\n\t\t\t\t\t\t\t\t\tpl: !showBack ? 0 : 2,\r\n\t\t\t\t\t\t\t\t\tmt: 0.2,\r\n\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{subtitle}\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</Box>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Right: count chip + actions */}\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexShrink: 0 }}>\r\n\t\t\t\t\t{count !== undefined && (\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", gap: \"5px\",\r\n\t\t\t\t\t\t\t\tpx: \"10px\", height: 32,\r\n\t\t\t\t\t\t\t\tborder: \"1px solid\", borderColor: \"divider\",\r\n\t\t\t\t\t\t\t\tborderRadius: \"6px\", backgroundColor: \"background.paper\",\r\n\t\t\t\t\t\t\t\twhiteSpace: \"nowrap\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box sx={{ width: 6, height: 6, borderRadius: \"50%\", backgroundColor: \"#1A5F6C\", flexShrink: 0 }} />\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"text.secondary\" }}>\r\n\t\t\t\t\t\t\t\t{count} {countLabel}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{actions}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkDO,cAMF,YANE;AAnCA,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACd,GAAuB;AACtB,SACC,oBAAC,eAAI,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,OAAO,GAC7C;AAAA,IAAC;AAAA;AAAA,MACA,IAAI;AAAA,QACH,SAAS;AAAA,QACT,YAAY,EAAE,IAAI,cAAc,IAAI,SAAS;AAAA,QAC7C,gBAAgB;AAAA,QAChB,eAAe,EAAE,IAAI,UAAU,IAAI,MAAM;AAAA,QACzC,KAAK;AAAA,MACN;AAAA,MAGA;AAAA,6BAAC,eAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,MAAM,UAAU,EAAE,GACvE;AAAA,sBACA;AAAA,YAAC;AAAA;AAAA,cACA,SAAS;AAAA,cACT,MAAK;AAAA,cACL,IAAI;AAAA,gBACH,OAAO;AAAA,gBAAI,QAAQ;AAAA,gBAAI,YAAY;AAAA,gBACnC,QAAQ;AAAA,gBAAQ,cAAc;AAAA,gBAC9B,iBAAiB;AAAA,gBAAgB,OAAO;AAAA,gBACxC,WAAW,EAAE,iBAAiB,mBAAmB,OAAO,eAAe;AAAA,gBACvE,YAAY;AAAA,cACb;AAAA,cAEA,8BAAC,qBAAc,IAAI,EAAE,UAAU,GAAG,GAAG;AAAA;AAAA,UACtC;AAAA,UAGA;AAAA,UAED,qBAAC,eACA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACA,IAAI;AAAA,kBACH,YAAY;AAAA,kBACZ,UAAU,EAAE,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU;AAAA,kBACvD,OAAO;AAAA,kBACP,YAAY;AAAA,kBACZ,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,cAAc;AAAA,kBACd,IAAI,CAAC,WAAW,IAAI;AAAA,gBACrB;AAAA,gBAEC;AAAA;AAAA,YACF;AAAA,YACC,YACA;AAAA,cAAC;AAAA;AAAA,gBACA,IAAI;AAAA,kBACH,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,IAAI,CAAC,WAAW,IAAI;AAAA,kBACpB,IAAI;AAAA,kBACJ,YAAY;AAAA,gBACb;AAAA,gBAEC;AAAA;AAAA,YACF;AAAA,aAEF;AAAA,WACD;AAAA,QAGA,qBAAC,eAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,YAAY,EAAE,GACtE;AAAA,oBAAU,UACV;AAAA,YAAC;AAAA;AAAA,cACA,IAAI;AAAA,gBACH,SAAS;AAAA,gBAAQ,YAAY;AAAA,gBAAU,KAAK;AAAA,gBAC5C,IAAI;AAAA,gBAAQ,QAAQ;AAAA,gBACpB,QAAQ;AAAA,gBAAa,aAAa;AAAA,gBAClC,cAAc;AAAA,gBAAO,iBAAiB;AAAA,gBACtC,YAAY;AAAA,cACb;AAAA,cAEA;AAAA,oCAAC,eAAI,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,OAAO,iBAAiB,WAAW,YAAY,EAAE,GAAG;AAAA,gBAClG,qBAAC,sBAAW,IAAI,EAAE,UAAU,WAAW,OAAO,iBAAiB,GAC7D;AAAA;AAAA,kBAAM;AAAA,kBAAE;AAAA,mBACV;AAAA;AAAA;AAAA,UACD;AAAA,UAEA;AAAA,WACF;AAAA;AAAA;AAAA,EACD,GACD;AAEF;","names":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
|
|
11
|
+
import {
|
|
12
|
+
END_POINT,
|
|
13
|
+
axios_default
|
|
14
|
+
} from "./chunk-KSVNZKRD.mjs";
|
|
15
|
+
|
|
16
|
+
// call-control-sdk/lib/pages/cdrReport/useCdrReport.ts
|
|
17
|
+
import { useCallback, useState } from "react";
|
|
18
|
+
function buildCdrQuery(params) {
|
|
19
|
+
const qs = new URLSearchParams();
|
|
20
|
+
if (params.start_date) qs.append("start_date", params.start_date);
|
|
21
|
+
if (params.end_date) qs.append("end_date", params.end_date);
|
|
22
|
+
if (params.agent_id) {
|
|
23
|
+
for (const id of params.agent_id) qs.append("agent_id", String(id));
|
|
24
|
+
}
|
|
25
|
+
if (params.queue_id) {
|
|
26
|
+
for (const id of params.queue_id) qs.append("queue_id", String(id));
|
|
27
|
+
}
|
|
28
|
+
if (params.call_type) qs.append("call_type", params.call_type);
|
|
29
|
+
if (params.status) qs.append("status", params.status);
|
|
30
|
+
if (params.search) qs.append("search", params.search);
|
|
31
|
+
if (params.page) qs.append("page", String(params.page));
|
|
32
|
+
if (params.pageSize) qs.append("pageSize", String(params.pageSize));
|
|
33
|
+
const str = qs.toString();
|
|
34
|
+
return str ? `?${str}` : "";
|
|
35
|
+
}
|
|
36
|
+
async function getQueues() {
|
|
37
|
+
var _a;
|
|
38
|
+
const res = await axios_default.get(END_POINT.MASTER_QUEUES);
|
|
39
|
+
const raw = Array.isArray(res.data) ? res.data : Array.isArray((_a = res.data) == null ? void 0 : _a.data) ? res.data.data : [];
|
|
40
|
+
return raw.map((q) => ({ id: q.id, name: q.name, description: "", isActive: true }));
|
|
41
|
+
}
|
|
42
|
+
async function getCdrReport(params) {
|
|
43
|
+
const qs = buildCdrQuery(params);
|
|
44
|
+
const res = await axios_default.get(`${END_POINT.CDR_REPORT}${qs}`);
|
|
45
|
+
return res.data;
|
|
46
|
+
}
|
|
47
|
+
async function exportCdrReportToExcel(params) {
|
|
48
|
+
var _a;
|
|
49
|
+
const qs = buildCdrQuery(params);
|
|
50
|
+
const res = await axios_default.get(`${END_POINT.CDR_REPORT_EXPORT_EXCEL}${qs}`, { responseType: "blob" });
|
|
51
|
+
const url = window.URL.createObjectURL(new Blob([res.data]));
|
|
52
|
+
const a = document.createElement("a");
|
|
53
|
+
a.href = url;
|
|
54
|
+
a.download = `cdr-report-${(_a = params.start_date) != null ? _a : "export"}.xlsx`;
|
|
55
|
+
document.body.appendChild(a);
|
|
56
|
+
a.click();
|
|
57
|
+
a.remove();
|
|
58
|
+
window.URL.revokeObjectURL(url);
|
|
59
|
+
}
|
|
60
|
+
async function getRecordingByCall(callUuid) {
|
|
61
|
+
const res = await axios_default.get(END_POINT.RECORDING_BY_CALL(callUuid), { responseType: "blob" });
|
|
62
|
+
return res.data;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
getQueues,
|
|
67
|
+
getCdrReport,
|
|
68
|
+
exportCdrReportToExcel,
|
|
69
|
+
getRecordingByCall
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=chunk-S2SMCH2C.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../call-control-sdk/lib/pages/cdrReport/useCdrReport.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\r\nimport axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type {\r\n\tCdrAgentFilterOption,\r\n\tCdrQueueFilterOption,\r\n\tCdrRecordsPage,\r\n\tCdrReportParams,\r\n\tCdrReportResponse,\r\n} from \"./types\";\r\n\r\n// ─── Build query string for CDR endpoints ────────────────────────────────────\r\n\r\nfunction buildCdrQuery(params: CdrReportParams): string {\r\n\tconst qs = new URLSearchParams();\r\n\tif (params.start_date) qs.append(\"start_date\", params.start_date);\r\n\tif (params.end_date) qs.append(\"end_date\", params.end_date);\r\n\tif (params.agent_id) {\r\n\t\tfor (const id of params.agent_id) qs.append(\"agent_id\", String(id));\r\n\t}\r\n\tif (params.queue_id) {\r\n\t\tfor (const id of params.queue_id) qs.append(\"queue_id\", String(id));\r\n\t}\r\n\tif (params.call_type) qs.append(\"call_type\", params.call_type);\r\n\tif (params.status) qs.append(\"status\", params.status);\r\n\tif (params.search) qs.append(\"search\", params.search);\r\n\tif (params.page) qs.append(\"page\", String(params.page));\r\n\tif (params.pageSize) qs.append(\"pageSize\", String(params.pageSize));\r\n\tconst str = qs.toString();\r\n\treturn str ? `?${str}` : \"\";\r\n}\r\n\r\n// ─── CDR records hook ────────────────────────────────────────────────────────\r\n\r\nexport function useCdrReport() {\r\n\tconst [records, setRecords] = useState<CdrRecordsPage[\"data\"]>([]);\r\n\tconst [totalRecords, setTotalRecords] = useState(0);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(\"\");\r\n\r\n\tconst fetchRecords = useCallback(async (params: CdrReportParams): Promise<void> => {\r\n\t\tsetLoading(true);\r\n\t\tsetError(\"\");\r\n\t\ttry {\r\n\t\t\tconst qs = buildCdrQuery(params);\r\n\t\t\tconst res = await axiosInstance.get<CdrRecordsPage>(`${END_POINT.CDR_REPORT_RECORDS}${qs}`);\r\n\t\t\tsetRecords(res.data?.data ?? []);\r\n\t\t\tsetTotalRecords(res.data?.total ?? 0);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetError(\r\n\t\t\t\terr?.response?.data?.message\r\n\t\t\t\t?? err?.response?.data?.detail\r\n\t\t\t\t?? err?.message\r\n\t\t\t\t?? \"Failed to fetch CDR report\"\r\n\t\t\t);\r\n\t\t\tsetRecords([]);\r\n\t\t\tsetTotalRecords(0);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst exportExcel = useCallback(async (params: CdrReportParams): Promise<void> => {\r\n\t\tconst qs = buildCdrQuery(params);\r\n\t\tconst res = await axiosInstance.get(`${END_POINT.CDR_REPORT_EXPORT_EXCEL}${qs}`, {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\tconst blob = res.data as Blob;\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = `cdr-report-${params.start_date ?? \"export\"}.xlsx`;\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.click();\r\n\t\ta.remove();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\tconst fetchRecording = useCallback(async (callUuid: string): Promise<Blob> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.RECORDING_BY_CALL(callUuid), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\trecords,\r\n\t\ttotalRecords,\r\n\t\tloading,\r\n\t\terror,\r\n\t\tsetError,\r\n\t\tfetchRecords,\r\n\t\texportExcel,\r\n\t\tfetchRecording,\r\n\t};\r\n}\r\n\r\n// ─── CDR filter options hook (agents + queues) ───────────────────────────────\r\n//\r\n// The main app's CdrReport uses the general user-list and master-queue endpoints\r\n// (NOT a CDR-specific filter endpoint). We mirror that here.\r\n// - agents: GET /api/v1/users/?role=AGENT → filter to role === \"AGENT\"\r\n// - queues: GET /api/v1/master/queue\r\n\r\ninterface UserListItem {\r\n\tid: number;\r\n\tuserId: string;\r\n\tfirstName?: string;\r\n\tlastName?: string;\r\n\trole?: string | { name?: string } | null;\r\n}\r\n\r\ninterface QueueListItem {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\nexport function useCdrFilters() {\r\n\tconst [agents, setAgents] = useState<CdrAgentFilterOption[]>([]);\r\n\tconst [queues, setQueues] = useState<CdrQueueFilterOption[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchAgents = useCallback(async (): Promise<void> => {\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get<UserListItem[] | { data: UserListItem[] }>(\r\n\t\t\t\tEND_POINT.USERS_LIST,\r\n\t\t\t\t{ params: { role: \"AGENT\" } },\r\n\t\t\t);\r\n\t\t\tconst raw = Array.isArray(res.data)\r\n\t\t\t\t? res.data\r\n\t\t\t\t: Array.isArray((res.data as any)?.data)\r\n\t\t\t\t\t? (res.data as any).data\r\n\t\t\t\t\t: [];\r\n\t\t\tconst mapped: CdrAgentFilterOption[] = (raw as UserListItem[])\r\n\t\t\t\t.filter((u) => {\r\n\t\t\t\t\tconst roleName = typeof u.role === \"object\" && u.role !== null ? u.role.name : u.role;\r\n\t\t\t\t\treturn roleName === \"AGENT\";\r\n\t\t\t\t})\r\n\t\t\t\t.map((u) => ({\r\n\t\t\t\t\tid: u.id,\r\n\t\t\t\t\tuserId: u.userId,\r\n\t\t\t\t\tfullName: [u.firstName, u.lastName].filter(Boolean).join(\" \") || u.userId,\r\n\t\t\t\t}));\r\n\t\t\tsetAgents(mapped);\r\n\t\t} catch {\r\n\t\t\tsetAgents([]);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchQueues = useCallback(async (): Promise<void> => {\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get<QueueListItem[] | { data: QueueListItem[] }>(\r\n\t\t\t\tEND_POINT.MASTER_QUEUES,\r\n\t\t\t);\r\n\t\t\tconst raw = Array.isArray(res.data)\r\n\t\t\t\t? res.data\r\n\t\t\t\t: Array.isArray((res.data as any)?.data)\r\n\t\t\t\t\t? (res.data as any).data\r\n\t\t\t\t\t: [];\r\n\t\t\tsetQueues((raw as QueueListItem[]).map((q) => ({ id: q.id, name: q.name })));\r\n\t\t} catch {\r\n\t\t\tsetQueues([]);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchAll = useCallback(async (): Promise<void> => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tawait Promise.all([fetchAgents(), fetchQueues()]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, [fetchAgents, fetchQueues]);\r\n\r\n\treturn { agents, queues, loading, fetchAgents, fetchQueues, fetchAll };\r\n}\r\n\r\nexport interface Queue {\r\n\tid: number;\r\n\tname: string;\r\n\tdescription: string;\r\n\tisActive: boolean;\r\n}\r\n\r\nexport async function getQueues(): Promise<Queue[]> {\r\n\tconst res = await axiosInstance.get<QueueListItem[] | { data: QueueListItem[] }>(END_POINT.MASTER_QUEUES);\r\n\tconst raw = Array.isArray(res.data)\r\n\t\t? res.data\r\n\t\t: Array.isArray((res.data as any)?.data)\r\n\t\t\t? (res.data as any).data\r\n\t\t\t: [];\r\n\treturn (raw as QueueListItem[]).map((q) => ({ id: q.id, name: q.name, description: \"\", isActive: true }));\r\n}\r\n\r\nexport async function getCdrReportRecords(params: CdrReportParams): Promise<CdrRecordsPage> {\r\n\tconst qs = buildCdrQuery(params);\r\n\tconst res = await axiosInstance.get<CdrRecordsPage>(`${END_POINT.CDR_REPORT_RECORDS}${qs}`);\r\n\treturn res.data;\r\n}\r\n\r\n/**\r\n * Combined CDR report — stats + the current page of records in one call.\r\n * This is the documented endpoint that honours page/pageSize/search.\r\n */\r\nexport async function getCdrReport(params: CdrReportParams): Promise<CdrReportResponse> {\r\n\tconst qs = buildCdrQuery(params);\r\n\tconst res = await axiosInstance.get<CdrReportResponse>(`${END_POINT.CDR_REPORT}${qs}`);\r\n\treturn res.data;\r\n}\r\n\r\nexport async function exportCdrReportToExcel(params: CdrReportParams): Promise<void> {\r\n\tconst qs = buildCdrQuery(params);\r\n\tconst res = await axiosInstance.get(`${END_POINT.CDR_REPORT_EXPORT_EXCEL}${qs}`, { responseType: \"blob\" });\r\n\tconst url = window.URL.createObjectURL(new Blob([res.data]));\r\n\tconst a = document.createElement(\"a\");\r\n\ta.href = url;\r\n\ta.download = `cdr-report-${params.start_date ?? \"export\"}.xlsx`;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\ta.remove();\r\n\twindow.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport async function getRecordingByCall(callUuid: string): Promise<Blob> {\r\n\tconst res = await axiosInstance.get(END_POINT.RECORDING_BY_CALL(callUuid), { responseType: \"blob\" });\r\n\treturn res.data;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS,aAAa,gBAAgB;AAatC,SAAS,cAAc,QAAiC;AACvD,QAAM,KAAK,IAAI,gBAAgB;AAC/B,MAAI,OAAO,WAAY,IAAG,OAAO,cAAc,OAAO,UAAU;AAChE,MAAI,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,QAAQ;AAC1D,MAAI,OAAO,UAAU;AACpB,eAAW,MAAM,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,EAAE,CAAC;AAAA,EACnE;AACA,MAAI,OAAO,UAAU;AACpB,eAAW,MAAM,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,EAAE,CAAC;AAAA,EACnE;AACA,MAAI,OAAO,UAAW,IAAG,OAAO,aAAa,OAAO,SAAS;AAC7D,MAAI,OAAO,OAAQ,IAAG,OAAO,UAAU,OAAO,MAAM;AACpD,MAAI,OAAO,OAAQ,IAAG,OAAO,UAAU,OAAO,MAAM;AACpD,MAAI,OAAO,KAAM,IAAG,OAAO,QAAQ,OAAO,OAAO,IAAI,CAAC;AACtD,MAAI,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,OAAO,QAAQ,CAAC;AAClE,QAAM,MAAM,GAAG,SAAS;AACxB,SAAO,MAAM,IAAI,GAAG,KAAK;AAC1B;AA0JA,eAAsB,YAA8B;AAxLpD;AAyLC,QAAM,MAAM,MAAM,cAAc,IAAiD,UAAU,aAAa;AACxG,QAAM,MAAM,MAAM,QAAQ,IAAI,IAAI,IAC/B,IAAI,OACJ,MAAM,SAAS,SAAI,SAAJ,mBAAkB,IAAI,IACnC,IAAI,KAAa,OAClB,CAAC;AACL,SAAQ,IAAwB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,MAAM,aAAa,IAAI,UAAU,KAAK,EAAE;AACzG;AAYA,eAAsB,aAAa,QAAqD;AACvF,QAAM,KAAK,cAAc,MAAM;AAC/B,QAAM,MAAM,MAAM,cAAc,IAAuB,GAAG,UAAU,UAAU,GAAG,EAAE,EAAE;AACrF,SAAO,IAAI;AACZ;AAEA,eAAsB,uBAAuB,QAAwC;AAlNrF;AAmNC,QAAM,KAAK,cAAc,MAAM;AAC/B,QAAM,MAAM,MAAM,cAAc,IAAI,GAAG,UAAU,uBAAuB,GAAG,EAAE,IAAI,EAAE,cAAc,OAAO,CAAC;AACzG,QAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D,QAAM,IAAI,SAAS,cAAc,GAAG;AACpC,IAAE,OAAO;AACT,IAAE,WAAW,eAAc,YAAO,eAAP,YAAqB,QAAQ;AACxD,WAAS,KAAK,YAAY,CAAC;AAC3B,IAAE,MAAM;AACR,IAAE,OAAO;AACT,SAAO,IAAI,gBAAgB,GAAG;AAC/B;AAEA,eAAsB,mBAAmB,UAAiC;AACzE,QAAM,MAAM,MAAM,cAAc,IAAI,UAAU,kBAAkB,QAAQ,GAAG,EAAE,cAAc,OAAO,CAAC;AACnG,SAAO,IAAI;AACZ;","names":[]}
|
|
@@ -1,10 +1,20 @@
|
|
|
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
|
Close_default
|
|
3
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VII5JNA6.mjs";
|
|
4
14
|
import {
|
|
5
15
|
END_POINT,
|
|
6
16
|
axios_default
|
|
7
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-KSVNZKRD.mjs";
|
|
8
18
|
import {
|
|
9
19
|
Alert_default,
|
|
10
20
|
Avatar_default,
|
|
@@ -30,7 +40,7 @@ import {
|
|
|
30
40
|
alpha,
|
|
31
41
|
createSvgIcon,
|
|
32
42
|
useTheme
|
|
33
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-ERSNXW5X.mjs";
|
|
34
44
|
|
|
35
45
|
// call-control-sdk/lib/pages/common/components/AuditReport.tsx
|
|
36
46
|
import { useEffect, useState } from "react";
|
|
@@ -698,4 +708,4 @@ export {
|
|
|
698
708
|
AuditReportDialog,
|
|
699
709
|
AuditReportFullPage
|
|
700
710
|
};
|
|
701
|
-
//# sourceMappingURL=chunk-
|
|
711
|
+
//# sourceMappingURL=chunk-S34CQVTF.mjs.map
|