udp-react-enterprise-component-library 25.18.1-beta.50 → 25.18.1-beta.51

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 (288) hide show
  1. package/dist/{ActionProvider-C_rohJIr.js → ActionProvider-DGzli-X1.js} +4 -4
  2. package/dist/{ActionProvider-C_rohJIr.js.map → ActionProvider-DGzli-X1.js.map} +1 -1
  3. package/dist/{ActionSplitScreen-OFqIncG9.js → ActionSplitScreen-gKH4ISoo.js} +5 -5
  4. package/dist/{ActionSplitScreen-OFqIncG9.js.map → ActionSplitScreen-gKH4ISoo.js.map} +1 -1
  5. package/dist/{ActionWrapper-d9dIOSYB.js → ActionWrapper-Bpp9Mn4j.js} +8 -8
  6. package/dist/{ActionWrapper-d9dIOSYB.js.map → ActionWrapper-Bpp9Mn4j.js.map} +1 -1
  7. package/dist/{AggregateChip-6GSEsL_A.js → AggregateChip-BF7S3x_K.js} +3 -3
  8. package/dist/{AggregateChip-6GSEsL_A.js.map → AggregateChip-BF7S3x_K.js.map} +1 -1
  9. package/dist/{AmbientGridTemplate-D0GSZj4a.js → AmbientGridTemplate-D1TMpzxb.js} +4 -4
  10. package/dist/{AmbientGridTemplate-D0GSZj4a.js.map → AmbientGridTemplate-D1TMpzxb.js.map} +1 -1
  11. package/dist/{AppMenu-DW1oQdFA.js → AppMenu-oGJtO6Vp.js} +2 -2
  12. package/dist/{AppMenu-DW1oQdFA.js.map → AppMenu-oGJtO6Vp.js.map} +1 -1
  13. package/dist/{AuthProvider-qWjJiYSg.js → AuthProvider-V_6y6_xj.js} +3 -3
  14. package/dist/{AuthProvider-qWjJiYSg.js.map → AuthProvider-V_6y6_xj.js.map} +1 -1
  15. package/dist/{BaseTreeMenu-CBFIl0VF.js → BaseTreeMenu-Dg8MW4TD.js} +4 -4
  16. package/dist/{BaseTreeMenu-CBFIl0VF.js.map → BaseTreeMenu-Dg8MW4TD.js.map} +1 -1
  17. package/dist/{BioCardWrapper-BiRI3EDR.js → BioCardWrapper-B2bT-4zw.js} +2 -2
  18. package/dist/{BioCardWrapper-BiRI3EDR.js.map → BioCardWrapper-B2bT-4zw.js.map} +1 -1
  19. package/dist/{BulkActionsGridButton-uhTB0AGy.js → BulkActionsGridButton-JYgIABWU.js} +3 -3
  20. package/dist/{BulkActionsGridButton-uhTB0AGy.js.map → BulkActionsGridButton-JYgIABWU.js.map} +1 -1
  21. package/dist/{CircleButton-B9JAMG53.js → CircleButton-CrvnPHDw.js} +2 -2
  22. package/dist/{CircleButton-B9JAMG53.js.map → CircleButton-CrvnPHDw.js.map} +1 -1
  23. package/dist/{CrudBrowserContainer-De2WRDIH.js → CrudBrowserContainer-DJHq5ILl.js} +2 -2
  24. package/dist/{CrudBrowserContainer-De2WRDIH.js.map → CrudBrowserContainer-DJHq5ILl.js.map} +1 -1
  25. package/dist/{CrudForm-B5VDs-17.js → CrudForm-C9xMnPoA.js} +2 -2
  26. package/dist/{CrudForm-B5VDs-17.js.map → CrudForm-C9xMnPoA.js.map} +1 -1
  27. package/dist/{CrudTableSidePanel-DnxJx49i.js → CrudTableSidePanel-CNEZxJi0.js} +3 -3
  28. package/dist/{CrudTableSidePanel-DnxJx49i.js.map → CrudTableSidePanel-CNEZxJi0.js.map} +1 -1
  29. package/dist/{DataBrowserContainer-DZGhEt9N.js → DataBrowserContainer-cU_EEIiR.js} +6 -6
  30. package/dist/{DataBrowserContainer-DZGhEt9N.js.map → DataBrowserContainer-cU_EEIiR.js.map} +1 -1
  31. package/dist/{EntityHeader-DiOEw-za.js → EntityHeader-DKkYwvsi.js} +4 -4
  32. package/dist/{EntityHeader-DiOEw-za.js.map → EntityHeader-DKkYwvsi.js.map} +1 -1
  33. package/dist/{FieldArrayCard-DeZ7Q9KB.js → FieldArrayCard-C1I5_qJ4.js} +2 -2
  34. package/dist/{FieldArrayCard-DeZ7Q9KB.js.map → FieldArrayCard-C1I5_qJ4.js.map} +1 -1
  35. package/dist/{FluentCell-D2lpxw4O.js → FluentCell-F9eits6u.js} +2 -2
  36. package/dist/{FluentCell-D2lpxw4O.js.map → FluentCell-F9eits6u.js.map} +1 -1
  37. package/dist/{FluentDataTable-ChpZUwal.js → FluentDataTable-BSQ_EHJX.js} +2 -2
  38. package/dist/{FluentDataTable-ChpZUwal.js.map → FluentDataTable-BSQ_EHJX.js.map} +1 -1
  39. package/dist/{GridFunctions-CRTDIOe0.js → GridFunctions-D76ygiH2.js} +2 -2
  40. package/dist/{GridFunctions-CRTDIOe0.js.map → GridFunctions-D76ygiH2.js.map} +1 -1
  41. package/dist/{GroupNode-Djp62Urb.js → GroupNode-CZX--ble.js} +2 -2
  42. package/dist/{GroupNode-Djp62Urb.js.map → GroupNode-CZX--ble.js.map} +1 -1
  43. package/dist/{IconRenderer-JdCm70xC.js → IconRenderer-BEezfZ3N.js} +2 -2
  44. package/dist/{IconRenderer-JdCm70xC.js.map → IconRenderer-BEezfZ3N.js.map} +1 -1
  45. package/dist/{Inquiry-Cjz91wf_.js → Inquiry-BCu8bSal.js} +12 -12
  46. package/dist/{Inquiry-Cjz91wf_.js.map → Inquiry-BCu8bSal.js.map} +1 -1
  47. package/dist/Inquiry-NWBPf-o4.js +3 -0
  48. package/dist/{InquiryNodeControls-B677QFu4.js → InquiryNodeControls-DeK_hTzo.js} +2 -2
  49. package/dist/{InquiryNodeControls-B677QFu4.js.map → InquiryNodeControls-DeK_hTzo.js.map} +1 -1
  50. package/dist/{InquirySearchContainer-BnHwUWFC.js → InquirySearchContainer-DLkAOjWJ.js} +5 -5
  51. package/dist/{InquirySearchContainer-BnHwUWFC.js.map → InquirySearchContainer-DLkAOjWJ.js.map} +1 -1
  52. package/dist/MenuPage-R6mbeCuS.js +3 -0
  53. package/dist/{MenuPage-fqEs3MSY.js → MenuPage-tkkhpco5.js} +4 -4
  54. package/dist/{MenuPage-fqEs3MSY.js.map → MenuPage-tkkhpco5.js.map} +1 -1
  55. package/dist/{MenuProvider-rwBliXcV.js → MenuProvider-BuTAUs0Z.js} +2 -2
  56. package/dist/{MenuProvider-rwBliXcV.js.map → MenuProvider-BuTAUs0Z.js.map} +1 -1
  57. package/dist/{MttMainTimeline-nusYDWg_.js → MttMainTimeline-BG6nlcC_.js} +2 -2
  58. package/dist/{MttMainTimeline-nusYDWg_.js.map → MttMainTimeline-BG6nlcC_.js.map} +1 -1
  59. package/dist/{MttSummary-DWESRW7k.js → MttSummary-DP2U55LK.js} +3 -3
  60. package/dist/{MttSummary-DWESRW7k.js.map → MttSummary-DP2U55LK.js.map} +1 -1
  61. package/dist/MyExportsPage-DFIMneFr.js +3 -0
  62. package/dist/{MyExportsPage-CeeH8ViY.js → MyExportsPage-zKRz4fL5.js} +2 -2
  63. package/dist/{MyExportsPage-CeeH8ViY.js.map → MyExportsPage-zKRz4fL5.js.map} +1 -1
  64. package/dist/{NotesScreen-DE3fhpjW.js → NotesScreen-DQatppnX.js} +6 -6
  65. package/dist/{NotesScreen-DE3fhpjW.js.map → NotesScreen-DQatppnX.js.map} +1 -1
  66. package/dist/{PageActionWrapper-C-irIPLE.js → PageActionWrapper-BBkGtnC6.js} +3 -3
  67. package/dist/{PageActionWrapper-C-irIPLE.js.map → PageActionWrapper-BBkGtnC6.js.map} +1 -1
  68. package/dist/{PageRenderer-AfVo1f0z.js → PageRenderer-BTkUO-hr.js} +2 -2
  69. package/dist/{PageRenderer-AfVo1f0z.js.map → PageRenderer-BTkUO-hr.js.map} +1 -1
  70. package/dist/{PaymentForm-CRlhsB2F.js → PaymentForm-CtrVBoH8.js} +2 -2
  71. package/dist/{PaymentForm-CRlhsB2F.js.map → PaymentForm-CtrVBoH8.js.map} +1 -1
  72. package/dist/{RecentlyLoadedNodesTable-8WQBaAl4.js → RecentlyLoadedNodesTable-Dy8yBVfH.js} +2 -2
  73. package/dist/{RecentlyLoadedNodesTable-8WQBaAl4.js.map → RecentlyLoadedNodesTable-Dy8yBVfH.js.map} +1 -1
  74. package/dist/{RecentlyLoadedNodesWidget--NDwNQQF.js → RecentlyLoadedNodesWidget-C5chQWOm.js} +2 -2
  75. package/dist/{RecentlyLoadedNodesWidget--NDwNQQF.js.map → RecentlyLoadedNodesWidget-C5chQWOm.js.map} +1 -1
  76. package/dist/{RemindersCard-CSJ8buYt.js → RemindersCard-BOSGv9pc.js} +4 -4
  77. package/dist/{RemindersCard-CSJ8buYt.js.map → RemindersCard-BOSGv9pc.js.map} +1 -1
  78. package/dist/{RemindersScreen-CyT18piP.js → RemindersScreen-Cp7lMWrE.js} +6 -6
  79. package/dist/{RemindersScreen-CyT18piP.js.map → RemindersScreen-Cp7lMWrE.js.map} +1 -1
  80. package/dist/{RemindersWidget-B3qlh8K-.js → RemindersWidget-BnaccE9-.js} +5 -5
  81. package/dist/{RemindersWidget-B3qlh8K-.js.map → RemindersWidget-BnaccE9-.js.map} +1 -1
  82. package/dist/{SearchServiceDatasource-BrfkHkEq.js → SearchServiceDatasource-D8egrLwe.js} +3 -3
  83. package/dist/{SearchServiceDatasource-BrfkHkEq.js.map → SearchServiceDatasource-D8egrLwe.js.map} +1 -1
  84. package/dist/{SearchUtilities-B1TCyppF.js → SearchUtilities-DUW0kaw_.js} +2 -2
  85. package/dist/{SearchUtilities-B1TCyppF.js.map → SearchUtilities-DUW0kaw_.js.map} +1 -1
  86. package/dist/{Shell-CL_ENLg6.js → Shell-DunAQ9XC.js} +9 -9
  87. package/dist/{Shell-CL_ENLg6.js.map → Shell-DunAQ9XC.js.map} +1 -1
  88. package/dist/{ShortcutContentFinder-DTkqEgtI.js → ShortcutContentFinder-BR-Gd55o.js} +5 -5
  89. package/dist/{ShortcutContentFinder-DTkqEgtI.js.map → ShortcutContentFinder-BR-Gd55o.js.map} +1 -1
  90. package/dist/{SiteHeader-6rdY93D_.js → SiteHeader-CuOFCr7D.js} +5 -5
  91. package/dist/{SiteHeader-6rdY93D_.js.map → SiteHeader-CuOFCr7D.js.map} +1 -1
  92. package/dist/{Statistic-ChTR_kas.js → Statistic-CB8UpsW4.js} +2 -2
  93. package/dist/{Statistic-ChTR_kas.js.map → Statistic-CB8UpsW4.js.map} +1 -1
  94. package/dist/{TableContainer-CcHjtMCa.js → TableContainer-B0IAjIA3.js} +3 -3
  95. package/dist/{TableContainer-CcHjtMCa.js.map → TableContainer-B0IAjIA3.js.map} +1 -1
  96. package/dist/{TenantProvider-C-3eqCA3.js → TenantProvider-B_fwoUi4.js} +6 -6
  97. package/dist/TenantProvider-B_fwoUi4.js.map +1 -0
  98. package/dist/{TreeUtilities-VCy2z4Qv.js → TreeUtilities-jEhtZNg5.js} +4 -4
  99. package/dist/{TreeUtilities-VCy2z4Qv.js.map → TreeUtilities-jEhtZNg5.js.map} +1 -1
  100. package/dist/UI/accordion/index.js +1 -1
  101. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +1 -1
  102. package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
  103. package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
  104. package/dist/UI/dataDisplay/index.js +1 -1
  105. package/dist/UI/fileViewer/index.js +1 -1
  106. package/dist/UI/floorplans/index.js +1 -1
  107. package/dist/UI/forms/index.js +1 -1
  108. package/dist/UI/index.js +14 -14
  109. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  110. package/dist/UI/mapLayout/index.js +1 -1
  111. package/dist/UI/mapLayout/ui/index.js +1 -1
  112. package/dist/UI/navigation/index.js +1 -1
  113. package/dist/UI/navigation/menus/index.js +1 -1
  114. package/dist/UI/templates/deprecated/AmbientGridTemplate/index.js +1 -1
  115. package/dist/UI/templates/ui/renderers/index.js +1 -1
  116. package/dist/UI/timeline/fluentTimeline/index.js +1 -1
  117. package/dist/UI/timeline/index.js +1 -1
  118. package/dist/UI/utilityDisplay/alerts/index.js +1 -1
  119. package/dist/UI/utilityDisplay/index.js +5 -5
  120. package/dist/UI/utilityDisplay/utilities/index.js +1 -1
  121. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
  122. package/dist/UI/widgets/library/RemindersWidget/index.js +1 -1
  123. package/dist/{UdpAlertsContainer-Dz76Kg2v.js → UdpAlertsContainer-CbiqX1P0.js} +4 -4
  124. package/dist/{UdpAlertsContainer-Dz76Kg2v.js.map → UdpAlertsContainer-CbiqX1P0.js.map} +1 -1
  125. package/dist/{UdpAppProvider-XtIYbmNb.js → UdpAppProvider-D7D0F8VO.js} +2 -2
  126. package/dist/{UdpAppProvider-XtIYbmNb.js.map → UdpAppProvider-D7D0F8VO.js.map} +1 -1
  127. package/dist/{UdpAuditEvents-Bqz0_-Du.js → UdpAuditEvents-JP-tGjrh.js} +2 -2
  128. package/dist/{UdpAuditEvents-Bqz0_-Du.js.map → UdpAuditEvents-JP-tGjrh.js.map} +1 -1
  129. package/dist/UdpAuditEventsPage-BiUdXrGu.js +3 -0
  130. package/dist/{UdpAuditEventsPage-CobHOioY.js → UdpAuditEventsPage-CohNvZiq.js} +2 -2
  131. package/dist/{UdpAuditEventsPage-CobHOioY.js.map → UdpAuditEventsPage-CohNvZiq.js.map} +1 -1
  132. package/dist/{UdpDataBrowserPage-B-afkKoz.js → UdpDataBrowserPage-CpDMeFtE.js} +7 -7
  133. package/dist/{UdpDataBrowserPage-B-afkKoz.js.map → UdpDataBrowserPage-CpDMeFtE.js.map} +1 -1
  134. package/dist/{UdpFormsPrivateForm-L8NRz5Xf.js → UdpFormsPrivateForm-D6clAgfY.js} +2 -2
  135. package/dist/{UdpFormsPrivateForm-L8NRz5Xf.js.map → UdpFormsPrivateForm-D6clAgfY.js.map} +1 -1
  136. package/dist/{UdpFormsSubmissionGrid-CkrI4_CC.js → UdpFormsSubmissionGrid-DzMuwwTO.js} +3 -3
  137. package/dist/{UdpFormsSubmissionGrid-CkrI4_CC.js.map → UdpFormsSubmissionGrid-DzMuwwTO.js.map} +1 -1
  138. package/dist/{UdpGridPanelManagementPage-Cvye5uKC.js → UdpGridPanelManagementPage-CJbKbZeN.js} +2 -2
  139. package/dist/{UdpGridPanelManagementPage-Cvye5uKC.js.map → UdpGridPanelManagementPage-CJbKbZeN.js.map} +1 -1
  140. package/dist/{UdpInquiryMaintenanceEnginePage-BiKDpo6a.js → UdpInquiryMaintenanceEnginePage-B7jCKzw5.js} +2 -2
  141. package/dist/{UdpInquiryMaintenanceEnginePage-BiKDpo6a.js.map → UdpInquiryMaintenanceEnginePage-B7jCKzw5.js.map} +1 -1
  142. package/dist/{UdpMaintenanceEnginePage-C1UcnDlL.js → UdpMaintenanceEnginePage-C5OzABlj.js} +6 -6
  143. package/dist/{UdpMaintenanceEnginePage-C1UcnDlL.js.map → UdpMaintenanceEnginePage-C5OzABlj.js.map} +1 -1
  144. package/dist/{UdpNotesPage-Deug2da_.js → UdpNotesPage-CO5te_bd.js} +6 -6
  145. package/dist/{UdpNotesPage-Deug2da_.js.map → UdpNotesPage-CO5te_bd.js.map} +1 -1
  146. package/dist/{UdpRemindersPage-B8vCglBX.js → UdpRemindersPage-Dvoe-qlm.js} +6 -6
  147. package/dist/{UdpRemindersPage-B8vCglBX.js.map → UdpRemindersPage-Dvoe-qlm.js.map} +1 -1
  148. package/dist/{UdpTransactionTypesPage-DxUsXnV7.js → UdpTransactionTypesPage-DFpnQn7f.js} +3 -3
  149. package/dist/{UdpTransactionTypesPage-DxUsXnV7.js.map → UdpTransactionTypesPage-DFpnQn7f.js.map} +1 -1
  150. package/dist/{UdpTransactionsPage-BZ0Idg5s.js → UdpTransactionsPage-hu97DvPW.js} +4 -4
  151. package/dist/{UdpTransactionsPage-BZ0Idg5s.js.map → UdpTransactionsPage-hu97DvPW.js.map} +1 -1
  152. package/dist/{UdpVerticalManagementPage-DHK7-w0K.js → UdpVerticalManagementPage-Cc4zz9Tv.js} +3 -3
  153. package/dist/{UdpVerticalManagementPage-DHK7-w0K.js.map → UdpVerticalManagementPage-Cc4zz9Tv.js.map} +1 -1
  154. package/dist/{UdpVerticalManagementSidesheet-C2kuDXac.js → UdpVerticalManagementSidesheet-DGL4dyia.js} +4 -4
  155. package/dist/{UdpVerticalManagementSidesheet-C2kuDXac.js.map → UdpVerticalManagementSidesheet-DGL4dyia.js.map} +1 -1
  156. package/dist/{UserForm-DZ1a9uqZ.js → UserForm-DNgeQvad.js} +2 -2
  157. package/dist/{UserForm-DZ1a9uqZ.js.map → UserForm-DNgeQvad.js.map} +1 -1
  158. package/dist/{UserFormSideSheet-B7bFqu5x.js → UserFormSideSheet-RyDFg3QI.js} +2 -2
  159. package/dist/{UserFormSideSheet-B7bFqu5x.js.map → UserFormSideSheet-RyDFg3QI.js.map} +1 -1
  160. package/dist/UserFormSideSheet-iBczI7p0.js +3 -0
  161. package/dist/{VirtualBrowser-BZkfXaY5.js → VirtualBrowser-CVs-vW3x.js} +3 -3
  162. package/dist/{VirtualBrowser-BZkfXaY5.js.map → VirtualBrowser-CVs-vW3x.js.map} +1 -1
  163. package/dist/VirtualBrowser-CcWYHhRb.js +3 -0
  164. package/dist/{WorkflowContainer-CHmVR99E.js → WorkflowContainer-Boj87JRI.js} +1 -1
  165. package/dist/{WorkflowContainer-BheQPhXt.js → WorkflowContainer-DDGm1Cxo.js} +3 -3
  166. package/dist/{WorkflowContainer-BheQPhXt.js.map → WorkflowContainer-DDGm1Cxo.js.map} +1 -1
  167. package/dist/{WorkflowTreeMenu-D2Uc09jP.js → WorkflowTreeMenu-HHtwkDzu.js} +4 -4
  168. package/dist/{WorkflowTreeMenu-D2Uc09jP.js.map → WorkflowTreeMenu-HHtwkDzu.js.map} +1 -1
  169. package/dist/{accordion-CT8euUVM.js → accordion--zpb1uMC.js} +2 -2
  170. package/dist/{accordion-CT8euUVM.js.map → accordion--zpb1uMC.js.map} +1 -1
  171. package/dist/{actionSummary-BEOW5B3h.js → actionSummary-D0CwyTXJ.js} +2 -2
  172. package/dist/{actionSummary-BEOW5B3h.js.map → actionSummary-D0CwyTXJ.js.map} +1 -1
  173. package/dist/{actionUtils-Bj5-851p.js → actionUtils-CPmiSAig.js} +2 -2
  174. package/dist/{actionUtils-Bj5-851p.js.map → actionUtils-CPmiSAig.js.map} +1 -1
  175. package/dist/actions/actionSummary/index.js +1 -1
  176. package/dist/actions/index.js +5 -5
  177. package/dist/actions/utils/index.js +1 -1
  178. package/dist/{aggregateUtils-B10uvnUw.js → aggregateUtils-UcpEjFnf.js} +2 -2
  179. package/dist/{aggregateUtils-B10uvnUw.js.map → aggregateUtils-UcpEjFnf.js.map} +1 -1
  180. package/dist/{aggridHelpers-RYO7tWY9.js → aggridHelpers-BvrSzjdD.js} +3 -3
  181. package/dist/{aggridHelpers-RYO7tWY9.js.map → aggridHelpers-BvrSzjdD.js.map} +1 -1
  182. package/dist/{auth-DX4sNV3x.js → auth-Bq7vHax4.js} +2 -2
  183. package/dist/{auth-DX4sNV3x.js.map → auth-Bq7vHax4.js.map} +1 -1
  184. package/dist/componentSystems/multiThreadTimeline/index.js +3 -3
  185. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  186. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
  187. package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
  188. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  189. package/dist/componentSystems/pageRenderer/index.js +3 -3
  190. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  191. package/dist/dataBrowser/index.js +1 -1
  192. package/dist/enums/index.js +2 -2
  193. package/dist/{fileViewer-BVzlhb3g.js → fileViewer-BbIFHura.js} +2 -2
  194. package/dist/{fileViewer-BVzlhb3g.js.map → fileViewer-BbIFHura.js.map} +1 -1
  195. package/dist/{floorplans-CF6ssxTg.js → floorplans-DNUFP5-n.js} +2 -2
  196. package/dist/{floorplans-CF6ssxTg.js.map → floorplans-DNUFP5-n.js.map} +1 -1
  197. package/dist/{fluentTimeline-BWoLOxF_.js → fluentTimeline-DpnUZabY.js} +2 -2
  198. package/dist/{fluentTimeline-BWoLOxF_.js.map → fluentTimeline-DpnUZabY.js.map} +1 -1
  199. package/dist/hooks/index.js +3 -3
  200. package/dist/index.js +62 -62
  201. package/dist/inquiry/dashboard/index.js +1 -1
  202. package/dist/inquiry/index.js +4 -4
  203. package/dist/inquiry/inquiryBar/index.js +1 -1
  204. package/dist/inquiry/search/index.js +1 -1
  205. package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
  206. package/dist/maintenanceEngine/index.js +4 -4
  207. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  208. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  209. package/dist/{mapLayout-DCBNFKk9.js → mapLayout-B_m2Fh8n.js} +2 -2
  210. package/dist/{mapLayout-DCBNFKk9.js.map → mapLayout-B_m2Fh8n.js.map} +1 -1
  211. package/dist/menuPage/index.js +1 -1
  212. package/dist/{menuPage-PIJOkANO.js → menuPage-7DcUM-Q3.js} +2 -2
  213. package/dist/{menuPage-PIJOkANO.js.map → menuPage-7DcUM-Q3.js.map} +1 -1
  214. package/dist/{menuUtilities-B6z02FRb.js → menuUtilities-Da5uVIJ8.js} +2 -2
  215. package/dist/{menuUtilities-B6z02FRb.js.map → menuUtilities-Da5uVIJ8.js.map} +1 -1
  216. package/dist/notes/index.js +1 -1
  217. package/dist/{profile-CXlla7mZ.js → profile-hGhjTafH.js} +3 -3
  218. package/dist/{profile-CXlla7mZ.js.map → profile-hGhjTafH.js.map} +1 -1
  219. package/dist/providers/index.js +1 -1
  220. package/dist/reminders/index.js +2 -2
  221. package/dist/routes/index.js +1 -1
  222. package/dist/{routes-BToKqY03.js → routes-qV4EIuwZ.js} +7 -7
  223. package/dist/{routes-BToKqY03.js.map → routes-qV4EIuwZ.js.map} +1 -1
  224. package/dist/shell/index.js +3 -3
  225. package/dist/shell/ui/addUser/index.js +1 -1
  226. package/dist/shell/ui/index.js +2 -2
  227. package/dist/shell/ui/profile/index.js +1 -1
  228. package/dist/stores/index.js +1 -1
  229. package/dist/{tenantStore-TgmV03z9.js → tenantStore-CFYu7ndZ.js} +2 -2
  230. package/dist/{tenantStore-TgmV03z9.js.map → tenantStore-CFYu7ndZ.js.map} +1 -1
  231. package/dist/treeMenu/index.js +1 -1
  232. package/dist/types/src/enums/unitySystemEnums.d.ts +5 -0
  233. package/dist/types/src/enums/unitySystemEnums.d.ts.map +1 -1
  234. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
  235. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
  236. package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
  237. package/dist/types/src/utilities/tenant/TenantProvider.d.ts.map +1 -1
  238. package/dist/types/tsconfig.tsbuildinfo +1 -1
  239. package/dist/udp/ShortcutContent/index.js +1 -1
  240. package/dist/udp/export/index.js +1 -1
  241. package/dist/udp/fileImportMapping/index.js +1 -1
  242. package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
  243. package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
  244. package/dist/udp/pages/UdpFormsPrivateForm/index.js +1 -1
  245. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  246. package/dist/udp/pages/UdpGridPanelManagementPage/index.js +1 -1
  247. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  248. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  249. package/dist/udp/pages/UdpNotesPage/index.js +1 -1
  250. package/dist/udp/pages/UdpPages/index.js +13 -13
  251. package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
  252. package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
  253. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  254. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  255. package/dist/udp/pages/UdpVerticalManagementPage/index.js +1 -1
  256. package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +1 -1
  257. package/dist/{unitySystemEnums-e5F9Jr7m.js → unitySystemEnums-CZDCsD5t.js} +6 -2
  258. package/dist/{unitySystemEnums-e5F9Jr7m.js.map → unitySystemEnums-CZDCsD5t.js.map} +1 -1
  259. package/dist/{useActions-BWBXokgQ.js → useActions-DZe6YlEm.js} +3 -3
  260. package/dist/{useActions-BWBXokgQ.js.map → useActions-DZe6YlEm.js.map} +1 -1
  261. package/dist/{usePromotedMethodEntities-DaPFmr0s.js → usePromotedMethodEntities-D-GoZJZB.js} +2 -2
  262. package/dist/{usePromotedMethodEntities-DaPFmr0s.js.map → usePromotedMethodEntities-D-GoZJZB.js.map} +1 -1
  263. package/dist/{useSearchFilterParamsMap-DPCfEY-N.js → useSearchFilterParamsMap-hAHx2Rav.js} +2 -2
  264. package/dist/{useSearchFilterParamsMap-DPCfEY-N.js.map → useSearchFilterParamsMap-hAHx2Rav.js.map} +1 -1
  265. package/dist/utilities/aggrid/datasources/index.js +1 -1
  266. package/dist/utilities/aggrid/index.js +2 -2
  267. package/dist/utilities/auth/index.js +3 -3
  268. package/dist/utilities/form/paymentForm/index.js +1 -1
  269. package/dist/utilities/menus/index.js +1 -1
  270. package/dist/utilities/provider/index.js +1 -1
  271. package/dist/utilities/search/index.js +1 -1
  272. package/dist/utilities/tenant/index.js +1 -1
  273. package/dist/utilities/tree/index.js +1 -1
  274. package/dist/{utilityDisplay-C6c73Efx.js → utilityDisplay-DtdjV7V1.js} +2 -2
  275. package/dist/{utilityDisplay-C6c73Efx.js.map → utilityDisplay-DtdjV7V1.js.map} +1 -1
  276. package/dist/{withEngineComponent-JSgAYpSg.js → withEngineComponent-CpOJBSmx.js} +2 -2
  277. package/dist/{withEngineComponent-JSgAYpSg.js.map → withEngineComponent-CpOJBSmx.js.map} +1 -1
  278. package/dist/workflow/index.js +2 -2
  279. package/dist/workflow/menus/index.js +1 -1
  280. package/export-map.json +3 -2
  281. package/package.json +1 -1
  282. package/dist/Inquiry-C1q14Yyd.js +0 -3
  283. package/dist/MenuPage-DP1ATpru.js +0 -3
  284. package/dist/MyExportsPage-DGc4Sbt9.js +0 -3
  285. package/dist/TenantProvider-C-3eqCA3.js.map +0 -1
  286. package/dist/UdpAuditEventsPage-DuHg-BRJ.js +0 -3
  287. package/dist/UserFormSideSheet-tpmcX5Ax.js +0 -3
  288. package/dist/VirtualBrowser-BUTWxd9P.js +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"mapLayout-DCBNFKk9.js","names":["data","ListView","ActionsRenderer"],"sources":["../src/UI/mapLayout/MapLayout.jsx"],"sourcesContent":["import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport { Fill, Style, Stroke, Icon, Circle } from 'ol/style';\nimport { transform } from 'ol/proj';\nimport { makeStyles, Grid, lighten } from '@material-ui/core';\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport { isArray, isObject, startCase } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport TruckIcon from '../../assets/unityIcons/TruckIcon.svg';\nimport ListView from './ui/ListView';\nimport ActionsRenderer from './ui/ActionsRenderer';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { AmbientGridTemplate } from '../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { FluentIconButton } from '../inputs/buttons/FluentIconButton';\nimport { StandardTitle } from '../dataDisplay/typography/StandardTitle';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { getLayer, generateGeoJsonList } from './utilities/MapUtilities';\nimport { UdpMapComponent } from '../maps/UdpMapComponent';\nimport { UdpMapToolbar } from '../maps/UdpMapToolbar';\n\nconst useStyles = makeStyles((theme) => ({\n fullHeight: {\n height: '73vh',\n backgroundColor: lighten(theme.palette.primary.light, 0.7),\n overflow: 'auto'\n },\n contentWrapper: {\n display: 'flex'\n },\n detailSheetHeader: {\n display: 'flex',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(1),\n alignItems: 'center',\n gap: theme.spacing(1.5)\n },\n detailSheetBody: {\n padding: theme.spacing(2)\n },\n detailTitle: {\n marginTop: 0\n },\n leftColumn: {\n overflow: 'auto',\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n listViewWrapper: {\n position: 'relative'\n },\n zoomControl: {\n left: 'auto',\n right: theme.spacing(0.8),\n top: theme.spacing(5)\n }\n}));\n\nconst styles = {\n Point: [\n new Style({\n image: new Icon({\n anchor: [0.17, 48],\n anchorXUnits: 'fraction',\n anchorYUnits: 'pixels',\n src: TruckIcon,\n scale: 0.3\n }),\n zIndex: 1\n }),\n new Style({\n image: new Circle({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 1\n }),\n fill: new Fill({\n color: '#FFFFFF'\n }),\n radius: 20,\n scale: 1.1\n }),\n zIndex: 0\n })\n ],\n LineString: new Style({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 4\n }),\n zIndex: 0\n })\n};\n\nexport const MapLayout = (props) => {\n const {\n data,\n initialSelectedLayers,\n shellContext,\n sideSheetTitle,\n cardConfig,\n noRightPanelPadding = false,\n isGeoJsonFormat = true,\n geoJsonMappingConfig,\n position = 'default',\n showMap = true,\n showList,\n showGrid = true,\n //inject data\n getSelectedFeatures,\n getSelectedLayers,\n getSelectedViewItemData,\n rightSectionPanel,\n rightSectionPanelTitle,\n rightSectionPanelState,\n setRightSectionPanelState,\n overrideDetailRightSection = false,\n //toolbar\n layerOptions,\n layerKeySeparator = '',\n statisticsList,\n hideZeroValueStats,\n defaultTileOptionName,\n hideTileSelection,\n filterPanel,\n filterCallback,\n selectedFeaturesActionPanel,\n refreshEvent,\n refreshButtonTooltip,\n readOnlyMap,\n addFeaturePanelConfig,\n //list view props\n noWrapPrimaryText,\n hideListView = false,\n listFilter,\n listViewCardConfig,\n listViewDetailsEvent,\n listViewChipConfig,\n //popover card props\n popoverDetailsEvent,\n popoverPrimaryActions,\n popoverMoreIconButtonActions,\n getMessagePopover,\n getMessageIconPopover,\n hideMessageIconPopover,\n popoverWidth,\n enableViewFeature = true,\n enableDeleteFeature,\n handleDeleteFeature,\n enableEditFeature,\n handleEditFeature,\n //map props\n mapTitle = '',\n getMapFeatureStyles,\n getSelectedFeatureStyles,\n tileLayersOptions,\n imageLayersOptions,\n mapZoom,\n mapCenter,\n mapProjection,\n addInteractions,\n selectedPin,\n mapHeight = '45vh',\n addressBar,\n mapDataProjection,\n crs,\n layerKeys,\n mapFilter,\n showZoomControl,\n readOnlyLayers,\n layerRoles,\n getVectorLayerSources,\n enableAddNewFeature,\n addMultipleFeatures = false,\n enableSplitFeature,\n handleAddNewFeatures,\n handleSplitFeature,\n handleGetZoomExtent,\n minZoom,\n maxZoom,\n //grid props\n gridTitle,\n columnDefs,\n groupingData,\n frameworkComponents,\n primaryActionButton,\n loading,\n rowNodeIdName,\n gridHeight = '50vh',\n paginationPageSize,\n onSearch,\n onRowSelected,\n rowModelType,\n api,\n columnApi,\n gridReady,\n onCellClicked,\n gridFilter,\n ...otherGridProps\n } = props;\n const [selectedFeatureProperties, setSelectedFeatureProperties] = useState();\n const [showDetails, setShowDetails] = useState(false);\n const [selectedItemData, setSelectedItemData] = useState();\n const [definedProj, setDefinedProj] = useState(false);\n const [enableDragBox, setEnableDragBox] = useState(false);\n const [dataUpdateCount, setDataUpdateCount] = useState(0);\n const [map, setMap] = useState(null);\n const [filteredLayerOptions, setFilterLayerOptions] = useState();\n const [bulkSelectionActive, setBulkSelectionActive] = useState(false);\n const [splitActive, setSplitActive] = useState(false);\n const [selectedFeatureCoordinates, setSelectedFeatureCoordinates] =\n useState();\n const [addActive, setAddActive] = useState(false);\n const [selectedFeatureIdExternal, setSelectedFeatureIdExternal] = useState();\n const [currentCenter, setCurrentCenter] = useState(mapCenter ?? [0, 0]);\n const [selectedLayers, setSelectedLayers] = useState([]);\n\n const classes = useStyles();\n const user = useAuthedUser();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (crs?.length > 0) {\n proj4.defs(crs);\n register(proj4);\n setDefinedProj(true);\n }\n }, [crs]);\n\n useEffect(() => {\n if (getSelectedLayers) {\n getSelectedLayers(selectedLayers);\n }\n }, [getSelectedLayers, selectedLayers]);\n\n useEffect(() => {\n if (getSelectedViewItemData) {\n getSelectedViewItemData(selectedItemData);\n }\n }, [getSelectedViewItemData, selectedItemData]);\n\n //solve refreshing map data outside map layout\n useEffect(() => {\n if (!data) return;\n\n if (dataUpdateCount === 0) {\n setDataUpdateCount(dataUpdateCount + 1);\n }\n //if the data is updated, force the popover to close\n if (dataUpdateCount === 1) {\n setSelectedFeatureProperties(null);\n }\n }, [data, dataUpdateCount]);\n\n //data\n const filteredData = useMemo(() => {\n if (!data) return [];\n\n const formattedData = isGeoJsonFormat\n ? data\n : generateGeoJsonList(data, geoJsonMappingConfig);\n\n //this will return an array of features in geojson format\n if (filterPanel && filterCallback) {\n return filterCallback(formattedData);\n }\n\n return formattedData;\n }, [\n data,\n filterCallback,\n filterPanel,\n geoJsonMappingConfig,\n isGeoJsonFormat\n ]);\n\n const gridData = useMemo(() => {\n return filteredData\n ?.filter((obj) => {\n const layerKey = getLayer(layerKeys, layerKeySeparator, obj);\n\n if (layerRoles?.[layerKey]) {\n return layerRoles[layerKey]?.some((roleId) =>\n user.roleIds?.includes(roleId)\n );\n }\n return true;\n })\n .map((obj) => ({\n id: obj.id,\n ...obj.properties\n }));\n }, [filteredData, layerKeySeparator, layerKeys, layerRoles, user.roleIds]);\n\n const filteredGridData = useMemo(() => {\n if (gridFilter) {\n return gridFilter(gridData);\n }\n\n return gridData;\n }, [gridData, gridFilter]);\n\n const filteredListData = useMemo(() => {\n if (listFilter) {\n return listFilter(gridData);\n }\n\n return gridData;\n }, [gridData, listFilter]);\n\n useEffect(() => {\n //If there are projections need to be defined, but it isn't defined yet. Then, return to prevent errors in transform().\n if (crs?.length > 0 && !definedProj) return;\n\n if (\n filteredData?.[0]?.geometry?.coordinates &&\n mapProjection &&\n mapDataProjection\n ) {\n const coordinates = isArray(filteredData?.[0]?.geometry?.coordinates[0])\n ? filteredData?.[0]?.geometry?.coordinates[0]\n : filteredData?.[0]?.geometry?.coordinates;\n const newCenter = transform(\n coordinates,\n mapDataProjection,\n mapProjection\n );\n setCurrentCenter(newCenter);\n }\n }, [filteredData, mapDataProjection, mapProjection, definedProj, crs]);\n\n //Default getStyles for map features\n const getStyles = useCallback((feature) => {\n const geometryType = feature.getGeometry().getType();\n return styles[geometryType] ?? new Style();\n }, []);\n\n const handleViewDetailsFromPopover = useCallback(\n (data) => {\n const featureProperties = data?.selectedFeature?.getProperties();\n\n if (popoverDetailsEvent) {\n popoverDetailsEvent(featureProperties);\n return;\n }\n\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n\n setShowDetails(true);\n\n setSelectedItemData(featureProperties);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [popoverDetailsEvent, setRightSectionPanelState, shellContext]\n );\n\n const handleCloseDetailSheet = useCallback(() => {\n setShowDetails(false);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(null);\n }, [setRightSectionPanelState]);\n\n const handleViewDetailsFromList = useCallback(\n (data) => {\n setShowDetails(true);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(data);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [setRightSectionPanelState, shellContext]\n );\n\n const itemDetails = useMemo(() => {\n if (\n selectedItemData &&\n !overrideDetailRightSection &&\n !rightSectionPanelState\n ) {\n return Object.entries(selectedItemData)\n .filter(\n ([key, value]) =>\n 'geometry' !== key && !isObject(value) && !isArray(value)\n )\n .map(([key, value]) => {\n return (\n <FluentTextField\n label={startCase(key)}\n value={value}\n InputProps={{\n readOnly: true\n }}\n />\n );\n });\n }\n\n return;\n }, [overrideDetailRightSection, rightSectionPanelState, selectedItemData]);\n\n const gridColumnDefinition = useMemo(() => {\n if (!columnDefs) return;\n\n //check if there's actions renderer to use. Otherwise, using the default actions renderer\n if (frameworkComponents?.actionsRenderer) {\n return columnDefs;\n } else {\n return [\n ...columnDefs,\n {\n headerName: t('Actions'),\n field: 'actions',\n suppressSizeToFit: true,\n minWidth: 100,\n maxWidth: 125,\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n openView: (data) => handleViewDetailsFromList(data)\n },\n sortable: false\n }\n ];\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnDefs, frameworkComponents]);\n\n const detailSheetHeight = useMemo(() => {\n if (!showGrid) {\n return '73vh';\n } else if (showGrid && !showMap) {\n return `calc(67vh + 6vh)`;\n } else {\n return `calc(${mapHeight} + ${gridHeight} + 6vh)`;\n }\n }, [gridHeight, mapHeight, showGrid, showMap]);\n\n const handleSelectLayers = (e) => {\n setSelectedLayers(e);\n };\n\n const handleSelectMarker = useCallback((data) => {\n setSelectedFeatureIdExternal(data?.id);\n }, []);\n\n const handleOnCellClicked = useCallback(\n (params) => {\n if (onCellClicked) {\n onCellClicked(params);\n }\n\n if (!params?.node?.group && params?.colDef?.field !== 'actions') {\n handleSelectMarker(params?.data);\n }\n },\n [handleSelectMarker, onCellClicked]\n );\n\n const listView = useMemo(() => {\n if (hideListView) return;\n\n return (\n <ListView\n data={filteredListData ?? []}\n listViewConfig={listViewCardConfig ?? cardConfig}\n noWrapPrimaryText={noWrapPrimaryText}\n viewEvent={listViewDetailsEvent ?? handleViewDetailsFromList}\n showMarkerEvent={handleSelectMarker}\n chipConfig={listViewChipConfig}\n />\n );\n }, [\n cardConfig,\n filteredListData,\n handleSelectMarker,\n handleViewDetailsFromList,\n hideListView,\n listViewCardConfig,\n listViewChipConfig,\n listViewDetailsEvent,\n noWrapPrimaryText\n ]);\n\n const handleSetSelectedFeatureProperties = useCallback((currentFeature) => {\n if (currentFeature) {\n let featureProperties = currentFeature?.getProperties();\n\n setSelectedFeatureCoordinates(\n currentFeature.getGeometry().getCoordinates()\n );\n\n setSelectedFeatureProperties(featureProperties);\n }\n }, []);\n\n const handleCloseFeaturePopover = useCallback(() => {\n setSelectedFeatureIdExternal(null);\n }, []);\n\n const handleSetMapComponent = useCallback((value) => {\n setMap(value);\n }, []);\n\n const mapComponent = useMemo(() => {\n return (\n <div>\n <Grid container>\n <Grid\n item\n xs={3}\n style={{\n display: !hideListView && showList ? 'block' : 'none'\n }}\n >\n <div className={clsx(classes.fullHeight, classes.listViewWrapper)}>\n {listView}\n </div>\n </Grid>\n <Grid item xs={showList ? 9 : 12}>\n <UdpMapComponent\n map={map}\n handleSetMapComponent={handleSetMapComponent}\n data={data}\n isGeoJsonFormat={isGeoJsonFormat}\n geoJsonMappingConfig={geoJsonMappingConfig}\n enableZoom={showZoomControl}\n mapZoom={mapZoom}\n mapCenter={currentCenter}\n mapHeight={mapHeight}\n crs={crs}\n mapProjection={mapProjection}\n mapDataProjection={mapDataProjection}\n getFilteredMapData={mapFilter}\n getVectorLayerSources={getVectorLayerSources}\n getFeatureStyles={getMapFeatureStyles ?? getStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n filterLayersByRole={layerRoles?.length > 0}\n layerKeys={layerKeys}\n layerKeySeparator={layerKeySeparator}\n user={user}\n layerRoles={layerRoles}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetFilteredLayerOptionsByRole={setFilterLayerOptions}\n enableViewFeature={enableViewFeature}\n handleViewFeature={handleViewDetailsFromPopover}\n bulkSelectionActive={bulkSelectionActive}\n splitActive={splitActive}\n enableDragBox={enableDragBox}\n selectedFeatureCoordinates={selectedFeatureCoordinates}\n selectedFeatureProperties={selectedFeatureProperties}\n handleSetSelectedFeatureProperties={\n handleSetSelectedFeatureProperties\n }\n enableAddNewFeature={addActive}\n readOnlyLayers={readOnlyLayers}\n selectedFeatureIdExternal={selectedFeatureIdExternal}\n additionalOnclosePopover={handleCloseFeaturePopover}\n popoverPrimaryActions={popoverPrimaryActions}\n popoverMoreIconButtonActions={popoverMoreIconButtonActions}\n getMessagePopover={getMessagePopover}\n getMessageIconPopover={getMessageIconPopover}\n hideMessageIconPopover={hideMessageIconPopover}\n popoverCardConfig={cardConfig}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n handleGetZoomExtent={handleGetZoomExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n />\n </Grid>\n </Grid>\n </div>\n );\n }, [\n addActive,\n bulkSelectionActive,\n cardConfig,\n classes.fullHeight,\n classes.listViewWrapper,\n crs,\n currentCenter,\n data,\n defaultTileOptionName,\n enableDragBox,\n enableViewFeature,\n filterCallback,\n filterPanel,\n filteredLayerOptions,\n geoJsonMappingConfig,\n getMapFeatureStyles,\n getMessageIconPopover,\n getMessagePopover,\n getSelectedFeatureStyles,\n getSelectedFeatures,\n getStyles,\n getVectorLayerSources,\n handleCloseFeaturePopover,\n handleGetZoomExtent,\n handleSetMapComponent,\n handleSetSelectedFeatureProperties,\n handleViewDetailsFromPopover,\n hideListView,\n hideMessageIconPopover,\n hideTileSelection,\n initialSelectedLayers,\n isGeoJsonFormat,\n layerKeySeparator,\n layerKeys,\n layerOptions,\n layerRoles,\n listView,\n map,\n mapDataProjection,\n mapFilter,\n mapHeight,\n mapProjection,\n mapZoom,\n maxZoom,\n minZoom,\n popoverMoreIconButtonActions,\n popoverPrimaryActions,\n readOnlyLayers,\n selectedFeatureCoordinates,\n selectedFeatureIdExternal,\n selectedFeatureProperties,\n selectedFeaturesActionPanel,\n selectedLayers,\n showList,\n showZoomControl,\n splitActive,\n tileLayersOptions,\n user\n ]);\n\n const gridComponent = useMemo(() => {\n return (\n <div>\n <AmbientGridTemplate\n title={gridTitle}\n data={filteredGridData}\n columnDefs={gridColumnDefinition}\n groupingData={groupingData}\n frameworkComponents={{\n actionsRenderer: ActionsRenderer,\n ...frameworkComponents\n }}\n primaryActionButton={primaryActionButton}\n loading={loading}\n rowNodeIdName={rowNodeIdName}\n height={showGrid && !showMap ? '67vh' : gridHeight}\n paginationPageSize={paginationPageSize}\n onSearch={onSearch}\n onRowSelected={onRowSelected}\n rowModelType={rowModelType}\n api={api}\n columnApi={columnApi}\n gridReady={gridReady}\n dynamicSizing\n onCellClicked={handleOnCellClicked}\n {...otherGridProps}\n />\n </div>\n );\n }, [\n api,\n columnApi,\n filteredGridData,\n frameworkComponents,\n gridColumnDefinition,\n gridHeight,\n gridReady,\n gridTitle,\n groupingData,\n handleOnCellClicked,\n loading,\n onRowSelected,\n onSearch,\n otherGridProps,\n paginationPageSize,\n primaryActionButton,\n rowModelType,\n rowNodeIdName,\n showGrid,\n showMap\n ]);\n\n const mapGrid = useMemo(() => {\n if (position === 'gridOnTop') {\n return (\n <div>\n {showGrid && gridComponent}\n {showMap && mapComponent}\n </div>\n );\n }\n return (\n <div>\n {showMap && mapComponent}\n {showGrid && gridComponent}\n </div>\n );\n }, [gridComponent, mapComponent, position, showGrid, showMap]);\n\n return (\n <div>\n <UdpMapToolbar\n map={map}\n mapTitle={mapTitle}\n mapProjection={mapProjection}\n getFeatureStyles={getMapFeatureStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n handleSetSelectedFeatureOnSelect={getSelectedViewItemData}\n handleRefresh={refreshEvent}\n refreshButtonTooltip={refreshButtonTooltip}\n readOnlyMap={readOnlyMap}\n enableAdd={enableAddNewFeature}\n handleAddNewFeatures={handleAddNewFeatures}\n addMultipleFeatures={addMultipleFeatures}\n enableSplitFeature={enableSplitFeature}\n handleSplitFeature={handleSplitFeature}\n handleSetSelectedFeatureProperties={handleSetSelectedFeatureProperties}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetBulkSelectionActive={setBulkSelectionActive}\n enableDragBox={enableDragBox}\n handleSetEnableDragBox={setEnableDragBox}\n splitActive={splitActive}\n handleSetSplitActive={setSplitActive}\n enableAddNewFeature={addActive}\n handleEnableAddNewFeature={setAddActive}\n readOnlyLayers={readOnlyLayers}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n addFeaturePanelConfig={addFeaturePanelConfig}\n />\n <Grid container>\n <Grid\n item\n {...(showDetails || rightSectionPanelState\n ? { xs: 7, sm: 9 }\n : { xs: 12 })}\n >\n {mapGrid}\n </Grid>\n {(showDetails || rightSectionPanelState) && (\n <Grid\n item\n xs={5}\n sm={3}\n className={classes.leftColumn}\n style={{ maxHeight: detailSheetHeight }}\n >\n <div className={classes.detailSheetHeader}>\n <FluentIconButton\n onClick={handleCloseDetailSheet}\n icon={ChromeCloseIcon}\n />\n <StandardTitle className={classes.detailTitle}>\n {rightSectionPanelTitle ?? t('Details')}\n </StandardTitle>\n </div>\n <div\n className={noRightPanelPadding ? null : classes.detailSheetBody}\n >\n {rightSectionPanel &&\n (rightSectionPanelState ||\n (showDetails && overrideDetailRightSection)) &&\n rightSectionPanel}\n {showDetails && itemDetails && (\n <AmbientCard fullWidth>{itemDetails}</AmbientCard>\n )}\n </div>\n </Grid>\n )}\n </Grid>\n </div>\n );\n};\n"],"mappings":"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ACvB,iCAAiC;GACjC,uCAAuC;GACvC,oBAAoB,YAAY,SAAS;GAC9B;GACQ;GACb;GACM;GACZ,4BAA4B;GAC5B,qCAAqC;GAClB;GACnB,mBAAmB;GACE;GACR;GACE;GACa;GACD;GAEzB;GAEF,qBAAqB;GACL;GACW;GAC3B,0BAA0B;GACH;GACO;GACX;GACI;GACC;GACxB,mBAAmB;GACH;GAChB,yBAAyB;GACJ;GACZ;GACA;IACT,CACG,CACF,CACH;IAEP;EACD;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,cAAc;AAClC,SACE,oCAAC,aACC,oCAAC;GACC,OAAO;GACP,MAAM;GACN,YAAY;GACE;GACd,qBAAqB;IACnB,iBAAiBC;IACjB,GAAG;IACJ;GACoB;GACZ;GACM;GACf,QAAQ,YAAY,CAAC,UAAU,SAAS;GACpB;GACV;GACK;GACD;GACT;GACM;GACA;GACX;GACA,eAAe;GACf,GAAI;IACJ,CACE;IAEP;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,UAAU,cAAc;AAC5B,MAAI,aAAa,YACf,QACE,oCAAC,aACE,YAAY,eACZ,WAAW,aACR;AAGV,SACE,oCAAC,aACE,WAAW,cACX,YAAY,cACT;IAEP;EAAC;EAAe;EAAc;EAAU;EAAU;EAAQ,CAAC;AAE9D,QACE,oCAAC,aACC,oCAAC;EACM;EACK;EACK;EACf,kBAAkB;EACQ;EACb;EACb,qBAAqB;EACrB,qBAAqB,CAAC;EACH;EACI;EACT;EACS;EACvB,iCAAiC;EACjC,uCAAuC;EACvC,kCAAkC;EAClC,eAAe;EACO;EACT;EACb,WAAW;EACW;EACD;EACD;EACA;EACgB;EACpC,4BAA4B;EAC5B,8BAA8B;EACf;EACf,wBAAwB;EACX;EACb,sBAAsB;EACtB,qBAAqB;EACrB,2BAA2B;EACX;EACA;EAChB,yBAAyB;EACF;GACvB,EACF,oCAAC,QAAK,mBACJ,oCAAC;EACC;EACA,GAAK,eAAe,yBAChB;GAAE,IAAI;GAAG,IAAI;GAAG,GAChB,EAAE,IAAI,IAAI;IAEb,QACI,GACL,eAAe,2BACf,oCAAC;EACC;EACA,IAAI;EACJ,IAAI;EACJ,WAAW,QAAQ;EACnB,OAAO,EAAE,WAAW,mBAAmB;IAEvC,oCAAC,SAAI,WAAW,QAAQ,qBACtB,oCAAC;EACC,SAAS;EACT,MAAM;GACN,EACF,oCAAC,iBAAc,WAAW,QAAQ,eAC/B,0BAA0B,EAAE,UAAU,CACzB,CACZ,EACN,oCAAC,SACC,WAAW,sBAAsB,OAAO,QAAQ,mBAE/C,sBACE,0BACE,eAAe,+BAClB,mBACD,eAAe,eACd,oCAAC,eAAY,mBAAW,YAA0B,CAEhD,CACD,CAEJ,CACH"}
