udp-react-enterprise-component-library 25.18.1-beta.70 → 25.18.1-beta.72

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 (228) hide show
  1. package/dist/{ActionProvider-DGzli-X1.js → ActionProvider-BGugOmjV.js} +2 -2
  2. package/dist/{ActionProvider-DGzli-X1.js.map → ActionProvider-BGugOmjV.js.map} +1 -1
  3. package/dist/{ActionSplitScreen-gKH4ISoo.js → ActionSplitScreen-D6_7PlK-.js} +4 -4
  4. package/dist/{ActionSplitScreen-gKH4ISoo.js.map → ActionSplitScreen-D6_7PlK-.js.map} +1 -1
  5. package/dist/{ActionWrapper-Bpp9Mn4j.js → ActionWrapper-DnP7lGDq.js} +4 -4
  6. package/dist/{ActionWrapper-Bpp9Mn4j.js.map → ActionWrapper-DnP7lGDq.js.map} +1 -1
  7. package/dist/{AmbientCard-CLW4bPCu.js → AmbientCard-DhAiVDYD.js} +2 -2
  8. package/dist/{AmbientCard-CLW4bPCu.js.map → AmbientCard-DhAiVDYD.js.map} +1 -1
  9. package/dist/{AmbientVisualizationCard-CAxx4QWe.js → AmbientVisualizationCard-CivQRhmD.js} +4 -4
  10. package/dist/{AmbientVisualizationCard-CAxx4QWe.js.map → AmbientVisualizationCard-CivQRhmD.js.map} +1 -1
  11. package/dist/{AmbientVisualizer-BABKxgsK.js → AmbientVisualizer-buICwVdO.js} +2 -2
  12. package/dist/{AmbientVisualizer-BABKxgsK.js.map → AmbientVisualizer-buICwVdO.js.map} +1 -1
  13. package/dist/{BioCardWrapper-B2bT-4zw.js → BioCardWrapper-D1ZOHyA4.js} +3 -3
  14. package/dist/{BioCardWrapper-B2bT-4zw.js.map → BioCardWrapper-D1ZOHyA4.js.map} +1 -1
  15. package/dist/{CrudTableSidePanel-CNEZxJi0.js → CrudTableSidePanel-Dw8gZSqR.js} +2 -2
  16. package/dist/{CrudTableSidePanel-CNEZxJi0.js.map → CrudTableSidePanel-Dw8gZSqR.js.map} +1 -1
  17. package/dist/{DashboardWidget-CsOrr74H.js → DashboardWidget-D3HStfJA.js} +26 -10
  18. package/dist/DashboardWidget-D3HStfJA.js.map +1 -0
  19. package/dist/{DataBrowserContainer-cU_EEIiR.js → DataBrowserContainer-D4gJ66IC.js} +2 -2
  20. package/dist/{DataBrowserContainer-cU_EEIiR.js.map → DataBrowserContainer-D4gJ66IC.js.map} +1 -1
  21. package/dist/{DynamicRangeSlider-prr4fg8d.js → DynamicRangeSlider-BX4kCzUd.js} +2 -2
  22. package/dist/{DynamicRangeSlider-prr4fg8d.js.map → DynamicRangeSlider-BX4kCzUd.js.map} +1 -1
  23. package/dist/{EmailDisplay-Dm8ynSko.js → EmailDisplay-DZHmPeiL.js} +2 -2
  24. package/dist/{EmailDisplay-Dm8ynSko.js.map → EmailDisplay-DZHmPeiL.js.map} +1 -1
  25. package/dist/{ExportSidesheet-DWkoiwxC.js → ExportSidesheet-BQiNzxN9.js} +4 -4
  26. package/dist/{ExportSidesheet-DWkoiwxC.js.map → ExportSidesheet-BQiNzxN9.js.map} +1 -1
  27. package/dist/{FieldArrayCard-Ds_ysYWL.js → FieldArrayCard-sEe2pmg7.js} +3 -3
  28. package/dist/{FieldArrayCard-Ds_ysYWL.js.map → FieldArrayCard-sEe2pmg7.js.map} +1 -1
  29. package/dist/{FluentListItem-_Nq3fhEY.js → FluentListItem-1fzW--Dq.js} +2 -2
  30. package/dist/{FluentListItem-_Nq3fhEY.js.map → FluentListItem-1fzW--Dq.js.map} +1 -1
  31. package/dist/{GraphCard-BhcSveF4.js → GraphCard-Bdh6VeDb.js} +2 -2
  32. package/dist/{GraphCard-BhcSveF4.js.map → GraphCard-Bdh6VeDb.js.map} +1 -1
  33. package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js → ImportDataFromFileMapping-BIcQmKll.js} +2 -2
  34. package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js.map → ImportDataFromFileMapping-BIcQmKll.js.map} +1 -1
  35. package/dist/{Inquiry-KKLgba3g.js → Inquiry-1o8EuckI.js} +12 -10
  36. package/dist/{Inquiry-KKLgba3g.js.map → Inquiry-1o8EuckI.js.map} +1 -1
  37. package/dist/Inquiry-B9U7e2Iu.js +3 -0
  38. package/dist/{InquirySearchContainer-DKDrIqNO.js → InquirySearchContainer-zxbukV51.js} +3 -3
  39. package/dist/{InquirySearchContainer-DKDrIqNO.js.map → InquirySearchContainer-zxbukV51.js.map} +1 -1
  40. package/dist/MenuPage-CdzHSWBt.js +3 -0
  41. package/dist/{MenuPage-tkkhpco5.js → MenuPage-KiNfnc7P.js} +3 -3
  42. package/dist/{MenuPage-tkkhpco5.js.map → MenuPage-KiNfnc7P.js.map} +1 -1
  43. package/dist/{MttMainTimeline-s0ANW7l-.js → MttMainTimeline-DbaaXXQv.js} +2 -2
  44. package/dist/{MttMainTimeline-s0ANW7l-.js.map → MttMainTimeline-DbaaXXQv.js.map} +1 -1
  45. package/dist/{NotesScreen-DQatppnX.js → NotesScreen-D8-QnWaB.js} +2 -2
  46. package/dist/{NotesScreen-DQatppnX.js.map → NotesScreen-D8-QnWaB.js.map} +1 -1
  47. package/dist/{PDFViewer-B4nJKbIy.js → PDFViewer-BvaqCfIS.js} +2 -2
  48. package/dist/{PDFViewer-B4nJKbIy.js.map → PDFViewer-BvaqCfIS.js.map} +1 -1
  49. package/dist/{Page-fxgRfgm6.js → Page-BNjiUMqy.js} +5 -4
  50. package/dist/Page-BNjiUMqy.js.map +1 -0
  51. package/dist/{PageActionWrapper-BBkGtnC6.js → PageActionWrapper-Bm6J0thr.js} +2 -2
  52. package/dist/{PageActionWrapper-BBkGtnC6.js.map → PageActionWrapper-Bm6J0thr.js.map} +1 -1
  53. package/dist/{PageContainer-DTXNLt_2.js → PageContainer-ButX_XVS.js} +8 -6
  54. package/dist/PageContainer-ButX_XVS.js.map +1 -0
  55. package/dist/{PageRenderer-BTkUO-hr.js → PageRenderer-hxobUKe_.js} +2 -2
  56. package/dist/{PageRenderer-BTkUO-hr.js.map → PageRenderer-hxobUKe_.js.map} +1 -1
  57. package/dist/{PaymentForm-Dum5p1mf.js → PaymentForm-BdWY9dEt.js} +2 -2
  58. package/dist/{PaymentForm-Dum5p1mf.js.map → PaymentForm-BdWY9dEt.js.map} +1 -1
  59. package/dist/{PrimaryActionHeader-DBJpROPu.js → PrimaryActionHeader-H5w3twaM.js} +3 -2
  60. package/dist/PrimaryActionHeader-H5w3twaM.js.map +1 -0
  61. package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js → RecentlyLoadedNodesTable-BzvR0L0h.js} +2 -2
  62. package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js.map → RecentlyLoadedNodesTable-BzvR0L0h.js.map} +1 -1
  63. package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js → RecentlyLoadedNodesWidget-Kt5BElrK.js} +2 -2
  64. package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js.map → RecentlyLoadedNodesWidget-Kt5BElrK.js.map} +1 -1
  65. package/dist/{RemindersScreen-Cp7lMWrE.js → RemindersScreen-BDgMIUaq.js} +2 -2
  66. package/dist/{RemindersScreen-Cp7lMWrE.js.map → RemindersScreen-BDgMIUaq.js.map} +1 -1
  67. package/dist/{Shell-BE_Aq6W2.js → Shell-Bcr0PHnd.js} +6 -6
  68. package/dist/{Shell-BE_Aq6W2.js.map → Shell-Bcr0PHnd.js.map} +1 -1
  69. package/dist/{SiteHeader-CuOFCr7D.js → SiteHeader-DmfTUOmH.js} +4 -4
  70. package/dist/{SiteHeader-CuOFCr7D.js.map → SiteHeader-DmfTUOmH.js.map} +1 -1
  71. package/dist/{SummaryBlock-BjUNDl4q.js → SummaryBlock-Q5Jf4V8A.js} +2 -2
  72. package/dist/{SummaryBlock-BjUNDl4q.js.map → SummaryBlock-Q5Jf4V8A.js.map} +1 -1
  73. package/dist/{SupportCaseSideSheet-DuvvXDWF.js → SupportCaseSideSheet-9iAiZyOu.js} +1 -1
  74. package/dist/{SupportCaseSideSheet-BNec-nDN.js → SupportCaseSideSheet-CT15Dg8h.js} +2 -2
  75. package/dist/{SupportCaseSideSheet-BNec-nDN.js.map → SupportCaseSideSheet-CT15Dg8h.js.map} +1 -1
  76. package/dist/{Typography-BMsa1JYd.js → Typography-FuShOop3.js} +2 -2
  77. package/dist/{Typography-BMsa1JYd.js.map → Typography-FuShOop3.js.map} +1 -1
  78. package/dist/UI/accordion/index.js +1 -1
  79. package/dist/UI/components/dataDisplay/index.js +1 -1
  80. package/dist/UI/components/index.js +1 -1
  81. package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
  82. package/dist/UI/dataDisplay/index.js +2 -2
  83. package/dist/UI/dataDisplay/typography/index.js +1 -1
  84. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  85. package/dist/UI/fileViewer/index.js +1 -1
  86. package/dist/UI/fileViewer/pdfViewer/index.js +1 -1
  87. package/dist/UI/forms/index.js +1 -1
  88. package/dist/UI/index.js +11 -11
  89. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  90. package/dist/UI/mapLayout/index.js +1 -1
  91. package/dist/UI/support/index.js +1 -1
  92. package/dist/UI/surfaces/cards/AmbientCard/index.js +1 -1
  93. package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
  94. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  95. package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
  96. package/dist/UI/templates/newGrid/index.js +1 -1
  97. package/dist/UI/utilityDisplay/index.js +2 -2
  98. package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
  99. package/dist/UI/widgets/index.js +1 -1
  100. package/dist/UI/widgets/library/CircleGaugeWidget/index.js +1 -1
  101. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
  102. package/dist/{UdpAuditEvents-C5p1KgV0.js → UdpAuditEvents-DotSR4R9.js} +2 -2
  103. package/dist/{UdpAuditEvents-C5p1KgV0.js.map → UdpAuditEvents-DotSR4R9.js.map} +1 -1
  104. package/dist/{UdpAuditEventsPage-CohNvZiq.js → UdpAuditEventsPage-BZ5fMCYW.js} +2 -2
  105. package/dist/{UdpAuditEventsPage-CohNvZiq.js.map → UdpAuditEventsPage-BZ5fMCYW.js.map} +1 -1
  106. package/dist/UdpAuditEventsPage-BtsmPFyR.js +3 -0
  107. package/dist/{UdpDataBrowserPage-DQXaWtYD.js → UdpDataBrowserPage-3fiOCSkx.js} +3 -3
  108. package/dist/{UdpDataBrowserPage-DQXaWtYD.js.map → UdpDataBrowserPage-3fiOCSkx.js.map} +1 -1
  109. package/dist/{UdpFormsSubmissionGrid-DzMuwwTO.js → UdpFormsSubmissionGrid-B3pQiK5q.js} +10 -9
  110. package/dist/UdpFormsSubmissionGrid-B3pQiK5q.js.map +1 -0
  111. package/dist/{UdpGridTemplate-OsS_O6jR.js → UdpGridTemplate-xen0Fvww.js} +2 -2
  112. package/dist/{UdpGridTemplate-OsS_O6jR.js.map → UdpGridTemplate-xen0Fvww.js.map} +1 -1
  113. package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js → UdpImportFromFileMappingPage-BxGvGFua.js} +2 -2
  114. package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js.map → UdpImportFromFileMappingPage-BxGvGFua.js.map} +1 -1
  115. package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js → UdpInquiryMaintenanceEnginePage-CSf7jB35.js} +2 -2
  116. package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js.map → UdpInquiryMaintenanceEnginePage-CSf7jB35.js.map} +1 -1
  117. package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js → UdpMaintenanceEnginePage-C8NLZSPb.js} +3 -3
  118. package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js.map → UdpMaintenanceEnginePage-C8NLZSPb.js.map} +1 -1
  119. package/dist/{UdpNotesPage-DCjDBqqU.js → UdpNotesPage-BABI4D2S.js} +2 -2
  120. package/dist/{UdpNotesPage-DCjDBqqU.js.map → UdpNotesPage-BABI4D2S.js.map} +1 -1
  121. package/dist/{UdpRemindersPage-CrgWmKWD.js → UdpRemindersPage-DuS3aPUk.js} +2 -2
  122. package/dist/{UdpRemindersPage-CrgWmKWD.js.map → UdpRemindersPage-DuS3aPUk.js.map} +1 -1
  123. package/dist/{UdpTransactionsPage-X1Wu4-CC.js → UdpTransactionsPage-DXt_i8vP.js} +6 -6
  124. package/dist/{UdpTransactionsPage-X1Wu4-CC.js.map → UdpTransactionsPage-DXt_i8vP.js.map} +1 -1
  125. package/dist/{UtilitySideBar-wvrocDGI.js → UtilitySideBar-BU3ppHrv.js} +2 -2
  126. package/dist/{UtilitySideBar-wvrocDGI.js.map → UtilitySideBar-BU3ppHrv.js.map} +1 -1
  127. package/dist/VirtualBrowser-CbL5X-W-.js +3 -0
  128. package/dist/{VirtualBrowser-CVs-vW3x.js → VirtualBrowser-qF1k097T.js} +2 -2
  129. package/dist/{VirtualBrowser-CVs-vW3x.js.map → VirtualBrowser-qF1k097T.js.map} +1 -1
  130. package/dist/{WorkOrderCard-s-6QK3Re.js → WorkOrderCard-geZ9o4iP.js} +2 -2
  131. package/dist/{WorkOrderCard-s-6QK3Re.js.map → WorkOrderCard-geZ9o4iP.js.map} +1 -1
  132. package/dist/{WorkflowContainer-Boj87JRI.js → WorkflowContainer-BxBxnHEY.js} +1 -1
  133. package/dist/{WorkflowContainer-DDGm1Cxo.js → WorkflowContainer-Drts8hsZ.js} +3 -3
  134. package/dist/{WorkflowContainer-DDGm1Cxo.js.map → WorkflowContainer-Drts8hsZ.js.map} +1 -1
  135. package/dist/{WorkflowContent-CU_-pOym.js → WorkflowContent-HlBHhWl8.js} +4 -4
  136. package/dist/{WorkflowContent-CU_-pOym.js.map → WorkflowContent-HlBHhWl8.js.map} +1 -1
  137. package/dist/{accordion--zpb1uMC.js → accordion-Ca8ECaw2.js} +3 -3
  138. package/dist/accordion-Ca8ECaw2.js.map +1 -0
  139. package/dist/{actionSummary-D0CwyTXJ.js → actionSummary-DwSHY1Tt.js} +2 -2
  140. package/dist/{actionSummary-D0CwyTXJ.js.map → actionSummary-DwSHY1Tt.js.map} +1 -1
  141. package/dist/actions/actionSummary/index.js +1 -1
  142. package/dist/actions/index.js +4 -4
  143. package/dist/{colorConverter-x64WSLsF.js → colorConverter-5PvESBA1.js} +7 -1
  144. package/dist/colorConverter-5PvESBA1.js.map +1 -0
  145. package/dist/componentSystems/multiThreadTimeline/index.js +2 -2
  146. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  147. package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
  148. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  149. package/dist/componentSystems/pageRenderer/index.js +3 -3
  150. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  151. package/dist/dashboard/index.js +1 -1
  152. package/dist/dataBrowser/index.js +1 -1
  153. package/dist/{fileViewer-BbIFHura.js → fileViewer-C_Q-hFda.js} +4 -4
  154. package/dist/{fileViewer-BbIFHura.js.map → fileViewer-C_Q-hFda.js.map} +1 -1
  155. package/dist/{forms-BVssUn2h.js → forms-lyNriVSn.js} +3 -3
  156. package/dist/{forms-BVssUn2h.js.map → forms-lyNriVSn.js.map} +1 -1
  157. package/dist/index.js +47 -47
  158. package/dist/inquiry/dashboard/index.js +1 -1
  159. package/dist/inquiry/index.js +3 -3
  160. package/dist/inquiry/search/index.js +1 -1
  161. package/dist/layout/index.js +1 -1
  162. package/dist/{layout-Do6o2q2R.js → layout-IgoykV-U.js} +2 -2
  163. package/dist/{layout-Do6o2q2R.js.map → layout-IgoykV-U.js.map} +1 -1
  164. package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
  165. package/dist/maintenanceEngine/index.js +2 -2
  166. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  167. package/dist/{mapLayout-B_m2Fh8n.js → mapLayout-BlHtCf7p.js} +2 -2
  168. package/dist/{mapLayout-B_m2Fh8n.js.map → mapLayout-BlHtCf7p.js.map} +1 -1
  169. package/dist/menuPage/index.js +1 -1
  170. package/dist/{menuPage-7DcUM-Q3.js → menuPage-BHXchSeD.js} +2 -2
  171. package/dist/{menuPage-7DcUM-Q3.js.map → menuPage-BHXchSeD.js.map} +1 -1
  172. package/dist/{newGrid-zmtQXU5G.js → newGrid-Cx_UGQS8.js} +2 -2
  173. package/dist/{newGrid-zmtQXU5G.js.map → newGrid-Cx_UGQS8.js.map} +1 -1
  174. package/dist/notes/index.js +1 -1
  175. package/dist/page/PageContainer/index.js +1 -1
  176. package/dist/reminders/index.js +1 -1
  177. package/dist/routes/index.js +1 -1
  178. package/dist/{routes-DafRlYVQ.js → routes-Cep1JMTf.js} +5 -5
  179. package/dist/{routes-DafRlYVQ.js.map → routes-Cep1JMTf.js.map} +1 -1
  180. package/dist/shell/index.js +2 -2
  181. package/dist/shell/ui/index.js +1 -1
  182. package/dist/types/src/UI/accordion/Accordion.d.ts.map +1 -1
  183. package/dist/types/src/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.d.ts.map +1 -1
  184. package/dist/types/src/dashboard/DashboardCardGrid.d.ts.map +1 -1
  185. package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
  186. package/dist/types/src/page/Page.d.ts.map +1 -1
  187. package/dist/types/src/page/PageContainer/PageContainer.d.ts.map +1 -1
  188. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +3 -1
  189. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
  190. package/dist/types/src/utilities/style/colorConverter.d.ts.map +1 -1
  191. package/dist/types/tsconfig.tsbuildinfo +1 -1
  192. package/dist/udp/export/index.js +1 -1
  193. package/dist/udp/fileImportMapping/index.js +1 -1
  194. package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
  195. package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
  196. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  197. package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
  198. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  199. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  200. package/dist/udp/pages/UdpNotesPage/index.js +1 -1
  201. package/dist/udp/pages/UdpPages/index.js +9 -9
  202. package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
  203. package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
  204. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  205. package/dist/uploader/index.js +1 -1
  206. package/dist/{uploader-YWjDebFN.js → uploader-BdeUKdYW.js} +2 -2
  207. package/dist/{uploader-YWjDebFN.js.map → uploader-BdeUKdYW.js.map} +1 -1
  208. package/dist/utilities/form/paymentForm/index.js +1 -1
  209. package/dist/utilities/provider/index.js +1 -1
  210. package/dist/utilities/style/index.js +1 -1
  211. package/dist/{widgets-BCHN3J80.js → widgets-Bwklnxz1.js} +2 -2
  212. package/dist/{widgets-BCHN3J80.js.map → widgets-Bwklnxz1.js.map} +1 -1
  213. package/dist/{withEngineComponent-CpOJBSmx.js → withEngineComponent-Bcnxug3h.js} +2 -2
  214. package/dist/{withEngineComponent-CpOJBSmx.js.map → withEngineComponent-Bcnxug3h.js.map} +1 -1
  215. package/dist/workflow/index.js +2 -2
  216. package/export-map.json +1 -1
  217. package/package.json +2 -2
  218. package/dist/DashboardWidget-CsOrr74H.js.map +0 -1
  219. package/dist/Inquiry-C094H1jQ.js +0 -3
  220. package/dist/MenuPage-R6mbeCuS.js +0 -3
  221. package/dist/Page-fxgRfgm6.js.map +0 -1
  222. package/dist/PageContainer-DTXNLt_2.js.map +0 -1
  223. package/dist/PrimaryActionHeader-DBJpROPu.js.map +0 -1
  224. package/dist/UdpAuditEventsPage-BiUdXrGu.js +0 -3
  225. package/dist/UdpFormsSubmissionGrid-DzMuwwTO.js.map +0 -1
  226. package/dist/VirtualBrowser-CcWYHhRb.js +0 -3
  227. package/dist/accordion--zpb1uMC.js.map +0 -1
  228. package/dist/colorConverter-x64WSLsF.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MttMainTimeline-s0ANW7l-.js","names":["years","uniqueYears","plots","demoDates","unique","startDate","endDate","item","dates","data","data"],"sources":["../src/componentSystems/multiThreadTimeline/mttMainTimeline/HeightAdjust.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttTimeline.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttMainTimeline.jsx"],"sourcesContent":["import React from 'react';\nimport { Slider, IconButton } from '@material-ui/core';\nimport { LineSpacingIcon, MinimumValueIcon } from '@fluentui/react-icons';\n\nexport const HeightAdjuster = ({ verticalAdjuster, setVerticalAdjuster }) => {\n const handleAdjusterChange = (event, newValue) => {\n setVerticalAdjuster(newValue);\n };\n const handleDecreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster - 1);\n };\n const handleIncreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster + 1);\n };\n return (\n <div style={{ display: 'flex' }}>\n <IconButton onClick={handleDecreaseClick}>\n <div style={{ fontSize: 18 }}>\n <LineSpacingIcon />\n </div>\n </IconButton>\n <Slider\n value={verticalAdjuster}\n min={0}\n max={10}\n step={0.1}\n onChange={handleAdjusterChange}\n />\n <IconButton onClick={handleIncreaseClick}>\n <div style={{ rotate: '90deg', fontSize: 24 }}>\n <MinimumValueIcon />\n </div>\n </IconButton>\n </div>\n );\n};\n","import React, {\n useState,\n useEffect,\n useRef,\n memo,\n useCallback,\n useMemo\n} from 'react';\nimport {\n makeStyles,\n Typography,\n useTheme,\n Fade,\n lighten,\n Button\n} from '@material-ui/core';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { TimelineNode } from '../ui/TimelineNode';\nimport { TimelineWrapper } from '../ui/TimelineWrapper';\nimport { MultiDot } from '../ui/MultiDot';\nimport { VisualizationDot } from '../ui/VisualizationDot';\nimport { TimelinePreloaderNode } from '../ui/TimelinePreloaderNode';\nimport 'react-range-slider-input/dist/style.css';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport { DynamicRangeSlider } from '../ui/DynamicRangeSlider';\nimport { HeightAdjuster } from './HeightAdjust';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n horizontalDash: {\n backgroundImage:\n 'linear-gradient(to right, grey 33%, rgba(255,255,255,0) 0%)',\n backgroundPosition: 'bottom',\n backgroundSize: '16px 1px',\n backgroundRepeat: 'repeat-x'\n },\n slider: {\n height: 600\n },\n categoryBar: {\n background: lighten(theme.palette.common.black, 0.5),\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center'\n },\n categoryBarPlacement: {\n position: 'absolute',\n left: 0\n },\n categoryLabel: {\n transform: 'rotate(90deg)',\n width: 28\n },\n button: {\n '&:hover': {\n textDecoration: 'line-through'\n }\n }\n}));\n// eslint-disable-next-line react/display-name\nexport const MttTimeline = memo((props) => {\n const [showAllDetails] = useState(false);\n const [startRange, setStartRange] = useState(10);\n const [endRange, setEndRange] = useState();\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [displayRangeFilter, setDisplayRangeFilter] = useState(true);\n const [threadHeight, setThreadHeight] = useState(92);\n const [recordLength, setRecordLength] = useState();\n const [containerWidth, setContainerWidth] = useState();\n const [showMonthMarkers, setShowMonthMarkers] = useState(false);\n const [showYearMarkers, setShowYearMarkers] = useState(false);\n const [verticalAdjuster, setVerticalAdjuster] = useState(4.5);\n const [uniqueTimelines, setUniqueTimelines] = useState(0);\n\n const classes = useStyles(props);\n const { data, loading } = props;\n const theme = useTheme();\n\n const visualizationYScale = 40;\n\n useEffect(() => {\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)].sort();\n\n data && setStartDate(uniqueYears[0] + '-01-01');\n data && setEndDate(uniqueYears[uniqueYears.length - 1] + '-12-31');\n }, [data]);\n\n const mainContainer = useRef(null);\n\n useEffect(() => {\n setContainerWidth(\n mainContainer.current ? mainContainer.current.offsetWidth : 0\n );\n }, []);\n\n let movement_timer = null;\n const RESET_TIMEOUT = 10;\n\n const set_dimensions = () => {\n if (mainContainer.current) {\n setContainerWidth(mainContainer.current.offsetWidth);\n }\n };\n\n window.addEventListener('resize', () => {\n clearInterval(movement_timer);\n movement_timer = setTimeout(set_dimensions, RESET_TIMEOUT);\n });\n\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)];\n\n let demoApiConfigDate = [];\n\n uniqueYears.map((item) => {\n demoApiConfigDate.push('01/01/' + item);\n });\n\n let yearsInRange = [];\n\n yearsInRange.push(Number(demoApiConfigDate[1]?.slice(-4)) + 1);\n\n let yearsToDisplay = [];\n\n yearsInRange.map((item) => {\n yearsToDisplay.push('01/01/' + item);\n });\n\n demoApiConfigDate.map((item) => {\n yearsToDisplay.unshift(item);\n });\n\n const yearRange = yearsToDisplay.sort();\n\n // could change plotting on range change by switching data with filteredByDate\n\n const getSingleGroupedData = useCallback(() => {\n const flatOne = data && data.map((item) => item.dates).flat();\n const flatTwo =\n data &&\n flatOne &&\n flatOne.map((item) => {\n return item.details;\n });\n return flatTwo;\n }, [data]);\n\n // Sort date\n\n const sortDate =\n data &&\n getSingleGroupedData().sort(function (a, b) {\n const c = new Date(a.date);\n const d = new Date(b.date);\n return c - d;\n });\n\n // Convert date format\n\n let dataConvertedDate =\n data &&\n sortDate.map((item) => ({\n ...item,\n date: new Date(item.date).toLocaleDateString()\n }));\n\n function formatDate(date) {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n const getPositionFromDate = useCallback(\n (initDate) => {\n const start = new Date(yearRange[1]);\n const end = new Date(yearRange[2]);\n\n const rangeStart = [initDate];\n\n const dateList = [new Date(start).toLocaleDateString()];\n\n let loop = new Date(start);\n while (loop <= end) {\n const newDate = loop.setDate(loop.getDate() + 1);\n loop = new Date(newDate);\n dateList.push(loop.toLocaleDateString());\n }\n\n const mappedToObjects = dateList.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= dateList.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ date }) => rangeStart.includes(date))\n .map(({ plots }) => plots)\n .toString();\n return startDate;\n },\n [yearRange]\n );\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n useEffect(() => {\n setEndRange(\n unique && Number(getPositionFromDate(unique.slice(-1).pop())) + 66\n );\n }, []);\n\n const getDatesFromRangeSelectionCompact = useCallback(\n (left, right) => {\n const rangeStart = [Math.round(left)];\n const rangeEnd = [Math.round(right)];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n const getNextDay = () => {\n const dateString = unique[unique.length - 1];\n const date = new Date(dateString);\n date.setDate(date.getDate() + 1);\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const year = date.getFullYear();\n return `${month}/${day}/${year}`;\n };\n\n const nextDay = getNextDay();\n unique.push(nextDay);\n\n const mappedToObjects = unique.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i * 10);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ plots }) => rangeStart.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n const endDate = mergePlots\n .filter(({ plots }) => rangeEnd.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n setStartDate(startDate);\n setEndDate(endDate);\n },\n [dataConvertedDate]\n );\n\n const getRangeValues = useCallback((rangeValue) => {\n const left = rangeValue[0];\n const right = rangeValue[1];\n setStartRange(Math.round(left));\n setEndRange(Math.round(right));\n }, []);\n\n const processRangeValues = () => {\n endRange && getDatesFromRangeSelectionCompact(startRange, endRange);\n };\n\n // Plot YV\n const plotYV = useCallback(\n (item) => {\n const plotDate = [item];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n data &&\n data.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res = mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order = res.map((item) => {\n return item;\n });\n\n const plot = order;\n\n return plot;\n },\n [data, dataConvertedDate]\n );\n\n function compareDate(date1, date2, comparison) {\n const date1Month = Number(date1.split('/')[0]);\n const date2Month = Number(date2.split('/')[0]);\n const date1Day = Number(date1.split('/')[1]);\n const date2Day = Number(date2.split('/')[1]);\n const date1Year = Number(date1.split('/')[2]);\n const date2Year = Number(date2.split('/')[2]);\n if (comparison === '>') {\n if (date1Year > date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month > date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day > date2Day) {\n return true;\n }\n }\n }\n return false;\n } else {\n if (date1Year < date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month < date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day < date2Day) {\n return true;\n }\n }\n }\n return false;\n }\n }\n\n function minnifyTimelineObject(object) {\n let cleanObject = [];\n let notUsed = false;\n object.forEach((obj, i) => {\n if (cleanObject.length === 0) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n } else {\n notUsed = true;\n cleanObject.forEach((clnObj) => {\n if (\n obj.timeline === clnObj.timeline &&\n obj.subThread === clnObj.subThread\n ) {\n if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.firstDate),\n '<'\n )\n ) {\n clnObj.firstDate = formatDate(obj.date);\n } else if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.lastDate),\n '>'\n )\n ) {\n clnObj.lastDate = formatDate(obj.date);\n }\n notUsed = false;\n }\n });\n }\n if (notUsed) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n }\n });\n return cleanObject;\n }\n\n let dates = [];\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n dates.push(item.date);\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n const startDateSet = useMemo(() => new Date(startDate), [startDate]);\n const endDateSet = useMemo(() => new Date(endDate), [endDate]);\n\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date < endDateSet;\n });\n\n const buildCategoryLines = useCallback(() => {\n const xLine =\n data &&\n filteredByDate?.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n return unique;\n }, [filteredByDate, data]);\n\n const minnifiedResult = data && minnifyTimelineObject(filteredByDate);\n\n const detailedComponentSize = 130;\n const summaryComponentSize = 73;\n //const overviewComponentSize = 50;\n\n //const detailBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const summaryBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const overviewBreakpoint = Math.round(containerWidth / summaryComponentSize);\n\n useEffect(() => {\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date <= endDateSet;\n });\n\n setRecordLength(filteredByDate?.length);\n }, [data, endDateSet, startDateSet]);\n\n const checkLinearLength = [];\n\n filteredByDate?.forEach((item) => {\n checkLinearLength.push(item.date);\n });\n\n let uniqueNodeScaleAmount = [...new Set(checkLinearLength)].length;\n\n const getScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getXScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getYScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 130;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const topMargin = uniqueNodeScaleAmount >= summaryBreakpoint ? 48 : 0;\n\n // Plot XV\n const plotXV = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n data.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const sortedRowIndex = rowIndex.sort((a, b) =>\n a.thread > b.thread ? 1 : -1\n );\n\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n const xplot = results[0] && results[0].sortedRowIndex * 50;\n return xplot - topMargin;\n },\n [data, topMargin]\n );\n\n const plotY = useCallback(\n (item) => {\n const plotDate = [item];\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n dataConvertedDate &&\n filteredByDate.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res =\n mergePlots &&\n mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order =\n mergePlots &&\n res.map((item) => {\n return item;\n });\n\n const plot = order * getYScale();\n\n return plot - getYScale() + (getYScale() === 130 ? 32 : 8);\n },\n [dataConvertedDate, getYScale, filteredByDate]\n );\n\n const plotX = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n // const sortedRowIndex = rowIndex.sort((a, b) =>\n // a.thread > b.thread ? 1 : -1\n // );\n\n const orderByThread = (unordered) => {\n let maxElement = 0;\n unordered.forEach((value) => {\n if (value.thread.split('.')[0] > maxElement) {\n maxElement = value.thread.split('.')[0];\n }\n });\n let sortArray = [...Array(+maxElement)].map((e) => (e = []));\n unordered.forEach((value) => {\n sortArray[+value.thread.split('.')[0] - 1].push(value);\n });\n sortArray.forEach((value) => {\n value.sort((a, b) => {\n return +a.thread.split('.')[1] - +b.thread.split('.')[1];\n });\n });\n return sortArray.flat();\n };\n\n const sortedRowIndex = orderByThread(rowIndex);\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n const xplot = results[0] && results[0].sortedRowIndex * getXScale();\n return xplot + topMargin;\n },\n [data, getXScale, topMargin, filteredByDate]\n );\n\n // Map to named months\n const MONTHS = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'March',\n 4: 'Apr',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'Aug',\n 9: 'Sept',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec'\n };\n\n const convertNumberToMonths = (months) => {\n // Convert months to order\n const orderedMonths = months;\n orderedMonths.sort(function (a, b) {\n return a - b;\n });\n\n // Map to named months\n const output = orderedMonths.map(function (i) {\n return MONTHS[i];\n });\n\n return output;\n };\n\n function lastDayOfMonthArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n const returnObject = dates.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n useEffect(() => {\n const timelineSet = new Set();\n data &&\n data.forEach((item) => {\n const timelineKey = `${item.timeline}-${item.subThread}`;\n timelineSet.add(timelineKey);\n });\n setUniqueTimelines(timelineSet.size);\n }, [data]);\n\n function lastDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '00/00/00';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay > Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '00/00/00') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(a) - new Date(b));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n function firstDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(b) - new Date(a));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n dateArr.sort((a, b) => new Date(a) - new Date(b));\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n const Today = (object) => {\n const dateList = [];\n object &&\n object.map((item) => {\n dateList.push(item.date);\n });\n\n let unique = [...new Set(dateList)];\n\n const today = new Date().toLocaleDateString('en-US');\n\n //const todaysDate = unique.filter(date => date.includes('7/29/2022'));\n const todaysDate = unique.filter((date) => date.includes(today));\n\n return todaysDate;\n };\n\n const getInverseProportionalNumber = (inputNumber) => {\n const reciprocal = 1 / inputNumber;\n const wholeNumber = Math.round(reciprocal * 400);\n return wholeNumber;\n };\n\n const visualizationSmall = 10;\n const visualizationLarge = 30;\n const rangeHandles = 18;\n const adjusterHeight = 100;\n\n // Plot category lines\n const GuideLinesShort = () => {\n const xLines = buildCategoryLines().map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n zIndex: 0,\n top: 186 * index\n }}\n >\n <div\n className={classes.horizontalDash}\n style={{ height: threadHeight }}\n />\n <div\n style={{\n //width: 'calc(100vw * 1.7)',\n width:\n // dataConvertedDate &&\n // mergePlots.slice(-1).pop().plots * nodeWidth,\n filteredByDate &&\n uniqueNodeScaleAmount * getXScale() + getXScale(),\n height: threadHeight,\n borderBottom: `${theme.palette.divider} 1px solid`\n }}\n />\n </div>\n );\n });\n\n return xLines;\n };\n\n const preloadArray = [...Array(7).keys()];\n\n //Format visualization hover card\n const VisualizationCard = ({ title, data, date, user }) => {\n return (\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n const VisualizationCardMulti = ({ title, data, date, user }) => {\n return (\n <div\n style={{\n width: 130,\n borderRadius: 4,\n marginBottom: 16,\n padding: 8\n }}\n >\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n // Plot Legend\n\n const categoryList = [];\n data &&\n filteredByDate.map((item) => {\n categoryList.push({\n label: item.timelineCategoryName,\n color: item.color,\n timeline: item.timeline\n });\n });\n\n const uniqueCategoryLegend = [\n ...new Map(categoryList.map((item) => [item['label'], item])).values()\n ];\n\n const uniqueCategoryLegendSorted = uniqueCategoryLegend.sort((a, b) =>\n a.timeline > b.timeline ? 1 : -1\n );\n\n const LegendDot = ({ background }) => {\n return (\n <div\n style={{\n width: 30,\n height: 15,\n background: lighten(background, 0.5),\n borderRadius: theme.spacing(6)\n }}\n />\n );\n };\n\n const LegendItem = ({ label, color }) => {\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center'\n }}\n >\n <LegendDot background={'#' + color} />\n <div style={{ marginLeft: theme.spacing(1) }}>\n <Typography variant='caption'>{label} </Typography>\n </div>\n </div>\n );\n };\n\n const legend =\n data &&\n uniqueCategoryLegendSorted.map((item, index) => {\n return <LegendItem key={index} color={item.color} label={item.label} />;\n });\n\n // Plot category bar\n const plotCategoryBar = (timelineNumber, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n\n const uniqueSorted = unique.sort(function (a, b) {\n return a.localeCompare(b);\n });\n\n const rowIndex = uniqueSorted.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const concatIndex = timelineNumber + '.' + subThread;\n\n const result = rowIndex.map((v, index) => ({ ...v, rowIndex: index + 1 }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n //const xplot = results[0].rowIndex * threadHeight;\n const xplot =\n (results[0] && results[0].rowIndex * getXScale()) - getXScale();\n return xplot;\n\n // const plot = (timelineNumber * threadHeight - threadHeight) * subThread;\n // return plot;\n };\n\n const CategoryBar = ({ label, height }) => {\n return (\n <div className={classes.categoryBar} style={{ height: height }}>\n <div className={classes.categoryLabel}>\n <Typography variant='subtitle2'> {label} </Typography>\n </div>\n </div>\n );\n };\n\n const DateMarkers = (\n <div>\n {filteredByDate &&\n showYearMarkers &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n firstDayOfYearArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag year>{item.date.split('/')[2]}</MttYearTag>\n </div>\n );\n })}\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n showMonthMarkers &&\n lastDayOfMonthArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag>\n {convertNumberToMonths([item.date.split('/')[0]])}\n </MttYearTag>\n </div>\n );\n })}\n\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n Today(filteredByDate).map((item) => {\n return (\n <div\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item)\n }}\n >\n <MttYearTag year today>\n <Typography variant='caption'> TODAY </Typography>\n </MttYearTag>\n </div>\n );\n })}\n </div>\n );\n\n // timeline render\n return (\n <div>\n <div\n ref={mainContainer}\n style={{\n position: 'relative',\n // top: 45,\n height: '75vh',\n overflow: 'scroll'\n }}\n >\n {/* CategoryBar */}\n {!loading && (\n <>\n <div style={{ zIndex: 99999999, position: 'absolute', bottom: 0 }}>\n {DateMarkers}\n </div>\n\n {data &&\n data &&\n uniqueNodeScaleAmount < summaryBreakpoint &&\n filteredByDate.map((item, index) => {\n return (\n <div\n key={index}\n className={classes.categoryBarPlacement}\n style={{\n top:\n plotCategoryBar(\n Number(item.timeline),\n Number(item.subThread)\n ) + 0\n }}\n >\n <CategoryBar\n key={item.id}\n label={item.timelineCategoryName}\n height={data && getXScale()}\n />\n </div>\n );\n })}\n\n {data &&\n filteredByDate.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ),\n top: plotX(item.timeline, item.subThread),\n //top: 0,\n zIndex:\n 999999 -\n plotY(new Date(item.date).toLocaleDateString('en-US')) -\n item.subThread\n //zIndex: 9999999 - index * index,\n }}\n >\n <TimelineNode\n icon={\n <IconRenderer\n noBorder\n value={{\n color: { hex: '#' + item.color },\n name: item.iconID\n }}\n />\n }\n dot={data && uniqueNodeScaleAmount <= overviewBreakpoint}\n dotColor={'#' + item.color}\n data={item.dates}\n details={\n data && uniqueNodeScaleAmount < summaryBreakpoint\n }\n height={\n (data &&\n uniqueNodeScaleAmount <= summaryBreakpoint &&\n 183) ||\n (data &&\n uniqueNodeScaleAmount <= overviewBreakpoint &&\n 30)\n }\n width={\n data && uniqueNodeScaleAmount < summaryBreakpoint && 130\n }\n boxStyle\n show={showAllDetails}\n iconColor={'#' + item.color}\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) + 4,\n top: plotX(item.timeline, item.subThread),\n zIndex:\n 999999 -\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) -\n item.timeline\n }}\n >\n <MultiDot map={item.dates} number={item.dates.length} />\n </div>\n </div>\n );\n })}\n\n <Fade in={data && uniqueNodeScaleAmount >= summaryBreakpoint}>\n <div>\n {data &&\n minnifiedResult.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n //zIndex: 0,\n left: plotY(item.firstDate) + 2,\n top:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 14 + plotX(item.timeline, item.subThread)\n : 4 + plotX(item.timeline, item.subThread)\n }}\n >\n <TimelineWrapper\n timeline={item.timeline}\n style={{\n width:\n plotY(item.lastDate) - plotY(item.firstDate) + 45,\n height:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 20\n : 40,\n backgroundColor: lighten('#' + item.color, 0.7)\n }}\n />\n </div>\n );\n })}\n </div>\n </Fade>\n {/* <Fade in={data && filteredByDate.length < mttBreakpointMd}> */}\n {data && uniqueNodeScaleAmount < summaryBreakpoint && (\n <div>\n <GuideLinesShort />\n </div>\n )}\n </>\n )}\n {/* </Fade> */}\n </div>\n\n {/* lower Section //////////////////////////////////////////////////////////////////////////////////////////////// */}\n <div style={{ width: 250 }}>\n <HeightAdjuster\n verticalAdjuster={verticalAdjuster}\n setVerticalAdjuster={setVerticalAdjuster}\n />\n </div>\n\n {!loading && (\n <div\n style={{\n position: 'relative',\n borderTop: '1px solid lightgrey',\n overflow: 'scroll'\n }}\n >\n <div>\n {data && displayRangeFilter && (\n <div\n style={{\n overflow: 'scroll'\n }}\n >\n <div key={data}>\n <DynamicRangeSlider\n id='range-slider'\n step={10}\n threads={10 * uniqueTimelines}\n width={containerWidth - rangeHandles}\n margin={\n topMargin +\n getInverseProportionalNumber(verticalAdjuster) * 3\n }\n defaultValue={[10, unique.length * 10]}\n max={unique.length * 10}\n min={10}\n onThumbDragEnd={processRangeValues}\n onRangeDragEnd={processRangeValues}\n onInput={(e) => getRangeValues(e)}\n />\n </div>\n </div>\n )}\n\n <div>\n {data &&\n data.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n type={item.dates[0].details.shortDescription}\n hover={\n <VisualizationCard\n title={item.dates[0].details.shortDescription}\n data={item.dates[0].details.data1}\n date={item.dates[0].details.date}\n //user={item.dates[0].details.data2}\n />\n }\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n hover={\n <div style={{ color: 'black' }}>\n {item.dates.map((item) => {\n return (\n <VisualizationCardMulti\n title={item.details.description}\n date={item.details.date}\n key={item.id}\n />\n );\n })}\n </div>\n }\n multi\n >\n {item.dates.length}\n </VisualizationDot>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Preloading */}\n <div style={{ position: 'absolute', top: 0, left: 0, zIndex: 10 }}>\n {loading &&\n preloadArray.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: Math.floor(Math.random() * 11) * 60 + 40,\n top: (index + 1) * 80\n }}\n >\n <TimelinePreloaderNode longView loading={loading} />\n </div>\n );\n })}\n </div>\n {/* Preloading End */}\n\n {/* Legend */}\n {uniqueNodeScaleAmount >= summaryBreakpoint && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4\n }}\n >\n <div\n style={{\n display: 'flex',\n padding: theme.spacing(1),\n gap: theme.spacing(3)\n }}\n >\n {legend}\n\n <Button\n className={classes.button}\n onClick={() => setShowMonthMarkers(!showMonthMarkers)}\n >\n <span\n style={{ textDecoration: !showMonthMarkers && 'line-through' }}\n >\n M\n </span>\n </Button>\n <Button\n className={classes.button}\n onClick={() => setShowYearMarkers(!showYearMarkers)}\n >\n <span\n style={{ textDecoration: !showYearMarkers && 'line-through' }}\n >\n Y\n </span>\n </Button>\n </div>\n </div>\n )}\n {/* Breakpoint testing */}\n {/* <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4,\n }}\n >\n <Typography variant=\"caption\">\n Data nodes:\n <span style={{ fontWeight: 700 }}>\n {filteredByDate.length} ::::::::::\n </span>\n <span style={{ fontWeight: 700 }}>\n {uniqueNodeScaleAmount} ::::::::::\n </span>\n Summary Breakpoint:\n <span style={{ fontWeight: 700 }}>\n {summaryBreakpoint} ::::::::::\n </span>\n Overview Breakpoint:\n <span style={{ fontWeight: 700 }}>{overviewBreakpoint} ::::::::</span>\n Container Width:\n <span style={{ fontWeight: 700 }}>{containerWidth} :::::::::</span>\n Summary Width: Circle\n <span style={{ fontWeight: 700 }}>\n {summaryComponentSize} ::::::::\n </span>\n Overview width: Dot\n <span style={{ fontWeight: 700 }}>\n {overviewComponentSize} :::::::\n </span>\n </Typography>\n </div> */}\n </div>\n );\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { formatDataWithTimelineCategoryNameOrderedByDate } from '../functions/mttFunctions';\nimport { MttTimeline } from './MttTimeline';\nimport { ConfigService } from '../../../configService';\n\nexport const MttMainTimeline = (props) => {\n const { timelineApiMethodInstanceId, params = {} } = props;\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [data, setData] = useState();\n const [loading, setLoading] = useState(false);\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n ).catch((e) => e);\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setData(formatDataWithTimelineCategoryNameOrderedByDate(threadList));\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n return <MttTimeline data={data} loading={loading} />;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MttMainTimeline-DbaaXXQv.js","names":["years","uniqueYears","plots","demoDates","unique","startDate","endDate","item","dates","data","data"],"sources":["../src/componentSystems/multiThreadTimeline/mttMainTimeline/HeightAdjust.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttTimeline.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttMainTimeline.jsx"],"sourcesContent":["import React from 'react';\nimport { Slider, IconButton } from '@material-ui/core';\nimport { LineSpacingIcon, MinimumValueIcon } from '@fluentui/react-icons';\n\nexport const HeightAdjuster = ({ verticalAdjuster, setVerticalAdjuster }) => {\n const handleAdjusterChange = (event, newValue) => {\n setVerticalAdjuster(newValue);\n };\n const handleDecreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster - 1);\n };\n const handleIncreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster + 1);\n };\n return (\n <div style={{ display: 'flex' }}>\n <IconButton onClick={handleDecreaseClick}>\n <div style={{ fontSize: 18 }}>\n <LineSpacingIcon />\n </div>\n </IconButton>\n <Slider\n value={verticalAdjuster}\n min={0}\n max={10}\n step={0.1}\n onChange={handleAdjusterChange}\n />\n <IconButton onClick={handleIncreaseClick}>\n <div style={{ rotate: '90deg', fontSize: 24 }}>\n <MinimumValueIcon />\n </div>\n </IconButton>\n </div>\n );\n};\n","import React, {\n useState,\n useEffect,\n useRef,\n memo,\n useCallback,\n useMemo\n} from 'react';\nimport {\n makeStyles,\n Typography,\n useTheme,\n Fade,\n lighten,\n Button\n} from '@material-ui/core';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { TimelineNode } from '../ui/TimelineNode';\nimport { TimelineWrapper } from '../ui/TimelineWrapper';\nimport { MultiDot } from '../ui/MultiDot';\nimport { VisualizationDot } from '../ui/VisualizationDot';\nimport { TimelinePreloaderNode } from '../ui/TimelinePreloaderNode';\nimport 'react-range-slider-input/dist/style.css';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport { DynamicRangeSlider } from '../ui/DynamicRangeSlider';\nimport { HeightAdjuster } from './HeightAdjust';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n horizontalDash: {\n backgroundImage:\n 'linear-gradient(to right, grey 33%, rgba(255,255,255,0) 0%)',\n backgroundPosition: 'bottom',\n backgroundSize: '16px 1px',\n backgroundRepeat: 'repeat-x'\n },\n slider: {\n height: 600\n },\n categoryBar: {\n background: lighten(theme.palette.common.black, 0.5),\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center'\n },\n categoryBarPlacement: {\n position: 'absolute',\n left: 0\n },\n categoryLabel: {\n transform: 'rotate(90deg)',\n width: 28\n },\n button: {\n '&:hover': {\n textDecoration: 'line-through'\n }\n }\n}));\n// eslint-disable-next-line react/display-name\nexport const MttTimeline = memo((props) => {\n const [showAllDetails] = useState(false);\n const [startRange, setStartRange] = useState(10);\n const [endRange, setEndRange] = useState();\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [displayRangeFilter, setDisplayRangeFilter] = useState(true);\n const [threadHeight, setThreadHeight] = useState(92);\n const [recordLength, setRecordLength] = useState();\n const [containerWidth, setContainerWidth] = useState();\n const [showMonthMarkers, setShowMonthMarkers] = useState(false);\n const [showYearMarkers, setShowYearMarkers] = useState(false);\n const [verticalAdjuster, setVerticalAdjuster] = useState(4.5);\n const [uniqueTimelines, setUniqueTimelines] = useState(0);\n\n const classes = useStyles(props);\n const { data, loading } = props;\n const theme = useTheme();\n\n const visualizationYScale = 40;\n\n useEffect(() => {\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)].sort();\n\n data && setStartDate(uniqueYears[0] + '-01-01');\n data && setEndDate(uniqueYears[uniqueYears.length - 1] + '-12-31');\n }, [data]);\n\n const mainContainer = useRef(null);\n\n useEffect(() => {\n setContainerWidth(\n mainContainer.current ? mainContainer.current.offsetWidth : 0\n );\n }, []);\n\n let movement_timer = null;\n const RESET_TIMEOUT = 10;\n\n const set_dimensions = () => {\n if (mainContainer.current) {\n setContainerWidth(mainContainer.current.offsetWidth);\n }\n };\n\n window.addEventListener('resize', () => {\n clearInterval(movement_timer);\n movement_timer = setTimeout(set_dimensions, RESET_TIMEOUT);\n });\n\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)];\n\n let demoApiConfigDate = [];\n\n uniqueYears.map((item) => {\n demoApiConfigDate.push('01/01/' + item);\n });\n\n let yearsInRange = [];\n\n yearsInRange.push(Number(demoApiConfigDate[1]?.slice(-4)) + 1);\n\n let yearsToDisplay = [];\n\n yearsInRange.map((item) => {\n yearsToDisplay.push('01/01/' + item);\n });\n\n demoApiConfigDate.map((item) => {\n yearsToDisplay.unshift(item);\n });\n\n const yearRange = yearsToDisplay.sort();\n\n // could change plotting on range change by switching data with filteredByDate\n\n const getSingleGroupedData = useCallback(() => {\n const flatOne = data && data.map((item) => item.dates).flat();\n const flatTwo =\n data &&\n flatOne &&\n flatOne.map((item) => {\n return item.details;\n });\n return flatTwo;\n }, [data]);\n\n // Sort date\n\n const sortDate =\n data &&\n getSingleGroupedData().sort(function (a, b) {\n const c = new Date(a.date);\n const d = new Date(b.date);\n return c - d;\n });\n\n // Convert date format\n\n let dataConvertedDate =\n data &&\n sortDate.map((item) => ({\n ...item,\n date: new Date(item.date).toLocaleDateString()\n }));\n\n function formatDate(date) {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n const getPositionFromDate = useCallback(\n (initDate) => {\n const start = new Date(yearRange[1]);\n const end = new Date(yearRange[2]);\n\n const rangeStart = [initDate];\n\n const dateList = [new Date(start).toLocaleDateString()];\n\n let loop = new Date(start);\n while (loop <= end) {\n const newDate = loop.setDate(loop.getDate() + 1);\n loop = new Date(newDate);\n dateList.push(loop.toLocaleDateString());\n }\n\n const mappedToObjects = dateList.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= dateList.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ date }) => rangeStart.includes(date))\n .map(({ plots }) => plots)\n .toString();\n return startDate;\n },\n [yearRange]\n );\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n useEffect(() => {\n setEndRange(\n unique && Number(getPositionFromDate(unique.slice(-1).pop())) + 66\n );\n }, []);\n\n const getDatesFromRangeSelectionCompact = useCallback(\n (left, right) => {\n const rangeStart = [Math.round(left)];\n const rangeEnd = [Math.round(right)];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n const getNextDay = () => {\n const dateString = unique[unique.length - 1];\n const date = new Date(dateString);\n date.setDate(date.getDate() + 1);\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const year = date.getFullYear();\n return `${month}/${day}/${year}`;\n };\n\n const nextDay = getNextDay();\n unique.push(nextDay);\n\n const mappedToObjects = unique.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i * 10);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ plots }) => rangeStart.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n const endDate = mergePlots\n .filter(({ plots }) => rangeEnd.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n setStartDate(startDate);\n setEndDate(endDate);\n },\n [dataConvertedDate]\n );\n\n const getRangeValues = useCallback((rangeValue) => {\n const left = rangeValue[0];\n const right = rangeValue[1];\n setStartRange(Math.round(left));\n setEndRange(Math.round(right));\n }, []);\n\n const processRangeValues = () => {\n endRange && getDatesFromRangeSelectionCompact(startRange, endRange);\n };\n\n // Plot YV\n const plotYV = useCallback(\n (item) => {\n const plotDate = [item];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n data &&\n data.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res = mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order = res.map((item) => {\n return item;\n });\n\n const plot = order;\n\n return plot;\n },\n [data, dataConvertedDate]\n );\n\n function compareDate(date1, date2, comparison) {\n const date1Month = Number(date1.split('/')[0]);\n const date2Month = Number(date2.split('/')[0]);\n const date1Day = Number(date1.split('/')[1]);\n const date2Day = Number(date2.split('/')[1]);\n const date1Year = Number(date1.split('/')[2]);\n const date2Year = Number(date2.split('/')[2]);\n if (comparison === '>') {\n if (date1Year > date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month > date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day > date2Day) {\n return true;\n }\n }\n }\n return false;\n } else {\n if (date1Year < date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month < date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day < date2Day) {\n return true;\n }\n }\n }\n return false;\n }\n }\n\n function minnifyTimelineObject(object) {\n let cleanObject = [];\n let notUsed = false;\n object.forEach((obj, i) => {\n if (cleanObject.length === 0) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n } else {\n notUsed = true;\n cleanObject.forEach((clnObj) => {\n if (\n obj.timeline === clnObj.timeline &&\n obj.subThread === clnObj.subThread\n ) {\n if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.firstDate),\n '<'\n )\n ) {\n clnObj.firstDate = formatDate(obj.date);\n } else if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.lastDate),\n '>'\n )\n ) {\n clnObj.lastDate = formatDate(obj.date);\n }\n notUsed = false;\n }\n });\n }\n if (notUsed) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n }\n });\n return cleanObject;\n }\n\n let dates = [];\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n dates.push(item.date);\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n const startDateSet = useMemo(() => new Date(startDate), [startDate]);\n const endDateSet = useMemo(() => new Date(endDate), [endDate]);\n\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date < endDateSet;\n });\n\n const buildCategoryLines = useCallback(() => {\n const xLine =\n data &&\n filteredByDate?.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n return unique;\n }, [filteredByDate, data]);\n\n const minnifiedResult = data && minnifyTimelineObject(filteredByDate);\n\n const detailedComponentSize = 130;\n const summaryComponentSize = 73;\n //const overviewComponentSize = 50;\n\n //const detailBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const summaryBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const overviewBreakpoint = Math.round(containerWidth / summaryComponentSize);\n\n useEffect(() => {\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date <= endDateSet;\n });\n\n setRecordLength(filteredByDate?.length);\n }, [data, endDateSet, startDateSet]);\n\n const checkLinearLength = [];\n\n filteredByDate?.forEach((item) => {\n checkLinearLength.push(item.date);\n });\n\n let uniqueNodeScaleAmount = [...new Set(checkLinearLength)].length;\n\n const getScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getXScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getYScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 130;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const topMargin = uniqueNodeScaleAmount >= summaryBreakpoint ? 48 : 0;\n\n // Plot XV\n const plotXV = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n data.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const sortedRowIndex = rowIndex.sort((a, b) =>\n a.thread > b.thread ? 1 : -1\n );\n\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n const xplot = results[0] && results[0].sortedRowIndex * 50;\n return xplot - topMargin;\n },\n [data, topMargin]\n );\n\n const plotY = useCallback(\n (item) => {\n const plotDate = [item];\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n dataConvertedDate &&\n filteredByDate.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res =\n mergePlots &&\n mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order =\n mergePlots &&\n res.map((item) => {\n return item;\n });\n\n const plot = order * getYScale();\n\n return plot - getYScale() + (getYScale() === 130 ? 32 : 8);\n },\n [dataConvertedDate, getYScale, filteredByDate]\n );\n\n const plotX = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n // const sortedRowIndex = rowIndex.sort((a, b) =>\n // a.thread > b.thread ? 1 : -1\n // );\n\n const orderByThread = (unordered) => {\n let maxElement = 0;\n unordered.forEach((value) => {\n if (value.thread.split('.')[0] > maxElement) {\n maxElement = value.thread.split('.')[0];\n }\n });\n let sortArray = [...Array(+maxElement)].map((e) => (e = []));\n unordered.forEach((value) => {\n sortArray[+value.thread.split('.')[0] - 1].push(value);\n });\n sortArray.forEach((value) => {\n value.sort((a, b) => {\n return +a.thread.split('.')[1] - +b.thread.split('.')[1];\n });\n });\n return sortArray.flat();\n };\n\n const sortedRowIndex = orderByThread(rowIndex);\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n const xplot = results[0] && results[0].sortedRowIndex * getXScale();\n return xplot + topMargin;\n },\n [data, getXScale, topMargin, filteredByDate]\n );\n\n // Map to named months\n const MONTHS = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'March',\n 4: 'Apr',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'Aug',\n 9: 'Sept',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec'\n };\n\n const convertNumberToMonths = (months) => {\n // Convert months to order\n const orderedMonths = months;\n orderedMonths.sort(function (a, b) {\n return a - b;\n });\n\n // Map to named months\n const output = orderedMonths.map(function (i) {\n return MONTHS[i];\n });\n\n return output;\n };\n\n function lastDayOfMonthArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n const returnObject = dates.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n useEffect(() => {\n const timelineSet = new Set();\n data &&\n data.forEach((item) => {\n const timelineKey = `${item.timeline}-${item.subThread}`;\n timelineSet.add(timelineKey);\n });\n setUniqueTimelines(timelineSet.size);\n }, [data]);\n\n function lastDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '00/00/00';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay > Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '00/00/00') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(a) - new Date(b));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n function firstDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(b) - new Date(a));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n dateArr.sort((a, b) => new Date(a) - new Date(b));\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n const Today = (object) => {\n const dateList = [];\n object &&\n object.map((item) => {\n dateList.push(item.date);\n });\n\n let unique = [...new Set(dateList)];\n\n const today = new Date().toLocaleDateString('en-US');\n\n //const todaysDate = unique.filter(date => date.includes('7/29/2022'));\n const todaysDate = unique.filter((date) => date.includes(today));\n\n return todaysDate;\n };\n\n const getInverseProportionalNumber = (inputNumber) => {\n const reciprocal = 1 / inputNumber;\n const wholeNumber = Math.round(reciprocal * 400);\n return wholeNumber;\n };\n\n const visualizationSmall = 10;\n const visualizationLarge = 30;\n const rangeHandles = 18;\n const adjusterHeight = 100;\n\n // Plot category lines\n const GuideLinesShort = () => {\n const xLines = buildCategoryLines().map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n zIndex: 0,\n top: 186 * index\n }}\n >\n <div\n className={classes.horizontalDash}\n style={{ height: threadHeight }}\n />\n <div\n style={{\n //width: 'calc(100vw * 1.7)',\n width:\n // dataConvertedDate &&\n // mergePlots.slice(-1).pop().plots * nodeWidth,\n filteredByDate &&\n uniqueNodeScaleAmount * getXScale() + getXScale(),\n height: threadHeight,\n borderBottom: `${theme.palette.divider} 1px solid`\n }}\n />\n </div>\n );\n });\n\n return xLines;\n };\n\n const preloadArray = [...Array(7).keys()];\n\n //Format visualization hover card\n const VisualizationCard = ({ title, data, date, user }) => {\n return (\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n const VisualizationCardMulti = ({ title, data, date, user }) => {\n return (\n <div\n style={{\n width: 130,\n borderRadius: 4,\n marginBottom: 16,\n padding: 8\n }}\n >\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n // Plot Legend\n\n const categoryList = [];\n data &&\n filteredByDate.map((item) => {\n categoryList.push({\n label: item.timelineCategoryName,\n color: item.color,\n timeline: item.timeline\n });\n });\n\n const uniqueCategoryLegend = [\n ...new Map(categoryList.map((item) => [item['label'], item])).values()\n ];\n\n const uniqueCategoryLegendSorted = uniqueCategoryLegend.sort((a, b) =>\n a.timeline > b.timeline ? 1 : -1\n );\n\n const LegendDot = ({ background }) => {\n return (\n <div\n style={{\n width: 30,\n height: 15,\n background: lighten(background, 0.5),\n borderRadius: theme.spacing(6)\n }}\n />\n );\n };\n\n const LegendItem = ({ label, color }) => {\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center'\n }}\n >\n <LegendDot background={'#' + color} />\n <div style={{ marginLeft: theme.spacing(1) }}>\n <Typography variant='caption'>{label} </Typography>\n </div>\n </div>\n );\n };\n\n const legend =\n data &&\n uniqueCategoryLegendSorted.map((item, index) => {\n return <LegendItem key={index} color={item.color} label={item.label} />;\n });\n\n // Plot category bar\n const plotCategoryBar = (timelineNumber, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n\n const uniqueSorted = unique.sort(function (a, b) {\n return a.localeCompare(b);\n });\n\n const rowIndex = uniqueSorted.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const concatIndex = timelineNumber + '.' + subThread;\n\n const result = rowIndex.map((v, index) => ({ ...v, rowIndex: index + 1 }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n //const xplot = results[0].rowIndex * threadHeight;\n const xplot =\n (results[0] && results[0].rowIndex * getXScale()) - getXScale();\n return xplot;\n\n // const plot = (timelineNumber * threadHeight - threadHeight) * subThread;\n // return plot;\n };\n\n const CategoryBar = ({ label, height }) => {\n return (\n <div className={classes.categoryBar} style={{ height: height }}>\n <div className={classes.categoryLabel}>\n <Typography variant='subtitle2'> {label} </Typography>\n </div>\n </div>\n );\n };\n\n const DateMarkers = (\n <div>\n {filteredByDate &&\n showYearMarkers &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n firstDayOfYearArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag year>{item.date.split('/')[2]}</MttYearTag>\n </div>\n );\n })}\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n showMonthMarkers &&\n lastDayOfMonthArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag>\n {convertNumberToMonths([item.date.split('/')[0]])}\n </MttYearTag>\n </div>\n );\n })}\n\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n Today(filteredByDate).map((item) => {\n return (\n <div\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item)\n }}\n >\n <MttYearTag year today>\n <Typography variant='caption'> TODAY </Typography>\n </MttYearTag>\n </div>\n );\n })}\n </div>\n );\n\n // timeline render\n return (\n <div>\n <div\n ref={mainContainer}\n style={{\n position: 'relative',\n // top: 45,\n height: '75vh',\n overflow: 'scroll'\n }}\n >\n {/* CategoryBar */}\n {!loading && (\n <>\n <div style={{ zIndex: 99999999, position: 'absolute', bottom: 0 }}>\n {DateMarkers}\n </div>\n\n {data &&\n data &&\n uniqueNodeScaleAmount < summaryBreakpoint &&\n filteredByDate.map((item, index) => {\n return (\n <div\n key={index}\n className={classes.categoryBarPlacement}\n style={{\n top:\n plotCategoryBar(\n Number(item.timeline),\n Number(item.subThread)\n ) + 0\n }}\n >\n <CategoryBar\n key={item.id}\n label={item.timelineCategoryName}\n height={data && getXScale()}\n />\n </div>\n );\n })}\n\n {data &&\n filteredByDate.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ),\n top: plotX(item.timeline, item.subThread),\n //top: 0,\n zIndex:\n 999999 -\n plotY(new Date(item.date).toLocaleDateString('en-US')) -\n item.subThread\n //zIndex: 9999999 - index * index,\n }}\n >\n <TimelineNode\n icon={\n <IconRenderer\n noBorder\n value={{\n color: { hex: '#' + item.color },\n name: item.iconID\n }}\n />\n }\n dot={data && uniqueNodeScaleAmount <= overviewBreakpoint}\n dotColor={'#' + item.color}\n data={item.dates}\n details={\n data && uniqueNodeScaleAmount < summaryBreakpoint\n }\n height={\n (data &&\n uniqueNodeScaleAmount <= summaryBreakpoint &&\n 183) ||\n (data &&\n uniqueNodeScaleAmount <= overviewBreakpoint &&\n 30)\n }\n width={\n data && uniqueNodeScaleAmount < summaryBreakpoint && 130\n }\n boxStyle\n show={showAllDetails}\n iconColor={'#' + item.color}\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) + 4,\n top: plotX(item.timeline, item.subThread),\n zIndex:\n 999999 -\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) -\n item.timeline\n }}\n >\n <MultiDot map={item.dates} number={item.dates.length} />\n </div>\n </div>\n );\n })}\n\n <Fade in={data && uniqueNodeScaleAmount >= summaryBreakpoint}>\n <div>\n {data &&\n minnifiedResult.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n //zIndex: 0,\n left: plotY(item.firstDate) + 2,\n top:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 14 + plotX(item.timeline, item.subThread)\n : 4 + plotX(item.timeline, item.subThread)\n }}\n >\n <TimelineWrapper\n timeline={item.timeline}\n style={{\n width:\n plotY(item.lastDate) - plotY(item.firstDate) + 45,\n height:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 20\n : 40,\n backgroundColor: lighten('#' + item.color, 0.7)\n }}\n />\n </div>\n );\n })}\n </div>\n </Fade>\n {/* <Fade in={data && filteredByDate.length < mttBreakpointMd}> */}\n {data && uniqueNodeScaleAmount < summaryBreakpoint && (\n <div>\n <GuideLinesShort />\n </div>\n )}\n </>\n )}\n {/* </Fade> */}\n </div>\n\n {/* lower Section //////////////////////////////////////////////////////////////////////////////////////////////// */}\n <div style={{ width: 250 }}>\n <HeightAdjuster\n verticalAdjuster={verticalAdjuster}\n setVerticalAdjuster={setVerticalAdjuster}\n />\n </div>\n\n {!loading && (\n <div\n style={{\n position: 'relative',\n borderTop: '1px solid lightgrey',\n overflow: 'scroll'\n }}\n >\n <div>\n {data && displayRangeFilter && (\n <div\n style={{\n overflow: 'scroll'\n }}\n >\n <div key={data}>\n <DynamicRangeSlider\n id='range-slider'\n step={10}\n threads={10 * uniqueTimelines}\n width={containerWidth - rangeHandles}\n margin={\n topMargin +\n getInverseProportionalNumber(verticalAdjuster) * 3\n }\n defaultValue={[10, unique.length * 10]}\n max={unique.length * 10}\n min={10}\n onThumbDragEnd={processRangeValues}\n onRangeDragEnd={processRangeValues}\n onInput={(e) => getRangeValues(e)}\n />\n </div>\n </div>\n )}\n\n <div>\n {data &&\n data.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n type={item.dates[0].details.shortDescription}\n hover={\n <VisualizationCard\n title={item.dates[0].details.shortDescription}\n data={item.dates[0].details.data1}\n date={item.dates[0].details.date}\n //user={item.dates[0].details.data2}\n />\n }\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n hover={\n <div style={{ color: 'black' }}>\n {item.dates.map((item) => {\n return (\n <VisualizationCardMulti\n title={item.details.description}\n date={item.details.date}\n key={item.id}\n />\n );\n })}\n </div>\n }\n multi\n >\n {item.dates.length}\n </VisualizationDot>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Preloading */}\n <div style={{ position: 'absolute', top: 0, left: 0, zIndex: 10 }}>\n {loading &&\n preloadArray.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: Math.floor(Math.random() * 11) * 60 + 40,\n top: (index + 1) * 80\n }}\n >\n <TimelinePreloaderNode longView loading={loading} />\n </div>\n );\n })}\n </div>\n {/* Preloading End */}\n\n {/* Legend */}\n {uniqueNodeScaleAmount >= summaryBreakpoint && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4\n }}\n >\n <div\n style={{\n display: 'flex',\n padding: theme.spacing(1),\n gap: theme.spacing(3)\n }}\n >\n {legend}\n\n <Button\n className={classes.button}\n onClick={() => setShowMonthMarkers(!showMonthMarkers)}\n >\n <span\n style={{ textDecoration: !showMonthMarkers && 'line-through' }}\n >\n M\n </span>\n </Button>\n <Button\n className={classes.button}\n onClick={() => setShowYearMarkers(!showYearMarkers)}\n >\n <span\n style={{ textDecoration: !showYearMarkers && 'line-through' }}\n >\n Y\n </span>\n </Button>\n </div>\n </div>\n )}\n {/* Breakpoint testing */}\n {/* <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4,\n }}\n >\n <Typography variant=\"caption\">\n Data nodes:\n <span style={{ fontWeight: 700 }}>\n {filteredByDate.length} ::::::::::\n </span>\n <span style={{ fontWeight: 700 }}>\n {uniqueNodeScaleAmount} ::::::::::\n </span>\n Summary Breakpoint:\n <span style={{ fontWeight: 700 }}>\n {summaryBreakpoint} ::::::::::\n </span>\n Overview Breakpoint:\n <span style={{ fontWeight: 700 }}>{overviewBreakpoint} ::::::::</span>\n Container Width:\n <span style={{ fontWeight: 700 }}>{containerWidth} :::::::::</span>\n Summary Width: Circle\n <span style={{ fontWeight: 700 }}>\n {summaryComponentSize} ::::::::\n </span>\n Overview width: Dot\n <span style={{ fontWeight: 700 }}>\n {overviewComponentSize} :::::::\n </span>\n </Typography>\n </div> */}\n </div>\n );\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { formatDataWithTimelineCategoryNameOrderedByDate } from '../functions/mttFunctions';\nimport { MttTimeline } from './MttTimeline';\nimport { ConfigService } from '../../../configService';\n\nexport const MttMainTimeline = (props) => {\n const { timelineApiMethodInstanceId, params = {} } = props;\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [data, setData] = useState();\n const [loading, setLoading] = useState(false);\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n ).catch((e) => e);\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setData(formatDataWithTimelineCategoryNameOrderedByDate(threadList));\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n return <MttTimeline data={data} loading={loading} />;\n};\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
12
12
  import { t as CkRichEditor } from "./CkRichEditor-CoP_h6jt.js";
13
13
  import { a as getBaseMethod, i as executeQueryWithParameters, t as executeQueryAdHoc } from "./methodUtils-CDx9usdO.js";
14
14
  import { t as ShortcutContentFinder } from "./ShortcutContentFinder-BR-Gd55o.js";
15
- import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
15
+ import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
16
16
  import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
17
17
  import { LinearProgress, TextField, makeStyles } from "@material-ui/core";
18
18
  import { differenceWith } from "lodash";
@@ -362,4 +362,4 @@ const NotesScreen = (props) => {
362
362
 
363
363
  //#endregion
364
364
  export { NotesScreen as t };
365
- //# sourceMappingURL=NotesScreen-DQatppnX.js.map
365
+ //# sourceMappingURL=NotesScreen-D8-QnWaB.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotesScreen-DQatppnX.js","names":["note","existingNoteObj"],"sources":["../src/notes/NotesScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const NotesScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadNotes\n } = props;\n const [note, setNote] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [noteId, setNoteId] = useState(id || '');\n const [existingNoteFiledFor, setExistingNoteFiledFor] = useState([]);\n const [existingNoteObj, setExistingNoteObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const noteGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveNote = useCallback(\n async (values) => {\n let response = null;\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.note,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`\n }\n };\n if (noteId) {\n if (updateNoteApiMethod) {\n // Set the url parameter for updating note\n data['{iD}'] = noteId;\n response = await executeQueryWithParameters(\n { data },\n updateNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Note'));\n } else {\n handleErrorSnackbar(null, 'Update Note Method Not Promoted');\n }\n } else {\n if (createNoteApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Note'));\n } else {\n handleErrorSnackbar(null, 'Create Note Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!noteId) {\n setNoteId(response.data.id || '');\n handleSuccessSnackbar('Note Saved');\n } else {\n handleSuccessSnackbar('Note Updated');\n }\n if (reloadNotes) {\n reloadNotes();\n }\n return response.data.id || noteId;\n }\n\n return noteId;\n },\n [\n createNoteApiMethod,\n updateNoteApiMethod,\n noteId,\n setNoteId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadNotes\n ]\n );\n\n const noteFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleNoteFiledFor = useCallback(\n async (values, notedIdToFileFor) => {\n // Get the noteFiledFor objects to delete\n const noteFiledForToDelete = differenceWith(\n existingNoteFiledFor,\n values?.fileTo,\n noteFiledForToComparator\n );\n\n // Get the noteFiledFor objects to create\n const noteFiledForToCreate = differenceWith(\n values?.fileTo,\n existingNoteFiledFor,\n noteFiledForToComparator\n );\n\n if (notedIdToFileFor) {\n if (deleteNoteFiledForApiMethod) {\n const deletedPromises = [];\n noteFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{noteID}'] = notedIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Note Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Note Filed For Method Not Promoted'\n );\n }\n\n if (createNoteFiledForApiMethod) {\n const createdPromises = [];\n noteFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n noteId: notedIdToFileFor,\n entityBusinessKey: nftc.value\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingNoteFiledFor = noteFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingNoteFiledFor) {\n console.warn(\n `Note Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingNoteFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Note Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createNoteFiledForApiMethod,\n deleteNoteFiledForApiMethod,\n handleErrorSnackbar,\n existingNoteFiledFor,\n setExistingNoteFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ note, ...values });\n } else {\n const notedIdToFileFor = await handleSaveNote({ note, ...values });\n await handleNoteFiledFor({ note, ...values }, notedIdToFileFor);\n }\n },\n [note, onSubmit, handleSaveNote, handleNoteFiledFor]\n );\n\n const handleTextEditorChange = (note) => {\n setNote(note);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n setNote(value?.content || '');\n },\n [setNote, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setNote(editorRef?.current?.getData());\n },\n [editorRef, setNote]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: use getAll noteTypes\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n noteTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: use getAll noteTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (noteTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n noteTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList;\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [noteTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingNote = async () => {\n let existingNoteObj = null;\n const data = {};\n if (noteGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const noteResponse = await executeQueryWithParameters(\n { data },\n noteGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (noteResponse?.status === 200) {\n existingNoteObj = noteResponse.data;\n }\n }\n setExistingNoteObj(existingNoteObj);\n setNote(existingNoteObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingNote();\n }\n }, [id, noteGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingNoteObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingNoteObj.noteFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingNoteFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingNoteObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingNoteObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingNoteObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj) {\n return;\n }\n formRef?.current?.form?.change('subject', existingNoteObj?.subject || '');\n }, [existingNoteObj, formRef]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={note}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,QAAQ,EACN,oDAAoD,EAClD,iBACE,OAAO,cAAc,EAAE,SAAS,SAC5B,MAAM,QAAQ,KAAK,OACnB,MAAM,QAAQ,KAAK,MAC1B,EACF;CACD,KAAK;EACH,SAAS;EACT,gBAAgB;EACjB;CACD,OAAO;EACL,QAAQ;EACR,SAAS;EACV;CACD,eAAe,EACb,UAAU,IACX;CACD,WAAW,EACT,UAAU,IACX;CACF,EAAE;AAEH,MAAa,eAAe,UAAU;CACpC,MAAM,EACJ,SACA,UACA,8BACA,IACA,UACA,gBACE;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,GAAG;CACpC,MAAM,CAAC,aAAa,kBAAkB,SAAS,EAAE,CAAC;CAClD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,EAAE,CAAC;CAC1D,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM,GAAG;CAC9C,MAAM,CAAC,sBAAsB,2BAA2B,SAAS,EAAE,CAAC;CACpE,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,cAAc,gBAAgB;CACpC,MAAM,cAAc,eAAe,UAAU,MAAM,YAAY;CAC/D,MAAM,EAAE,eAAe,4BAA4B;CACnD,MAAM,EAAE,uBAAuB,wBAC7B,wBAAwB;CAC1B,MAAM,OAAO,SAAS;CACtB,MAAM,YAAY,OAAO,KAAK;CAE9B,MAAM,eAAe,cAAc;AACjC,MAAI,cAAc,SAAS,OACzB,QAAO,cAAc,SAAS,cAAc,sBAAsB;AAEpE,SAAO;IACN,CAAC,cAAc,CAAC;CAEnB,MAAM,uBAAuB,cAAc;AACzC,SAAO,cACL,SAAS,UACT,0BACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,0BAA0B,cAAc;AAC5C,SAAO,cACL,SAAS,eACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,mBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,sBAAsB,cAAc;AACxC,SAAO,cACL,SAAS,UACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,sBAAsB,cAAc;AACxC,SAAO,cACL,SAAS,UACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,oBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,oBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,WAAW,cAAc;AAC7B,SAAO;IACN,CAAC,SAAS,CAAC;CAEd,MAAM,iBAAiB,YACrB,OAAO,WAAW;EAChB,IAAI,WAAW;EACf,MAAM,OAAO,EACX,aAAa;GACX,UAAU,MAAM;GAChB,UAAU,QAAQ,MAAM;GACxB,SAAS,QAAQ;GACjB,SAAS,QAAQ;GACjB,aAAa,MAAM;GACnB,iBAAiB,GAAG,MAAM,UAAU,GAAG,MAAM;GAC9C,EACF;AACD,MAAI,OACF,KAAI,qBAAqB;AAEvB,QAAK,UAAU;AACf,cAAW,MAAM,2BACf,EAAE,MAAM,EACR,oBAAoB,YACrB,CAAC,OAAO,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;QAE/D,qBAAoB,MAAM,kCAAkC;WAG1D,oBACF,YAAW,MAAM,2BACf,EAAE,MAAM,EACR,oBAAoB,YACrB,CAAC,OAAO,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;MAE7D,qBAAoB,MAAM,kCAAkC;AAIhE,MAAI,UAAU,WAAW,KAAK;AAC5B,OAAI,CAAC,QAAQ;AACX,cAAU,SAAS,KAAK,MAAM,GAAG;AACjC,0BAAsB,aAAa;SAEnC,uBAAsB,eAAe;AAEvC,OAAI,YACF,cAAa;AAEf,UAAO,SAAS,KAAK,MAAM;;AAG7B,SAAO;IAET;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,4BAA4B,OAAO,UAAU;AACjD,SAAO,OAAO,UAAU,OAAO;;CAGjC,MAAM,qBAAqB,YACzB,OAAO,QAAQ,qBAAqB;EAElC,MAAM,uBAAuB,eAC3B,sBACA,QAAQ,QACR,yBACD;EAGD,MAAM,uBAAuB,eAC3B,QAAQ,QACR,sBACA,yBACD;AAED,MAAI,kBAAkB;AACpB,OAAI,6BAA6B;IAC/B,MAAM,kBAAkB,EAAE;AAC1B,yBAAqB,SAAS,SAAS;KACrC,MAAM,OAAO,EAAE;AACf,UAAK,cAAc;AACnB,UAAK,yBAAyB,KAAK;AACnC,qBAAgB,KACd,2BACE,EAAE,MAAM,EACR,4BAA4B,YAC7B,CACF;MACD;AAEF,UAAM,QAAQ,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAC9D,cAAc;AACb,SAAI,UAAU,WAAW,gBAAgB,OACvC,SAAQ,KAAK,iCAAiC;MAGnD;SAED,qBACE,MACA,4CACD;AAGH,OAAI,6BAA6B;IAC/B,MAAM,kBAAkB,EAAE;AAC1B,yBAAqB,SAAS,SAAS;KACrC,MAAM,OAAO,EACX,aAAa;MACX,QAAQ;MACR,mBAAmB,KAAK;MACzB,EACF;AACD,qBAAgB,KACd,2BACE,EAAE,MAAM,EACR,4BAA4B,YAC7B,CACF;MACD;AACF,UAAM,QAAQ,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAC9D,cAAc;AACb,eAAU,SAAS,aAAa;AAC9B,UAAI,SAAS,WAAW,KAAK;OAC3B,MAAM,oBAAoB,SAAS,KAAK;AAIxC,WAAI,CAHyB,qBAAqB,MAC/C,SAAS,KAAK,UAAU,kBAC1B,CAEC,SAAQ,KACN,sDACD;;OAGL;MAEL;AACD,4BAAwB,QAAQ,OAAO;SAEvC,qBACE,MACA,4CACD;;IAIP;EACE;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,iBAAiB,YACrB,OAAO,WAAW;AAChB,MAAI,SACF,UAAS;GAAE;GAAM,GAAG;GAAQ,CAAC;OACxB;GACL,MAAM,mBAAmB,MAAM,eAAe;IAAE;IAAM,GAAG;IAAQ,CAAC;AAClE,SAAM,mBAAmB;IAAE;IAAM,GAAG;IAAQ,EAAE,iBAAiB;;IAGnE;EAAC;EAAM;EAAU;EAAgB;EAAmB,CACrD;CAED,MAAM,0BAA0B,WAAS;AACvC,UAAQA,OAAK;;CAGf,MAAM,mBAAmB,aACtB,UAAU;AACT,WAAS,SAAS,MAAM,OAAO,WAAW,OAAO,WAAW,GAAG;EAC/D,MAAM,OAAO,YAAY,MAAM,WAAW,OAAO,SAAS,MAAM,SAAS;AACzE,WAAS,SAAS,MAAM,OAAO,QAAQ,QAAQ,KAAK;AACpD,UAAQ,OAAO,WAAW,GAAG;IAE/B;EAAC;EAAS;EAAS;EAAY,CAChC;CAED,MAAM,yBAAyB,aAC5B,oBAAoB;AACnB,aAAW,SAAS,OAAO,QAAQ,WAAW;GAC5C,MAAM,iBACJ,WAAW,SAAS,OAAO,UAAU,WAAW,kBAAkB;AACpE,UAAO,OACL,WAAW,SAAS,OAAO,UAAU,WAAW,eAAe,CAChE;AACD,UAAO,WAAW,iBAAiB,eAAe;IAClD;AAEF,UAAQ,WAAW,SAAS,SAAS,CAAC;IAExC,CAAC,WAAW,QAAQ,CACrB;CAED,MAAM,gBAAgB,cAAc;EAClC,IAAI,UAAU,EAAE;AAChB,MAAI,aACF,WAAU,mCAAmC,aAAa;AAE5D,SAAO;IACN,CAAC,aAAa,CAAC;AAElB,iBAAgB;EAEd,MAAM,iBAAiB,YAAY;GACjC,IAAI,UAAU,EAAE;AAChB,OAAI,yBAAyB;IAI3B,MAAM,gBAAgB,MAAM,kBADf,EAAE,MADM,gBADE,EAAE,EAC4B,GAAG,KAAK,KAAK,EAC/B,EAGjC,wBAAwB,YACzB;AACD,QAAI,eAAe,WAAW,IAC5B,WAAU,cAAc,MAAM;;AAGlC,kBAAe,QAAQ;;AAEzB,kBAAgB;IACf;EAAC;EAAyB;EAAgB;EAAK,CAAC;AAEnD,iBAAgB;EAEd,MAAM,qBAAqB,YAAY;GACrC,IAAI,UAAU,EAAE;AAChB,OAAI,6BAA6B;IAI/B,MAAM,oBAAoB,MAAM,kBADnB,EAAE,MADM,gBADE,EAAE,EAC4B,GAAG,KAAK,KAAK,EAC/B,EAGjC,4BAA4B,YAC7B;AACD,QAAI,mBAAmB,WAAW,IAChC,WAAU,kBAAkB,MAAM;;AAGtC,sBAAmB,QAAQ;;AAE7B,sBAAoB;IACnB;EAAC;EAA6B;EAAoB;EAAK,CAAC;AAE3D,iBAAgB;EACd,MAAM,kBAAkB,YAAY;GAClC,IAAIC,oBAAkB;GACtB,MAAM,OAAO,EAAE;AACf,OAAI,sBAAsB;AACxB,eAAW,KAAK;AAChB,SAAK,UAAU;IACf,MAAM,eAAe,MAAM,2BACzB,EAAE,MAAM,EACR,qBAAqB,YACtB,CAAC,OAAO,MAAM;AACb,aAAQ,MAAM,EAAE;AAChB,gBAAW,MAAM;MACjB;AACF,QAAI,cAAc,WAAW,IAC3B,qBAAkB,aAAa;;AAGnC,sBAAmBA,kBAAgB;AACnC,WAAQA,mBAAiB,QAAQ;AACjC,cAAW,MAAM;;AAEnB,MAAI,GACF,kBAAiB;IAElB,CAAC,IAAI,qBAAqB,CAAC;AAE9B,iBAAgB;AACd,MAAI,CAAC,mBAAmB,CAAC,eAAe,OACtC;EAEF,MAAM,iBAAiB,cAAc,QAAQ,WAAW;AACtD,UAAO,gBAAgB,aAAa,MACjC,QAAQ,OAAO,UAAU,IAAI,kBAC/B;IACD;AACF,0BAAwB,eAAe;AACvC,WAAS,SAAS,MAAM,OAAO,UAAU,eAAe;IACvD;EAAC;EAAiB;EAAe;EAAQ,CAAC;AAE7C,iBAAgB;AACd,MAAI,CAAC,mBAAmB,CAAC,aAAa,OACpC;EAEF,MAAM,cAAc,YAAY,MAC7B,WAAW,OAAO,SAAS,gBAAgB,SAC7C;AACD,WAAS,SAAS,MAAM,OAAO,QAAQ,eAAe,KAAK;IAC1D;EAAC;EAAiB;EAAa;EAAQ,CAAC;AAE3C,iBAAgB;AACd,MAAI,CAAC,gBACH;AAEF,WAAS,SAAS,MAAM,OAAO,WAAW,iBAAiB,WAAW,GAAG;IACxE,CAAC,iBAAiB,QAAQ,CAAC;AAE9B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACrB,WAAW,oCAAC,kBAAe,OAAM,cAAc,EAChD,oCAAC;EAAY,WAAW;EAAM,QAAQ;IACpC,oCAAC;EAAK,UAAU;EAAgB,KAAK;IACnC,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,UAAU;EACnB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,iBAAiB,EAAE;EAC5B,WAAW;EACX,UAAU;EACV,WAAW,CAAC,WAAW,IAAI;EAC3B,YAAY;EACF;GACV,EACF,oCAAC,SAAI,WAAW,QAAQ,OACtB,oCAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,IAC3B,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,OAAO;EAChB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,eAAe,EAAE;EAC1B,WAAW;EACX,UAAU;EACA;GACV,CACE,EACL,CAAC,YACA,oCAAC,SAAI,OAAO;EAAE,OAAO;EAAQ,YAAY;EAAG,IAC1C,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,WAAW;EACpB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,mBAAmB,EAAE;EAC9B,WAAW;EACX,0BAA0B;GAC1B,CACE,CAEJ,EACN,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,UAAU;EACnB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,MAAK;EACL,QAAO;EACP;EACU;EACV,YAAY,EACV,SAAS;GACP,MAAM,SAAS;GACf,OAAO,SAAS;GACjB,EACF;EACD,iBAAiB,EACf,SAAS,EACP,MAAM,SAAS,WAChB,EACF;GACD,EACF,oCAAC,cAAW,MAAK,UAAU,EAC3B,oCAAC;EACC,cAAc;EACd,SAAS,EAAE,QAAQ,QAAQ,QAAQ;EACnC,MAAM;EACK;EACX,YAAY;EACZ,UAAU;GACV,CACG,CACK,EACd,oCAAC,cAAW,MAAK,UAAU,EAC1B,gCACC,oCAAC;EACC,WAAW;EACX,QAAQ;EACR,wBAAwB;EACxB,mBAAmB,gBAAgB,cAAc,UAAU,QAAQ;IAEnE,oCAAC,yBAAsB,UAAU,yBAA0B,CAC/C,CAEZ"}
1
+ {"version":3,"file":"NotesScreen-D8-QnWaB.js","names":["note","existingNoteObj"],"sources":["../src/notes/NotesScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const NotesScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadNotes\n } = props;\n const [note, setNote] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [noteId, setNoteId] = useState(id || '');\n const [existingNoteFiledFor, setExistingNoteFiledFor] = useState([]);\n const [existingNoteObj, setExistingNoteObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const noteGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveNote = useCallback(\n async (values) => {\n let response = null;\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.note,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`\n }\n };\n if (noteId) {\n if (updateNoteApiMethod) {\n // Set the url parameter for updating note\n data['{iD}'] = noteId;\n response = await executeQueryWithParameters(\n { data },\n updateNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Note'));\n } else {\n handleErrorSnackbar(null, 'Update Note Method Not Promoted');\n }\n } else {\n if (createNoteApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Note'));\n } else {\n handleErrorSnackbar(null, 'Create Note Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!noteId) {\n setNoteId(response.data.id || '');\n handleSuccessSnackbar('Note Saved');\n } else {\n handleSuccessSnackbar('Note Updated');\n }\n if (reloadNotes) {\n reloadNotes();\n }\n return response.data.id || noteId;\n }\n\n return noteId;\n },\n [\n createNoteApiMethod,\n updateNoteApiMethod,\n noteId,\n setNoteId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadNotes\n ]\n );\n\n const noteFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleNoteFiledFor = useCallback(\n async (values, notedIdToFileFor) => {\n // Get the noteFiledFor objects to delete\n const noteFiledForToDelete = differenceWith(\n existingNoteFiledFor,\n values?.fileTo,\n noteFiledForToComparator\n );\n\n // Get the noteFiledFor objects to create\n const noteFiledForToCreate = differenceWith(\n values?.fileTo,\n existingNoteFiledFor,\n noteFiledForToComparator\n );\n\n if (notedIdToFileFor) {\n if (deleteNoteFiledForApiMethod) {\n const deletedPromises = [];\n noteFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{noteID}'] = notedIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Note Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Note Filed For Method Not Promoted'\n );\n }\n\n if (createNoteFiledForApiMethod) {\n const createdPromises = [];\n noteFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n noteId: notedIdToFileFor,\n entityBusinessKey: nftc.value\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingNoteFiledFor = noteFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingNoteFiledFor) {\n console.warn(\n `Note Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingNoteFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Note Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createNoteFiledForApiMethod,\n deleteNoteFiledForApiMethod,\n handleErrorSnackbar,\n existingNoteFiledFor,\n setExistingNoteFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ note, ...values });\n } else {\n const notedIdToFileFor = await handleSaveNote({ note, ...values });\n await handleNoteFiledFor({ note, ...values }, notedIdToFileFor);\n }\n },\n [note, onSubmit, handleSaveNote, handleNoteFiledFor]\n );\n\n const handleTextEditorChange = (note) => {\n setNote(note);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n setNote(value?.content || '');\n },\n [setNote, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setNote(editorRef?.current?.getData());\n },\n [editorRef, setNote]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: use getAll noteTypes\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n noteTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: use getAll noteTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (noteTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n noteTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList;\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [noteTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingNote = async () => {\n let existingNoteObj = null;\n const data = {};\n if (noteGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const noteResponse = await executeQueryWithParameters(\n { data },\n noteGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (noteResponse?.status === 200) {\n existingNoteObj = noteResponse.data;\n }\n }\n setExistingNoteObj(existingNoteObj);\n setNote(existingNoteObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingNote();\n }\n }, [id, noteGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingNoteObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingNoteObj.noteFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingNoteFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingNoteObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingNoteObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingNoteObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj) {\n return;\n }\n formRef?.current?.form?.change('subject', existingNoteObj?.subject || '');\n }, [existingNoteObj, formRef]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={note}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as Typography$1 } from "./Typography-BMsa1JYd.js";
1
+ import { t as Typography$1 } from "./Typography-FuShOop3.js";
2
2
  import { t as LinearProgress$1 } from "./LinearProgress-CpJeIaEP.js";
3
3
  import React, { useEffect, useState } from "react";
4
4
  import { IconButton, makeStyles } from "@material-ui/core";
@@ -166,4 +166,4 @@ const PDFViewer = ({ isPDFOpen = true, fileUrl, blobPDF, closePDF, onClickDownlo
166
166
 
167
167
  //#endregion
168
168
  export { PDFViewer as t };
169
- //# sourceMappingURL=PDFViewer-B4nJKbIy.js.map
169
+ //# sourceMappingURL=PDFViewer-BvaqCfIS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PDFViewer-B4nJKbIy.js","names":["useStyles","Typography","numPages","ControlPanel","LinearProgress"],"sources":["../src/UI/fileViewer/pdfViewer/ControlPanel.tsx","../src/UI/fileViewer/pdfViewer/PDFViewer.tsx"],"sourcesContent":["import React from 'react';\nimport { IconButton, makeStyles } from '@material-ui/core';\nimport FirstPageIcon from '@material-ui/icons/esm/FirstPage';\nimport NavigateBeforeIcon from '@material-ui/icons/esm/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/esm/NavigateNext';\nimport LastPageIcon from '@material-ui/icons/esm/LastPage';\nimport ZoomInIcon from '@material-ui/icons/esm/ZoomIn';\nimport ZoomOutIcon from '@material-ui/icons/esm/ZoomOut';\nimport CloudDownloadOutlinedIcon from '@material-ui/icons/esm/CloudDownloadOutlined';\nimport HighlightOffOutlinedIcon from '@material-ui/icons/esm/HighlightOffOutlined';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n controlPanel: {\n fontSize: '16px',\n backgroundColor: theme.palette.background.paper,\n borderRadius: '5px',\n width: 'fit-content',\n padding: theme.spacing(1),\n margin: '8px auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageActions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageNumber: {\n display: 'flex',\n gap: 5,\n minWidth: '125px'\n }\n}));\n\nconst ControlPanel = (props: any) => {\n const {\n pageNumber,\n numPages,\n setPageNumber,\n scale,\n setScale,\n file,\n closePDF,\n onClickDownload\n } = props;\n\n const isFirstPage = pageNumber === 1;\n const isLastPage = pageNumber === numPages;\n const { t } = useTranslation();\n const classes = useStyles();\n\n const goToFirstPage = () => {\n if (!isFirstPage) setPageNumber(1);\n };\n const goToPreviousPage = () => {\n if (!isFirstPage) setPageNumber(pageNumber - 1);\n };\n const goToNextPage = () => {\n if (!isLastPage) setPageNumber(pageNumber + 1);\n };\n const goToLastPage = () => {\n if (!isLastPage) setPageNumber(numPages);\n };\n\n const onPageChange = (e: any) => {\n const { value } = e.target;\n setPageNumber(Number(value));\n };\n\n const isMinZoom = scale < 0.6;\n const isMaxZoom = scale >= 2.0;\n\n const zoomOut = () => {\n if (!isMinZoom) setScale(scale - 0.1);\n };\n\n const zoomIn = () => {\n if (!isMaxZoom) setScale(scale + 0.1);\n };\n\n return (\n <div className={classes.controlPanel}>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={goToFirstPage} disabled={isFirstPage}>\n <FirstPageIcon />\n </IconButton>\n\n <IconButton\n size='small'\n onClick={goToPreviousPage}\n disabled={isFirstPage}\n >\n <NavigateBeforeIcon />\n </IconButton>\n\n <div>\n <div className={classes.pageNumber}>\n <Typography>{t('Page')} </Typography>\n <input\n name='pageNumber'\n type='number'\n min={1}\n max={numPages || 1}\n style={{\n padding: 0,\n paddingLeft: 1,\n margin: 0,\n textAlign: 'end'\n }}\n value={pageNumber}\n onChange={onPageChange}\n />{' '}\n <Typography>of {numPages}</Typography>\n </div>\n </div>\n\n <IconButton size='small' onClick={goToNextPage} disabled={isLastPage}>\n <NavigateNextIcon />\n </IconButton>\n\n <IconButton size='small' onClick={goToLastPage} disabled={isLastPage}>\n <LastPageIcon />\n </IconButton>\n </div>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={zoomOut} disabled={isMinZoom}>\n <ZoomOutIcon />\n </IconButton>\n\n <Typography>{(scale * 100).toFixed()}%</Typography>\n\n <IconButton size='small' onClick={zoomIn} disabled={isMaxZoom}>\n <ZoomInIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton href={file} size='small' onClick={onClickDownload}>\n <CloudDownloadOutlinedIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton size='small' onClick={closePDF}>\n <HighlightOffOutlinedIcon />\n </IconButton>\n </div>\n </div>\n );\n};\n\nexport default ControlPanel;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport ControlPanel from './ControlPanel';\nimport { LinearProgress } from '../../loading/LinearProgress';\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n pdfSection: (props: PDFContainerProps) => ({\n minWidth: props?.minWidth,\n }),\n documentContainer: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n },\n loadingBox: {\n width: '100%',\n },\n}));\n\ninterface PDFContainerProps {\n isPDFOpen?: boolean;\n fileUrl?: string;\n blobPDF?: Blob;\n closePDF?: () => void;\n onClickDownload?: () => void;\n minWidth?: number | string;\n}\n\nexport const PDFViewer: FC<PDFContainerProps> = ({\n isPDFOpen = true,\n fileUrl,\n blobPDF,\n closePDF,\n onClickDownload,\n minWidth\n}) => {\n const [scale, setScale] = useState(1.0);\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const classes = useStyles({minWidth});\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n });\n\n function onDocumentLoadSuccess({ numPages }: any) {\n setNumPages(numPages);\n }\n\n return (\n <div>\n {isPDFOpen && (\n <div id='pdf-section' className={classes.pdfSection}>\n <ControlPanel\n scale={scale}\n setScale={setScale}\n numPages={numPages}\n pageNumber={pageNumber}\n setPageNumber={setPageNumber}\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n closePDF={closePDF}\n onClickDownload={onClickDownload}\n />\n <div className={classes.documentContainer}>\n <Document\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n onLoadSuccess={onDocumentLoadSuccess}\n >\n <Page\n pageNumber={pageNumber}\n scale={scale}\n loading={\n <div className={classes.loadingBox}>\n <LinearProgress />\n </div>\n }\n />\n </Document>\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PDFViewer-BvaqCfIS.js","names":["useStyles","Typography","numPages","ControlPanel","LinearProgress"],"sources":["../src/UI/fileViewer/pdfViewer/ControlPanel.tsx","../src/UI/fileViewer/pdfViewer/PDFViewer.tsx"],"sourcesContent":["import React from 'react';\nimport { IconButton, makeStyles } from '@material-ui/core';\nimport FirstPageIcon from '@material-ui/icons/esm/FirstPage';\nimport NavigateBeforeIcon from '@material-ui/icons/esm/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/esm/NavigateNext';\nimport LastPageIcon from '@material-ui/icons/esm/LastPage';\nimport ZoomInIcon from '@material-ui/icons/esm/ZoomIn';\nimport ZoomOutIcon from '@material-ui/icons/esm/ZoomOut';\nimport CloudDownloadOutlinedIcon from '@material-ui/icons/esm/CloudDownloadOutlined';\nimport HighlightOffOutlinedIcon from '@material-ui/icons/esm/HighlightOffOutlined';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n controlPanel: {\n fontSize: '16px',\n backgroundColor: theme.palette.background.paper,\n borderRadius: '5px',\n width: 'fit-content',\n padding: theme.spacing(1),\n margin: '8px auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageActions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageNumber: {\n display: 'flex',\n gap: 5,\n minWidth: '125px'\n }\n}));\n\nconst ControlPanel = (props: any) => {\n const {\n pageNumber,\n numPages,\n setPageNumber,\n scale,\n setScale,\n file,\n closePDF,\n onClickDownload\n } = props;\n\n const isFirstPage = pageNumber === 1;\n const isLastPage = pageNumber === numPages;\n const { t } = useTranslation();\n const classes = useStyles();\n\n const goToFirstPage = () => {\n if (!isFirstPage) setPageNumber(1);\n };\n const goToPreviousPage = () => {\n if (!isFirstPage) setPageNumber(pageNumber - 1);\n };\n const goToNextPage = () => {\n if (!isLastPage) setPageNumber(pageNumber + 1);\n };\n const goToLastPage = () => {\n if (!isLastPage) setPageNumber(numPages);\n };\n\n const onPageChange = (e: any) => {\n const { value } = e.target;\n setPageNumber(Number(value));\n };\n\n const isMinZoom = scale < 0.6;\n const isMaxZoom = scale >= 2.0;\n\n const zoomOut = () => {\n if (!isMinZoom) setScale(scale - 0.1);\n };\n\n const zoomIn = () => {\n if (!isMaxZoom) setScale(scale + 0.1);\n };\n\n return (\n <div className={classes.controlPanel}>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={goToFirstPage} disabled={isFirstPage}>\n <FirstPageIcon />\n </IconButton>\n\n <IconButton\n size='small'\n onClick={goToPreviousPage}\n disabled={isFirstPage}\n >\n <NavigateBeforeIcon />\n </IconButton>\n\n <div>\n <div className={classes.pageNumber}>\n <Typography>{t('Page')} </Typography>\n <input\n name='pageNumber'\n type='number'\n min={1}\n max={numPages || 1}\n style={{\n padding: 0,\n paddingLeft: 1,\n margin: 0,\n textAlign: 'end'\n }}\n value={pageNumber}\n onChange={onPageChange}\n />{' '}\n <Typography>of {numPages}</Typography>\n </div>\n </div>\n\n <IconButton size='small' onClick={goToNextPage} disabled={isLastPage}>\n <NavigateNextIcon />\n </IconButton>\n\n <IconButton size='small' onClick={goToLastPage} disabled={isLastPage}>\n <LastPageIcon />\n </IconButton>\n </div>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={zoomOut} disabled={isMinZoom}>\n <ZoomOutIcon />\n </IconButton>\n\n <Typography>{(scale * 100).toFixed()}%</Typography>\n\n <IconButton size='small' onClick={zoomIn} disabled={isMaxZoom}>\n <ZoomInIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton href={file} size='small' onClick={onClickDownload}>\n <CloudDownloadOutlinedIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton size='small' onClick={closePDF}>\n <HighlightOffOutlinedIcon />\n </IconButton>\n </div>\n </div>\n );\n};\n\nexport default ControlPanel;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport ControlPanel from './ControlPanel';\nimport { LinearProgress } from '../../loading/LinearProgress';\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n pdfSection: (props: PDFContainerProps) => ({\n minWidth: props?.minWidth,\n }),\n documentContainer: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n },\n loadingBox: {\n width: '100%',\n },\n}));\n\ninterface PDFContainerProps {\n isPDFOpen?: boolean;\n fileUrl?: string;\n blobPDF?: Blob;\n closePDF?: () => void;\n onClickDownload?: () => void;\n minWidth?: number | string;\n}\n\nexport const PDFViewer: FC<PDFContainerProps> = ({\n isPDFOpen = true,\n fileUrl,\n blobPDF,\n closePDF,\n onClickDownload,\n minWidth\n}) => {\n const [scale, setScale] = useState(1.0);\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const classes = useStyles({minWidth});\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n });\n\n function onDocumentLoadSuccess({ numPages }: any) {\n setNumPages(numPages);\n }\n\n return (\n <div>\n {isPDFOpen && (\n <div id='pdf-section' className={classes.pdfSection}>\n <ControlPanel\n scale={scale}\n setScale={setScale}\n numPages={numPages}\n pageNumber={pageNumber}\n setPageNumber={setPageNumber}\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n closePDF={closePDF}\n onClickDownload={onClickDownload}\n />\n <div className={classes.documentContainer}>\n <Document\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n onLoadSuccess={onDocumentLoadSuccess}\n >\n <Page\n pageNumber={pageNumber}\n scale={scale}\n loading={\n <div className={classes.loadingBox}>\n <LinearProgress />\n </div>\n }\n />\n </Document>\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { n as useShellStore } from "./shellStore-C8zfPsZ-.js";
2
- import { i as getWidgetLayout, r as DashboardCardGrid_default, t as DashboardWidget_default } from "./DashboardWidget-CsOrr74H.js";
2
+ import { i as getWidgetLayout, r as DashboardCardGrid_default, t as DashboardWidget_default } from "./DashboardWidget-D3HStfJA.js";
3
3
  import React, { useMemo } from "react";
4
4
 
5
5
  //#region src/page/Page.jsx
6
6
  const Page = (props) => {
7
- const { gridConfig, widgetConfig, disableMargin } = props;
7
+ const { gridConfig, widgetConfig, disableMargin, autoHeight } = props;
8
8
  const { getWidget, isValidWidget } = useShellStore();
9
9
  const gridProperties = gridConfig ? JSON.parse(gridConfig) : null;
10
10
  let widgets = widgetConfig || null;
@@ -52,11 +52,12 @@ const Page = (props) => {
52
52
  return /* @__PURE__ */ React.createElement(DashboardCardGrid_default, {
53
53
  layouts,
54
54
  gridProperties,
55
- disableMargin
55
+ disableMargin,
56
+ autoHeight
56
57
  }, cards);
57
58
  };
58
59
  var Page_default = Page;
59
60
 
60
61
  //#endregion
61
62
  export { Page_default as t };
62
- //# sourceMappingURL=Page-fxgRfgm6.js.map
63
+ //# sourceMappingURL=Page-BNjiUMqy.js.map