udp-react-enterprise-component-library 25.18.1-beta.71 → 25.18.1-beta.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ActionProvider-DGzli-X1.js → ActionProvider-BGugOmjV.js} +2 -2
- package/dist/{ActionProvider-DGzli-X1.js.map → ActionProvider-BGugOmjV.js.map} +1 -1
- package/dist/{ActionSplitScreen-gKH4ISoo.js → ActionSplitScreen-D6_7PlK-.js} +4 -4
- package/dist/{ActionSplitScreen-gKH4ISoo.js.map → ActionSplitScreen-D6_7PlK-.js.map} +1 -1
- package/dist/{ActionWrapper-Bpp9Mn4j.js → ActionWrapper-DnP7lGDq.js} +4 -4
- package/dist/{ActionWrapper-Bpp9Mn4j.js.map → ActionWrapper-DnP7lGDq.js.map} +1 -1
- package/dist/{AmbientCard-CLW4bPCu.js → AmbientCard-DhAiVDYD.js} +2 -2
- package/dist/{AmbientCard-CLW4bPCu.js.map → AmbientCard-DhAiVDYD.js.map} +1 -1
- package/dist/{AmbientVisualizationCard-CAxx4QWe.js → AmbientVisualizationCard-CivQRhmD.js} +4 -4
- package/dist/{AmbientVisualizationCard-CAxx4QWe.js.map → AmbientVisualizationCard-CivQRhmD.js.map} +1 -1
- package/dist/{AmbientVisualizer-BABKxgsK.js → AmbientVisualizer-buICwVdO.js} +2 -2
- package/dist/{AmbientVisualizer-BABKxgsK.js.map → AmbientVisualizer-buICwVdO.js.map} +1 -1
- package/dist/{BioCardWrapper-B2bT-4zw.js → BioCardWrapper-D1ZOHyA4.js} +3 -3
- package/dist/{BioCardWrapper-B2bT-4zw.js.map → BioCardWrapper-D1ZOHyA4.js.map} +1 -1
- package/dist/{CrudTableSidePanel-CNEZxJi0.js → CrudTableSidePanel-Dw8gZSqR.js} +2 -2
- package/dist/{CrudTableSidePanel-CNEZxJi0.js.map → CrudTableSidePanel-Dw8gZSqR.js.map} +1 -1
- package/dist/{DashboardWidget-CsOrr74H.js → DashboardWidget-D3HStfJA.js} +26 -10
- package/dist/DashboardWidget-D3HStfJA.js.map +1 -0
- package/dist/{DataBrowserContainer-cU_EEIiR.js → DataBrowserContainer-D4gJ66IC.js} +2 -2
- package/dist/{DataBrowserContainer-cU_EEIiR.js.map → DataBrowserContainer-D4gJ66IC.js.map} +1 -1
- package/dist/{DynamicRangeSlider-prr4fg8d.js → DynamicRangeSlider-BX4kCzUd.js} +2 -2
- package/dist/{DynamicRangeSlider-prr4fg8d.js.map → DynamicRangeSlider-BX4kCzUd.js.map} +1 -1
- package/dist/{EmailDisplay-Dm8ynSko.js → EmailDisplay-DZHmPeiL.js} +2 -2
- package/dist/{EmailDisplay-Dm8ynSko.js.map → EmailDisplay-DZHmPeiL.js.map} +1 -1
- package/dist/{ExportSidesheet-DWkoiwxC.js → ExportSidesheet-BQiNzxN9.js} +4 -4
- package/dist/{ExportSidesheet-DWkoiwxC.js.map → ExportSidesheet-BQiNzxN9.js.map} +1 -1
- package/dist/{FieldArrayCard-Ds_ysYWL.js → FieldArrayCard-sEe2pmg7.js} +3 -3
- package/dist/{FieldArrayCard-Ds_ysYWL.js.map → FieldArrayCard-sEe2pmg7.js.map} +1 -1
- package/dist/{FluentListItem-_Nq3fhEY.js → FluentListItem-1fzW--Dq.js} +2 -2
- package/dist/{FluentListItem-_Nq3fhEY.js.map → FluentListItem-1fzW--Dq.js.map} +1 -1
- package/dist/{GraphCard-BhcSveF4.js → GraphCard-Bdh6VeDb.js} +2 -2
- package/dist/{GraphCard-BhcSveF4.js.map → GraphCard-Bdh6VeDb.js.map} +1 -1
- package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js → ImportDataFromFileMapping-BIcQmKll.js} +2 -2
- package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js.map → ImportDataFromFileMapping-BIcQmKll.js.map} +1 -1
- package/dist/{Inquiry-KKLgba3g.js → Inquiry-1o8EuckI.js} +12 -10
- package/dist/{Inquiry-KKLgba3g.js.map → Inquiry-1o8EuckI.js.map} +1 -1
- package/dist/Inquiry-B9U7e2Iu.js +3 -0
- package/dist/{InquirySearchContainer-DKDrIqNO.js → InquirySearchContainer-zxbukV51.js} +3 -3
- package/dist/{InquirySearchContainer-DKDrIqNO.js.map → InquirySearchContainer-zxbukV51.js.map} +1 -1
- package/dist/MenuPage-CdzHSWBt.js +3 -0
- package/dist/{MenuPage-tkkhpco5.js → MenuPage-KiNfnc7P.js} +3 -3
- package/dist/{MenuPage-tkkhpco5.js.map → MenuPage-KiNfnc7P.js.map} +1 -1
- package/dist/{MttMainTimeline-s0ANW7l-.js → MttMainTimeline-DbaaXXQv.js} +2 -2
- package/dist/{MttMainTimeline-s0ANW7l-.js.map → MttMainTimeline-DbaaXXQv.js.map} +1 -1
- package/dist/{NotesScreen-DQatppnX.js → NotesScreen-D8-QnWaB.js} +2 -2
- package/dist/{NotesScreen-DQatppnX.js.map → NotesScreen-D8-QnWaB.js.map} +1 -1
- package/dist/{PDFViewer-B4nJKbIy.js → PDFViewer-BvaqCfIS.js} +2 -2
- package/dist/{PDFViewer-B4nJKbIy.js.map → PDFViewer-BvaqCfIS.js.map} +1 -1
- package/dist/{Page-fxgRfgm6.js → Page-BNjiUMqy.js} +5 -4
- package/dist/Page-BNjiUMqy.js.map +1 -0
- package/dist/{PageActionWrapper-BBkGtnC6.js → PageActionWrapper-Bm6J0thr.js} +2 -2
- package/dist/{PageActionWrapper-BBkGtnC6.js.map → PageActionWrapper-Bm6J0thr.js.map} +1 -1
- package/dist/{PageContainer-DTXNLt_2.js → PageContainer-ButX_XVS.js} +8 -6
- package/dist/PageContainer-ButX_XVS.js.map +1 -0
- package/dist/{PageRenderer-BTkUO-hr.js → PageRenderer-hxobUKe_.js} +2 -2
- package/dist/{PageRenderer-BTkUO-hr.js.map → PageRenderer-hxobUKe_.js.map} +1 -1
- package/dist/{PaymentForm-Dum5p1mf.js → PaymentForm-BdWY9dEt.js} +2 -2
- package/dist/{PaymentForm-Dum5p1mf.js.map → PaymentForm-BdWY9dEt.js.map} +1 -1
- package/dist/{PrimaryActionHeader-DBJpROPu.js → PrimaryActionHeader-H5w3twaM.js} +3 -2
- package/dist/PrimaryActionHeader-H5w3twaM.js.map +1 -0
- package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js → RecentlyLoadedNodesTable-BzvR0L0h.js} +2 -2
- package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js.map → RecentlyLoadedNodesTable-BzvR0L0h.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js → RecentlyLoadedNodesWidget-Kt5BElrK.js} +2 -2
- package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js.map → RecentlyLoadedNodesWidget-Kt5BElrK.js.map} +1 -1
- package/dist/{RemindersScreen-Cp7lMWrE.js → RemindersScreen-BDgMIUaq.js} +2 -2
- package/dist/{RemindersScreen-Cp7lMWrE.js.map → RemindersScreen-BDgMIUaq.js.map} +1 -1
- package/dist/{Shell-BE_Aq6W2.js → Shell-Bcr0PHnd.js} +6 -6
- package/dist/{Shell-BE_Aq6W2.js.map → Shell-Bcr0PHnd.js.map} +1 -1
- package/dist/{SiteHeader-CuOFCr7D.js → SiteHeader-DmfTUOmH.js} +4 -4
- package/dist/{SiteHeader-CuOFCr7D.js.map → SiteHeader-DmfTUOmH.js.map} +1 -1
- package/dist/{SummaryBlock-BjUNDl4q.js → SummaryBlock-Q5Jf4V8A.js} +2 -2
- package/dist/{SummaryBlock-BjUNDl4q.js.map → SummaryBlock-Q5Jf4V8A.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-DuvvXDWF.js → SupportCaseSideSheet-9iAiZyOu.js} +1 -1
- package/dist/{SupportCaseSideSheet-BNec-nDN.js → SupportCaseSideSheet-CT15Dg8h.js} +2 -2
- package/dist/{SupportCaseSideSheet-BNec-nDN.js.map → SupportCaseSideSheet-CT15Dg8h.js.map} +1 -1
- package/dist/{Typography-BMsa1JYd.js → Typography-FuShOop3.js} +2 -2
- package/dist/{Typography-BMsa1JYd.js.map → Typography-FuShOop3.js.map} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/components/dataDisplay/index.js +1 -1
- package/dist/UI/components/index.js +1 -1
- package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
- package/dist/UI/dataDisplay/index.js +2 -2
- package/dist/UI/dataDisplay/typography/index.js +1 -1
- package/dist/UI/dataDisplay/visualization/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/fileViewer/pdfViewer/index.js +1 -1
- package/dist/UI/forms/index.js +1 -1
- package/dist/UI/index.js +11 -11
- package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
- package/dist/UI/mapLayout/index.js +1 -1
- package/dist/UI/support/index.js +1 -1
- package/dist/UI/surfaces/cards/AmbientCard/index.js +1 -1
- package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
- package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
- package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
- package/dist/UI/templates/newGrid/index.js +1 -1
- package/dist/UI/utilityDisplay/index.js +2 -2
- package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
- package/dist/UI/widgets/index.js +1 -1
- package/dist/UI/widgets/library/CircleGaugeWidget/index.js +1 -1
- package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
- package/dist/{UdpAuditEvents-C5p1KgV0.js → UdpAuditEvents-DotSR4R9.js} +2 -2
- package/dist/{UdpAuditEvents-C5p1KgV0.js.map → UdpAuditEvents-DotSR4R9.js.map} +1 -1
- package/dist/{UdpAuditEventsPage-CohNvZiq.js → UdpAuditEventsPage-BZ5fMCYW.js} +2 -2
- package/dist/{UdpAuditEventsPage-CohNvZiq.js.map → UdpAuditEventsPage-BZ5fMCYW.js.map} +1 -1
- package/dist/UdpAuditEventsPage-BtsmPFyR.js +3 -0
- package/dist/{UdpDataBrowserPage-DQXaWtYD.js → UdpDataBrowserPage-3fiOCSkx.js} +3 -3
- package/dist/{UdpDataBrowserPage-DQXaWtYD.js.map → UdpDataBrowserPage-3fiOCSkx.js.map} +1 -1
- package/dist/{UdpFormsSubmissionGrid-DzMuwwTO.js → UdpFormsSubmissionGrid-B3pQiK5q.js} +10 -9
- package/dist/UdpFormsSubmissionGrid-B3pQiK5q.js.map +1 -0
- package/dist/{UdpGridTemplate-OsS_O6jR.js → UdpGridTemplate-xen0Fvww.js} +2 -2
- package/dist/{UdpGridTemplate-OsS_O6jR.js.map → UdpGridTemplate-xen0Fvww.js.map} +1 -1
- package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js → UdpImportFromFileMappingPage-BxGvGFua.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js.map → UdpImportFromFileMappingPage-BxGvGFua.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js → UdpInquiryMaintenanceEnginePage-CSf7jB35.js} +2 -2
- package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js.map → UdpInquiryMaintenanceEnginePage-CSf7jB35.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js → UdpMaintenanceEnginePage-C8NLZSPb.js} +3 -3
- package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js.map → UdpMaintenanceEnginePage-C8NLZSPb.js.map} +1 -1
- package/dist/{UdpNotesPage-DCjDBqqU.js → UdpNotesPage-BABI4D2S.js} +2 -2
- package/dist/{UdpNotesPage-DCjDBqqU.js.map → UdpNotesPage-BABI4D2S.js.map} +1 -1
- package/dist/{UdpRemindersPage-CrgWmKWD.js → UdpRemindersPage-DuS3aPUk.js} +2 -2
- package/dist/{UdpRemindersPage-CrgWmKWD.js.map → UdpRemindersPage-DuS3aPUk.js.map} +1 -1
- package/dist/{UdpTransactionTypesPage-DgFxT4pz.js → UdpTransactionTypesPage-BS8Nji4M.js} +4 -3
- package/dist/UdpTransactionTypesPage-BS8Nji4M.js.map +1 -0
- package/dist/{UdpTransactionsPage-X1Wu4-CC.js → UdpTransactionsPage-DXt_i8vP.js} +6 -6
- package/dist/{UdpTransactionsPage-X1Wu4-CC.js.map → UdpTransactionsPage-DXt_i8vP.js.map} +1 -1
- package/dist/{UtilitySideBar-wvrocDGI.js → UtilitySideBar-BU3ppHrv.js} +2 -2
- package/dist/{UtilitySideBar-wvrocDGI.js.map → UtilitySideBar-BU3ppHrv.js.map} +1 -1
- package/dist/VirtualBrowser-CbL5X-W-.js +3 -0
- package/dist/{VirtualBrowser-CVs-vW3x.js → VirtualBrowser-qF1k097T.js} +2 -2
- package/dist/{VirtualBrowser-CVs-vW3x.js.map → VirtualBrowser-qF1k097T.js.map} +1 -1
- package/dist/{WorkOrderCard-s-6QK3Re.js → WorkOrderCard-geZ9o4iP.js} +2 -2
- package/dist/{WorkOrderCard-s-6QK3Re.js.map → WorkOrderCard-geZ9o4iP.js.map} +1 -1
- package/dist/{WorkflowContainer-Boj87JRI.js → WorkflowContainer-BxBxnHEY.js} +1 -1
- package/dist/{WorkflowContainer-DDGm1Cxo.js → WorkflowContainer-Drts8hsZ.js} +3 -3
- package/dist/{WorkflowContainer-DDGm1Cxo.js.map → WorkflowContainer-Drts8hsZ.js.map} +1 -1
- package/dist/{WorkflowContent-CU_-pOym.js → WorkflowContent-HlBHhWl8.js} +4 -4
- package/dist/{WorkflowContent-CU_-pOym.js.map → WorkflowContent-HlBHhWl8.js.map} +1 -1
- package/dist/{accordion--zpb1uMC.js → accordion-Ca8ECaw2.js} +3 -3
- package/dist/accordion-Ca8ECaw2.js.map +1 -0
- package/dist/{actionSummary-D0CwyTXJ.js → actionSummary-DwSHY1Tt.js} +2 -2
- package/dist/{actionSummary-D0CwyTXJ.js.map → actionSummary-DwSHY1Tt.js.map} +1 -1
- package/dist/actions/actionSummary/index.js +1 -1
- package/dist/actions/index.js +4 -4
- package/dist/{colorConverter-x64WSLsF.js → colorConverter-5PvESBA1.js} +7 -1
- package/dist/colorConverter-5PvESBA1.js.map +1 -0
- package/dist/componentSystems/multiThreadTimeline/index.js +2 -2
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
- package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
- package/dist/componentSystems/pageRenderer/index.js +3 -3
- package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dataBrowser/index.js +1 -1
- package/dist/{fileViewer-BbIFHura.js → fileViewer-C_Q-hFda.js} +4 -4
- package/dist/{fileViewer-BbIFHura.js.map → fileViewer-C_Q-hFda.js.map} +1 -1
- package/dist/{forms-BVssUn2h.js → forms-lyNriVSn.js} +3 -3
- package/dist/{forms-BVssUn2h.js.map → forms-lyNriVSn.js.map} +1 -1
- package/dist/index.js +47 -47
- package/dist/inquiry/dashboard/index.js +1 -1
- package/dist/inquiry/index.js +3 -3
- package/dist/inquiry/search/index.js +1 -1
- package/dist/layout/index.js +1 -1
- package/dist/{layout-Do6o2q2R.js → layout-IgoykV-U.js} +2 -2
- package/dist/{layout-Do6o2q2R.js.map → layout-IgoykV-U.js.map} +1 -1
- package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
- package/dist/maintenanceEngine/index.js +2 -2
- package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
- package/dist/{mapLayout-B_m2Fh8n.js → mapLayout-BlHtCf7p.js} +2 -2
- package/dist/{mapLayout-B_m2Fh8n.js.map → mapLayout-BlHtCf7p.js.map} +1 -1
- package/dist/menuPage/index.js +1 -1
- package/dist/{menuPage-7DcUM-Q3.js → menuPage-BHXchSeD.js} +2 -2
- package/dist/{menuPage-7DcUM-Q3.js.map → menuPage-BHXchSeD.js.map} +1 -1
- package/dist/{newGrid-zmtQXU5G.js → newGrid-Cx_UGQS8.js} +2 -2
- package/dist/{newGrid-zmtQXU5G.js.map → newGrid-Cx_UGQS8.js.map} +1 -1
- package/dist/notes/index.js +1 -1
- package/dist/page/PageContainer/index.js +1 -1
- package/dist/reminders/index.js +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/{routes-DafRlYVQ.js → routes-Cep1JMTf.js} +5 -5
- package/dist/{routes-DafRlYVQ.js.map → routes-Cep1JMTf.js.map} +1 -1
- package/dist/shell/index.js +2 -2
- package/dist/shell/ui/index.js +1 -1
- package/dist/types/src/UI/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/src/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.d.ts.map +1 -1
- package/dist/types/src/dashboard/DashboardCardGrid.d.ts.map +1 -1
- package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
- package/dist/types/src/page/Page.d.ts.map +1 -1
- package/dist/types/src/page/PageContainer/PageContainer.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +3 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.d.ts.map +1 -1
- package/dist/types/src/utilities/style/colorConverter.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/export/index.js +1 -1
- package/dist/udp/fileImportMapping/index.js +1 -1
- package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
- package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
- package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
- package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
- package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
- package/dist/udp/pages/UdpNotesPage/index.js +1 -1
- package/dist/udp/pages/UdpPages/index.js +10 -10
- package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
- package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
- package/dist/uploader/index.js +1 -1
- package/dist/{uploader-YWjDebFN.js → uploader-BdeUKdYW.js} +2 -2
- package/dist/{uploader-YWjDebFN.js.map → uploader-BdeUKdYW.js.map} +1 -1
- package/dist/utilities/form/paymentForm/index.js +1 -1
- package/dist/utilities/provider/index.js +1 -1
- package/dist/utilities/style/index.js +1 -1
- package/dist/{widgets-BCHN3J80.js → widgets-Bwklnxz1.js} +2 -2
- package/dist/{widgets-BCHN3J80.js.map → widgets-Bwklnxz1.js.map} +1 -1
- package/dist/{withEngineComponent-CpOJBSmx.js → withEngineComponent-Bcnxug3h.js} +2 -2
- package/dist/{withEngineComponent-CpOJBSmx.js.map → withEngineComponent-Bcnxug3h.js.map} +1 -1
- package/dist/workflow/index.js +2 -2
- package/export-map.json +1 -1
- package/package.json +1 -1
- package/dist/DashboardWidget-CsOrr74H.js.map +0 -1
- package/dist/Inquiry-C094H1jQ.js +0 -3
- package/dist/MenuPage-R6mbeCuS.js +0 -3
- package/dist/Page-fxgRfgm6.js.map +0 -1
- package/dist/PageContainer-DTXNLt_2.js.map +0 -1
- package/dist/PrimaryActionHeader-DBJpROPu.js.map +0 -1
- package/dist/UdpAuditEventsPage-BiUdXrGu.js +0 -3
- package/dist/UdpFormsSubmissionGrid-DzMuwwTO.js.map +0 -1
- package/dist/UdpTransactionTypesPage-DgFxT4pz.js.map +0 -1
- package/dist/VirtualBrowser-CcWYHhRb.js +0 -3
- package/dist/accordion--zpb1uMC.js.map +0 -1
- 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":";;;;;;;;;;;;AAIA,MAAa,kBAAkB,EAAE,kBAAkB,0BAA0B;CAC3E,MAAM,wBAAwB,OAAO,aAAa;AAChD,sBAAoB,SAAS;;CAE/B,MAAM,4BAA4B;AAChC,sBAAoB,mBAAmB,EAAE;;CAE3C,MAAM,4BAA4B;AAChC,sBAAoB,mBAAmB,EAAE;;AAE3C,QACE,oCAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,IAC7B,oCAAC,cAAW,SAAS,uBACnB,oCAAC,SAAI,OAAO,EAAE,UAAU,IAAI,IAC1B,oCAAC,sBAAkB,CACf,CACK,EACb,oCAAC;EACC,OAAO;EACP,KAAK;EACL,KAAK;EACL,MAAM;EACN,UAAU;GACV,EACF,oCAAC,cAAW,SAAS,uBACnB,oCAAC,SAAI,OAAO;EAAE,QAAQ;EAAS,UAAU;EAAI,IAC3C,oCAAC,uBAAmB,CAChB,CACK,CACT;;;;;ACNV,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,gBAAgB;EACd,iBACE;EACF,oBAAoB;EACpB,gBAAgB;EAChB,kBAAkB;EACnB;CACD,QAAQ,EACN,QAAQ,KACT;CACD,aAAa;EACX,YAAY,QAAQ,MAAM,QAAQ,OAAO,OAAO,GAAI;EACpD,OAAO,MAAM,QAAQ,OAAO;EAC5B,SAAS;EACT,YAAY;EACb;CACD,sBAAsB;EACpB,UAAU;EACV,MAAM;EACP;CACD,eAAe;EACb,WAAW;EACX,OAAO;EACR;CACD,QAAQ,EACN,WAAW,EACT,gBAAgB,gBACjB,EACF;CACF,EAAE;AAEH,MAAa,cAAc,MAAM,UAAU;CACzC,MAAM,CAAC,kBAAkB,SAAS,MAAM;CACxC,MAAM,CAAC,YAAY,iBAAiB,SAAS,GAAG;CAChD,MAAM,CAAC,UAAU,eAAe,UAAU;CAC1C,MAAM,CAAC,WAAW,gBAAgB,UAAU;CAC5C,MAAM,CAAC,SAAS,cAAc,UAAU;CACxC,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,KAAK;CAClE,MAAM,CAAC,cAAc,mBAAmB,SAAS,GAAG;CACpD,MAAM,CAAC,cAAc,mBAAmB,UAAU;CAClD,MAAM,CAAC,gBAAgB,qBAAqB,UAAU;CACtD,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,MAAM;CAC/D,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,MAAM;CAC7D,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,IAAI;CAC7D,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,EAAE;CAEzD,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,MAAM,YAAY;CAC1B,MAAM,QAAQ,UAAU;CAExB,MAAM,sBAAsB;AAE5B,iBAAgB;EACd,MAAMA,UAAQ,EAAE;AAChB,UACE,KAAK,KAAK,SAAS;AACjB,WAAM,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;IAC/B;EAGJ,MAAMC,gBAAc,CAAC,GAAG,IAAI,IAAID,QAAM,CAAC,CAAC,MAAM;AAE9C,UAAQ,aAAaC,cAAY,KAAK,SAAS;AAC/C,UAAQ,WAAWA,cAAYA,cAAY,SAAS,KAAK,SAAS;IACjE,CAAC,KAAK,CAAC;CAEV,MAAM,gBAAgB,OAAO,KAAK;AAElC,iBAAgB;AACd,oBACE,cAAc,UAAU,cAAc,QAAQ,cAAc,EAC7D;IACA,EAAE,CAAC;CAEN,IAAI,iBAAiB;CACrB,MAAM,gBAAgB;CAEtB,MAAM,uBAAuB;AAC3B,MAAI,cAAc,QAChB,mBAAkB,cAAc,QAAQ,YAAY;;AAIxD,QAAO,iBAAiB,gBAAgB;AACtC,gBAAc,eAAe;AAC7B,mBAAiB,WAAW,gBAAgB,cAAc;GAC1D;CAEF,MAAM,QAAQ,EAAE;AAChB,SACE,KAAK,KAAK,SAAS;AACjB,QAAM,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;GAC/B;CAGJ,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;CAEvC,IAAI,oBAAoB,EAAE;AAE1B,aAAY,KAAK,SAAS;AACxB,oBAAkB,KAAK,WAAW,KAAK;GACvC;CAEF,IAAI,eAAe,EAAE;AAErB,cAAa,KAAK,OAAO,kBAAkB,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;CAE9D,IAAI,iBAAiB,EAAE;AAEvB,cAAa,KAAK,SAAS;AACzB,iBAAe,KAAK,WAAW,KAAK;GACpC;AAEF,mBAAkB,KAAK,SAAS;AAC9B,iBAAe,QAAQ,KAAK;GAC5B;CAEF,MAAM,YAAY,eAAe,MAAM;CAIvC,MAAM,uBAAuB,kBAAkB;EAC7C,MAAM,UAAU,QAAQ,KAAK,KAAK,SAAS,KAAK,MAAM,CAAC,MAAM;AAO7D,SALE,QACA,WACA,QAAQ,KAAK,SAAS;AACpB,UAAO,KAAK;IACZ;IAEH,CAAC,KAAK,CAAC;CAIV,MAAM,WACJ,QACA,sBAAsB,CAAC,KAAK,SAAU,GAAG,GAAG;AAG1C,SAFU,IAAI,KAAK,EAAE,KAAK,GAChB,IAAI,KAAK,EAAE,KAAK;GAE1B;CAIJ,IAAI,oBACF,QACA,SAAS,KAAK,UAAU;EACtB,GAAG;EACH,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC,oBAAoB;EAC/C,EAAE;CAEL,SAAS,WAAW,MAAM;AACxB,SAAO,IAAI,KAAK,KAAK,CAAC,mBAAmB,QAAQ;;CAGnD,MAAM,sBAAsB,aACzB,aAAa;EACZ,MAAM,QAAQ,IAAI,KAAK,UAAU,GAAG;EACpC,MAAM,MAAM,IAAI,KAAK,UAAU,GAAG;EAElC,MAAM,aAAa,CAAC,SAAS;EAE7B,MAAM,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,oBAAoB,CAAC;EAEvD,IAAI,OAAO,IAAI,KAAK,MAAM;AAC1B,SAAO,QAAQ,KAAK;GAClB,MAAM,UAAU,KAAK,QAAQ,KAAK,SAAS,GAAG,EAAE;AAChD,UAAO,IAAI,KAAK,QAAQ;AACxB,YAAS,KAAK,KAAK,oBAAoB,CAAC;;EAG1C,MAAM,kBAAkB,SAAS,IAAI,SAAU,OAAO;AACpD,UAAO,EAAE,MAAM,OAAO;IACtB;EAEF,MAAMC,UAAQ,EAAE;AAChB,OAAK,IAAI,IAAI,GAAG,KAAK,SAAS,QAAQ,IACpC,SAAM,KAAK,EAAE;AAYf,SATiB,gBAAgB,KAAK,GAAG,OAAO;GAC9C,GAAG;GACH,OAAOA,QAAM,MAAM;GACpB,EAAE,CAGA,QAAQ,EAAE,WAAW,WAAW,SAAS,KAAK,CAAC,CAC/C,KAAK,EAAE,qBAAYA,QAAM,CACzB,UAAU;IAGf,CAAC,UAAU,CACZ;CAED,IAAI,YAAY,EAAE;AAElB,sBACE,kBAAkB,KAAK,SAAS;AAC9B,YAAU,KAAK,KAAK,KAAK;GACzB;CAEJ,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAEpC,iBAAgB;AACd,cACE,UAAU,OAAO,oBAAoB,OAAO,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GACjE;IACA,EAAE,CAAC;CAEN,MAAM,oCAAoC,aACvC,MAAM,UAAU;EACf,MAAM,aAAa,CAAC,KAAK,MAAM,KAAK,CAAC;EACrC,MAAM,WAAW,CAAC,KAAK,MAAM,MAAM,CAAC;EACpC,IAAIC,cAAY,EAAE;AAElB,uBACE,kBAAkB,KAAK,SAAS;AAC9B,eAAU,KAAK,KAAK,KAAK;IACzB;EAEJ,IAAIC,WAAS,CAAC,GAAG,IAAI,IAAID,YAAU,CAAC;EAEpC,MAAM,mBAAmB;GACvB,MAAM,aAAaC,SAAOA,SAAO,SAAS;GAC1C,MAAM,OAAO,IAAI,KAAK,WAAW;AACjC,QAAK,QAAQ,KAAK,SAAS,GAAG,EAAE;AAIhC,UAAO,GAHO,KAAK,UAAU,GAAG,EAGhB,GAFJ,KAAK,SAAS,CAEH,GADV,KAAK,aAAa;;EAIjC,MAAM,UAAU,YAAY;AAC5B,WAAO,KAAK,QAAQ;EAEpB,MAAM,kBAAkBA,SAAO,IAAI,SAAU,OAAO;AAClD,UAAO,EAAE,MAAM,OAAO;IACtB;EAEF,MAAMF,UAAQ,EAAE;AAChB,OAAK,IAAI,IAAI,GAAG,KAAKE,SAAO,QAAQ,IAClC,SAAM,KAAK,IAAI,GAAG;EAGpB,IAAI,aAAa,gBAAgB,KAAK,GAAG,OAAO;GAC9C,GAAG;GACH,OAAOF,QAAM,MAAM;GACpB,EAAE;EAEH,MAAMG,cAAY,WACf,QAAQ,EAAE,qBAAY,WAAW,SAASH,QAAM,CAAC,CACjD,KAAK,EAAE,WAAW,KAAK,CACvB,UAAU;EAEb,MAAMI,YAAU,WACb,QAAQ,EAAE,qBAAY,SAAS,SAASJ,QAAM,CAAC,CAC/C,KAAK,EAAE,WAAW,KAAK,CACvB,UAAU;AAEb,eAAaG,YAAU;AACvB,aAAWC,UAAQ;IAErB,CAAC,kBAAkB,CACpB;CAED,MAAM,iBAAiB,aAAa,eAAe;EACjD,MAAM,OAAO,WAAW;EACxB,MAAM,QAAQ,WAAW;AACzB,gBAAc,KAAK,MAAM,KAAK,CAAC;AAC/B,cAAY,KAAK,MAAM,MAAM,CAAC;IAC7B,EAAE,CAAC;CAEN,MAAM,2BAA2B;AAC/B,cAAY,kCAAkC,YAAY,SAAS;;CAIrE,MAAM,SAAS,aACZ,SAAS;EACR,MAAM,WAAW,CAAC,KAAK;EACvB,IAAIH,cAAY,EAAE;AAElB,uBACE,kBAAkB,KAAK,WAAS;AAC9B,eAAU,KAAKI,OAAK,KAAK;IACzB;EAEJ,IAAI,eAAe,EAAE;AAErB,UACE,KAAK,KAAK,WAAS;AACjB,gBAAa,KAAKA,OAAK,KAAK;IAC5B;EAEJ,IAAIH,WAAS,CAAC,GAAG,IAAI,IAAI,aAAa,CAAC;EAQvC,MAAM,kBANQA,SAAO,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,CAEpB,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,EAAE,SAAS,CAAC,CAE3C,KAAK,SAAS,KAAK,oBAAoB,CAAC,CAEtC,IAAI,SAAU,OAAO;AACjD,UAAO,EAAE,MAAM,OAAO;IACtB;EAEF,MAAMF,UAAQ,EAAE;AAChB,OAAK,IAAI,IAAI,GAAG,KAAKE,SAAO,QAAQ,IAClC,SAAM,KAAK,EAAE;AAkBf,SAfiB,gBAAgB,KAAK,GAAG,OAAO;GAC9C,GAAG;GACH,OAAOF,QAAM,MAAM;GACpB,EAAE,CAGA,QAAQ,EAAE,WAAW,SAAS,SAAS,KAAK,CAAC,CAC7C,KAAK,EAAE,qBAAYA,QAAM,CAEV,KAAK,WAAS;AAC9B,UAAOK;IACP;IAMJ,CAAC,MAAM,kBAAkB,CAC1B;CAED,SAAS,YAAY,OAAO,OAAO,YAAY;EAC7C,MAAM,aAAa,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;EAC9C,MAAM,aAAa,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;EAC9C,MAAM,WAAW,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;EAC5C,MAAM,WAAW,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;EAC5C,MAAM,YAAY,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;EAC7C,MAAM,YAAY,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;AAC7C,MAAI,eAAe,KAAK;AACtB,OAAI,YAAY,UACd,QAAO;YACE,cAAc,WACvB;QAAI,aAAa,WACf,QAAO;aACE,eAAe,YACxB;SAAI,WAAW,SACb,QAAO;;;AAIb,UAAO;SACF;AACL,OAAI,YAAY,UACd,QAAO;YACE,cAAc,WACvB;QAAI,aAAa,WACf,QAAO;aACE,eAAe,YACxB;SAAI,WAAW,SACb,QAAO;;;AAIb,UAAO;;;CAIX,SAAS,sBAAsB,QAAQ;EACrC,IAAI,cAAc,EAAE;EACpB,IAAI,UAAU;AACd,SAAO,SAAS,KAAK,MAAM;AACzB,OAAI,YAAY,WAAW,EACzB,aAAY,KAAK;IACf,UAAU,IAAI;IACd,WAAW,IAAI;IACf,WAAW,WAAW,IAAI,KAAK;IAC/B,UAAU,WAAW,IAAI,KAAK;IAC9B,OAAO,IAAI;IACX,MAAM,IAAI;IACX,CAAC;QACG;AACL,cAAU;AACV,gBAAY,SAAS,WAAW;AAC9B,SACE,IAAI,aAAa,OAAO,YACxB,IAAI,cAAc,OAAO,WACzB;AACA,UACE,YACE,WAAW,IAAI,KAAK,EACpB,WAAW,OAAO,UAAU,EAC5B,IACD,CAED,QAAO,YAAY,WAAW,IAAI,KAAK;eAEvC,YACE,WAAW,IAAI,KAAK,EACpB,WAAW,OAAO,SAAS,EAC3B,IACD,CAED,QAAO,WAAW,WAAW,IAAI,KAAK;AAExC,gBAAU;;MAEZ;;AAEJ,OAAI,QACF,aAAY,KAAK;IACf,UAAU,IAAI;IACd,WAAW,IAAI;IACf,WAAW,WAAW,IAAI,KAAK;IAC/B,UAAU,WAAW,IAAI,KAAK;IAC9B,OAAO,IAAI;IACX,MAAM,IAAI;IACX,CAAC;IAEJ;AACF,SAAO;;CAGT,IAAI,QAAQ,EAAE;AACd,sBACE,kBAAkB,KAAK,SAAS;AAC9B,QAAM,KAAK,KAAK,KAAK;GACrB;CAEJ,MAAM,QAAQ,EAAE;AAChB,MAAK,IAAI,IAAI,GAAG,KAAK,OAAO,QAAQ,IAClC,OAAM,KAAK,EAAE;CAGf,MAAM,eAAe,cAAc,IAAI,KAAK,UAAU,EAAE,CAAC,UAAU,CAAC;CACpE,MAAM,aAAa,cAAc,IAAI,KAAK,QAAQ,EAAE,CAAC,QAAQ,CAAC;CAE9D,MAAM,iBACJ,QACA,KAAK,QAAQ,SAAS;EACpB,MAAM,OAAO,IAAI,KAAK,KAAK,KAAK;AAChC,SAAO,QAAQ,gBAAgB,OAAO;GACtC;CAEJ,MAAM,qBAAqB,kBAAkB;EAC3C,MAAM,QACJ,QACA,gBAAgB,KAAK,SAAS;AAC5B,UAAO,KAAK,SAAS,UAAU,GAAG,MAAM,KAAK,UAAU,UAAU;IACjE;AAGJ,SADa,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;IAE/B,CAAC,gBAAgB,KAAK,CAAC;CAE1B,MAAM,kBAAkB,QAAQ,sBAAsB,eAAe;CAErE,MAAM,wBAAwB;CAC9B,MAAM,uBAAuB;CAI7B,MAAM,oBAAoB,KAAK,MAAM,iBAAiB,sBAAsB;CAC5E,MAAM,qBAAqB,KAAK,MAAM,iBAAiB,qBAAqB;AAE5E,iBAAgB;AAQd,mBANE,QACA,KAAK,QAAQ,SAAS;GACpB,MAAM,OAAO,IAAI,KAAK,KAAK,KAAK;AAChC,UAAO,QAAQ,gBAAgB,QAAQ;IACvC,GAE4B,OAAO;IACtC;EAAC;EAAM;EAAY;EAAa,CAAC;CAEpC,MAAM,oBAAoB,EAAE;AAE5B,iBAAgB,SAAS,SAAS;AAChC,oBAAkB,KAAK,KAAK,KAAK;GACjC;CAEF,IAAI,wBAAwB,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,CAAC;AAE3C,mBAAkB;AACjC,MAAI,wBAAwB,mBAC1B,QAAO;WACE,yBAAyB,kBAClC,QAAO;MAEP,QAAO;IAER;EAAC;EAAuB;EAAmB;EAAmB,CAAC;CAElE,MAAM,YAAY,kBAAkB;AAClC,MAAI,wBAAwB,mBAC1B,QAAO;WACE,yBAAyB,kBAClC,QAAO;MAEP,QAAO;IAER;EAAC;EAAuB;EAAmB;EAAmB,CAAC;CAElE,MAAM,YAAY,kBAAkB;AAClC,MAAI,wBAAwB,mBAC1B,QAAO;WACE,yBAAyB,kBAClC,QAAO;MAEP,QAAO;IAER;EAAC;EAAuB;EAAmB;EAAmB,CAAC;CAElE,MAAM,YAAY,yBAAyB,oBAAoB,KAAK;CAGpE,MAAM,SAAS,aACZ,UAAU,cAAc;EACvB,MAAM,QACJ,QACA,KAAK,KAAK,SAAS;AACjB,UAAO,KAAK,WAAW,MAAM,KAAK;IAClC;EASJ,MAAM,iBAPO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAER,OAAO,SAAU,GAAG,GAAG;AAC7C,KAAE,KAAK,EAAE,QAAQ,GAAG,CAAC;AACrB,UAAO;KACN,EAAE,CAAC,CAE0B,MAAM,GAAG,MACvC,EAAE,SAAS,EAAE,SAAS,IAAI,GAC3B;EAED,MAAM,cAAc,WAAW,MAAM;EAKrC,MAAM,UAJS,eAAe,KAAK,GAAG,WAAW;GAC/C,GAAG;GACH,gBAAgB;GACjB,EAAE,CACoB,OAAO,SAAU,OAAO;AAC7C,UAAO,MAAM,WAAW;IACxB;AAEF,UADc,QAAQ,MAAM,QAAQ,GAAG,iBAAiB,MACzC;IAEjB,CAAC,MAAM,UAAU,CAClB;CAED,MAAM,QAAQ,aACX,SAAS;EACR,MAAM,WAAW,CAAC,KAAK;EAEvB,IAAIJ,cAAY,EAAE;AAElB,uBACE,kBAAkB,KAAK,WAAS;AAC9B,eAAU,KAAKI,OAAK,KAAK;IACzB;EAEJ,IAAI,eAAe,EAAE;AAErB,uBACE,eAAe,KAAK,WAAS;AAC3B,gBAAa,KAAKA,OAAK,KAAK;IAC5B;EAEJ,IAAIH,WAAS,CAAC,GAAG,IAAI,IAAI,aAAa,CAAC;EAQvC,MAAM,kBANQA,SAAO,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,CAEpB,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,EAAE,SAAS,CAAC,CAE3C,KAAK,SAAS,KAAK,oBAAoB,CAAC,CAEtC,IAAI,SAAU,OAAO;AACjD,UAAO,EAAE,MAAM,OAAO;IACtB;EAEF,MAAMF,UAAQ,EAAE;AAChB,OAAK,IAAI,IAAI,GAAG,KAAKE,SAAO,QAAQ,IAClC,SAAM,KAAK,EAAE;EAGf,IAAI,aAAa,gBAAgB,KAAK,GAAG,OAAO;GAC9C,GAAG;GACH,OAAOF,QAAM,MAAM;GACpB,EAAE;EAEH,MAAM,MACJ,cACA,WACG,QAAQ,EAAE,WAAW,SAAS,SAAS,KAAK,CAAC,CAC7C,KAAK,EAAE,qBAAYA,QAAM;AAU9B,UAPE,cACA,IAAI,KAAK,WAAS;AAChB,UAAOK;IACP,IAEiB,WAAW,GAElB,WAAW,IAAI,WAAW,KAAK,MAAM,KAAK;IAE1D;EAAC;EAAmB;EAAW;EAAe,CAC/C;CAED,MAAM,QAAQ,aACX,UAAU,cAAc;EACvB,MAAM,QACJ,QACA,eAAe,KAAK,SAAS;AAC3B,UAAO,KAAK,WAAW,MAAM,KAAK;IAClC;EAIJ,MAAM,WAFO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAER,OAAO,SAAU,GAAG,GAAG;AAC7C,KAAE,KAAK,EAAE,QAAQ,GAAG,CAAC;AACrB,UAAO;KACN,EAAE,CAAC;EAMN,MAAM,iBAAiB,cAAc;GACnC,IAAI,aAAa;AACjB,aAAU,SAAS,UAAU;AAC3B,QAAI,MAAM,OAAO,MAAM,IAAI,CAAC,KAAK,WAC/B,cAAa,MAAM,OAAO,MAAM,IAAI,CAAC;KAEvC;GACF,IAAI,YAAY,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,MAAO,IAAI,EAAE,CAAE;AAC5D,aAAU,SAAS,UAAU;AAC3B,cAAU,CAAC,MAAM,OAAO,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,MAAM;KACtD;AACF,aAAU,SAAS,UAAU;AAC3B,UAAM,MAAM,GAAG,MAAM;AACnB,YAAO,CAAC,EAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,IAAI,CAAC;MACtD;KACF;AACF,UAAO,UAAU,MAAM;;EAGzB,MAAM,iBAAiB,cAAc,SAAS;EAC9C,MAAM,cAAc,WAAW,MAAM;EAKrC,MAAM,UAJS,eAAe,KAAK,GAAG,WAAW;GAC/C,GAAG;GACH,gBAAgB;GACjB,EAAE,CACoB,OAAO,SAAU,OAAO;AAC7C,UAAO,MAAM,WAAW;IACxB;AAGF,UADc,QAAQ,MAAM,QAAQ,GAAG,iBAAiB,WAAW,IACpD;IAEjB;EAAC;EAAM;EAAW;EAAW;EAAe,CAC7C;CAGD,MAAM,SAAS;EACb,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,MAAM,yBAAyB,WAAW;EAExC,MAAM,gBAAgB;AACtB,gBAAc,KAAK,SAAU,GAAG,GAAG;AACjC,UAAO,IAAI;IACX;AAOF,SAJe,cAAc,IAAI,SAAU,GAAG;AAC5C,UAAO,OAAO;IACd;;CAKJ,SAAS,oBAAoB,QAAQ;EACnC,IAAI,YAAY,EAAE;EAClB,IAAIC,UAAQ,EAAE;AACd,SAAO,SAAS,QAAQ;AACtB,OAAI,CAAC,UAAU,MAAM,SAAS,SAAS,WAAW,IAAI,KAAK,CAAC,CAC1D,WAAU,KAAK,WAAW,IAAI,KAAK,CAAC;IAEtC;AACF,YAAU,SAAS,SAAS;GAC1B,MAAM,YAAY,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG;GAC5C,MAAM,WAAW,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG;GAC3C,IAAI,WAAW;AACf,aAAU,SAAS,UAAU;IAC3B,MAAM,aAAa,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;IAC9C,MAAM,WAAW,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;AAE5C,QADkB,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG,KAE7B,YACd,eAAe,aACf,WAAW,OAAO,SAAS,MAAM,IAAI,CAAC,GAAG,CAEzC,YAAW;KAEb;AACF,OAAI,aAAa,aACf,SAAM,KAAK,SAAS;IAEtB;AACF,YAAQ,CAAC,GAAG,IAAI,IAAIA,QAAM,CAAC;AAgB3B,SAfqBA,QAAM,KAAK,SAAS;GACvC,IAAI,YAAY,EAAE;GAClB,IAAI,aAAa,EAAE;AACnB,UAAO,SAAS,QAAQ;AACtB,QAAI,WAAW,IAAI,KAAK,KAAK,WAAW,KAAK,EAAE;AAC7C,eAAU,KAAK,IAAI,SAAS;AAC5B,gBAAW,KAAK,IAAI,UAAU;;KAEhC;AACF,UAAO;IACC;IACK;IACX,WAAW;IACZ;IACD;;AAIJ,iBAAgB;EACd,MAAM,8BAAc,IAAI,KAAK;AAC7B,UACE,KAAK,SAAS,SAAS;GACrB,MAAM,cAAc,GAAG,KAAK,SAAS,GAAG,KAAK;AAC7C,eAAY,IAAI,YAAY;IAC5B;AACJ,qBAAmB,YAAY,KAAK;IACnC,CAAC,KAAK,CAAC;CA2DV,SAAS,oBAAoB,QAAQ;EACnC,IAAI,YAAY,EAAE;EAClB,IAAIA,UAAQ,EAAE;AACd,SAAO,SAAS,QAAQ;AACtB,OAAI,CAAC,UAAU,MAAM,SAAS,SAAS,WAAW,IAAI,KAAK,CAAC,CAC1D,WAAU,KAAK,WAAW,IAAI,KAAK,CAAC;IAEtC;AACF,YAAU,SAAS,SAAS;GAC1B,MAAM,YAAY,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG;GAC5C,MAAM,WAAW,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG;GAC3C,IAAI,WAAW;AACf,aAAU,SAAS,UAAU;IAC3B,MAAM,aAAa,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;IAC9C,MAAM,WAAW,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG;AAE5C,QADkB,OAAO,MAAM,MAAM,IAAI,CAAC,GAAG,KAE7B,YACd,eAAe,aACf,WAAW,OAAO,SAAS,MAAM,IAAI,CAAC,GAAG,CAEzC,YAAW;KAEb;AACF,OAAI,aAAa,aACf,SAAM,KAAK,SAAS;IAEtB;AACF,YAAQ,CAAC,GAAG,IAAI,IAAIA,QAAM,CAAC;AAC3B,UAAM,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;EAC/C,IAAI,UAAU,EAAE;AAChB,OAAK,IAAI,IAAI,GAAG,IAAIA,QAAM,QAAQ,IAChC,KACE,MAAMA,QAAM,SAAS,KACrB,OAAOA,QAAM,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,OAAOA,QAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAErE,SAAQ,KAAKA,QAAM,GAAG;AAG1B,UAAQ,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;AAgBjD,SAfqB,QAAQ,KAAK,SAAS;GACzC,IAAI,YAAY,EAAE;GAClB,IAAI,aAAa,EAAE;AACnB,UAAO,SAAS,QAAQ;AACtB,QAAI,WAAW,IAAI,KAAK,KAAK,WAAW,KAAK,EAAE;AAC7C,eAAU,KAAK,IAAI,SAAS;AAC5B,gBAAW,KAAK,IAAI,UAAU;;KAEhC;AACF,UAAO;IACC;IACK;IACX,WAAW;IACZ;IACD;;CAIJ,MAAM,SAAS,WAAW;EACxB,MAAM,WAAW,EAAE;AACnB,YACE,OAAO,KAAK,SAAS;AACnB,YAAS,KAAK,KAAK,KAAK;IACxB;EAEJ,IAAIJ,WAAS,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC;EAEnC,MAAM,yBAAQ,IAAI,MAAM,EAAC,mBAAmB,QAAQ;AAKpD,SAFmBA,SAAO,QAAQ,SAAS,KAAK,SAAS,MAAM,CAAC;;CAKlE,MAAM,gCAAgC,gBAAgB;EACpD,MAAM,aAAa,IAAI;AAEvB,SADoB,KAAK,MAAM,aAAa,IAAI;;CAIlD,MAAM,qBAAqB;CAE3B,MAAM,eAAe;CACrB,MAAM,iBAAiB;CAGvB,MAAM,wBAAwB;AA+B5B,SA9Be,oBAAoB,CAAC,KAAK,MAAM,UAAU;AACvD,UACE,oCAAC;IACC,KAAK;IACL,OAAO;KACL,UAAU;KACV,QAAQ;KACR,KAAK,MAAM;KACZ;MAED,oCAAC;IACC,WAAW,QAAQ;IACnB,OAAO,EAAE,QAAQ,cAAc;KAC/B,EACF,oCAAC,SACC,OAAO;IAEL,OAGE,kBACA,wBAAwB,WAAW,GAAG,WAAW;IACnD,QAAQ;IACR,cAAc,GAAG,MAAM,QAAQ,QAAQ;IACxC,GACD,CACE;IAER;;CAKJ,MAAM,eAAe,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC;CAGzC,MAAM,qBAAqB,EAAE,OAAO,cAAM,MAAM,WAAW;AACzD,SACE,oCAAC,aACC,oCAAC,cAAW,SAAQ,eAAY,KAAE,OAAM,IAAc,EACtD,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAEK,QAAK,IAAc,CAC/C,EACN,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAE,MAAK,IAAc,CAC/C,EACN,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAE,MAAK,IAAc,CAC/C,CACF;;CAIV,MAAM,0BAA0B,EAAE,OAAO,cAAM,MAAM,WAAW;AAC9D,SACE,oCAAC,SACC,OAAO;GACL,OAAO;GACP,cAAc;GACd,cAAc;GACd,SAAS;GACV,IAED,oCAAC,aACC,oCAAC,cAAW,SAAQ,eAAY,KAAE,OAAM,IAAc,CAClD,EACN,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAEA,QAAK,IAAc,CAC/C,EACN,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAE,MAAK,IAAc,CAC/C,EACN,oCAAC,aACC,oCAAC,cAAW,SAAQ,aAAU,KAAE,MAAK,IAAc,CAC/C,CACF;;CAMV,MAAM,eAAe,EAAE;AACvB,SACE,eAAe,KAAK,SAAS;AAC3B,eAAa,KAAK;GAChB,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,UAAU,KAAK;GAChB,CAAC;GACF;CAMJ,MAAM,6BAJuB,CAC3B,GAAG,IAAI,IAAI,aAAa,KAAK,SAAS,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,QAAQ,CACvE,CAEuD,MAAM,GAAG,MAC/D,EAAE,WAAW,EAAE,WAAW,IAAI,GAC/B;CAED,MAAM,aAAa,EAAE,iBAAiB;AACpC,SACE,oCAAC,SACC,OAAO;GACL,OAAO;GACP,QAAQ;GACR,YAAY,QAAQ,YAAY,GAAI;GACpC,cAAc,MAAM,QAAQ,EAAE;GAC/B,GACD;;CAIN,MAAM,cAAc,EAAE,OAAO,YAAY;AACvC,SACE,oCAAC,SACC,OAAO;GACL,SAAS;GACT,YAAY;GACb,IAED,oCAAC,aAAU,YAAY,MAAM,QAAS,EACtC,oCAAC,SAAI,OAAO,EAAE,YAAY,MAAM,QAAQ,EAAE,EAAE,IAC1C,oCAAC,cAAW,SAAQ,aAAW,OAAM,IAAc,CAC/C,CACF;;CAIV,MAAM,SACJ,QACA,2BAA2B,KAAK,MAAM,UAAU;AAC9C,SAAO,oCAAC;GAAW,KAAK;GAAO,OAAO,KAAK;GAAO,OAAO,KAAK;IAAS;GACvE;CAGJ,MAAM,mBAAmB,gBAAgB,cAAc;EACrD,MAAM,QACJ,QACA,eAAe,KAAK,SAAS;AAC3B,UAAO,KAAK,SAAS,UAAU,GAAG,MAAM,KAAK,UAAU,UAAU;IACjE;EAQJ,MAAM,WANO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAEJ,KAAK,SAAU,GAAG,GAAG;AAC/C,UAAO,EAAE,cAAc,EAAE;IACzB,CAE4B,OAAO,SAAU,GAAG,GAAG;AACnD,KAAE,KAAK,EAAE,QAAQ,GAAG,CAAC;AACrB,UAAO;KACN,EAAE,CAAC;EAEN,MAAM,cAAc,iBAAiB,MAAM;EAG3C,MAAM,UADS,SAAS,KAAK,GAAG,WAAW;GAAE,GAAG;GAAG,UAAU,QAAQ;GAAG,EAAE,CACnD,OAAO,SAAU,OAAO;AAC7C,UAAO,MAAM,WAAW;IACxB;AAKF,UADG,QAAQ,MAAM,QAAQ,GAAG,WAAW,WAAW,IAAI,WAAW;;CAOnE,MAAM,eAAe,EAAE,OAAO,aAAa;AACzC,SACE,oCAAC;GAAI,WAAW,QAAQ;GAAa,OAAO,EAAU,QAAQ;KAC5D,oCAAC,SAAI,WAAW,QAAQ,iBACtB,oCAAC,cAAW,SAAQ,eAAY,KAAE,OAAM,IAAc,CAClD,CACF;;CAIV,MAAM,cACJ,oCAAC,aACE,kBACC,mBACA,yBAAyB,qBACzB,oBAAoB,eAAe,CAAC,KAAK,MAAM,UAAU;AACvD,SACE,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IACV,QAAQ;IACR,MAAM,MAAM,KAAK,KAAK;IACvB;KAED,oCAAC,cAAW,cAAM,KAAK,KAAK,MAAM,IAAI,CAAC,GAAgB,CACnD;GAER,EACH,kBACC,yBAAyB,qBACzB,oBACA,oBAAoB,eAAe,CAAC,KAAK,MAAM,UAAU;AACvD,SACE,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IACV,QAAQ;IACR,MAAM,MAAM,KAAK,KAAK;IACvB;KAED,oCAAC,kBACE,sBAAsB,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CACtC,CACT;GAER,EAEH,kBACC,yBAAyB,qBACzB,MAAM,eAAe,CAAC,KAAK,SAAS;AAClC,SACE,oCAAC,SACC,OAAO;GACL,UAAU;GACV,QAAQ;GACR,MAAM,MAAM,KAAK;GAClB,IAED,oCAAC;GAAW;GAAK;KACf,oCAAC,cAAW,SAAQ,aAAU,UAAoB,CACvC,CACT;GAER,CACA;AAIR,QACE,oCAAC,aACC,oCAAC;EACC,KAAK;EACL,OAAO;GACL,UAAU;GAEV,QAAQ;GACR,UAAU;GACX;IAGA,CAAC,WACA,0DACE,oCAAC,SAAI,OAAO;EAAE,QAAQ;EAAU,UAAU;EAAY,QAAQ;EAAG,IAC9D,YACG,EAEL,QACC,QACA,wBAAwB,qBACxB,eAAe,KAAK,MAAM,UAAU;AAClC,SACE,oCAAC;GACC,KAAK;GACL,WAAW,QAAQ;GACnB,OAAO,EACL,KACE,gBACE,OAAO,KAAK,SAAS,EACrB,OAAO,KAAK,UAAU,CACvB,GAAG,GACP;KAED,oCAAC;GACC,KAAK,KAAK;GACV,OAAO,KAAK;GACZ,QAAQ,QAAQ,WAAW;IAC3B,CACE;GAER,EAEH,QACC,eAAe,KAAK,MAAM,UAAU;AAClC,SAAO,KAAK,MAAM,WAAW,IAC3B,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IACV,MAAM,MACJ,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAChD;IACD,KAAK,MAAM,KAAK,UAAU,KAAK,UAAU;IAEzC,QACE,SACA,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC,GACtD,KAAK;IAER;KAED,oCAAC;GACC,MACE,oCAAC;IACC;IACA,OAAO;KACL,OAAO,EAAE,KAAK,MAAM,KAAK,OAAO;KAChC,MAAM,KAAK;KACZ;KACD;GAEJ,KAAK,QAAQ,yBAAyB;GACtC,UAAU,MAAM,KAAK;GACrB,MAAM,KAAK;GACX,SACE,QAAQ,wBAAwB;GAElC,QACG,QACC,yBAAyB,qBACzB,OACD,QACC,yBAAyB,sBACzB;GAEJ,OACE,QAAQ,wBAAwB,qBAAqB;GAEvD;GACA,MAAM;GACN,WAAW,MAAM,KAAK;IACtB,CACE,GAEN,oCAAC,SAAI,KAAK,KAAK,MACb,oCAAC,SACC,OAAO;GACL,UAAU;GACV,MACE,MACE,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAChD,GAAG;GACN,KAAK,MAAM,KAAK,UAAU,KAAK,UAAU;GACzC,QACE,SACA,MACE,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAChD,GACD,KAAK;GACR,IAED,oCAAC;GAAS,KAAK,KAAK;GAAO,QAAQ,KAAK,MAAM;IAAU,CACpD,CACF;GAER,EAEJ,oCAAC,QAAK,IAAI,QAAQ,yBAAyB,qBACzC,oCAAC,aACE,QACC,gBAAgB,KAAK,MAAM,UAAU;AACnC,SACE,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IAEV,MAAM,MAAM,KAAK,UAAU,GAAG;IAC9B,KACE,QAAQ,wBAAwB,qBAC5B,KAAK,MAAM,KAAK,UAAU,KAAK,UAAU,GACzC,IAAI,MAAM,KAAK,UAAU,KAAK,UAAU;IAC/C;KAED,oCAAC;GACC,UAAU,KAAK;GACf,OAAO;IACL,OACE,MAAM,KAAK,SAAS,GAAG,MAAM,KAAK,UAAU,GAAG;IACjD,QACE,QAAQ,wBAAwB,qBAC5B,KACA;IACN,iBAAiB,QAAQ,MAAM,KAAK,OAAO,GAAI;IAChD;IACD,CACE;GAER,CACA,CACD,EAEN,QAAQ,wBAAwB,qBAC/B,oCAAC,aACC,oCAAC,sBAAkB,CACf,CAEP,CAGD,EAGN,oCAAC,SAAI,OAAO,EAAE,OAAO,KAAK,IACxB,oCAAC;EACmB;EACG;GACrB,CACE,EAEL,CAAC,WACA,oCAAC,SACC,OAAO;EACL,UAAU;EACV,WAAW;EACX,UAAU;EACX,IAED,oCAAC,aACE,QAAQ,sBACP,oCAAC,SACC,OAAO,EACL,UAAU,UACX,IAED,oCAAC,SAAI,KAAK,QACR,oCAAC;EACC,IAAG;EACH,MAAM;EACN,SAAS,KAAK;EACd,OAAO,iBAAiB;EACxB,QACE,YACA,6BAA6B,iBAAiB,GAAG;EAEnD,cAAc,CAAC,IAAI,OAAO,SAAS,GAAG;EACtC,KAAK,OAAO,SAAS;EACrB,KAAK;EACL,gBAAgB;EAChB,gBAAgB;EAChB,UAAU,MAAM,eAAe,EAAE;GACjC,CACE,CACF,EAGR,oCAAC,aACE,QACC,KAAK,KAAK,MAAM,UAAU;AACxB,SAAO,KAAK,MAAM,WAAW,IAC3B,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IACV,MACE,qBACA,OACE,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAChD,IACE,iBAAiB,OAAO,WACxB,qBAAqB;IAC1B,KACE,OAAO,KAAK,UAAU,KAAK,UAAU,GACnC,mBACF,sBACA;IACH;KAED,oCAAC;GACC,MAAM,KAAK,MAAM,GAAG,QAAQ;GAC5B,OACE,oCAAC;IACC,OAAO,KAAK,MAAM,GAAG,QAAQ;IAC7B,MAAM,KAAK,MAAM,GAAG,QAAQ;IAC5B,MAAM,KAAK,MAAM,GAAG,QAAQ;KAE5B;IAEJ,CACE,GAEN,oCAAC,SAAI,KAAK,KAAK,MACb,oCAAC,SACC,OAAO;GACL,UAAU;GACV,MACE,qBACA,OACE,IAAI,KAAK,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAChD,IACE,iBAAiB,OAAO,WACxB,qBAAqB;GAC1B,KACE,OAAO,KAAK,UAAU,KAAK,UAAU,GACnC,mBACF,sBACA;GACH,IAED,oCAAC;GACC,OACE,oCAAC,SAAI,OAAO,EAAE,OAAO,SAAS,IAC3B,KAAK,MAAM,KAAK,WAAS;AACxB,WACE,oCAAC;KACC,OAAOF,OAAK,QAAQ;KACpB,MAAMA,OAAK,QAAQ;KACnB,KAAKA,OAAK;MACV;KAEJ,CACE;GAER;KAEC,KAAK,MAAM,OACK,CACf,CACF;GAER,CACA,CACF,CACF,EAIR,oCAAC,SAAI,OAAO;EAAE,UAAU;EAAY,KAAK;EAAG,MAAM;EAAG,QAAQ;EAAI,IAC9D,WACC,aAAa,KAAK,MAAM,UAAU;AAChC,SACE,oCAAC;GACC,KAAK;GACL,OAAO;IACL,UAAU;IACV,MAAM,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAG,GAAG,KAAK;IAC5C,MAAM,QAAQ,KAAK;IACpB;KAED,oCAAC;GAAsB;GAAkB;IAAW,CAChD;GAER,CACA,EAIL,yBAAyB,qBACxB,oCAAC,SACC,OAAO;EACL,UAAU;EACV,OAAO;EACP,KAAK;EACL,QAAQ;EACR,YAAY;EACZ,cAAc;EACf,IAED,oCAAC,SACC,OAAO;EACL,SAAS;EACT,SAAS,MAAM,QAAQ,EAAE;EACzB,KAAK,MAAM,QAAQ,EAAE;EACtB,IAEA,QAED,oCAAC;EACC,WAAW,QAAQ;EACnB,eAAe,oBAAoB,CAAC,iBAAiB;IAErD,oCAAC,UACC,OAAO,EAAE,gBAAgB,CAAC,oBAAoB,gBAAgB,IAC/D,IAEM,CACA,EACT,oCAAC;EACC,WAAW,QAAQ;EACnB,eAAe,mBAAmB,CAAC,gBAAgB;IAEnD,oCAAC,UACC,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,gBAAgB,IAC9D,IAEM,CACA,CACL,CACF,CAuCJ;EAER;;;;AC3gDF,MAAa,mBAAmB,UAAU;CACxC,MAAM,EAAE,6BAA6B,SAAS,EAAE,KAAK;CACrD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,MAAM,CAAC,MAAM,WAAW,UAAU;CAClC,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAE7C,MAAM,uBAAuB,YAC3B,OAAO,qBAAqB,SAAO,EAAE,KACnC,UACE,cAAc,qBACd,kCAAkC,uBAClC,EACE,QAAQ,QACT,EACD,EAAE,MAAMG,QAAM,CACf,EACH,EAAE,CACH;AAED,iBAAgB;EACd,MAAM,uBAAuB,YAAY;GACvC,MAAM,mBAAmB,MAAM,qBAC7B,4BACD,CAAC,OAAO,MAAM,EAAE;AAEjB,OAAI,kBAAkB,WAAW,IAC/B,oBAAmB,kBAAkB,MAAM,YAAY,EAAE,CAAC;;AAG9D,wBAAsB;IACrB,CAAC,sBAAsB,4BAA4B,CAAC;AAEvD,iBAAgB;EACd,MAAM,oBAAoB,YAAY;AACpC,OAAI,CAAC,gBACH,QAAO;AAET,cAAW,KAAK;GAChB,MAAM,WAAW,EAAE;GACnB,MAAM,aAAa,EAAE;AACrB,mBAAgB,SAAS,WAAW;AAClC,aAAS,KAAK,qBAAqB,OAAO,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC;KAClE;AACF,SAAM,QAAQ,IACZ,SAAS,KAAK,MACZ,EAAE,OAAO,MAAM;AACb,eAAW,MAAM;AACjB,WAAO;KACP,CACH,CACF,CAAC,MAAM,cAAc;AACpB,cAAU,SAAS,UAAU,UAAU;AACrC,SAAI,SAAS,WAAW,KAAK;MAC3B,MAAM,iBAAiB,gBAAgB;AACvC,UAAI,UAAU,MAAM,UAAU;AAC5B,gBAAS,KAAK,SAAS,SACpB,QAAS,IAAI,WAAW,eAAe,KACzC;OACD,MAAM,SAAS;QACb,GAAG;QACH,QAAQ,SAAS,KAAK;QACvB;AACD,kBAAW,KAAK,OAAO;;;MAG3B;AACF,eAAW,MAAM;KACjB;AACF,WAAQ,gDAAgD,WAAW,CAAC;;AAEtE,qBAAmB;IAClB;EAAC;EAAsB;EAAiB;EAAO,CAAC;AAEnD,QAAO,oCAAC;EAAkB;EAAe;GAAW"}
|
|
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-
|
|
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-
|
|
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":"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"}
|
|
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-
|
|
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-
|
|
169
|
+
//# sourceMappingURL=PDFViewer-BvaqCfIS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFViewer-
|
|
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-
|
|
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-
|
|
63
|
+
//# sourceMappingURL=Page-BNjiUMqy.js.map
|