1
+ {"version":3,"file":"mapLayout-B_m2Fh8n.js","names":["data","ListView","ActionsRenderer"],"sources":["../src/UI/mapLayout/MapLayout.jsx"],"sourcesContent":["import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport { Fill, Style, Stroke, Icon, Circle } from 'ol/style';\nimport { transform } from 'ol/proj';\nimport { makeStyles, Grid, lighten } from '@material-ui/core';\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport proj4 from 'proj4';\nimport { register } from 'ol/proj/proj4';\nimport { isArray, isObject, startCase } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport TruckIcon from '../../assets/unityIcons/TruckIcon.svg';\nimport ListView from './ui/ListView';\nimport ActionsRenderer from './ui/ActionsRenderer';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { AmbientGridTemplate } from '../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { useAuthedUser } from '../../utilities/auth/useAuthedUser';\nimport { FluentIconButton } from '../inputs/buttons/FluentIconButton';\nimport { StandardTitle } from '../dataDisplay/typography/StandardTitle';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { getLayer, generateGeoJsonList } from './utilities/MapUtilities';\nimport { UdpMapComponent } from '../maps/UdpMapComponent';\nimport { UdpMapToolbar } from '../maps/UdpMapToolbar';\n\nconst useStyles = makeStyles((theme) => ({\n fullHeight: {\n height: '73vh',\n backgroundColor: lighten(theme.palette.primary.light, 0.7),\n overflow: 'auto'\n },\n contentWrapper: {\n display: 'flex'\n },\n detailSheetHeader: {\n display: 'flex',\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(1),\n alignItems: 'center',\n gap: theme.spacing(1.5)\n },\n detailSheetBody: {\n padding: theme.spacing(2)\n },\n detailTitle: {\n marginTop: 0\n },\n leftColumn: {\n overflow: 'auto',\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n listViewWrapper: {\n position: 'relative'\n },\n zoomControl: {\n left: 'auto',\n right: theme.spacing(0.8),\n top: theme.spacing(5)\n }\n}));\n\nconst styles = {\n Point: [\n new Style({\n image: new Icon({\n anchor: [0.17, 48],\n anchorXUnits: 'fraction',\n anchorYUnits: 'pixels',\n src: TruckIcon,\n scale: 0.3\n }),\n zIndex: 1\n }),\n new Style({\n image: new Circle({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 1\n }),\n fill: new Fill({\n color: '#FFFFFF'\n }),\n radius: 20,\n scale: 1.1\n }),\n zIndex: 0\n })\n ],\n LineString: new Style({\n stroke: new Stroke({\n color: '#0F62FE',\n width: 4\n }),\n zIndex: 0\n })\n};\n\nexport const MapLayout = (props) => {\n const {\n data,\n initialSelectedLayers,\n shellContext,\n sideSheetTitle,\n cardConfig,\n noRightPanelPadding = false,\n isGeoJsonFormat = true,\n geoJsonMappingConfig,\n position = 'default',\n showMap = true,\n showList,\n showGrid = true,\n //inject data\n getSelectedFeatures,\n getSelectedLayers,\n getSelectedViewItemData,\n rightSectionPanel,\n rightSectionPanelTitle,\n rightSectionPanelState,\n setRightSectionPanelState,\n overrideDetailRightSection = false,\n //toolbar\n layerOptions,\n layerKeySeparator = '',\n statisticsList,\n hideZeroValueStats,\n defaultTileOptionName,\n hideTileSelection,\n filterPanel,\n filterCallback,\n selectedFeaturesActionPanel,\n refreshEvent,\n refreshButtonTooltip,\n readOnlyMap,\n addFeaturePanelConfig,\n //list view props\n noWrapPrimaryText,\n hideListView = false,\n listFilter,\n listViewCardConfig,\n listViewDetailsEvent,\n listViewChipConfig,\n //popover card props\n popoverDetailsEvent,\n popoverPrimaryActions,\n popoverMoreIconButtonActions,\n getMessagePopover,\n getMessageIconPopover,\n hideMessageIconPopover,\n popoverWidth,\n enableViewFeature = true,\n enableDeleteFeature,\n handleDeleteFeature,\n enableEditFeature,\n handleEditFeature,\n //map props\n mapTitle = '',\n getMapFeatureStyles,\n getSelectedFeatureStyles,\n tileLayersOptions,\n imageLayersOptions,\n mapZoom,\n mapCenter,\n mapProjection,\n addInteractions,\n selectedPin,\n mapHeight = '45vh',\n addressBar,\n mapDataProjection,\n crs,\n layerKeys,\n mapFilter,\n showZoomControl,\n readOnlyLayers,\n layerRoles,\n getVectorLayerSources,\n enableAddNewFeature,\n addMultipleFeatures = false,\n enableSplitFeature,\n handleAddNewFeatures,\n handleSplitFeature,\n handleGetZoomExtent,\n minZoom,\n maxZoom,\n //grid props\n gridTitle,\n columnDefs,\n groupingData,\n frameworkComponents,\n primaryActionButton,\n loading,\n rowNodeIdName,\n gridHeight = '50vh',\n paginationPageSize,\n onSearch,\n onRowSelected,\n rowModelType,\n api,\n columnApi,\n gridReady,\n onCellClicked,\n gridFilter,\n ...otherGridProps\n } = props;\n const [selectedFeatureProperties, setSelectedFeatureProperties] = useState();\n const [showDetails, setShowDetails] = useState(false);\n const [selectedItemData, setSelectedItemData] = useState();\n const [definedProj, setDefinedProj] = useState(false);\n const [enableDragBox, setEnableDragBox] = useState(false);\n const [dataUpdateCount, setDataUpdateCount] = useState(0);\n const [map, setMap] = useState(null);\n const [filteredLayerOptions, setFilterLayerOptions] = useState();\n const [bulkSelectionActive, setBulkSelectionActive] = useState(false);\n const [splitActive, setSplitActive] = useState(false);\n const [selectedFeatureCoordinates, setSelectedFeatureCoordinates] =\n useState();\n const [addActive, setAddActive] = useState(false);\n const [selectedFeatureIdExternal, setSelectedFeatureIdExternal] = useState();\n const [currentCenter, setCurrentCenter] = useState(mapCenter ?? [0, 0]);\n const [selectedLayers, setSelectedLayers] = useState([]);\n\n const classes = useStyles();\n const user = useAuthedUser();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (crs?.length > 0) {\n proj4.defs(crs);\n register(proj4);\n setDefinedProj(true);\n }\n }, [crs]);\n\n useEffect(() => {\n if (getSelectedLayers) {\n getSelectedLayers(selectedLayers);\n }\n }, [getSelectedLayers, selectedLayers]);\n\n useEffect(() => {\n if (getSelectedViewItemData) {\n getSelectedViewItemData(selectedItemData);\n }\n }, [getSelectedViewItemData, selectedItemData]);\n\n //solve refreshing map data outside map layout\n useEffect(() => {\n if (!data) return;\n\n if (dataUpdateCount === 0) {\n setDataUpdateCount(dataUpdateCount + 1);\n }\n //if the data is updated, force the popover to close\n if (dataUpdateCount === 1) {\n setSelectedFeatureProperties(null);\n }\n }, [data, dataUpdateCount]);\n\n //data\n const filteredData = useMemo(() => {\n if (!data) return [];\n\n const formattedData = isGeoJsonFormat\n ? data\n : generateGeoJsonList(data, geoJsonMappingConfig);\n\n //this will return an array of features in geojson format\n if (filterPanel && filterCallback) {\n return filterCallback(formattedData);\n }\n\n return formattedData;\n }, [\n data,\n filterCallback,\n filterPanel,\n geoJsonMappingConfig,\n isGeoJsonFormat\n ]);\n\n const gridData = useMemo(() => {\n return filteredData\n ?.filter((obj) => {\n const layerKey = getLayer(layerKeys, layerKeySeparator, obj);\n\n if (layerRoles?.[layerKey]) {\n return layerRoles[layerKey]?.some((roleId) =>\n user.roleIds?.includes(roleId)\n );\n }\n return true;\n })\n .map((obj) => ({\n id: obj.id,\n ...obj.properties\n }));\n }, [filteredData, layerKeySeparator, layerKeys, layerRoles, user.roleIds]);\n\n const filteredGridData = useMemo(() => {\n if (gridFilter) {\n return gridFilter(gridData);\n }\n\n return gridData;\n }, [gridData, gridFilter]);\n\n const filteredListData = useMemo(() => {\n if (listFilter) {\n return listFilter(gridData);\n }\n\n return gridData;\n }, [gridData, listFilter]);\n\n useEffect(() => {\n //If there are projections need to be defined, but it isn't defined yet. Then, return to prevent errors in transform().\n if (crs?.length > 0 && !definedProj) return;\n\n if (\n filteredData?.[0]?.geometry?.coordinates &&\n mapProjection &&\n mapDataProjection\n ) {\n const coordinates = isArray(filteredData?.[0]?.geometry?.coordinates[0])\n ? filteredData?.[0]?.geometry?.coordinates[0]\n : filteredData?.[0]?.geometry?.coordinates;\n const newCenter = transform(\n coordinates,\n mapDataProjection,\n mapProjection\n );\n setCurrentCenter(newCenter);\n }\n }, [filteredData, mapDataProjection, mapProjection, definedProj, crs]);\n\n //Default getStyles for map features\n const getStyles = useCallback((feature) => {\n const geometryType = feature.getGeometry().getType();\n return styles[geometryType] ?? new Style();\n }, []);\n\n const handleViewDetailsFromPopover = useCallback(\n (data) => {\n const featureProperties = data?.selectedFeature?.getProperties();\n\n if (popoverDetailsEvent) {\n popoverDetailsEvent(featureProperties);\n return;\n }\n\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n\n setShowDetails(true);\n\n setSelectedItemData(featureProperties);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [popoverDetailsEvent, setRightSectionPanelState, shellContext]\n );\n\n const handleCloseDetailSheet = useCallback(() => {\n setShowDetails(false);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(null);\n }, [setRightSectionPanelState]);\n\n const handleViewDetailsFromList = useCallback(\n (data) => {\n setShowDetails(true);\n if (setRightSectionPanelState) {\n setRightSectionPanelState(false);\n }\n setSelectedItemData(data);\n if (shellContext) {\n shellContext.setInquiryMenuToggle(false);\n }\n },\n [setRightSectionPanelState, shellContext]\n );\n\n const itemDetails = useMemo(() => {\n if (\n selectedItemData &&\n !overrideDetailRightSection &&\n !rightSectionPanelState\n ) {\n return Object.entries(selectedItemData)\n .filter(\n ([key, value]) =>\n 'geometry' !== key && !isObject(value) && !isArray(value)\n )\n .map(([key, value]) => {\n return (\n <FluentTextField\n label={startCase(key)}\n value={value}\n InputProps={{\n readOnly: true\n }}\n />\n );\n });\n }\n\n return;\n }, [overrideDetailRightSection, rightSectionPanelState, selectedItemData]);\n\n const gridColumnDefinition = useMemo(() => {\n if (!columnDefs) return;\n\n //check if there's actions renderer to use. Otherwise, using the default actions renderer\n if (frameworkComponents?.actionsRenderer) {\n return columnDefs;\n } else {\n return [\n ...columnDefs,\n {\n headerName: t('Actions'),\n field: 'actions',\n suppressSizeToFit: true,\n minWidth: 100,\n maxWidth: 125,\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n openView: (data) => handleViewDetailsFromList(data)\n },\n sortable: false\n }\n ];\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnDefs, frameworkComponents]);\n\n const detailSheetHeight = useMemo(() => {\n if (!showGrid) {\n return '73vh';\n } else if (showGrid && !showMap) {\n return `calc(67vh + 6vh)`;\n } else {\n return `calc(${mapHeight} + ${gridHeight} + 6vh)`;\n }\n }, [gridHeight, mapHeight, showGrid, showMap]);\n\n const handleSelectLayers = (e) => {\n setSelectedLayers(e);\n };\n\n const handleSelectMarker = useCallback((data) => {\n setSelectedFeatureIdExternal(data?.id);\n }, []);\n\n const handleOnCellClicked = useCallback(\n (params) => {\n if (onCellClicked) {\n onCellClicked(params);\n }\n\n if (!params?.node?.group && params?.colDef?.field !== 'actions') {\n handleSelectMarker(params?.data);\n }\n },\n [handleSelectMarker, onCellClicked]\n );\n\n const listView = useMemo(() => {\n if (hideListView) return;\n\n return (\n <ListView\n data={filteredListData ?? []}\n listViewConfig={listViewCardConfig ?? cardConfig}\n noWrapPrimaryText={noWrapPrimaryText}\n viewEvent={listViewDetailsEvent ?? handleViewDetailsFromList}\n showMarkerEvent={handleSelectMarker}\n chipConfig={listViewChipConfig}\n />\n );\n }, [\n cardConfig,\n filteredListData,\n handleSelectMarker,\n handleViewDetailsFromList,\n hideListView,\n listViewCardConfig,\n listViewChipConfig,\n listViewDetailsEvent,\n noWrapPrimaryText\n ]);\n\n const handleSetSelectedFeatureProperties = useCallback((currentFeature) => {\n if (currentFeature) {\n let featureProperties = currentFeature?.getProperties();\n\n setSelectedFeatureCoordinates(\n currentFeature.getGeometry().getCoordinates()\n );\n\n setSelectedFeatureProperties(featureProperties);\n }\n }, []);\n\n const handleCloseFeaturePopover = useCallback(() => {\n setSelectedFeatureIdExternal(null);\n }, []);\n\n const handleSetMapComponent = useCallback((value) => {\n setMap(value);\n }, []);\n\n const mapComponent = useMemo(() => {\n return (\n <div>\n <Grid container>\n <Grid\n item\n xs={3}\n style={{\n display: !hideListView && showList ? 'block' : 'none'\n }}\n >\n <div className={clsx(classes.fullHeight, classes.listViewWrapper)}>\n {listView}\n </div>\n </Grid>\n <Grid item xs={showList ? 9 : 12}>\n <UdpMapComponent\n map={map}\n handleSetMapComponent={handleSetMapComponent}\n data={data}\n isGeoJsonFormat={isGeoJsonFormat}\n geoJsonMappingConfig={geoJsonMappingConfig}\n enableZoom={showZoomControl}\n mapZoom={mapZoom}\n mapCenter={currentCenter}\n mapHeight={mapHeight}\n crs={crs}\n mapProjection={mapProjection}\n mapDataProjection={mapDataProjection}\n getFilteredMapData={mapFilter}\n getVectorLayerSources={getVectorLayerSources}\n getFeatureStyles={getMapFeatureStyles ?? getStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n filterLayersByRole={layerRoles?.length > 0}\n layerKeys={layerKeys}\n layerKeySeparator={layerKeySeparator}\n user={user}\n layerRoles={layerRoles}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetFilteredLayerOptionsByRole={setFilterLayerOptions}\n enableViewFeature={enableViewFeature}\n handleViewFeature={handleViewDetailsFromPopover}\n bulkSelectionActive={bulkSelectionActive}\n splitActive={splitActive}\n enableDragBox={enableDragBox}\n selectedFeatureCoordinates={selectedFeatureCoordinates}\n selectedFeatureProperties={selectedFeatureProperties}\n handleSetSelectedFeatureProperties={\n handleSetSelectedFeatureProperties\n }\n enableAddNewFeature={addActive}\n readOnlyLayers={readOnlyLayers}\n selectedFeatureIdExternal={selectedFeatureIdExternal}\n additionalOnclosePopover={handleCloseFeaturePopover}\n popoverPrimaryActions={popoverPrimaryActions}\n popoverMoreIconButtonActions={popoverMoreIconButtonActions}\n getMessagePopover={getMessagePopover}\n getMessageIconPopover={getMessageIconPopover}\n hideMessageIconPopover={hideMessageIconPopover}\n popoverCardConfig={cardConfig}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n handleGetZoomExtent={handleGetZoomExtent}\n minZoom={minZoom}\n maxZoom={maxZoom}\n />\n </Grid>\n </Grid>\n </div>\n );\n }, [\n addActive,\n bulkSelectionActive,\n cardConfig,\n classes.fullHeight,\n classes.listViewWrapper,\n crs,\n currentCenter,\n data,\n defaultTileOptionName,\n enableDragBox,\n enableViewFeature,\n filterCallback,\n filterPanel,\n filteredLayerOptions,\n geoJsonMappingConfig,\n getMapFeatureStyles,\n getMessageIconPopover,\n getMessagePopover,\n getSelectedFeatureStyles,\n getSelectedFeatures,\n getStyles,\n getVectorLayerSources,\n handleCloseFeaturePopover,\n handleGetZoomExtent,\n handleSetMapComponent,\n handleSetSelectedFeatureProperties,\n handleViewDetailsFromPopover,\n hideListView,\n hideMessageIconPopover,\n hideTileSelection,\n initialSelectedLayers,\n isGeoJsonFormat,\n layerKeySeparator,\n layerKeys,\n layerOptions,\n layerRoles,\n listView,\n map,\n mapDataProjection,\n mapFilter,\n mapHeight,\n mapProjection,\n mapZoom,\n maxZoom,\n minZoom,\n popoverMoreIconButtonActions,\n popoverPrimaryActions,\n readOnlyLayers,\n selectedFeatureCoordinates,\n selectedFeatureIdExternal,\n selectedFeatureProperties,\n selectedFeaturesActionPanel,\n selectedLayers,\n showList,\n showZoomControl,\n splitActive,\n tileLayersOptions,\n user\n ]);\n\n const gridComponent = useMemo(() => {\n return (\n <div>\n <AmbientGridTemplate\n title={gridTitle}\n data={filteredGridData}\n columnDefs={gridColumnDefinition}\n groupingData={groupingData}\n frameworkComponents={{\n actionsRenderer: ActionsRenderer,\n ...frameworkComponents\n }}\n primaryActionButton={primaryActionButton}\n loading={loading}\n rowNodeIdName={rowNodeIdName}\n height={showGrid && !showMap ? '67vh' : gridHeight}\n paginationPageSize={paginationPageSize}\n onSearch={onSearch}\n onRowSelected={onRowSelected}\n rowModelType={rowModelType}\n api={api}\n columnApi={columnApi}\n gridReady={gridReady}\n dynamicSizing\n onCellClicked={handleOnCellClicked}\n {...otherGridProps}\n />\n </div>\n );\n }, [\n api,\n columnApi,\n filteredGridData,\n frameworkComponents,\n gridColumnDefinition,\n gridHeight,\n gridReady,\n gridTitle,\n groupingData,\n handleOnCellClicked,\n loading,\n onRowSelected,\n onSearch,\n otherGridProps,\n paginationPageSize,\n primaryActionButton,\n rowModelType,\n rowNodeIdName,\n showGrid,\n showMap\n ]);\n\n const mapGrid = useMemo(() => {\n if (position === 'gridOnTop') {\n return (\n <div>\n {showGrid && gridComponent}\n {showMap && mapComponent}\n </div>\n );\n }\n return (\n <div>\n {showMap && mapComponent}\n {showGrid && gridComponent}\n </div>\n );\n }, [gridComponent, mapComponent, position, showGrid, showMap]);\n\n return (\n <div>\n <UdpMapToolbar\n map={map}\n mapTitle={mapTitle}\n mapProjection={mapProjection}\n getFeatureStyles={getMapFeatureStyles}\n getSelectedFeatureStyles={getSelectedFeatureStyles}\n filterPanel={filterPanel}\n filterPanelCallback={filterCallback}\n enableTileSelection={!hideTileSelection}\n tileLayersOptions={tileLayersOptions}\n defaultTileOptionName={defaultTileOptionName}\n layerOptions={layerOptions}\n initialSelectedLayers={initialSelectedLayers}\n bulkSelectedFeaturesActionPanel={selectedFeaturesActionPanel}\n handleSetSelectedFeaturesOnBulkSelect={getSelectedFeatures}\n handleSetSelectedFeatureOnSelect={getSelectedViewItemData}\n handleRefresh={refreshEvent}\n refreshButtonTooltip={refreshButtonTooltip}\n readOnlyMap={readOnlyMap}\n enableAdd={enableAddNewFeature}\n handleAddNewFeatures={handleAddNewFeatures}\n addMultipleFeatures={addMultipleFeatures}\n enableSplitFeature={enableSplitFeature}\n handleSplitFeature={handleSplitFeature}\n handleSetSelectedFeatureProperties={handleSetSelectedFeatureProperties}\n filteredLayerOptionsByRole={filteredLayerOptions}\n handleSetBulkSelectionActive={setBulkSelectionActive}\n enableDragBox={enableDragBox}\n handleSetEnableDragBox={setEnableDragBox}\n splitActive={splitActive}\n handleSetSplitActive={setSplitActive}\n enableAddNewFeature={addActive}\n handleEnableAddNewFeature={setAddActive}\n readOnlyLayers={readOnlyLayers}\n selectedLayers={selectedLayers}\n handleSetSelectedLayers={handleSelectLayers}\n addFeaturePanelConfig={addFeaturePanelConfig}\n />\n <Grid container>\n <Grid\n item\n {...(showDetails || rightSectionPanelState\n ? { xs: 7, sm: 9 }\n : { xs: 12 })}\n >\n {mapGrid}\n </Grid>\n {(showDetails || rightSectionPanelState) && (\n <Grid\n item\n xs={5}\n sm={3}\n className={classes.leftColumn}\n style={{ maxHeight: detailSheetHeight }}\n >\n <div className={classes.detailSheetHeader}>\n <FluentIconButton\n onClick={handleCloseDetailSheet}\n icon={ChromeCloseIcon}\n />\n <StandardTitle className={classes.detailTitle}>\n {rightSectionPanelTitle ?? t('Details')}\n </StandardTitle>\n </div>\n <div\n className={noRightPanelPadding ? null : classes.detailSheetBody}\n >\n {rightSectionPanel &&\n (rightSectionPanelState ||\n (showDetails && overrideDetailRightSection)) &&\n rightSectionPanel}\n {showDetails && itemDetails && (\n <AmbientCard fullWidth>{itemDetails}</AmbientCard>\n )}\n </div>\n </Grid>\n )}\n </Grid>\n </div>\n );\n};\n"],"mappings":"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ACvB,iCAAiC;GACjC,uCAAuC;GACvC,oBAAoB,YAAY,SAAS;GAC9B;GACQ;GACb;GACM;GACZ,4BAA4B;GAC5B,qCAAqC;GAClB;GACnB,mBAAmB;GACE;GACR;GACE;GACa;GACD;GAEzB;GAEF,qBAAqB;GACL;GACW;GAC3B,0BAA0B;GACH;GACO;GACX;GACI;GACC;GACxB,mBAAmB;GACH;GAChB,yBAAyB;GACJ;GACZ;GACA;IACT,CACG,CACF,CACH;IAEP;EACD;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,gBAAgB,cAAc;AAClC,SACE,oCAAC,aACC,oCAAC;GACC,OAAO;GACP,MAAM;GACN,YAAY;GACE;GACd,qBAAqB;IACnB,iBAAiBC;IACjB,GAAG;IACJ;GACoB;GACZ;GACM;GACf,QAAQ,YAAY,CAAC,UAAU,SAAS;GACpB;GACV;GACK;GACD;GACT;GACM;GACA;GACX;GACA,eAAe;GACf,GAAI;IACJ,CACE;IAEP;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,UAAU,cAAc;AAC5B,MAAI,aAAa,YACf,QACE,oCAAC,aACE,YAAY,eACZ,WAAW,aACR;AAGV,SACE,oCAAC,aACE,WAAW,cACX,YAAY,cACT;IAEP;EAAC;EAAe;EAAc;EAAU;EAAU;EAAQ,CAAC;AAE9D,QACE,oCAAC,aACC,oCAAC;EACM;EACK;EACK;EACf,kBAAkB;EACQ;EACb;EACb,qBAAqB;EACrB,qBAAqB,CAAC;EACH;EACI;EACT;EACS;EACvB,iCAAiC;EACjC,uCAAuC;EACvC,kCAAkC;EAClC,eAAe;EACO;EACT;EACb,WAAW;EACW;EACD;EACD;EACA;EACgB;EACpC,4BAA4B;EAC5B,8BAA8B;EACf;EACf,wBAAwB;EACX;EACb,sBAAsB;EACtB,qBAAqB;EACrB,2BAA2B;EACX;EACA;EAChB,yBAAyB;EACF;GACvB,EACF,oCAAC,QAAK,mBACJ,oCAAC;EACC;EACA,GAAK,eAAe,yBAChB;GAAE,IAAI;GAAG,IAAI;GAAG,GAChB,EAAE,IAAI,IAAI;IAEb,QACI,GACL,eAAe,2BACf,oCAAC;EACC;EACA,IAAI;EACJ,IAAI;EACJ,WAAW,QAAQ;EACnB,OAAO,EAAE,WAAW,mBAAmB;IAEvC,oCAAC,SAAI,WAAW,QAAQ,qBACtB,oCAAC;EACC,SAAS;EACT,MAAM;GACN,EACF,oCAAC,iBAAc,WAAW,QAAQ,eAC/B,0BAA0B,EAAE,UAAU,CACzB,CACZ,EACN,oCAAC,SACC,WAAW,sBAAsB,OAAO,QAAQ,mBAE/C,sBACE,0BACE,eAAe,+BAClB,mBACD,eAAe,eACd,oCAAC,eAAY,mBAAW,YAA0B,CAEhD,CACD,CAEJ,CACH"}
@@ -1,3 +1,3 @@
1
- import { t as CustomMenuPage_default } from "../menuPage-PIJOkANO.js";
1
+ import { t as CustomMenuPage_default } from "../menuPage-7DcUM-Q3.js";
2
2
 
