@argusoft/medplat-core 1.0.31 → 1.0.32
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/{AccessRights-DUgY6ewy.js → AccessRights-DBjTQA1-.js} +421 -424
- package/dist/AccessRights-DBjTQA1-.js.map +1 -0
- package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
- package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
- package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
- package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
- package/dist/AddMenuConfiguration.css +1 -1
- package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +45 -45
- package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
- package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js → CategoriesPage-BprQEYJw-CclreTv1.js} +43 -43
- package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js.map → CategoriesPage-BprQEYJw-CclreTv1.js.map} +1 -1
- package/dist/{ChangePasswordModalCore-lQ9GamH1.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
- package/dist/{ChangePasswordModalCore-lQ9GamH1.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
- package/dist/{ConditionConfig-BQBmBHaM.js → ConditionConfig-Bpm6OoV5.js} +3 -3
- package/dist/{ConditionConfig-BQBmBHaM.js.map → ConditionConfig-Bpm6OoV5.js.map} +1 -1
- package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +29 -29
- package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
- package/dist/EntityManagement-BGwJGl9k.js +62 -0
- package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
- package/dist/{EventConfigurations-CUPEN5BV.js → EventConfigurations-B-z7xHh_.js} +3 -3
- package/dist/{EventConfigurations-CUPEN5BV.js.map → EventConfigurations-B-z7xHh_.js.map} +1 -1
- package/dist/{EventsExceptionModal-BX-ArkBE.js → EventsExceptionModal-DafomIv6.js} +2 -2
- package/dist/{EventsExceptionModal-BX-ArkBE.js.map → EventsExceptionModal-DafomIv6.js.map} +1 -1
- package/dist/{EventsUi-D6O9S7BK.js → EventsUi-Dl_yckSA.js} +37 -32
- package/dist/EventsUi-Dl_yckSA.js.map +1 -0
- package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
- package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
- package/dist/{FeatureMenu-CHsBbw3W.js → FeatureMenu-Kc73yPHH.js} +2 -2
- package/dist/{FeatureMenu-CHsBbw3W.js.map → FeatureMenu-Kc73yPHH.js.map} +1 -1
- package/dist/{FhirServerList-iXBPkRVF.js → FhirServerList-CrIHMAxz.js} +19 -19
- package/dist/{FhirServerList-iXBPkRVF.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
- package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
- package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
- package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
- package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
- package/dist/{ImmunizationConfigurationBase-aUtx0JEe.js → ImmunizationConfigurationBase-lKsJZMak.js} +1342 -1301
- package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
- package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
- package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
- package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
- package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
- package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
- package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
- package/dist/{ManageEventConfiguration-DqW3krT6.js → ManageEventConfiguration-DqPbn3Oi.js} +5 -5
- package/dist/{ManageEventConfiguration-DqW3krT6.js.map → ManageEventConfiguration-DqPbn3Oi.js.map} +1 -1
- package/dist/ManageRole-CyfpySt9.js +981 -0
- package/dist/ManageRole-CyfpySt9.js.map +1 -0
- package/dist/{ManageUser-DZltBina.js → ManageUser-Dm0l833u.js} +172 -172
- package/dist/{ManageUser-DZltBina.js.map → ManageUser-Dm0l833u.js.map} +1 -1
- package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +37 -37
- package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
- package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
- package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
- package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
- package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js → MobileTypeEventConfigModal-DodU3beR.js} +3 -3
- package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js.map → MobileTypeEventConfigModal-DodU3beR.js.map} +1 -1
- package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
- package/dist/NewServerManagement-BdayO78D.js.map +1 -0
- package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
- package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
- package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +56 -56
- package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
- package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +38 -38
- package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
- package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
- package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
- package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
- package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
- package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
- package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
- package/dist/{PickupsPage-D7zyioJB-bHKnARYw.js → PickupsPage-BWblMlic-CWkgeBw0.js} +122 -122
- package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
- package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
- package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
- package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
- package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
- package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +29 -29
- package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js.map → ProductsPage-BI22nPb4-CQBjnc-n.js.map} +1 -1
- package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
- package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
- package/dist/{PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +446 -436
- package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
- package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +55 -55
- package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
- package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +61 -61
- package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
- package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
- package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
- package/dist/Roles-BoNGJhtR.js +19 -0
- package/dist/Roles-BoNGJhtR.js.map +1 -0
- package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +33 -33
- package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
- package/dist/{SalesPage-DPIRrC_O-M8rqnK7z.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +34 -34
- package/dist/SalesPage-eF9Yr42z-BQ9FlXC3.js.map +1 -0
- package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
- package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
- package/dist/{StorageUnitsPage-BDRkdCjW-UF64rf7q.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +213 -190
- package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
- package/dist/{SubMenu-BdMTYtC1.js → SubMenu-OO2zhKiu.js} +2 -2
- package/dist/{SubMenu-BdMTYtC1.js.map → SubMenu-OO2zhKiu.js.map} +1 -1
- package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
- package/dist/TableDetails-Cc40dEUs.js.map +1 -0
- package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
- package/dist/TableList-B5tX4wII.js.map +1 -0
- package/dist/{TransactionsPage-CqWTMNU8-Df6eGFDW.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +185 -170
- package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
- package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
- package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
- package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
- package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
- package/dist/{TypeConfiguration-JbRCN6GR.js → TypeConfiguration-EaFiOzRE.js} +3 -3
- package/dist/{TypeConfiguration-JbRCN6GR.js.map → TypeConfiguration-EaFiOzRE.js.map} +1 -1
- package/dist/UserList-Cf5B-o_1.js +1904 -0
- package/dist/UserList-Cf5B-o_1.js.map +1 -0
- package/dist/Users-MC7txo1V.js +43 -0
- package/dist/{Users-CsJ08Kjm.js.map → Users-MC7txo1V.js.map} +1 -1
- package/dist/VaccineEducation-T_UE57Ef.js +231 -0
- package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
- package/dist/VaccineEducation.css +1 -0
- package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
- package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
- package/dist/VaccineEducationConfigurator.css +4 -0
- package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
- package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
- package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
- package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
- package/dist/{constants-DpXnLsAB-D6lN5cjK.js → constants-BTpJFQe_-CYPZIqQF.js} +160 -61
- package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
- package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
- package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
- package/dist/index-mfoqII2U.js +524 -0
- package/dist/index-mfoqII2U.js.map +1 -0
- package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
- package/dist/index-o8Pyt1Bt.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/{index.lib-ETRQOzvE.js → index.lib-BySa9-Z-.js} +302 -260
- package/dist/index.lib-BySa9-Z-.js.map +1 -0
- package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
- package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
- package/package.json +5 -1
- package/dist/AccessRights-DUgY6ewy.js.map +0 -1
- package/dist/AddMenuConfiguration-c6ZKiN0i.js +0 -8898
- package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +0 -1
- package/dist/EntityManagement-CPQL6qBj.js +0 -50
- package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
- package/dist/EventsUi-D6O9S7BK.js.map +0 -1
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js +0 -79
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +0 -1
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js +0 -665
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js.map +0 -1
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
- package/dist/ManageRole-CNZBRKGU.js +0 -776
- package/dist/ManageRole-CNZBRKGU.js.map +0 -1
- package/dist/MobileAnalytics-BLOionG_.js +0 -17301
- package/dist/MobileAnalytics-BLOionG_.js.map +0 -1
- package/dist/MobileMenuManagement-68Wijb0X.js +0 -220
- package/dist/MobileMenuManagement-68Wijb0X.js.map +0 -1
- package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js +0 -1812
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +0 -1
- package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +0 -783
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +0 -1
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +0 -1
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +0 -599
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +0 -1
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +0 -1305
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +0 -1
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +0 -675
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +0 -1
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +0 -1
- package/dist/Roles-BIyiic67.js +0 -14
- package/dist/Roles-BIyiic67.js.map +0 -1
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +0 -1
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +0 -676
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js.map +0 -1
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +0 -1
- package/dist/TableDetails-BtafRxXb.js.map +0 -1
- package/dist/TableList-Dpo6dO7S.js.map +0 -1
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +0 -1
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +0 -315
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +0 -1
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +0 -476
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +0 -1
- package/dist/UserList-L41Xw0Q6.js +0 -1129
- package/dist/UserList-L41Xw0Q6.js.map +0 -1
- package/dist/Users-CsJ08Kjm.js +0 -40
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +0 -321
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +0 -1
- package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +0 -1
- package/dist/dashboardLayoutUtils-CJivzaU1.js +0 -408
- package/dist/dashboardLayoutUtils-CJivzaU1.js.map +0 -1
- package/dist/index-D9YNFPn9.js.map +0 -1
- package/dist/index.lib-ETRQOzvE.js.map +0 -1
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +0 -36
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js.map +0 -1
|
@@ -17,13 +17,13 @@ import * as M from "yup";
|
|
|
17
17
|
import { useTranslateProvider as At } from "@/common/languageTranslator/TranslationContext";
|
|
18
18
|
import _t from "@/hooks/useTrackEvent";
|
|
19
19
|
import { useDebounceFn as kt } from "@/hooks/useDebounceFn";
|
|
20
|
-
import { E as Wt, T as $t, d as Lt, e as se, F as C, f as G, b as Pt, I as Ft, l as Yt, A as Ut, i as Bt } from "./EventsUi-
|
|
20
|
+
import { E as Wt, T as $t, d as Lt, e as se, F as C, f as G, b as Pt, I as Ft, l as Yt, A as Ut, i as Bt } from "./EventsUi-Dl_yckSA.js";
|
|
21
21
|
import D from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
22
22
|
import jt from "@/views/custom-components/CustomConfirmationModal";
|
|
23
|
-
import './ManageEventConfiguration.css';const Ht = le(() => import("./ConditionConfig-
|
|
24
|
-
() => import("./MobileTypeEventConfigModal-
|
|
23
|
+
import './ManageEventConfiguration.css';const Ht = le(() => import("./ConditionConfig-Bpm6OoV5.js")), Qt = le(
|
|
24
|
+
() => import("./MobileTypeEventConfigModal-DodU3beR.js")
|
|
25
25
|
), Vt = le(
|
|
26
|
-
() => import("./OtherTypeEventConfigModal-
|
|
26
|
+
() => import("./OtherTypeEventConfigModal-D_9S50aI.js")
|
|
27
27
|
);
|
|
28
28
|
function vn() {
|
|
29
29
|
var qe, Ne;
|
|
@@ -1213,4 +1213,4 @@ function vn() {
|
|
|
1213
1213
|
export {
|
|
1214
1214
|
vn as default
|
|
1215
1215
|
};
|
|
1216
|
-
//# sourceMappingURL=ManageEventConfiguration-
|
|
1216
|
+
//# sourceMappingURL=ManageEventConfiguration-DqPbn3Oi.js.map
|
package/dist/{ManageEventConfiguration-DqW3krT6.js.map → ManageEventConfiguration-DqPbn3Oi.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManageEventConfiguration-DqW3krT6.js","sources":["../src/views/Events/ManageEventConfiguration.jsx"],"sourcesContent":["import {\n retrieveAllForm,\n retrieveByUUID,\n retrieveManualEvents,\n save,\n update,\n} from \"../../services/EventConfig\";\nimport {\n getReportsList,\n retrieveAllNotifications,\n} from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomTextArea from \"@/views/custom-components/CustomTextArea\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport PostgresEditor from \"@/views/custom-components/PostgresEditor\";\nimport {\n Box,\n Button,\n Chip,\n Collapse,\n Divider,\n IconButton,\n Paper,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport React, { lazy, Suspense, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router\";\nimport { useParams } from \"react-router-dom\";\nimport * as Yup from \"yup\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nconst ConditionConfig = lazy(() => import(\"./ConditionConfig\"));\nconst MobileTypeEventConfigModal = lazy(\n () => import(\"./MobileTypeEventConfigModal\")\n);\nconst OtherTypeEventConfigModal = lazy(\n () => import(\"./OtherTypeEventConfigModal\")\n);\nimport { ManageEventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport {\n ACTION_TYPES,\n EmptyState,\n EVENT_TYPES,\n FieldHelp,\n FieldLabel,\n iconOf,\n ImplicitParams,\n labelOf,\n SectionHeading,\n TRIGGER_WHEN,\n} from \"./components/EventsUi\";\n\n/**\n * ManageEventConfiguration component handles the creation and editing\n * of event configurations, including various notification types and triggers.\n * @module ManageEventConfiguration\n *\n *\n *\n * @component\n */\nfunction ManageEventConfiguration() {\n const { translate } = useTranslateProvider();\n\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const { id } = useParams();\n const navigate = useNavigate();\n const [forms, setForms] = useState(null);\n const [events, setEvents] = useState(null);\n const [notificationTypeMap, setNotificationTypeMap] = useState({});\n const [notificationConfigDetails, setNotificationConfigDetails] = useState(\n []\n );\n const [selectedConfigIndex, setSelectedConfigIndex] = useState(null);\n const [selectedConfig, setSelectedConfig] = useState(null);\n const [selectedCondition, setSelectedCondition] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(null);\n const [newCondition, setNewCondition] = useState(null);\n const [conditionEditMode, setConditionEditMode] = useState(null);\n const [selectedTypeConfig, setSelectedTypeConfig] = useState(null);\n const [newType, setNewType] = useState(null);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [typeEditMode, setTypeEditMode] = useState(false);\n const [toggleOtherOpen, setToggleOtherOpen] = useState(false);\n const [typeConfigurationData, setTypeConfigurationData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [reportList, setReportList] = useState([]);\n const [queryErrors, setQueryErrors] = useState({});\n // Collapsed-by-index. Reset whenever the list changes, so a delete can never\n // leave the collapsed flags pointing at a different configuration.\n const [collapsedConfigs, setCollapsedConfigs] = useState({});\n const [configPendingDelete, setConfigPendingDelete] = useState(null);\n\n /**\n * Toggles the overlay open/closed state.\n *\n * @function handleOverlayState\n */\n const handleOverlayState = () => setOverlayOpen(!overlayOpen);\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Enter Name\"),\n eventType: Yup.string().required(\"Select Event Type\"),\n recursionInterval: Yup.number()\n .typeError(\"Recursion Interval must be a number\")\n .when([], {\n is: () => eventType === \"RECURSION\",\n then: (schema) =>\n schema\n .required(\"Recursion Interval is required\")\n .moreThan(0, \"Recursion Interval must be greater than or equal to 1\")\n .lessThan(1441, \"Recursion Interval must be less than or equal to 1440\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n trigerWhen: Yup.string().test(\n \"is-required\",\n \"trigerWhen is required\",\n function (value) {\n if (eventType === \"TIMMER_BASED\") {\n return !!value;\n }\n return true;\n }\n ),\n day: Yup.string().test(\"is-required\", \"day is required\", function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" || trigerWhen === \"MONTHLY\")\n ) {\n return !!value;\n }\n return true;\n }),\n hour: Yup.string().test(\n \"is-required\",\n \"hour is required\",\n function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" ||\n trigerWhen === \"MONTHLY\" ||\n trigerWhen === \"DAILY\")\n ) {\n return !!value;\n }\n return true;\n }\n ),\n minute: Yup.string().notRequired(),\n });\n const {\n control,\n handleSubmit,\n setValue,\n watch,\n formState: { errors, isSubmitting },\n } = useForm({\n defaultValues: {\n name: \"\",\n description: \"\",\n eventType: \"\",\n recursionInterval: 0,\n minute: 0\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n const eventType = watch(\"eventType\");\n let trigerWhen = watch(\"trigerWhen\");\n\n /**\n * Handles form submission.\n *\n * @async\n * @function submit\n * @param {Object} data - The form data to submit.\n */\n\n useEffect(() => {\n let form = formRef.current;\n\n return () => {\n trackEvent(\"conversion_event\", {\n form,\n form_name: \"Manage Event Configuration\",\n submit: submitRef.current,\n }); // Use the current ref value\n };\n }, []);\n const submit = async (data) => {\n try {\n if (notificationConfigDetails.length > 0) {\n const missingQuery = notificationConfigDetails.some(\n (config) => !config.query,\n );\n if (missingQuery) {\n const nextErrors = {};\n notificationConfigDetails.forEach((config, index) => {\n if (!config.query) nextErrors[index] = \"Query Required\";\n });\n setQueryErrors(nextErrors);\n showToast({\n message: \"Every configuration needs a query before you can save.\",\n type: \"warn\",\n });\n return;\n }\n data.minute = Number(data.minute || 0);\n data.notificationConfigDetails = notificationConfigDetails;\n\n const isTimerBased = eventType === \"TIMMER_BASED\";\n const isFormSubmitted = eventType === \"FORM_SUBMITTED\";\n const isManual = eventType === \"MANUAL\";\n const isRecursion = eventType === \"RECURSION\";\n if (!isTimerBased) {\n delete data.trigerWhen;\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n if (!isFormSubmitted) {\n delete data.formTypeId;\n }\n if (!isFormSubmitted && !isManual) {\n delete data.eventTypeDetailCode;\n delete data.eventTypeDetailId;\n }\n if (isRecursion) {\n delete data.formTypeId;\n data.trigerWhen = \"RECURSION\";\n } else {\n delete data.recursionInterval;\n }\n\n const needsDay = [\"AFTER\", \"MONTHLY\", \"WEEKLY\"];\n const needsHour = [\"AFTER\", \"MONTHLY\", \"DAILY\", \"WEEKLY\"];\n if (!needsDay.includes(trigerWhen)) {\n delete data.day;\n }\n if (!needsHour.includes(trigerWhen)) {\n delete data.day;\n delete data.hour;\n }\n if (trigerWhen === \"IMMEDIATELY\") {\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n const cleanedNotificationConfigDetails = notificationConfigDetails.map(config => ({\n ...config,\n conditions: config.conditions?.map(condition => ({\n ...condition,\n notificaitonConfigsType: condition.notificaitonConfigsType ? condition.notificaitonConfigsType.map(typeConfig => ({\n ...typeConfig,\n queryCode: typeConfig.queryCode === \"\" ? null : typeConfig.queryCode\n })) : condition.notificaitonConfigsType\n }))\n }));\n data.notificationConfigDetails = cleanedNotificationConfigDetails;\n if (id) {\n await update(data);\n } else {\n await save(data);\n }\n\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-save-button\",\n button_type: \"submit\",\n button_id: \"manageeventconfiguration-save-button\",\n });\n\n showToast({\n message: id\n ? \"Event updated successfully\"\n : \"Event created successfully\",\n type: \"success\",\n });\n submitRef.current = true;\n navigate(\"/ui/medplat/notification/all\");\n } else {\n showToast({\n message: \"Add at least one configuration before saving.\",\n type: \"warn\",\n });\n }\n } catch {\n showToast({\n message: \"Could not save this event. Please try again.\",\n type: \"error\",\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n /**\n * Loads initial data for forms, events, and notification types when the component mounts.\n *\n * @async\n * @function loadInitialData\n */\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const res = await retrieveAllForm({ is_active: true });\n setForms(res?.data);\n const manualevent = await retrieveManualEvents();\n\n setEvents(manualevent?.data);\n const notificationtype = await retrieveAllNotifications(true);\n let notificationtypeObject = {};\n notificationtype?.data?.forEach((type) => {\n notificationtypeObject[type?.id] = type?.notificationName;\n });\n setNotificationTypeMap(notificationtypeObject);\n\n const { data: reportList } = await getReportsList(); // doubt for import\n setReportList(reportList || []);\n\n if (id) {\n const responseByid = await retrieveByUUID(id);\n responseByid?.data?.notificationConfigDetails?.forEach((config) => {\n setImplicitParam(config);\n });\n let data = responseByid?.data;\n Object.keys(data)?.forEach((key) => {\n if (data[key] !== undefined && data[key] !== null) {\n setValue(key, data[key]);\n }\n });\n setNotificationConfigDetails(data?.notificationConfigDetails || []);\n }\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n message: \"Could not load this event. Please try again.\",\n type: `Error:${error?.message}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n /**\n * Sets implicit parameters for a given notification configuration.\n *\n * @function setImplicitParam\n * @param {Object} config - The notification configuration object.\n */\n const setImplicitParam = (config) => {\n config.implicitParam = [\"#resourceId#\"];\n\n // clauses that end the select list when they appear outside any bracket\n const clauseKeywords = [\n \"from\",\n \"where\",\n \"group\",\n \"having\",\n \"order\",\n \"limit\",\n \"offset\",\n \"union\",\n \"intersect\",\n \"except\",\n \"window\",\n \"fetch\",\n \"into\",\n \"returning\",\n ];\n\n if (config?.query) {\n // drop -- and /* */ comments, keeping string literals untouched\n let sql = \"\";\n let quote = null;\n for (let i = 0; i < config.query.length; i++) {\n const character = config.query[i];\n const nextCharacter = config.query[i + 1];\n if (quote) {\n sql += character;\n if (character === quote) {\n quote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n quote = character;\n sql += character;\n } else if (character === \"-\" && nextCharacter === \"-\") {\n while (i < config.query.length && config.query[i] !== \"\\n\") {\n i++;\n }\n sql += \"\\n\";\n } else if (character === \"/\" && nextCharacter === \"*\") {\n i += 2;\n while (\n i < config.query.length &&\n !(config.query[i] === \"*\" && config.query[i + 1] === \"/\")\n ) {\n i++;\n }\n i++;\n sql += \" \";\n } else {\n sql += character;\n }\n }\n\n // locate the select list of the outermost select, i.e. the first SELECT\n // that sits outside every bracket, so CTE bodies and sub queries are skipped\n let depth = 0;\n quote = null;\n let selectStart = -1;\n let selectEnd = -1;\n const commas = [];\n for (let i = 0; i < sql.length; i++) {\n const character = sql[i];\n if (quote) {\n if (character === quote) {\n quote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n quote = character;\n } else if (character === \"(\") {\n depth++;\n } else if (character === \")\") {\n depth--;\n } else if (depth === 0) {\n if (character === \";\" && selectStart >= 0) {\n selectEnd = i;\n break;\n } else if (character === \",\" && selectStart >= 0) {\n commas.push(i);\n } else if (\n /[a-z_]/i.test(character) &&\n !/[\\w.]/.test(sql[i - 1] || \"\")\n ) {\n const word = (sql.slice(i).match(/^[a-z_]+/i) || [\"\"])[0];\n if (selectStart < 0) {\n if (word.toLowerCase() === \"select\") {\n selectStart = i + word.length;\n }\n i += word.length - 1;\n } else if (clauseKeywords.includes(word.toLowerCase())) {\n selectEnd = i;\n break;\n } else {\n i += word.length - 1;\n }\n }\n }\n }\n\n // nothing to list when the statement has no outermost select, such as a\n // plain update or a CTE whose main statement is an update or a delete\n if (selectStart >= 0) {\n if (selectEnd < 0) {\n selectEnd = sql.length;\n }\n\n // split the select list on its own commas, ignoring the ones in brackets\n const namedParameters = [];\n let itemStart = selectStart;\n commas\n .filter((comma) => comma < selectEnd)\n .forEach((comma) => {\n namedParameters.push(sql.substring(itemStart, comma));\n itemStart = comma + 1;\n });\n namedParameters.push(sql.substring(itemStart, selectEnd));\n\n namedParameters.forEach((parameter) => {\n const tempParameter = parameter\n .replace(/^\\s*(distinct\\s+on\\s*\\([\\s\\S]*?\\)|distinct|all)\\s+/i, \"\")\n .trim();\n if (\n tempParameter &&\n tempParameter !== \"*\" &&\n !tempParameter.endsWith(\".*\")\n ) {\n // the last \" as \" that is outside brackets and string literals\n let aliasDepth = 0;\n let aliasQuote = null;\n let aliasIndex = -1;\n for (let i = 0; i < tempParameter.length; i++) {\n const character = tempParameter[i];\n if (aliasQuote) {\n if (character === aliasQuote) {\n aliasQuote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n aliasQuote = character;\n } else if (character === \"(\") {\n aliasDepth++;\n } else if (character === \")\") {\n aliasDepth--;\n } else if (\n aliasDepth === 0 &&\n /\\s/.test(character) &&\n /^as\\s/i.test(tempParameter.substring(i + 1))\n ) {\n aliasIndex = i + 1;\n }\n }\n // a column without an alias is kept as it is written, such as cs.id\n const parameterWithAlias =\n aliasIndex >= 0\n ? tempParameter.substring(aliasIndex + 3).trim()\n : tempParameter.replace(/\\s+/g, \" \").trim();\n const parameterName = parameterWithAlias.replace(/^\"|\"$/g, \"\");\n // expressions without an alias have no result column name to offer\n if (/^[a-z_][\\w$]*(\\.[a-z_][\\w$]*)*$/i.test(parameterName)) {\n config.implicitParam.push(\"#\" + parameterName + \"#\");\n }\n }\n });\n }\n }\n };\n\n /**\n * Handles the deletion of a row in the notification configurations.\n *\n * @function handleDeleteRow\n * @param {number} index - The index of the configuration to delete.\n */\n const handleDeleteRow = (index) => {\n const newRows = notificationConfigDetails?.filter(\n (_, rowIndex) => rowIndex !== index\n );\n setNotificationConfigDetails(newRows);\n setQueryErrors({});\n setCollapsedConfigs({});\n };\n\n /**\n * Deletes a specific condition from a configuration.\n *\n * @function deleteCondition\n * @param {number} configIndex - The index of the configuration containing the condition.\n * @param {number} index - The index of the condition to delete.\n */\n\n const deleteCondition = (configIndex, index) => {\n const notificationConfigDetail = [...notificationConfigDetails];\n\n const filteredConditions = notificationConfigDetail[\n configIndex\n ].conditions.filter((_, idx) => idx !== index);\n notificationConfigDetail[configIndex].conditions = filteredConditions;\n setNotificationConfigDetails(notificationConfigDetail);\n };\n /**\n * Opens the condition modal for adding or editing a condition.\n *\n * @async\n * @function openConditionModal\n * @param {Object} config - The configuration object containing the conditions.\n * @param {number} configIndex - The index of the configuration.\n * @param {Object} condition - The condition to be edited (if any).\n * @param {number} index - The index of the condition to be edited.\n */\n const openConditionModal = async (config, configIndex, condition, index) => {\n setSelectedConfig(config);\n setSelectedConfigIndex(configIndex);\n if (condition) {\n setSelectedCondition(condition);\n setConditionEditMode(true);\n setNewCondition(JSON.parse(JSON.stringify(condition)));\n setTypeConfigurationData(condition?.notificaitonConfigsType || []);\n setSelectedIndex(index);\n } else {\n setSelectedCondition({});\n setNewCondition({});\n setTypeConfigurationData([]);\n setConditionEditMode(false);\n }\n setNewType({});\n handleOverlayState();\n };\n\n /**\n * Handles changes to the query text in the notification configuration.\n *\n * @function handleTextChange\n * @param {number} index - The index of the configuration being updated.\n * @param {string} value - The new query value.\n */\n const handleTextChange = (index, value) => {\n const newConfig = [...notificationConfigDetails];\n newConfig[index].query = value; // Update the query in the configuration\n setNotificationConfigDetails(newConfig);\n setQueryErrors((current) => {\n const next = { ...current };\n if (value) delete next[index];\n else next[index] = \"Query Required\";\n return next;\n });\n };\n\n // Re-parsing the SQL for its result columns on every keystroke is wasteful,\n // and the placeholder list is only useful once the user pauses.\n const refreshImplicitParams = useDebounceFn((index) => {\n setNotificationConfigDetails((current) => {\n const next = [...current];\n if (next[index]) setImplicitParam(next[index]);\n return next;\n });\n }, 400);\n\n /**\n * Adds a new notification configuration to the list.\n *\n * @async\n * @function addConfiguration\n */\n const addConfiguration = async () => {\n const missing = {};\n notificationConfigDetails.forEach((notification, index) => {\n if (!notification.query) {\n missing[index] = \"Query Required\";\n }\n });\n if (Object.keys(missing).length > 0) {\n setQueryErrors(missing);\n return;\n }\n setNotificationConfigDetails([\n ...notificationConfigDetails,\n { query: \"\", conditions: [], queryParam: null },\n ]);\n setCollapsedConfigs({});\n };\n\n /**\n * Adds or edits a type configuration associated with a condition.\n *\n * @async\n * @function addTypeConfig\n * @param {Object} config - The type configuration to add or edit.\n * @param {number} index - The index of the configuration being edited (if applicable).\n */\n const addTypeConfig = async (config, index) => {\n if (config) {\n config.index = index;\n setSelectedTypeConfig(config);\n setNewType({\n ...JSON.parse(JSON.stringify(config)),\n implicitParam: selectedConfig.implicitParam,\n });\n setTypeEditMode(true);\n } else {\n setNewType({ ...newType, implicitParam: selectedConfig.implicitParam });\n setTypeEditMode(false);\n }\n openAddConfigurationModal();\n };\n\n /**\n * Opens the modal for adding or editing a type configuration.\n *\n * @function openAddConfigurationModal\n */\n const openAddConfigurationModal = () => {\n setToggleOtherOpen((cur) => !cur);\n };\n\n /**\n * Handles the addition of a new type configuration.\n *\n * @function handleOtherTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const handleOtherTypeConfiguration = (data) => {\n if (typeEditMode) {\n const updatedData = typeConfigurationData.map((item, index) => {\n if (index === data.index) {\n return { ...item, ...data };\n }\n return item;\n });\n setTypeConfigurationData(updatedData);\n } else {\n setTypeConfigurationData([...typeConfigurationData, data]);\n }\n addTypeConfiguration(data);\n };\n\n /**\n * Deletes a specific type configuration from the list.\n *\n * @function handleTypeConfigurationDelete\n * @param {number} index - The index of the type configuration to delete.\n */\n const handleTypeConfigurationDelete = (index) => {\n setTypeConfigurationData((prevData) =>\n prevData.filter((_, i) => i !== index)\n );\n };\n\n /**\n * Initiates the editing of a type configuration by setting it as the selected type configuration.\n *\n * @function handleTypeConfigurationEdit\n * @param {number} index - The index of the type configuration to edit.\n */\n const handleTypeConfigurationEdit = (index) => {\n addTypeConfig(typeConfigurationData[index], index);\n };\n\n /**\n * Adds a type configuration to the new condition being created or edited.\n *\n * @function addTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const addTypeConfiguration = (data) => {\n let condition = { ...newCondition };\n if (!newCondition.notificaitonConfigsType) {\n condition.notificaitonConfigsType = [];\n }\n if (typeEditMode) {\n condition.notificaitonConfigsType[selectedTypeConfig.index] = data;\n } else {\n condition.notificaitonConfigsType.push(data);\n }\n\n setNewCondition(condition);\n setNewType({});\n };\n\n const trackEvent = useTrackEvent();\n\n /**\n * Updates the new condition data based on the provided input.\n * If in edit mode, it updates an existing condition; otherwise, it adds a new one.\n *\n * @function setNewConditionData\n * @param {Object} data - The data to set for the new condition.\n */\n const setNewConditionData = (data) => {\n if (conditionEditMode) {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions[selectedIndex] =\n conditions;\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n } else {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions.push(conditions);\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n }\n };\n\n /**\n * Updates the new type data based on the provided input.\n *\n * @function setNewTypeData\n * @param {Object} data - The data to set for the new type.\n */\n const setNewTypeData = (data) => {\n setNewType({ ...newType, ...data });\n };\n\n const eventTypeOptions = useMemo(\n () =>\n EVENT_TYPES.map((type) => ({\n value: type.value,\n label: translate(type.label),\n })),\n [translate],\n );\n\n const triggerWhenOptions = useMemo(\n () =>\n TRIGGER_WHEN.map((trigger) => ({\n value: trigger.value,\n label: translate(trigger.label),\n })),\n [translate],\n );\n\n const formOptions = useMemo(\n () => (forms || []).map((form) => ({ value: form.id, label: form.name })),\n [forms],\n );\n\n const manualEventOptions = useMemo(\n () =>\n Object.entries(events || {}).map(([value, label]) => ({ value, label })),\n [events],\n );\n\n const showDay =\n eventType === \"TIMMER_BASED\" &&\n [\"AFTER\", \"MONTHLY\", \"WEEKLY\"].includes(trigerWhen);\n const showHour =\n eventType === \"TIMMER_BASED\" &&\n [\"AFTER\", \"MONTHLY\", \"DAILY\", \"WEEKLY\"].includes(trigerWhen);\n const showMinute =\n eventType === \"TIMMER_BASED\" && trigerWhen && trigerWhen !== \"IMMEDIATELY\";\n\n return (\n <>\n <Box\n component=\"form\"\n ref={formRef}\n onSubmit={handleSubmit(submit)}\n data-testid=\"manageeventconfiguration-form\"\n sx={{ display: \"block\", pb: 2 }}\n >\n <ManageEventConfigurationSkeleton isLoading={isLoading}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n mt: 2,\n mb: 3,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {/* ── Header ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n data-testid=\"manageeventconfiguration-cardheader-subheader\"\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"50%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {id ? translate(\"Update event\") : translate(\"New event\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Name the event, choose what triggers it, then add the queries and conditions that decide what happens.\",\n )}\n </Typography>\n </Box>\n </Box>\n\n {/* ── Section: details ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <SectionHeading>{translate(\"Event details\")}</SectionHeading>\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-name-field\"\n >\n <FieldLabel required>{translate(\"Name\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"name\"\n name=\"name\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-name-textfield\"\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-description-field\"\n >\n <FieldLabel>{translate(\"Description\")}</FieldLabel>\n <CustomTextArea\n control={control}\n id=\"description\"\n name=\"description\"\n errors={errors}\n label=\"\"\n minRows={2}\n data-testid=\"manageeventconfiguration-description-textarea\"\n />\n <FieldHelp>\n {translate(\"What this event is for, in one line\")}\n </FieldHelp>\n </Grid>\n </Grid>\n </Box>\n\n <Divider />\n\n {/* ── Section: trigger ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <SectionHeading\n hint={translate(\"What makes this event run\")}\n >\n {translate(\"Trigger\")}\n </SectionHeading>\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-eventtype-field\"\n >\n <FieldLabel required>{translate(\"Event Type\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"eventType\"\n options={eventTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-eventtype-select\"\n />\n </Grid>\n\n {eventType === \"FORM_SUBMITTED\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-formtype-field\"\n >\n <FieldLabel>{translate(\"Form Type\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"formTypeId\"\n options={formOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n isSortedOptions\n onChange={(event) => {\n const selectedData = forms?.find(\n (data) => data.id === event?.target?.value,\n );\n setValue(\"eventTypeDetailCode\", selectedData?.code);\n setValue(\n \"eventTypeDetailId\",\n selectedData?.detaiId || null,\n );\n }}\n dataTestId=\"manageeventconfiguration-formtype-select\"\n />\n </Grid>\n )}\n\n {eventType === \"TIMMER_BASED\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-triggerwhen-field\"\n >\n <FieldLabel required>\n {translate(\"Trigger When\")}\n </FieldLabel>\n <CustomDropdown\n control={control}\n name=\"trigerWhen\"\n options={triggerWhenOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-triggerwhen-select\"\n />\n </Grid>\n )}\n\n {showDay && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-day-field\"\n >\n <FieldLabel required>{translate(\"Day\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"day\"\n name=\"day\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-day-textfield\"\n />\n </Grid>\n )}\n\n {showHour && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-hour-field\"\n >\n <FieldLabel required>{translate(\"Hour\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"hour\"\n name=\"hour\"\n type=\"number\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-hour-textfield\"\n />\n </Grid>\n )}\n\n {showMinute && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-minute-field\"\n >\n <FieldLabel>{translate(\"Minute\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"minute\"\n name=\"minute\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-minute-textfield\"\n />\n </Grid>\n )}\n\n {eventType === \"RECURSION\" && (\n <Grid size={{ xs: 12, md: 6 }}>\n <FieldLabel required>\n {translate(\"Recursion Interval (in Minutes)\")}\n </FieldLabel>\n <CustomTextField\n type=\"number\"\n control={control}\n id=\"recursionInterval\"\n name=\"recursionInterval\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-recursionInterval-textfield\"\n />\n <FieldHelp>\n {translate(\"Between 1 and 1440 minutes\")}\n </FieldHelp>\n </Grid>\n )}\n\n {(eventType === \"TIMMER_BASED\" ||\n eventType === \"RECURSION\") && (\n <Grid size={{ xs: 12, md: 6 }}>\n <FieldLabel>{translate(\"Reports\")}</FieldLabel>\n <CustomDropdown\n id=\"reportUUID\"\n name=\"reportUUID\"\n displayName=\"name\"\n optionValue=\"uuid\"\n multiple\n control={control}\n options={reportList}\n errors={errors}\n />\n <FieldHelp>\n {translate(\"Reports refreshed after each run\")}\n </FieldHelp>\n </Grid>\n )}\n\n {eventType === \"MANUAL\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-event-field\"\n >\n <FieldLabel>{translate(\"Event\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"eventTypeDetailCode\"\n options={manualEventOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-eventtype-detail-select\"\n />\n </Grid>\n )}\n </Grid>\n </Box>\n\n <Divider />\n\n {/* ── Section: configurations ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <SectionHeading\n hint={translate(\n \"Each configuration runs a query, then acts on the rows it returns.\",\n )}\n >\n {translate(\"Configurations\")}\n </SectionHeading>\n <Button\n size=\"small\"\n variant=\"outlined\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addConfiguration}\n data-testid=\"manageeventconfiguration-add-button\"\n >\n {translate(\"Add configuration\")}\n </Button>\n </Box>\n\n <Box\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}\n data-testid=\"manageeventconfiguration-table-container\"\n >\n {notificationConfigDetails?.length === 0 && (\n <EmptyState\n icon=\"faDatabase\"\n title={translate(\"No configurations yet\")}\n body={translate(\n \"Add a configuration to write the query this event runs and the actions it triggers.\",\n )}\n action={\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addConfiguration}\n >\n {translate(\"Add configuration\")}\n </Button>\n }\n dataTestId=\"manageeventconfiguration-no-configurations\"\n />\n )}\n\n {notificationConfigDetails?.map((row, index) => (\n <Paper\n key={index + 1}\n elevation={0}\n variant=\"outlined\"\n sx={{\n p: 2,\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n }}\n data-testid={`manageeventconfiguration-table-row-${index}`}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 2,\n flexWrap: \"wrap\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n flexWrap: \"wrap\",\n }}\n >\n <Tooltip\n title={\n collapsedConfigs[index]\n ? translate(\"Expand\")\n : translate(\"Collapse\")\n }\n >\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollapsedConfigs((current) => ({\n ...current,\n [index]: !current[index],\n }))\n }\n aria-expanded={!collapsedConfigs[index]}\n aria-label={\n collapsedConfigs[index]\n ? translate(\"Expand\")\n : translate(\"Collapse\")\n }\n data-testid={`manageeventconfiguration-table-row-${index}-collapse`}\n >\n <FontAwesomeIcons\n iconName={\n collapsedConfigs[index]\n ? \"faChevronRight\"\n : \"faChevronDown\"\n }\n size=\"sm\"\n />\n </IconButton>\n </Tooltip>\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 700 }}\n >\n {translate(\"Configuration\")} {index + 1}\n </Typography>\n {/* Summary so a collapsed card still says what it does */}\n {!row?.query && (\n <Chip\n size=\"small\"\n color=\"warning\"\n variant=\"outlined\"\n label={translate(\"Query missing\")}\n />\n )}\n <Typography variant=\"caption\" color=\"text.secondary\">\n {row?.conditions?.length || 0}{\" \"}\n {translate(\"conditions\")}\n {\" · \"}\n {(row?.conditions || []).reduce(\n (total, condition) =>\n total +\n (condition?.notificaitonConfigsType?.length ||\n 0),\n 0,\n )}{\" \"}\n {translate(\"actions\")}\n </Typography>\n </Box>\n <Box\n data-testid={`manageeventconfiguration-table-row-${index}-action`}\n >\n <Tooltip title={translate(\"Delete configuration\")}>\n <IconButton\n size=\"small\"\n color=\"error\"\n onClick={() => setConfigPendingDelete(index)}\n aria-label={translate(\"Delete configuration\")}\n data-testid={`manageeventconfiguration-table-row-${index}-action-delete`}\n >\n <FontAwesomeIcons iconName=\"faTrash\" />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n\n <Collapse\n in={!collapsedConfigs[index]}\n // The SQL editor is expensive; keep it mounted so an\n // in-progress query survives a collapse.\n unmountOnExit={false}\n >\n <Grid container spacing={2} alignItems=\"stretch\">\n {/* Query */}\n <Grid\n size={{ xs: 12, lg: 6.5 }}\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}\n data-testid={`manageeventconfiguration-table-row-${index}-query`}\n >\n <FieldLabel required>\n <span data-testid=\"manageeventconfiguration-table-header-query\">\n {translate(\"Query\")}\n </span>\n </FieldLabel>\n <Box\n sx={{\n overflow: \"hidden\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n border: \"1px solid\",\n borderColor: queryErrors[index]\n ? \"error.main\"\n : \"divider\",\n }}\n data-testid={`manageeventconfiguration-table-row-${index}-query-textarea`}\n >\n <PostgresEditor\n height=\"30vh\"\n autoFocus={false}\n defaultValue={row.query || \"\"}\n onChange={(value) => {\n handleTextChange(index, value);\n refreshImplicitParams(index);\n }}\n />\n </Box>\n {queryErrors[index] && (\n <Typography\n variant=\"caption\"\n color=\"error\"\n data-testid=\"custom-error-message\"\n >\n {translate(queryErrors[index])}\n </Typography>\n )}\n <FieldHelp>\n {translate(\n \"Every column this query selects becomes a placeholder the conditions can use.\",\n )}\n </FieldHelp>\n <ImplicitParams\n params={row?.implicitParam}\n translate={translate}\n />\n </Grid>\n\n {/* Conditions */}\n <Grid\n size={{ xs: 12, lg: 5.5 }}\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}\n data-testid={`manageeventconfiguration-table-row-${index}-condition`}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <FieldLabel>\n <span data-testid=\"manageeventconfiguration-table-header-condition\">\n {translate(\"Condition\")}\n </span>\n </FieldLabel>\n <Button\n size=\"small\"\n variant=\"text\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" size=\"sm\" />}\n onClick={() => openConditionModal(row, index)}\n data-testid={\n row?.conditions?.length > 0\n ? `manageeventconfiguration-table-row-${index}-condition-add`\n : `manageeventconfiguration-table-row-${index}-condition-add-empty`\n }\n >\n {translate(\"Add condition\")}\n </Button>\n </Box>\n\n {row?.conditions?.length > 0 ? (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"1 1 auto\",\n maxHeight: \"30vh\",\n overflowY: \"auto\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n }}\n >\n {row.conditions.map((condition, conditionIndex) => (\n <Box\n key={conditionIndex + 1}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 1,\n px: 1.5,\n py: 1,\n borderTop: conditionIndex === 0 ? \"none\" : \"1px solid\",\n borderColor: \"divider\",\n }}\n data-testid=\"manageeventconfiguration-condition-rows\"\n >\n <Box sx={{ minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n sx={{\n fontFamily: condition?.condition\n ? \"monospace\"\n : \"inherit\",\n wordBreak: \"break-word\",\n }}\n >\n {condition?.condition ||\n translate(\"Always runs\")}\n </Typography>\n {condition?.notificaitonConfigsType?.length >\n 0 ? (\n <Box\n sx={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 0.5,\n mt: 0.5,\n }}\n >\n {condition.notificaitonConfigsType.map(\n (action, actionIndex) => (\n <Chip\n key={actionIndex + 1}\n size=\"small\"\n variant=\"outlined\"\n icon={\n <FontAwesomeIcons\n iconName={iconOf(action?.type)}\n size=\"sm\"\n />\n }\n label={translate(\n labelOf(ACTION_TYPES, action?.type),\n )}\n />\n ),\n )}\n </Box>\n ) : (\n <Typography\n variant=\"caption\"\n color=\"warning.main\"\n >\n {translate(\"No actions\")}\n </Typography>\n )}\n </Box>\n <Box sx={{ display: \"flex\", gap: 0.5, flexShrink: 0 }}>\n <Tooltip title={translate(\"Edit condition\")}>\n <IconButton\n size=\"small\"\n aria-label={translate(\"Edit condition\")}\n onClick={() =>\n openConditionModal(\n row,\n index,\n condition,\n conditionIndex,\n )\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-edit-${conditionIndex}`}\n >\n <FontAwesomeIcons iconName=\"faPen\" size=\"sm\" />\n </IconButton>\n </Tooltip>\n <Tooltip title={translate(\"Delete condition\")}>\n <IconButton\n size=\"small\"\n color=\"error\"\n aria-label={translate(\"Delete condition\")}\n onClick={() =>\n deleteCondition(index, conditionIndex)\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-delete-${conditionIndex}`}\n >\n <FontAwesomeIcons iconName=\"faTrash\" size=\"sm\" />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n ))}\n </Box>\n ) : (\n <Box\n sx={{\n flex: \"1 1 auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n px: 2,\n py: 3,\n border: \"1px dashed\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n }}\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"No conditions yet. Without one, this configuration does nothing.\",\n )}\n </Typography>\n </Box>\n )}\n </Grid>\n </Grid>\n </Collapse>\n </Paper>\n ))}\n </Box>\n </Box>\n </Box>\n </Paper>\n\n {/* ── Sticky action bar ── */}\n <Paper\n elevation={0}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 2,\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 1.5,\n p: 2,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n data-testid=\"manageeventconfiguration-cardactions\"\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n type=\"button\"\n size=\"small\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-back-button\",\n button_type: \"cancel\",\n button_id: \"manageeventconfiguration-back-button\",\n });\n navigate(\"/ui/medplat/notification/all\");\n }}\n data-testid=\"manageeventconfiguration-back-button\"\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n disabled={isSubmitting}\n data-testid=\"manageeventconfiguration-save-button\"\n >\n {translate(`${id ? \"Update\" : \"Save\"}`)}\n </Button>\n </Paper>\n </ManageEventConfigurationSkeleton>\n </Box>\n\n <CustomConfirmationModal\n open={configPendingDelete !== null}\n handleClose={() => setConfigPendingDelete(null)}\n handleClick={() => {\n handleDeleteRow(configPendingDelete);\n setConfigPendingDelete(null);\n }}\n title={translate(\"Delete this configuration?\")}\n description={`${translate(\"Configuration\")} ${\n (configPendingDelete ?? 0) + 1\n }, its query and ${\n notificationConfigDetails?.[configPendingDelete]?.conditions?.length ||\n 0\n } ${translate(\n \"conditions will be removed. This cannot be undone.\",\n )}`}\n dataTestId=\"manageeventconfiguration-delete-configuration-confirmation\"\n />\n\n <Suspense>\n <ConditionConfig\n selectedConfig={selectedConfig}\n notificationtypeMap={notificationTypeMap}\n selectedCondition={selectedCondition}\n newCondition={newCondition}\n handleTypeConfigurationDelete={handleTypeConfigurationDelete}\n handleTypeConfigurationEdit={handleTypeConfigurationEdit}\n addTypeConfig={addTypeConfig}\n setNewConditionData={setNewConditionData}\n typeConfigurationData={typeConfigurationData}\n setNewTypeData={setNewTypeData}\n overlayOpen={overlayOpen}\n handleOverlayState={handleOverlayState}\n data-testid=\"manageeventconfiguration-conditionconfig\"\n />\n </Suspense>\n <Suspense>\n {newType?.type === \"MOBILE\" ? (\n <MobileTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n notificationtypeMap={notificationTypeMap}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-mobiletypeeventconfigmodal\"\n />\n ) : (\n <OtherTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-othertypeeventconfigmodal\"\n />\n )}\n </Suspense>\n </>\n );\n}\n\nexport default ManageEventConfiguration;\n"],"names":["ConditionConfig","lazy","MobileTypeEventConfigModal","OtherTypeEventConfigModal","ManageEventConfiguration","translate","useTranslateProvider","formRef","useRef","submitRef","id","useParams","navigate","useNavigate","forms","setForms","useState","events","setEvents","notificationTypeMap","setNotificationTypeMap","notificationConfigDetails","setNotificationConfigDetails","selectedConfigIndex","setSelectedConfigIndex","selectedConfig","setSelectedConfig","selectedCondition","setSelectedCondition","selectedIndex","setSelectedIndex","newCondition","setNewCondition","conditionEditMode","setConditionEditMode","selectedTypeConfig","setSelectedTypeConfig","newType","setNewType","overlayOpen","setOverlayOpen","typeEditMode","setTypeEditMode","toggleOtherOpen","setToggleOtherOpen","typeConfigurationData","setTypeConfigurationData","isLoading","setIsLoading","reportList","setReportList","queryErrors","setQueryErrors","collapsedConfigs","setCollapsedConfigs","configPendingDelete","setConfigPendingDelete","handleOverlayState","validationSchema","Yup","eventType","schema","value","trigerWhen","control","handleSubmit","setValue","watch","errors","isSubmitting","useForm","yupResolver","useEffect","form","trackEvent","submit","data","config","nextErrors","index","showToast","isTimerBased","isFormSubmitted","isManual","isRecursion","needsDay","needsHour","cleanedNotificationConfigDetails","_a","condition","typeConfig","update","save","cur","loadInitialData","res","retrieveAllForm","manualevent","retrieveManualEvents","notificationtype","retrieveAllNotifications","notificationtypeObject","type","getReportsList","responseByid","retrieveByUUID","_c","_b","setImplicitParam","_d","key","error","clauseKeywords","sql","quote","i","character","nextCharacter","depth","selectStart","selectEnd","commas","word","namedParameters","itemStart","comma","parameter","tempParameter","aliasDepth","aliasQuote","aliasIndex","parameterName","handleDeleteRow","newRows","_","rowIndex","deleteCondition","configIndex","notificationConfigDetail","filteredConditions","idx","openConditionModal","handleTextChange","newConfig","current","next","refreshImplicitParams","useDebounceFn","addConfiguration","missing","notification","addTypeConfig","openAddConfigurationModal","handleOtherTypeConfiguration","updatedData","item","addTypeConfiguration","handleTypeConfigurationDelete","prevData","handleTypeConfigurationEdit","useTrackEvent","setNewConditionData","conditions","setNewTypeData","eventTypeOptions","useMemo","EVENT_TYPES","triggerWhenOptions","TRIGGER_WHEN","trigger","formOptions","manualEventOptions","label","showDay","showHour","showMinute","jsxs","Fragment","jsx","Box","ManageEventConfigurationSkeleton","Paper","t","Typography","SectionHeading","Grid","FieldLabel","CustomTextField","CustomTextArea","FieldHelp","Divider","CustomDropdown","event","selectedData","Button","FontAwesomeIcons","EmptyState","row","Tooltip","IconButton","Chip","total","Collapse","PostgresEditor","ImplicitParams","conditionIndex","action","actionIndex","iconOf","labelOf","ACTION_TYPES","CustomConfirmationModal","Suspense"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManageEventConfiguration-DqPbn3Oi.js","sources":["../src/views/Events/ManageEventConfiguration.jsx"],"sourcesContent":["import {\n retrieveAllForm,\n retrieveByUUID,\n retrieveManualEvents,\n save,\n update,\n} from \"../../services/EventConfig\";\nimport {\n getReportsList,\n retrieveAllNotifications,\n} from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomTextArea from \"@/views/custom-components/CustomTextArea\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport PostgresEditor from \"@/views/custom-components/PostgresEditor\";\nimport {\n Box,\n Button,\n Chip,\n Collapse,\n Divider,\n IconButton,\n Paper,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport React, { lazy, Suspense, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router\";\nimport { useParams } from \"react-router-dom\";\nimport * as Yup from \"yup\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nconst ConditionConfig = lazy(() => import(\"./ConditionConfig\"));\nconst MobileTypeEventConfigModal = lazy(\n () => import(\"./MobileTypeEventConfigModal\")\n);\nconst OtherTypeEventConfigModal = lazy(\n () => import(\"./OtherTypeEventConfigModal\")\n);\nimport { ManageEventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport {\n ACTION_TYPES,\n EmptyState,\n EVENT_TYPES,\n FieldHelp,\n FieldLabel,\n iconOf,\n ImplicitParams,\n labelOf,\n SectionHeading,\n TRIGGER_WHEN,\n} from \"./components/EventsUi\";\n\n/**\n * ManageEventConfiguration component handles the creation and editing\n * of event configurations, including various notification types and triggers.\n * @module ManageEventConfiguration\n *\n *\n *\n * @component\n */\nfunction ManageEventConfiguration() {\n const { translate } = useTranslateProvider();\n\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const { id } = useParams();\n const navigate = useNavigate();\n const [forms, setForms] = useState(null);\n const [events, setEvents] = useState(null);\n const [notificationTypeMap, setNotificationTypeMap] = useState({});\n const [notificationConfigDetails, setNotificationConfigDetails] = useState(\n []\n );\n const [selectedConfigIndex, setSelectedConfigIndex] = useState(null);\n const [selectedConfig, setSelectedConfig] = useState(null);\n const [selectedCondition, setSelectedCondition] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(null);\n const [newCondition, setNewCondition] = useState(null);\n const [conditionEditMode, setConditionEditMode] = useState(null);\n const [selectedTypeConfig, setSelectedTypeConfig] = useState(null);\n const [newType, setNewType] = useState(null);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [typeEditMode, setTypeEditMode] = useState(false);\n const [toggleOtherOpen, setToggleOtherOpen] = useState(false);\n const [typeConfigurationData, setTypeConfigurationData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [reportList, setReportList] = useState([]);\n const [queryErrors, setQueryErrors] = useState({});\n // Collapsed-by-index. Reset whenever the list changes, so a delete can never\n // leave the collapsed flags pointing at a different configuration.\n const [collapsedConfigs, setCollapsedConfigs] = useState({});\n const [configPendingDelete, setConfigPendingDelete] = useState(null);\n\n /**\n * Toggles the overlay open/closed state.\n *\n * @function handleOverlayState\n */\n const handleOverlayState = () => setOverlayOpen(!overlayOpen);\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Enter Name\"),\n eventType: Yup.string().required(\"Select Event Type\"),\n recursionInterval: Yup.number()\n .typeError(\"Recursion Interval must be a number\")\n .when([], {\n is: () => eventType === \"RECURSION\",\n then: (schema) =>\n schema\n .required(\"Recursion Interval is required\")\n .moreThan(0, \"Recursion Interval must be greater than or equal to 1\")\n .lessThan(1441, \"Recursion Interval must be less than or equal to 1440\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n trigerWhen: Yup.string().test(\n \"is-required\",\n \"trigerWhen is required\",\n function (value) {\n if (eventType === \"TIMMER_BASED\") {\n return !!value;\n }\n return true;\n }\n ),\n day: Yup.string().test(\"is-required\", \"day is required\", function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" || trigerWhen === \"MONTHLY\")\n ) {\n return !!value;\n }\n return true;\n }),\n hour: Yup.string().test(\n \"is-required\",\n \"hour is required\",\n function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" ||\n trigerWhen === \"MONTHLY\" ||\n trigerWhen === \"DAILY\")\n ) {\n return !!value;\n }\n return true;\n }\n ),\n minute: Yup.string().notRequired(),\n });\n const {\n control,\n handleSubmit,\n setValue,\n watch,\n formState: { errors, isSubmitting },\n } = useForm({\n defaultValues: {\n name: \"\",\n description: \"\",\n eventType: \"\",\n recursionInterval: 0,\n minute: 0\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n const eventType = watch(\"eventType\");\n let trigerWhen = watch(\"trigerWhen\");\n\n /**\n * Handles form submission.\n *\n * @async\n * @function submit\n * @param {Object} data - The form data to submit.\n */\n\n useEffect(() => {\n let form = formRef.current;\n\n return () => {\n trackEvent(\"conversion_event\", {\n form,\n form_name: \"Manage Event Configuration\",\n submit: submitRef.current,\n }); // Use the current ref value\n };\n }, []);\n const submit = async (data) => {\n try {\n if (notificationConfigDetails.length > 0) {\n const missingQuery = notificationConfigDetails.some(\n (config) => !config.query,\n );\n if (missingQuery) {\n const nextErrors = {};\n notificationConfigDetails.forEach((config, index) => {\n if (!config.query) nextErrors[index] = \"Query Required\";\n });\n setQueryErrors(nextErrors);\n showToast({\n message: \"Every configuration needs a query before you can save.\",\n type: \"warn\",\n });\n return;\n }\n data.minute = Number(data.minute || 0);\n data.notificationConfigDetails = notificationConfigDetails;\n\n const isTimerBased = eventType === \"TIMMER_BASED\";\n const isFormSubmitted = eventType === \"FORM_SUBMITTED\";\n const isManual = eventType === \"MANUAL\";\n const isRecursion = eventType === \"RECURSION\";\n if (!isTimerBased) {\n delete data.trigerWhen;\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n if (!isFormSubmitted) {\n delete data.formTypeId;\n }\n if (!isFormSubmitted && !isManual) {\n delete data.eventTypeDetailCode;\n delete data.eventTypeDetailId;\n }\n if (isRecursion) {\n delete data.formTypeId;\n data.trigerWhen = \"RECURSION\";\n } else {\n delete data.recursionInterval;\n }\n\n const needsDay = [\"AFTER\", \"MONTHLY\", \"WEEKLY\"];\n const needsHour = [\"AFTER\", \"MONTHLY\", \"DAILY\", \"WEEKLY\"];\n if (!needsDay.includes(trigerWhen)) {\n delete data.day;\n }\n if (!needsHour.includes(trigerWhen)) {\n delete data.day;\n delete data.hour;\n }\n if (trigerWhen === \"IMMEDIATELY\") {\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n const cleanedNotificationConfigDetails = notificationConfigDetails.map(config => ({\n ...config,\n conditions: config.conditions?.map(condition => ({\n ...condition,\n notificaitonConfigsType: condition.notificaitonConfigsType ? condition.notificaitonConfigsType.map(typeConfig => ({\n ...typeConfig,\n queryCode: typeConfig.queryCode === \"\" ? null : typeConfig.queryCode\n })) : condition.notificaitonConfigsType\n }))\n }));\n data.notificationConfigDetails = cleanedNotificationConfigDetails;\n if (id) {\n await update(data);\n } else {\n await save(data);\n }\n\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-save-button\",\n button_type: \"submit\",\n button_id: \"manageeventconfiguration-save-button\",\n });\n\n showToast({\n message: id\n ? \"Event updated successfully\"\n : \"Event created successfully\",\n type: \"success\",\n });\n submitRef.current = true;\n navigate(\"/ui/medplat/notification/all\");\n } else {\n showToast({\n message: \"Add at least one configuration before saving.\",\n type: \"warn\",\n });\n }\n } catch {\n showToast({\n message: \"Could not save this event. Please try again.\",\n type: \"error\",\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n /**\n * Loads initial data for forms, events, and notification types when the component mounts.\n *\n * @async\n * @function loadInitialData\n */\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const res = await retrieveAllForm({ is_active: true });\n setForms(res?.data);\n const manualevent = await retrieveManualEvents();\n\n setEvents(manualevent?.data);\n const notificationtype = await retrieveAllNotifications(true);\n let notificationtypeObject = {};\n notificationtype?.data?.forEach((type) => {\n notificationtypeObject[type?.id] = type?.notificationName;\n });\n setNotificationTypeMap(notificationtypeObject);\n\n const { data: reportList } = await getReportsList(); // doubt for import\n setReportList(reportList || []);\n\n if (id) {\n const responseByid = await retrieveByUUID(id);\n responseByid?.data?.notificationConfigDetails?.forEach((config) => {\n setImplicitParam(config);\n });\n let data = responseByid?.data;\n Object.keys(data)?.forEach((key) => {\n if (data[key] !== undefined && data[key] !== null) {\n setValue(key, data[key]);\n }\n });\n setNotificationConfigDetails(data?.notificationConfigDetails || []);\n }\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n message: \"Could not load this event. Please try again.\",\n type: `Error:${error?.message}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n /**\n * Sets implicit parameters for a given notification configuration.\n *\n * @function setImplicitParam\n * @param {Object} config - The notification configuration object.\n */\n const setImplicitParam = (config) => {\n config.implicitParam = [\"#resourceId#\"];\n\n // clauses that end the select list when they appear outside any bracket\n const clauseKeywords = [\n \"from\",\n \"where\",\n \"group\",\n \"having\",\n \"order\",\n \"limit\",\n \"offset\",\n \"union\",\n \"intersect\",\n \"except\",\n \"window\",\n \"fetch\",\n \"into\",\n \"returning\",\n ];\n\n if (config?.query) {\n // drop -- and /* */ comments, keeping string literals untouched\n let sql = \"\";\n let quote = null;\n for (let i = 0; i < config.query.length; i++) {\n const character = config.query[i];\n const nextCharacter = config.query[i + 1];\n if (quote) {\n sql += character;\n if (character === quote) {\n quote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n quote = character;\n sql += character;\n } else if (character === \"-\" && nextCharacter === \"-\") {\n while (i < config.query.length && config.query[i] !== \"\\n\") {\n i++;\n }\n sql += \"\\n\";\n } else if (character === \"/\" && nextCharacter === \"*\") {\n i += 2;\n while (\n i < config.query.length &&\n !(config.query[i] === \"*\" && config.query[i + 1] === \"/\")\n ) {\n i++;\n }\n i++;\n sql += \" \";\n } else {\n sql += character;\n }\n }\n\n // locate the select list of the outermost select, i.e. the first SELECT\n // that sits outside every bracket, so CTE bodies and sub queries are skipped\n let depth = 0;\n quote = null;\n let selectStart = -1;\n let selectEnd = -1;\n const commas = [];\n for (let i = 0; i < sql.length; i++) {\n const character = sql[i];\n if (quote) {\n if (character === quote) {\n quote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n quote = character;\n } else if (character === \"(\") {\n depth++;\n } else if (character === \")\") {\n depth--;\n } else if (depth === 0) {\n if (character === \";\" && selectStart >= 0) {\n selectEnd = i;\n break;\n } else if (character === \",\" && selectStart >= 0) {\n commas.push(i);\n } else if (\n /[a-z_]/i.test(character) &&\n !/[\\w.]/.test(sql[i - 1] || \"\")\n ) {\n const word = (sql.slice(i).match(/^[a-z_]+/i) || [\"\"])[0];\n if (selectStart < 0) {\n if (word.toLowerCase() === \"select\") {\n selectStart = i + word.length;\n }\n i += word.length - 1;\n } else if (clauseKeywords.includes(word.toLowerCase())) {\n selectEnd = i;\n break;\n } else {\n i += word.length - 1;\n }\n }\n }\n }\n\n // nothing to list when the statement has no outermost select, such as a\n // plain update or a CTE whose main statement is an update or a delete\n if (selectStart >= 0) {\n if (selectEnd < 0) {\n selectEnd = sql.length;\n }\n\n // split the select list on its own commas, ignoring the ones in brackets\n const namedParameters = [];\n let itemStart = selectStart;\n commas\n .filter((comma) => comma < selectEnd)\n .forEach((comma) => {\n namedParameters.push(sql.substring(itemStart, comma));\n itemStart = comma + 1;\n });\n namedParameters.push(sql.substring(itemStart, selectEnd));\n\n namedParameters.forEach((parameter) => {\n const tempParameter = parameter\n .replace(/^\\s*(distinct\\s+on\\s*\\([\\s\\S]*?\\)|distinct|all)\\s+/i, \"\")\n .trim();\n if (\n tempParameter &&\n tempParameter !== \"*\" &&\n !tempParameter.endsWith(\".*\")\n ) {\n // the last \" as \" that is outside brackets and string literals\n let aliasDepth = 0;\n let aliasQuote = null;\n let aliasIndex = -1;\n for (let i = 0; i < tempParameter.length; i++) {\n const character = tempParameter[i];\n if (aliasQuote) {\n if (character === aliasQuote) {\n aliasQuote = null;\n }\n } else if (character === \"'\" || character === '\"') {\n aliasQuote = character;\n } else if (character === \"(\") {\n aliasDepth++;\n } else if (character === \")\") {\n aliasDepth--;\n } else if (\n aliasDepth === 0 &&\n /\\s/.test(character) &&\n /^as\\s/i.test(tempParameter.substring(i + 1))\n ) {\n aliasIndex = i + 1;\n }\n }\n // a column without an alias is kept as it is written, such as cs.id\n const parameterWithAlias =\n aliasIndex >= 0\n ? tempParameter.substring(aliasIndex + 3).trim()\n : tempParameter.replace(/\\s+/g, \" \").trim();\n const parameterName = parameterWithAlias.replace(/^\"|\"$/g, \"\");\n // expressions without an alias have no result column name to offer\n if (/^[a-z_][\\w$]*(\\.[a-z_][\\w$]*)*$/i.test(parameterName)) {\n config.implicitParam.push(\"#\" + parameterName + \"#\");\n }\n }\n });\n }\n }\n };\n\n /**\n * Handles the deletion of a row in the notification configurations.\n *\n * @function handleDeleteRow\n * @param {number} index - The index of the configuration to delete.\n */\n const handleDeleteRow = (index) => {\n const newRows = notificationConfigDetails?.filter(\n (_, rowIndex) => rowIndex !== index\n );\n setNotificationConfigDetails(newRows);\n setQueryErrors({});\n setCollapsedConfigs({});\n };\n\n /**\n * Deletes a specific condition from a configuration.\n *\n * @function deleteCondition\n * @param {number} configIndex - The index of the configuration containing the condition.\n * @param {number} index - The index of the condition to delete.\n */\n\n const deleteCondition = (configIndex, index) => {\n const notificationConfigDetail = [...notificationConfigDetails];\n\n const filteredConditions = notificationConfigDetail[\n configIndex\n ].conditions.filter((_, idx) => idx !== index);\n notificationConfigDetail[configIndex].conditions = filteredConditions;\n setNotificationConfigDetails(notificationConfigDetail);\n };\n /**\n * Opens the condition modal for adding or editing a condition.\n *\n * @async\n * @function openConditionModal\n * @param {Object} config - The configuration object containing the conditions.\n * @param {number} configIndex - The index of the configuration.\n * @param {Object} condition - The condition to be edited (if any).\n * @param {number} index - The index of the condition to be edited.\n */\n const openConditionModal = async (config, configIndex, condition, index) => {\n setSelectedConfig(config);\n setSelectedConfigIndex(configIndex);\n if (condition) {\n setSelectedCondition(condition);\n setConditionEditMode(true);\n setNewCondition(JSON.parse(JSON.stringify(condition)));\n setTypeConfigurationData(condition?.notificaitonConfigsType || []);\n setSelectedIndex(index);\n } else {\n setSelectedCondition({});\n setNewCondition({});\n setTypeConfigurationData([]);\n setConditionEditMode(false);\n }\n setNewType({});\n handleOverlayState();\n };\n\n /**\n * Handles changes to the query text in the notification configuration.\n *\n * @function handleTextChange\n * @param {number} index - The index of the configuration being updated.\n * @param {string} value - The new query value.\n */\n const handleTextChange = (index, value) => {\n const newConfig = [...notificationConfigDetails];\n newConfig[index].query = value; // Update the query in the configuration\n setNotificationConfigDetails(newConfig);\n setQueryErrors((current) => {\n const next = { ...current };\n if (value) delete next[index];\n else next[index] = \"Query Required\";\n return next;\n });\n };\n\n // Re-parsing the SQL for its result columns on every keystroke is wasteful,\n // and the placeholder list is only useful once the user pauses.\n const refreshImplicitParams = useDebounceFn((index) => {\n setNotificationConfigDetails((current) => {\n const next = [...current];\n if (next[index]) setImplicitParam(next[index]);\n return next;\n });\n }, 400);\n\n /**\n * Adds a new notification configuration to the list.\n *\n * @async\n * @function addConfiguration\n */\n const addConfiguration = async () => {\n const missing = {};\n notificationConfigDetails.forEach((notification, index) => {\n if (!notification.query) {\n missing[index] = \"Query Required\";\n }\n });\n if (Object.keys(missing).length > 0) {\n setQueryErrors(missing);\n return;\n }\n setNotificationConfigDetails([\n ...notificationConfigDetails,\n { query: \"\", conditions: [], queryParam: null },\n ]);\n setCollapsedConfigs({});\n };\n\n /**\n * Adds or edits a type configuration associated with a condition.\n *\n * @async\n * @function addTypeConfig\n * @param {Object} config - The type configuration to add or edit.\n * @param {number} index - The index of the configuration being edited (if applicable).\n */\n const addTypeConfig = async (config, index) => {\n if (config) {\n config.index = index;\n setSelectedTypeConfig(config);\n setNewType({\n ...JSON.parse(JSON.stringify(config)),\n implicitParam: selectedConfig.implicitParam,\n });\n setTypeEditMode(true);\n } else {\n setNewType({ ...newType, implicitParam: selectedConfig.implicitParam });\n setTypeEditMode(false);\n }\n openAddConfigurationModal();\n };\n\n /**\n * Opens the modal for adding or editing a type configuration.\n *\n * @function openAddConfigurationModal\n */\n const openAddConfigurationModal = () => {\n setToggleOtherOpen((cur) => !cur);\n };\n\n /**\n * Handles the addition of a new type configuration.\n *\n * @function handleOtherTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const handleOtherTypeConfiguration = (data) => {\n if (typeEditMode) {\n const updatedData = typeConfigurationData.map((item, index) => {\n if (index === data.index) {\n return { ...item, ...data };\n }\n return item;\n });\n setTypeConfigurationData(updatedData);\n } else {\n setTypeConfigurationData([...typeConfigurationData, data]);\n }\n addTypeConfiguration(data);\n };\n\n /**\n * Deletes a specific type configuration from the list.\n *\n * @function handleTypeConfigurationDelete\n * @param {number} index - The index of the type configuration to delete.\n */\n const handleTypeConfigurationDelete = (index) => {\n setTypeConfigurationData((prevData) =>\n prevData.filter((_, i) => i !== index)\n );\n };\n\n /**\n * Initiates the editing of a type configuration by setting it as the selected type configuration.\n *\n * @function handleTypeConfigurationEdit\n * @param {number} index - The index of the type configuration to edit.\n */\n const handleTypeConfigurationEdit = (index) => {\n addTypeConfig(typeConfigurationData[index], index);\n };\n\n /**\n * Adds a type configuration to the new condition being created or edited.\n *\n * @function addTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const addTypeConfiguration = (data) => {\n let condition = { ...newCondition };\n if (!newCondition.notificaitonConfigsType) {\n condition.notificaitonConfigsType = [];\n }\n if (typeEditMode) {\n condition.notificaitonConfigsType[selectedTypeConfig.index] = data;\n } else {\n condition.notificaitonConfigsType.push(data);\n }\n\n setNewCondition(condition);\n setNewType({});\n };\n\n const trackEvent = useTrackEvent();\n\n /**\n * Updates the new condition data based on the provided input.\n * If in edit mode, it updates an existing condition; otherwise, it adds a new one.\n *\n * @function setNewConditionData\n * @param {Object} data - The data to set for the new condition.\n */\n const setNewConditionData = (data) => {\n if (conditionEditMode) {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions[selectedIndex] =\n conditions;\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n } else {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions.push(conditions);\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n }\n };\n\n /**\n * Updates the new type data based on the provided input.\n *\n * @function setNewTypeData\n * @param {Object} data - The data to set for the new type.\n */\n const setNewTypeData = (data) => {\n setNewType({ ...newType, ...data });\n };\n\n const eventTypeOptions = useMemo(\n () =>\n EVENT_TYPES.map((type) => ({\n value: type.value,\n label: translate(type.label),\n })),\n [translate],\n );\n\n const triggerWhenOptions = useMemo(\n () =>\n TRIGGER_WHEN.map((trigger) => ({\n value: trigger.value,\n label: translate(trigger.label),\n })),\n [translate],\n );\n\n const formOptions = useMemo(\n () => (forms || []).map((form) => ({ value: form.id, label: form.name })),\n [forms],\n );\n\n const manualEventOptions = useMemo(\n () =>\n Object.entries(events || {}).map(([value, label]) => ({ value, label })),\n [events],\n );\n\n const showDay =\n eventType === \"TIMMER_BASED\" &&\n [\"AFTER\", \"MONTHLY\", \"WEEKLY\"].includes(trigerWhen);\n const showHour =\n eventType === \"TIMMER_BASED\" &&\n [\"AFTER\", \"MONTHLY\", \"DAILY\", \"WEEKLY\"].includes(trigerWhen);\n const showMinute =\n eventType === \"TIMMER_BASED\" && trigerWhen && trigerWhen !== \"IMMEDIATELY\";\n\n return (\n <>\n <Box\n component=\"form\"\n ref={formRef}\n onSubmit={handleSubmit(submit)}\n data-testid=\"manageeventconfiguration-form\"\n sx={{ display: \"block\", pb: 2 }}\n >\n <ManageEventConfigurationSkeleton isLoading={isLoading}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n mt: 2,\n mb: 3,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {/* ── Header ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n data-testid=\"manageeventconfiguration-cardheader-subheader\"\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"50%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {id ? translate(\"Update event\") : translate(\"New event\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Name the event, choose what triggers it, then add the queries and conditions that decide what happens.\",\n )}\n </Typography>\n </Box>\n </Box>\n\n {/* ── Section: details ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <SectionHeading>{translate(\"Event details\")}</SectionHeading>\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-name-field\"\n >\n <FieldLabel required>{translate(\"Name\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"name\"\n name=\"name\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-name-textfield\"\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-description-field\"\n >\n <FieldLabel>{translate(\"Description\")}</FieldLabel>\n <CustomTextArea\n control={control}\n id=\"description\"\n name=\"description\"\n errors={errors}\n label=\"\"\n minRows={2}\n data-testid=\"manageeventconfiguration-description-textarea\"\n />\n <FieldHelp>\n {translate(\"What this event is for, in one line\")}\n </FieldHelp>\n </Grid>\n </Grid>\n </Box>\n\n <Divider />\n\n {/* ── Section: trigger ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <SectionHeading\n hint={translate(\"What makes this event run\")}\n >\n {translate(\"Trigger\")}\n </SectionHeading>\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-eventtype-field\"\n >\n <FieldLabel required>{translate(\"Event Type\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"eventType\"\n options={eventTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-eventtype-select\"\n />\n </Grid>\n\n {eventType === \"FORM_SUBMITTED\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-formtype-field\"\n >\n <FieldLabel>{translate(\"Form Type\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"formTypeId\"\n options={formOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n isSortedOptions\n onChange={(event) => {\n const selectedData = forms?.find(\n (data) => data.id === event?.target?.value,\n );\n setValue(\"eventTypeDetailCode\", selectedData?.code);\n setValue(\n \"eventTypeDetailId\",\n selectedData?.detaiId || null,\n );\n }}\n dataTestId=\"manageeventconfiguration-formtype-select\"\n />\n </Grid>\n )}\n\n {eventType === \"TIMMER_BASED\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-triggerwhen-field\"\n >\n <FieldLabel required>\n {translate(\"Trigger When\")}\n </FieldLabel>\n <CustomDropdown\n control={control}\n name=\"trigerWhen\"\n options={triggerWhenOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-triggerwhen-select\"\n />\n </Grid>\n )}\n\n {showDay && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-day-field\"\n >\n <FieldLabel required>{translate(\"Day\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"day\"\n name=\"day\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-day-textfield\"\n />\n </Grid>\n )}\n\n {showHour && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-hour-field\"\n >\n <FieldLabel required>{translate(\"Hour\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"hour\"\n name=\"hour\"\n type=\"number\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-hour-textfield\"\n />\n </Grid>\n )}\n\n {showMinute && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-minute-field\"\n >\n <FieldLabel>{translate(\"Minute\")}</FieldLabel>\n <CustomTextField\n control={control}\n id=\"minute\"\n name=\"minute\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-minute-textfield\"\n />\n </Grid>\n )}\n\n {eventType === \"RECURSION\" && (\n <Grid size={{ xs: 12, md: 6 }}>\n <FieldLabel required>\n {translate(\"Recursion Interval (in Minutes)\")}\n </FieldLabel>\n <CustomTextField\n type=\"number\"\n control={control}\n id=\"recursionInterval\"\n name=\"recursionInterval\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-recursionInterval-textfield\"\n />\n <FieldHelp>\n {translate(\"Between 1 and 1440 minutes\")}\n </FieldHelp>\n </Grid>\n )}\n\n {(eventType === \"TIMMER_BASED\" ||\n eventType === \"RECURSION\") && (\n <Grid size={{ xs: 12, md: 6 }}>\n <FieldLabel>{translate(\"Reports\")}</FieldLabel>\n <CustomDropdown\n id=\"reportUUID\"\n name=\"reportUUID\"\n displayName=\"name\"\n optionValue=\"uuid\"\n multiple\n control={control}\n options={reportList}\n errors={errors}\n />\n <FieldHelp>\n {translate(\"Reports refreshed after each run\")}\n </FieldHelp>\n </Grid>\n )}\n\n {eventType === \"MANUAL\" && (\n <Grid\n size={{ xs: 12, md: 6 }}\n data-testid=\"manageeventconfiguration-event-field\"\n >\n <FieldLabel>{translate(\"Event\")}</FieldLabel>\n <CustomDropdown\n control={control}\n name=\"eventTypeDetailCode\"\n options={manualEventOptions}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"manageeventconfiguration-eventtype-detail-select\"\n />\n </Grid>\n )}\n </Grid>\n </Box>\n\n <Divider />\n\n {/* ── Section: configurations ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <SectionHeading\n hint={translate(\n \"Each configuration runs a query, then acts on the rows it returns.\",\n )}\n >\n {translate(\"Configurations\")}\n </SectionHeading>\n <Button\n size=\"small\"\n variant=\"outlined\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addConfiguration}\n data-testid=\"manageeventconfiguration-add-button\"\n >\n {translate(\"Add configuration\")}\n </Button>\n </Box>\n\n <Box\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}\n data-testid=\"manageeventconfiguration-table-container\"\n >\n {notificationConfigDetails?.length === 0 && (\n <EmptyState\n icon=\"faDatabase\"\n title={translate(\"No configurations yet\")}\n body={translate(\n \"Add a configuration to write the query this event runs and the actions it triggers.\",\n )}\n action={\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addConfiguration}\n >\n {translate(\"Add configuration\")}\n </Button>\n }\n dataTestId=\"manageeventconfiguration-no-configurations\"\n />\n )}\n\n {notificationConfigDetails?.map((row, index) => (\n <Paper\n key={index + 1}\n elevation={0}\n variant=\"outlined\"\n sx={{\n p: 2,\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n }}\n data-testid={`manageeventconfiguration-table-row-${index}`}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 2,\n flexWrap: \"wrap\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n flexWrap: \"wrap\",\n }}\n >\n <Tooltip\n title={\n collapsedConfigs[index]\n ? translate(\"Expand\")\n : translate(\"Collapse\")\n }\n >\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollapsedConfigs((current) => ({\n ...current,\n [index]: !current[index],\n }))\n }\n aria-expanded={!collapsedConfigs[index]}\n aria-label={\n collapsedConfigs[index]\n ? translate(\"Expand\")\n : translate(\"Collapse\")\n }\n data-testid={`manageeventconfiguration-table-row-${index}-collapse`}\n >\n <FontAwesomeIcons\n iconName={\n collapsedConfigs[index]\n ? \"faChevronRight\"\n : \"faChevronDown\"\n }\n size=\"sm\"\n />\n </IconButton>\n </Tooltip>\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 700 }}\n >\n {translate(\"Configuration\")} {index + 1}\n </Typography>\n {/* Summary so a collapsed card still says what it does */}\n {!row?.query && (\n <Chip\n size=\"small\"\n color=\"warning\"\n variant=\"outlined\"\n label={translate(\"Query missing\")}\n />\n )}\n <Typography variant=\"caption\" color=\"text.secondary\">\n {row?.conditions?.length || 0}{\" \"}\n {translate(\"conditions\")}\n {\" · \"}\n {(row?.conditions || []).reduce(\n (total, condition) =>\n total +\n (condition?.notificaitonConfigsType?.length ||\n 0),\n 0,\n )}{\" \"}\n {translate(\"actions\")}\n </Typography>\n </Box>\n <Box\n data-testid={`manageeventconfiguration-table-row-${index}-action`}\n >\n <Tooltip title={translate(\"Delete configuration\")}>\n <IconButton\n size=\"small\"\n color=\"error\"\n onClick={() => setConfigPendingDelete(index)}\n aria-label={translate(\"Delete configuration\")}\n data-testid={`manageeventconfiguration-table-row-${index}-action-delete`}\n >\n <FontAwesomeIcons iconName=\"faTrash\" />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n\n <Collapse\n in={!collapsedConfigs[index]}\n // The SQL editor is expensive; keep it mounted so an\n // in-progress query survives a collapse.\n unmountOnExit={false}\n >\n <Grid container spacing={2} alignItems=\"stretch\">\n {/* Query */}\n <Grid\n size={{ xs: 12, lg: 6.5 }}\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}\n data-testid={`manageeventconfiguration-table-row-${index}-query`}\n >\n <FieldLabel required>\n <span data-testid=\"manageeventconfiguration-table-header-query\">\n {translate(\"Query\")}\n </span>\n </FieldLabel>\n <Box\n sx={{\n overflow: \"hidden\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n border: \"1px solid\",\n borderColor: queryErrors[index]\n ? \"error.main\"\n : \"divider\",\n }}\n data-testid={`manageeventconfiguration-table-row-${index}-query-textarea`}\n >\n <PostgresEditor\n height=\"30vh\"\n autoFocus={false}\n defaultValue={row.query || \"\"}\n onChange={(value) => {\n handleTextChange(index, value);\n refreshImplicitParams(index);\n }}\n />\n </Box>\n {queryErrors[index] && (\n <Typography\n variant=\"caption\"\n color=\"error\"\n data-testid=\"custom-error-message\"\n >\n {translate(queryErrors[index])}\n </Typography>\n )}\n <FieldHelp>\n {translate(\n \"Every column this query selects becomes a placeholder the conditions can use.\",\n )}\n </FieldHelp>\n <ImplicitParams\n params={row?.implicitParam}\n translate={translate}\n />\n </Grid>\n\n {/* Conditions */}\n <Grid\n size={{ xs: 12, lg: 5.5 }}\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}\n data-testid={`manageeventconfiguration-table-row-${index}-condition`}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <FieldLabel>\n <span data-testid=\"manageeventconfiguration-table-header-condition\">\n {translate(\"Condition\")}\n </span>\n </FieldLabel>\n <Button\n size=\"small\"\n variant=\"text\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" size=\"sm\" />}\n onClick={() => openConditionModal(row, index)}\n data-testid={\n row?.conditions?.length > 0\n ? `manageeventconfiguration-table-row-${index}-condition-add`\n : `manageeventconfiguration-table-row-${index}-condition-add-empty`\n }\n >\n {translate(\"Add condition\")}\n </Button>\n </Box>\n\n {row?.conditions?.length > 0 ? (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"1 1 auto\",\n maxHeight: \"30vh\",\n overflowY: \"auto\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n }}\n >\n {row.conditions.map((condition, conditionIndex) => (\n <Box\n key={conditionIndex + 1}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 1,\n px: 1.5,\n py: 1,\n borderTop: conditionIndex === 0 ? \"none\" : \"1px solid\",\n borderColor: \"divider\",\n }}\n data-testid=\"manageeventconfiguration-condition-rows\"\n >\n <Box sx={{ minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n sx={{\n fontFamily: condition?.condition\n ? \"monospace\"\n : \"inherit\",\n wordBreak: \"break-word\",\n }}\n >\n {condition?.condition ||\n translate(\"Always runs\")}\n </Typography>\n {condition?.notificaitonConfigsType?.length >\n 0 ? (\n <Box\n sx={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 0.5,\n mt: 0.5,\n }}\n >\n {condition.notificaitonConfigsType.map(\n (action, actionIndex) => (\n <Chip\n key={actionIndex + 1}\n size=\"small\"\n variant=\"outlined\"\n icon={\n <FontAwesomeIcons\n iconName={iconOf(action?.type)}\n size=\"sm\"\n />\n }\n label={translate(\n labelOf(ACTION_TYPES, action?.type),\n )}\n />\n ),\n )}\n </Box>\n ) : (\n <Typography\n variant=\"caption\"\n color=\"warning.main\"\n >\n {translate(\"No actions\")}\n </Typography>\n )}\n </Box>\n <Box sx={{ display: \"flex\", gap: 0.5, flexShrink: 0 }}>\n <Tooltip title={translate(\"Edit condition\")}>\n <IconButton\n size=\"small\"\n aria-label={translate(\"Edit condition\")}\n onClick={() =>\n openConditionModal(\n row,\n index,\n condition,\n conditionIndex,\n )\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-edit-${conditionIndex}`}\n >\n <FontAwesomeIcons iconName=\"faPen\" size=\"sm\" />\n </IconButton>\n </Tooltip>\n <Tooltip title={translate(\"Delete condition\")}>\n <IconButton\n size=\"small\"\n color=\"error\"\n aria-label={translate(\"Delete condition\")}\n onClick={() =>\n deleteCondition(index, conditionIndex)\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-delete-${conditionIndex}`}\n >\n <FontAwesomeIcons iconName=\"faTrash\" size=\"sm\" />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n ))}\n </Box>\n ) : (\n <Box\n sx={{\n flex: \"1 1 auto\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n px: 2,\n py: 3,\n border: \"1px dashed\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n }}\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"No conditions yet. Without one, this configuration does nothing.\",\n )}\n </Typography>\n </Box>\n )}\n </Grid>\n </Grid>\n </Collapse>\n </Paper>\n ))}\n </Box>\n </Box>\n </Box>\n </Paper>\n\n {/* ── Sticky action bar ── */}\n <Paper\n elevation={0}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 2,\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 1.5,\n p: 2,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n data-testid=\"manageeventconfiguration-cardactions\"\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n type=\"button\"\n size=\"small\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-back-button\",\n button_type: \"cancel\",\n button_id: \"manageeventconfiguration-back-button\",\n });\n navigate(\"/ui/medplat/notification/all\");\n }}\n data-testid=\"manageeventconfiguration-back-button\"\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n disabled={isSubmitting}\n data-testid=\"manageeventconfiguration-save-button\"\n >\n {translate(`${id ? \"Update\" : \"Save\"}`)}\n </Button>\n </Paper>\n </ManageEventConfigurationSkeleton>\n </Box>\n\n <CustomConfirmationModal\n open={configPendingDelete !== null}\n handleClose={() => setConfigPendingDelete(null)}\n handleClick={() => {\n handleDeleteRow(configPendingDelete);\n setConfigPendingDelete(null);\n }}\n title={translate(\"Delete this configuration?\")}\n description={`${translate(\"Configuration\")} ${\n (configPendingDelete ?? 0) + 1\n }, its query and ${\n notificationConfigDetails?.[configPendingDelete]?.conditions?.length ||\n 0\n } ${translate(\n \"conditions will be removed. This cannot be undone.\",\n )}`}\n dataTestId=\"manageeventconfiguration-delete-configuration-confirmation\"\n />\n\n <Suspense>\n <ConditionConfig\n selectedConfig={selectedConfig}\n notificationtypeMap={notificationTypeMap}\n selectedCondition={selectedCondition}\n newCondition={newCondition}\n handleTypeConfigurationDelete={handleTypeConfigurationDelete}\n handleTypeConfigurationEdit={handleTypeConfigurationEdit}\n addTypeConfig={addTypeConfig}\n setNewConditionData={setNewConditionData}\n typeConfigurationData={typeConfigurationData}\n setNewTypeData={setNewTypeData}\n overlayOpen={overlayOpen}\n handleOverlayState={handleOverlayState}\n data-testid=\"manageeventconfiguration-conditionconfig\"\n />\n </Suspense>\n <Suspense>\n {newType?.type === \"MOBILE\" ? (\n <MobileTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n notificationtypeMap={notificationTypeMap}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-mobiletypeeventconfigmodal\"\n />\n ) : (\n <OtherTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-othertypeeventconfigmodal\"\n />\n )}\n </Suspense>\n </>\n );\n}\n\nexport default ManageEventConfiguration;\n"],"names":["ConditionConfig","lazy","MobileTypeEventConfigModal","OtherTypeEventConfigModal","ManageEventConfiguration","translate","useTranslateProvider","formRef","useRef","submitRef","id","useParams","navigate","useNavigate","forms","setForms","useState","events","setEvents","notificationTypeMap","setNotificationTypeMap","notificationConfigDetails","setNotificationConfigDetails","selectedConfigIndex","setSelectedConfigIndex","selectedConfig","setSelectedConfig","selectedCondition","setSelectedCondition","selectedIndex","setSelectedIndex","newCondition","setNewCondition","conditionEditMode","setConditionEditMode","selectedTypeConfig","setSelectedTypeConfig","newType","setNewType","overlayOpen","setOverlayOpen","typeEditMode","setTypeEditMode","toggleOtherOpen","setToggleOtherOpen","typeConfigurationData","setTypeConfigurationData","isLoading","setIsLoading","reportList","setReportList","queryErrors","setQueryErrors","collapsedConfigs","setCollapsedConfigs","configPendingDelete","setConfigPendingDelete","handleOverlayState","validationSchema","Yup","eventType","schema","value","trigerWhen","control","handleSubmit","setValue","watch","errors","isSubmitting","useForm","yupResolver","useEffect","form","trackEvent","submit","data","config","nextErrors","index","showToast","isTimerBased","isFormSubmitted","isManual","isRecursion","needsDay","needsHour","cleanedNotificationConfigDetails","_a","condition","typeConfig","update","save","cur","loadInitialData","res","retrieveAllForm","manualevent","retrieveManualEvents","notificationtype","retrieveAllNotifications","notificationtypeObject","type","getReportsList","responseByid","retrieveByUUID","_c","_b","setImplicitParam","_d","key","error","clauseKeywords","sql","quote","i","character","nextCharacter","depth","selectStart","selectEnd","commas","word","namedParameters","itemStart","comma","parameter","tempParameter","aliasDepth","aliasQuote","aliasIndex","parameterName","handleDeleteRow","newRows","_","rowIndex","deleteCondition","configIndex","notificationConfigDetail","filteredConditions","idx","openConditionModal","handleTextChange","newConfig","current","next","refreshImplicitParams","useDebounceFn","addConfiguration","missing","notification","addTypeConfig","openAddConfigurationModal","handleOtherTypeConfiguration","updatedData","item","addTypeConfiguration","handleTypeConfigurationDelete","prevData","handleTypeConfigurationEdit","useTrackEvent","setNewConditionData","conditions","setNewTypeData","eventTypeOptions","useMemo","EVENT_TYPES","triggerWhenOptions","TRIGGER_WHEN","trigger","formOptions","manualEventOptions","label","showDay","showHour","showMinute","jsxs","Fragment","jsx","Box","ManageEventConfigurationSkeleton","Paper","t","Typography","SectionHeading","Grid","FieldLabel","CustomTextField","CustomTextArea","FieldHelp","Divider","CustomDropdown","event","selectedData","Button","FontAwesomeIcons","EmptyState","row","Tooltip","IconButton","Chip","total","Collapse","PostgresEditor","ImplicitParams","conditionIndex","action","actionIndex","iconOf","labelOf","ACTION_TYPES","CustomConfirmationModal","Suspense"],"mappings":"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"}
|