@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.
Files changed (199) hide show
  1. package/dist/{AccessRights-DUgY6ewy.js → AccessRights-DBjTQA1-.js} +421 -424
  2. package/dist/AccessRights-DBjTQA1-.js.map +1 -0
  3. package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
  4. package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
  5. package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
  6. package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
  7. package/dist/AddMenuConfiguration.css +1 -1
  8. package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +45 -45
  9. package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
  10. package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js → CategoriesPage-BprQEYJw-CclreTv1.js} +43 -43
  11. package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js.map → CategoriesPage-BprQEYJw-CclreTv1.js.map} +1 -1
  12. package/dist/{ChangePasswordModalCore-lQ9GamH1.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
  13. package/dist/{ChangePasswordModalCore-lQ9GamH1.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
  14. package/dist/{ConditionConfig-BQBmBHaM.js → ConditionConfig-Bpm6OoV5.js} +3 -3
  15. package/dist/{ConditionConfig-BQBmBHaM.js.map → ConditionConfig-Bpm6OoV5.js.map} +1 -1
  16. package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +29 -29
  17. package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
  18. package/dist/EntityManagement-BGwJGl9k.js +62 -0
  19. package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
  20. package/dist/{EventConfigurations-CUPEN5BV.js → EventConfigurations-B-z7xHh_.js} +3 -3
  21. package/dist/{EventConfigurations-CUPEN5BV.js.map → EventConfigurations-B-z7xHh_.js.map} +1 -1
  22. package/dist/{EventsExceptionModal-BX-ArkBE.js → EventsExceptionModal-DafomIv6.js} +2 -2
  23. package/dist/{EventsExceptionModal-BX-ArkBE.js.map → EventsExceptionModal-DafomIv6.js.map} +1 -1
  24. package/dist/{EventsUi-D6O9S7BK.js → EventsUi-Dl_yckSA.js} +37 -32
  25. package/dist/EventsUi-Dl_yckSA.js.map +1 -0
  26. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
  27. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
  28. package/dist/{FeatureMenu-CHsBbw3W.js → FeatureMenu-Kc73yPHH.js} +2 -2
  29. package/dist/{FeatureMenu-CHsBbw3W.js.map → FeatureMenu-Kc73yPHH.js.map} +1 -1
  30. package/dist/{FhirServerList-iXBPkRVF.js → FhirServerList-CrIHMAxz.js} +19 -19
  31. package/dist/{FhirServerList-iXBPkRVF.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
  32. package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
  33. package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
  34. package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
  35. package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
  36. package/dist/{ImmunizationConfigurationBase-aUtx0JEe.js → ImmunizationConfigurationBase-lKsJZMak.js} +1342 -1301
  37. package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
  38. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
  39. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
  40. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
  41. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
  42. package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
  43. package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
  44. package/dist/{ManageEventConfiguration-DqW3krT6.js → ManageEventConfiguration-DqPbn3Oi.js} +5 -5
  45. package/dist/{ManageEventConfiguration-DqW3krT6.js.map → ManageEventConfiguration-DqPbn3Oi.js.map} +1 -1
  46. package/dist/ManageRole-CyfpySt9.js +981 -0
  47. package/dist/ManageRole-CyfpySt9.js.map +1 -0
  48. package/dist/{ManageUser-DZltBina.js → ManageUser-Dm0l833u.js} +172 -172
  49. package/dist/{ManageUser-DZltBina.js.map → ManageUser-Dm0l833u.js.map} +1 -1
  50. package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +37 -37
  51. package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
  52. package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
  53. package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
  54. package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
  55. package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
  56. package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js → MobileTypeEventConfigModal-DodU3beR.js} +3 -3
  57. package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js.map → MobileTypeEventConfigModal-DodU3beR.js.map} +1 -1
  58. package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
  59. package/dist/NewServerManagement-BdayO78D.js.map +1 -0
  60. package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
  61. package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
  62. package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +56 -56
  63. package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
  64. package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +38 -38
  65. package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
  66. package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
  67. package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
  68. package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
  69. package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
  70. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
  71. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
  72. package/dist/{PickupsPage-D7zyioJB-bHKnARYw.js → PickupsPage-BWblMlic-CWkgeBw0.js} +122 -122
  73. package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
  74. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
  75. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
  76. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
  77. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
  78. package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +29 -29
  79. package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js.map → ProductsPage-BI22nPb4-CQBjnc-n.js.map} +1 -1
  80. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
  81. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
  82. package/dist/{PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +446 -436
  83. package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
  84. package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +55 -55
  85. package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
  86. package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +61 -61
  87. package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
  88. package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
  89. package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
  90. package/dist/Roles-BoNGJhtR.js +19 -0
  91. package/dist/Roles-BoNGJhtR.js.map +1 -0
  92. package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +33 -33
  93. package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
  94. package/dist/{SalesPage-DPIRrC_O-M8rqnK7z.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +34 -34
  95. package/dist/SalesPage-eF9Yr42z-BQ9FlXC3.js.map +1 -0
  96. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
  97. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
  98. package/dist/{StorageUnitsPage-BDRkdCjW-UF64rf7q.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +213 -190
  99. package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
  100. package/dist/{SubMenu-BdMTYtC1.js → SubMenu-OO2zhKiu.js} +2 -2
  101. package/dist/{SubMenu-BdMTYtC1.js.map → SubMenu-OO2zhKiu.js.map} +1 -1
  102. package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
  103. package/dist/TableDetails-Cc40dEUs.js.map +1 -0
  104. package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
  105. package/dist/TableList-B5tX4wII.js.map +1 -0
  106. package/dist/{TransactionsPage-CqWTMNU8-Df6eGFDW.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +185 -170
  107. package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
  108. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
  109. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
  110. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
  111. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
  112. package/dist/{TypeConfiguration-JbRCN6GR.js → TypeConfiguration-EaFiOzRE.js} +3 -3
  113. package/dist/{TypeConfiguration-JbRCN6GR.js.map → TypeConfiguration-EaFiOzRE.js.map} +1 -1
  114. package/dist/UserList-Cf5B-o_1.js +1904 -0
  115. package/dist/UserList-Cf5B-o_1.js.map +1 -0
  116. package/dist/Users-MC7txo1V.js +43 -0
  117. package/dist/{Users-CsJ08Kjm.js.map → Users-MC7txo1V.js.map} +1 -1
  118. package/dist/VaccineEducation-T_UE57Ef.js +231 -0
  119. package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
  120. package/dist/VaccineEducation.css +1 -0
  121. package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
  122. package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
  123. package/dist/VaccineEducationConfigurator.css +4 -0
  124. package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
  125. package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
  126. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
  127. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
  128. package/dist/{constants-DpXnLsAB-D6lN5cjK.js → constants-BTpJFQe_-CYPZIqQF.js} +160 -61
  129. package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
  130. package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
  131. package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
  132. package/dist/index-mfoqII2U.js +524 -0
  133. package/dist/index-mfoqII2U.js.map +1 -0
  134. package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
  135. package/dist/index-o8Pyt1Bt.js.map +1 -0
  136. package/dist/index.css +1 -1
  137. package/dist/index.js +1 -1
  138. package/dist/{index.lib-ETRQOzvE.js → index.lib-BySa9-Z-.js} +302 -260
  139. package/dist/index.lib-BySa9-Z-.js.map +1 -0
  140. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
  141. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
  142. package/package.json +5 -1
  143. package/dist/AccessRights-DUgY6ewy.js.map +0 -1
  144. package/dist/AddMenuConfiguration-c6ZKiN0i.js +0 -8898
  145. package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +0 -1
  146. package/dist/EntityManagement-CPQL6qBj.js +0 -50
  147. package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
  148. package/dist/EventsUi-D6O9S7BK.js.map +0 -1
  149. package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js +0 -79
  150. package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +0 -1
  151. package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +0 -1
  152. package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js +0 -665
  153. package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js.map +0 -1
  154. package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
  155. package/dist/ManageRole-CNZBRKGU.js +0 -776
  156. package/dist/ManageRole-CNZBRKGU.js.map +0 -1
  157. package/dist/MobileAnalytics-BLOionG_.js +0 -17301
  158. package/dist/MobileAnalytics-BLOionG_.js.map +0 -1
  159. package/dist/MobileMenuManagement-68Wijb0X.js +0 -220
  160. package/dist/MobileMenuManagement-68Wijb0X.js.map +0 -1
  161. package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
  162. package/dist/OtherTypeEventConfigModal-stNmuSv_.js +0 -1812
  163. package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +0 -1
  164. package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
  165. package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +0 -783
  166. package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +0 -1
  167. package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +0 -1
  168. package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +0 -599
  169. package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +0 -1
  170. package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +0 -1305
  171. package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +0 -1
  172. package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +0 -675
  173. package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +0 -1
  174. package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +0 -1
  175. package/dist/Roles-BIyiic67.js +0 -14
  176. package/dist/Roles-BIyiic67.js.map +0 -1
  177. package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +0 -1
  178. package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +0 -676
  179. package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js.map +0 -1
  180. package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +0 -1
  181. package/dist/TableDetails-BtafRxXb.js.map +0 -1
  182. package/dist/TableList-Dpo6dO7S.js.map +0 -1
  183. package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +0 -1
  184. package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +0 -315
  185. package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +0 -1
  186. package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +0 -476
  187. package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +0 -1
  188. package/dist/UserList-L41Xw0Q6.js +0 -1129
  189. package/dist/UserList-L41Xw0Q6.js.map +0 -1
  190. package/dist/Users-CsJ08Kjm.js +0 -40
  191. package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +0 -321
  192. package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +0 -1
  193. package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +0 -1
  194. package/dist/dashboardLayoutUtils-CJivzaU1.js +0 -408
  195. package/dist/dashboardLayoutUtils-CJivzaU1.js.map +0 -1
  196. package/dist/index-D9YNFPn9.js.map +0 -1
  197. package/dist/index.lib-ETRQOzvE.js.map +0 -1
  198. package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +0 -36
  199. package/dist/listValueStore-BFQtDYIR-Bj0yX145.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EventConfigurations-CUPEN5BV.js","sources":["../src/views/Events/EventConfigurations.jsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n lazy,\n Suspense,\n} from \"react\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveAll, runEvent, toggleState } from \"../../services/EventConfig\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport {\n Button,\n Typography,\n Box,\n Chip,\n IconButton,\n InputAdornment,\n Paper,\n ToggleButton,\n ToggleButtonGroup,\n Tooltip,\n} from \"@mui/material\";\nimport \"./Styles/EventConfiguration.scss\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useForm } from \"react-hook-form\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport DebouncedSearchInput from \"@/views/custom-components/DebouncedSearchInput\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nconst ShowFlywayQuery = lazy(() => import(\"./ShowFlywayQuery\"));\nconst EventsExceptionModal = lazy(() => import(\"./EventsExceptionModal\"));\nimport { useNavigate } from \"react-router\";\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport {\n EmptyState,\n EVENT_TYPES,\n labelOf,\n MetaChip,\n STATE_META,\n STATUS_META,\n TRIGGER_WHEN,\n} from \"./components/EventsUi\";\n\n/** Shared height for every control in the filter row, so the row reads as one. */\nconst FILTER_CONTROL_HEIGHT = 40;\n\n/**\n * @method describeSchedule\n * @description Turns the stored trigger fields into one readable line\n * (\"Monthly · day 3 · 09:30\") instead of the raw enum plus loose numbers.\n * @param {Object} row - An event configuration row.\n * @param {Function} translate - Translation function.\n * @returns {string} A human-readable schedule.\n */\nconst describeSchedule = (row, translate) => {\n if (!row?.trigerWhen) return \"—\";\n\n const parts = [translate(labelOf(TRIGGER_WHEN, row.trigerWhen))];\n\n if (row.day) {\n parts.push(`${translate(\"day\")} ${row.day}`);\n }\n if (row.hour !== null && row.hour !== undefined) {\n const hour = String(row.hour).padStart(2, \"0\");\n const minute = String(row.minute ?? 0).padStart(2, \"0\");\n parts.push(`${hour}:${minute}`);\n } else if (row.minute) {\n parts.push(`${translate(\"minute\")} ${row.minute}`);\n }\n\n return parts.join(\" · \");\n};\n\n/**\n * EventConfigurations component for managing and displaying configured events.\n *\n * @module EventConfigurations\n * @function\n */\nfunction EventConfigurations() {\n const navigate = useNavigate();\n const trackEvent = useTrackEvent();\n const [configuredEvents, setConfiguredEvents] = useState(null);\n\n const [fetchActiveOnly, setFetchActiveOnly] = useState(true);\n const [showExceptionOnly, setShowExceptionOnly] = useState(false);\n const [showNonCompletedOnly, setShowNonCompletedOnly] = useState(false);\n\n const [search, setSearch] = useState(\"\");\n const [pendingAction, setPendingAction] = useState(null);\n const [clickedRow, setClickedRow] = useState({});\n const [openFlywayQuery, setOpenFlywayQuery] = useState(false);\n const [configuredQuery, setConfiguredQuery] = useState(\"\");\n const [featureUuid, setFeatureUuid] = useState(null);\n const [showException, setShowException] = useState(false);\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const [hasLoaded, setHasLoaded] = useState(false);\n const [rights, setRights] = useState({});\n\n // The event-type filter reuses the same field component as the forms, so it\n // needs a form context of its own.\n const { control: filterControl, reset: resetFilterForm } = useForm({\n defaultValues: { eventType: \"\" },\n });\n const [selectedEventType, setSelectedEventType] = useState(\"\");\n\n /**\n * Refreshes the event configurations based on the current state filter.\n *\n * @async\n * @function onRefresh\n */\n const onRefresh = async () => {\n trackEvent(\"button_click\", {\n button_name: \"refresh-events-button\",\n button_type: \"reload\",\n button_id: \"eventconfiguration-refresh-button\",\n });\n loadInitialData(fetchActiveOnly);\n };\n\n const headers = useMemo(\n () => [\n { field: \"name\", label: translate(\"Name\"), align: \"left\", minWidth: 240 },\n {\n field: \"eventType\",\n label: translate(\"Event Type\"),\n align: \"left\",\n minWidth: 150,\n render: (row) => translate(labelOf(EVENT_TYPES, row?.eventType)),\n },\n {\n field: \"trigerWhen\",\n label: translate(\"Schedule\"),\n align: \"left\",\n minWidth: 200,\n render: (row) => describeSchedule(row, translate),\n },\n {\n field: \"state\",\n label: translate(\"State\"),\n align: \"left\",\n minWidth: 110,\n render: (row) => (\n <MetaChip meta={STATE_META} value={row?.state} translate={translate} />\n ),\n },\n {\n field: \"status\",\n label: translate(\"Last Run\"),\n align: \"left\",\n minWidth: 130,\n render: (row) => (\n <MetaChip\n meta={STATUS_META}\n value={row?.status}\n translate={translate}\n uppercase\n />\n ),\n },\n {\n field: \"completionTime\",\n label: translate(\"Completed On\"),\n align: \"left\",\n minWidth: 160,\n render: (row) =>\n row?.completionTime\n ? moment(row.completionTime).format(\"DD-MM-YYYY HH:mm\")\n : \"—\",\n },\n {\n field: \"Actions\",\n label: translate(\"Actions\"),\n align: \"left\",\n minWidth: 120,\n },\n ],\n [translate],\n );\n\n /**\n * @function handleToggleState\n * Runs whichever action the confirmation dialog was opened for.\n *\n * @returns {Promise<void>}\n */\n const handleToggleState = async () => {\n try {\n if (pendingAction === \"TOGGLE_STATE\") {\n setPendingAction(null);\n setIsLoading(true);\n await toggleState(clickedRow);\n showToast({\n message:\n clickedRow?.state === \"ACTIVE\"\n ? \"Event marked inactive\"\n : \"Event marked active\",\n type: \"success\",\n });\n await loadInitialData(fetchActiveOnly);\n } else if (pendingAction === \"RUN_NOW\") {\n setPendingAction(null);\n setIsLoading(true);\n await runEvent(clickedRow?.uuid);\n showToast({ message: \"Event queued to run now\", type: \"success\" });\n await loadInitialData(fetchActiveOnly);\n }\n } catch {\n showToast({\n message: \"Could not complete that action. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n }\n };\n\n const handleSyncClose = () => setFeatureUuid(() => null);\n\n /**\n * @function handleEdit\n * Navigates to the edit page for the selected row.\n *\n * @param {Object} row - The selected row to edit.\n */\n const handleEdit = (row) => {\n navigate(`/ui/medplat/views/config/${row?.uuid}`);\n };\n\n // Every row handler takes the row it was invoked on: `CustomActionIcons`\n // passes it to each menu item, and reading it back from state would act on\n // a stale selection.\n const actions = useCallback(\n (row) => {\n const canUpdate = GeneralUtil.hasCheckRights(\n rights?.[\"update.manage.event\"],\n );\n const isScheduled =\n row?.eventType === \"TIMMER_BASED\" || row?.eventType === \"RECURSION\";\n\n const menu = [\n canUpdate && {\n label: translate(\n row?.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\",\n ),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"TOGGLE_STATE\");\n },\n },\n {\n label: translate(\"Sync With Server\"),\n onClick: (clicked) => setFeatureUuid(clicked?.uuid),\n },\n isScheduled &&\n GeneralUtil.hasCheckRights(rights?.[\"view.manage.event.runNow\"]) && {\n label: translate(\"Run Event Now\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"RUN_NOW\");\n },\n },\n isScheduled && {\n label: translate(\"Show Exceptions\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setShowException(true);\n },\n },\n {\n label: translate(\"Show Flyway Query\"),\n onClick: (clicked) => {\n setConfiguredQuery(clicked);\n setOpenFlywayQuery(true);\n },\n },\n ].filter(Boolean);\n\n return [\n canUpdate && {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faPen\" />,\n onClick: handleEdit,\n ariaLabel: translate(\"Edit event\"),\n dataTestId: \"event-configuration-edit-button\",\n },\n {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faBars\" />,\n menuItems: menu,\n ariaLabel: translate(\"More event actions\"),\n dataTestId: \"event-configuration-menu-button\",\n },\n ].filter(Boolean);\n },\n [rights, translate],\n );\n\n useEffect(() => {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\n \"techo.notification.all\",\n );\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n }, []);\n\n /**\n * @function loadInitialData\n * Loads the configured events for the selected state filter.\n *\n * @param {boolean} isActive - Whether to load active events.\n */\n const loadInitialData = async (isActive) => {\n try {\n setIsLoading(true);\n const response = await retrieveAll(isActive);\n // Sorted so the scheduled events with the nearest cadence group\n // together; the raw rows are kept intact for the row actions.\n const rows = [...(response?.data || [])].sort((a, b) => {\n if (a.trigerWhen === null && b.trigerWhen !== null) return -1;\n if (b.trigerWhen === null && a.trigerWhen !== null) return 1;\n if (b.trigerWhen < a.trigerWhen) return -1;\n if (b.trigerWhen > a.trigerWhen) return 1;\n return (a.day ?? 0) - (b.day ?? 0) || (a.hour ?? 0) - (b.hour ?? 0);\n });\n setConfiguredEvents(rows);\n setIsLoading(false);\n setHasLoaded(true);\n } catch {\n showToast({\n message: \"Could not load events. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n setHasLoaded(true);\n }\n };\n\n useEffect(() => {\n loadInitialData(fetchActiveOnly);\n }, [fetchActiveOnly]);\n\n const searchedEvents = useMemo(() => {\n if (!configuredEvents) return [];\n const term = search.trim().toLowerCase();\n if (!term) return configuredEvents;\n return configuredEvents.filter((event) =>\n event?.name?.toLowerCase().includes(term),\n );\n }, [configuredEvents, search]);\n\n const typeFilteredEvents = useMemo(\n () =>\n searchedEvents.filter(\n (event) => !selectedEventType || event.eventType === selectedEventType,\n ),\n [searchedEvents, selectedEventType],\n );\n\n const exceptionCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status === \"EXCEPTION\").length,\n [typeFilteredEvents],\n );\n\n const nonCompletedCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status !== \"COMPLETED\").length,\n [typeFilteredEvents],\n );\n\n const eventTypeOptions = useMemo(() => {\n const present = new Set(\n (configuredEvents || []).map((event) => event.eventType).filter(Boolean),\n );\n return EVENT_TYPES.filter((type) => present.has(type.value)).map((type) => ({\n value: type.value,\n label: translate(type.label),\n }));\n }, [configuredEvents, translate]);\n\n const visibleTableEvents = useMemo(\n () =>\n typeFilteredEvents.filter((event) => {\n if (showExceptionOnly && event.status !== \"EXCEPTION\") return false;\n if (showNonCompletedOnly && event.status === \"COMPLETED\") return false;\n return true;\n }),\n [typeFilteredEvents, showExceptionOnly, showNonCompletedOnly],\n );\n\n const isFiltered =\n Boolean(search) ||\n Boolean(selectedEventType) ||\n showExceptionOnly ||\n showNonCompletedOnly;\n\n const clearFilters = () => {\n setSearch(\"\");\n setShowExceptionOnly(false);\n setShowNonCompletedOnly(false);\n setSelectedEventType(\"\");\n resetFilterForm({ eventType: \"\" });\n };\n\n const isDenied =\n !isLoading &&\n rights !== null &&\n !GeneralUtil.hasCheckRights(rights?.[\"view.manage.event\"]);\n\n return (\n <Grid container className=\"event-configuration\" spacing={2}>\n {featureUuid && (\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={handleSyncClose}\n featureUUID={featureUuid}\n dataTestId=\"eventconfiguration-dialog-syncwithserver\"\n />\n )}\n <Suspense>\n {showException && (\n <EventsExceptionModal\n id={clickedRow?.id}\n eventName={clickedRow?.name}\n open={showException}\n handleClose={() => setShowException(false)}\n dataTestId=\"eventconfiguration-modal-viewexception\"\n />\n )}\n </Suspense>\n <Suspense>\n <ShowFlywayQuery\n configuredQuery={configuredQuery}\n open={openFlywayQuery}\n onClose={() => {\n setOpenFlywayQuery(false);\n }}\n dataTestId=\"eventconfiguration-query-showflywayquery\"\n />\n </Suspense>\n <CustomConfirmationModal\n description={\n pendingAction === \"RUN_NOW\"\n ? `${clickedRow?.name} will be queued to run immediately, outside its schedule.`\n : clickedRow?.state === \"ACTIVE\"\n ? `${clickedRow?.name} will stop running on its schedule. You can turn it back on from this screen.`\n : `${clickedRow?.name} will start running on its schedule again.`\n }\n title={\n pendingAction === \"RUN_NOW\"\n ? translate(\"Run this event now?\")\n : translate(\n clickedRow?.state === \"ACTIVE\"\n ? \"Mark as Inactive\"\n : \"Mark as Active\",\n )\n }\n handleClick={handleToggleState}\n open={Boolean(pendingAction)}\n handleClose={() => setPendingAction(null)}\n dataTestId=\"eventconfiguration-modal-customconfirmation\"\n />\n\n <Grid size={{ xs: 12 }}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\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: title block (left) + actions (right) ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {translate(\"Events\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Rules that watch for something happening and act on it - sending a notification, running a query, raising an exception.\",\n )}\n </Typography>\n </Box>\n\n {!isDenied && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <DebouncedSearchInput\n value={search}\n onChange={setSearch}\n placeholder={translate(\"Search by name\")}\n autoFocus={false}\n size=\"small\"\n data-testid=\"eventconfiguration-textfield-searchquery\"\n sx={{ width: { xs: \"100%\", sm: 240 } }}\n slotProps={{\n htmlInput: { \"aria-label\": translate(\"Search by name\") },\n }}\n inputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Box sx={{ color: \"text.disabled\", display: \"flex\" }}>\n <FontAwesomeIcons\n iconName=\"faMagnifyingGlass\"\n size=\"sm\"\n />\n </Box>\n </InputAdornment>\n ),\n endAdornment: search ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={translate(\"Clear search\")}\n onClick={() => setSearch(\"\")}\n >\n <FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n />\n <Tooltip title={translate(\"Refresh\")}>\n <IconButton\n size=\"small\"\n onClick={onRefresh}\n aria-label={translate(\"Refresh\")}\n data-testid=\"eventconfiguration-refresh-button\"\n >\n <FontAwesomeIcons iconName=\"faRotateRight\" />\n </IconButton>\n </Tooltip>\n {GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.event\"],\n ) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n data-testid=\"eventconfiguration-configurenew-button\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"configure-new-event-button\",\n button_type: \"navigate\",\n button_id: \"eventconfiguration-configurenew-button\",\n });\n navigate(\"/ui/medplat/views/config\");\n }}\n >\n {translate(\"Configure New\")}\n </Button>\n )}\n </Box>\n )}\n </Box>\n\n {!isDenied && (\n /* ── Filters ── */\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n value={fetchActiveOnly}\n onChange={(event, next) => {\n if (next !== null) setFetchActiveOnly(next);\n }}\n aria-label={translate(\"State\")}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiToggleButton-root\": { py: 0 },\n }}\n >\n <ToggleButton value={true} data-testid=\"eventconfiguration-active-toggle\">\n {translate(\"Active\")}\n </ToggleButton>\n <ToggleButton value={false} data-testid=\"eventconfiguration-inactive-toggle\">\n {translate(\"Inactive\")}\n </ToggleButton>\n </ToggleButtonGroup>\n\n <Chip\n label={`${translate(\"Exception\")} (${exceptionCount})`}\n variant={showExceptionOnly ? \"filled\" : \"outlined\"}\n color={showExceptionOnly ? \"primary\" : \"default\"}\n onClick={() => setShowExceptionOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-Exception-checkbox\"\n />\n <Chip\n label={`${translate(\"Not Completed\")} (${nonCompletedCount})`}\n variant={showNonCompletedOnly ? \"filled\" : \"outlined\"}\n color={showNonCompletedOnly ? \"primary\" : \"default\"}\n onClick={() => setShowNonCompletedOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-notcompleted-checkbox\"\n />\n\n <Box\n sx={{\n width: { xs: \"100%\", sm: 200 },\n \"& .MuiOutlinedInput-root\": {\n height: FILTER_CONTROL_HEIGHT,\n },\n }}\n >\n <CustomDropdown\n control={filterControl}\n name=\"eventType\"\n options={eventTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n isNullSelectDisabled={false}\n placeholder={translate(\"All event types\")}\n onChange={(event) =>\n setSelectedEventType(event?.target?.value || \"\")\n }\n dataTestId=\"eventconfiguration-eventtype-filter\"\n />\n </Box>\n\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!isFiltered}\n startIcon={<FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />}\n onClick={clearFilters}\n sx={{ height: FILTER_CONTROL_HEIGHT }}\n data-testid=\"eventconfiguration-clear-filters\"\n >\n {translate(\"Clear filters\")}\n </Button>\n </Box>\n )}\n\n {isDenied ? (\n <EmptyState\n icon=\"faLock\"\n title={translate(\"You don't have access to Events\")}\n body={translate(\n \"Your role doesn't include permission to view events. Ask an administrator to grant the view right for this module.\",\n )}\n dataTestId=\"no-permission-message\"\n />\n ) : isLoading ? (\n <EventConfigurationSkeleton />\n ) : hasLoaded && visibleTableEvents.length === 0 && isFiltered ? (\n <EmptyState\n icon=\"faMagnifyingGlass\"\n title={translate(\"No events match these filters\")}\n body={translate(\n \"Try a shorter search term, another event type, or switch between Active and Inactive.\",\n )}\n action={\n <Button variant=\"text\" size=\"small\" onClick={clearFilters}>\n {translate(\"Clear filters\")}\n </Button>\n }\n dataTestId=\"eventconfiguration-no-results\"\n />\n ) : hasLoaded && visibleTableEvents.length === 0 ? (\n <EmptyState\n icon=\"faBolt\"\n title={\n fetchActiveOnly\n ? translate(\"No active events\")\n : translate(\"No inactive events\")\n }\n body={translate(\n \"Configure an event to react to a form submission, a schedule, or a manual trigger.\",\n )}\n action={\n GeneralUtil.hasCheckRights(rights?.[\"create.manage.event\"]) ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={() => navigate(\"/ui/medplat/views/config\")}\n >\n {translate(\"Configure New\")}\n </Button>\n ) : null\n }\n dataTestId=\"eventconfiguration-no-events\"\n />\n ) : (\n <CustomizedTable\n columns={headers}\n tableData={visibleTableEvents}\n actions={actions}\n paginationConfig={{ pagination: false }}\n dataTestId=\"eventconfiguration-table-configuredevents\"\n isLoading={isLoading}\n rowUniqueKey=\"uuid\"\n disableHtml\n showFullContent={false}\n styleConfig={{ tableStyle: { maxHeight: 180 } }}\n />\n )}\n </Box>\n </Paper>\n </Grid>\n </Grid>\n );\n}\n\nexport default EventConfigurations;\n"],"names":["ShowFlywayQuery","lazy","EventsExceptionModal","FILTER_CONTROL_HEIGHT","describeSchedule","row","translate","parts","labelOf","TRIGGER_WHEN","hour","minute","EventConfigurations","navigate","useNavigate","trackEvent","useTrackEvent","configuredEvents","setConfiguredEvents","useState","fetchActiveOnly","setFetchActiveOnly","showExceptionOnly","setShowExceptionOnly","showNonCompletedOnly","setShowNonCompletedOnly","search","setSearch","pendingAction","setPendingAction","clickedRow","setClickedRow","openFlywayQuery","setOpenFlywayQuery","configuredQuery","setConfiguredQuery","featureUuid","setFeatureUuid","showException","setShowException","useTranslateProvider","isLoading","setIsLoading","hasLoaded","setHasLoaded","rights","setRights","filterControl","resetFilterForm","useForm","selectedEventType","setSelectedEventType","onRefresh","loadInitialData","headers","useMemo","EVENT_TYPES","jsx","MetaChip","STATE_META","STATUS_META","moment","handleToggleState","toggleState","showToast","runEvent","handleSyncClose","handleEdit","actions","useCallback","canUpdate","GeneralUtil","isScheduled","menu","clicked","FontAwesomeIcons","useEffect","featureJson","getAssignedFeatures","isActive","response","retrieveAll","rows","a","b","searchedEvents","term","event","_a","typeFilteredEvents","exceptionCount","nonCompletedCount","eventTypeOptions","present","type","visibleTableEvents","isFiltered","clearFilters","isDenied","Grid","SyncWithServerDialog","Suspense","CustomConfirmationModal","Paper","t","jsxs","Box","Typography","DebouncedSearchInput","InputAdornment","IconButton","Tooltip","Button","ToggleButtonGroup","next","ToggleButton","Chip","current","CustomDropdown","EmptyState","EventConfigurationSkeleton","CustomizedTable"],"mappings":"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"}
1
+ {"version":3,"file":"EventConfigurations-B-z7xHh_.js","sources":["../src/views/Events/EventConfigurations.jsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n lazy,\n Suspense,\n} from \"react\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveAll, runEvent, toggleState } from \"../../services/EventConfig\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport {\n Button,\n Typography,\n Box,\n Chip,\n IconButton,\n InputAdornment,\n Paper,\n ToggleButton,\n ToggleButtonGroup,\n Tooltip,\n} from \"@mui/material\";\nimport \"./Styles/EventConfiguration.scss\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useForm } from \"react-hook-form\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport DebouncedSearchInput from \"@/views/custom-components/DebouncedSearchInput\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nconst ShowFlywayQuery = lazy(() => import(\"./ShowFlywayQuery\"));\nconst EventsExceptionModal = lazy(() => import(\"./EventsExceptionModal\"));\nimport { useNavigate } from \"react-router\";\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport {\n EmptyState,\n EVENT_TYPES,\n labelOf,\n MetaChip,\n STATE_META,\n STATUS_META,\n TRIGGER_WHEN,\n} from \"./components/EventsUi\";\n\n/** Shared height for every control in the filter row, so the row reads as one. */\nconst FILTER_CONTROL_HEIGHT = 40;\n\n/**\n * @method describeSchedule\n * @description Turns the stored trigger fields into one readable line\n * (\"Monthly · day 3 · 09:30\") instead of the raw enum plus loose numbers.\n * @param {Object} row - An event configuration row.\n * @param {Function} translate - Translation function.\n * @returns {string} A human-readable schedule.\n */\nconst describeSchedule = (row, translate) => {\n if (!row?.trigerWhen) return \"—\";\n\n const parts = [translate(labelOf(TRIGGER_WHEN, row.trigerWhen))];\n\n if (row.day) {\n parts.push(`${translate(\"day\")} ${row.day}`);\n }\n if (row.hour !== null && row.hour !== undefined) {\n const hour = String(row.hour).padStart(2, \"0\");\n const minute = String(row.minute ?? 0).padStart(2, \"0\");\n parts.push(`${hour}:${minute}`);\n } else if (row.minute) {\n parts.push(`${translate(\"minute\")} ${row.minute}`);\n }\n\n return parts.join(\" · \");\n};\n\n/**\n * EventConfigurations component for managing and displaying configured events.\n *\n * @module EventConfigurations\n * @function\n */\nfunction EventConfigurations() {\n const navigate = useNavigate();\n const trackEvent = useTrackEvent();\n const [configuredEvents, setConfiguredEvents] = useState(null);\n\n const [fetchActiveOnly, setFetchActiveOnly] = useState(true);\n const [showExceptionOnly, setShowExceptionOnly] = useState(false);\n const [showNonCompletedOnly, setShowNonCompletedOnly] = useState(false);\n\n const [search, setSearch] = useState(\"\");\n const [pendingAction, setPendingAction] = useState(null);\n const [clickedRow, setClickedRow] = useState({});\n const [openFlywayQuery, setOpenFlywayQuery] = useState(false);\n const [configuredQuery, setConfiguredQuery] = useState(\"\");\n const [featureUuid, setFeatureUuid] = useState(null);\n const [showException, setShowException] = useState(false);\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const [hasLoaded, setHasLoaded] = useState(false);\n const [rights, setRights] = useState({});\n\n // The event-type filter reuses the same field component as the forms, so it\n // needs a form context of its own.\n const { control: filterControl, reset: resetFilterForm } = useForm({\n defaultValues: { eventType: \"\" },\n });\n const [selectedEventType, setSelectedEventType] = useState(\"\");\n\n /**\n * Refreshes the event configurations based on the current state filter.\n *\n * @async\n * @function onRefresh\n */\n const onRefresh = async () => {\n trackEvent(\"button_click\", {\n button_name: \"refresh-events-button\",\n button_type: \"reload\",\n button_id: \"eventconfiguration-refresh-button\",\n });\n loadInitialData(fetchActiveOnly);\n };\n\n const headers = useMemo(\n () => [\n { field: \"name\", label: translate(\"Name\"), align: \"left\", minWidth: 240 },\n {\n field: \"eventType\",\n label: translate(\"Event Type\"),\n align: \"left\",\n minWidth: 150,\n render: (row) => translate(labelOf(EVENT_TYPES, row?.eventType)),\n },\n {\n field: \"trigerWhen\",\n label: translate(\"Schedule\"),\n align: \"left\",\n minWidth: 200,\n render: (row) => describeSchedule(row, translate),\n },\n {\n field: \"state\",\n label: translate(\"State\"),\n align: \"left\",\n minWidth: 110,\n render: (row) => (\n <MetaChip meta={STATE_META} value={row?.state} translate={translate} />\n ),\n },\n {\n field: \"status\",\n label: translate(\"Last Run\"),\n align: \"left\",\n minWidth: 130,\n render: (row) => (\n <MetaChip\n meta={STATUS_META}\n value={row?.status}\n translate={translate}\n uppercase\n />\n ),\n },\n {\n field: \"completionTime\",\n label: translate(\"Completed On\"),\n align: \"left\",\n minWidth: 160,\n render: (row) =>\n row?.completionTime\n ? moment(row.completionTime).format(\"DD-MM-YYYY HH:mm\")\n : \"—\",\n },\n {\n field: \"Actions\",\n label: translate(\"Actions\"),\n align: \"left\",\n minWidth: 120,\n },\n ],\n [translate],\n );\n\n /**\n * @function handleToggleState\n * Runs whichever action the confirmation dialog was opened for.\n *\n * @returns {Promise<void>}\n */\n const handleToggleState = async () => {\n try {\n if (pendingAction === \"TOGGLE_STATE\") {\n setPendingAction(null);\n setIsLoading(true);\n await toggleState(clickedRow);\n showToast({\n message:\n clickedRow?.state === \"ACTIVE\"\n ? \"Event marked inactive\"\n : \"Event marked active\",\n type: \"success\",\n });\n await loadInitialData(fetchActiveOnly);\n } else if (pendingAction === \"RUN_NOW\") {\n setPendingAction(null);\n setIsLoading(true);\n await runEvent(clickedRow?.uuid);\n showToast({ message: \"Event queued to run now\", type: \"success\" });\n await loadInitialData(fetchActiveOnly);\n }\n } catch {\n showToast({\n message: \"Could not complete that action. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n }\n };\n\n const handleSyncClose = () => setFeatureUuid(() => null);\n\n /**\n * @function handleEdit\n * Navigates to the edit page for the selected row.\n *\n * @param {Object} row - The selected row to edit.\n */\n const handleEdit = (row) => {\n navigate(`/ui/medplat/views/config/${row?.uuid}`);\n };\n\n // Every row handler takes the row it was invoked on: `CustomActionIcons`\n // passes it to each menu item, and reading it back from state would act on\n // a stale selection.\n const actions = useCallback(\n (row) => {\n const canUpdate = GeneralUtil.hasCheckRights(\n rights?.[\"update.manage.event\"],\n );\n const isScheduled =\n row?.eventType === \"TIMMER_BASED\" || row?.eventType === \"RECURSION\";\n\n const menu = [\n canUpdate && {\n label: translate(\n row?.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\",\n ),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"TOGGLE_STATE\");\n },\n },\n {\n label: translate(\"Sync With Server\"),\n onClick: (clicked) => setFeatureUuid(clicked?.uuid),\n },\n isScheduled &&\n GeneralUtil.hasCheckRights(rights?.[\"view.manage.event.runNow\"]) && {\n label: translate(\"Run Event Now\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setPendingAction(\"RUN_NOW\");\n },\n },\n isScheduled && {\n label: translate(\"Show Exceptions\"),\n onClick: (clicked) => {\n setClickedRow(clicked);\n setShowException(true);\n },\n },\n {\n label: translate(\"Show Flyway Query\"),\n onClick: (clicked) => {\n setConfiguredQuery(clicked);\n setOpenFlywayQuery(true);\n },\n },\n ].filter(Boolean);\n\n return [\n canUpdate && {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faPen\" />,\n onClick: handleEdit,\n ariaLabel: translate(\"Edit event\"),\n dataTestId: \"event-configuration-edit-button\",\n },\n {\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faBars\" />,\n menuItems: menu,\n ariaLabel: translate(\"More event actions\"),\n dataTestId: \"event-configuration-menu-button\",\n },\n ].filter(Boolean);\n },\n [rights, translate],\n );\n\n useEffect(() => {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\n \"techo.notification.all\",\n );\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n }, []);\n\n /**\n * @function loadInitialData\n * Loads the configured events for the selected state filter.\n *\n * @param {boolean} isActive - Whether to load active events.\n */\n const loadInitialData = async (isActive) => {\n try {\n setIsLoading(true);\n const response = await retrieveAll(isActive);\n // Sorted so the scheduled events with the nearest cadence group\n // together; the raw rows are kept intact for the row actions.\n const rows = [...(response?.data || [])].sort((a, b) => {\n if (a.trigerWhen === null && b.trigerWhen !== null) return -1;\n if (b.trigerWhen === null && a.trigerWhen !== null) return 1;\n if (b.trigerWhen < a.trigerWhen) return -1;\n if (b.trigerWhen > a.trigerWhen) return 1;\n return (a.day ?? 0) - (b.day ?? 0) || (a.hour ?? 0) - (b.hour ?? 0);\n });\n setConfiguredEvents(rows);\n setIsLoading(false);\n setHasLoaded(true);\n } catch {\n showToast({\n message: \"Could not load events. Please try again.\",\n type: \"error\",\n });\n setIsLoading(false);\n setHasLoaded(true);\n }\n };\n\n useEffect(() => {\n loadInitialData(fetchActiveOnly);\n }, [fetchActiveOnly]);\n\n const searchedEvents = useMemo(() => {\n if (!configuredEvents) return [];\n const term = search.trim().toLowerCase();\n if (!term) return configuredEvents;\n return configuredEvents.filter((event) =>\n event?.name?.toLowerCase().includes(term),\n );\n }, [configuredEvents, search]);\n\n const typeFilteredEvents = useMemo(\n () =>\n searchedEvents.filter(\n (event) => !selectedEventType || event.eventType === selectedEventType,\n ),\n [searchedEvents, selectedEventType],\n );\n\n const exceptionCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status === \"EXCEPTION\").length,\n [typeFilteredEvents],\n );\n\n const nonCompletedCount = useMemo(\n () =>\n typeFilteredEvents.filter((event) => event.status !== \"COMPLETED\").length,\n [typeFilteredEvents],\n );\n\n const eventTypeOptions = useMemo(() => {\n const present = new Set(\n (configuredEvents || []).map((event) => event.eventType).filter(Boolean),\n );\n return EVENT_TYPES.filter((type) => present.has(type.value)).map((type) => ({\n value: type.value,\n label: translate(type.label),\n }));\n }, [configuredEvents, translate]);\n\n const visibleTableEvents = useMemo(\n () =>\n typeFilteredEvents.filter((event) => {\n if (showExceptionOnly && event.status !== \"EXCEPTION\") return false;\n if (showNonCompletedOnly && event.status === \"COMPLETED\") return false;\n return true;\n }),\n [typeFilteredEvents, showExceptionOnly, showNonCompletedOnly],\n );\n\n const isFiltered =\n Boolean(search) ||\n Boolean(selectedEventType) ||\n showExceptionOnly ||\n showNonCompletedOnly;\n\n const clearFilters = () => {\n setSearch(\"\");\n setShowExceptionOnly(false);\n setShowNonCompletedOnly(false);\n setSelectedEventType(\"\");\n resetFilterForm({ eventType: \"\" });\n };\n\n const isDenied =\n !isLoading &&\n rights !== null &&\n !GeneralUtil.hasCheckRights(rights?.[\"view.manage.event\"]);\n\n return (\n <Grid container className=\"event-configuration\" spacing={2}>\n {featureUuid && (\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={handleSyncClose}\n featureUUID={featureUuid}\n dataTestId=\"eventconfiguration-dialog-syncwithserver\"\n />\n )}\n <Suspense>\n {showException && (\n <EventsExceptionModal\n id={clickedRow?.id}\n eventName={clickedRow?.name}\n open={showException}\n handleClose={() => setShowException(false)}\n dataTestId=\"eventconfiguration-modal-viewexception\"\n />\n )}\n </Suspense>\n <Suspense>\n <ShowFlywayQuery\n configuredQuery={configuredQuery}\n open={openFlywayQuery}\n onClose={() => {\n setOpenFlywayQuery(false);\n }}\n dataTestId=\"eventconfiguration-query-showflywayquery\"\n />\n </Suspense>\n <CustomConfirmationModal\n description={\n pendingAction === \"RUN_NOW\"\n ? `${clickedRow?.name} will be queued to run immediately, outside its schedule.`\n : clickedRow?.state === \"ACTIVE\"\n ? `${clickedRow?.name} will stop running on its schedule. You can turn it back on from this screen.`\n : `${clickedRow?.name} will start running on its schedule again.`\n }\n title={\n pendingAction === \"RUN_NOW\"\n ? translate(\"Run this event now?\")\n : translate(\n clickedRow?.state === \"ACTIVE\"\n ? \"Mark as Inactive\"\n : \"Mark as Active\",\n )\n }\n handleClick={handleToggleState}\n open={Boolean(pendingAction)}\n handleClose={() => setPendingAction(null)}\n dataTestId=\"eventconfiguration-modal-customconfirmation\"\n />\n\n <Grid size={{ xs: 12 }}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\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: title block (left) + actions (right) ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {translate(\"Events\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Rules that watch for something happening and act on it - sending a notification, running a query, raising an exception.\",\n )}\n </Typography>\n </Box>\n\n {!isDenied && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <DebouncedSearchInput\n value={search}\n onChange={setSearch}\n placeholder={translate(\"Search by name\")}\n autoFocus={false}\n size=\"small\"\n data-testid=\"eventconfiguration-textfield-searchquery\"\n sx={{ width: { xs: \"100%\", sm: 240 } }}\n slotProps={{\n htmlInput: { \"aria-label\": translate(\"Search by name\") },\n }}\n inputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Box sx={{ color: \"text.disabled\", display: \"flex\" }}>\n <FontAwesomeIcons\n iconName=\"faMagnifyingGlass\"\n size=\"sm\"\n />\n </Box>\n </InputAdornment>\n ),\n endAdornment: search ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={translate(\"Clear search\")}\n onClick={() => setSearch(\"\")}\n >\n <FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n />\n <Tooltip title={translate(\"Refresh\")}>\n <IconButton\n size=\"small\"\n onClick={onRefresh}\n aria-label={translate(\"Refresh\")}\n data-testid=\"eventconfiguration-refresh-button\"\n >\n <FontAwesomeIcons iconName=\"faRotateRight\" />\n </IconButton>\n </Tooltip>\n {GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.event\"],\n ) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n data-testid=\"eventconfiguration-configurenew-button\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"configure-new-event-button\",\n button_type: \"navigate\",\n button_id: \"eventconfiguration-configurenew-button\",\n });\n navigate(\"/ui/medplat/views/config\");\n }}\n >\n {translate(\"Configure New\")}\n </Button>\n )}\n </Box>\n )}\n </Box>\n\n {!isDenied && (\n /* ── Filters ── */\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n value={fetchActiveOnly}\n onChange={(event, next) => {\n if (next !== null) setFetchActiveOnly(next);\n }}\n aria-label={translate(\"State\")}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiToggleButton-root\": { py: 0 },\n }}\n >\n <ToggleButton value={true} data-testid=\"eventconfiguration-active-toggle\">\n {translate(\"Active\")}\n </ToggleButton>\n <ToggleButton value={false} data-testid=\"eventconfiguration-inactive-toggle\">\n {translate(\"Inactive\")}\n </ToggleButton>\n </ToggleButtonGroup>\n\n <Chip\n label={`${translate(\"Exception\")} (${exceptionCount})`}\n variant={showExceptionOnly ? \"filled\" : \"outlined\"}\n color={showExceptionOnly ? \"primary\" : \"default\"}\n onClick={() => setShowExceptionOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-Exception-checkbox\"\n />\n <Chip\n label={`${translate(\"Not Completed\")} (${nonCompletedCount})`}\n variant={showNonCompletedOnly ? \"filled\" : \"outlined\"}\n color={showNonCompletedOnly ? \"primary\" : \"default\"}\n onClick={() => setShowNonCompletedOnly((current) => !current)}\n sx={{\n height: FILTER_CONTROL_HEIGHT,\n \"& .MuiChip-label\": { px: 1.75 },\n }}\n data-testid=\"eventconfiguration-notcompleted-checkbox\"\n />\n\n <Box\n sx={{\n width: { xs: \"100%\", sm: 200 },\n \"& .MuiOutlinedInput-root\": {\n height: FILTER_CONTROL_HEIGHT,\n },\n }}\n >\n <CustomDropdown\n control={filterControl}\n name=\"eventType\"\n options={eventTypeOptions}\n displayName=\"label\"\n optionValue=\"value\"\n isNullSelectDisabled={false}\n placeholder={translate(\"All event types\")}\n onChange={(event) =>\n setSelectedEventType(event?.target?.value || \"\")\n }\n dataTestId=\"eventconfiguration-eventtype-filter\"\n />\n </Box>\n\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!isFiltered}\n startIcon={<FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />}\n onClick={clearFilters}\n sx={{ height: FILTER_CONTROL_HEIGHT }}\n data-testid=\"eventconfiguration-clear-filters\"\n >\n {translate(\"Clear filters\")}\n </Button>\n </Box>\n )}\n\n {isDenied ? (\n <EmptyState\n icon=\"faLock\"\n title={translate(\"You don't have access to Events\")}\n body={translate(\n \"Your role doesn't include permission to view events. Ask an administrator to grant the view right for this module.\",\n )}\n dataTestId=\"no-permission-message\"\n />\n ) : isLoading ? (\n <EventConfigurationSkeleton />\n ) : hasLoaded && visibleTableEvents.length === 0 && isFiltered ? (\n <EmptyState\n icon=\"faMagnifyingGlass\"\n title={translate(\"No events match these filters\")}\n body={translate(\n \"Try a shorter search term, another event type, or switch between Active and Inactive.\",\n )}\n action={\n <Button variant=\"text\" size=\"small\" onClick={clearFilters}>\n {translate(\"Clear filters\")}\n </Button>\n }\n dataTestId=\"eventconfiguration-no-results\"\n />\n ) : hasLoaded && visibleTableEvents.length === 0 ? (\n <EmptyState\n icon=\"faBolt\"\n title={\n fetchActiveOnly\n ? translate(\"No active events\")\n : translate(\"No inactive events\")\n }\n body={translate(\n \"Configure an event to react to a form submission, a schedule, or a manual trigger.\",\n )}\n action={\n GeneralUtil.hasCheckRights(rights?.[\"create.manage.event\"]) ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={() => navigate(\"/ui/medplat/views/config\")}\n >\n {translate(\"Configure New\")}\n </Button>\n ) : null\n }\n dataTestId=\"eventconfiguration-no-events\"\n />\n ) : (\n <CustomizedTable\n columns={headers}\n tableData={visibleTableEvents}\n actions={actions}\n paginationConfig={{ pagination: false }}\n dataTestId=\"eventconfiguration-table-configuredevents\"\n isLoading={isLoading}\n rowUniqueKey=\"uuid\"\n disableHtml\n showFullContent={false}\n styleConfig={{ tableStyle: { maxHeight: 180 } }}\n />\n )}\n </Box>\n </Paper>\n </Grid>\n </Grid>\n );\n}\n\nexport default EventConfigurations;\n"],"names":["ShowFlywayQuery","lazy","EventsExceptionModal","FILTER_CONTROL_HEIGHT","describeSchedule","row","translate","parts","labelOf","TRIGGER_WHEN","hour","minute","EventConfigurations","navigate","useNavigate","trackEvent","useTrackEvent","configuredEvents","setConfiguredEvents","useState","fetchActiveOnly","setFetchActiveOnly","showExceptionOnly","setShowExceptionOnly","showNonCompletedOnly","setShowNonCompletedOnly","search","setSearch","pendingAction","setPendingAction","clickedRow","setClickedRow","openFlywayQuery","setOpenFlywayQuery","configuredQuery","setConfiguredQuery","featureUuid","setFeatureUuid","showException","setShowException","useTranslateProvider","isLoading","setIsLoading","hasLoaded","setHasLoaded","rights","setRights","filterControl","resetFilterForm","useForm","selectedEventType","setSelectedEventType","onRefresh","loadInitialData","headers","useMemo","EVENT_TYPES","jsx","MetaChip","STATE_META","STATUS_META","moment","handleToggleState","toggleState","showToast","runEvent","handleSyncClose","handleEdit","actions","useCallback","canUpdate","GeneralUtil","isScheduled","menu","clicked","FontAwesomeIcons","useEffect","featureJson","getAssignedFeatures","isActive","response","retrieveAll","rows","a","b","searchedEvents","term","event","_a","typeFilteredEvents","exceptionCount","nonCompletedCount","eventTypeOptions","present","type","visibleTableEvents","isFiltered","clearFilters","isDenied","Grid","SyncWithServerDialog","Suspense","CustomConfirmationModal","Paper","t","jsxs","Box","Typography","DebouncedSearchInput","InputAdornment","IconButton","Tooltip","Button","ToggleButtonGroup","next","ToggleButton","Chip","current","CustomDropdown","EmptyState","EventConfigurationSkeleton","CustomizedTable"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,KAAkBC,GAAK,MAAM,OAAO,+BAAmB,CAAC,GACxDC,KAAuBD,GAAK,MAAM,OAAO,oCAAwB,CAAC,GAmBlEE,IAAwB,IAUxBC,KAAmB,CAACC,GAAKC,MAAc;AAC3C,MAAI,EAACD,KAAA,QAAAA,EAAK,YAAY,QAAO;AAE7B,QAAME,IAAQ,CAACD,EAAUE,GAAQC,IAAcJ,EAAI,UAAU,CAAC,CAAC;AAK/D,MAHIA,EAAI,OACNE,EAAM,KAAK,GAAGD,EAAU,KAAK,CAAC,IAAID,EAAI,GAAG,EAAE,GAEzCA,EAAI,SAAS,QAAQA,EAAI,SAAS,QAAW;AAC/C,UAAMK,IAAO,OAAOL,EAAI,IAAI,EAAE,SAAS,GAAG,GAAG,GACvCM,IAAS,OAAON,EAAI,UAAU,CAAC,EAAE,SAAS,GAAG,GAAG;AACtD,IAAAE,EAAM,KAAK,GAAGG,CAAI,IAAIC,CAAM,EAAE;AAAA,EAChC,MAAA,CAAWN,EAAI,UACbE,EAAM,KAAK,GAAGD,EAAU,QAAQ,CAAC,IAAID,EAAI,MAAM,EAAE;AAGnD,SAAOE,EAAM,KAAK,KAAK;AACzB;AAQA,SAASK,KAAsB;AAC7B,QAAMC,IAAWC,GAAA,GACXC,IAAaC,GAAA,GACb,CAACC,GAAkBC,CAAmB,IAAIC,EAAS,IAAI,GAEvD,CAACC,GAAiBC,EAAkB,IAAIF,EAAS,EAAI,GACrD,CAACG,GAAmBC,CAAoB,IAAIJ,EAAS,EAAK,GAC1D,CAACK,GAAsBC,CAAuB,IAAIN,EAAS,EAAK,GAEhE,CAACO,GAAQC,CAAS,IAAIR,EAAS,EAAE,GACjC,CAACS,GAAeC,CAAgB,IAAIV,EAAS,IAAI,GACjD,CAACW,GAAYC,CAAa,IAAIZ,EAAS,CAAA,CAAE,GACzC,CAACa,IAAiBC,CAAkB,IAAId,EAAS,EAAK,GACtD,CAACe,IAAiBC,EAAkB,IAAIhB,EAAS,EAAE,GACnD,CAACiB,GAAaC,CAAc,IAAIlB,EAAS,IAAI,GAC7C,CAACmB,GAAeC,CAAgB,IAAIpB,EAAS,EAAK,GAClD,EAAE,WAAAb,EAAA,IAAckC,GAAA,GAChB,CAACC,GAAWC,CAAY,IAAIvB,EAAS,EAAK,GAC1C,CAACwB,GAAWC,CAAY,IAAIzB,EAAS,EAAK,GAC1C,CAAC0B,GAAQC,EAAS,IAAI3B,EAAS,CAAA,CAAE,GAIjC,EAAE,SAAS4B,IAAe,OAAOC,GAAA,IAAoBC,GAAQ;AAAA,IACjE,eAAe,EAAE,WAAW,GAAA;AAAA,EAAG,CAChC,GACK,CAACC,GAAmBC,CAAoB,IAAIhC,EAAS,EAAE,GAQvDiC,KAAY,YAAY;AAC5B,IAAArC,EAAW,gBAAgB;AAAA,MACzB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,IAAA,CACZ,GACDsC,EAAgBjC,CAAe;AAAA,EACjC,GAEMkC,KAAUC;AAAA,IACd,MAAM;AAAA,MACJ,EAAE,OAAO,QAAQ,OAAOjD,EAAU,MAAM,GAAG,OAAO,QAAQ,UAAU,IAAA;AAAA,MACpE;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAU,YAAY;AAAA,QAC7B,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ,CAACD,MAAQC,EAAUE,GAAQgD,IAAanD,KAAA,gBAAAA,EAAK,SAAS,CAAC;AAAA,MAAA;AAAA,MAEjE;AAAA,QACE,OAAO;AAAA,QACP,OAAOC,EAAU,UAAU;AAAA,QAC3B,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ,CAACD,MAAQD,GAAiBC,GAAKC,CAAS;AAAA,MAAA;AAAA,MAElD;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAU,OAAO;AAAA,QACxB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ,CAACD,MACP,gBAAAoD,EAACC,IAAA,EAAS,MAAMC,IAAY,OAAOtD,KAAA,gBAAAA,EAAK,OAAO,WAAAC,EAAA,CAAsB;AAAA,MAAA;AAAA,MAGzE;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAU,UAAU;AAAA,QAC3B,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ,CAACD,MACP,gBAAAoD;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,MAAME;AAAA,YACN,OAAOvD,KAAA,gBAAAA,EAAK;AAAA,YACZ,WAAAC;AAAA,YACA,WAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,MAGJ;AAAA,QACE,OAAO;AAAA,QACP,OAAOA,EAAU,cAAc;AAAA,QAC/B,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ,CAACD,MACPA,KAAA,QAAAA,EAAK,iBACDwD,GAAOxD,EAAI,cAAc,EAAE,OAAO,kBAAkB,IACpD;AAAA,MAAA;AAAA,MAER;AAAA,QACE,OAAO;AAAA,QACP,OAAOC,EAAU,SAAS;AAAA,QAC1B,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,CAACA,CAAS;AAAA,EAAA,GASNwD,KAAoB,YAAY;AACpC,QAAI;AACF,MAAIlC,MAAkB,kBACpBC,EAAiB,IAAI,GACrBa,EAAa,EAAI,GACjB,MAAMqB,GAAYjC,CAAU,GAC5BkC,EAAU;AAAA,QACR,UACElC,KAAA,gBAAAA,EAAY,WAAU,WAClB,0BACA;AAAA,QACN,MAAM;AAAA,MAAA,CACP,GACD,MAAMuB,EAAgBjC,CAAe,KAC5BQ,MAAkB,cAC3BC,EAAiB,IAAI,GACrBa,EAAa,EAAI,GACjB,MAAMuB,GAASnC,KAAA,gBAAAA,EAAY,IAAI,GAC/BkC,EAAU,EAAE,SAAS,2BAA2B,MAAM,WAAW,GACjE,MAAMX,EAAgBjC,CAAe;AAAA,IAEzC,QAAQ;AACN,MAAA4C,EAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACP,GACDtB,EAAa,EAAK;AAAA,IACpB;AAAA,EACF,GAEMwB,KAAkB,MAAM7B,EAAe,MAAM,IAAI,GAQjD8B,KAAa,CAAC9D,MAAQ;AAC1B,IAAAQ,EAAS,4BAA4BR,KAAA,gBAAAA,EAAK,IAAI,EAAE;AAAA,EAClD,GAKM+D,KAAUC;AAAA,IACd,CAAChE,MAAQ;AACP,YAAMiE,IAAYC,EAAY;AAAA,QAC5B1B,KAAA,gBAAAA,EAAS;AAAA,MAAqB,GAE1B2B,KACJnE,KAAA,gBAAAA,EAAK,eAAc,mBAAkBA,KAAA,gBAAAA,EAAK,eAAc,aAEpDoE,IAAO;AAAA,QACXH,KAAa;AAAA,UACX,OAAOhE;AAAA,aACLD,KAAA,gBAAAA,EAAK,WAAU,WAAW,qBAAqB;AAAA,UAAA;AAAA,UAEjD,SAAS,CAACqE,MAAY;AACpB,YAAA3C,EAAc2C,CAAO,GACrB7C,EAAiB,cAAc;AAAA,UACjC;AAAA,QAAA;AAAA,QAEF;AAAA,UACE,OAAOvB,EAAU,kBAAkB;AAAA,UACnC,SAAS,CAACoE,MAAYrC,EAAeqC,KAAA,gBAAAA,EAAS,IAAI;AAAA,QAAA;AAAA,QAEpDF,KACED,EAAY,eAAe1B,KAAA,gBAAAA,EAAS,2BAA2B,KAAK;AAAA,UAClE,OAAOvC,EAAU,eAAe;AAAA,UAChC,SAAS,CAACoE,MAAY;AACpB,YAAA3C,EAAc2C,CAAO,GACrB7C,EAAiB,SAAS;AAAA,UAC5B;AAAA,QAAA;AAAA,QAEJ2C,KAAe;AAAA,UACb,OAAOlE,EAAU,iBAAiB;AAAA,UAClC,SAAS,CAACoE,MAAY;AACpB,YAAA3C,EAAc2C,CAAO,GACrBnC,EAAiB,EAAI;AAAA,UACvB;AAAA,QAAA;AAAA,QAEF;AAAA,UACE,OAAOjC,EAAU,mBAAmB;AAAA,UACpC,SAAS,CAACoE,MAAY;AACpB,YAAAvC,GAAmBuC,CAAO,GAC1BzC,EAAmB,EAAI;AAAA,UACzB;AAAA,QAAA;AAAA,MACF,EACA,OAAO,OAAO;AAEhB,aAAO;AAAA,QACLqC,KAAa;AAAA,UACX,OAAO;AAAA,UACP,MAAM,gBAAAb,EAACkB,GAAA,EAAiB,UAAS,QAAA,CAAQ;AAAA,UACzC,SAASR;AAAA,UACT,WAAW7D,EAAU,YAAY;AAAA,UACjC,YAAY;AAAA,QAAA;AAAA,QAEd;AAAA,UACE,OAAO;AAAA,UACP,MAAM,gBAAAmD,EAACkB,GAAA,EAAiB,UAAS,SAAA,CAAS;AAAA,UAC1C,WAAWF;AAAA,UACX,WAAWnE,EAAU,oBAAoB;AAAA,UACzC,YAAY;AAAA,QAAA;AAAA,MACd,EACA,OAAO,OAAO;AAAA,IAClB;AAAA,IACA,CAACuC,GAAQvC,CAAS;AAAA,EAAA;AAGpB,EAAAsE,EAAU,MAAM;AAOd,KANoB,YAAY;AAC9B,YAAM,EAAE,MAAMC,EAAA,IAAgB,MAAMC;AAAA,QAClC;AAAA,MAAA;AAEF,MAAID,KAAa/B,GAAU,KAAK,MAAM+B,CAAW,CAAC;AAAA,IACpD,GACA;AAAA,EACF,GAAG,CAAA,CAAE;AAQL,QAAMxB,IAAkB,OAAO0B,MAAa;AAC1C,QAAI;AACF,MAAArC,EAAa,EAAI;AACjB,YAAMsC,IAAW,MAAMC,GAAYF,CAAQ,GAGrCG,IAAO,CAAC,IAAIF,KAAA,gBAAAA,EAAU,SAAQ,CAAA,CAAG,EAAE,KAAK,CAACG,GAAGC,MAC5CD,EAAE,eAAe,QAAQC,EAAE,eAAe,OAAa,KACvDA,EAAE,eAAe,QAAQD,EAAE,eAAe,OAAa,IACvDC,EAAE,aAAaD,EAAE,aAAmB,KACpCC,EAAE,aAAaD,EAAE,aAAmB,KAChCA,EAAE,OAAO,MAAMC,EAAE,OAAO,OAAOD,EAAE,QAAQ,MAAMC,EAAE,QAAQ,EAClE;AACD,MAAAlE,EAAoBgE,CAAI,GACxBxC,EAAa,EAAK,GAClBE,EAAa,EAAI;AAAA,IACnB,QAAQ;AACN,MAAAoB,EAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACP,GACDtB,EAAa,EAAK,GAClBE,EAAa,EAAI;AAAA,IACnB;AAAA,EACF;AAEA,EAAAgC,EAAU,MAAM;AACd,IAAAvB,EAAgBjC,CAAe;AAAA,EACjC,GAAG,CAACA,CAAe,CAAC;AAEpB,QAAMiE,IAAiB9B,EAAQ,MAAM;AACnC,QAAI,CAACtC,EAAkB,QAAO,CAAA;AAC9B,UAAMqE,IAAO5D,EAAO,KAAA,EAAO,YAAA;AAC3B,WAAK4D,IACErE,EAAiB;AAAA,MAAO,CAACsE,MAAA;;AAC9B,gBAAAC,IAAAD,KAAA,gBAAAA,EAAO,SAAP,gBAAAC,EAAa,cAAc,SAASF;AAAA;AAAA,IAAI,IAFxBrE;AAAA,EAIpB,GAAG,CAACA,GAAkBS,CAAM,CAAC,GAEvB+D,IAAqBlC;AAAA,IACzB,MACE8B,EAAe;AAAA,MACb,CAACE,MAAU,CAACrC,KAAqBqC,EAAM,cAAcrC;AAAA,IAAA;AAAA,IAEzD,CAACmC,GAAgBnC,CAAiB;AAAA,EAAA,GAG9BwC,KAAiBnC;AAAA,IACrB,MACEkC,EAAmB,OAAO,CAACF,MAAUA,EAAM,WAAW,WAAW,EAAE;AAAA,IACrE,CAACE,CAAkB;AAAA,EAAA,GAGfE,KAAoBpC;AAAA,IACxB,MACEkC,EAAmB,OAAO,CAACF,MAAUA,EAAM,WAAW,WAAW,EAAE;AAAA,IACrE,CAACE,CAAkB;AAAA,EAAA,GAGfG,KAAmBrC,EAAQ,MAAM;AACrC,UAAMsC,IAAU,IAAI;AAAA,OACjB5E,KAAoB,CAAA,GAAI,IAAI,CAACsE,MAAUA,EAAM,SAAS,EAAE,OAAO,OAAO;AAAA,IAAA;AAEzE,WAAO/B,GAAY,OAAO,CAACsC,MAASD,EAAQ,IAAIC,EAAK,KAAK,CAAC,EAAE,IAAI,CAACA,OAAU;AAAA,MAC1E,OAAOA,EAAK;AAAA,MACZ,OAAOxF,EAAUwF,EAAK,KAAK;AAAA,IAAA,EAC3B;AAAA,EACJ,GAAG,CAAC7E,GAAkBX,CAAS,CAAC,GAE1ByF,IAAqBxC;AAAA,IACzB,MACEkC,EAAmB,OAAO,CAACF,MACrB,EAAAjE,KAAqBiE,EAAM,WAAW,eACtC/D,KAAwB+D,EAAM,WAAW,YAE9C;AAAA,IACH,CAACE,GAAoBnE,GAAmBE,CAAoB;AAAA,EAAA,GAGxDwE,IACJ,EAAQtE,KACR,EAAQwB,KACR5B,KACAE,GAEIyE,IAAe,MAAM;AACzB,IAAAtE,EAAU,EAAE,GACZJ,EAAqB,EAAK,GAC1BE,EAAwB,EAAK,GAC7B0B,EAAqB,EAAE,GACvBH,GAAgB,EAAE,WAAW,IAAI;AAAA,EACnC,GAEMkD,IACJ,CAACzD,KACDI,MAAW,QACX,CAAC0B,EAAY,eAAe1B,KAAA,gBAAAA,EAAS,oBAAoB;AAE3D,2BACGsD,IAAA,EAAK,WAAS,IAAC,WAAU,uBAAsB,SAAS,GACtD,UAAA;AAAA,IAAA/D,KACC,gBAAAqB;AAAA,MAAC2C;AAAA,MAAA;AAAA,QACC,QAAQ,EAAQhE;AAAA,QAChB,aAAa8B;AAAA,QACb,aAAa9B;AAAA,QACb,YAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAGf,gBAAAqB,EAAC4C,KACE,UAAA/D,KACC,gBAAAmB;AAAA,MAACvD;AAAA,MAAA;AAAA,QACC,IAAI4B,KAAA,gBAAAA,EAAY;AAAA,QAChB,WAAWA,KAAA,gBAAAA,EAAY;AAAA,QACvB,MAAMQ;AAAA,QACN,aAAa,MAAMC,EAAiB,EAAK;AAAA,QACzC,YAAW;AAAA,MAAA;AAAA,IAAA,GAGjB;AAAA,sBACC8D,GAAA,EACC,UAAA,gBAAA5C;AAAA,MAACzD;AAAA,MAAA;AAAA,QACC,iBAAAkC;AAAA,QACA,MAAMF;AAAA,QACN,SAAS,MAAM;AACb,UAAAC,EAAmB,EAAK;AAAA,QAC1B;AAAA,QACA,YAAW;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IACA,gBAAAwB;AAAA,MAAC6C;AAAA,MAAA;AAAA,QACC,aACE1E,MAAkB,YACd,GAAGE,KAAA,gBAAAA,EAAY,IAAI,+DACnBA,KAAA,gBAAAA,EAAY,WAAU,WACpB,GAAGA,KAAA,gBAAAA,EAAY,IAAI,kFACnB,GAAGA,KAAA,gBAAAA,EAAY,IAAI;AAAA,QAE3B,OAEMxB,EADJsB,MAAkB,YACJ,yBAERE,KAAA,gBAAAA,EAAY,WAAU,WAClB,qBACA,gBAJyB;AAAA,QAOrC,aAAagC;AAAA,QACb,MAAM,EAAQlC;AAAA,QACd,aAAa,MAAMC,EAAiB,IAAI;AAAA,QACxC,YAAW;AAAA,MAAA;AAAA,IAAA;AAAA,sBAGZsE,IAAA,EAAK,MAAM,EAAE,IAAI,MAChB,UAAA,gBAAA1C;AAAA,MAAC8C;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,IAAI;AAAA,UACF,GAAG,EAAE,IAAI,KAAK,IAAI,EAAA;AAAA,UAClB,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,cAAc,CAACC,MAAM,GAAGA,EAAE,MAAM,UAAU;AAAA,UAC1C,iBAAiB;AAAA,QAAA;AAAA,QAGnB,UAAA,gBAAAC,EAACC,GAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAA,GAExD,UAAA;AAAA,UAAA,gBAAAD;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,KAAK;AAAA,cAAA;AAAA,cAGP,UAAA;AAAA,gBAAA,gBAAAD,EAACC,GAAA,EAAI,IAAI,EAAE,UAAU,EAAE,IAAI,QAAQ,IAAI,MAAA,EAAM,GAC3C,UAAA;AAAA,kBAAA,gBAAAjD;AAAA,oBAACkD;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,WAAU;AAAA,sBACV,IAAI,EAAE,YAAY,KAAK,OAAO,gBAAgB,IAAI,IAAA;AAAA,sBAEjD,YAAU,QAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAErB,gBAAAlD,EAACkD,GAAA,EAAW,SAAQ,SAAQ,OAAM,kBAC/B,UAAArG;AAAA,oBACC;AAAA,kBAAA,EACF,CACF;AAAA,gBAAA,GACF;AAAA,gBAEC,CAAC4F,KACA,gBAAAO;AAAA,kBAACC;AAAA,kBAAA;AAAA,oBACC,IAAI;AAAA,sBACF,SAAS;AAAA,sBACT,YAAY;AAAA,sBACZ,KAAK;AAAA,sBACL,UAAU;AAAA,oBAAA;AAAA,oBAGZ,UAAA;AAAA,sBAAA,gBAAAjD;AAAA,wBAACmD;AAAA,wBAAA;AAAA,0BACC,OAAOlF;AAAA,0BACP,UAAUC;AAAA,0BACV,aAAarB,EAAU,gBAAgB;AAAA,0BACvC,WAAW;AAAA,0BACX,MAAK;AAAA,0BACL,eAAY;AAAA,0BACZ,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,IAAI,MAAI;AAAA,0BACnC,WAAW;AAAA,4BACT,WAAW,EAAE,cAAcA,EAAU,gBAAgB,EAAA;AAAA,0BAAE;AAAA,0BAEzD,YAAY;AAAA,4BACV,gBACE,gBAAAmD,EAACoD,IAAA,EAAe,UAAS,SACvB,UAAA,gBAAApD,EAACiD,GAAA,EAAI,IAAI,EAAE,OAAO,iBAAiB,SAAS,UAC1C,UAAA,gBAAAjD;AAAA,8BAACkB;AAAA,8BAAA;AAAA,gCACC,UAAS;AAAA,gCACT,MAAK;AAAA,8BAAA;AAAA,4BAAA,GAET,EAAA,CACF;AAAA,4BAEF,cAAcjD,IACZ,gBAAA+B,EAACoD,IAAA,EAAe,UAAS,OACvB,UAAA,gBAAApD;AAAA,8BAACqD;AAAA,8BAAA;AAAA,gCACC,MAAK;AAAA,gCACL,cAAYxG,EAAU,cAAc;AAAA,gCACpC,SAAS,MAAMqB,EAAU,EAAE;AAAA,gCAE3B,UAAA,gBAAA8B,EAACkB,GAAA,EAAiB,UAAS,WAAU,MAAK,KAAA,CAAK;AAAA,8BAAA;AAAA,4BAAA,GAEnD,IACE;AAAA,0BAAA;AAAA,wBACN;AAAA,sBAAA;AAAA,sBAEF,gBAAAlB,EAACsD,IAAA,EAAQ,OAAOzG,EAAU,SAAS,GACjC,UAAA,gBAAAmD;AAAA,wBAACqD;AAAA,wBAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAAS1D;AAAA,0BACT,cAAY9C,EAAU,SAAS;AAAA,0BAC/B,eAAY;AAAA,0BAEZ,UAAA,gBAAAmD,EAACkB,GAAA,EAAiB,UAAS,gBAAA,CAAgB;AAAA,wBAAA;AAAA,sBAAA,GAE/C;AAAA,sBACCJ,EAAY;AAAA,wBACX1B,KAAA,gBAAAA,EAAS;AAAA,sBAAqB,KAE9B,gBAAAY;AAAA,wBAACuD;AAAA,wBAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAAQ;AAAA,0BACR,WAAW,gBAAAvD,EAACkB,GAAA,EAAiB,UAAS,SAAA,CAAS;AAAA,0BAC/C,eAAY;AAAA,0BACZ,SAAS,MAAM;AACb,4BAAA5D,EAAW,gBAAgB;AAAA,8BACzB,aAAa;AAAA,8BACb,aAAa;AAAA,8BACb,WAAW;AAAA,4BAAA,CACZ,GACDF,EAAS,0BAA0B;AAAA,0BACrC;AAAA,0BAEC,YAAU,eAAe;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAC5B;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAEJ;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,CAACqF;AAAA,UAEA,gBAAAO;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,UAAU;AAAA,cAAA;AAAA,cAGZ,UAAA;AAAA,gBAAA,gBAAAD;AAAA,kBAACQ;AAAA,kBAAA;AAAA,oBACC,WAAS;AAAA,oBACT,MAAK;AAAA,oBACL,OAAO7F;AAAA,oBACP,UAAU,CAACmE,GAAO2B,MAAS;AACzB,sBAAIA,MAAS,QAAM7F,GAAmB6F,CAAI;AAAA,oBAC5C;AAAA,oBACA,cAAY5G,EAAU,OAAO;AAAA,oBAC7B,IAAI;AAAA,sBACF,QAAQH;AAAA,sBACR,2BAA2B,EAAE,IAAI,EAAA;AAAA,oBAAE;AAAA,oBAGrC,UAAA;AAAA,sBAAA,gBAAAsD,EAAC0D,MAAa,OAAO,IAAM,eAAY,oCACpC,UAAA7G,EAAU,QAAQ,GACrB;AAAA,sBACA,gBAAAmD,EAAC0D,MAAa,OAAO,IAAO,eAAY,sCACrC,UAAA7G,EAAU,UAAU,EAAA,CACvB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGF,gBAAAmD;AAAA,kBAAC2D;AAAA,kBAAA;AAAA,oBACC,OAAO,GAAG9G,EAAU,WAAW,CAAC,KAAKoF,EAAc;AAAA,oBACnD,SAASpE,IAAoB,WAAW;AAAA,oBACxC,OAAOA,IAAoB,YAAY;AAAA,oBACvC,SAAS,MAAMC,EAAqB,CAAC8F,MAAY,CAACA,CAAO;AAAA,oBACzD,IAAI;AAAA,sBACF,QAAQlH;AAAA,sBACR,oBAAoB,EAAE,IAAI,KAAA;AAAA,oBAAK;AAAA,oBAEjC,eAAY;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEd,gBAAAsD;AAAA,kBAAC2D;AAAA,kBAAA;AAAA,oBACC,OAAO,GAAG9G,EAAU,eAAe,CAAC,KAAKqF,EAAiB;AAAA,oBAC1D,SAASnE,IAAuB,WAAW;AAAA,oBAC3C,OAAOA,IAAuB,YAAY;AAAA,oBAC1C,SAAS,MAAMC,EAAwB,CAAC4F,MAAY,CAACA,CAAO;AAAA,oBAC5D,IAAI;AAAA,sBACF,QAAQlH;AAAA,sBACR,oBAAoB,EAAE,IAAI,KAAA;AAAA,oBAAK;AAAA,oBAEjC,eAAY;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGd,gBAAAsD;AAAA,kBAACiD;AAAA,kBAAA;AAAA,oBACC,IAAI;AAAA,sBACF,OAAO,EAAE,IAAI,QAAQ,IAAI,IAAA;AAAA,sBACzB,4BAA4B;AAAA,wBAC1B,QAAQvG;AAAA,sBAAA;AAAA,oBACV;AAAA,oBAGF,UAAA,gBAAAsD;AAAA,sBAAC6D;AAAA,sBAAA;AAAA,wBACC,SAASvE;AAAA,wBACT,MAAK;AAAA,wBACL,SAAS6C;AAAA,wBACT,aAAY;AAAA,wBACZ,aAAY;AAAA,wBACZ,sBAAsB;AAAA,wBACtB,aAAatF,EAAU,iBAAiB;AAAA,wBACxC,UAAU,CAACiF;;AACT,iCAAApC,IAAqBqC,IAAAD,KAAA,gBAAAA,EAAO,WAAP,gBAAAC,EAAe,UAAS,EAAE;AAAA;AAAA,wBAEjD,YAAW;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACb;AAAA,gBAAA;AAAA,gBAGF,gBAAA/B;AAAA,kBAACuD;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,UAAU,CAAChB;AAAA,oBACX,WAAW,gBAAAvC,EAACkB,GAAA,EAAiB,UAAS,WAAU,MAAK,MAAK;AAAA,oBAC1D,SAASsB;AAAA,oBACT,IAAI,EAAE,QAAQ9F,EAAA;AAAA,oBACd,eAAY;AAAA,oBAEX,YAAU,eAAe;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC5B;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH+F,IACC,gBAAAzC;AAAA,YAAC8D;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAOjH,EAAU,iCAAiC;AAAA,cAClD,MAAMA;AAAA,gBACJ;AAAA,cAAA;AAAA,cAEF,YAAW;AAAA,YAAA;AAAA,UAAA,IAEXmC,IACF,gBAAAgB,EAAC+D,IAAA,EAA2B,IAC1B7E,KAAaoD,EAAmB,WAAW,KAAKC,IAClD,gBAAAvC;AAAA,YAAC8D;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAOjH,EAAU,+BAA+B;AAAA,cAChD,MAAMA;AAAA,gBACJ;AAAA,cAAA;AAAA,cAEF,QACE,gBAAAmD,EAACuD,GAAA,EAAO,SAAQ,QAAO,MAAK,SAAQ,SAASf,GAC1C,UAAA3F,EAAU,eAAe,EAAA,CAC5B;AAAA,cAEF,YAAW;AAAA,YAAA;AAAA,UAAA,IAEXqC,KAAaoD,EAAmB,WAAW,IAC7C,gBAAAtC;AAAA,YAAC8D;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAEMjH,EADJc,IACc,qBACA,oBADkB;AAAA,cAGlC,MAAMd;AAAA,gBACJ;AAAA,cAAA;AAAA,cAEF,QACEiE,EAAY,eAAe1B,KAAA,gBAAAA,EAAS,sBAAsB,IACxD,gBAAAY;AAAA,gBAACuD;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,WAAW,gBAAAvD,EAACkB,GAAA,EAAiB,UAAS,SAAA,CAAS;AAAA,kBAC/C,SAAS,MAAM9D,EAAS,0BAA0B;AAAA,kBAEjD,YAAU,eAAe;AAAA,gBAAA;AAAA,cAAA,IAE1B;AAAA,cAEN,YAAW;AAAA,YAAA;AAAA,UAAA,IAGb,gBAAA4C;AAAA,YAACgE;AAAA,YAAA;AAAA,cACC,SAASnE;AAAA,cACT,WAAWyC;AAAA,cACX,SAAA3B;AAAA,cACA,kBAAkB,EAAE,YAAY,GAAA;AAAA,cAChC,YAAW;AAAA,cACX,WAAA3B;AAAA,cACA,cAAa;AAAA,cACb,aAAW;AAAA,cACX,iBAAiB;AAAA,cACjB,aAAa,EAAE,YAAY,EAAE,WAAW,MAAI;AAAA,YAAE;AAAA,UAAA;AAAA,QAChD,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA,EACF,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -6,7 +6,7 @@ import { execute as L } from "@/common/services/GlobalApis";
6
6
  import { showToast as W } from "@/common/toaster/toaster";
7
7
  import { useTranslateProvider as _ } from "@/common/languageTranslator/TranslationContext";
8
8
  import B from "@/common/fontAwesomeIcons/FontAwesomeIcons";
9
- import { g as E, b as P } from "./EventsUi-D6O9S7BK.js";
9
+ import { g as E, b as P } from "./EventsUi-Dl_yckSA.js";
10
10
  function $({
11
11
  id: d,
12
12
  eventName: x,
@@ -185,4 +185,4 @@ $.propTypes = {
185
185
  export {
186
186
  $ as default
187
187
  };
188
- //# sourceMappingURL=EventsExceptionModal-BX-ArkBE.js.map
188
+ //# sourceMappingURL=EventsExceptionModal-DafomIv6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventsExceptionModal-BX-ArkBE.js","sources":["../src/views/Events/EventsExceptionModal.jsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport { execute } from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EventExceptionModalSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport { EmptyState } from \"./components/EventsUi\";\n\n/**\n * Modal component for displaying event exceptions.\n *\n * @module EventsExceptionModal\n * @function\n *\n * @param {Object} props - The component props.\n * @param {number} props.id - The identifier for the event configuration.\n * @param {string} props.eventName - Name of the event the exception belongs to.\n * @param {boolean} props.open - A flag indicating if the modal is open.\n * @param {function} props.handleClose - Callback function to close the modal.\n */\nfunction EventsExceptionModal({\n id,\n eventName,\n title,\n open,\n handleClose,\n dataTestId,\n}) {\n const { translate } = useTranslateProvider();\n\n const [eventException, setEventException] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n useEffect(() => {\n if (id) {\n loadInitialData(id);\n }\n }, [id]);\n\n /**\n * Loads initial event exception data based on the provided ID.\n *\n * @async\n * @function loadInitialData\n * @param {number} id - The ID of the event configuration to retrieve exceptions for.\n * @throws Will show a toast message on error.\n */\n const loadInitialData = async (id) => {\n try {\n setIsLoading(true);\n const resposne = await execute(\n {\n code: \"event_config_retrieve_exceptions_by_config_id\",\n parameters: {\n configId: Number(id),\n },\n },\n { showLoader: false }\n );\n setIsLoading(false);\n const result = resposne?.data?.result;\n if (result?.length > 0) {\n setEventException(result[0]);\n } else {\n setEventException(null);\n }\n } catch {\n setIsLoading(false);\n showToast({\n message: \"Could not load the exception. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n fullWidth\n maxWidth=\"lg\"\n data-testid={dataTestId}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 2,\n pt: 2,\n pb: 3,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n data-testid=\"eventsexceptionmodal-header\"\n >\n <Box>\n <Typography\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n data-testid=\"eventsexceptionmodal-title\"\n >\n {title || translate(\"Last exception\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {eventName\n ? `${translate(\"What went wrong the last time\")} ${eventName} ${translate(\"ran.\")}`\n : translate(\"What went wrong the last time this event ran.\")}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n aria-label={translate(\"Close\")}\n data-testid=\"eventsexceptionmodal-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent\n // MUI zeroes a DialogContent's top padding when it directly follows\n // a DialogTitle; this selector has the specificity to put it back.\n sx={{ \"&.MuiDialogContent-root\": { pt: 3 } }}\n data-testid=\"eventsexceptionmodal-content\"\n >\n <EventExceptionModalSkeleton isLoading={isLoading}>\n {eventException && !isLoading && (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Box\n component=\"pre\"\n data-testid=\"eventsexceptionmodal-exception-string\"\n sx={{\n m: 0,\n p: 2,\n maxHeight: \"45vh\",\n overflow: \"auto\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n fontSize: \"0.8125rem\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n backgroundColor: \"background.default\",\n }}\n >\n {eventException?.exceptionString}\n </Box>\n\n <Box\n sx={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 3,\n }}\n >\n {eventException?.systemTriggerOn && (\n <Box data-testid=\"eventsexceptionmodal-triggered-on\">\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {translate(\"Triggered On\")}\n </Typography>\n <Typography variant=\"body2\">\n {new Date(eventException.systemTriggerOn).toLocaleString()}\n </Typography>\n </Box>\n )}\n\n {eventException?.processedOn && (\n <Box data-testid=\"eventsexceptionmodal-processed-on\">\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {translate(\"Processed On\")}\n </Typography>\n <Typography variant=\"body2\">\n {new Date(eventException.processedOn).toLocaleString()}\n </Typography>\n </Box>\n )}\n </Box>\n </Box>\n )}\n {!eventException && !isLoading && (\n <EmptyState\n icon=\"faCircleCheck\"\n title={translate(\"No Exception Occurred\")}\n body={translate(\"This event's last run finished without an error.\")}\n dataTestId=\"eventsexceptionmodal-no-exception\"\n />\n )}\n </EventExceptionModalSkeleton>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleClose}\n data-testid=\"eventsexceptionmodal-close-button-action\"\n >\n {translate(\"Close\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default EventsExceptionModal;\n\nEventsExceptionModal.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n id: PropTypes.any,\n eventName: PropTypes.any,\n title: PropTypes.any,\n dataTestId: PropTypes.any,\n};\n"],"names":["EventsExceptionModal","id","eventName","title","open","handleClose","dataTestId","translate","useTranslateProvider","eventException","setEventException","useState","isLoading","setIsLoading","useEffect","loadInitialData","resposne","execute","result","_a","showToast","jsxs","Dialog","DialogTitle","Box","jsx","Typography","IconButton","FontAwesomeIcons","DialogContent","EventExceptionModalSkeleton","t","EmptyState","DialogActions","Button","PropTypes"],"mappings":"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"}
1
+ {"version":3,"file":"EventsExceptionModal-DafomIv6.js","sources":["../src/views/Events/EventsExceptionModal.jsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport { execute } from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EventExceptionModalSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport { EmptyState } from \"./components/EventsUi\";\n\n/**\n * Modal component for displaying event exceptions.\n *\n * @module EventsExceptionModal\n * @function\n *\n * @param {Object} props - The component props.\n * @param {number} props.id - The identifier for the event configuration.\n * @param {string} props.eventName - Name of the event the exception belongs to.\n * @param {boolean} props.open - A flag indicating if the modal is open.\n * @param {function} props.handleClose - Callback function to close the modal.\n */\nfunction EventsExceptionModal({\n id,\n eventName,\n title,\n open,\n handleClose,\n dataTestId,\n}) {\n const { translate } = useTranslateProvider();\n\n const [eventException, setEventException] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n useEffect(() => {\n if (id) {\n loadInitialData(id);\n }\n }, [id]);\n\n /**\n * Loads initial event exception data based on the provided ID.\n *\n * @async\n * @function loadInitialData\n * @param {number} id - The ID of the event configuration to retrieve exceptions for.\n * @throws Will show a toast message on error.\n */\n const loadInitialData = async (id) => {\n try {\n setIsLoading(true);\n const resposne = await execute(\n {\n code: \"event_config_retrieve_exceptions_by_config_id\",\n parameters: {\n configId: Number(id),\n },\n },\n { showLoader: false }\n );\n setIsLoading(false);\n const result = resposne?.data?.result;\n if (result?.length > 0) {\n setEventException(result[0]);\n } else {\n setEventException(null);\n }\n } catch {\n setIsLoading(false);\n showToast({\n message: \"Could not load the exception. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n fullWidth\n maxWidth=\"lg\"\n data-testid={dataTestId}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 2,\n pt: 2,\n pb: 3,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n data-testid=\"eventsexceptionmodal-header\"\n >\n <Box>\n <Typography\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n data-testid=\"eventsexceptionmodal-title\"\n >\n {title || translate(\"Last exception\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {eventName\n ? `${translate(\"What went wrong the last time\")} ${eventName} ${translate(\"ran.\")}`\n : translate(\"What went wrong the last time this event ran.\")}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n aria-label={translate(\"Close\")}\n data-testid=\"eventsexceptionmodal-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent\n // MUI zeroes a DialogContent's top padding when it directly follows\n // a DialogTitle; this selector has the specificity to put it back.\n sx={{ \"&.MuiDialogContent-root\": { pt: 3 } }}\n data-testid=\"eventsexceptionmodal-content\"\n >\n <EventExceptionModalSkeleton isLoading={isLoading}>\n {eventException && !isLoading && (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Box\n component=\"pre\"\n data-testid=\"eventsexceptionmodal-exception-string\"\n sx={{\n m: 0,\n p: 2,\n maxHeight: \"45vh\",\n overflow: \"auto\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n fontSize: \"0.8125rem\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n backgroundColor: \"background.default\",\n }}\n >\n {eventException?.exceptionString}\n </Box>\n\n <Box\n sx={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 3,\n }}\n >\n {eventException?.systemTriggerOn && (\n <Box data-testid=\"eventsexceptionmodal-triggered-on\">\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {translate(\"Triggered On\")}\n </Typography>\n <Typography variant=\"body2\">\n {new Date(eventException.systemTriggerOn).toLocaleString()}\n </Typography>\n </Box>\n )}\n\n {eventException?.processedOn && (\n <Box data-testid=\"eventsexceptionmodal-processed-on\">\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {translate(\"Processed On\")}\n </Typography>\n <Typography variant=\"body2\">\n {new Date(eventException.processedOn).toLocaleString()}\n </Typography>\n </Box>\n )}\n </Box>\n </Box>\n )}\n {!eventException && !isLoading && (\n <EmptyState\n icon=\"faCircleCheck\"\n title={translate(\"No Exception Occurred\")}\n body={translate(\"This event's last run finished without an error.\")}\n dataTestId=\"eventsexceptionmodal-no-exception\"\n />\n )}\n </EventExceptionModalSkeleton>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleClose}\n data-testid=\"eventsexceptionmodal-close-button-action\"\n >\n {translate(\"Close\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default EventsExceptionModal;\n\nEventsExceptionModal.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n id: PropTypes.any,\n eventName: PropTypes.any,\n title: PropTypes.any,\n dataTestId: PropTypes.any,\n};\n"],"names":["EventsExceptionModal","id","eventName","title","open","handleClose","dataTestId","translate","useTranslateProvider","eventException","setEventException","useState","isLoading","setIsLoading","useEffect","loadInitialData","resposne","execute","result","_a","showToast","jsxs","Dialog","DialogTitle","Box","jsx","Typography","IconButton","FontAwesomeIcons","DialogContent","EventExceptionModalSkeleton","t","EmptyState","DialogActions","Button","PropTypes"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
2
  import o from "prop-types";
3
- import { useState as v, useRef as h, useEffect as E } from "react";
3
+ import { useState as v, useRef as h, useEffect as N } from "react";
4
4
  import { useSelector as m } from "react-redux";
5
5
  import { getUseSkeleton as x } from "@/store/reducers/SkeletonReducer";
6
- import { Chip as u, Box as d, Typography as c, Tooltip as N } from "@mui/material";
7
- import y from "@/common/fontAwesomeIcons/FontAwesomeIcons";
6
+ import { Chip as u, Box as d, Typography as c, Tooltip as E } from "@mui/material";
7
+ import g from "@/common/fontAwesomeIcons/FontAwesomeIcons";
8
8
  import { showToast as T } from "@/common/toaster/toaster";
9
- const W = () => m(x) ? /* @__PURE__ */ s("div", { className: "flex flex-col gap-4 w-full", children: [
9
+ const B = () => m(x) ? /* @__PURE__ */ s("div", { className: "flex flex-col gap-4 w-full", children: [
10
10
  /* @__PURE__ */ s("div", { className: "flex flex-wrap gap-2", children: [
11
11
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[150px] h-[34px]" }),
12
12
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[130px] h-[34px]" }),
@@ -14,7 +14,7 @@ const W = () => m(x) ? /* @__PURE__ */ s("div", { className: "flex flex-col gap-
14
14
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[200px] h-[34px]" })
15
15
  ] }),
16
16
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-100" })
17
- ] }) : null, S = ({ children: a, isLoading: l }) => !m(x) || !l ? a : /* @__PURE__ */ s("div", { className: "flex flex-col gap-6 my-6", children: [
17
+ ] }) : null, I = ({ children: a, isLoading: l }) => !m(x) || !l ? a : /* @__PURE__ */ s("div", { className: "flex flex-col gap-6 my-6", children: [
18
18
  /* @__PURE__ */ s("div", { className: "flex flex-col gap-2", children: [
19
19
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[220px] h-[28px]" }),
20
20
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-full max-w-140 h-[16px]" })
@@ -31,11 +31,11 @@ const W = () => m(x) ? /* @__PURE__ */ s("div", { className: "flex flex-col gap-
31
31
  /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[90px] h-[34px]" })
32
32
  ] })
33
33
  ] });
34
- S.propTypes = {
34
+ I.propTypes = {
35
35
  children: o.any,
36
36
  isLoading: o.any
37
37
  };
38
- const I = ({ children: a, isLoading: l }) => !m(x) || !l ? a : /* @__PURE__ */ s("div", { className: "w-full h-[220px] flex flex-col justify-between animate-pulse", children: [
38
+ const S = ({ children: a, isLoading: l }) => !m(x) || !l ? a : /* @__PURE__ */ s("div", { className: "w-full h-[220px] flex flex-col justify-between animate-pulse", children: [
39
39
  /* @__PURE__ */ e("div", { className: "bg-gray-300 rounded-sm h-[28px] w-[180px] mb-4" }),
40
40
  /* @__PURE__ */ e("div", { className: "bg-gray-300 rounded-sm h-[80px] w-full mb-4" }),
41
41
  /* @__PURE__ */ s("div", { className: "flex flex-row space-x-4 mb-2", children: [
@@ -47,16 +47,16 @@ const I = ({ children: a, isLoading: l }) => !m(x) || !l ? a : /* @__PURE__ */ s
47
47
  /* @__PURE__ */ e("div", { className: "bg-gray-300 rounded-sm h-[20px] w-[180px]" })
48
48
  ] })
49
49
  ] });
50
- I.propTypes = {
50
+ S.propTypes = {
51
51
  children: o.any,
52
52
  isLoading: o.any
53
53
  };
54
- const j = [
54
+ const W = [
55
55
  { value: "FORM_SUBMITTED", label: "Form Submitted" },
56
56
  { value: "TIMMER_BASED", label: "Timer Based" },
57
57
  { value: "MANUAL", label: "Manual" },
58
58
  { value: "RECURSION", label: "Recursion" }
59
- ], B = [
59
+ ], j = [
60
60
  { value: "IMMEDIATELY", label: "Immediately" },
61
61
  { value: "AFTER", label: "After" },
62
62
  { value: "MONTHLY", label: "Monthly" },
@@ -79,11 +79,16 @@ const j = [
79
79
  { value: "EXCEPTION", label: "Exception", icon: "faTriangleExclamation" },
80
80
  { value: "SYSTEM_FUNCTION", label: "System Function", icon: "faGears" },
81
81
  { value: "PUSH_NOTIFICATION", label: "Push Notification", icon: "faBell" },
82
+ {
83
+ value: "PUSH_NOTIFICATION_V2",
84
+ label: "Push Notification V2",
85
+ icon: "faBellConcierge"
86
+ },
82
87
  { value: "KAFKA_SYNC", label: "Kafka Sync", icon: "faRightLeft" }
83
- ], K = (a, l) => {
88
+ ], V = (a, l) => {
84
89
  var n;
85
90
  return ((n = a.find((t) => t.value === l)) == null ? void 0 : n.label) ?? (l || "");
86
- }, V = (a) => {
91
+ }, K = (a) => {
87
92
  var l;
88
93
  return ((l = A.find((n) => n.value === a)) == null ? void 0 : l.icon) || "faBolt";
89
94
  }, X = {
@@ -137,7 +142,7 @@ const w = ({ icon: a, title: l, body: n, action: t, dataTestId: i }) => /* @__PU
137
142
  py: 8
138
143
  },
139
144
  children: [
140
- /* @__PURE__ */ e(d, { sx: { color: "text.disabled" }, children: /* @__PURE__ */ e(y, { iconName: a, size: "2x" }) }),
145
+ /* @__PURE__ */ e(d, { sx: { color: "text.disabled" }, children: /* @__PURE__ */ e(g, { iconName: a, size: "2x" }) }),
141
146
  /* @__PURE__ */ e(c, { variant: "subtitle1", sx: { fontWeight: 700 }, children: l }),
142
147
  n && /* @__PURE__ */ e(c, { variant: "body2", color: "text.secondary", sx: { maxWidth: 440 }, children: n }),
143
148
  t
@@ -159,7 +164,7 @@ C.propTypes = {
159
164
  children: o.node,
160
165
  hint: o.node
161
166
  };
162
- const k = ({ children: a }) => a ? /* @__PURE__ */ e(
167
+ const O = ({ children: a }) => a ? /* @__PURE__ */ e(
163
168
  c,
164
169
  {
165
170
  variant: "caption",
@@ -169,31 +174,31 @@ const k = ({ children: a }) => a ? /* @__PURE__ */ e(
169
174
  children: a
170
175
  }
171
176
  ) : null;
172
- k.propTypes = {
177
+ O.propTypes = {
173
178
  children: o.node
174
179
  };
175
- const O = ({ children: a, required: l = !1, hint: n }) => /* @__PURE__ */ s(d, { sx: { mb: 0.5 }, children: [
180
+ const k = ({ children: a, required: l = !1, hint: n }) => /* @__PURE__ */ s(d, { sx: { mb: 0.5 }, children: [
176
181
  /* @__PURE__ */ s(c, { variant: "body2", sx: { fontWeight: 600 }, component: "span", children: [
177
182
  a,
178
183
  l && /* @__PURE__ */ e(d, { component: "span", sx: { color: "error.main", ml: 0.5 }, children: "*" })
179
184
  ] }),
180
185
  n && /* @__PURE__ */ e(c, { variant: "caption", color: "text.secondary", display: "block", children: n })
181
186
  ] });
182
- O.propTypes = {
187
+ k.propTypes = {
183
188
  children: o.node,
184
189
  required: o.bool,
185
190
  hint: o.node
186
191
  };
187
192
  const R = ({ params: a, translate: l = (t) => t, label: n }) => {
188
193
  const t = Array.isArray(a) ? a : [], [i, f] = v(null), p = h(null);
189
- if (E(
194
+ if (N(
190
195
  () => () => {
191
196
  p.current && clearTimeout(p.current);
192
197
  },
193
198
  []
194
199
  ), t.length === 0)
195
200
  return null;
196
- const g = (r) => {
201
+ const y = (r) => {
197
202
  var b;
198
203
  (b = navigator.clipboard) == null || b.writeText(r).then(
199
204
  () => {
@@ -209,7 +214,7 @@ const R = ({ params: a, translate: l = (t) => t, label: n }) => {
209
214
  l("click to copy")
210
215
  ] }),
211
216
  /* @__PURE__ */ e(d, { sx: { display: "flex", flexWrap: "wrap", gap: 0.5 }, children: t.map((r) => /* @__PURE__ */ e(
212
- N,
217
+ E,
213
218
  {
214
219
  title: l(i === r ? "Copied" : "Click to copy"),
215
220
  children: /* @__PURE__ */ e(
@@ -218,10 +223,10 @@ const R = ({ params: a, translate: l = (t) => t, label: n }) => {
218
223
  size: "small",
219
224
  variant: "outlined",
220
225
  label: r,
221
- onClick: () => g(r),
226
+ onClick: () => y(r),
222
227
  "aria-label": `${l("Copy")} ${r}`,
223
228
  color: i === r ? "success" : "default",
224
- icon: i === r ? /* @__PURE__ */ e(y, { iconName: "faCheck", size: "sm" }) : void 0,
229
+ icon: i === r ? /* @__PURE__ */ e(g, { iconName: "faCheck", size: "sm" }) : void 0,
225
230
  sx: { fontFamily: "monospace", cursor: "pointer" }
226
231
  }
227
232
  )
@@ -237,22 +242,22 @@ R.propTypes = {
237
242
  };
238
243
  export {
239
244
  A,
240
- j as E,
241
- O as F,
245
+ W as E,
246
+ k as F,
242
247
  R as I,
243
248
  M,
244
249
  X as S,
245
- B as T,
250
+ j as T,
246
251
  $ as a,
247
252
  w as b,
248
- W as c,
249
- S as d,
253
+ B as c,
254
+ I as d,
250
255
  C as e,
251
- k as f,
252
- I as g,
256
+ O as f,
257
+ S as g,
253
258
  z as h,
254
- V as i,
259
+ K as i,
255
260
  G as j,
256
- K as l
261
+ V as l
257
262
  };
258
- //# sourceMappingURL=EventsUi-D6O9S7BK.js.map
263
+ //# sourceMappingURL=EventsUi-Dl_yckSA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsUi-Dl_yckSA.js","sources":["../src/views/Events/Skeletons/EventsSkeleton.jsx","../src/views/Events/components/EventsUi.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const EventConfigurationSkeleton = () => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return null;\n }\n return (\n <div className=\"flex flex-col gap-4 w-full\">\n {/* filter row */}\n <div className=\"flex flex-wrap gap-2\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[34px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[34px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[34px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[200px] h-[34px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-100\"></div>\n </div>\n );\n};\n\nexport const ManageEventConfigurationSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"flex flex-col gap-6 my-6\">\n {/* title block */}\n <div className=\"flex flex-col gap-2\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[220px] h-[28px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full max-w-140 h-[16px]\"></div>\n </div>\n {/* details + trigger fields */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[64px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[40px]\"></div>\n </div>\n {/* configuration card */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-[220px]\"></div>\n {/* action bar */}\n <div className=\"flex justify-end gap-3\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[90px] h-[34px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[90px] h-[34px]\"></div>\n </div>\n </div>\n );\n};\n\nManageEventConfigurationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const EventExceptionModalSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"w-full h-[220px] flex flex-col justify-between animate-pulse\">\n <div className=\"bg-gray-300 rounded-sm h-[28px] w-[180px] mb-4\"></div>\n <div className=\"bg-gray-300 rounded-sm h-[80px] w-full mb-4\"></div>\n <div className=\"flex flex-row space-x-4 mb-2\">\n <div className=\"bg-gray-300 rounded-sm h-[20px] w-[140px]\"></div>\n <div className=\"bg-gray-300 rounded-sm h-[20px] w-[180px]\"></div>\n </div>\n <div className=\"flex flex-row space-x-4\">\n <div className=\"bg-gray-300 rounded-sm h-[20px] w-[140px]\"></div>\n <div className=\"bg-gray-300 rounded-sm h-[20px] w-[180px]\"></div>\n </div>\n </div>\n );\n};\n\nEventExceptionModalSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Chip, Tooltip, Typography } from \"@mui/material\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { showToast } from \"@/common/toaster/toaster\";\n\n/**\n * @module EventsUi\n * @description Shared vocabulary and presentational pieces for the Events\n * screens. Enum-to-label maps live here so the list, the editor and the\n * configuration dialogs all show a user the same words for the same value.\n */\n\n/** Event types, in the order the editor offers them. */\nexport const EVENT_TYPES = [\n { value: \"FORM_SUBMITTED\", label: \"Form Submitted\" },\n { value: \"TIMMER_BASED\", label: \"Timer Based\" },\n { value: \"MANUAL\", label: \"Manual\" },\n { value: \"RECURSION\", label: \"Recursion\" },\n];\n\n/** When a timer-based event fires. */\nexport const TRIGGER_WHEN = [\n { value: \"IMMEDIATELY\", label: \"Immediately\" },\n { value: \"AFTER\", label: \"After\" },\n { value: \"MONTHLY\", label: \"Monthly\" },\n { value: \"WEEKLY\", label: \"Weekly\" },\n { value: \"DAILY\", label: \"Daily\" },\n { value: \"HOURLY\", label: \"Hourly\" },\n { value: \"MINUTE\", label: \"Minutely\" },\n];\n\n/** When an individual action inside a condition fires. */\nexport const ACTION_TRIGGER_WHEN = [\n { value: \"IMMEDIATELY\", label: \"Immediately\" },\n { value: \"AFTER\", label: \"After\" },\n];\n\n/** Exception classes an EXCEPTION action can raise. */\nexport const EXCEPTION_TYPES = [\n { value: \"ImtechoUserException\", label: \"Imtecho User Exception\" },\n { value: \"ImtechoSystemException\", label: \"Imtecho System Exception\" },\n { value: \"ImtechoMobileException\", label: \"Imtecho Mobile Exception\" },\n];\n\n/** Action types a condition can carry. `KAFKA_SYNC` is deployment-gated. */\nexport const ACTION_TYPES = [\n { value: \"SMS\", label: \"SMS Notification\", icon: \"faCommentSms\" },\n { value: \"EMAIL\", label: \"Email Notification\", icon: \"faEnvelope\" },\n { value: \"QUERY\", label: \"Query\", icon: \"faDatabase\" },\n { value: \"MOBILE\", label: \"Mobile Notification\", icon: \"faMobileScreen\" },\n { value: \"EXCEPTION\", label: \"Exception\", icon: \"faTriangleExclamation\" },\n { value: \"SYSTEM_FUNCTION\", label: \"System Function\", icon: \"faGears\" },\n { value: \"PUSH_NOTIFICATION\", label: \"Push Notification\", icon: \"faBell\" },\n {\n value: \"PUSH_NOTIFICATION_V2\",\n label: \"Push Notification V2\",\n icon: \"faBellConcierge\",\n },\n { value: \"KAFKA_SYNC\", label: \"Kafka Sync\", icon: \"faRightLeft\" },\n];\n\n/**\n * @method labelOf\n * @description Friendly label for a stored enum value. Falls back to the raw\n * value so a new backend enum shows up as itself rather than as blank.\n * @param {Array} list - A `{value, label}[]` map.\n * @param {string} value - The stored value.\n * @returns {string} The label to display.\n */\nexport const labelOf = (list, value) =>\n list.find((item) => item.value === value)?.label ?? (value || \"\");\n\n/**\n * @method iconOf\n * @description FontAwesome name for an action type, for the chips that\n * summarise what a condition does. Falls back to a neutral bolt.\n * @param {string} value - The action type.\n * @returns {string} A FontAwesome export name.\n */\nexport const iconOf = (value) =>\n ACTION_TYPES.find((item) => item.value === value)?.icon || \"faBolt\";\n\n/**\n * Run state of a configuration. Active is healthy; inactive is deliberately\n * unremarkable rather than an error - it is a switched-off config, not a\n * broken one.\n */\nexport const STATE_META = {\n ACTIVE: { label: \"Active\", color: \"success\" },\n INACTIVE: { label: \"Inactive\", color: \"default\" },\n};\n\n/**\n * Outcome of the last run. Anything the backend adds later falls through to\n * a neutral chip carrying the raw value rather than disappearing.\n */\nexport const STATUS_META = {\n COMPLETED: { label: \"Completed\", color: \"success\" },\n EXCEPTION: { label: \"Exception\", color: \"error\" },\n IN_PROGRESS: { label: \"In progress\", color: \"info\" },\n PENDING: { label: \"Pending\", color: \"warning\" },\n NOT_STARTED: { label: \"Not started\", color: \"default\" },\n};\n\n/**\n * @method MetaChip\n * @description Labelled chip for a mapped enum. Colour never carries the\n * meaning on its own - the label always does.\n */\nexport const MetaChip = ({\n meta,\n value,\n translate = (text) => text,\n uppercase = false,\n}) => {\n if (!value) {\n return <Chip size=\"small\" variant=\"outlined\" label=\"—\" />;\n }\n\n const entry = meta[value] || { label: value, color: \"default\" };\n\n return (\n <Chip\n size=\"small\"\n label={translate(entry.label)}\n color={entry.color}\n variant={entry.color === \"default\" ? \"outlined\" : \"filled\"}\n sx={uppercase ? { textTransform: \"uppercase\" } : undefined}\n data-testid={`event-chip-${String(value).toLowerCase()}`}\n />\n );\n};\n\nMetaChip.propTypes = {\n meta: PropTypes.object,\n value: PropTypes.string,\n translate: PropTypes.func,\n uppercase: PropTypes.bool,\n};\n\n/**\n * @method EmptyState\n * @description Centred icon + title + explanation + optional action, for\n * \"nothing here yet\", \"nothing matches these filters\" and \"no permission\".\n */\nexport const EmptyState = ({ icon, title, body, action, dataTestId }) => (\n <Box\n data-testid={dataTestId}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 1,\n px: 3,\n py: 8,\n }}\n >\n <Box sx={{ color: \"text.disabled\" }}>\n <FontAwesomeIcons iconName={icon} size=\"2x\" />\n </Box>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 700 }}>\n {title}\n </Typography>\n {body && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ maxWidth: 440 }}>\n {body}\n </Typography>\n )}\n {action}\n </Box>\n);\n\nEmptyState.propTypes = {\n icon: PropTypes.string,\n title: PropTypes.node,\n body: PropTypes.node,\n action: PropTypes.node,\n dataTestId: PropTypes.string,\n};\n\n/**\n * @method SectionHeading\n * @description Overline sub-header that groups related fields inside a card,\n * drawer or dialog, so a long configuration form stays scannable.\n */\nexport const SectionHeading = ({ children, hint }) => (\n <Box>\n <Typography variant=\"overline\" color=\"text.secondary\" component=\"h3\">\n {children}\n </Typography>\n {hint && (\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {hint}\n </Typography>\n )}\n </Box>\n);\n\nSectionHeading.propTypes = {\n children: PropTypes.node,\n hint: PropTypes.node,\n};\n\n/**\n * @method FieldHelp\n * @description Helper copy for a field, rendered *under* its control.\n *\n * Guidance belongs here rather than between the label and the control: in a\n * multi-column row, only some fields carry a hint, and a hint above the\n * control pushes that one field down while its neighbours stay put. Below the\n * control the labels stay on one line and the inputs share a baseline.\n */\nexport const FieldHelp = ({ children }) =>\n children ? (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n display=\"block\"\n sx={{ mt: 0.5 }}\n >\n {children}\n </Typography>\n ) : null;\n\nFieldHelp.propTypes = {\n children: PropTypes.node,\n};\n\n/**\n * @method FieldLabel\n * @description Label above a control, with the required marker. Guidance goes\n * in `FieldHelp` under the control, not here - see the note on that component.\n */\nexport const FieldLabel = ({ children, required = false, hint }) => (\n <Box sx={{ mb: 0.5 }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 600 }} component=\"span\">\n {children}\n {required && (\n <Box component=\"span\" sx={{ color: \"error.main\", ml: 0.5 }}>\n *\n </Box>\n )}\n </Typography>\n {hint && (\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {hint}\n </Typography>\n )}\n </Box>\n);\n\nFieldLabel.propTypes = {\n children: PropTypes.node,\n required: PropTypes.bool,\n hint: PropTypes.node,\n};\n\n/**\n * @method ImplicitParams\n * @description The list of `#column#` placeholders a query exposes to the\n * conditions and actions below it. Each one is a click-to-copy chip, because\n * the only thing a user does with a placeholder is paste it into an\n * expression or a template - retyping it by hand is where the typos come from.\n */\nexport const ImplicitParams = ({ params, translate = (text) => text, label }) => {\n const list = Array.isArray(params) ? params : [];\n const [copied, setCopied] = useState(null);\n const resetTimer = useRef(null);\n\n // The chip can unmount while the \"Copied\" state is still pending.\n useEffect(\n () => () => {\n if (resetTimer.current) clearTimeout(resetTimer.current);\n },\n [],\n );\n\n if (list.length === 0) {\n return null;\n }\n\n const copy = (param) => {\n navigator.clipboard?.writeText(param).then(\n () => {\n setCopied(param);\n if (resetTimer.current) clearTimeout(resetTimer.current);\n resetTimer.current = setTimeout(() => setCopied(null), 1500);\n },\n () => showToast({ type: \"error\", message: \"Copy failed.\" }),\n );\n };\n\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 0.5 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {label || translate(\"Available placeholders\")}\n {\" · \"}\n {translate(\"click to copy\")}\n </Typography>\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.5 }}>\n {list.map((param) => (\n <Tooltip\n key={param}\n title={\n copied === param ? translate(\"Copied\") : translate(\"Click to copy\")\n }\n >\n <Chip\n size=\"small\"\n variant=\"outlined\"\n label={param}\n onClick={() => copy(param)}\n aria-label={`${translate(\"Copy\")} ${param}`}\n color={copied === param ? \"success\" : \"default\"}\n icon={\n copied === param ? (\n <FontAwesomeIcons iconName=\"faCheck\" size=\"sm\" />\n ) : undefined\n }\n sx={{ fontFamily: \"monospace\", cursor: \"pointer\" }}\n />\n </Tooltip>\n ))}\n </Box>\n </Box>\n );\n};\n\nImplicitParams.propTypes = {\n params: PropTypes.array,\n translate: PropTypes.func,\n label: PropTypes.node,\n};\n"],"names":["EventConfigurationSkeleton","useSelector","getUseSkeleton","jsxs","jsx","ManageEventConfigurationSkeleton","children","isLoading","PropTypes","EventExceptionModalSkeleton","EVENT_TYPES","TRIGGER_WHEN","ACTION_TRIGGER_WHEN","EXCEPTION_TYPES","ACTION_TYPES","labelOf","list","value","_a","item","iconOf","STATE_META","STATUS_META","MetaChip","meta","translate","text","uppercase","Chip","entry","EmptyState","icon","title","body","action","dataTestId","Box","FontAwesomeIcons","Typography","SectionHeading","hint","FieldHelp","FieldLabel","required","ImplicitParams","params","label","copied","setCopied","useState","resetTimer","useRef","useEffect","copy","param","showToast","Tooltip"],"mappings":"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"}