3
3
  export { CustomMenuPage_default as CustomMenuPage };
@@ -1,4 +1,4 @@
1
- import { t as MenuPage_default } from "./MenuPage-fqEs3MSY.js";
1
+ import { t as MenuPage_default } from "./MenuPage-tkkhpco5.js";
2
2
  import React, { useMemo } from "react";
3
3
  import { Typography, makeStyles } from "@material-ui/core";
4
4
  import PropTypes from "prop-types";
@@ -101,4 +101,4 @@ var CustomMenuPage_default = CustomMenuPage;
101
101
 
102
102
  //#endregion
103
103
  export { CustomMenuPage_default as t };
104
- //# sourceMappingURL=menuPage-PIJOkANO.js.map
104
+ //# sourceMappingURL=menuPage-7DcUM-Q3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menuPage-PIJOkANO.js","names":["MenuPage"],"sources":["../src/menuPage/CustomMenuPage.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport MenuPage from './MenuPage';\nimport { makeStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1,\n padding: theme.spacing(1),\n },\n}));\n\n\nfunction buildInnerMenuFromItems(items = [], menuTitle, idPrefix = 'custom', showItemCount = false, itemCountAccessor = null) {\n const idMap = {};\n const views = (items || []).map((item, idx) => {\n const itemKey = item.id ?? item.ID ?? item.groupID ?? idx;\n const menuStructureId = `${idPrefix}-${itemKey}`;\n\n // compute optional count using accessor\n let itemCount = null;\n if (showItemCount && typeof itemCountAccessor === 'function') {\n try {\n const cnt = itemCountAccessor(item);\n if (cnt !== undefined && cnt !== null) {\n itemCount = cnt;\n }\n } catch (e) {\n }\n }\n\n idMap[menuStructureId] = item;\n item.__menuStructureId = menuStructureId;\n item.__itemKey = itemKey;\n\n const parametersObj = { FluentIcon: 'PageListIcon', PageId: '', defaultDisplay: 'expanded' };\n if (itemCount !== null && itemCount !== undefined) {\n parametersObj.itemCount = itemCount;\n }\n\n return {\n menuStructureId,\n menuItemInstance: {\n menuItemInstanceId: `${idPrefix}-item-${itemKey}`,\n clusterId: null,\n menuItemId: null,\n name: item.name ?? '',\n parameters: JSON.stringify(parametersObj),\n isActive: true,\n roleIds: [],\n groupIds: [],\n tenantSsoId: null,\n parentMenuItemInstanceId: null,\n items: null,\n },\n title: item.name ?? '',\n order: idx,\n parentId: null,\n unsubscribed: false,\n menuItemInstanceStructures: [],\n };\n });\n\n const innerMenu = {\n // set the inner menu name only when client provided a menuTitle; leave blank when not provided\n name: menuTitle ? menuTitle : '',\n menuItemInstanceStructureViews: views,\n };\n\n return { innerMenu, idMap };\n}\n\nconst CustomMenuPage = ({\n items = [],\n className = '',\n menuTitle,\n mainContent: clientMainContent,\n idPrefix = 'custom',\n showItemCount = false,\n itemCountAccessor = null,\n allowMissingPageParam = false,\n searchParamsTransformer = null,\n}) => {\n const classes = useStyles();\n\n // FIX: Memoize this so 'innerMenu' reference doesn't change on every render,\n // preventing infinite loops in MenuPage useEffects.\n const { innerMenu, idMap } = useMemo(() =>\n buildInnerMenuFromItems(items, menuTitle, idPrefix, showItemCount, itemCountAccessor),\n [items, menuTitle, idPrefix, showItemCount, itemCountAccessor]\n );\n\n // Expect client application to provide mainContent. If not provided, render an empty container.\n const clientContent = clientMainContent\n ? ({ selectedNode, menuItemsList }) =>\n clientMainContent({ selectedNode, menuItemsList, idMap, items, classes, className })\n : ({ selectedNode, menuItemsList }) => <div className={`${classes.root} ${className}`} />;\n\n const composedMainContent = ({ selectedNode, menuItemsList }) => (\n <div className={`${classes.root} ${className}`}>\n {clientContent({ selectedNode, menuItemsList })}\n </div>\n );\n\n return (\n <MenuPage\n innerMenuOverride={innerMenu}\n mainContent={composedMainContent}\n menuTitle={menuTitle}\n allowMissingPageParam={allowMissingPageParam}\n searchParamsTransformer={searchParamsTransformer}\n />\n );\n};\n\nCustomMenuPage.propTypes = {\n items: PropTypes.array,\n className: PropTypes.string,\n menuTitle: PropTypes.string,\n mainContent: PropTypes.func,\n idPrefix: PropTypes.string,\n showItemCount: PropTypes.bool,\n itemCountAccessor: PropTypes.func,\n allowMissingPageParam: PropTypes.bool,\n searchParamsTransformer: PropTypes.func,\n};\n\nexport default CustomMenuPage;\n"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAW,WAAU,EACrC,MAAM;CACJ,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CAC1B,EACF,EAAE;AAGH,SAAS,wBAAwB,QAAQ,EAAE,EAAE,WAAW,WAAW,UAAU,gBAAgB,OAAO,oBAAoB,MAAM;CAC5H,MAAM,QAAQ,EAAE;CAChB,MAAM,SAAS,SAAS,EAAE,EAAE,KAAK,MAAM,QAAQ;EAC7C,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM,KAAK,WAAW;EACtD,MAAM,kBAAkB,GAAG,SAAS,GAAG;EAGvC,IAAI,YAAY;AAChB,MAAI,iBAAiB,OAAO,sBAAsB,WAChD,KAAI;GACF,MAAM,MAAM,kBAAkB,KAAK;AACnC,OAAI,QAAQ,UAAa,QAAQ,KAC/B,aAAY;WAEP,GAAG;AAId,QAAM,mBAAmB;AACzB,OAAK,oBAAoB;AACzB,OAAK,YAAY;EAEjB,MAAM,gBAAgB;GAAE,YAAY;GAAgB,QAAQ;GAAI,gBAAgB;GAAY;AAC5F,MAAI,cAAc,QAAQ,cAAc,OACtC,eAAc,YAAY;AAG5B,SAAO;GACL;GACA,kBAAkB;IAChB,oBAAoB,GAAG,SAAS,QAAQ;IACxC,WAAW;IACX,YAAY;IACZ,MAAM,KAAK,QAAQ;IACnB,YAAY,KAAK,UAAU,cAAc;IACzC,UAAU;IACV,SAAS,EAAE;IACX,UAAU,EAAE;IACZ,aAAa;IACb,0BAA0B;IAC1B,OAAO;IACR;GACD,OAAO,KAAK,QAAQ;GACpB,OAAO;GACP,UAAU;GACV,cAAc;GACd,4BAA4B,EAAE;GAC/B;GACD;AAQF,QAAO;EAAE,WANS;GAEhB,MAAM,YAAY,YAAY;GAC9B,gCAAgC;GACjC;EAEmB;EAAO;;AAG7B,MAAM,kBAAkB,EACtB,QAAQ,EAAE,EACV,YAAY,IACZ,WACA,aAAa,mBACb,WAAW,UACX,gBAAgB,OAChB,oBAAoB,MACpB,wBAAwB,OACxB,0BAA0B,WACtB;CACJ,MAAM,UAAU,WAAW;CAI3B,MAAM,EAAE,WAAW,UAAU,cAC3B,wBAAwB,OAAO,WAAW,UAAU,eAAe,kBAAkB,EACrF;EAAC;EAAO;EAAW;EAAU;EAAe;EAAkB,CAC/D;CAGD,MAAM,gBAAgB,qBACjB,EAAE,cAAc,oBACf,kBAAkB;EAAE;EAAc;EAAe;EAAO;EAAO;EAAS;EAAW,CAAC,IACrF,EAAE,cAAc,oBAAoB,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,cAAe;CAE3F,MAAM,uBAAuB,EAAE,cAAc,oBAC3C,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,eAChC,cAAc;EAAE;EAAc;EAAe,CAAC,CAC3C;AAGR,QACE,oCAACA;EACC,mBAAmB;EACnB,aAAa;EACF;EACY;EACE;GACzB;;AAIN,eAAe,YAAY;CACzB,OAAO,UAAU;CACjB,WAAW,UAAU;CACrB,WAAW,UAAU;CACrB,aAAa,UAAU;CACvB,UAAU,UAAU;CACpB,eAAe,UAAU;CACzB,mBAAmB,UAAU;CAC7B,uBAAuB,UAAU;CACjC,yBAAyB,UAAU;CACpC;AAED,6BAAe"}
1
+ {"version":3,"file":"menuPage-7DcUM-Q3.js","names":["MenuPage"],"sources":["../src/menuPage/CustomMenuPage.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport MenuPage from './MenuPage';\nimport { makeStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1,\n padding: theme.spacing(1),\n },\n}));\n\n\nfunction buildInnerMenuFromItems(items = [], menuTitle, idPrefix = 'custom', showItemCount = false, itemCountAccessor = null) {\n const idMap = {};\n const views = (items || []).map((item, idx) => {\n const itemKey = item.id ?? item.ID ?? item.groupID ?? idx;\n const menuStructureId = `${idPrefix}-${itemKey}`;\n\n // compute optional count using accessor\n let itemCount = null;\n if (showItemCount && typeof itemCountAccessor === 'function') {\n try {\n const cnt = itemCountAccessor(item);\n if (cnt !== undefined && cnt !== null) {\n itemCount = cnt;\n }\n } catch (e) {\n }\n }\n\n idMap[menuStructureId] = item;\n item.__menuStructureId = menuStructureId;\n item.__itemKey = itemKey;\n\n const parametersObj = { FluentIcon: 'PageListIcon', PageId: '', defaultDisplay: 'expanded' };\n if (itemCount !== null && itemCount !== undefined) {\n parametersObj.itemCount = itemCount;\n }\n\n return {\n menuStructureId,\n menuItemInstance: {\n menuItemInstanceId: `${idPrefix}-item-${itemKey}`,\n clusterId: null,\n menuItemId: null,\n name: item.name ?? '',\n parameters: JSON.stringify(parametersObj),\n isActive: true,\n roleIds: [],\n groupIds: [],\n tenantSsoId: null,\n parentMenuItemInstanceId: null,\n items: null,\n },\n title: item.name ?? '',\n order: idx,\n parentId: null,\n unsubscribed: false,\n menuItemInstanceStructures: [],\n };\n });\n\n const innerMenu = {\n // set the inner menu name only when client provided a menuTitle; leave blank when not provided\n name: menuTitle ? menuTitle : '',\n menuItemInstanceStructureViews: views,\n };\n\n return { innerMenu, idMap };\n}\n\nconst CustomMenuPage = ({\n items = [],\n className = '',\n menuTitle,\n mainContent: clientMainContent,\n idPrefix = 'custom',\n showItemCount = false,\n itemCountAccessor = null,\n allowMissingPageParam = false,\n searchParamsTransformer = null,\n}) => {\n const classes = useStyles();\n\n // FIX: Memoize this so 'innerMenu' reference doesn't change on every render,\n // preventing infinite loops in MenuPage useEffects.\n const { innerMenu, idMap } = useMemo(() =>\n buildInnerMenuFromItems(items, menuTitle, idPrefix, showItemCount, itemCountAccessor),\n [items, menuTitle, idPrefix, showItemCount, itemCountAccessor]\n );\n\n // Expect client application to provide mainContent. If not provided, render an empty container.\n const clientContent = clientMainContent\n ? ({ selectedNode, menuItemsList }) =>\n clientMainContent({ selectedNode, menuItemsList, idMap, items, classes, className })\n : ({ selectedNode, menuItemsList }) => <div className={`${classes.root} ${className}`} />;\n\n const composedMainContent = ({ selectedNode, menuItemsList }) => (\n <div className={`${classes.root} ${className}`}>\n {clientContent({ selectedNode, menuItemsList })}\n </div>\n );\n\n return (\n <MenuPage\n innerMenuOverride={innerMenu}\n mainContent={composedMainContent}\n menuTitle={menuTitle}\n allowMissingPageParam={allowMissingPageParam}\n searchParamsTransformer={searchParamsTransformer}\n />\n );\n};\n\nCustomMenuPage.propTypes = {\n items: PropTypes.array,\n className: PropTypes.string,\n menuTitle: PropTypes.string,\n mainContent: PropTypes.func,\n idPrefix: PropTypes.string,\n showItemCount: PropTypes.bool,\n itemCountAccessor: PropTypes.func,\n allowMissingPageParam: PropTypes.bool,\n searchParamsTransformer: PropTypes.func,\n};\n\nexport default CustomMenuPage;\n"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAW,WAAU,EACrC,MAAM;CACJ,UAAU;CACV,SAAS,MAAM,QAAQ,EAAE;CAC1B,EACF,EAAE;AAGH,SAAS,wBAAwB,QAAQ,EAAE,EAAE,WAAW,WAAW,UAAU,gBAAgB,OAAO,oBAAoB,MAAM;CAC5H,MAAM,QAAQ,EAAE;CAChB,MAAM,SAAS,SAAS,EAAE,EAAE,KAAK,MAAM,QAAQ;EAC7C,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM,KAAK,WAAW;EACtD,MAAM,kBAAkB,GAAG,SAAS,GAAG;EAGvC,IAAI,YAAY;AAChB,MAAI,iBAAiB,OAAO,sBAAsB,WAChD,KAAI;GACF,MAAM,MAAM,kBAAkB,KAAK;AACnC,OAAI,QAAQ,UAAa,QAAQ,KAC/B,aAAY;WAEP,GAAG;AAId,QAAM,mBAAmB;AACzB,OAAK,oBAAoB;AACzB,OAAK,YAAY;EAEjB,MAAM,gBAAgB;GAAE,YAAY;GAAgB,QAAQ;GAAI,gBAAgB;GAAY;AAC5F,MAAI,cAAc,QAAQ,cAAc,OACtC,eAAc,YAAY;AAG5B,SAAO;GACL;GACA,kBAAkB;IAChB,oBAAoB,GAAG,SAAS,QAAQ;IACxC,WAAW;IACX,YAAY;IACZ,MAAM,KAAK,QAAQ;IACnB,YAAY,KAAK,UAAU,cAAc;IACzC,UAAU;IACV,SAAS,EAAE;IACX,UAAU,EAAE;IACZ,aAAa;IACb,0BAA0B;IAC1B,OAAO;IACR;GACD,OAAO,KAAK,QAAQ;GACpB,OAAO;GACP,UAAU;GACV,cAAc;GACd,4BAA4B,EAAE;GAC/B;GACD;AAQF,QAAO;EAAE,WANS;GAEhB,MAAM,YAAY,YAAY;GAC9B,gCAAgC;GACjC;EAEmB;EAAO;;AAG7B,MAAM,kBAAkB,EACtB,QAAQ,EAAE,EACV,YAAY,IACZ,WACA,aAAa,mBACb,WAAW,UACX,gBAAgB,OAChB,oBAAoB,MACpB,wBAAwB,OACxB,0BAA0B,WACtB;CACJ,MAAM,UAAU,WAAW;CAI3B,MAAM,EAAE,WAAW,UAAU,cAC3B,wBAAwB,OAAO,WAAW,UAAU,eAAe,kBAAkB,EACrF;EAAC;EAAO;EAAW;EAAU;EAAe;EAAkB,CAC/D;CAGD,MAAM,gBAAgB,qBACjB,EAAE,cAAc,oBACf,kBAAkB;EAAE;EAAc;EAAe;EAAO;EAAO;EAAS;EAAW,CAAC,IACrF,EAAE,cAAc,oBAAoB,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,cAAe;CAE3F,MAAM,uBAAuB,EAAE,cAAc,oBAC3C,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,eAChC,cAAc;EAAE;EAAc;EAAe,CAAC,CAC3C;AAGR,QACE,oCAACA;EACC,mBAAmB;EACnB,aAAa;EACF;EACY;EACE;GACzB;;AAIN,eAAe,YAAY;CACzB,OAAO,UAAU;CACjB,WAAW,UAAU;CACrB,WAAW,UAAU;CACrB,aAAa,UAAU;CACvB,UAAU,UAAU;CACpB,eAAe,UAAU;CACzB,mBAAmB,UAAU;CAC7B,uBAAuB,UAAU;CACjC,yBAAyB,UAAU;CACpC;AAED,6BAAe"}
@@ -1,6 +1,6 @@
1
1
  import { t as getAccessToken } from "./apiHelpers-WIR8pqy0.js";
2
2
  import { n as UdpPageEnums } from "./pageEnums-DHCYa0ey.js";
3
- import { h as MenuItemEnums, i as DeviceTypeEnums } from "./unitySystemEnums-e5F9Jr7m.js";
3
+ import { h as MenuItemEnums, i as DeviceTypeEnums } from "./unitySystemEnums-CZDCsD5t.js";
4
4
  import * as Icons from "@fluentui/react-icons";
5
5
  import { isDesktop, isMobileOnly, isTablet } from "react-device-detect";
6
6
 
@@ -71,4 +71,4 @@ const getRouteRolesMapAndMenuActiveMap = (menu) => {
71
71
 
72
72
  //#endregion
73
73
  export { getRouteRolesMapAndMenuActiveMap as n, getMenuItemsRecursively as t };
74
- //# sourceMappingURL=menuUtilities-B6z02FRb.js.map
74
+ //# sourceMappingURL=menuUtilities-Da5uVIJ8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menuUtilities-B6z02FRb.js","names":[],"sources":["../src/utilities/menus/menuUtilities.js"],"sourcesContent":["import * as Icons from '@fluentui/react-icons';\nimport { UdpPageEnums } from '../../enums/pageEnums';\nimport { isMobileOnly, isTablet, isDesktop } from 'react-device-detect';\nimport { DeviceTypeEnums,MenuItemEnums } from '../../enums/unitySystemEnums';\nimport { getAccessToken } from '../apiHelpers';\nexport const getMenuItemsRecursively = (\n menuItems,\n activeOnly,\n user,\n checkDeviceSize = true\n) => {\n return menuItems.reduce((formattedItems, item) => {\n try {\n if (activeOnly && !item.menuItemInstance.isActive) {\n return formattedItems;\n }\n const parameters = JSON.parse(item.menuItemInstance.parameters);\n const {\n FluentIcon,\n WorkFlowIcon,\n AppIcon,\n Label,\n Slug,\n RedirectURL,\n AppendTokenToURL,\n DevicesHiddenOn,\n appendCurrentTenant,\n ...otherParams\n } = parameters;\n let redirectInfo = '';\n if (RedirectURL) {\n redirectInfo = RedirectURL;\n if (appendCurrentTenant) {\n redirectInfo = `${RedirectURL}?tenantId=${\n user?.currentTenantId || ''\n }`;\n }\n }\n const formattedParameters = {\n id: item.menuItemInstance.menuItemInstanceId,\n label: Label ?? '',\n link: getFormattedSlug(Slug, { ...otherParams }) ?? '',\n redirectInfo: redirectInfo,\n getAccessToken:\n getAccessToken && AppendTokenToURL ? getAccessToken : null,\n menuItemId: item.menuItemInstance.menuItemId,\n menuStructureId: item.menuStructureId,\n parentId: item.parentId,\n productId: item.menuItemInstance.productId,\n isActive: item.menuItemInstance.isActive,\n roleIds: item.menuItemInstance.roleIds,\n tenantSsoId: item?.menuItemInstance?.tenantSsoId,\n devicesHiddenOn: DevicesHiddenOn || [],\n params: { ...otherParams }\n };\n\n let iconName = '';\n if (FluentIcon) {\n iconName = FluentIcon;\n } else if (WorkFlowIcon) {\n iconName = WorkFlowIcon;\n }\n formattedParameters.icon = iconName ? Icons[iconName] : null;\n formattedParameters.iconName = iconName ? iconName : null;\n\n formattedParameters['items'] = item.menuItemInstanceStructures.length\n ? getMenuItemsRecursively(\n item.menuItemInstanceStructures,\n activeOnly,\n user,\n getAccessToken,\n checkDeviceSize\n )\n : [];\n if (checkDeviceSize) {\n if (\n !(\n isDesktop &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Desktop\n )\n ) &&\n !(\n isTablet &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Tablet\n )\n ) &&\n !(\n isMobileOnly &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Mobile\n )\n )\n ) {\n formattedItems.push(formattedParameters);\n }\n } else {\n formattedItems.push(formattedParameters);\n }\n } catch {\n // catching parse error\n }\n return formattedItems;\n }, []);\n};\n\nconst getFormattedSlug = (slug, params) => {\n let formattedSlug = slug;\n if (params?.PageId === UdpPageEnums.Udp_Maintenance_Engine_Page) {\n formattedSlug = `${slug}${\n params?.entityName ? `?entityName=${params?.entityName}` : ''\n }`;\n } else if (params?.PageId === UdpPageEnums.Udp_Data_Browser_Page) {\n formattedSlug = `${slug}?queryId=${params?.queryId}`;\n }\n\n return formattedSlug;\n};\n\nexport const getRouteRolesMapAndMenuActiveMap = (menu) => {\n const updatedRolesMap = new Map()\n const updatedisMenuActiveMap = new Map()\n menu[0].menuItemInstanceStructureViews.map((menuItemInstanceStructureView) => {\n let menuItemInstance = menuItemInstanceStructureView.menuItemInstance\n if (menuItemInstance.menuItemId == MenuItemEnums.Route) {\n try {\n const menuparams = JSON.parse(menuItemInstance.parameters)\n const slug = menuparams?.Slug;\n updatedRolesMap.set(slug, menuItemInstance.roleIds)\n updatedisMenuActiveMap.set(slug, menuItemInstance.isActive)\n } catch (e) {\n console.error(\"Failed to parse menu item parameters\", e);\n }\n }\n })\n return {rolesMap: updatedRolesMap, menuActiveMap: updatedisMenuActiveMap}\n}\n"],"mappings":";;;;;;;AAKA,MAAa,2BACX,WACA,YACA,MACA,kBAAkB,SACf;AACH,QAAO,UAAU,QAAQ,gBAAgB,SAAS;AAChD,MAAI;AACF,OAAI,cAAc,CAAC,KAAK,iBAAiB,SACvC,QAAO;GAGT,MAAM,EACJ,YACA,cACA,SACA,OACA,MACA,aACA,kBACA,iBACA,qBACA,GAAG,gBAXc,KAAK,MAAM,KAAK,iBAAiB,WAAW;GAa/D,IAAI,eAAe;AACnB,OAAI,aAAa;AACf,mBAAe;AACf,QAAI,oBACF,gBAAe,GAAG,YAAY,YAC5B,MAAM,mBAAmB;;GAI/B,MAAM,sBAAsB;IAC1B,IAAI,KAAK,iBAAiB;IAC1B,OAAO,SAAS;IAChB,MAAM,iBAAiB,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI;IACtC;IACd,gBACE,kBAAkB,mBAAmB,iBAAiB;IACxD,YAAY,KAAK,iBAAiB;IAClC,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,WAAW,KAAK,iBAAiB;IACjC,UAAU,KAAK,iBAAiB;IAChC,SAAS,KAAK,iBAAiB;IAC/B,aAAa,MAAM,kBAAkB;IACrC,iBAAiB,mBAAmB,EAAE;IACtC,QAAQ,EAAE,GAAG,aAAa;IAC3B;GAED,IAAI,WAAW;AACf,OAAI,WACF,YAAW;YACF,aACT,YAAW;AAEb,uBAAoB,OAAO,WAAW,MAAM,YAAY;AACxD,uBAAoB,WAAW,WAAW,WAAW;AAErD,uBAAoB,WAAW,KAAK,2BAA2B,SAC3D,wBACE,KAAK,4BACL,YACA,MACA,gBACA,gBACD,GACD,EAAE;AACN,OAAI,iBACF;QACE,EACE,aACA,qBAAqB,iBAAiB,SACpC,gBAAgB,QACjB,KAEH,EACE,YACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,KAEH,EACE,gBACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,EAGH,gBAAe,KAAK,oBAAoB;SAG1C,gBAAe,KAAK,oBAAoB;UAEpC;AAGR,SAAO;IACN,EAAE,CAAC;;AAGR,MAAM,oBAAoB,MAAM,WAAW;CACzC,IAAI,gBAAgB;AACpB,KAAI,QAAQ,WAAW,aAAa,4BAClC,iBAAgB,GAAG,OACjB,QAAQ,aAAa,eAAe,QAAQ,eAAe;UAEpD,QAAQ,WAAW,aAAa,sBACzC,iBAAgB,GAAG,KAAK,WAAW,QAAQ;AAG7C,QAAO;;AAGT,MAAa,oCAAoC,SAAS;CACxD,MAAM,kCAAkB,IAAI,KAAK;CACjC,MAAM,yCAAyB,IAAI,KAAK;AACxC,MAAK,GAAG,+BAA+B,KAAK,kCAAkC;EAC5E,IAAI,mBAAmB,8BAA8B;AACrD,MAAI,iBAAiB,cAAc,cAAc,MAC/C,KAAI;GAEF,MAAM,OADa,KAAK,MAAM,iBAAiB,WAAW,EACjC;AACzB,mBAAgB,IAAI,MAAM,iBAAiB,QAAQ;AACnD,0BAAuB,IAAI,MAAM,iBAAiB,SAAS;WACpD,GAAG;AACV,WAAQ,MAAM,wCAAwC,EAAE;;GAG5D;AACF,QAAO;EAAC,UAAU;EAAiB,eAAe;EAAuB"}
1
+ {"version":3,"file":"menuUtilities-Da5uVIJ8.js","names":[],"sources":["../src/utilities/menus/menuUtilities.js"],"sourcesContent":["import * as Icons from '@fluentui/react-icons';\nimport { UdpPageEnums } from '../../enums/pageEnums';\nimport { isMobileOnly, isTablet, isDesktop } from 'react-device-detect';\nimport { DeviceTypeEnums,MenuItemEnums } from '../../enums/unitySystemEnums';\nimport { getAccessToken } from '../apiHelpers';\nexport const getMenuItemsRecursively = (\n menuItems,\n activeOnly,\n user,\n checkDeviceSize = true\n) => {\n return menuItems.reduce((formattedItems, item) => {\n try {\n if (activeOnly && !item.menuItemInstance.isActive) {\n return formattedItems;\n }\n const parameters = JSON.parse(item.menuItemInstance.parameters);\n const {\n FluentIcon,\n WorkFlowIcon,\n AppIcon,\n Label,\n Slug,\n RedirectURL,\n AppendTokenToURL,\n DevicesHiddenOn,\n appendCurrentTenant,\n ...otherParams\n } = parameters;\n let redirectInfo = '';\n if (RedirectURL) {\n redirectInfo = RedirectURL;\n if (appendCurrentTenant) {\n redirectInfo = `${RedirectURL}?tenantId=${\n user?.currentTenantId || ''\n }`;\n }\n }\n const formattedParameters = {\n id: item.menuItemInstance.menuItemInstanceId,\n label: Label ?? '',\n link: getFormattedSlug(Slug, { ...otherParams }) ?? '',\n redirectInfo: redirectInfo,\n getAccessToken:\n getAccessToken && AppendTokenToURL ? getAccessToken : null,\n menuItemId: item.menuItemInstance.menuItemId,\n menuStructureId: item.menuStructureId,\n parentId: item.parentId,\n productId: item.menuItemInstance.productId,\n isActive: item.menuItemInstance.isActive,\n roleIds: item.menuItemInstance.roleIds,\n tenantSsoId: item?.menuItemInstance?.tenantSsoId,\n devicesHiddenOn: DevicesHiddenOn || [],\n params: { ...otherParams }\n };\n\n let iconName = '';\n if (FluentIcon) {\n iconName = FluentIcon;\n } else if (WorkFlowIcon) {\n iconName = WorkFlowIcon;\n }\n formattedParameters.icon = iconName ? Icons[iconName] : null;\n formattedParameters.iconName = iconName ? iconName : null;\n\n formattedParameters['items'] = item.menuItemInstanceStructures.length\n ? getMenuItemsRecursively(\n item.menuItemInstanceStructures,\n activeOnly,\n user,\n getAccessToken,\n checkDeviceSize\n )\n : [];\n if (checkDeviceSize) {\n if (\n !(\n isDesktop &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Desktop\n )\n ) &&\n !(\n isTablet &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Tablet\n )\n ) &&\n !(\n isMobileOnly &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Mobile\n )\n )\n ) {\n formattedItems.push(formattedParameters);\n }\n } else {\n formattedItems.push(formattedParameters);\n }\n } catch {\n // catching parse error\n }\n return formattedItems;\n }, []);\n};\n\nconst getFormattedSlug = (slug, params) => {\n let formattedSlug = slug;\n if (params?.PageId === UdpPageEnums.Udp_Maintenance_Engine_Page) {\n formattedSlug = `${slug}${\n params?.entityName ? `?entityName=${params?.entityName}` : ''\n }`;\n } else if (params?.PageId === UdpPageEnums.Udp_Data_Browser_Page) {\n formattedSlug = `${slug}?queryId=${params?.queryId}`;\n }\n\n return formattedSlug;\n};\n\nexport const getRouteRolesMapAndMenuActiveMap = (menu) => {\n const updatedRolesMap = new Map()\n const updatedisMenuActiveMap = new Map()\n menu[0].menuItemInstanceStructureViews.map((menuItemInstanceStructureView) => {\n let menuItemInstance = menuItemInstanceStructureView.menuItemInstance\n if (menuItemInstance.menuItemId == MenuItemEnums.Route) {\n try {\n const menuparams = JSON.parse(menuItemInstance.parameters)\n const slug = menuparams?.Slug;\n updatedRolesMap.set(slug, menuItemInstance.roleIds)\n updatedisMenuActiveMap.set(slug, menuItemInstance.isActive)\n } catch (e) {\n console.error(\"Failed to parse menu item parameters\", e);\n }\n }\n })\n return {rolesMap: updatedRolesMap, menuActiveMap: updatedisMenuActiveMap}\n}\n"],"mappings":";;;;;;;AAKA,MAAa,2BACX,WACA,YACA,MACA,kBAAkB,SACf;AACH,QAAO,UAAU,QAAQ,gBAAgB,SAAS;AAChD,MAAI;AACF,OAAI,cAAc,CAAC,KAAK,iBAAiB,SACvC,QAAO;GAGT,MAAM,EACJ,YACA,cACA,SACA,OACA,MACA,aACA,kBACA,iBACA,qBACA,GAAG,gBAXc,KAAK,MAAM,KAAK,iBAAiB,WAAW;GAa/D,IAAI,eAAe;AACnB,OAAI,aAAa;AACf,mBAAe;AACf,QAAI,oBACF,gBAAe,GAAG,YAAY,YAC5B,MAAM,mBAAmB;;GAI/B,MAAM,sBAAsB;IAC1B,IAAI,KAAK,iBAAiB;IAC1B,OAAO,SAAS;IAChB,MAAM,iBAAiB,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI;IACtC;IACd,gBACE,kBAAkB,mBAAmB,iBAAiB;IACxD,YAAY,KAAK,iBAAiB;IAClC,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,WAAW,KAAK,iBAAiB;IACjC,UAAU,KAAK,iBAAiB;IAChC,SAAS,KAAK,iBAAiB;IAC/B,aAAa,MAAM,kBAAkB;IACrC,iBAAiB,mBAAmB,EAAE;IACtC,QAAQ,EAAE,GAAG,aAAa;IAC3B;GAED,IAAI,WAAW;AACf,OAAI,WACF,YAAW;YACF,aACT,YAAW;AAEb,uBAAoB,OAAO,WAAW,MAAM,YAAY;AACxD,uBAAoB,WAAW,WAAW,WAAW;AAErD,uBAAoB,WAAW,KAAK,2BAA2B,SAC3D,wBACE,KAAK,4BACL,YACA,MACA,gBACA,gBACD,GACD,EAAE;AACN,OAAI,iBACF;QACE,EACE,aACA,qBAAqB,iBAAiB,SACpC,gBAAgB,QACjB,KAEH,EACE,YACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,KAEH,EACE,gBACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,EAGH,gBAAe,KAAK,oBAAoB;SAG1C,gBAAe,KAAK,oBAAoB;UAEpC;AAGR,SAAO;IACN,EAAE,CAAC;;AAGR,MAAM,oBAAoB,MAAM,WAAW;CACzC,IAAI,gBAAgB;AACpB,KAAI,QAAQ,WAAW,aAAa,4BAClC,iBAAgB,GAAG,OACjB,QAAQ,aAAa,eAAe,QAAQ,eAAe;UAEpD,QAAQ,WAAW,aAAa,sBACzC,iBAAgB,GAAG,KAAK,WAAW,QAAQ;AAG7C,QAAO;;AAGT,MAAa,oCAAoC,SAAS;CACxD,MAAM,kCAAkB,IAAI,KAAK;CACjC,MAAM,yCAAyB,IAAI,KAAK;AACxC,MAAK,GAAG,+BAA+B,KAAK,kCAAkC;EAC5E,IAAI,mBAAmB,8BAA8B;AACrD,MAAI,iBAAiB,cAAc,cAAc,MAC/C,KAAI;GAEF,MAAM,OADa,KAAK,MAAM,iBAAiB,WAAW,EACjC;AACzB,mBAAgB,IAAI,MAAM,iBAAiB,QAAQ;AACnD,0BAAuB,IAAI,MAAM,iBAAiB,SAAS;WACpD,GAAG;AACV,WAAQ,MAAM,wCAAwC,EAAE;;GAG5D;AACF,QAAO;EAAC,UAAU;EAAiB,eAAe;EAAuB"}
@@ -1,3 +1,3 @@
1
- import { t as NotesScreen } from "../NotesScreen-DE3fhpjW.js";
1
+ import { t as NotesScreen } from "../NotesScreen-DQatppnX.js";
2
2
 
3
3
  export { NotesScreen };
@@ -5,8 +5,8 @@ import { t as useTenant } from "./useTenant-CGaZEBEJ.js";
5
5
  import { n as useDevicePixelRatio, t as useGravatar } from "./useGravatar-BTbYdA_d.js";
6
6
  import { t as clearStoredPath } from "./LocalRedirectUrlStorage-Bxz8TI-X.js";
7
7
  import { t as clearStoredExternalPath } from "./ExternalRedirectUrlStorage-BM-nmI4x.js";
8
- import { a as useUserActions, r as TenantSelect } from "./TenantProvider-C-3eqCA3.js";
9
- import { n as useSingleLogout } from "./auth-DX4sNV3x.js";
8
+ import { a as useUserActions, r as TenantSelect } from "./TenantProvider-B_fwoUi4.js";
9
+ import { n as useSingleLogout } from "./auth-Bq7vHax4.js";
10
10
  import React, { cloneElement, forwardRef, useCallback } from "react";
11
11
  import { Avatar, Button, CardContent, IconButton, Menu, Typography, makeStyles } from "@material-ui/core";
12
12
  import { Link as Link$1, useHistory } from "react-router-dom";
@@ -214,4 +214,4 @@ const UserProfileMenuWrapper = ({ returnTo }) => {
214
214
 
215
215
  //#endregion
216
216
  export { FluentProfileMenuCard as n, UserProfileMenuWrapper as t };
217
- //# sourceMappingURL=profile-CXlla7mZ.js.map
217
+ //# sourceMappingURL=profile-hGhjTafH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-CXlla7mZ.js","names":["useStyles","useHistory","useHistoryNoType","useStyles","UserAvatar","UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps>","Link","MenuOpener","UserAvatar"],"sources":["../src/shell/ui/profile/MenuOpener.jsx","../src/shell/ui/profile/UserAvatar.jsx","../src/shell/ui/profile/FluentProfileMenuCard.tsx","../src/shell/ui/profile/UserProfileMenuWrapper.tsx"],"sourcesContent":["import { Menu } from '@material-ui/core';\nimport {\n bindMenu,\n bindTrigger,\n usePopupState,\n} from 'material-ui-popup-state/hooks';\nimport React, {\n cloneElement,\n ElementType,\n FC,\n ReactElement,\n ReactNode,\n useCallback,\n} from 'react';\n\n/**\n * Helper to handle open a menu when a button is clicked\n */\nexport const MenuOpener = ({\n MenuComponent = Menu,\n name,\n button,\n menuProps,\n children,\n}) => {\n /* @fixme useId as string to bypass error */\n const popupId = 'useId(name)';\n const popupState = usePopupState({ variant: 'popover', popupId });\n const { close } = popupState;\n\n const click = useCallback(\n e => {\n const isButton = e.target.matches(\n 'a, button, input[type=\"button\"], input[type=\"image\"], [role=\"button\"], [role=\"link\"], a *, button *, [role=\"button\"] *, [role=\"link\"] *'\n );\n const isDropdownButton = e.target.matches(\n '.MuiAutocomplete-endAdornment *'\n );\n\n const closePopup = isButton && !isDropdownButton;\n\n if (closePopup) {\n close();\n }\n },\n [close]\n );\n\n return (\n <>\n {cloneElement(button, bindTrigger(popupState))}\n <MenuComponent {...menuProps} {...bindMenu(popupState)} onClick={click}>\n {children}\n </MenuComponent>\n </>\n );\n};\n\nexport default MenuOpener;\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { forwardRef, useCallback } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { clearStoredPath } from '../../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../../utilities/auth/users';\nimport { User } from '../../../utilities/auth';\n// @ts-expect-error RRDv5 types are incompatible with react 18\nimport { useHistory as useHistoryNoType} from 'react-router-dom';\nimport { Tenant } from '../../../utilities';\nimport {History} from 'history';\nimport { TenantSelect } from '../../../utilities/tenant';\n\nconst useHistory = useHistoryNoType as () => History;\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\ninterface FluentProfileMenuCardProps {\n userTenants: Tenant[];\n currentTenant: Tenant | null;\n user: User | null;\n setUser: (user: User | null) => void;\n logout: () => void;\n unityUrl?: string;\n displayProfileButton?: boolean;\n}\n\nexport const FluentProfileMenuCard = forwardRef<HTMLDivElement, FluentProfileMenuCardProps>((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n } = props;\n const history = useHistory();\n const redirectToHome = useCallback(() => history.push('/'), [history]);\n // eslint-disable-next-line\n const { t } = useTranslation() as {t: (key: string) => string};\n const { changeTenant } = useUserActions();\n\n const handleTenantChange = useCallback(\n (tenant: Tenant) => {\n storeTenant(tenant.tenantId);\n changeTenant(tenant.tenantId);\n redirectToHome();\n },\n [changeTenant, redirectToHome]\n );\n\n\n\n // const handleProfileClick = () => {\n // // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n // if(ConfigService.config.UNITY_PRODUCT_ID === '1') history.push('/profile')\n // else window.open(unityUrl + '/profile');\n\n // }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <TenantSelect\n className={classes.currentTenant}\n id='current-tenant'\n tenants={userTenants}\n value={currentTenant}\n onTenantChange={handleTenantChange}\n label={t('Current Tenant')}\n recordIdPrefix='udpRecord-FluentProfileMenuCard'\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n // @ts-expect-error Custom automation attribute not typed by MUI\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n","import React, { FC } from 'react';\nimport { Button, makeStyles, IconButton } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport MenuOpener from './MenuOpener';\nimport UserAvatar from './UserAvatar';\nimport { FluentProfileMenuCard } from './FluentProfileMenuCard';\nimport { ConfigService } from '../../../configService';\nimport { useSingleLogout, useUserActions } from '../../../utilities/auth';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n avatar: {\n background: theme.palette.secondary.main\n }\n}));\n\n\n\nexport interface UserProfileMenuWrapperProps {\n returnTo?: string;\n}\n\nexport const UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps> = ({\n returnTo\n}) => {\n const classes = useStyles();\n const user = useUser();\n const singleLogout = useSingleLogout();\n const { setUser } = useUserActions();\n const tenantContext = useTenant();\n\n const currentTenant = tenantContext?.activeTenant ?? null;\n const availableTenants =\n tenantContext?.filteredTenantsList ??\n tenantContext?.tenantsList ??\n [];\n\n const enforcedTenantId = ConfigService.config.UNITY_TENANT_ID;\n\n const profileMenuTenants =\n !enforcedTenantId || enforcedTenantId === ''\n ? availableTenants\n : availableTenants.filter(\n (option) => option.tenantId === enforcedTenantId\n );\n\n if (!user) {\n const fallbackPath =\n returnTo ??\n (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n return (\n <div className={classes.root}>\n <Button\n component={Link as React.ElementType} // react-router-dom@5 is incompatible with @types/react@18 so we have to assert the type manually\n to={{\n pathname: '/login',\n state: { returnTo: fallbackPath ?? '/' }\n }}\n color='inherit'\n >\n Sign in\n </Button>\n </div>\n );\n }\n\n return (\n <div className={classes.root}>\n <MenuOpener\n name = \"udp-user-profile-popover\"\n button={\n <IconButton>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='toolbar'\n className={classes.avatar}\n />\n </IconButton>\n }\n menuProps={{\n keepMounted: true,\n getContentAnchorEl: null,\n variant: 'menu',\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'right' }\n }}\n >\n <FluentProfileMenuCard\n userTenants={profileMenuTenants}\n currentTenant={currentTenant}\n user={user}\n setUser={setUser}\n logout={singleLogout}\n unityUrl={ConfigService.config.UNITY_URL}\n />\n </MenuOpener>\n </div>\n );\n};\n\nexport default UserProfileMenuWrapper;\n"],"mappings":"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"}
1
+ {"version":3,"file":"profile-hGhjTafH.js","names":["useStyles","useHistory","useHistoryNoType","useStyles","UserAvatar","UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps>","Link","MenuOpener","UserAvatar"],"sources":["../src/shell/ui/profile/MenuOpener.jsx","../src/shell/ui/profile/UserAvatar.jsx","../src/shell/ui/profile/FluentProfileMenuCard.tsx","../src/shell/ui/profile/UserProfileMenuWrapper.tsx"],"sourcesContent":["import { Menu } from '@material-ui/core';\nimport {\n bindMenu,\n bindTrigger,\n usePopupState,\n} from 'material-ui-popup-state/hooks';\nimport React, {\n cloneElement,\n ElementType,\n FC,\n ReactElement,\n ReactNode,\n useCallback,\n} from 'react';\n\n/**\n * Helper to handle open a menu when a button is clicked\n */\nexport const MenuOpener = ({\n MenuComponent = Menu,\n name,\n button,\n menuProps,\n children,\n}) => {\n /* @fixme useId as string to bypass error */\n const popupId = 'useId(name)';\n const popupState = usePopupState({ variant: 'popover', popupId });\n const { close } = popupState;\n\n const click = useCallback(\n e => {\n const isButton = e.target.matches(\n 'a, button, input[type=\"button\"], input[type=\"image\"], [role=\"button\"], [role=\"link\"], a *, button *, [role=\"button\"] *, [role=\"link\"] *'\n );\n const isDropdownButton = e.target.matches(\n '.MuiAutocomplete-endAdornment *'\n );\n\n const closePopup = isButton && !isDropdownButton;\n\n if (closePopup) {\n close();\n }\n },\n [close]\n );\n\n return (\n <>\n {cloneElement(button, bindTrigger(popupState))}\n <MenuComponent {...menuProps} {...bindMenu(popupState)} onClick={click}>\n {children}\n </MenuComponent>\n </>\n );\n};\n\nexport default MenuOpener;\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { forwardRef, useCallback } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { clearStoredPath } from '../../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../../utilities/auth/users';\nimport { User } from '../../../utilities/auth';\n// @ts-expect-error RRDv5 types are incompatible with react 18\nimport { useHistory as useHistoryNoType} from 'react-router-dom';\nimport { Tenant } from '../../../utilities';\nimport {History} from 'history';\nimport { TenantSelect } from '../../../utilities/tenant';\n\nconst useHistory = useHistoryNoType as () => History;\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\ninterface FluentProfileMenuCardProps {\n userTenants: Tenant[];\n currentTenant: Tenant | null;\n user: User | null;\n setUser: (user: User | null) => void;\n logout: () => void;\n unityUrl?: string;\n displayProfileButton?: boolean;\n}\n\nexport const FluentProfileMenuCard = forwardRef<HTMLDivElement, FluentProfileMenuCardProps>((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n } = props;\n const history = useHistory();\n const redirectToHome = useCallback(() => history.push('/'), [history]);\n // eslint-disable-next-line\n const { t } = useTranslation() as {t: (key: string) => string};\n const { changeTenant } = useUserActions();\n\n const handleTenantChange = useCallback(\n (tenant: Tenant) => {\n storeTenant(tenant.tenantId);\n changeTenant(tenant.tenantId);\n redirectToHome();\n },\n [changeTenant, redirectToHome]\n );\n\n\n\n // const handleProfileClick = () => {\n // // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n // if(ConfigService.config.UNITY_PRODUCT_ID === '1') history.push('/profile')\n // else window.open(unityUrl + '/profile');\n\n // }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <TenantSelect\n className={classes.currentTenant}\n id='current-tenant'\n tenants={userTenants}\n value={currentTenant}\n onTenantChange={handleTenantChange}\n label={t('Current Tenant')}\n recordIdPrefix='udpRecord-FluentProfileMenuCard'\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n // @ts-expect-error Custom automation attribute not typed by MUI\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n","import React, { FC } from 'react';\nimport { Button, makeStyles, IconButton } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport MenuOpener from './MenuOpener';\nimport UserAvatar from './UserAvatar';\nimport { FluentProfileMenuCard } from './FluentProfileMenuCard';\nimport { ConfigService } from '../../../configService';\nimport { useSingleLogout, useUserActions } from '../../../utilities/auth';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n avatar: {\n background: theme.palette.secondary.main\n }\n}));\n\n\n\nexport interface UserProfileMenuWrapperProps {\n returnTo?: string;\n}\n\nexport const UserProfileMenuWrapper: FC<UserProfileMenuWrapperProps> = ({\n returnTo\n}) => {\n const classes = useStyles();\n const user = useUser();\n const singleLogout = useSingleLogout();\n const { setUser } = useUserActions();\n const tenantContext = useTenant();\n\n const currentTenant = tenantContext?.activeTenant ?? null;\n const availableTenants =\n tenantContext?.filteredTenantsList ??\n tenantContext?.tenantsList ??\n [];\n\n const enforcedTenantId = ConfigService.config.UNITY_TENANT_ID;\n\n const profileMenuTenants =\n !enforcedTenantId || enforcedTenantId === ''\n ? availableTenants\n : availableTenants.filter(\n (option) => option.tenantId === enforcedTenantId\n );\n\n if (!user) {\n const fallbackPath =\n returnTo ??\n (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n return (\n <div className={classes.root}>\n <Button\n component={Link as React.ElementType} // react-router-dom@5 is incompatible with @types/react@18 so we have to assert the type manually\n to={{\n pathname: '/login',\n state: { returnTo: fallbackPath ?? '/' }\n }}\n color='inherit'\n >\n Sign in\n </Button>\n </div>\n );\n }\n\n return (\n <div className={classes.root}>\n <MenuOpener\n name = \"udp-user-profile-popover\"\n button={\n <IconButton>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='toolbar'\n className={classes.avatar}\n />\n </IconButton>\n }\n menuProps={{\n keepMounted: true,\n getContentAnchorEl: null,\n variant: 'menu',\n anchorOrigin: { vertical: 'bottom', horizontal: 'right' },\n transformOrigin: { vertical: 'top', horizontal: 'right' }\n }}\n >\n <FluentProfileMenuCard\n userTenants={profileMenuTenants}\n currentTenant={currentTenant}\n user={user}\n setUser={setUser}\n logout={singleLogout}\n unityUrl={ConfigService.config.UNITY_URL}\n />\n </MenuOpener>\n </div>\n );\n};\n\nexport default UserProfileMenuWrapper;\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { t as UdpAppProvider } from "../UdpAppProvider-XtIYbmNb.js";
1
+ import { t as UdpAppProvider } from "../UdpAppProvider-D7D0F8VO.js";
2
2
 
3
3
  export { UdpAppProvider };
@@ -1,4 +1,4 @@
1
- import { t as RemindersScreen } from "../RemindersScreen-CyT18piP.js";
2
- import { n as CompleteReminderSwitch, t as RemindersCard } from "../RemindersCard-CSJ8buYt.js";
1
+ import { t as RemindersScreen } from "../RemindersScreen-Cp7lMWrE.js";
2
+ import { n as CompleteReminderSwitch, t as RemindersCard } from "../RemindersCard-BOSGv9pc.js";
3
3
 
4
4
  export { CompleteReminderSwitch, RemindersCard, RemindersScreen };
@@ -1,3 +1,3 @@
1
- import { n as PrivateRoute, t as UdpRoutes } from "../routes-BToKqY03.js";
1
+ import { n as PrivateRoute, t as UdpRoutes } from "../routes-qV4EIuwZ.js";
2
2
 
3
3
  export { PrivateRoute, UdpRoutes };
@@ -4,7 +4,7 @@ import { t as useUser } from "./useUser-wpHGo6jU.js";
4
4
  import { t as PageLoading } from "./PageLoading-GD6E2uMU.js";
5
5
  import { t as useIsUnityAuthenticated } from "./useIsUnityAuthenticated-Cc_l9meR.js";
6
6
  import { t as PageForbiddenRoute } from "./PageForbiddenRoute-Dnm9vt8t.js";
7
- import { n as useMenuContext } from "./MenuProvider-rwBliXcV.js";
7
+ import { n as useMenuContext } from "./MenuProvider-BuTAUs0Z.js";
8
8
  import React, { Suspense, lazy, useMemo } from "react";
9
9
  import { Route, Switch } from "react-router-dom";
10
10
  import { useTranslation } from "react-i18next";
@@ -65,12 +65,12 @@ const PrivateRoute = ({ rolesMap: propRolesMap, menuActiveMap: propMenuActiveMap
65
65
 
66
66
  //#endregion
67
67
  //#region src/routes/UdpRoutes.jsx
68
- const VirtualBrowser = lazy(() => import("./VirtualBrowser-BUTWxd9P.js"));
69
- const MenuPage = lazy(() => import("./MenuPage-DP1ATpru.js"));
68
+ const VirtualBrowser = lazy(() => import("./VirtualBrowser-CcWYHhRb.js"));
69
+ const MenuPage = lazy(() => import("./MenuPage-R6mbeCuS.js"));
70
70
  const UdpPublicForm = lazy(() => import("./udp/pages/UdpFormsPublicForm/index.js"));
71
- const WorkflowContainer = lazy(() => import("./WorkflowContainer-CHmVR99E.js"));
71
+ const WorkflowContainer = lazy(() => import("./WorkflowContainer-Boj87JRI.js"));
72
72
  const PasswordResetRedirect = lazy(() => import("./PasswordResetRedirect-CqxRmE48.js"));
73
- const MyExportsPage = lazy(() => import("./MyExportsPage-DGc4Sbt9.js"));
73
+ const MyExportsPage = lazy(() => import("./MyExportsPage-DFIMneFr.js"));
74
74
  const PageNotFoundRoute = lazy(() => import("./PageNotFoundRoute-DKg6oVCt.js"));
75
75
  const UdpMaintenanceConfigPage = lazy(() => import("./udp/pages/UdpMaintenanceConfigPage/index.js"));
76
76
  const UdpMaintenanceEnginePage = lazy(() => import("./udp/pages/UdpMaintenanceEnginePage/index.js"));
@@ -79,7 +79,7 @@ const UdpTransactionsPage = lazy(() => import("./udp/pages/UdpTransactionsPage/i
79
79
  const UdpTransactionTypesPage = lazy(() => import("./udp/pages/UdpTransactionTypesPage/index.js"));
80
80
  const PageContainer = lazy(() => import("./page/PageContainer/index.js").then((module) => ({ default: module.PageContainer })));
81
81
  const Reports = lazy(() => import("./Reports-B5vRQpl0.js"));
82
- const Inquiry = lazy(() => import("./Inquiry-C1q14Yyd.js"));
82
+ const Inquiry = lazy(() => import("./Inquiry-NWBPf-o4.js"));
83
83
  const UdpRoutes = (props) => {
84
84
  const { ...other } = props;
85
85
  return /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement(PageLoading, null) }, /* @__PURE__ */ React.createElement(Switch, null, /* @__PURE__ */ React.createElement(PrivateRoute, {
@@ -152,4 +152,4 @@ const UdpRoutes = (props) => {
152
152
 
153
153
  //#endregion
154
154
  export { PrivateRoute as n, UdpRoutes as t };
155
- //# sourceMappingURL=routes-BToKqY03.js.map
155
+ //# sourceMappingURL=routes-qV4EIuwZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes-BToKqY03.js","names":["props"],"sources":["../src/routes/PrivateRoute.jsx","../src/routes/UdpRoutes.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\r\nimport { useUser } from '../utilities/auth/useUser';\r\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\r\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\r\n\r\nexport const PrivateRoute = ({ rolesMap: propRolesMap, menuActiveMap: propMenuActiveMap, ...routeProps }) => {\r\n const isAuthenticated = useIsUnityAuthenticated();\r\n const user = useUser();\r\n const { t } = useTranslation();\r\n const menuContext = useMenuContext?.();\r\n const rolesMap = menuContext?.rolesMap ?? propRolesMap;\r\n const menuActiveMap = menuContext?.menuActiveMap ?? propMenuActiveMap;\r\n const userRoles = user.roleIds;\r\n //path is passed from frontend so making sure it meets expected fromat of all lowercase, no spaces, and has format /pathname or /pathname/:param\r\n let pathAsKey = routeProps.path\r\n .toLowerCase()\r\n .replaceAll(' ', '')\r\n .replace('/', '');\r\n pathAsKey = pathAsKey.split('/:')[0];\r\n\r\n const userHasAccessToTenant = useMemo(() => {\r\n if (user?.tenantIds?.includes(user.currentTenantId)) {\r\n return true;\r\n }\r\n return false;\r\n }, [user]);\r\n\r\n const userHasRoles = useMemo(() => {\r\n if (rolesMap?.size > 0) {\r\n if (!rolesMap.has(routeProps.path)) {\r\n return true;\r\n }\r\n const routeRoles = rolesMap.get(routeProps.path);\r\n return routeRoles.every((element) => userRoles.includes(element));\r\n }\r\n return true\r\n }, [userRoles, rolesMap, routeProps.path]);\r\n\r\n const menuIsActive = useMemo(() => {\r\n if (menuActiveMap?.size > 0 && menuActiveMap.has(routeProps.path)) {\r\n return menuActiveMap.get(routeProps.path);\r\n }\r\n }, [menuActiveMap, routeProps.path]);\r\n\r\n if (!userHasAccessToTenant && isAuthenticated && user?.statusCode === 200) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have access to this tenant. Please select a different Tenant.'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (rolesMap?.has(routeProps.path) && !menuIsActive) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'Trying to access inactive menu. Please check your menu configurations'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (!user.isUnitySystemAdmin && rolesMap?.size > 0 && !userHasRoles) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have the required roles to access this page. Please contact an administrator to get access'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (isAuthenticated && user?.statusCode === 200) {\r\n return <Route {...routeProps} />;\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { Suspense, lazy } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport { UdpPageEnums } from '../enums/pageEnums';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI/feedback/PageLoading';\n\n// Lazy load route components\nconst VirtualBrowser = lazy(() =>\n import('../maintenanceEngine/virtualBrowser/VirtualBrowser')\n);\nconst MenuPage = lazy(() => import('../menuPage/MenuPage'));\nconst UdpPublicForm = lazy(() => import('../udp/pages/UdpFormsPublicForm'));\nconst WorkflowContainer = lazy(() => import('../workflow/WorkflowContainer'));\nconst PasswordResetRedirect = lazy(() =>\n import('./components/PasswordResetRedirect')\n);\nconst MyExportsPage = lazy(() => import('../udp/export/MyExportsPage'));\nconst PageNotFoundRoute = lazy(() => import('./components/PageNotFoundRoute'));\nconst UdpMaintenanceConfigPage = lazy(() =>\n import('../udp/pages/UdpMaintenanceConfigPage')\n);\nconst UdpMaintenanceEnginePage = lazy(() =>\n import('../udp/pages/UdpMaintenanceEnginePage')\n);\nconst AadCallback = lazy(() => import('../utilities/auth/AadCallback'));\n\n\nconst UdpTransactionsPage = lazy(() =>\n import('../udp/pages/UdpTransactionsPage')\n);\n\nconst UdpTransactionTypesPage = lazy(() =>\n import('../udp/pages/UdpTransactionTypesPage')\n);\n\nconst PageContainer = lazy(() =>\n import('../page/PageContainer').then(module => ({ default: module.PageContainer }))\n);\n\nconst Reports = lazy(() => import('../reports/Reports'));\n\nconst Inquiry = lazy(() => import('../inquiry/Inquiry'));\n\nexport const UdpRoutes = (props) => {\n const { ...other } = props;\n return (\n <Suspense fallback={<PageLoading />}>\n <Switch>\n <PrivateRoute\n path='/virtual/:id'\n render={(props) => <VirtualBrowser {...props} {...other} />}\n />\n <PrivateRoute\n path='/menupage/:id'\n render={(props) => <MenuPage {...props} {...other} />}\n />\n\n <Route\n path={`/page/${UdpPageEnums.Udp_Public_Forms_Page}`}\n render={(props) => <UdpPublicForm {...props} {...other} />}\n />\n <Route\n path={`/passwordresetsuccess`}\n render={(props) => <PasswordResetRedirect props={props} />}\n />\n <PrivateRoute\n path='/workflowtask/:id'\n render={(props) => <WorkflowContainer {...props} {...other} />}\n />\n <PrivateRoute\n path='/myexports'\n render={(props) => (\n <MyExportsPage\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n {...props}\n {...other}\n />\n )}\n />\n <PrivateRoute\n path='/crudbrowser'\n render={(props) => <UdpMaintenanceEnginePage {...props} />}\n />\n <PrivateRoute\n path='/tablebrowser'\n render={(props) => <UdpMaintenanceConfigPage {...props} />}\n />\n\n <Route path='/aad_callback' component={AadCallback} />\n <PrivateRoute\n path='/transactionsPage'\n render={(props) => <UdpTransactionsPage {...props} />}\n />\n <PrivateRoute\n path='/transactionTypesPage'\n render={(props) => <UdpTransactionTypesPage {...props} />}\n />\n <PrivateRoute path=\"/reports/:id\" exact component={Reports} />\n <PrivateRoute\n path=\"/inquiry/:id\"\n render={props => <Inquiry {...props} />}\n />\n <PrivateRoute\n path=\"/page/:id\"\n render={props => (\n <PageContainer fromMenu={true} {...props} />\n )}\n />\n <PrivateRoute path='*' component={PageNotFoundRoute} />\n </Switch>\n </Suspense>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"routes-qV4EIuwZ.js","names":["props"],"sources":["../src/routes/PrivateRoute.jsx","../src/routes/UdpRoutes.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\r\nimport { useUser } from '../utilities/auth/useUser';\r\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\r\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\r\n\r\nexport const PrivateRoute = ({ rolesMap: propRolesMap, menuActiveMap: propMenuActiveMap, ...routeProps }) => {\r\n const isAuthenticated = useIsUnityAuthenticated();\r\n const user = useUser();\r\n const { t } = useTranslation();\r\n const menuContext = useMenuContext?.();\r\n const rolesMap = menuContext?.rolesMap ?? propRolesMap;\r\n const menuActiveMap = menuContext?.menuActiveMap ?? propMenuActiveMap;\r\n const userRoles = user.roleIds;\r\n //path is passed from frontend so making sure it meets expected fromat of all lowercase, no spaces, and has format /pathname or /pathname/:param\r\n let pathAsKey = routeProps.path\r\n .toLowerCase()\r\n .replaceAll(' ', '')\r\n .replace('/', '');\r\n pathAsKey = pathAsKey.split('/:')[0];\r\n\r\n const userHasAccessToTenant = useMemo(() => {\r\n if (user?.tenantIds?.includes(user.currentTenantId)) {\r\n return true;\r\n }\r\n return false;\r\n }, [user]);\r\n\r\n const userHasRoles = useMemo(() => {\r\n if (rolesMap?.size > 0) {\r\n if (!rolesMap.has(routeProps.path)) {\r\n return true;\r\n }\r\n const routeRoles = rolesMap.get(routeProps.path);\r\n return routeRoles.every((element) => userRoles.includes(element));\r\n }\r\n return true\r\n }, [userRoles, rolesMap, routeProps.path]);\r\n\r\n const menuIsActive = useMemo(() => {\r\n if (menuActiveMap?.size > 0 && menuActiveMap.has(routeProps.path)) {\r\n return menuActiveMap.get(routeProps.path);\r\n }\r\n }, [menuActiveMap, routeProps.path]);\r\n\r\n if (!userHasAccessToTenant && isAuthenticated && user?.statusCode === 200) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have access to this tenant. Please select a different Tenant.'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (rolesMap?.has(routeProps.path) && !menuIsActive) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'Trying to access inactive menu. Please check your menu configurations'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (!user.isUnitySystemAdmin && rolesMap?.size > 0 && !userHasRoles) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have the required roles to access this page. Please contact an administrator to get access'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (isAuthenticated && user?.statusCode === 200) {\r\n return <Route {...routeProps} />;\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { Suspense, lazy } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport { UdpPageEnums } from '../enums/pageEnums';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI/feedback/PageLoading';\n\n// Lazy load route components\nconst VirtualBrowser = lazy(() =>\n import('../maintenanceEngine/virtualBrowser/VirtualBrowser')\n);\nconst MenuPage = lazy(() => import('../menuPage/MenuPage'));\nconst UdpPublicForm = lazy(() => import('../udp/pages/UdpFormsPublicForm'));\nconst WorkflowContainer = lazy(() => import('../workflow/WorkflowContainer'));\nconst PasswordResetRedirect = lazy(() =>\n import('./components/PasswordResetRedirect')\n);\nconst MyExportsPage = lazy(() => import('../udp/export/MyExportsPage'));\nconst PageNotFoundRoute = lazy(() => import('./components/PageNotFoundRoute'));\nconst UdpMaintenanceConfigPage = lazy(() =>\n import('../udp/pages/UdpMaintenanceConfigPage')\n);\nconst UdpMaintenanceEnginePage = lazy(() =>\n import('../udp/pages/UdpMaintenanceEnginePage')\n);\nconst AadCallback = lazy(() => import('../utilities/auth/AadCallback'));\n\n\nconst UdpTransactionsPage = lazy(() =>\n import('../udp/pages/UdpTransactionsPage')\n);\n\nconst UdpTransactionTypesPage = lazy(() =>\n import('../udp/pages/UdpTransactionTypesPage')\n);\n\nconst PageContainer = lazy(() =>\n import('../page/PageContainer').then(module => ({ default: module.PageContainer }))\n);\n\nconst Reports = lazy(() => import('../reports/Reports'));\n\nconst Inquiry = lazy(() => import('../inquiry/Inquiry'));\n\nexport const UdpRoutes = (props) => {\n const { ...other } = props;\n return (\n <Suspense fallback={<PageLoading />}>\n <Switch>\n <PrivateRoute\n path='/virtual/:id'\n render={(props) => <VirtualBrowser {...props} {...other} />}\n />\n <PrivateRoute\n path='/menupage/:id'\n render={(props) => <MenuPage {...props} {...other} />}\n />\n\n <Route\n path={`/page/${UdpPageEnums.Udp_Public_Forms_Page}`}\n render={(props) => <UdpPublicForm {...props} {...other} />}\n />\n <Route\n path={`/passwordresetsuccess`}\n render={(props) => <PasswordResetRedirect props={props} />}\n />\n <PrivateRoute\n path='/workflowtask/:id'\n render={(props) => <WorkflowContainer {...props} {...other} />}\n />\n <PrivateRoute\n path='/myexports'\n render={(props) => (\n <MyExportsPage\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n {...props}\n {...other}\n />\n )}\n />\n <PrivateRoute\n path='/crudbrowser'\n render={(props) => <UdpMaintenanceEnginePage {...props} />}\n />\n <PrivateRoute\n path='/tablebrowser'\n render={(props) => <UdpMaintenanceConfigPage {...props} />}\n />\n\n <Route path='/aad_callback' component={AadCallback} />\n <PrivateRoute\n path='/transactionsPage'\n render={(props) => <UdpTransactionsPage {...props} />}\n />\n <PrivateRoute\n path='/transactionTypesPage'\n render={(props) => <UdpTransactionTypesPage {...props} />}\n />\n <PrivateRoute path=\"/reports/:id\" exact component={Reports} />\n <PrivateRoute\n path=\"/inquiry/:id\"\n render={props => <Inquiry {...props} />}\n />\n <PrivateRoute\n path=\"/page/:id\"\n render={props => (\n <PageContainer fromMenu={true} {...props} />\n )}\n />\n <PrivateRoute path='*' component={PageNotFoundRoute} />\n </Switch>\n </Suspense>\n );\n};\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { n as SiteHeaderRightComponentTarget, t as SiteHeaderRightComponent } from "../SiteHeaderRightComponent-BwFUg3ur.js";
2
2
  import { n as useBuildEnvironment, t as APP_RIBBON_SPACE } from "../useBuildEnvironment-2gdqpmBX.js";
3
3
  import { t as SidebarCollapseButton } from "../SidebarCollapseButton-_UUtsftD.js";
4
- import { a as LanguageSwitcher, i as HelpCenter, o as ShellDropdown, r as EnvironmentRibbon, s as AmbientProjectSwitcher, t as SiteHeaderSpacer } from "../SiteHeader-6rdY93D_.js";
5
- import { t as Shell } from "../Shell-CL_ENLg6.js";
6
- import { r as isPasswordValid, t as UserForm } from "../UserForm-DZ1a9uqZ.js";
4
+ import { a as LanguageSwitcher, i as HelpCenter, o as ShellDropdown, r as EnvironmentRibbon, s as AmbientProjectSwitcher, t as SiteHeaderSpacer } from "../SiteHeader-CuOFCr7D.js";
5
+ import { t as Shell } from "../Shell-DunAQ9XC.js";
6
+ import { r as isPasswordValid, t as UserForm } from "../UserForm-DNgeQvad.js";
7
7
  import "./ui/index.js";
8
8
 
9
9
  export { APP_RIBBON_SPACE, AmbientProjectSwitcher, EnvironmentRibbon, HelpCenter, LanguageSwitcher, Shell, ShellDropdown, SidebarCollapseButton, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SiteHeaderSpacer, UserForm, isPasswordValid, useBuildEnvironment };
@@ -1,3 +1,3 @@
1
- import { r as isPasswordValid, t as UserForm } from "../../../UserForm-DZ1a9uqZ.js";
1
+ import { r as isPasswordValid, t as UserForm } from "../../../UserForm-DNgeQvad.js";
2
2
 
3
3
  export { UserForm, isPasswordValid };
@@ -1,7 +1,7 @@
1
1
  import { n as SiteHeaderRightComponentTarget, t as SiteHeaderRightComponent } from "../../SiteHeaderRightComponent-BwFUg3ur.js";
2
2
  import { n as useBuildEnvironment, t as APP_RIBBON_SPACE } from "../../useBuildEnvironment-2gdqpmBX.js";
3
3
  import { t as SidebarCollapseButton } from "../../SidebarCollapseButton-_UUtsftD.js";
4
- import { a as LanguageSwitcher, i as HelpCenter, o as ShellDropdown, r as EnvironmentRibbon, s as AmbientProjectSwitcher, t as SiteHeaderSpacer } from "../../SiteHeader-6rdY93D_.js";
5
- import { r as isPasswordValid, t as UserForm } from "../../UserForm-DZ1a9uqZ.js";
4
+ import { a as LanguageSwitcher, i as HelpCenter, o as ShellDropdown, r as EnvironmentRibbon, s as AmbientProjectSwitcher, t as SiteHeaderSpacer } from "../../SiteHeader-CuOFCr7D.js";
5
+ import { r as isPasswordValid, t as UserForm } from "../../UserForm-DNgeQvad.js";
6
6
 
7
7
  export { APP_RIBBON_SPACE, AmbientProjectSwitcher, EnvironmentRibbon, HelpCenter, LanguageSwitcher, ShellDropdown, SidebarCollapseButton, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SiteHeaderSpacer, UserForm, isPasswordValid, useBuildEnvironment };
@@ -1,3 +1,3 @@
1
- import { t as UserProfileMenuWrapper } from "../../../profile-CXlla7mZ.js";
1
+ import { t as UserProfileMenuWrapper } from "../../../profile-hGhjTafH.js";
2
2
 
3
3
  export { UserProfileMenuWrapper };
@@ -2,7 +2,7 @@ import { n as useSetInitialInquiryMenuVisibility, r as useActionStore, t as useI
2
2
  import { t as useCatalogStore } from "../catalogStore-DP2GxpTJ.js";
3
3
  import { n as useShellStore, t as useSetInitialShellVisibility } from "../shellStore-C8zfPsZ-.js";
4
4
  import { t as useTeleporterStore } from "../teleporterStore-CjUFtATo.js";
5
- import { t as useTenantStore } from "../tenantStore-TgmV03z9.js";
5
+ import { t as useTenantStore } from "../tenantStore-CFYu7ndZ.js";
6
6
  import { t as useLookupsStore } from "../lookupsStore-DPI8oD9R.js";
7
7
  import { t as useWorkflowStore } from "../workflowStore-CCoN5uHd.js";
8
8
 
@@ -1,4 +1,4 @@
1
- import { M as TenantTypeEnums } from "./unitySystemEnums-e5F9Jr7m.js";
1
+ import { M as TenantTypeEnums } from "./unitySystemEnums-CZDCsD5t.js";
2
2
  import { create } from "zustand";
3
3
  import { devtools } from "zustand/middleware";
4
4
 
@@ -16,4 +16,4 @@ const useTenantStore = create()(devtools((set) => ({
16
16
 
17
17
  //#endregion
18
18
  export { useTenantStore as t };
19
- //# sourceMappingURL=tenantStore-TgmV03z9.js.map
19
+ //# sourceMappingURL=tenantStore-CFYu7ndZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenantStore-TgmV03z9.js","names":["useTenantStore: () => TenantState"],"sources":["../src/stores/tenantStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { TenantTypeEnums } from '../enums/unitySystemEnums';\n\ninterface TenantView {\n tenantId: string;\n name: string | null | undefined;\n tenantType: TenantTypeEnums;\n}\n\ninterface TenantState {\n currentTenant: TenantView | null | undefined;\n setCurrentTenant: (currentTenant: TenantView) => void;\n isProductTenant: boolean;\n}\n\nexport const useTenantStore: () => TenantState = create<TenantState>()(\n devtools((set) => ({\n currentTenant: null,\n setCurrentTenant: (currentTenant: TenantView) =>\n set((state) => {\n const isProductTenant =\n currentTenant?.tenantType === TenantTypeEnums.Product;\n return { currentTenant, isProductTenant };\n }),\n isProductTenant: false\n }))\n);\n"],"mappings":";;;;;AAgBA,MAAaA,iBAAoC,QAAqB,CACpE,UAAU,SAAS;CACjB,eAAe;CACf,mBAAmB,kBACjB,KAAK,UAAU;AAGb,SAAO;GAAE;GAAe,iBADtB,eAAe,eAAe,gBAAgB;GACP;GACzC;CACJ,iBAAiB;CAClB,EAAE,CACJ"}
1
+ {"version":3,"file":"tenantStore-CFYu7ndZ.js","names":["useTenantStore: () => TenantState"],"sources":["../src/stores/tenantStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { TenantTypeEnums } from '../enums/unitySystemEnums';\n\ninterface TenantView {\n tenantId: string;\n name: string | null | undefined;\n tenantType: TenantTypeEnums;\n}\n\ninterface TenantState {\n currentTenant: TenantView | null | undefined;\n setCurrentTenant: (currentTenant: TenantView) => void;\n isProductTenant: boolean;\n}\n\nexport const useTenantStore: () => TenantState = create<TenantState>()(\n devtools((set) => ({\n currentTenant: null,\n setCurrentTenant: (currentTenant: TenantView) =>\n set((state) => {\n const isProductTenant =\n currentTenant?.tenantType === TenantTypeEnums.Product;\n return { currentTenant, isProductTenant };\n }),\n isProductTenant: false\n }))\n);\n"],"mappings":";;;;;AAgBA,MAAaA,iBAAoC,QAAqB,CACpE,UAAU,SAAS;CACjB,eAAe;CACf,mBAAmB,kBACjB,KAAK,UAAU;AAGb,SAAO;GAAE;GAAe,iBADtB,eAAe,eAAe,gBAAgB;GACP;GACzC;CACJ,iBAAiB;CAClB,EAAE,CACJ"}
@@ -1,3 +1,3 @@
1
- import { n as BaseTreeMenuItem, t as BaseTreeMenu } from "../BaseTreeMenu-CBFIl0VF.js";
1
+ import { n as BaseTreeMenuItem, t as BaseTreeMenu } from "../BaseTreeMenu-Dg8MW4TD.js";
2
2
 
3
3
  export { BaseTreeMenu, BaseTreeMenuItem };
@@ -290,4 +290,9 @@ export declare enum UdpSearchEnums {
290
290
  UdpBusinessDomainPrefix = "_UdpBusinessDomain"
291
291
  }
292
292
  export declare const EMPTY_GUID = "00000000-0000-0000-0000-000000000000";
293
+ export declare enum UnityProducts {
294
+ // Add the rest of the product ids here as needed
295
+ // This should be used sparingly as we should avoid hard coding behaviour to specific products
296
+ Unity = 1
297
+ }
293
298
  //# sourceMappingURL=unitySystemEnums.d.ts.map