udp-react-enterprise-component-library 25.18.1-beta.36 → 25.18.1-beta.37
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-BiXGsnVD.js → ActionProvider-Baw1T6NO.js} +4 -4
- package/dist/{ActionProvider-BiXGsnVD.js.map → ActionProvider-Baw1T6NO.js.map} +1 -1
- package/dist/{ActionSplitScreen-B6CwvyKz.js → ActionSplitScreen-iHYpf5b3.js} +5 -5
- package/dist/{ActionSplitScreen-B6CwvyKz.js.map → ActionSplitScreen-iHYpf5b3.js.map} +1 -1
- package/dist/{ActionWrapper-D_kTqDlx.js → ActionWrapper-BFnTN0Yg.js} +8 -8
- package/dist/{ActionWrapper-D_kTqDlx.js.map → ActionWrapper-BFnTN0Yg.js.map} +1 -1
- package/dist/{AggregateChip-CMsjzRuS.js → AggregateChip-VJ-QIBJt.js} +3 -3
- package/dist/{AggregateChip-CMsjzRuS.js.map → AggregateChip-VJ-QIBJt.js.map} +1 -1
- package/dist/{AmChart-CGJv7thW.js → AmChart-CVhkLkUN.js} +1 -1
- package/dist/{AmChart-CGJv7thW.js.map → AmChart-CVhkLkUN.js.map} +1 -1
- package/dist/{AmbientGridTemplate-d8EoaQH7.js → AmbientGridTemplate-VCZhDcIf.js} +4 -4
- package/dist/{AmbientGridTemplate-d8EoaQH7.js.map → AmbientGridTemplate-VCZhDcIf.js.map} +1 -1
- package/dist/{AmbientSingleDateSelector-DwyiHvnP.js → AmbientSingleDateSelector-6GlRqv6f.js} +1 -1
- package/dist/{AmbientSingleDateSelector-DwyiHvnP.js.map → AmbientSingleDateSelector-6GlRqv6f.js.map} +1 -1
- package/dist/{AmbientStepper-D9NzCqa8.js → AmbientStepper-Dv1WH2x1.js} +6 -6
- package/dist/{AmbientStepper-D9NzCqa8.js.map → AmbientStepper-Dv1WH2x1.js.map} +1 -1
- package/dist/{AmbientVisualizationCard-Ci615JQM.js → AmbientVisualizationCard-BAGEKWJD.js} +3 -3
- package/dist/{AmbientVisualizationCard-Ci615JQM.js.map → AmbientVisualizationCard-BAGEKWJD.js.map} +1 -1
- package/dist/{AmbientVisualizer-B6kX3oPX.js → AmbientVisualizer-DQb7oRtt.js} +1 -1
- package/dist/{AmbientVisualizer-B6kX3oPX.js.map → AmbientVisualizer-DQb7oRtt.js.map} +1 -1
- package/dist/{AppMenu-umGrUP24.js → AppMenu-j_DFeCLT.js} +2 -2
- package/dist/{AppMenu-umGrUP24.js.map → AppMenu-j_DFeCLT.js.map} +1 -1
- package/dist/{BarChartWidget-Byhkw_b2.js → BarChartWidget-CBuIqMLi.js} +1 -1
- package/dist/{BarChartWidget-Byhkw_b2.js.map → BarChartWidget-CBuIqMLi.js.map} +1 -1
- package/dist/{BaseTreeMenu-BhAbJoRI.js → BaseTreeMenu-B4d--j95.js} +4 -4
- package/dist/{BaseTreeMenu-BhAbJoRI.js.map → BaseTreeMenu-B4d--j95.js.map} +1 -1
- package/dist/{BioCardWrapper-C6nBREs6.js → BioCardWrapper-BgaHtBHX.js} +2 -2
- package/dist/{BioCardWrapper-C6nBREs6.js.map → BioCardWrapper-BgaHtBHX.js.map} +1 -1
- package/dist/{BubbleWidget-DgZ62Qgp.js → BubbleWidget-Do4wzp65.js} +2 -2
- package/dist/{BubbleWidget-DgZ62Qgp.js.map → BubbleWidget-Do4wzp65.js.map} +1 -1
- package/dist/{BulkActionsGridButton-BqQVX9xA.js → BulkActionsGridButton-h4xG4HUd.js} +3 -3
- package/dist/{BulkActionsGridButton-BqQVX9xA.js.map → BulkActionsGridButton-h4xG4HUd.js.map} +1 -1
- package/dist/{CardList-FnAeVtYc.js → CardList-ClQJc1cb.js} +1 -1
- package/dist/{CardList-FnAeVtYc.js.map → CardList-ClQJc1cb.js.map} +1 -1
- package/dist/{CircleButton-DzJjhCYd.js → CircleButton-cl6mmDmn.js} +2 -2
- package/dist/{CircleButton-DzJjhCYd.js.map → CircleButton-cl6mmDmn.js.map} +1 -1
- package/dist/{CircleGaugeWidget-CmhDHqSL.js → CircleGaugeWidget-DpusOc7_.js} +1 -1
- package/dist/{CircleGaugeWidget-CmhDHqSL.js.map → CircleGaugeWidget-DpusOc7_.js.map} +1 -1
- package/dist/{ContentContainer-CIYq-KgJ.js → ContentContainer-BsADv-yT.js} +1 -1
- package/dist/{ContentContainer-CIYq-KgJ.js.map → ContentContainer-BsADv-yT.js.map} +1 -1
- package/dist/{CrudBrowserContainer-DI5Ad2Fs.js → CrudBrowserContainer-C9184dly.js} +2 -2
- package/dist/{CrudBrowserContainer-DI5Ad2Fs.js.map → CrudBrowserContainer-C9184dly.js.map} +1 -1
- package/dist/{CrudForm-DeevwuDd.js → CrudForm-CDbgz4Ki.js} +2 -2
- package/dist/{CrudForm-DeevwuDd.js.map → CrudForm-CDbgz4Ki.js.map} +1 -1
- package/dist/{CrudTableSidePanel-BNnuDNZS.js → CrudTableSidePanel-Bmw3Xftc.js} +3 -3
- package/dist/{CrudTableSidePanel-BNnuDNZS.js.map → CrudTableSidePanel-Bmw3Xftc.js.map} +1 -1
- package/dist/{DataBrowserContainer-nr4cDIBD.js → DataBrowserContainer-r-AWYMmq.js} +6 -6
- package/dist/{DataBrowserContainer-nr4cDIBD.js.map → DataBrowserContainer-r-AWYMmq.js.map} +1 -1
- package/dist/{DateTrendWidget-Di_sMLMg.js → DateTrendWidget-CWrblk64.js} +1 -1
- package/dist/{DateTrendWidget-Di_sMLMg.js.map → DateTrendWidget-CWrblk64.js.map} +1 -1
- package/dist/{DensePlotWidget-BjNgsZMp.js → DensePlotWidget-C6UlwnqI.js} +1 -1
- package/dist/{DensePlotWidget-BjNgsZMp.js.map → DensePlotWidget-C6UlwnqI.js.map} +1 -1
- package/dist/{Directory-BnhL-K3q.js → Directory-DvGh-Lfv.js} +1 -1
- package/dist/{Directory-BnhL-K3q.js.map → Directory-DvGh-Lfv.js.map} +1 -1
- package/dist/{EntityHeader-bK94krmA.js → EntityHeader-BPt9Q1cN.js} +4 -4
- package/dist/{EntityHeader-bK94krmA.js.map → EntityHeader-BPt9Q1cN.js.map} +1 -1
- package/dist/{FieldArrayCard-Dc9XMy05.js → FieldArrayCard-DhHMT4er.js} +3 -3
- package/dist/{FieldArrayCard-Dc9XMy05.js.map → FieldArrayCard-DhHMT4er.js.map} +1 -1
- package/dist/{FileUpload-CHoEtVre.js → FileUpload-BZxNg52V.js} +1 -1
- package/dist/{FileUpload-CHoEtVre.js.map → FileUpload-BZxNg52V.js.map} +1 -1
- package/dist/{FluentCardHeader-CsQtNtjK.js → FluentCardHeader-DhVrZpGP.js} +1 -1
- package/dist/{FluentCardHeader-CsQtNtjK.js.map → FluentCardHeader-DhVrZpGP.js.map} +1 -1
- package/dist/{FluentCell-Dm8aaWes.js → FluentCell-CedZugOG.js} +2 -2
- package/dist/{FluentCell-Dm8aaWes.js.map → FluentCell-CedZugOG.js.map} +1 -1
- package/dist/{FluentDataTable-n4F_YwWi.js → FluentDataTable-CfZvFZIp.js} +2 -2
- package/dist/{FluentDataTable-n4F_YwWi.js.map → FluentDataTable-CfZvFZIp.js.map} +1 -1
- package/dist/{FluentLink-ChTXAsZZ.js → FluentLink-DS45dlRc.js} +1 -1
- package/dist/{FluentLink-ChTXAsZZ.js.map → FluentLink-DS45dlRc.js.map} +1 -1
- package/dist/{FluentProfileMenuCard-BdLCpdPv.js → FluentProfileMenuCard-RU7wosYK.js} +5 -5
- package/dist/{FluentProfileMenuCard-BdLCpdPv.js.map → FluentProfileMenuCard-RU7wosYK.js.map} +1 -1
- package/dist/{FluentRadioGroup-CafyJl31.js → FluentRadioGroup-c7Gm4njz.js} +1 -1
- package/dist/{FluentRadioGroup-CafyJl31.js.map → FluentRadioGroup-c7Gm4njz.js.map} +1 -1
- package/dist/{FluentSelectMenu-BlGxxA1Z.js → FluentSelectMenu-DWwJk0Gh.js} +1 -1
- package/dist/{FluentSelectMenu-BlGxxA1Z.js.map → FluentSelectMenu-DWwJk0Gh.js.map} +1 -1
- package/dist/{FluentSimpleSelect-BxLwVTnc.js → FluentSimpleSelect-DCrJDofS.js} +2 -2
- package/dist/{FluentSimpleSelect-BxLwVTnc.js.map → FluentSimpleSelect-DCrJDofS.js.map} +1 -1
- package/dist/{FluentTimePicker-CtijxH02.js → FluentTimePicker-C9wwQ3wX.js} +1 -1
- package/dist/{FluentTimePicker-CtijxH02.js.map → FluentTimePicker-C9wwQ3wX.js.map} +1 -1
- package/dist/{FluentTimeline-B-6cg-o7.js → FluentTimeline--7ISkVOo.js} +1 -1
- package/dist/{FluentTimeline-B-6cg-o7.js.map → FluentTimeline--7ISkVOo.js.map} +1 -1
- package/dist/{GaugeWidget-BT7YuEQO.js → GaugeWidget-DFZwCzN6.js} +1 -1
- package/dist/{GaugeWidget-BT7YuEQO.js.map → GaugeWidget-DFZwCzN6.js.map} +1 -1
- package/dist/{GraphCard-TjBoeauz.js → GraphCard-C-nGs4y1.js} +1 -1
- package/dist/{GraphCard-TjBoeauz.js.map → GraphCard-C-nGs4y1.js.map} +1 -1
- package/dist/{GridFunctions-Chj_vcVe.js → GridFunctions-CRTDIOe0.js} +2 -2
- package/dist/{GridFunctions-Chj_vcVe.js.map → GridFunctions-CRTDIOe0.js.map} +1 -1
- package/dist/{GroupNode-D1aehQ7K.js → GroupNode-Djp62Urb.js} +2 -2
- package/dist/{GroupNode-D1aehQ7K.js.map → GroupNode-Djp62Urb.js.map} +1 -1
- package/dist/{IconKey-DKiQELkd.js → IconKey-CayWYYXb.js} +1 -1
- package/dist/{IconKey-DKiQELkd.js.map → IconKey-CayWYYXb.js.map} +1 -1
- package/dist/{IconRenderer-DFpfUgfn.js → IconRenderer-B6ZoqrTX.js} +2 -2
- package/dist/{IconRenderer-DFpfUgfn.js.map → IconRenderer-B6ZoqrTX.js.map} +1 -1
- package/dist/{ImportDataFromFileMapping-BL5MOAS-.js → ImportDataFromFileMapping-CZQe7oHY.js} +2 -2
- package/dist/{ImportDataFromFileMapping-BL5MOAS-.js.map → ImportDataFromFileMapping-CZQe7oHY.js.map} +1 -1
- package/dist/{LineAndSparklinesWidget-CWnA37yw.js → LineAndSparklinesWidget-CsbQ4V9K.js} +1 -1
- package/dist/{LineAndSparklinesWidget-CWnA37yw.js.map → LineAndSparklinesWidget-CsbQ4V9K.js.map} +1 -1
- package/dist/{LineGraphWidget-DOJF9RDB.js → LineGraphWidget-fMmDKCHt.js} +1 -1
- package/dist/{LineGraphWidget-DOJF9RDB.js.map → LineGraphWidget-fMmDKCHt.js.map} +1 -1
- package/dist/MenuPage-NcImSCbx.js +3 -0
- package/dist/{MenuPage-CEqDX-_3.js → MenuPage-l6jiWcbB.js} +4 -4
- package/dist/{MenuPage-CEqDX-_3.js.map → MenuPage-l6jiWcbB.js.map} +1 -1
- package/dist/{MttMainTimeline-rLgkgX8U.js → MttMainTimeline-CW0QNrZw.js} +2 -2
- package/dist/{MttMainTimeline-rLgkgX8U.js.map → MttMainTimeline-CW0QNrZw.js.map} +1 -1
- package/dist/{MttSummary-DeCFHat3.js → MttSummary-CGTFEyQB.js} +3 -3
- package/dist/{MttSummary-DeCFHat3.js.map → MttSummary-CGTFEyQB.js.map} +1 -1
- package/dist/MyExportsPage-CkmqBYdn.js +3 -0
- package/dist/{MyExportsPage-Aapj7fCZ.js → MyExportsPage-DKkxU7yl.js} +3 -3
- package/dist/{MyExportsPage-Aapj7fCZ.js.map → MyExportsPage-DKkxU7yl.js.map} +1 -1
- package/dist/{NewsCard-BBh7InGE.js → NewsCard-C4g0OUT_.js} +1 -1
- package/dist/{NewsCard-BBh7InGE.js.map → NewsCard-C4g0OUT_.js.map} +1 -1
- package/dist/{Notes-CKryM0aj.js → Notes-MpEDLM1w.js} +1 -1
- package/dist/{Notes-CKryM0aj.js.map → Notes-MpEDLM1w.js.map} +1 -1
- package/dist/{NotesScreen-9Y5eOiU1.js → NotesScreen-DWfxRWOF.js} +6 -6
- package/dist/{NotesScreen-9Y5eOiU1.js.map → NotesScreen-DWfxRWOF.js.map} +1 -1
- package/dist/{OutlookCallback-CnRfyIik.js → OutlookCallback-B4JgQHYB.js} +1 -1
- package/dist/{OutlookCallback-CnRfyIik.js.map → OutlookCallback-B4JgQHYB.js.map} +1 -1
- package/dist/{PageActionWrapper-QgeZfyDl.js → PageActionWrapper-D0NcrIw5.js} +3 -3
- package/dist/{PageActionWrapper-QgeZfyDl.js.map → PageActionWrapper-D0NcrIw5.js.map} +1 -1
- package/dist/{PageNotFoundRoute-BAlMpeF8.js → PageNotFoundRoute-CQzy18Sw.js} +1 -1
- package/dist/{PageNotFoundRoute-BAlMpeF8.js.map → PageNotFoundRoute-CQzy18Sw.js.map} +1 -1
- package/dist/{PageNotFoundRoute-CLhbx6VD.js → PageNotFoundRoute-CsgaQRPa.js} +1 -1
- package/dist/{PageRenderer-BDRCRdNS.js → PageRenderer-uHAdepVs.js} +2 -2
- package/dist/{PageRenderer-BDRCRdNS.js.map → PageRenderer-uHAdepVs.js.map} +1 -1
- package/dist/{PaymentForm-Cw-6-woy.js → PaymentForm-ErYvUdUC.js} +27 -27
- package/dist/{PaymentForm-Cw-6-woy.js.map → PaymentForm-ErYvUdUC.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesTable-B28Q8F1Y.js → RecentlyLoadedNodesTable-CK3mVYCX.js} +2 -2
- package/dist/{RecentlyLoadedNodesTable-B28Q8F1Y.js.map → RecentlyLoadedNodesTable-CK3mVYCX.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesWidget-BgdSOq6I.js → RecentlyLoadedNodesWidget-D-cwlG4S.js} +2 -2
- package/dist/{RecentlyLoadedNodesWidget-BgdSOq6I.js.map → RecentlyLoadedNodesWidget-D-cwlG4S.js.map} +1 -1
- package/dist/{RejectIcon-dXvOFAlm.js → RejectIcon-yYl-EGWG.js} +1 -1
- package/dist/{RejectIcon-dXvOFAlm.js.map → RejectIcon-yYl-EGWG.js.map} +1 -1
- package/dist/{RemindersCard-z4dtBhhT.js → RemindersCard-b0Z_AUu4.js} +4 -4
- package/dist/{RemindersCard-z4dtBhhT.js.map → RemindersCard-b0Z_AUu4.js.map} +1 -1
- package/dist/{RemindersScreen-DQD_XKIp.js → RemindersScreen-BOsf651X.js} +6 -6
- package/dist/{RemindersScreen-DQD_XKIp.js.map → RemindersScreen-BOsf651X.js.map} +1 -1
- package/dist/{RemindersWidget-DMWlbmbX.js → RemindersWidget-CMNGJkAt.js} +5 -5
- package/dist/{RemindersWidget-DMWlbmbX.js.map → RemindersWidget-CMNGJkAt.js.map} +1 -1
- package/dist/{SearchServiceDatasource-Ci4OIAl1.js → SearchServiceDatasource-DhJk0qU3.js} +3 -3
- package/dist/{SearchServiceDatasource-Ci4OIAl1.js.map → SearchServiceDatasource-DhJk0qU3.js.map} +1 -1
- package/dist/{SearchUtilities-On0QS5vE.js → SearchUtilities-CNz302LN.js} +2 -2
- package/dist/{SearchUtilities-On0QS5vE.js.map → SearchUtilities-CNz302LN.js.map} +1 -1
- package/dist/{Shell-CGogIHh_.js → Shell-D7FDH0KZ.js} +6 -6
- package/dist/{Shell-CGogIHh_.js.map → Shell-D7FDH0KZ.js.map} +1 -1
- package/dist/{ShortcutContentFinder-D52eFY1l.js → ShortcutContentFinder-DkWVHF1Q.js} +5 -5
- package/dist/{ShortcutContentFinder-D52eFY1l.js.map → ShortcutContentFinder-DkWVHF1Q.js.map} +1 -1
- package/dist/{SimpleTable-CqvnDTLl.js → SimpleTable-BI6LwXgh.js} +1 -1
- package/dist/{SimpleTable-CqvnDTLl.js.map → SimpleTable-BI6LwXgh.js.map} +1 -1
- package/dist/{SparsePlotWidget-H4lx8Kaz.js → SparsePlotWidget-DBAY2rX7.js} +1 -1
- package/dist/{SparsePlotWidget-H4lx8Kaz.js.map → SparsePlotWidget-DBAY2rX7.js.map} +1 -1
- package/dist/{Statistic-CBbuk5HT.js → Statistic-0UgK8lPL.js} +2 -2
- package/dist/{Statistic-CBbuk5HT.js.map → Statistic-0UgK8lPL.js.map} +1 -1
- package/dist/{StatusCellRenderer-CLU8uo3Q.js → StatusCellRenderer-DDWwna7U.js} +1 -1
- package/dist/{StatusCellRenderer-CLU8uo3Q.js.map → StatusCellRenderer-DDWwna7U.js.map} +1 -1
- package/dist/{TableContainer-CJe7qOlC.js → TableContainer-DugYuSJF.js} +3 -3
- package/dist/{TableContainer-CJe7qOlC.js.map → TableContainer-DugYuSJF.js.map} +1 -1
- package/dist/{TenantProvider-DL25tmB1.js → TenantProvider-ByI6uAoc.js} +2 -2
- package/dist/{TenantProvider-DL25tmB1.js.map → TenantProvider-ByI6uAoc.js.map} +1 -1
- package/dist/{TicketCard-DQGB9AgD.js → TicketCard-DBaKP94u.js} +1 -1
- package/dist/{TicketCard-DQGB9AgD.js.map → TicketCard-DBaKP94u.js.map} +1 -1
- package/dist/{TimelineCalendar-C0xE1Q04.js → TimelineCalendar-Wjv3XhN5.js} +1 -1
- package/dist/{TimelineCalendar-C0xE1Q04.js.map → TimelineCalendar-Wjv3XhN5.js.map} +1 -1
- package/dist/{TokenGroupItem-DLU0AK1S.js → TokenGroupItem-DBHuBDVC.js} +1 -1
- package/dist/{TokenGroupItem-DLU0AK1S.js.map → TokenGroupItem-DBHuBDVC.js.map} +1 -1
- package/dist/{TreeUtilities-CujOFOPm.js → TreeUtilities-kiPupulY.js} +4 -4
- package/dist/{TreeUtilities-CujOFOPm.js.map → TreeUtilities-kiPupulY.js.map} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
- package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
- package/dist/UI/dataDisplay/calendar/index.js +1 -1
- package/dist/UI/dataDisplay/cardList/index.js +1 -1
- package/dist/UI/dataDisplay/directory/index.js +1 -1
- package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
- package/dist/UI/dataDisplay/index.js +1 -1
- package/dist/UI/dataDisplay/map/index.js +1 -1
- package/dist/UI/dataDisplay/notes/index.js +1 -1
- package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
- package/dist/UI/dataDisplay/visualization/amCharts/index.js +1 -1
- package/dist/UI/dataDisplay/visualization/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/floorplans/index.js +1 -1
- package/dist/UI/forms/index.js +1 -1
- package/dist/UI/index.js +14 -14
- package/dist/UI/inputs/calendar/index.js +1 -1
- package/dist/UI/inputs/dateRangeSelector/index.js +1 -1
- package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
- package/dist/UI/inputs/link/index.js +1 -1
- package/dist/UI/inputs/menus/AmbientStepper/index.js +1 -1
- package/dist/UI/inputs/menus/index.js +2 -2
- package/dist/UI/inputs/pickers/index.js +2 -2
- package/dist/UI/inputs/radio/index.js +1 -1
- package/dist/UI/mapLayout/index.js +1 -1
- package/dist/UI/mapLayout/ui/index.js +1 -1
- package/dist/UI/navigation/index.js +1 -1
- package/dist/UI/navigation/menus/index.js +1 -1
- package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
- package/dist/UI/surfaces/cards/fluentCards/index.js +1 -1
- package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
- package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
- package/dist/UI/templates/calendar/index.js +1 -1
- package/dist/UI/templates/deprecated/AmbientGridTemplate/index.js +1 -1
- package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
- package/dist/UI/templates/ui/index.js +1 -1
- package/dist/UI/templates/ui/renderers/index.js +2 -2
- package/dist/UI/timeline/fluentTimeline/index.js +1 -1
- package/dist/UI/timeline/index.js +1 -1
- package/dist/UI/utilityDisplay/alerts/index.js +1 -1
- package/dist/UI/utilityDisplay/index.js +5 -5
- package/dist/UI/utilityDisplay/utilities/index.js +1 -1
- package/dist/UI/widgets/library/BarChartWidget/index.js +1 -1
- package/dist/UI/widgets/library/BubbleWidget/index.js +1 -1
- package/dist/UI/widgets/library/CircleGaugeWidget/index.js +1 -1
- package/dist/UI/widgets/library/DateTrendWidget/index.js +1 -1
- package/dist/UI/widgets/library/DensePlotWidget/index.js +1 -1
- package/dist/UI/widgets/library/GaugeWidget/index.js +1 -1
- package/dist/UI/widgets/library/LineAndSparklinesWidget/index.js +1 -1
- package/dist/UI/widgets/library/LineGraphWidget/index.js +1 -1
- package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
- package/dist/UI/widgets/library/RemindersWidget/index.js +1 -1
- package/dist/UI/widgets/library/SparsePlotWidget/index.js +1 -1
- package/dist/UI/widgets/library/TableWidget/index.js +1 -1
- package/dist/{UdpAlertsContainer-CsQfN0Cg.js → UdpAlertsContainer-CE63vJ1B.js} +4 -4
- package/dist/{UdpAlertsContainer-CsQfN0Cg.js.map → UdpAlertsContainer-CE63vJ1B.js.map} +1 -1
- package/dist/{UdpAuditEvents-CbCZ5ND-.js → UdpAuditEvents-CiPHLRN-.js} +2 -2
- package/dist/{UdpAuditEvents-CbCZ5ND-.js.map → UdpAuditEvents-CiPHLRN-.js.map} +1 -1
- package/dist/UdpAuditEventsPage-CGWixtmq.js +3 -0
- package/dist/{UdpAuditEventsPage-BfwuxYxk.js → UdpAuditEventsPage-CzgzFO4P.js} +3 -3
- package/dist/{UdpAuditEventsPage-BfwuxYxk.js.map → UdpAuditEventsPage-CzgzFO4P.js.map} +1 -1
- package/dist/{UdpCalendarYearView-TZowGC77.js → UdpCalendarYearView-Djr7YCT3.js} +1 -1
- package/dist/{UdpCalendarYearView-TZowGC77.js.map → UdpCalendarYearView-Djr7YCT3.js.map} +1 -1
- package/dist/{UdpDataBrowserPage-C746qBki.js → UdpDataBrowserPage-BsR670I7.js} +7 -7
- package/dist/{UdpDataBrowserPage-C746qBki.js.map → UdpDataBrowserPage-BsR670I7.js.map} +1 -1
- package/dist/{UdpDateRangeSelector-C5toPT2E.js → UdpDateRangeSelector-C0jEXHEQ.js} +1 -1
- package/dist/{UdpDateRangeSelector-C5toPT2E.js.map → UdpDateRangeSelector-C0jEXHEQ.js.map} +1 -1
- package/dist/{UdpFormsPrivateForm-CUVom0jg.js → UdpFormsPrivateForm-BCXlSJcR.js} +2 -2
- package/dist/{UdpFormsPrivateForm-CUVom0jg.js.map → UdpFormsPrivateForm-BCXlSJcR.js.map} +1 -1
- package/dist/{UdpFormsSubmissionGrid-DJeJx9V0.js → UdpFormsSubmissionGrid-3806WiQB.js} +2 -2
- package/dist/{UdpFormsSubmissionGrid-DJeJx9V0.js.map → UdpFormsSubmissionGrid-3806WiQB.js.map} +1 -1
- package/dist/{UdpGridPanelManagementPage-INlmheiF.js → UdpGridPanelManagementPage-Dzu7o8P5.js} +2 -2
- package/dist/{UdpGridPanelManagementPage-INlmheiF.js.map → UdpGridPanelManagementPage-Dzu7o8P5.js.map} +1 -1
- package/dist/{UdpGridTemplate-SGI-8dJX.js → UdpGridTemplate-BswnwevH.js} +1 -1
- package/dist/{UdpGridTemplate-SGI-8dJX.js.map → UdpGridTemplate-BswnwevH.js.map} +1 -1
- package/dist/{UdpImportFromFileMappingPage-v0D7v216.js → UdpImportFromFileMappingPage-CjCTzU9E.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-v0D7v216.js.map → UdpImportFromFileMappingPage-CjCTzU9E.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-BPZhmEmg.js → UdpInquiryMaintenanceEnginePage-4HYSYxGd.js} +2 -2
- package/dist/{UdpInquiryMaintenanceEnginePage-BPZhmEmg.js.map → UdpInquiryMaintenanceEnginePage-4HYSYxGd.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-CI3rZ6G9.js → UdpMaintenanceEnginePage-B8Tvv1dZ.js} +6 -6
- package/dist/{UdpMaintenanceEnginePage-CI3rZ6G9.js.map → UdpMaintenanceEnginePage-B8Tvv1dZ.js.map} +1 -1
- package/dist/{UdpNotesPage-Cbz2-Plp.js → UdpNotesPage-BGNZX-5s.js} +6 -6
- package/dist/{UdpNotesPage-Cbz2-Plp.js.map → UdpNotesPage-BGNZX-5s.js.map} +1 -1
- package/dist/{UdpPages-C555kGsU.js → UdpPages-CMkb2m5F.js} +15 -15
- package/dist/{UdpPages-C555kGsU.js.map → UdpPages-CMkb2m5F.js.map} +1 -1
- package/dist/{UdpRemindersPage-B8oGAjtR.js → UdpRemindersPage-J9vGaj3s.js} +6 -6
- package/dist/{UdpRemindersPage-B8oGAjtR.js.map → UdpRemindersPage-J9vGaj3s.js.map} +1 -1
- package/dist/{UdpRoutes-BYAHAF0u.js → UdpRoutes-D-muhX5C.js} +6 -6
- package/dist/{UdpRoutes-BYAHAF0u.js.map → UdpRoutes-D-muhX5C.js.map} +1 -1
- package/dist/{UdpTransactionTypesPage-CmsWZHM4.js → UdpTransactionTypesPage-Do_tl8J2.js} +1898 -468
- package/dist/UdpTransactionTypesPage-Do_tl8J2.js.map +1 -0
- package/dist/{UdpTransactionsPage-D6lRI165.js → UdpTransactionsPage-DKF6PKUA.js} +779 -192
- package/dist/UdpTransactionsPage-DKF6PKUA.js.map +1 -0
- package/dist/{UdpVerticalManagementPage-BmQISa0N.js → UdpVerticalManagementPage-CR3YJwcI.js} +3 -3
- package/dist/{UdpVerticalManagementPage-BmQISa0N.js.map → UdpVerticalManagementPage-CR3YJwcI.js.map} +1 -1
- package/dist/{UdpVerticalManagementSidesheet-D4WSAtZC.js → UdpVerticalManagementSidesheet-CCSqaYq-.js} +4 -4
- package/dist/{UdpVerticalManagementSidesheet-D4WSAtZC.js.map → UdpVerticalManagementSidesheet-CCSqaYq-.js.map} +1 -1
- package/dist/{UserForm-Cvx0qyL6.js → UserForm-DQIJUkWW.js} +2 -2
- package/dist/{UserForm-Cvx0qyL6.js.map → UserForm-DQIJUkWW.js.map} +1 -1
- package/dist/UserFormSideSheet-Cki2zS9L.js +3 -0
- package/dist/{UserFormSideSheet-Bo1yZr01.js → UserFormSideSheet-yMExq77r.js} +2 -2
- package/dist/{UserFormSideSheet-Bo1yZr01.js.map → UserFormSideSheet-yMExq77r.js.map} +1 -1
- package/dist/{UtilityBar-O0baEBVj.js → UtilityBar-Ct7h6CJ4.js} +2 -2
- package/dist/{UtilityBar-O0baEBVj.js.map → UtilityBar-Ct7h6CJ4.js.map} +1 -1
- package/dist/VirtualBrowser-C1IP6rhy.js +3 -0
- package/dist/{VirtualBrowser-clYMlLAt.js → VirtualBrowser-CLXEdKAF.js} +3 -3
- package/dist/{VirtualBrowser-clYMlLAt.js.map → VirtualBrowser-CLXEdKAF.js.map} +1 -1
- package/dist/{WorkOrderCard-Wh1AkhfU.js → WorkOrderCard-CfvJtG69.js} +1 -1
- package/dist/{WorkOrderCard-Wh1AkhfU.js.map → WorkOrderCard-CfvJtG69.js.map} +1 -1
- package/dist/{WorkflowContainer-ClMZHFEd.js → WorkflowContainer-5of_2j2y.js} +3 -3
- package/dist/{WorkflowContainer-ClMZHFEd.js.map → WorkflowContainer-5of_2j2y.js.map} +1 -1
- package/dist/{WorkflowContainer-BBvEDJx3.js → WorkflowContainer-Bb0Amji_.js} +1 -1
- package/dist/{WorkflowTreeMenu-CdfX1Pv0.js → WorkflowTreeMenu-BudXOCOS.js} +4 -4
- package/dist/{WorkflowTreeMenu-CdfX1Pv0.js.map → WorkflowTreeMenu-BudXOCOS.js.map} +1 -1
- package/dist/{accordion-DT5LpWAW.js → accordion-Dh-tKkr0.js} +2 -2
- package/dist/{accordion-DT5LpWAW.js.map → accordion-Dh-tKkr0.js.map} +1 -1
- package/dist/{actionSummary-BrcS82Qz.js → actionSummary-8FhDX8uJ.js} +2 -2
- package/dist/{actionSummary-BrcS82Qz.js.map → actionSummary-8FhDX8uJ.js.map} +1 -1
- package/dist/{actionUtils-DylNlciX.js → actionUtils-DREj3J3H.js} +2 -2
- package/dist/{actionUtils-DylNlciX.js.map → actionUtils-DREj3J3H.js.map} +1 -1
- package/dist/actions/actionSummary/index.js +1 -1
- package/dist/actions/index.js +5 -5
- package/dist/actions/utils/index.js +1 -1
- package/dist/{aggregateUtils-BCO2GaVq.js → aggregateUtils-C5GwQct7.js} +2 -2
- package/dist/{aggregateUtils-BCO2GaVq.js.map → aggregateUtils-C5GwQct7.js.map} +1 -1
- package/dist/{aggridHelpers-Dj7ES7if.js → aggridHelpers-MdXm-qhS.js} +3 -3
- package/dist/{aggridHelpers-Dj7ES7if.js.map → aggridHelpers-MdXm-qhS.js.map} +1 -1
- package/dist/{auth-DQZDqD8X.js → auth-eDuSIJxU.js} +3 -3
- package/dist/{auth-DQZDqD8X.js.map → auth-eDuSIJxU.js.map} +1 -1
- package/dist/componentSystems/multiThreadTimeline/index.js +3 -3
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/mttSummary/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/dataBrowser/index.js +1 -1
- package/dist/{dateUtils-ChKgbJ9U.js → dateUtils-ftAbP-Mv.js} +18 -2
- package/dist/{dateUtils-ChKgbJ9U.js.map → dateUtils-ftAbP-Mv.js.map} +1 -1
- package/dist/enums/index.js +2 -2
- package/dist/{fileViewer-Dk6GMaSl.js → fileViewer-8-Eh4vLL.js} +2 -2
- package/dist/{fileViewer-Dk6GMaSl.js.map → fileViewer-8-Eh4vLL.js.map} +1 -1
- package/dist/{floorplans-BuvxGfwI.js → floorplans-CY6mR5bW.js} +2 -2
- package/dist/{floorplans-BuvxGfwI.js.map → floorplans-CY6mR5bW.js.map} +1 -1
- package/dist/{fluentTimeline-DceBN460.js → fluentTimeline-L0T1uOFm.js} +2 -2
- package/dist/{fluentTimeline-DceBN460.js.map → fluentTimeline-L0T1uOFm.js.map} +1 -1
- package/dist/{gridVisualizationFunctions-D5YZTZ7G.js → gridVisualizationFunctions-D83yg1AF.js} +1 -1
- package/dist/{gridVisualizationFunctions-D5YZTZ7G.js.map → gridVisualizationFunctions-D83yg1AF.js.map} +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/index.js +102 -101
- package/dist/inquiry/dashboard/index.js +1 -1
- package/dist/inquiry/index.js +4 -4
- package/dist/inquiry/inquiryBar/index.js +1 -1
- package/dist/inquiry/search/index.js +1 -1
- package/dist/{inquiry-DKgopy7F.js → inquiry-D-x5PZRJ.js} +12 -12
- package/dist/{inquiry-DKgopy7F.js.map → inquiry-D-x5PZRJ.js.map} +1 -1
- package/dist/{inquiryBar-CNAMeAq0.js → inquiryBar-lZ1qPFK6.js} +2 -2
- package/dist/{inquiryBar-CNAMeAq0.js.map → inquiryBar-lZ1qPFK6.js.map} +1 -1
- package/dist/layout/index.js +1 -1
- package/dist/{SideBarTemplate-B0lh7DDL.js → layout-BXuf6qmj.js} +1 -1
- package/dist/layout-BXuf6qmj.js.map +1 -0
- package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
- package/dist/maintenanceEngine/index.js +4 -4
- package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
- package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
- package/dist/{mapLayout-CZGgMWF6.js → mapLayout-BvKaPY3O.js} +2 -2
- package/dist/{mapLayout-CZGgMWF6.js.map → mapLayout-BvKaPY3O.js.map} +1 -1
- package/dist/menuPage/index.js +1 -1
- package/dist/{menuPage-DXMZEj8i.js → menuPage-BKRvZjzg.js} +2 -2
- package/dist/{menuPage-DXMZEj8i.js.map → menuPage-BKRvZjzg.js.map} +1 -1
- package/dist/{menuUtilities-cO3zYLVr.js → menuUtilities-BCPwOaeA.js} +2 -2
- package/dist/{menuUtilities-cO3zYLVr.js.map → menuUtilities-BCPwOaeA.js.map} +1 -1
- package/dist/notes/index.js +1 -1
- package/dist/{UdpTimeSelector-XsmTgOvP.js → pickers-DfIXzoW7.js} +1 -1
- package/dist/pickers-DfIXzoW7.js.map +1 -0
- package/dist/reminders/index.js +2 -2
- package/dist/routes/components/index.js +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/{search-BGZwaCKb.js → search-DRxUjlyc.js} +5 -5
- package/dist/{search-BGZwaCKb.js.map → search-DRxUjlyc.js.map} +1 -1
- package/dist/shell/index.js +3 -3
- package/dist/shell/ui/addUser/index.js +1 -1
- package/dist/shell/ui/index.js +2 -2
- package/dist/stores/index.js +1 -1
- package/dist/{tenantStore-tBfq87CP.js → tenantStore-TgmV03z9.js} +2 -2
- package/dist/{tenantStore-tBfq87CP.js.map → tenantStore-TgmV03z9.js.map} +1 -1
- package/dist/treeMenu/index.js +1 -1
- package/dist/types/src/enums/unitySystemEnums.d.ts +4 -2
- package/dist/types/src/enums/unitySystemEnums.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionAttachmentTypeForm.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionAttachmentTypeForm.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationForm.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationForm.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationTransactionActionForm.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationTransactionActionForm.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeStatusForm.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeCreateAndEditSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeCreateAndEditSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationCreateAndEditSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationCreateAndEditSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionSidesheet.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionSidesheet.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeStatusSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeTransactionActionCreateAndEditSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeTransactionActionSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionUiActionCreateAndEditSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionUiActionSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionsPage.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/AttachmentTransactionAttachmentList.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/AttachmentTransactionAttachmentList.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsFooterItem.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsForm.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsForm.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsFormFields.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsFormFields.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachment.d.ts +3 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachment.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachments.d.ts +3 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachments.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimeline.d.ts +4 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimeline.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimelineItem.d.ts +3 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimelineItem.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/{sidesheets → components}/transactionNote/TransactionNote.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNoteForm.d.ts +3 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNoteForm.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNotes.d.ts.map +1 -0
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.d.ts +2 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.d.ts +2 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.d.ts.map +1 -1
- package/dist/types/src/uploader/Attachments.d.ts +18 -0
- package/dist/types/src/uploader/Attachments.d.ts.map +1 -0
- package/dist/types/src/uploader/enums/systemEnums.d.ts +17 -0
- package/dist/types/src/uploader/enums/systemEnums.d.ts.map +1 -0
- package/dist/types/src/uploader/index.d.ts +1 -0
- package/dist/types/src/uploader/index.d.ts.map +1 -1
- package/dist/types/src/uploader/utils/allowedFileProperties.d.ts +3 -0
- package/dist/types/src/uploader/utils/allowedFileProperties.d.ts.map +1 -0
- package/dist/types/src/uploader/utils/downloadAttachmentFiles.d.ts +4 -0
- package/dist/types/src/uploader/utils/downloadAttachmentFiles.d.ts.map +1 -0
- package/dist/types/src/utilities/transactions/useTransactionEngine.d.ts +2 -0
- package/dist/types/src/utilities/transactions/useTransactionEngine.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/ShortcutContent/index.js +1 -1
- package/dist/udp/export/index.js +1 -1
- package/dist/udp/fileImportMapping/index.js +2 -2
- package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
- package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
- package/dist/udp/pages/UdpFormsPrivateForm/index.js +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
- package/dist/udp/pages/UdpGridPanelManagementPage/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 +1 -1
- 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/udp/pages/UdpVerticalManagementPage/index.js +1 -1
- package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +1 -1
- package/dist/udp/pages/index.js +1 -1
- package/dist/{unitySystemEnums-DM5vXR_m.js → unitySystemEnums-e5F9Jr7m.js} +5 -3
- package/dist/{unitySystemEnums-DM5vXR_m.js.map → unitySystemEnums-e5F9Jr7m.js.map} +1 -1
- package/dist/uploader/Attachments.css +29 -0
- package/dist/uploader/index.js +2 -102
- package/dist/uploader-C36UIFAF.js +314 -0
- package/dist/uploader-C36UIFAF.js.map +1 -0
- package/dist/{useActions-Db2P12NS.js → useActions-CxDs7v3s.js} +3 -3
- package/dist/{useActions-Db2P12NS.js.map → useActions-CxDs7v3s.js.map} +1 -1
- package/dist/{usePromotedMethodEntities-Dw_Z9GFX.js → usePromotedMethodEntities-B3xSrWmP.js} +2 -2
- package/dist/{usePromotedMethodEntities-Dw_Z9GFX.js.map → usePromotedMethodEntities-B3xSrWmP.js.map} +1 -1
- package/dist/{useSearchFilterParamsMap-CLAStwmE.js → useSearchFilterParamsMap-DPCfEY-N.js} +2 -2
- package/dist/{useSearchFilterParamsMap-CLAStwmE.js.map → useSearchFilterParamsMap-DPCfEY-N.js.map} +1 -1
- package/dist/utilities/aggrid/datasources/index.js +1 -1
- package/dist/utilities/aggrid/index.js +2 -2
- package/dist/utilities/auth/index.js +1 -1
- package/dist/utilities/customIcons/index.js +1 -1
- package/dist/utilities/floorplanFunctions/index.js +1 -1
- package/dist/utilities/form/paymentForm/index.js +1 -1
- package/dist/utilities/menus/index.js +1 -1
- package/dist/utilities/provider/index.js +1 -1
- package/dist/utilities/redirect/pages/index.js +1 -1
- package/dist/utilities/search/index.js +1 -1
- package/dist/utilities/style/index.js +1 -1
- package/dist/utilities/tenant/index.js +1 -1
- package/dist/utilities/tree/index.js +1 -1
- package/dist/utilities/uploader/index.js +1 -1
- package/dist/{withEngineComponent-s_zEZt7e.js → withEngineComponent-Css79hMi.js} +2 -2
- package/dist/{withEngineComponent-s_zEZt7e.js.map → withEngineComponent-Css79hMi.js.map} +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/menus/index.js +1 -1
- package/export-map.json +4 -2
- package/package.json +2 -2
- package/dist/MenuPage-BxZfgpHf.js +0 -3
- package/dist/MyExportsPage-BnDpxtTW.js +0 -3
- package/dist/SideBarTemplate-B0lh7DDL.js.map +0 -1
- package/dist/UdpAuditEventsPage-BGIcCG26.js +0 -3
- package/dist/UdpTimeSelector-XsmTgOvP.js.map +0 -1
- package/dist/UdpTransactionTypesPage-CmsWZHM4.js.map +0 -1
- package/dist/UdpTransactionsPage-D6lRI165.js.map +0 -1
- package/dist/UserFormSideSheet-B6CT9SiQ.js +0 -3
- package/dist/VirtualBrowser-Cm-d-9ws.js +0 -3
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentList.d.ts +0 -3
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentList.d.ts.map +0 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/transactionNote/TransactionNotes.d.ts.map +0 -1
- package/dist/uploader/index.js.map +0 -1
- /package/dist/{addUser-C90pCSnT.js → addUser-ND44rh2U.js} +0 -0
- /package/dist/{appSwitcher-BVKuYNfi.js → appSwitcher-a9n2Iwje.js} +0 -0
- /package/dist/{components-B1RVyHlZ.js → components-DFnCokX4.js} +0 -0
- /package/dist/{crudBrowser-C4YqsRrl.js → crudBrowser-D2jkhTHL.js} +0 -0
- /package/dist/{forms-BHhy_qYQ.js → forms-Bqbd2PSS.js} +0 -0
- /package/dist/{functions-48UNDwct.js → functions-BsqJgCPf.js} +0 -0
- /package/dist/{hocs-CWPyxUPi.js → hocs-ffxbQsXq.js} +0 -0
- /package/dist/{hooks-CkNaVLLH.js → hooks-DZQTSvZa.js} +0 -0
- /package/dist/{menus-DRIHkeQr.js → menus-Bcz2WjML.js} +0 -0
- /package/dist/{modified-BHJzuqPC.js → modified-Bhd8wpcw.js} +0 -0
- /package/dist/{mttMainTimeline-CLFQyr-b.js → mttMainTimeline-4YnP9sFd.js} +0 -0
- /package/dist/{mttSummary-13x9tvMI.js → mttSummary-DUe99dle.js} +0 -0
- /package/dist/{renderers-B2fqkGT5.js → renderers-DMzVV_xu.js} +0 -0
- /package/dist/{sidebar-CM1ujsxj.js → sidebar-Wi8WckFO.js} +0 -0
- /package/dist/{tableBrowser-CSDLzrvz.js → tableBrowser-C1wXuOXy.js} +0 -0
- /package/dist/types/src/udp/pages/UdpTransactionsPage/{sidesheets → components}/transactionNote/TransactionNote.d.ts +0 -0
- /package/dist/types/src/udp/pages/UdpTransactionsPage/{sidesheets → components}/transactionNote/TransactionNotes.d.ts +0 -0
- /package/dist/{ui-CPBXC1Ld.js → ui-BjpkPJO5.js} +0 -0
- /package/dist/{ui-DKHa8sM6.js → ui-DDD_eO_6.js} +0 -0
- /package/dist/{utils-D3uaSx1C.js → utils-DNwO498R.js} +0 -0
- /package/dist/{utils-mr65G560.js → utils-Drtwu1nG.js} +0 -0
- /package/dist/{virtualBrowser-DpJvv72S.js → virtualBrowser-zN1T60dc.js} +0 -0
- /package/dist/{wrappers-C7ViYUDV.js → wrappers-CQ2ylYPw.js} +0 -0
package/dist/{FluentProfileMenuCard-BdLCpdPv.js.map → FluentProfileMenuCard-RU7wosYK.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentProfileMenuCard-BdLCpdPv.js","names":["useStyles","useStyles","expanded","MiniCollapsibleSidebar","useStyles","useStyles","useStyles","prevOpen","useStyles","productId","HelpOutlineIcon","CloseIcon","ChatIcon","useStyles","Typography","useStyles","ShellDropdown","useStyles","UserAvatar"],"sources":["../src/shell/ui/MiniCollapsibleSidebar.jsx","../src/shell/ui/NavigationSidebar.jsx","../src/shell/ui/AmbientProjectSwitcher.jsx","../src/shell/ui/ShellDropdown.jsx","../src/shell/ui/LanguageSwitcher.jsx","../src/shell/ui/HelpCenter.jsx","../src/shell/ui/EnvironmentRibbon.tsx","../src/shell/ui/SiteHeader.jsx","../src/shell/ui/UserAvatar.jsx","../src/shell/ui/FluentProfileMenuCard.jsx"],"sourcesContent":["import { Drawer, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n width: theme?.dimensions?.drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap'\n },\n expanded: {\n '&, & > $paper': {\n // width: theme.dimensions.drawerWidth,\n width: theme.spacing(32),\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen\n })\n }\n },\n collapsed: {\n '&, & > $paper': {\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n transition: theme?.transitions?.create('width', {\n easing: theme?.transitions?.easing?.sharp,\n duration: theme?.transitions?.duration?.leavingScreen\n })\n }\n },\n paper: {}\n }),\n { name: 'MiniCollapsibleSidebar' }\n)\n\nconst MiniCollapsibleSidebar = (props) => {\n const classes = useStyles(props)\n const { expanded = true, className, children, ...other } = props\n\n return (\n <Drawer\n variant='permanent'\n open\n {...other}\n className={clsx(\n className,\n classes.root,\n expanded ? classes.expanded : classes.collapsed\n )}\n classes={{\n root: classes.root,\n paper: classes.paper\n }}\n >\n {children}\n </Drawer>\n )\n}\n\nexport default MiniCollapsibleSidebar\n","import React, { useState, useCallback } from 'react';\nimport { makeStyles, Toolbar, lighten } from '@material-ui/core';\nimport MiniCollapsibleSidebar from './MiniCollapsibleSidebar';\nimport { SidebarCollapseButton } from './SidebarCollapseButton';\nimport { AppMenu } from '../../UI/navigation/menus/AppMenu';\nimport { useShellStore } from '../../stores/shellStore';\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './useBuildEnvironment';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n marginTop: 400\n },\n paper: {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? ''\n : lighten(theme?.palette?.primary?.main, 0.9),\n overflowX: 'hidden'\n },\n list: {\n flex: 1,\n paddingTop: 0,\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch'\n },\n spacer: {\n flex: 1,\n minHeight: theme.spacing(2)\n },\n footer: {},\n toolbar: {\n padding: 0,\n minHeight: ({appRibbonSpace}) => theme.spacing(6) + appRibbonSpace\n }\n }),\n { name: 'NavigationSidebar' }\n);\n\nconst NavigationSidebar = (props) => {\n const buildEnv = useBuildEnvironment()\n const classes = useStyles({appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0});\n const {\n data,\n toggleExpandClick,\n navMenuHoverOn,\n user,\n toggle = true,\n useGlobalState = false,\n ...other\n } = props;\n const [expanded, setExpanded] = useState(true);\n const { navigationExpanded, setNavigationExpanded } = useShellStore();\n\n let navExpanded = useGlobalState ? navigationExpanded : expanded;\n\n const [hoverExpand, setHoverExpand] = useState(false);\n\n // ** Remove for now to deal with programmatic toggle **\n // const wide = useMediaQuery(theme.breakpoints.up('sm'))\n // useEffect(() => {\n // // Set the bar to be expanded/collapsed depending on the breakpoint size\n // // This works on load and also when resizing crosses the breakpoint\n // setExpanded(wide)\n // }, [wide])\n\n const handleHoverToggle = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(true);\n }\n };\n const handleHoverLeave = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(false);\n }\n };\n\n const handleToggleClick = useCallback(() => {\n if (useGlobalState) {\n setNavigationExpanded(!navigationExpanded);\n } else {\n setExpanded((expanded) => !expanded);\n }\n }, [setNavigationExpanded, useGlobalState, navigationExpanded]);\n\n return (\n <MiniCollapsibleSidebar\n classes={{ root: classes.root, paper: classes.paper }}\n expanded={navExpanded || hoverExpand}\n onMouseEnter={handleHoverToggle}\n onMouseLeave={handleHoverLeave}\n PaperProps={{ elevation: 0, variant: 'outlined' }}\n {...other}\n >\n <Toolbar className={classes.toolbar} />\n\n {toggle && (\n <SidebarCollapseButton\n id='udpRecord-NavigationSidebar'\n udprecordid='udpRecord-NavigationSidebar'\n expanded={navExpanded}\n onClick={handleToggleClick}\n />\n )}\n {data && <AppMenu menuItems={data} sidebarExpanded={navExpanded} user={user} />}\n </MiniCollapsibleSidebar>\n );\n};\n\nexport default NavigationSidebar;\n","import React, { useState } from 'react'\nimport { makeStyles, Popover, Typography, useTheme } from '@material-ui/core'\nimport { ChevronDownIcon } from '@fluentui/react-icons'\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton'\nimport {AmbientPopoverMenuItem} from '../../UI/inputs/buttons/AmbientPopoverMenuItem'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n // border: '1px solid white',\n background: props => props.backgroundColor ? props.backgroundColor : theme.palette.secondary.main,\n borderRadius: 50,\n padding: 6,\n paddingLeft:16\n },\n popoverRoot: {},\n icon: {\n color: theme.palette.primary.main,\n borderRadius: 50\n }, \n label: {\n display: 'block',\n width: props => props.width ? props.width : 100,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }, \n listWrapper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const AmbientProjectSwitcher = (props) => {\n \n const classes = useStyles(props)\n\n const theme = useTheme()\n\n const { data, selectedItem } = props\n\n const [anchorEl, setAnchorEl] = useState(null)\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const open = Boolean(anchorEl)\n const id = open ? 'open' : undefined\n\n return (\n <div className={classes.root}>\n <div className={classes.listWrapper}>\n <Typography className={classes.label} > \n {selectedItem} \n </Typography>\n </div>\n \n <FluentIconButton\n className={classes.icon}\n icon={ChevronDownIcon}\n onClick={handleClick}\n style={{background: theme.palette.common.white}}\n />\n\n <Popover\n classes={{ root: classes.popoverRoot }}\n square\n elevation={6}\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div >\n <div>\n {data && data.map((item) => {\n return (\n <AmbientPopoverMenuItem\n label={item.label}\n component={ChevronDownIcon}\n click={()=>item.click(item.label)}\n />\n )\n })}\n </div>\n </div>\n </Popover>\n </div>\n )\n}\n\nAmbientProjectSwitcher.propTypes = {\n /**\n * The array used to map for label and functions to list items. (array).\n */\n data: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Change the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex', alignItems: 'center' },\n field: {\n minWidth: 300,\n maxWidth: 400,\n width: '100%',\n alignSelf: 'left',\n color: '#fff',\n '& .MuiOutlinedInput-root': {\n color: '#fff',\n backgroundColor: 'transparent',\n '& fieldset': {\n borderColor: 'rgba(255,255,255,0.6)',\n },\n '&:hover fieldset': {\n borderColor: 'rgba(255,255,255,0.85)',\n },\n '&.Mui-focused fieldset': {\n borderColor: '#fff',\n },\n '& input': {\n paddingTop: 4,\n paddingBottom: 4,\n height: 20,\n boxSizing: 'border-box',\n color: '#fff',\n },\n '& .MuiAutocomplete-input': {\n color: '#fff',\n },\n },\n '& .MuiInputBase-root': {\n color: '#fff',\n },\n '& .MuiAutocomplete-popupIndicator, & .MuiAutocomplete-clearIndicator': {\n color: '#fff',\n opacity: 0.95,\n },\n '& input::placeholder': {\n color: 'rgba(255,255,255,0.7)',\n },\n },\n}));\n\nfunction getDisplayName(item) {\n if (!item && item !== 0) return '';\n if (typeof item === 'string' || typeof item === 'number') return String(item);\n if (typeof item === 'object') {\n const name = item.name ?? item.label ?? item.title ?? item.displayName;\n return name !== undefined && name !== null ? String(name) : '';\n }\n return String(item);\n}\n\nexport const ShellDropdown = (props) => {\n const classes = useStyles();\n const {\n componentName = 'Item',\n data = [],\n value = null,\n onChange,\n optionLabelDisplayFunction = getDisplayName,\n placeholder,\n className,\n classProps,\n ...other\n } = props;\n\n const placeholderText = placeholder ?? (!value ? `All ${componentName}s` : undefined);\n\n return (\n <div className={`${classes.root} ${className || ''}`}>\n <FluentTextFieldAutoComplete\n className={classes.field}\n classProps={{ autocompleteRoot: classes.field, ...classProps }}\n options={data}\n optionLabelDisplayFunction={optionLabelDisplayFunction}\n onChange={onChange}\n value={value}\n placeholder={placeholderText}\n {...other}\n />\n </div>\n );\n};\n\nShellDropdown.propTypes = {\n componentName: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n optionLabelDisplayFunction: PropTypes.func,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n classProps: PropTypes.object,\n};\n\nexport default ShellDropdown;\n","import React, { useState, useRef, useEffect } from 'react'\nimport {\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n makeStyles,\n IconButton,\n MenuItem\n} from '@material-ui/core'\nimport { TranslateIcon } from '@fluentui/react-icons'\nimport i18n from 'i18next';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n paper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const LanguageSwitcher = (props) => {\n const classes = useStyles()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef(null)\n const { languages } = props\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen)\n }\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return\n }\n setOpen(false)\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus()\n }\n prevOpen.current = open\n }, [open])\n\n const handleLanguageChange = (event) => {\n const currentLanguage = event;\n //setLangKey(currentLanguage.languageCode);\n languageSelector(currentLanguage.languageCode);\n };\n\n const languageSelector = (defaultLang) => {\n i18n.changeLanguage(defaultLang);\n }\n\n if (languages != null) {\n return (\n <div id='udpRecord-LanguageSwitcher' className={classes.root}>\n <div>\n <IconButton\n id='udpRecord-LanguageSwitcher-IconButton'\n udprecordid='udpRecord-LanguageSwitcher-IconButton'\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup='true'\n onClick={handleToggle}\n >\n <TranslateIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === 'bottom' ? 'center top' : 'center bottom'\n }}\n >\n <Paper>\n <ClickAwayListener \n id='udpRecord-LanguageSwitcher-ClickAway' \n udprecordid='udpRecord-LanguageSwitcher-ClickAway' \n onClickAway={handleClose}\n >\n <MenuList\n autoFocusItem={open}\n id='menu-list-grow'\n udprecordid='udpRecord-LanguageSwitcher-MenuList'\n onKeyDown={handleListKeyDown}\n onClick={() => setOpen(false)}\n >\n {languages.map((data) =>\n <MenuItem\n id={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n udprecordid={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n onClick={() => handleLanguageChange(data)}\n value={data.languageCode}\n key={data.languageId}\n >\n {data.languageLabel}\n </MenuItem>)}\n </MenuList>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </div>\n </div>\n )\n } else {\n return (\n null\n )\n }\n\n}","import React, { useState, useCallback, useEffect, useRef, Suspense, lazy } from 'react';\nimport {\n makeStyles,\n IconButton,\n Popover,\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Dialog,\n DialogTitle,\n DialogContent\n} from '@material-ui/core';\nimport {HelpOutline as HelpOutlineIcon, Chat as ChatIcon, Close as CloseIcon} from '@material-ui/icons';\nimport { useActions } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../src/utilities/auth/useUser';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\n// Lazy-load side sheets so they aren't imported until needed. Keep\n// module-level lazy declarations so the imports are deduped and cached.\nconst UserFormSideSheet = lazy(() => import('./addUser/UserFormSideSheet'));\nconst SupportCaseSideSheet = lazy(() => import('../../UI/support/SupportCaseSideSheet'));\n\n// Preload helpers (return the dynamic import promise). Calling these\n// will start fetching the chunk in the background and populate the\n// module cache so React.lazy resolves quickly later.\nconst preloadUserFormSideSheet = () => import('./addUser/UserFormSideSheet');\nconst preloadSupportCaseSideSheet = () => import('../../UI/support/SupportCaseSideSheet');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n popover: {\n padding: theme.spacing(2),\n maxWidth: 300\n },\n icon: {\n minWidth: 40\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500]\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n dialog: {\n minWidth: '80vw',\n minHeight: '80vh'\n }\n}));\n\nexport const HelpCenter = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { triggerAction } = useActions();\n const user = useUser();\n const productId = Number(ConfigService.config.UNITY_PRODUCT_ID);\n\n const udpaiAPI = ConfigService.config.UDPAI_API_BASE;\n const udpaisearch = ConfigService.config.AI_SEARCH_URL;\n const udpaisearchkey = ConfigService.config.AI_SEARCH_KEY;\n const udpaisearchindex = ConfigService.config.AI_SEARCH_INDEX_NAME;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [isSupportCaseSideSheetOpen, setSupportCaseSideSheetOpen] =\n useState(false);\n const [isUserFormOpen, setUserFormOpen] = useState(false);\n const [supportCaseHealthOk, setSupportCaseHealthOk] = useState(false);\n\n const hasPreloadedRef = useRef(false);\n\n const handleOpenPopover = (event) => {\n setAnchorEl(event.currentTarget);\n\n // Preload both side sheets in the background the first time the popover opens.\n // We assume that if the user opened the popover, they might open one of the sheets.\n if (!hasPreloadedRef.current) {\n hasPreloadedRef.current = true;\n // Start background fetches but don't await them.\n try {\n preloadUserFormSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n try {\n preloadSupportCaseSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n }\n };\n\n const handleClosePopover = () => {\n setAnchorEl(null);\n };\n\n const handleLaunchAction = useCallback(() => {\n setAnchorEl(null);\n triggerAction('CEE75B36-01B0-4FAC-9AE7-C1AC8A2A194F');\n }, [triggerAction]);\n\n const handleOpenSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(true);\n setAnchorEl(null);\n };\n\n const handleCloseSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(false);\n };\n\n const handleOpenUserForm = () => {\n setUserFormOpen(true); // Open UserForm modal\n setAnchorEl(null);\n };\n\n const handleCloseUserForm = () => {\n setUserFormOpen(false); // Close UserForm modal\n };\n\n const open = Boolean(anchorEl);\n const id = open ? 'help-center-popover' : undefined;\n\n // Conditions for rendering buttons\n // 2 assets, 41 sandbox, 51 assets, 53 mm, 68 timesheets\n const shouldShowAddUsers = (productId) => {\n const isValidProduct = [41, 53].includes(productId);\n const isSecurityApiConfigured = !!ConfigService.securityV1ApiUrl;\n const isValidUser =\n user.can.CAN_MANAGE_ROLES_USERS &&\n user.can.CAN_MANAGE_USERS &&\n user.can.CAN_VIEW_USERS;\n return isValidProduct && isSecurityApiConfigured && isValidUser;\n };\n\n const getSupportCaseStatus = useCallback(\n async () =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpunitysupport/healthCheck`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const getSupportCaseStatusUnity = useCallback(\n async () =>\n apiMutate(\n ConfigService.supportV1ApiUrl,\n `ServiceHealth/Support`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const showAddUsers = shouldShowAddUsers(productId);\n const shouldShowChatAssistant =\n [2, 41, 51, 68].includes(productId) &&\n udpaiAPI &&\n udpaisearch &&\n udpaisearchkey &&\n udpaisearchindex;\n const shouldShowSupportTicket = productId && supportCaseHealthOk;\n\n useEffect(() => {\n const supportCaseStatus = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === \"1\") {\n const response = await getSupportCaseStatusUnity();\n setSupportCaseHealthOk(response?.status === 200);\n } else {\n const response = await getSupportCaseStatus();\n setSupportCaseHealthOk(response?.status === 200);\n }\n } catch (error) {\n setSupportCaseHealthOk(false);\n }\n };\n supportCaseStatus();\n }, [getSupportCaseStatus, getSupportCaseStatusUnity]);\n\n // Hide the entire help center if neither button should be rendered\n if (!showAddUsers && !shouldShowChatAssistant && !shouldShowSupportTicket) {\n return <div id='udpRecord-HelpCenter' />;\n }\n\n return (\n <div id='udpRecord-HelpCenter' className={classes.root}>\n <IconButton\n id='udpRecord-HelpCenter-IconButton'\n aria-controls={id}\n aria-haspopup='true'\n onClick={handleOpenPopover}\n >\n <HelpOutlineIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popover\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClosePopover}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center'\n }}\n >\n <div className={classes.popover}>\n <div className={classes.header}>\n <Typography variant='h6'>{t('Help')}</Typography>\n <IconButton\n size='small'\n className={classes.closeButton}\n onClick={handleClosePopover}\n >\n <CloseIcon />\n </IconButton>\n </div>\n <List component='nav' aria-label='Help options'>\n {/* First Button: Add User */}\n {showAddUsers && (\n <ListItem\n button\n id='udpRecord-HelpCenter-AddUsers'\n onClick={handleOpenUserForm}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Add User')} />\n </ListItem>\n )}\n\n {/* Second Button: Chat Assistant */}\n {shouldShowChatAssistant && (\n <ListItem\n button\n id='udpRecord-HelpCenter-ChatAssistant'\n onClick={handleLaunchAction}\n >\n <ListItemIcon className={classes.icon}>\n <ChatIcon />\n </ListItemIcon>\n <ListItemText primary={t('Chat Assistant')} />\n </ListItem>\n )}\n\n {/* Third Button: Submit Support Ticket */}\n {shouldShowSupportTicket && (\n <ListItem\n button\n id='udpRecord-HelpCenter-SupportTicket'\n onClick={handleOpenSupportCaseSideSheet}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Submit Support Ticket')} />\n </ListItem>\n )}\n </List>\n </div>\n </Popover>\n\n {/* Modal for UserForm (lazy-loaded) */}\n <Suspense fallback={<div>Loading...</div>}>\n <UserFormSideSheet open={isUserFormOpen} onClose={handleCloseUserForm} />\n </Suspense>\n\n {/* Side Sheet for Support Ticket (lazy-loaded) */}\n <Suspense fallback={<div>Loading...</div>}>\n <SupportCaseSideSheet\n open={isSupportCaseSideSheetOpen}\n onClose={handleCloseSupportCaseSideSheet}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n onSubmit={(values) => {\n console.log('Form submitted', values);\n }}\n initialValues={{}}\n />\n </Suspense>\n </div>\n );\n};\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { APP_RIBBON_SPACE, useBuildEnvironment } from './useBuildEnvironment';\n\n\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AppBar,\n makeStyles,\n Toolbar,\n Typography,\n IconButton,\n useMediaQuery,\n useTheme\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport { WaffleIcon, CollapseMenuIcon } from '@fluentui/react-icons';\nimport { BreadCrumbMenu } from '../../UI/inputs/link/BreadCrumbMenu';\nimport { AmbientProjectSwitcher } from './AmbientProjectSwitcher';\nimport ShellDropdown from './ShellDropdown';\nimport { LanguageSwitcher } from './LanguageSwitcher';\nimport { HelpCenter } from './HelpCenter';\nimport { SiteHeaderRightComponentTarget } from './SiteHeaderRightComponent';\nimport PropTypes from 'prop-types';\nimport {\n useBuildEnvironment,\n APP_RIBBON_SPACE\n} from './useBuildEnvironment';\nimport { EnvironmentRibbon } from './EnvironmentRibbon';\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n color: theme?.palette?.appBar?.contrastText,\n zIndex: theme?.zIndex?.drawer + 1\n // Assume the drawer is always expanded unless the screen is too small for it and inset the left to account for it\n },\n spacer: {\n flex: 1\n },\n headerSpacer: {\n padding: 0,\n minHeight: ({ appRibbonSpace }) => 56 + appRibbonSpace\n },\n toolbar: {\n padding: 0,\n minHeight: theme.spacing(6)\n },\n appLaunch: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n avatar: {\n width: 25,\n height: 25,\n backgroundColor: theme?.palette?.secondary?.main\n },\n search: {\n marginLeft: theme.spacing(2),\n marginTop: theme.spacing(-1.35)\n },\n children: {\n flex: 1,\n minWidth: 5\n }\n }),\n { name: 'SiteHeader' }\n);\n\n/**\n * A spacing component with the same height as the SiteHeader\n */\nexport const SiteHeaderSpacer = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const { className } = props;\n\n return <div className={clsx(className, classes.headerSpacer)} />;\n};\n\n/**\n * Site header including app bar\n */\nconst SiteHeader = (props) => {\n const classes = useStyles(props);\n const {\n className,\n returnTo,\n appContent,\n userAvatar,\n siteName,\n breadCrumbRoot = 'home',\n color = 'primary',\n setAppSwitcherOpen,\n breadCrumbAltLabelList,\n currentLocation,\n switcherData,\n selectedItem,\n switcherWidth,\n hideAppLaunch,\n languages,\n backgroundColor,\n ...other\n } = props;\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n return (\n <>\n <AppBar\n elevation={0}\n position='fixed'\n color={color}\n {...other}\n className={className}\n classes={{ root: classes.root }}\n >\n <EnvironmentRibbon />\n <Toolbar className={classes.toolbar}>\n {mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n {!mobile && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <CollapseMenuIcon />\n </IconButton>\n )}\n\n <Typography\n component='h1'\n variant='h6'\n style={{ marginLeft: hideAppLaunch && 16 }}\n >\n {siteName}\n </Typography>\n\n {mobile && (\n <div style={{ marginLeft: 70 }}>\n {React.isValidElement(breadCrumbRoot) ? (\n breadCrumbRoot\n ) : breadCrumbRoot && typeof breadCrumbRoot === 'object' && (breadCrumbRoot.data || breadCrumbRoot.componentName) ? (\n <ShellDropdown\n componentName={breadCrumbRoot.componentName}\n data={breadCrumbRoot.data}\n value={breadCrumbRoot.value}\n onChange={breadCrumbRoot.onChange}\n optionLabelDisplayFunction={breadCrumbRoot.optionLabelDisplayFunction}\n placeholder={breadCrumbRoot.placeholder}\n className={breadCrumbRoot.className}\n classProps={breadCrumbRoot.classProps}\n />\n ) : (\n <BreadCrumbMenu\n color='primary'\n root={breadCrumbRoot}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n />\n )}\n </div>\n )}\n <div className={classes.children}>{appContent}</div>\n {switcherData && (\n <AmbientProjectSwitcher\n data={switcherData}\n selectedItem={selectedItem}\n width={switcherWidth}\n backgroundColor={backgroundColor}\n />\n )}\n\n {!mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('mobile', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n <div className={classes.additionalRightComponent}>\n <SiteHeaderRightComponentTarget />\n </div>\n <HelpCenter />\n <LanguageSwitcher languages={languages} />\n <div>{userAvatar}</div>\n </Toolbar>\n </AppBar>\n <SiteHeaderSpacer className={className} />\n </>\n );\n};\n\nexport default SiteHeader;\n\nSiteHeader.propTypes = {\n breadCrumbRoot: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n PropTypes.object\n ]),\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n};\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { useState, useEffect, forwardRef } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { Autocomplete } from '@material-ui/lab';\nimport { TextField } from '@material-ui/core';\nimport { useHistory } from 'react-router-dom';\nimport { clearStoredPath } from '../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../utilities/auth/users';\nimport { ConfigService } from '../../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\nexport const FluentProfileMenuCard = forwardRef((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n displayProfileButton = true\n } = props;\n const [currentTenantValue, setCurrentTenantValue] = useState('');\n const history = useHistory();\n const redirectToHome = () => history.push('/');\n const { t, i18n } = useTranslation();\n const { changeTenant } = useUserActions();\n\n const handleAutocompleteOnChange = (newValue, reason) => {\n if (reason !== 'select-option') return;\n setCurrentTenantValue(newValue);\n storeTenant(newValue.tenantId);\n changeTenant(newValue.tenantId);\n redirectToHome();\n };\n\n useEffect(() => {\n if (userTenants && !currentTenantValue) {\n const currentUserTenant = userTenants.find(\n (ut) => ut.tenantId === currentTenant?.tenantId\n );\n setCurrentTenantValue(currentUserTenant);\n }\n }, [currentTenant, userTenants, currentTenantValue]);\n\n const handleProfileClick = () => {\n // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n if(ConfigService.config.UNITY_PRODUCT_ID == 1) history.push('/profile')\n else window.open(unityUrl + '/profile');\n\n }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <Autocomplete\n className={classes.currentTenant}\n value={currentTenantValue}\n getOptionSelected={(option, value) =>\n option?.tenantId === value?.tenantId\n }\n disableClearable\n id='current-tenant'\n name='currentTenant'\n options={userTenants ? userTenants : []}\n getOptionLabel={(option) =>\n option?.tenantName ? option?.tenantName : ''\n }\n onChange={(event, newValue, reason) =>\n handleAutocompleteOnChange(newValue, reason)\n }\n renderInput={(params) => (\n <TextField\n {...params}\n inputProps={{...params.inputProps,\n id:'udpRecord-FluentProfileMenuCard-TextField',\n udprecordid:'udpRecord-FluentProfileMenuCard-TextField'\n }}\n label={t('Current Tenant')}\n variant='standard'\n />\n )}\n renderOption={(option, { selected }) => (\n <li\n style={{ width: '100%', height: '100%' }}\n udprecordid={`udpRecord-FluentProfileMenuCard-${option.tenantName.replace(/\\s+/g, '')}`}\n {...option}\n >\n {option.tenantName}\n </li>\n )}\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,cAAY,YACf,WAAW;CACV,MAAM;EACJ,OAAO,OAAO,YAAY;EAC1B,YAAY;EACZ,YAAY;EACb;CACD,UAAU,EACR,iBAAiB;EAEf,OAAO,MAAM,QAAQ,GAAG;EACxB,YAAY,MAAM,YAAY,OAAO,SAAS;GAC5C,QAAQ,MAAM,YAAY,OAAO;GACjC,UAAU,MAAM,YAAY,SAAS;GACtC,CAAC;EACH,EACF;CACD,WAAW,EACT,iBAAiB;EACf,WAAW;EACX,OAAO,MAAM,QAAQ,EAAE,GAAG;EAC1B,YAAY,OAAO,aAAa,OAAO,SAAS;GAC9C,QAAQ,OAAO,aAAa,QAAQ;GACpC,UAAU,OAAO,aAAa,UAAU;GACzC,CAAC;EACH,EACF;CACD,OAAO,EAAE;CACV,GACD,EAAE,MAAM,0BAA0B,CACnC;AAED,MAAM,0BAA0B,UAAU;CACxC,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,EAAE,WAAW,MAAM,WAAW,UAAU,GAAG,UAAU;AAE3D,QACE,oCAAC;EACC,SAAQ;EACR;EACA,GAAI;EACJ,WAAW,KACT,WACA,QAAQ,MACR,WAAW,QAAQ,WAAW,QAAQ,UACvC;EACD,SAAS;GACP,MAAM,QAAQ;GACd,OAAO,QAAQ;GAChB;IAEA,SACM;;AAIb,qCAAe;;;;ACpDf,MAAMC,cAAY,YACf,WAAW;CACV,MAAM,EACJ,WAAW,KACZ;CACD,OAAO;EACL,iBACE,OAAO,cAAc,EAAE,SAAS,SAC5B,KACA,QAAQ,OAAO,SAAS,SAAS,MAAM,GAAI;EACjD,WAAW;EACZ;CACD,MAAM;EACJ,MAAM;EACN,YAAY;EACZ,WAAW;EACX,yBAAyB;EAC1B;CACD,QAAQ;EACN,MAAM;EACN,WAAW,MAAM,QAAQ,EAAE;EAC5B;CACD,QAAQ,EAAE;CACV,SAAS;EACP,SAAS;EACT,YAAY,EAAC,qBAAoB,MAAM,QAAQ,EAAE,GAAG;EACrD;CACF,GACD,EAAE,MAAM,qBAAqB,CAC9B;AAED,MAAM,qBAAqB,UAAU;CAEnC,MAAM,UAAUA,YAAU,EAAC,gBADV,qBAAqB,GACgB,mBAAmB,GAAE,CAAC;CAC5E,MAAM,EACJ,MACA,mBACA,gBACA,MACA,SAAS,MACT,iBAAiB,OACjB,GAAG,UACD;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,oBAAoB,0BAA0B,eAAe;CAErE,IAAI,cAAc,iBAAiB,qBAAqB;CAExD,MAAM,CAAC,aAAa,kBAAkB,SAAS,MAAM;CAUrD,MAAM,0BAA0B;AAC9B,MAAI,CAAC,eAAe,eAClB,gBAAe,KAAK;;CAGxB,MAAM,yBAAyB;AAC7B,MAAI,CAAC,eAAe,eAClB,gBAAe,MAAM;;CAIzB,MAAM,oBAAoB,kBAAkB;AAC1C,MAAI,eACF,uBAAsB,CAAC,mBAAmB;MAE1C,cAAa,eAAa,CAACC,WAAS;IAErC;EAAC;EAAuB;EAAgB;EAAmB,CAAC;AAE/D,QACE,oCAACC;EACC,SAAS;GAAE,MAAM,QAAQ;GAAM,OAAO,QAAQ;GAAO;EACrD,UAAU,eAAe;EACzB,cAAc;EACd,cAAc;EACd,YAAY;GAAE,WAAW;GAAG,SAAS;GAAY;EACjD,GAAI;IAEJ,oCAAC,WAAQ,WAAW,QAAQ,UAAW,EAEtC,UACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,UAAU;EACV,SAAS;GACT,EAEH,QAAQ,oCAAC;EAAQ,WAAW;EAAM,iBAAiB;EAAmB;GAAQ,CACxD;;AAI7B,gCAAe;;;;ACtGf,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM;EACJ,SAAS;EAET,aAAY,UAAS,MAAM,kBAAkB,MAAM,kBAAkB,MAAM,QAAQ,UAAU;EAC7F,cAAc;EACd,SAAS;EACT,aAAY;EACb;CACD,aAAa,EAAE;CACf,MAAM;EACJ,OAAO,MAAM,QAAQ,QAAQ;EAC7B,cAAc;EACf;CACD,OAAO;EACL,SAAS;EACT,QAAO,UAAS,MAAM,QAAQ,MAAM,QAAQ;EAC5C,UAAU;EACV,YAAY;EACZ,cAAc;EACf;CACD,aAAa,EACX,aAAa,MAAM,QAAQ,EAAE,EAC9B;CACF,EAAE;AAEH,MAAa,0BAA0B,UAAU;CAE/C,MAAM,UAAUA,YAAU,MAAM;CAEhC,MAAM,QAAQ,UAAU;CAExB,MAAM,EAAE,MAAM,iBAAiB;CAE/B,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAE9C,MAAM,eAAe,UAAU;AAC7B,cAAY,MAAM,cAAc;;CAGlC,MAAM,oBAAoB;AACxB,cAAY,KAAK;;CAGnB,MAAM,OAAO,QAAQ,SAAS;CAC9B,MAAM,KAAK,OAAO,SAAS;AAE3B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC,SAAI,WAAW,QAAQ,eACtB,oCAAC,cAAW,WAAW,QAAQ,SAC5B,aACU,CACT,EAEN,oCAAC;EACC,WAAW,QAAQ;EACnB,MAAM;EACN,SAAS;EACT,OAAO,EAAC,YAAY,MAAM,QAAQ,OAAO,OAAM;GAC/C,EAEF,oCAAC;EACC,SAAS,EAAE,MAAM,QAAQ,aAAa;EACtC;EACA,WAAW;EACP;EACE;EACI;EACV,SAAS;EACT,cAAc;GACZ,UAAU;GACV,YAAY;GACb;EACD,iBAAiB;GACf,UAAU;GACV,YAAY;GACb;IAED,oCAAC,aACC,oCAAC,aACE,QAAQ,KAAK,KAAK,SAAS;AAC1B,SACE,oCAAC;GACC,OAAO,KAAK;GACZ,WAAW;GACX,aAAW,KAAK,MAAM,KAAK,MAAM;IACjC;GAEJ,CACE,CACF,CACE,CACN;;AAIV,uBAAuB,YAAY;CAIjC,MAAM,UAAU;CAIhB,cAAc,UAAU;CAIxB,iBAAiB,UAAU;;;;;AC/G7B,MAAMC,cAAY,YAAW,WAAU;CACrC,MAAM;EAAE,SAAS;EAAQ,YAAY;EAAU;CAC/C,OAAO;EACL,UAAU;EACV,UAAU;EACV,OAAO;EACP,WAAW;EACX,OAAO;EACP,4BAA4B;GAC1B,OAAO;GACP,iBAAiB;GACjB,cAAc,EACZ,aAAa,yBACd;GACD,oBAAoB,EAClB,aAAa,0BACd;GACD,0BAA0B,EACxB,aAAa,QACd;GACD,WAAW;IACT,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,WAAW;IACX,OAAO;IACR;GACD,4BAA4B,EAC1B,OAAO,QACR;GACF;EACD,wBAAwB,EACtB,OAAO,QACR;EACD,wEAAwE;GACtE,OAAO;GACP,SAAS;GACV;EACD,wBAAwB,EACtB,OAAO,yBACR;EACF;CACF,EAAE;AAEH,SAAS,eAAe,MAAM;AAC5B,KAAI,CAAC,QAAQ,SAAS,EAAG,QAAO;AAChC,KAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAAU,QAAO,OAAO,KAAK;AAC7E,KAAI,OAAO,SAAS,UAAU;EAC5B,MAAM,OAAO,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK;AAC3D,SAAO,SAAS,UAAa,SAAS,OAAO,OAAO,KAAK,GAAG;;AAE9D,QAAO,OAAO,KAAK;;AAGrB,MAAa,iBAAiB,UAAU;CACtC,MAAM,UAAUA,aAAW;CAC3B,MAAM,EACJ,gBAAgB,QAChB,OAAO,EAAE,EACT,QAAQ,MACR,UACA,6BAA6B,gBAC7B,aACA,WACA,YACA,GAAG,UACD;CAEJ,MAAM,kBAAkB,gBAAgB,CAAC,QAAQ,OAAO,cAAc,KAAK;AAE3E,QACE,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,aAAa,QAC9C,oCAAC;EACC,WAAW,QAAQ;EACnB,YAAY;GAAE,kBAAkB,QAAQ;GAAO,GAAG;GAAY;EAC9D,SAAS;EACmB;EAClB;EACH;EACP,aAAa;EACb,GAAI;GACJ,CACE;;AAIV,cAAc,YAAY;CACxB,eAAe,UAAU;CACzB,MAAM,UAAU;CAChB,OAAO,UAAU;CACjB,UAAU,UAAU;CACpB,4BAA4B,UAAU;CACtC,aAAa,UAAU;CACvB,WAAW,UAAU;CACrB,YAAY,UAAU;CACvB;AAED,4BAAe;;;;ACvFf,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM,EACJ,SAAS,QACV;CACD,OAAO,EACL,aAAa,MAAM,QAAQ,EAAE,EAC9B;CACF,EAAE;AAEH,MAAa,oBAAoB,UAAU;CACzC,MAAM,UAAUA,aAAW;CAC3B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,YAAY,OAAO,KAAK;CAC9B,MAAM,EAAE,cAAc;CAEtB,MAAM,qBAAqB;AACzB,WAAS,eAAa,CAACC,WAAS;;CAGlC,MAAM,eAAe,UAAU;AAC7B,MAAI,UAAU,WAAW,UAAU,QAAQ,SAAS,MAAM,OAAO,CAC/D;AAEF,UAAQ,MAAM;;CAGhB,SAAS,kBAAkB,OAAO;AAChC,MAAI,MAAM,QAAQ,OAAO;AACvB,SAAM,gBAAgB;AACtB,WAAQ,MAAM;;;CAKlB,MAAM,WAAW,OAAO,KAAK;AAC7B,iBAAgB;AACd,MAAI,SAAS,YAAY,QAAQ,SAAS,MACxC,WAAU,QAAQ,OAAO;AAE3B,WAAS,UAAU;IAClB,CAAC,KAAK,CAAC;CAEV,MAAM,wBAAwB,UAAU;AAGtC,mBAFwB,MAES,aAAa;;CAGhD,MAAM,oBAAoB,gBAAgB;AACxC,OAAK,eAAe,YAAY;;AAGlC,KAAI,aAAa,KACf,QACE,oCAAC;EAAI,IAAG;EAA6B,WAAW,QAAQ;IACtD,oCAAC,aACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,KAAK;EACL,iBAAe,OAAO,mBAAmB;EACzC,iBAAc;EACd,SAAS;IAET,oCAAC,iBAAc,OAAO;EAAE,OAAO;EAAS,SAAS;EAAK,GAAI,CAC/C,EACb,oCAAC;EACO;EACN,UAAU,UAAU;EACpB,MAAM;EACN;EACA;KAEE,EAAE,iBAAiB,gBACnB,oCAAC;EACC,GAAI;EACJ,OAAO,EACL,iBACE,cAAc,WAAW,eAAe,iBAC3C;IAED,oCAAC,aACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,aAAa;IAEb,oCAAC;EACC,eAAe;EACf,IAAG;EACH,aAAY;EACZ,WAAW;EACX,eAAe,QAAQ,MAAM;IAE5B,UAAU,KAAK,SACd,oCAAC;EACC,IAAI,yCAAuC,KAAK;EAChD,aAAa,yCAAuC,KAAK;EACzD,eAAe,qBAAqB,KAAK;EACzC,OAAO,KAAK;EACZ,KAAK,KAAK;IAET,KAAK,cACG,CAAC,CACL,CACO,CACd,CACH,CAEF,CACL,CACF;KAGR,QACE;;;;;AC3GN,MAAM,oBAAoB,WAAW,OAAO,mCAA+B;AAC3E,MAAM,uBAAuB,WAAW,OAAO,sCAAyC;AAKxF,MAAM,iCAAiC,OAAO;AAC9C,MAAM,oCAAoC,OAAO;AAEjD,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM,EACJ,SAAS,QACV;CACD,SAAS;EACP,SAAS,MAAM,QAAQ,EAAE;EACzB,UAAU;EACX;CACD,MAAM,EACJ,UAAU,IACX;CACD,aAAa;EACX,UAAU;EACV,OAAO,MAAM,QAAQ,EAAE;EACvB,KAAK,MAAM,QAAQ,EAAE;EACrB,OAAO,MAAM,QAAQ,KAAK;EAC3B;CACD,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,gBAAgB;EACjB;CACD,QAAQ;EACN,UAAU;EACV,WAAW;EACZ;CACF,EAAE;AAEH,MAAa,mBAAmB;CAC9B,MAAM,UAAUA,aAAW;CAC3B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,kBAAkB,YAAY;CACtC,MAAM,OAAO,SAAS;CACtB,MAAM,YAAY,OAAO,cAAc,OAAO,iBAAiB;CAE/D,MAAM,WAAW,cAAc,OAAO;CACtC,MAAM,cAAc,cAAc,OAAO;CACzC,MAAM,iBAAiB,cAAc,OAAO;CAC5C,MAAM,mBAAmB,cAAc,OAAO;CAE9C,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,CAAC,4BAA4B,+BACjC,SAAS,MAAM;CACjB,MAAM,CAAC,gBAAgB,mBAAmB,SAAS,MAAM;CACzD,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CAErE,MAAM,kBAAkB,OAAO,MAAM;CAErC,MAAM,qBAAqB,UAAU;AACnC,cAAY,MAAM,cAAc;AAIhC,MAAI,CAAC,gBAAgB,SAAS;AAC5B,mBAAgB,UAAU;AAE1B,OAAI;AACF,8BAA0B;YACnB,GAAG;AAGZ,OAAI;AACF,iCAA6B;YACtB,GAAG;;;CAMhB,MAAM,2BAA2B;AAC/B,cAAY,KAAK;;CAGnB,MAAM,qBAAqB,kBAAkB;AAC3C,cAAY,KAAK;AACjB,gBAAc,uCAAuC;IACpD,CAAC,cAAc,CAAC;CAEnB,MAAM,uCAAuC;AAC3C,8BAA4B,KAAK;AACjC,cAAY,KAAK;;CAGnB,MAAM,wCAAwC;AAC5C,8BAA4B,MAAM;;CAGpC,MAAM,2BAA2B;AAC/B,kBAAgB,KAAK;AACrB,cAAY,KAAK;;CAGnB,MAAM,4BAA4B;AAChC,kBAAgB,MAAM;;CAGxB,MAAM,OAAO,QAAQ,SAAS;CAC9B,MAAM,KAAK,OAAO,wBAAwB;CAI1C,MAAM,sBAAsB,gBAAc;EACxC,MAAM,iBAAiB,CAAC,IAAI,GAAG,CAAC,SAASC,YAAU;EACnD,MAAM,0BAA0B,CAAC,CAAC,cAAc;EAChD,MAAM,cACJ,KAAK,IAAI,0BACT,KAAK,IAAI,oBACT,KAAK,IAAI;AACX,SAAO,kBAAkB,2BAA2B;;CAGtD,MAAM,uBAAuB,YAC3B,YACE,UACE,cAAc,iBACd,+BACA;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,MAAM,gBAAgB,CACxB;CAED,MAAM,4BAA4B,YAChC,YACE,UACE,cAAc,iBACd,yBACA;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,MAAM,gBAAgB,CACxB;CAED,MAAM,eAAe,mBAAmB,UAAU;CAClD,MAAM,0BACJ;EAAC;EAAG;EAAI;EAAI;EAAG,CAAC,SAAS,UAAU,IACnC,YACA,eACA,kBACA;CACF,MAAM,0BAA0B,aAAa;AAE7C,iBAAgB;EACd,MAAM,oBAAoB,YAAY;AACpC,OAAI;AACF,QAAI,cAAc,OAAO,qBAAqB,IAE5C,yBADiB,MAAM,2BAA2B,GACjB,WAAW,IAAI;QAGhD,yBADiB,MAAM,sBAAsB,GACZ,WAAW,IAAI;YAE3C,OAAO;AACd,2BAAuB,MAAM;;;AAGjC,qBAAmB;IAClB,CAAC,sBAAsB,0BAA0B,CAAC;AAGrD,KAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,wBAChD,QAAO,oCAAC,SAAI,IAAG,yBAAyB;AAG1C,QACE,oCAAC;EAAI,IAAG;EAAuB,WAAW,QAAQ;IAChD,oCAAC;EACC,IAAG;EACH,iBAAe;EACf,iBAAc;EACd,SAAS;IAET,oCAACC,eAAgB,OAAO;EAAE,OAAO;EAAS,SAAS;EAAK,GAAI,CACjD,EACb,oCAAC;EACK;EACE;EACI;EACV,SAAS;EACT,cAAc;GACZ,UAAU;GACV,YAAY;GACb;EACD,iBAAiB;GACf,UAAU;GACV,YAAY;GACb;IAED,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC,SAAI,WAAW,QAAQ,UACtB,oCAAC,cAAW,SAAQ,QAAM,EAAE,OAAO,CAAc,EACjD,oCAAC;EACC,MAAK;EACL,WAAW,QAAQ;EACnB,SAAS;IAET,oCAACC,YAAY,CACF,CACT,EACN,oCAAC;EAAK,WAAU;EAAM,cAAW;IAE9B,gBACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACD,kBAAkB,CACN,EACf,oCAAC,gBAAa,SAAS,EAAE,WAAW,GAAI,CAC/B,EAIZ,2BACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACE,WAAW,CACC,EACf,oCAAC,gBAAa,SAAS,EAAE,iBAAiB,GAAI,CACrC,EAIZ,2BACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACF,kBAAkB,CACN,EACf,oCAAC,gBAAa,SAAS,EAAE,wBAAwB,GAAI,CAC5C,CAER,CACH,CACE,EAGV,oCAAC,YAAS,UAAU,oCAAC,aAAI,aAAgB,IACvC,oCAAC;EAAkB,MAAM;EAAgB,SAAS;GAAuB,CAChE,EAGX,oCAAC,YAAS,UAAU,oCAAC,aAAI,aAAgB,IACvC,oCAAC;EACC,MAAM;EACN,SAAS;EACwB;EACjC,WAAW,WAAW;AACpB,WAAQ,IAAI,kBAAkB,OAAO;;EAEvC,eAAe,EAAE;GACjB,CACO,CACP;;;;;ACpSV,MAAMG,cAAY,WAAW;CAC3B,MAAM;EACJ,OAAO;EACP,QAAQ;EACR,kBAAkB,EAAC,kBAAoD,oBAAoB,YAAY;EACvG,OAAO;EACP,SAAS;EACT,YAAY;EACZ,UAAU;EAEV,aAAa,EACX,OAAO,WACR;EACF;CACF,YAAY;EACT,UAAU;EACV,MAAM;EACN,WAAW;EACX,YAAY;EACd;CACD,WAAW;EACR,UAAU;EACV,OAAO;EACP,YAAY;EACd;CACD,CAAC;AAEF,MAAa,0BAA0B;CACtC,MAAM,aAAa,WAAW;CAC9B,MAAM,mBAAmB,qBAAqB;CAE7C,MAAM,UAAUA,YAAU,EAAC,aAAa,kBAAiB,CAAC;AAC1D,KAAG,CAAC,iBAAmB,QAAO;AAE9B,QACE,oCAAC;EACC,WAAW,GAAG,QAAQ,KAAK,GAAG,qBAAqB,YAAY,YAAY;EAC3E,IAAG;IAEH,oCAACC,gBAAW,WAAW,QAAQ,cAC5B,kBAAkB,OAAO,EAAE,CAAC,aAAa,GAAC,kBAAkB,MAAM,EAAE,IAAI,GAC9D,EAChB,oCAACA,gBAAW,WAAW,QAAQ,aACzB,YAAY,cAAc,WAChB,CACT;;;;;AC/BV,MAAMC,cAAY,YACf,WAAW;CACV,MAAM;EACJ,OAAO,OAAO,SAAS,QAAQ;EAC/B,QAAQ,OAAO,QAAQ,SAAS;EAEjC;CACD,QAAQ,EACN,MAAM,GACP;CACD,cAAc;EACZ,SAAS;EACT,YAAY,EAAE,qBAAqB,KAAK;EACzC;CACD,SAAS;EACP,SAAS;EACT,WAAW,MAAM,QAAQ,EAAE;EAC5B;CACD,WAAW,EACT,OAAO,OAAO,SAAS,gBAAgB,OAAO,SAAS,SAAS,KAAK,EACtE;CACD,QAAQ;EACN,OAAO;EACP,QAAQ;EACR,iBAAiB,OAAO,SAAS,WAAW;EAC7C;CACD,QAAQ;EACN,YAAY,MAAM,QAAQ,EAAE;EAC5B,WAAW,MAAM,QAAQ,MAAM;EAChC;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACX;CACF,GACD,EAAE,MAAM,cAAc,CACvB;;;;AAKD,MAAa,oBAAoB,UAAU;CAEzC,MAAM,UAAUA,YAAU,EACxB,gBAFe,qBAAqB,GAET,mBAAmB,GAC/C,CAAC;CACF,MAAM,EAAE,cAAc;AAEtB,QAAO,oCAAC,SAAI,WAAW,KAAK,WAAW,QAAQ,aAAa,GAAI;;;;;AAMlE,MAAM,cAAc,UAAU;CAC5B,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,EACJ,WACA,UACA,YACA,YACA,UACA,iBAAiB,QACjB,QAAQ,WACR,oBACA,wBACA,iBACA,cACA,cACA,eACA,eACA,WACA,iBACA,GAAG,UACD;CAGJ,MAAM,SAAS,cADD,UAAU,CACW,YAAY,GAAG,KAAK,CAAC;AAExD,QACE,0DACE,oCAAC;EACC,WAAW;EACX,UAAS;EACF;EACP,GAAI;EACO;EACX,SAAS,EAAE,MAAM,QAAQ,MAAM;IAE/B,oCAAC,wBAAoB,EACrB,oCAAC,WAAQ,WAAW,QAAQ,WACzB,UAAU,CAAC,iBACV,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,WAAW,KAAK;IAElD,oCAAC,iBAAa,CACH,EAEd,CAAC,UACA,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,WAAW,KAAK;IAElD,oCAAC,uBAAmB,CACT,EAGf,oCAAC;EACC,WAAU;EACV,SAAQ;EACR,OAAO,EAAE,YAAY,iBAAiB,IAAI;IAEzC,SACU,EAEZ,UACC,oCAAC,SAAI,OAAO,EAAE,YAAY,IAAI,IAC3B,MAAM,eAAe,eAAe,GACnC,iBACE,kBAAkB,OAAO,mBAAmB,aAAa,eAAe,QAAQ,eAAe,iBACjG,oCAACC;EACC,eAAe,eAAe;EAC9B,MAAM,eAAe;EACrB,OAAO,eAAe;EACtB,UAAU,eAAe;EACzB,4BAA4B,eAAe;EAC3C,aAAa,eAAe;EAC5B,WAAW,eAAe;EAC1B,YAAY,eAAe;GAC3B,GAEF,oCAAC;EACC,OAAM;EACN,MAAM;EACkB;GACxB,CAEA,EAER,oCAAC,SAAI,WAAW,QAAQ,YAAW,WAAiB,EACnD,gBACC,oCAAC;EACC,MAAM;EACQ;EACd,OAAO;EACU;GACjB,EAGH,CAAC,UAAU,CAAC,iBACX,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,UAAU,KAAK;IAEjD,oCAAC,iBAAa,CACH,EAEf,oCAAC,SAAI,WAAW,QAAQ,4BACtB,oCAAC,qCAAiC,CAC9B,EACN,oCAAC,iBAAa,EACd,oCAAC,oBAA4B,YAAa,EAC1C,oCAAC,aAAK,WAAiB,CACf,CACH,EACT,oCAAC,oBAA4B,YAAa,CACzC;;AAIP,yBAAe;AAEf,WAAW,YAAY;CACrB,gBAAgB,UAAU,UAAU;EAClC,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACX,CAAC;CAIF,iBAAiB,UAAU;CAC5B;;;;AC7MD,MAAMC,cAAY,YACf,WAAW;CACV,MAAM,EAAE;CACR,SAAS,EAAE;CACX,SAAS;EACP,OAAO;EACP,QAAQ;EACT;CACD,OAAO;EACL,OAAO;EACP,QAAQ;EACT;CACF,GACD,EAAE,MAAM,cAAc,CACvB;;;;;;;;AASD,MAAM,cAAc,UAAU;CAC5B,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,EAAE,MAAM,OAAO,OAAO,WAAW,WAAW,GAAG,UAAU;CAC/D,MAAM,OAAO,qBAAqB;CAElC,MAAM,SAAS,YAAY,OAAO,EAAE,OADlB;EAAE,SAAS;EAAI,OAAO;EAAI,CAAC,SAAS,MACA,MAAM,CAAC;AAE7D,QACE,oCAAC;EACC,KAAK;EACL,cAAY,GAAG,KAAK;EACpB,GAAI;EACJ,WAAW,KAAK,WAAW,QAAQ,MAAM;EACzC,KAAK;IAEJ,MAAM,MAAM,EAAE,OAAO,EAAE,IAAI,IACrB;;AAIb,yBAAe;;;;ACjCf,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM;EACJ,SAAS,EACP,QAAQ,MAAM,QAAQ,EAAE,EACzB;EACD,gBAAgB,EACd,eAAe,MAAM,QAAQ,EAAE,EAChC;EACF;CACD,YAAY;EACV,SAAS;EACT,cAAc,MAAM,QAAQ,EAAE;EAC/B;CACD,eAAe;EACb,QAAQ;EACR,OAAO;EACP,cAAc,MAAM,QAAQ,EAAE;EAC/B;CACD,aAAa;EACX,SAAS;EACT,eAAe;EACf,YAAY;EACb;CACD,oBAAoB,EAClB,YAAY,MAAM,QAAQ,EAAE,EAC7B;CACD,WAAW,EACT,aAAa,MAAM,QAAQ,EAAE,EAC9B;CACD,SAAS,EACP,QAAQ,MAAM,QAAQ,EAAE,EACzB;CACD,QAAQ,EACN,UAAU,IACX;CACF,EAAE;AAEH,MAAa,wBAAwB,YAAY,OAAO,QAAQ;CAC9D,MAAM,UAAU,WAAW;CAC3B,MAAM,cAAc;CACpB,MAAM,EACJ,aACA,eACA,MACA,QACA,WAAW,aACX,uBAAuB,SACrB;CACJ,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,GAAG;CAChE,MAAM,UAAU,YAAY;CAC5B,MAAM,uBAAuB,QAAQ,KAAK,IAAI;CAC9C,MAAM,EAAE,GAAG,iBAAS,gBAAgB;CACpC,MAAM,EAAE,iBAAiB,gBAAgB;CAEzC,MAAM,8BAA8B,UAAU,WAAW;AACvD,MAAI,WAAW,gBAAiB;AAChC,wBAAsB,SAAS;AAC/B,cAAY,SAAS,SAAS;AAC9B,eAAa,SAAS,SAAS;AAC/B,kBAAgB;;AAGlB,iBAAgB;AACd,MAAI,eAAe,CAAC,mBAIlB,uBAH0B,YAAY,MACnC,OAAO,GAAG,aAAa,eAAe,SACxC,CACuC;IAEzC;EAAC;EAAe;EAAa;EAAmB,CAAC;AASpD,KAAI,CAAC,KAAM,QAAO;AAElB,QACE,oCAAC;EAAiB;EAAK,WAAW,QAAQ;IACxC,oCAAC,SAAI,WAAW,QAAQ,cACtB,oCAACC;EACC,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,MAAK;EACL,WAAW,QAAQ;GACnB,EACF,oCAAC,SAAI,WAAW,QAAQ,sBACtB,oCAAC;EAAW,WAAW,QAAQ;EAAW,SAAQ;IAC/C,MAAM,KACI,EACb,oCAAC;EAAW,WAAW,QAAQ;EAAW,SAAQ;IAC/C,MAAM,MACI,CAcT,CACF,EACL,eAAe,QAAQ,gBACtB,oCAAC;EACC,WAAW,QAAQ;EACnB,OAAO;EACP,oBAAoB,QAAQ,UAC1B,QAAQ,aAAa,OAAO;EAE9B;EACA,IAAG;EACH,MAAK;EACL,SAAS,cAAc,cAAc,EAAE;EACvC,iBAAiB,WACf,QAAQ,aAAa,QAAQ,aAAa;EAE5C,WAAW,OAAO,UAAU,WAC1B,2BAA2B,UAAU,OAAO;EAE9C,cAAc,WACZ,oCAAC;GACC,GAAI;GACJ,YAAY;IAAC,GAAG,OAAO;IACrB,IAAG;IACH,aAAY;IACb;GACD,OAAO,EAAE,iBAAiB;GAC1B,SAAQ;IACR;EAEJ,eAAe,QAAQ,EAAE,eACvB,oCAAC;GACC,OAAO;IAAE,OAAO;IAAQ,QAAQ;IAAQ;GACxC,aAAa,mCAAmC,OAAO,WAAW,QAAQ,QAAQ,GAAG;GACrF,GAAI;KAEH,OAAO,WACL;GAEP,EAEJ,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,eAAe;AACb,oBAAiB;AACjB,4BAAyB;AACzB,sBAAmB;AACnB,WAAQ;;EAEV,SAAQ;EACR,OAAM;IAEL,EAAE,WAAW,CACP,CACG;EAEhB;AAEF,sBAAsB,cAAc"}
|
|
1
|
+
{"version":3,"file":"FluentProfileMenuCard-RU7wosYK.js","names":["useStyles","useStyles","expanded","MiniCollapsibleSidebar","useStyles","useStyles","useStyles","prevOpen","useStyles","productId","HelpOutlineIcon","CloseIcon","ChatIcon","useStyles","Typography","useStyles","ShellDropdown","useStyles","UserAvatar"],"sources":["../src/shell/ui/MiniCollapsibleSidebar.jsx","../src/shell/ui/NavigationSidebar.jsx","../src/shell/ui/AmbientProjectSwitcher.jsx","../src/shell/ui/ShellDropdown.jsx","../src/shell/ui/LanguageSwitcher.jsx","../src/shell/ui/HelpCenter.jsx","../src/shell/ui/EnvironmentRibbon.tsx","../src/shell/ui/SiteHeader.jsx","../src/shell/ui/UserAvatar.jsx","../src/shell/ui/FluentProfileMenuCard.jsx"],"sourcesContent":["import { Drawer, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n width: theme?.dimensions?.drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap'\n },\n expanded: {\n '&, & > $paper': {\n // width: theme.dimensions.drawerWidth,\n width: theme.spacing(32),\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen\n })\n }\n },\n collapsed: {\n '&, & > $paper': {\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n transition: theme?.transitions?.create('width', {\n easing: theme?.transitions?.easing?.sharp,\n duration: theme?.transitions?.duration?.leavingScreen\n })\n }\n },\n paper: {}\n }),\n { name: 'MiniCollapsibleSidebar' }\n)\n\nconst MiniCollapsibleSidebar = (props) => {\n const classes = useStyles(props)\n const { expanded = true, className, children, ...other } = props\n\n return (\n <Drawer\n variant='permanent'\n open\n {...other}\n className={clsx(\n className,\n classes.root,\n expanded ? classes.expanded : classes.collapsed\n )}\n classes={{\n root: classes.root,\n paper: classes.paper\n }}\n >\n {children}\n </Drawer>\n )\n}\n\nexport default MiniCollapsibleSidebar\n","import React, { useState, useCallback } from 'react';\nimport { makeStyles, Toolbar, lighten } from '@material-ui/core';\nimport MiniCollapsibleSidebar from './MiniCollapsibleSidebar';\nimport { SidebarCollapseButton } from './SidebarCollapseButton';\nimport { AppMenu } from '../../UI/navigation/menus/AppMenu';\nimport { useShellStore } from '../../stores/shellStore';\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './useBuildEnvironment';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n marginTop: 400\n },\n paper: {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? ''\n : lighten(theme?.palette?.primary?.main, 0.9),\n overflowX: 'hidden'\n },\n list: {\n flex: 1,\n paddingTop: 0,\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch'\n },\n spacer: {\n flex: 1,\n minHeight: theme.spacing(2)\n },\n footer: {},\n toolbar: {\n padding: 0,\n minHeight: ({appRibbonSpace}) => theme.spacing(6) + appRibbonSpace\n }\n }),\n { name: 'NavigationSidebar' }\n);\n\nconst NavigationSidebar = (props) => {\n const buildEnv = useBuildEnvironment()\n const classes = useStyles({appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0});\n const {\n data,\n toggleExpandClick,\n navMenuHoverOn,\n user,\n toggle = true,\n useGlobalState = false,\n ...other\n } = props;\n const [expanded, setExpanded] = useState(true);\n const { navigationExpanded, setNavigationExpanded } = useShellStore();\n\n let navExpanded = useGlobalState ? navigationExpanded : expanded;\n\n const [hoverExpand, setHoverExpand] = useState(false);\n\n // ** Remove for now to deal with programmatic toggle **\n // const wide = useMediaQuery(theme.breakpoints.up('sm'))\n // useEffect(() => {\n // // Set the bar to be expanded/collapsed depending on the breakpoint size\n // // This works on load and also when resizing crosses the breakpoint\n // setExpanded(wide)\n // }, [wide])\n\n const handleHoverToggle = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(true);\n }\n };\n const handleHoverLeave = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(false);\n }\n };\n\n const handleToggleClick = useCallback(() => {\n if (useGlobalState) {\n setNavigationExpanded(!navigationExpanded);\n } else {\n setExpanded((expanded) => !expanded);\n }\n }, [setNavigationExpanded, useGlobalState, navigationExpanded]);\n\n return (\n <MiniCollapsibleSidebar\n classes={{ root: classes.root, paper: classes.paper }}\n expanded={navExpanded || hoverExpand}\n onMouseEnter={handleHoverToggle}\n onMouseLeave={handleHoverLeave}\n PaperProps={{ elevation: 0, variant: 'outlined' }}\n {...other}\n >\n <Toolbar className={classes.toolbar} />\n\n {toggle && (\n <SidebarCollapseButton\n id='udpRecord-NavigationSidebar'\n udprecordid='udpRecord-NavigationSidebar'\n expanded={navExpanded}\n onClick={handleToggleClick}\n />\n )}\n {data && <AppMenu menuItems={data} sidebarExpanded={navExpanded} user={user} />}\n </MiniCollapsibleSidebar>\n );\n};\n\nexport default NavigationSidebar;\n","import React, { useState } from 'react'\nimport { makeStyles, Popover, Typography, useTheme } from '@material-ui/core'\nimport { ChevronDownIcon } from '@fluentui/react-icons'\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton'\nimport {AmbientPopoverMenuItem} from '../../UI/inputs/buttons/AmbientPopoverMenuItem'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n // border: '1px solid white',\n background: props => props.backgroundColor ? props.backgroundColor : theme.palette.secondary.main,\n borderRadius: 50,\n padding: 6,\n paddingLeft:16\n },\n popoverRoot: {},\n icon: {\n color: theme.palette.primary.main,\n borderRadius: 50\n }, \n label: {\n display: 'block',\n width: props => props.width ? props.width : 100,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }, \n listWrapper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const AmbientProjectSwitcher = (props) => {\n \n const classes = useStyles(props)\n\n const theme = useTheme()\n\n const { data, selectedItem } = props\n\n const [anchorEl, setAnchorEl] = useState(null)\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const open = Boolean(anchorEl)\n const id = open ? 'open' : undefined\n\n return (\n <div className={classes.root}>\n <div className={classes.listWrapper}>\n <Typography className={classes.label} > \n {selectedItem} \n </Typography>\n </div>\n \n <FluentIconButton\n className={classes.icon}\n icon={ChevronDownIcon}\n onClick={handleClick}\n style={{background: theme.palette.common.white}}\n />\n\n <Popover\n classes={{ root: classes.popoverRoot }}\n square\n elevation={6}\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div >\n <div>\n {data && data.map((item) => {\n return (\n <AmbientPopoverMenuItem\n label={item.label}\n component={ChevronDownIcon}\n click={()=>item.click(item.label)}\n />\n )\n })}\n </div>\n </div>\n </Popover>\n </div>\n )\n}\n\nAmbientProjectSwitcher.propTypes = {\n /**\n * The array used to map for label and functions to list items. (array).\n */\n data: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Change the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex', alignItems: 'center' },\n field: {\n minWidth: 300,\n maxWidth: 400,\n width: '100%',\n alignSelf: 'left',\n color: '#fff',\n '& .MuiOutlinedInput-root': {\n color: '#fff',\n backgroundColor: 'transparent',\n '& fieldset': {\n borderColor: 'rgba(255,255,255,0.6)',\n },\n '&:hover fieldset': {\n borderColor: 'rgba(255,255,255,0.85)',\n },\n '&.Mui-focused fieldset': {\n borderColor: '#fff',\n },\n '& input': {\n paddingTop: 4,\n paddingBottom: 4,\n height: 20,\n boxSizing: 'border-box',\n color: '#fff',\n },\n '& .MuiAutocomplete-input': {\n color: '#fff',\n },\n },\n '& .MuiInputBase-root': {\n color: '#fff',\n },\n '& .MuiAutocomplete-popupIndicator, & .MuiAutocomplete-clearIndicator': {\n color: '#fff',\n opacity: 0.95,\n },\n '& input::placeholder': {\n color: 'rgba(255,255,255,0.7)',\n },\n },\n}));\n\nfunction getDisplayName(item) {\n if (!item && item !== 0) return '';\n if (typeof item === 'string' || typeof item === 'number') return String(item);\n if (typeof item === 'object') {\n const name = item.name ?? item.label ?? item.title ?? item.displayName;\n return name !== undefined && name !== null ? String(name) : '';\n }\n return String(item);\n}\n\nexport const ShellDropdown = (props) => {\n const classes = useStyles();\n const {\n componentName = 'Item',\n data = [],\n value = null,\n onChange,\n optionLabelDisplayFunction = getDisplayName,\n placeholder,\n className,\n classProps,\n ...other\n } = props;\n\n const placeholderText = placeholder ?? (!value ? `All ${componentName}s` : undefined);\n\n return (\n <div className={`${classes.root} ${className || ''}`}>\n <FluentTextFieldAutoComplete\n className={classes.field}\n classProps={{ autocompleteRoot: classes.field, ...classProps }}\n options={data}\n optionLabelDisplayFunction={optionLabelDisplayFunction}\n onChange={onChange}\n value={value}\n placeholder={placeholderText}\n {...other}\n />\n </div>\n );\n};\n\nShellDropdown.propTypes = {\n componentName: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n optionLabelDisplayFunction: PropTypes.func,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n classProps: PropTypes.object,\n};\n\nexport default ShellDropdown;\n","import React, { useState, useRef, useEffect } from 'react'\nimport {\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n makeStyles,\n IconButton,\n MenuItem\n} from '@material-ui/core'\nimport { TranslateIcon } from '@fluentui/react-icons'\nimport i18n from 'i18next';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n paper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const LanguageSwitcher = (props) => {\n const classes = useStyles()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef(null)\n const { languages } = props\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen)\n }\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return\n }\n setOpen(false)\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus()\n }\n prevOpen.current = open\n }, [open])\n\n const handleLanguageChange = (event) => {\n const currentLanguage = event;\n //setLangKey(currentLanguage.languageCode);\n languageSelector(currentLanguage.languageCode);\n };\n\n const languageSelector = (defaultLang) => {\n i18n.changeLanguage(defaultLang);\n }\n\n if (languages != null) {\n return (\n <div id='udpRecord-LanguageSwitcher' className={classes.root}>\n <div>\n <IconButton\n id='udpRecord-LanguageSwitcher-IconButton'\n udprecordid='udpRecord-LanguageSwitcher-IconButton'\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup='true'\n onClick={handleToggle}\n >\n <TranslateIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === 'bottom' ? 'center top' : 'center bottom'\n }}\n >\n <Paper>\n <ClickAwayListener \n id='udpRecord-LanguageSwitcher-ClickAway' \n udprecordid='udpRecord-LanguageSwitcher-ClickAway' \n onClickAway={handleClose}\n >\n <MenuList\n autoFocusItem={open}\n id='menu-list-grow'\n udprecordid='udpRecord-LanguageSwitcher-MenuList'\n onKeyDown={handleListKeyDown}\n onClick={() => setOpen(false)}\n >\n {languages.map((data) =>\n <MenuItem\n id={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n udprecordid={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n onClick={() => handleLanguageChange(data)}\n value={data.languageCode}\n key={data.languageId}\n >\n {data.languageLabel}\n </MenuItem>)}\n </MenuList>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </div>\n </div>\n )\n } else {\n return (\n null\n )\n }\n\n}","import React, { useState, useCallback, useEffect, useRef, Suspense, lazy } from 'react';\nimport {\n makeStyles,\n IconButton,\n Popover,\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Dialog,\n DialogTitle,\n DialogContent\n} from '@material-ui/core';\nimport {HelpOutline as HelpOutlineIcon, Chat as ChatIcon, Close as CloseIcon} from '@material-ui/icons';\nimport { useActions } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../src/utilities/auth/useUser';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\n// Lazy-load side sheets so they aren't imported until needed. Keep\n// module-level lazy declarations so the imports are deduped and cached.\nconst UserFormSideSheet = lazy(() => import('./addUser/UserFormSideSheet'));\nconst SupportCaseSideSheet = lazy(() => import('../../UI/support/SupportCaseSideSheet'));\n\n// Preload helpers (return the dynamic import promise). Calling these\n// will start fetching the chunk in the background and populate the\n// module cache so React.lazy resolves quickly later.\nconst preloadUserFormSideSheet = () => import('./addUser/UserFormSideSheet');\nconst preloadSupportCaseSideSheet = () => import('../../UI/support/SupportCaseSideSheet');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n popover: {\n padding: theme.spacing(2),\n maxWidth: 300\n },\n icon: {\n minWidth: 40\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500]\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n dialog: {\n minWidth: '80vw',\n minHeight: '80vh'\n }\n}));\n\nexport const HelpCenter = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { triggerAction } = useActions();\n const user = useUser();\n const productId = Number(ConfigService.config.UNITY_PRODUCT_ID);\n\n const udpaiAPI = ConfigService.config.UDPAI_API_BASE;\n const udpaisearch = ConfigService.config.AI_SEARCH_URL;\n const udpaisearchkey = ConfigService.config.AI_SEARCH_KEY;\n const udpaisearchindex = ConfigService.config.AI_SEARCH_INDEX_NAME;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [isSupportCaseSideSheetOpen, setSupportCaseSideSheetOpen] =\n useState(false);\n const [isUserFormOpen, setUserFormOpen] = useState(false);\n const [supportCaseHealthOk, setSupportCaseHealthOk] = useState(false);\n\n const hasPreloadedRef = useRef(false);\n\n const handleOpenPopover = (event) => {\n setAnchorEl(event.currentTarget);\n\n // Preload both side sheets in the background the first time the popover opens.\n // We assume that if the user opened the popover, they might open one of the sheets.\n if (!hasPreloadedRef.current) {\n hasPreloadedRef.current = true;\n // Start background fetches but don't await them.\n try {\n preloadUserFormSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n try {\n preloadSupportCaseSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n }\n };\n\n const handleClosePopover = () => {\n setAnchorEl(null);\n };\n\n const handleLaunchAction = useCallback(() => {\n setAnchorEl(null);\n triggerAction('CEE75B36-01B0-4FAC-9AE7-C1AC8A2A194F');\n }, [triggerAction]);\n\n const handleOpenSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(true);\n setAnchorEl(null);\n };\n\n const handleCloseSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(false);\n };\n\n const handleOpenUserForm = () => {\n setUserFormOpen(true); // Open UserForm modal\n setAnchorEl(null);\n };\n\n const handleCloseUserForm = () => {\n setUserFormOpen(false); // Close UserForm modal\n };\n\n const open = Boolean(anchorEl);\n const id = open ? 'help-center-popover' : undefined;\n\n // Conditions for rendering buttons\n // 2 assets, 41 sandbox, 51 assets, 53 mm, 68 timesheets\n const shouldShowAddUsers = (productId) => {\n const isValidProduct = [41, 53].includes(productId);\n const isSecurityApiConfigured = !!ConfigService.securityV1ApiUrl;\n const isValidUser =\n user.can.CAN_MANAGE_ROLES_USERS &&\n user.can.CAN_MANAGE_USERS &&\n user.can.CAN_VIEW_USERS;\n return isValidProduct && isSecurityApiConfigured && isValidUser;\n };\n\n const getSupportCaseStatus = useCallback(\n async () =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpunitysupport/healthCheck`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const getSupportCaseStatusUnity = useCallback(\n async () =>\n apiMutate(\n ConfigService.supportV1ApiUrl,\n `ServiceHealth/Support`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const showAddUsers = shouldShowAddUsers(productId);\n const shouldShowChatAssistant =\n [2, 41, 51, 68].includes(productId) &&\n udpaiAPI &&\n udpaisearch &&\n udpaisearchkey &&\n udpaisearchindex;\n const shouldShowSupportTicket = productId && supportCaseHealthOk;\n\n useEffect(() => {\n const supportCaseStatus = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === \"1\") {\n const response = await getSupportCaseStatusUnity();\n setSupportCaseHealthOk(response?.status === 200);\n } else {\n const response = await getSupportCaseStatus();\n setSupportCaseHealthOk(response?.status === 200);\n }\n } catch (error) {\n setSupportCaseHealthOk(false);\n }\n };\n supportCaseStatus();\n }, [getSupportCaseStatus, getSupportCaseStatusUnity]);\n\n // Hide the entire help center if neither button should be rendered\n if (!showAddUsers && !shouldShowChatAssistant && !shouldShowSupportTicket) {\n return <div id='udpRecord-HelpCenter' />;\n }\n\n return (\n <div id='udpRecord-HelpCenter' className={classes.root}>\n <IconButton\n id='udpRecord-HelpCenter-IconButton'\n aria-controls={id}\n aria-haspopup='true'\n onClick={handleOpenPopover}\n >\n <HelpOutlineIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popover\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClosePopover}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center'\n }}\n >\n <div className={classes.popover}>\n <div className={classes.header}>\n <Typography variant='h6'>{t('Help')}</Typography>\n <IconButton\n size='small'\n className={classes.closeButton}\n onClick={handleClosePopover}\n >\n <CloseIcon />\n </IconButton>\n </div>\n <List component='nav' aria-label='Help options'>\n {/* First Button: Add User */}\n {showAddUsers && (\n <ListItem\n button\n id='udpRecord-HelpCenter-AddUsers'\n onClick={handleOpenUserForm}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Add User')} />\n </ListItem>\n )}\n\n {/* Second Button: Chat Assistant */}\n {shouldShowChatAssistant && (\n <ListItem\n button\n id='udpRecord-HelpCenter-ChatAssistant'\n onClick={handleLaunchAction}\n >\n <ListItemIcon className={classes.icon}>\n <ChatIcon />\n </ListItemIcon>\n <ListItemText primary={t('Chat Assistant')} />\n </ListItem>\n )}\n\n {/* Third Button: Submit Support Ticket */}\n {shouldShowSupportTicket && (\n <ListItem\n button\n id='udpRecord-HelpCenter-SupportTicket'\n onClick={handleOpenSupportCaseSideSheet}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Submit Support Ticket')} />\n </ListItem>\n )}\n </List>\n </div>\n </Popover>\n\n {/* Modal for UserForm (lazy-loaded) */}\n <Suspense fallback={<div>Loading...</div>}>\n <UserFormSideSheet open={isUserFormOpen} onClose={handleCloseUserForm} />\n </Suspense>\n\n {/* Side Sheet for Support Ticket (lazy-loaded) */}\n <Suspense fallback={<div>Loading...</div>}>\n <SupportCaseSideSheet\n open={isSupportCaseSideSheetOpen}\n onClose={handleCloseSupportCaseSideSheet}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n onSubmit={(values) => {\n console.log('Form submitted', values);\n }}\n initialValues={{}}\n />\n </Suspense>\n </div>\n );\n};\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { APP_RIBBON_SPACE, useBuildEnvironment } from './useBuildEnvironment';\n\n\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AppBar,\n makeStyles,\n Toolbar,\n Typography,\n IconButton,\n useMediaQuery,\n useTheme\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport { WaffleIcon, CollapseMenuIcon } from '@fluentui/react-icons';\nimport { BreadCrumbMenu } from '../../UI/inputs/link/BreadCrumbMenu';\nimport { AmbientProjectSwitcher } from './AmbientProjectSwitcher';\nimport ShellDropdown from './ShellDropdown';\nimport { LanguageSwitcher } from './LanguageSwitcher';\nimport { HelpCenter } from './HelpCenter';\nimport { SiteHeaderRightComponentTarget } from './SiteHeaderRightComponent';\nimport PropTypes from 'prop-types';\nimport {\n useBuildEnvironment,\n APP_RIBBON_SPACE\n} from './useBuildEnvironment';\nimport { EnvironmentRibbon } from './EnvironmentRibbon';\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n color: theme?.palette?.appBar?.contrastText,\n zIndex: theme?.zIndex?.drawer + 1\n // Assume the drawer is always expanded unless the screen is too small for it and inset the left to account for it\n },\n spacer: {\n flex: 1\n },\n headerSpacer: {\n padding: 0,\n minHeight: ({ appRibbonSpace }) => 56 + appRibbonSpace\n },\n toolbar: {\n padding: 0,\n minHeight: theme.spacing(6)\n },\n appLaunch: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n avatar: {\n width: 25,\n height: 25,\n backgroundColor: theme?.palette?.secondary?.main\n },\n search: {\n marginLeft: theme.spacing(2),\n marginTop: theme.spacing(-1.35)\n },\n children: {\n flex: 1,\n minWidth: 5\n }\n }),\n { name: 'SiteHeader' }\n);\n\n/**\n * A spacing component with the same height as the SiteHeader\n */\nexport const SiteHeaderSpacer = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const { className } = props;\n\n return <div className={clsx(className, classes.headerSpacer)} />;\n};\n\n/**\n * Site header including app bar\n */\nconst SiteHeader = (props) => {\n const classes = useStyles(props);\n const {\n className,\n returnTo,\n appContent,\n userAvatar,\n siteName,\n breadCrumbRoot = 'home',\n color = 'primary',\n setAppSwitcherOpen,\n breadCrumbAltLabelList,\n currentLocation,\n switcherData,\n selectedItem,\n switcherWidth,\n hideAppLaunch,\n languages,\n backgroundColor,\n ...other\n } = props;\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n return (\n <>\n <AppBar\n elevation={0}\n position='fixed'\n color={color}\n {...other}\n className={className}\n classes={{ root: classes.root }}\n >\n <EnvironmentRibbon />\n <Toolbar className={classes.toolbar}>\n {mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n {!mobile && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <CollapseMenuIcon />\n </IconButton>\n )}\n\n <Typography\n component='h1'\n variant='h6'\n style={{ marginLeft: hideAppLaunch && 16 }}\n >\n {siteName}\n </Typography>\n\n {mobile && (\n <div style={{ marginLeft: 70 }}>\n {React.isValidElement(breadCrumbRoot) ? (\n breadCrumbRoot\n ) : breadCrumbRoot && typeof breadCrumbRoot === 'object' && (breadCrumbRoot.data || breadCrumbRoot.componentName) ? (\n <ShellDropdown\n componentName={breadCrumbRoot.componentName}\n data={breadCrumbRoot.data}\n value={breadCrumbRoot.value}\n onChange={breadCrumbRoot.onChange}\n optionLabelDisplayFunction={breadCrumbRoot.optionLabelDisplayFunction}\n placeholder={breadCrumbRoot.placeholder}\n className={breadCrumbRoot.className}\n classProps={breadCrumbRoot.classProps}\n />\n ) : (\n <BreadCrumbMenu\n color='primary'\n root={breadCrumbRoot}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n />\n )}\n </div>\n )}\n <div className={classes.children}>{appContent}</div>\n {switcherData && (\n <AmbientProjectSwitcher\n data={switcherData}\n selectedItem={selectedItem}\n width={switcherWidth}\n backgroundColor={backgroundColor}\n />\n )}\n\n {!mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('mobile', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n <div className={classes.additionalRightComponent}>\n <SiteHeaderRightComponentTarget />\n </div>\n <HelpCenter />\n <LanguageSwitcher languages={languages} />\n <div>{userAvatar}</div>\n </Toolbar>\n </AppBar>\n <SiteHeaderSpacer className={className} />\n </>\n );\n};\n\nexport default SiteHeader;\n\nSiteHeader.propTypes = {\n breadCrumbRoot: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n PropTypes.object\n ]),\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n};\n","import { Avatar, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\nimport useDevicePixelRatio from '../../utilities/useDevicePixelRatio.ts'\nimport useGravatar from '../../utilities/useGravatar.ts'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {},\n default: {},\n toolbar: {\n width: 32,\n height: 32\n },\n large: {\n width: 80,\n height: 80\n }\n }),\n { name: 'UserAvatar' }\n)\n\n/**\n * Inteligent user Avatar element\n *\n * - Loads a Gravatar based on the email if one exists\n * - Falls back to a text avatar while loading and when a Gravatar does not exist\n * - Automatically chooses image size based on size prop and device pixel density (and updates if device pixel density changes)\n */\nconst UserAvatar = (props) => {\n const classes = useStyles(props)\n const { name, email, size = 'default', className, ...other } = props\n const dppx = useDevicePixelRatio()\n const dimension = { toolbar: 32, large: 80 }[size] || 40\n const avatar = useGravatar(email, { size: dimension * dppx })\n\n return (\n <Avatar\n alt={name}\n aria-label={`${name}'s avatar`}\n {...other}\n className={clsx(className, classes[size])}\n src={avatar}\n >\n {name?.trim()?.charAt(0) || '?'}\n </Avatar>\n )\n}\n\nexport default UserAvatar\n","import React, { useState, useEffect, forwardRef } from 'react';\nimport { Button, CardContent, makeStyles, Typography } from '@material-ui/core';\nimport UserAvatar from './UserAvatar';\nimport { Autocomplete } from '@material-ui/lab';\nimport { TextField } from '@material-ui/core';\nimport { useHistory } from 'react-router-dom';\nimport { clearStoredPath } from '../../utilities/redirect/LocalRedirectUrlStorage';\nimport { clearStoredExternalPath } from '../../utilities/redirect/ExternalRedirectUrlStorage';\nimport {\n clearStoredTenant,\n storeTenant\n} from '../../utilities/storage/UnitySessionStorage';\nimport { useTranslation } from 'react-i18next';\nimport { useUserActions } from '../../utilities/auth/users';\nimport { ConfigService } from '../../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& > *': {\n margin: theme.spacing(1)\n },\n '&:last-child': {\n paddingBottom: theme.spacing(2)\n }\n },\n cardHeader: {\n display: 'flex',\n marginBottom: theme.spacing(3)\n },\n currentTenant: {\n margin: 'auto',\n width: '85%',\n marginBottom: theme.spacing(4)\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n },\n basicInfoContainer: {\n marginLeft: theme.spacing(1)\n },\n basicInfo: {\n paddingLeft: theme.spacing(1)\n },\n divider: {\n height: theme.spacing(3)\n },\n avatar: {\n fontSize: 40\n }\n}));\n\nexport const FluentProfileMenuCard = forwardRef((props, ref) => {\n const classes = useStyles();\n const devUnityUrl = 'https://unity-dev.univerus.com/';\n const {\n userTenants,\n currentTenant,\n user,\n logout,\n unityUrl = devUnityUrl,\n displayProfileButton = true\n } = props;\n const [currentTenantValue, setCurrentTenantValue] = useState('');\n const history = useHistory();\n const redirectToHome = () => history.push('/');\n const { t, i18n } = useTranslation();\n const { changeTenant } = useUserActions();\n\n const handleAutocompleteOnChange = (newValue, reason) => {\n if (reason !== 'select-option') return;\n setCurrentTenantValue(newValue);\n storeTenant(newValue.tenantId);\n changeTenant(newValue.tenantId);\n redirectToHome();\n };\n\n useEffect(() => {\n if (userTenants && !currentTenantValue) {\n const currentUserTenant = userTenants.find(\n (ut) => ut.tenantId === currentTenant?.tenantId\n );\n setCurrentTenantValue(currentUserTenant);\n }\n }, [currentTenant, userTenants, currentTenantValue]);\n\n const handleProfileClick = () => {\n // if this is unity (productid is 1), go to the profile slug, otherwise open the profile page in a new tab\n if(ConfigService.config.UNITY_PRODUCT_ID == 1) history.push('/profile')\n else window.open(unityUrl + '/profile');\n\n }\n\n if (!user) return null;\n\n return (\n <CardContent ref={ref} className={classes.root}>\n <div className={classes.cardHeader}>\n <UserAvatar\n name={user?.name}\n email={user?.email}\n size='large'\n className={classes.avatar}\n />\n <div className={classes.basicInfoContainer}>\n <Typography className={classes.basicInfo} variant='subtitle2'>\n {user?.name}\n </Typography>\n <Typography className={classes.basicInfo} variant='body2'>\n {user?.email}\n </Typography>\n {/* {displayProfileButton && (\n <div className={classes.buttonGroup}>\n <Button\n id='udpRecord-FluentProfileMenuCard-MyProfile'\n udprecordid='udpRecord-FluentProfileMenuCard-MyProfile'\n onClick={handleProfileClick}\n target='_blank'\n color='secondary'\n >\n {t('My Profile')}\n </Button>\n </div>\n )} */}\n </div>\n </div>\n {userTenants && user && changeTenant && (\n <Autocomplete\n className={classes.currentTenant}\n value={currentTenantValue}\n getOptionSelected={(option, value) =>\n option?.tenantId === value?.tenantId\n }\n disableClearable\n id='current-tenant'\n name='currentTenant'\n options={userTenants ? userTenants : []}\n getOptionLabel={(option) =>\n option?.tenantName ? option?.tenantName : ''\n }\n onChange={(event, newValue, reason) =>\n handleAutocompleteOnChange(newValue, reason)\n }\n renderInput={(params) => (\n <TextField\n {...params}\n inputProps={{...params.inputProps,\n id:'udpRecord-FluentProfileMenuCard-TextField',\n udprecordid:'udpRecord-FluentProfileMenuCard-TextField'\n }}\n label={t('Current Tenant')}\n variant='standard'\n />\n )}\n renderOption={(option, { selected }) => (\n <li\n style={{ width: '100%', height: '100%' }}\n udprecordid={`udpRecord-FluentProfileMenuCard-${option.tenantName.replace(/\\s+/g, '')}`}\n {...option}\n >\n {option.tenantName}\n </li>\n )}\n />\n )}\n <Button\n id='udpRecord-FluentProfileMenuCard-SignOut'\n udprecordid='udpRecord-FluentProfileMenuCard-SignOut'\n onClick={() => {\n clearStoredPath();\n clearStoredExternalPath();\n clearStoredTenant();\n logout();\n }}\n variant='outlined'\n color='secondary'\n >\n {t('Sign out')}\n </Button>\n </CardContent>\n );\n});\n\nFluentProfileMenuCard.displayName = 'FluentProfileMenuCard';\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentRadioGroup-
|
|
1
|
+
{"version":3,"file":"FluentRadioGroup-c7Gm4njz.js","names":[],"sources":["../src/UI/inputs/radio/FluentRadio.jsx","../src/UI/inputs/radio/FluentRadioGroup.jsx"],"sourcesContent":["import React from 'react';\nimport { Radio } from '@material-ui/core';\n\nexport const FluentRadio = props => {\n const {\n label,\n value,\n variant = 'outlined',\n color = 'secondary',\n ...otherProps\n } = props;\n\n return (\n <Radio\n id={'udpRecord-radio-' + value}\n updrecordid={'udpRecord-radio-' + value}\n label={label}\n value={value}\n variant={variant}\n color={color}\n {...otherProps}\n />\n );\n};\n","import React from 'react';\nimport { RadioGroup } from '@material-ui/core';\n\nexport const FluentRadioGroup = props => {\n const {\n name,\n value,\n ...otherProps\n } = props;\n\n return (\n <RadioGroup\n name={name}\n value={value}\n {...otherProps}\n />\n );\n};\n"],"mappings":";;;;AAGA,MAAa,eAAc,UAAS;CAClC,MAAM,EACJ,OACA,OACA,UAAU,YACV,QAAQ,aACR,GAAG,eACD;AAEJ,QACE,oCAAC;EACC,IAAI,qBAAqB;EACzB,aAAa,qBAAqB;EAC3B;EACA;EACE;EACF;EACP,GAAI;GACJ;;;;;AClBN,MAAa,oBAAmB,UAAS;CACvC,MAAM,EACJ,MACA,OACA,GAAG,eACD;AAEJ,QACE,oCAAC;EACO;EACC;EACP,GAAI;GACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentSelectMenu-
|
|
1
|
+
{"version":3,"file":"FluentSelectMenu-DWwJk0Gh.js","names":["option"],"sources":["../src/UI/inputs/menus/FluentSelectMenu.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React, { useCallback } from 'react';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&[class*=\"MuiOutlinedInput-root\"][class*=\"MuiOutlinedInput-marginDense\"]':\n {\n padding: '4px 8px'\n }\n }\n}));\n\nexport const FluentSelectMenu = ({\n data,\n id,\n onChange: onChangeProp,\n width = 300,\n // displayProperty = 'label',\n autoCompleteProps,\n displayProperty,\n ...otherProps\n}) => {\n const classes = useStyles();\n // Modified onChange to work inside final-form Field component\n // Also works with a passed in onChange function if not in Field component\n const onChange = useCallback(\n (e, value) => onChangeProp?.(value),\n [onChangeProp]\n );\n\n // return (\n // <Autocomplete\n // classes={{\n // inputRoot: classes.root\n // }}\n // id={id}\n // onChange={onChange}\n // options={data}\n // getOptionLabel={\n // displayProperty\n // ? option[displayProperty]\n // ? option[displayProperty]\n // : ''\n // : option\n // }\n // style={{ width: width }}\n // {...autoCompleteProps}\n // renderInput={(params) => <FluentTextField {...otherProps} {...params} />}\n // />\n // )\n return (\n <Autocomplete\n classes={{\n inputRoot: classes.root\n }}\n id={id}\n onChange={onChange}\n options={data}\n getOptionLabel={(option) =>\n displayProperty\n ? option[displayProperty]\n ? option[displayProperty]\n : ''\n : (option) => option\n }\n style={{ width: width }}\n {...autoCompleteProps}\n renderInput={(params) => (\n <FluentTextField {...otherProps} {...params} />\n )}\n />\n );\n};\n"],"mappings":";;;;;;AAMA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,gFACE,EACE,SAAS,WACV,EACJ,EACF,EAAE;AAEH,MAAa,oBAAoB,EAC/B,MACA,IACA,UAAU,cACV,QAAQ,KAER,mBACA,iBACA,GAAG,iBACC;CACJ,MAAM,UAAU,WAAW;CAG3B,MAAM,WAAW,aACd,GAAG,UAAU,eAAe,MAAM,EACnC,CAAC,aAAa,CACf;AAsBD,QACE,oCAAC;EACC,SAAS,EACP,WAAW,QAAQ,MACpB;EACG;EACM;EACV,SAAS;EACT,iBAAiB,WACf,kBACI,OAAO,mBACL,OAAO,mBACP,MACD,aAAWA;EAElB,OAAO,EAAS,OAAO;EACvB,GAAI;EACJ,cAAc,WACZ,oCAAC;GAAgB,GAAI;GAAY,GAAI;IAAU;GAEjD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as apiMutate } from "./useAxiosMutate-DcLxzykX.js";
|
|
2
2
|
import { t as Box$1 } from "./Box-DJbia7lR.js";
|
|
3
|
-
import { t as FluentSelectMenu } from "./FluentSelectMenu-
|
|
3
|
+
import { t as FluentSelectMenu } from "./FluentSelectMenu-DWwJk0Gh.js";
|
|
4
4
|
import React, { Children, forwardRef, useCallback, useEffect, useRef, useState } from "react";
|
|
5
5
|
import { CircularProgress, FormControl, InputBase, NativeSelect, TextField, Typography, makeStyles, withStyles } from "@material-ui/core";
|
|
6
6
|
import Autocomplete from "@material-ui/lab/Autocomplete";
|
|
@@ -417,4 +417,4 @@ const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent);
|
|
|
417
417
|
|
|
418
418
|
//#endregion
|
|
419
419
|
export { FluentSelectGroupMenu as i, FluentScrollLoadAutocompleteMenu as n, SelectGroupMenu as r, FluentSimpleSelect as t };
|
|
420
|
-
//# sourceMappingURL=FluentSimpleSelect-
|
|
420
|
+
//# sourceMappingURL=FluentSimpleSelect-DCrJDofS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentSimpleSelect-BxLwVTnc.js","names":["useStyles","useStyles","useStyles","makeStyles","Box"],"sources":["../src/UI/inputs/menus/FluentSelectDirectoryMenu.jsx","../src/UI/inputs/menus/FluentSelectGroupMenu.jsx","../src/UI/inputs/menus/FluentScrollLoadAutocompleteMenu.jsx","../src/UI/inputs/menus/FluentSimpleSelect.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const FluentSelectGroupMenu = ({\n data,\n placeholder,\n id,\n handleChange\n}) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const firstLetter = option.label[0].toUpperCase()\n return {\n firstLetter: /[0-9]/.test(firstLetter) ? '0-9' : firstLetter,\n ...option\n }\n })\n\n return (\n <Autocomplete\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort(\n (a, b) => -b.firstLetter.localeCompare(a.firstLetter)\n )}\n groupBy={(option) => option.firstLetter}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const SelectGroupMenu = ({ data, placeholder, id, handleChange, className }) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const grouping = option.category\n return {\n grouping,\n ...option\n }\n })\n\n return (\n <Autocomplete\n className={className}\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort((a, b) => -b.grouping.localeCompare(a.grouping))}\n groupBy={(option) => option.grouping}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","import React, {\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useRef,\n Children,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CircularProgress } from '@material-ui/core';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FluentSelectMenu } from './FluentSelectMenu';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Box } from '../../Box';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme) => ({\n listbox: {\n position: 'relative',\n maxHeight: 300,\n overflow: 'auto',\n },\n listboxHidden: {\n overflow: 'hidden',\n },\n loadingItem: {\n textAlign: 'center',\n padding: theme.spacing(1),\n },\n overlay: {\n position: 'absolute',\n inset: 0,\n background: 'rgba(255,255,255,.95)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1,\n },\n overlayText: {\n marginTop: theme.spacing(1),\n },\n alert: {\n marginTop: theme.spacing(1),\n },\n}));\n\n/**\n* **FluentScrollLoadAutocompleteMenu**\n*\n* A drop‑in extension for MUI’s `<Autocomplete>` that:\n*\n* 1. Fetches paginated / sortable data from any REST endpoint \n* 2. Implements infinite scrolling with automatic scroll‑position restore \n* 3. Supports client‑side filtering, grouping \n* 4. Displays a Material UI `<CircularProgress>` while loading and a MUI `<Alert>` on errors\n*\n* Internally it wraps **unity‑fluent‑library**’s `<FluentSelectMenu>` so you get the same\n* keyboard navigation and styling as the rest of the Fluent controls.\n*\n* ---\n*\n* ### Typical usage\n* ```jsx\n* const endpoint = (q, page, size, sortCol, sortDir) =>\n* `/api/products?search=${q}&page=${page}&pageSize=${size}&sort=${sortCol}&dir=${sortDir}`;\n*\n* const map = (raw) => ({\n* items: raw.items,\n* total: raw.totalRows,\n* });\n*\n* <FluentScrollLoadAutocompleteMenu\n* apiBaseUrl=\"https://api.example.com\"\n* apiEndpoint={endpoint}\n* mapResponse={map}\n* onChange={(product) => console.log(product)}\n* />\n* ```\n* ---\n*\n* @param {Object} props\n* @param {string} props.apiBaseUrl Base URL forwarded to **apiMutate**\n* @param {Function} props.apiEndpoint `(keyword, page, pageSize, sortCol, sortDir) => string`\n* @param {Function} props.mapResponse Maps raw API payload → `{ items, total }`\n* @param {Function} [props.onChange] Fires when the user selects/clears an option\n* @param {Function} [props.getOptionLabel] Returns the display label for an item (default: `o.name`)\n* @param {Function} [props.groupBy] Returns a group heading string for an item\n* @param {string} [props.placeholder='Search…'] Placeholder text\n* @param {string} [props.displayProperty='name'] Property passed to `<FluentSelectMenu>`\n* @param {number|string} [props.width=300] Fixed width of the component container\n* @param {boolean} [props.fetchEnabled=true] Disable to work fully offline\n* @param {*} [props.initialValue=null] Pre‑selected value shown immediately\n* @param {Array} [props.initialOptions=[]] Pre‑loaded options shown immediately\n* @param {boolean} [props.isPaginated=true] Disable if your API returns the full list\n* @param {boolean} [props.isSortable=true] Disable server‑side sorting\n* @param {boolean} [props.isFilterable=true] Disable server‑side filtering\n* @param {number} [props.pageSize=50] Items per page when paginating\n* @param {string} [props.sortColumn='Name'] Default sort column\n* @param {'ASC'|'DESC'} [props.sortDirection='ASC'] Default sort direction\n*\n* @returns {JSX.Element}\n*/\nexport const FluentScrollLoadAutocompleteMenu = ({\n apiBaseUrl,\n apiEndpoint,\n apiConfig = {},\n apiData = null,\n mapResponse,\n onChange,\n getOptionLabel = (o) => o?.name ?? '',\n groupBy,\n placeholder = 'Search…',\n displayProperty = 'name',\n width = 300,\n fetchEnabled = true,\n initialValue = null,\n initialOptions = [],\n isPaginated = true,\n isSortable = true,\n isFilterable = true,\n pageSize = 50,\n sortColumn = 'Name',\n sortDirection = 'ASC',\n}) => {\n const classes = useStyles();\n const [options, setOptions] = useState(initialOptions);\n const [value, setValue] = useState(initialValue);\n const [inputValue, setInputValue] = useState('');\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [error, setError] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalRows, setTotalRows] = useState(0);\n\n const configRef = useRef(apiConfig);\n const dataRef = useRef(apiData);\n const listboxRef = useRef(null);\n const prevScrollPositionRef = useRef(0);\n\n const { t } = useTranslation();\n\n /**\n * Fetches a page of data from the provided API endpoint and updates the component state accordingly.\n *\n * This function supports:\n * - Filtering (if `isFilterable` is true)\n * - Sorting (if `isSortable` is true)\n * - Pagination (based on the `page` and `pageSize` arguments)\n * - Infinite scroll appending (via the `append` flag)\n *\n * @function fetchPage\n * @param {string} keyword - The keyword to filter results by (if filtering is enabled)\n * @param {number} page - The page number to fetch\n * @param {boolean} [append=false] - If true, appends results to the current list; otherwise replaces it\n * @returns {Promise<void>} - Resolves once data is fetched and state is updated\n */\n const fetchPage = useCallback(\n async (keyword, page, append = false) => {\n if (!fetchEnabled) return;\n\n setError(null);\n page === 1 ? setLoading(true) : setLoadingMore(true);\n\n try {\n const url = apiEndpoint(\n isFilterable ? keyword : '',\n page,\n pageSize,\n isSortable ? sortColumn : '',\n isSortable ? sortDirection : 'ASC'\n );\n const resp = await apiMutate(apiBaseUrl, url, configRef.current, dataRef.current);\n const { items, total } = mapResponse(resp.data);\n\n setOptions((prev) => (append ? [...prev, ...items] : items));\n setTotalRows(total);\n setPageNumber(page);\n } catch (err) {\n setError(err.response?.data?.message ?? err.message ?? t('Unknown error'));\n } finally {\n page === 1 ? setLoading(false) : setLoadingMore(false);\n }\n },\n [\n apiBaseUrl,\n apiEndpoint,\n mapResponse,\n pageSize,\n sortColumn,\n sortDirection,\n isFilterable,\n isSortable,\n fetchEnabled,\n t,\n ]\n );\n\n /* ---------- infinite scroll ---------- */\n const handleListboxScroll = (e) => {\n if (!isPaginated) return;\n\n const node = e.currentTarget;\n prevScrollPositionRef.current = node.scrollTop;\n\n if (\n node.scrollTop + node.clientHeight >= node.scrollHeight - 30 &&\n !loadingMore &&\n options.length < totalRows\n ) {\n fetchPage(inputValue, pageNumber + 1, true);\n }\n };\n\n /**\n * **Listbox**\n *\n * Custom scrollable container used by the Autocomplete dropdown.\n * - Attaches a ref to preserve scroll position between pages.\n * - Displays a loading message if no options are present initially.\n * - Shows a full overlay spinner when `loadingMore` is true.\n *\n * This component is passed as the `ListboxComponent` to FluentSelectMenu’s\n * Autocomplete integration, enabling infinite scroll with visual feedback.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Option elements to render\n * @param {boolean} props.initialLoading - Whether to show the “Loading…” message initially\n * @param {React.Ref} ref - Forwarded ref from the Autocomplete dropdown\n * @returns {JSX.Element}\n */\n const Listbox = forwardRef(({ children, initialLoading, ...other }, ref) => (\n <ul\n ref={(inst) => {\n if (inst) listboxRef.current = inst;\n if (typeof ref === 'function') ref(inst);\n else if (ref) ref.current = inst;\n }}\n {...other}\n style={{\n position: 'relative',\n maxHeight: 300,\n overflow: loadingMore ? 'hidden' : 'auto',\n }}\n >\n {Children.count(children) === 0 && initialLoading ? (\n <li style={{ textAlign: 'center', padding: 8 }}>{t('Loading...')}</li>\n ) : (\n children\n )}\n\n {loadingMore && (\n <Box className={classes.overlay}>\n <CircularProgress size={20} />\n <span className={classes.overlayText}>{t('Loading...')}</span>\n </Box>\n )}\n </ul>\n ));\n Listbox.displayName = 'FluentSMAutocompleteListbox';\n\n /* [Initial / filtered fetch] */\n useEffect(() => {\n if (!fetchEnabled || !isFilterable) return;\n if (value && inputValue === getOptionLabel(value)) return;\n\n const timer = setTimeout(() => fetchPage(inputValue, 1, false), 400);\n return () => clearTimeout(timer);\n }, [inputValue, fetchPage, value, getOptionLabel, isFilterable, fetchEnabled]);\n\n // [Initial fetch when filtering is disabled]\n useEffect(() => {\n if (!fetchEnabled || isFilterable) return;\n fetchPage('', 1, false);\n }, [isFilterable, fetchEnabled, fetchPage]);\n\n // [Restores scroll position after loading more items]\n useEffect(() => {\n if (!loadingMore && listboxRef.current) {\n listboxRef.current.scrollTop = prevScrollPositionRef.current;\n }\n }, [options, loadingMore]);\n\n useEffect(() => { configRef.current = apiConfig }, [apiConfig]);\n useEffect(() => { dataRef.current = apiData }, [apiData]);\n\n return (\n <Box width={width}>\n <FluentSelectMenu\n placeholder={placeholder}\n data={options}\n displayProperty={displayProperty}\n onChange={(val) => {\n setValue(val);\n onChange?.(val);\n }}\n InputProps={{\n endAdornment:\n loading && pageNumber === 1 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null,\n }}\n autoCompleteProps={{\n value,\n inputValue,\n onInputChange: (_e, v) => setInputValue(v),\n loading: loading && pageNumber === 1,\n getOptionLabel,\n groupBy,\n ListboxComponent: Listbox,\n ListboxProps: {\n onScroll: handleListboxScroll,\n initialLoading: loading && pageNumber === 1,\n },\n }}\n />\n\n {error && (\n <Alert severity=\"error\" style={{ marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </Box>\n );\n};\n\nFluentScrollLoadAutocompleteMenu.propTypes = {\n /** Base URL used by apiMutate */\n apiBaseUrl: PropTypes.string.isRequired,\n\n /** Builds the endpoint URL: (keyword, page, pageSize, sortCol, sortDir) => string */\n apiEndpoint: PropTypes.func.isRequired,\n\n /** Additional config passed to apiMutate */\n apiConfig: PropTypes.object,\n\n /** Raw API data passed to apiMutate */\n apiData: PropTypes.any,\n\n /** Maps raw API payload into { items, total } */\n mapResponse: PropTypes.func.isRequired,\n\n /** Called when the user selects or clears an option */\n onChange: PropTypes.func,\n\n /** Returns the text label for a given option */\n getOptionLabel: PropTypes.func,\n\n /** Returns the group heading for a given option */\n groupBy: PropTypes.func,\n\n placeholder: PropTypes.string,\n displayProperty: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /* Behavior flags */\n fetchEnabled: PropTypes.bool,\n initialValue: PropTypes.any,\n initialOptions: PropTypes.array,\n\n isPaginated: PropTypes.bool,\n isSortable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n\n pageSize: PropTypes.number,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.oneOf(['ASC', 'DESC']),\n};\n","import React, {forwardRef} from 'react'\nimport {\n makeStyles,\n withStyles,\n Typography,\n FormControl,\n NativeSelect,\n InputBase\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst FluentInput = withStyles((theme) => ({\n root: {\n 'label + &': {\n marginTop: theme.spacing(1)\n }\n },\n input: {\n borderRadius: 2,\n position: 'relative',\n border: '1px solid rgba(0, 0, 0, 0.23)',\n fontSize: 14,\n padding: '4px 8px',\n height: 20,\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderRadius: 2\n }\n }\n}))(InputBase)\n\nconst useStyles = makeStyles((theme) => ({\n margin: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n}))\n\nconst FluentSimpleSelectComponent = ({\n label,\n children,\n id,\n value,\n handleChange,\n defaultValue\n}, ref) => {\n const classes = useStyles()\n\n return (\n <div>\n <FormControl className={classes.margin}>\n <Typography\n className={classes.label}\n style={{\n color: 'rgba(0, 0, 0, 0.54)',\n fontWeight: 400,\n letterSpacing: 0\n }}\n >\n {label}\n </Typography>\n <NativeSelect\n id={id}\n inputRef={ref}\n value={value}\n onChange={handleChange}\n defaultValue={defaultValue}\n input={<FluentInput />}\n noShrink='true'\n >\n {children}\n </NativeSelect>\n </FormControl>\n </div>\n )\n}\n\nFluentSimpleSelectComponent.propTypes = {\n /**\n * Label that appears above the selector\n */\n label: PropTypes.string,\n /**\n * Contents of the selected options (<option></option>)\n */\n children: PropTypes.node,\n /**\n * Function to handle option change\n */\n handleChange: PropTypes.func,\n /**\n * Value: the value of the selected item\n */\n value: PropTypes.string\n}\nexport const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FluentSimpleSelect-DCrJDofS.js","names":["useStyles","useStyles","useStyles","makeStyles","Box"],"sources":["../src/UI/inputs/menus/FluentSelectDirectoryMenu.jsx","../src/UI/inputs/menus/FluentSelectGroupMenu.jsx","../src/UI/inputs/menus/FluentScrollLoadAutocompleteMenu.jsx","../src/UI/inputs/menus/FluentSimpleSelect.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const FluentSelectGroupMenu = ({\n data,\n placeholder,\n id,\n handleChange\n}) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const firstLetter = option.label[0].toUpperCase()\n return {\n firstLetter: /[0-9]/.test(firstLetter) ? '0-9' : firstLetter,\n ...option\n }\n })\n\n return (\n <Autocomplete\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort(\n (a, b) => -b.firstLetter.localeCompare(a.firstLetter)\n )}\n groupBy={(option) => option.firstLetter}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const SelectGroupMenu = ({ data, placeholder, id, handleChange, className }) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const grouping = option.category\n return {\n grouping,\n ...option\n }\n })\n\n return (\n <Autocomplete\n className={className}\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort((a, b) => -b.grouping.localeCompare(a.grouping))}\n groupBy={(option) => option.grouping}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","import React, {\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useRef,\n Children,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CircularProgress } from '@material-ui/core';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FluentSelectMenu } from './FluentSelectMenu';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Box } from '../../Box';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme) => ({\n listbox: {\n position: 'relative',\n maxHeight: 300,\n overflow: 'auto',\n },\n listboxHidden: {\n overflow: 'hidden',\n },\n loadingItem: {\n textAlign: 'center',\n padding: theme.spacing(1),\n },\n overlay: {\n position: 'absolute',\n inset: 0,\n background: 'rgba(255,255,255,.95)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1,\n },\n overlayText: {\n marginTop: theme.spacing(1),\n },\n alert: {\n marginTop: theme.spacing(1),\n },\n}));\n\n/**\n* **FluentScrollLoadAutocompleteMenu**\n*\n* A drop‑in extension for MUI’s `<Autocomplete>` that:\n*\n* 1. Fetches paginated / sortable data from any REST endpoint \n* 2. Implements infinite scrolling with automatic scroll‑position restore \n* 3. Supports client‑side filtering, grouping \n* 4. Displays a Material UI `<CircularProgress>` while loading and a MUI `<Alert>` on errors\n*\n* Internally it wraps **unity‑fluent‑library**’s `<FluentSelectMenu>` so you get the same\n* keyboard navigation and styling as the rest of the Fluent controls.\n*\n* ---\n*\n* ### Typical usage\n* ```jsx\n* const endpoint = (q, page, size, sortCol, sortDir) =>\n* `/api/products?search=${q}&page=${page}&pageSize=${size}&sort=${sortCol}&dir=${sortDir}`;\n*\n* const map = (raw) => ({\n* items: raw.items,\n* total: raw.totalRows,\n* });\n*\n* <FluentScrollLoadAutocompleteMenu\n* apiBaseUrl=\"https://api.example.com\"\n* apiEndpoint={endpoint}\n* mapResponse={map}\n* onChange={(product) => console.log(product)}\n* />\n* ```\n* ---\n*\n* @param {Object} props\n* @param {string} props.apiBaseUrl Base URL forwarded to **apiMutate**\n* @param {Function} props.apiEndpoint `(keyword, page, pageSize, sortCol, sortDir) => string`\n* @param {Function} props.mapResponse Maps raw API payload → `{ items, total }`\n* @param {Function} [props.onChange] Fires when the user selects/clears an option\n* @param {Function} [props.getOptionLabel] Returns the display label for an item (default: `o.name`)\n* @param {Function} [props.groupBy] Returns a group heading string for an item\n* @param {string} [props.placeholder='Search…'] Placeholder text\n* @param {string} [props.displayProperty='name'] Property passed to `<FluentSelectMenu>`\n* @param {number|string} [props.width=300] Fixed width of the component container\n* @param {boolean} [props.fetchEnabled=true] Disable to work fully offline\n* @param {*} [props.initialValue=null] Pre‑selected value shown immediately\n* @param {Array} [props.initialOptions=[]] Pre‑loaded options shown immediately\n* @param {boolean} [props.isPaginated=true] Disable if your API returns the full list\n* @param {boolean} [props.isSortable=true] Disable server‑side sorting\n* @param {boolean} [props.isFilterable=true] Disable server‑side filtering\n* @param {number} [props.pageSize=50] Items per page when paginating\n* @param {string} [props.sortColumn='Name'] Default sort column\n* @param {'ASC'|'DESC'} [props.sortDirection='ASC'] Default sort direction\n*\n* @returns {JSX.Element}\n*/\nexport const FluentScrollLoadAutocompleteMenu = ({\n apiBaseUrl,\n apiEndpoint,\n apiConfig = {},\n apiData = null,\n mapResponse,\n onChange,\n getOptionLabel = (o) => o?.name ?? '',\n groupBy,\n placeholder = 'Search…',\n displayProperty = 'name',\n width = 300,\n fetchEnabled = true,\n initialValue = null,\n initialOptions = [],\n isPaginated = true,\n isSortable = true,\n isFilterable = true,\n pageSize = 50,\n sortColumn = 'Name',\n sortDirection = 'ASC',\n}) => {\n const classes = useStyles();\n const [options, setOptions] = useState(initialOptions);\n const [value, setValue] = useState(initialValue);\n const [inputValue, setInputValue] = useState('');\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [error, setError] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalRows, setTotalRows] = useState(0);\n\n const configRef = useRef(apiConfig);\n const dataRef = useRef(apiData);\n const listboxRef = useRef(null);\n const prevScrollPositionRef = useRef(0);\n\n const { t } = useTranslation();\n\n /**\n * Fetches a page of data from the provided API endpoint and updates the component state accordingly.\n *\n * This function supports:\n * - Filtering (if `isFilterable` is true)\n * - Sorting (if `isSortable` is true)\n * - Pagination (based on the `page` and `pageSize` arguments)\n * - Infinite scroll appending (via the `append` flag)\n *\n * @function fetchPage\n * @param {string} keyword - The keyword to filter results by (if filtering is enabled)\n * @param {number} page - The page number to fetch\n * @param {boolean} [append=false] - If true, appends results to the current list; otherwise replaces it\n * @returns {Promise<void>} - Resolves once data is fetched and state is updated\n */\n const fetchPage = useCallback(\n async (keyword, page, append = false) => {\n if (!fetchEnabled) return;\n\n setError(null);\n page === 1 ? setLoading(true) : setLoadingMore(true);\n\n try {\n const url = apiEndpoint(\n isFilterable ? keyword : '',\n page,\n pageSize,\n isSortable ? sortColumn : '',\n isSortable ? sortDirection : 'ASC'\n );\n const resp = await apiMutate(apiBaseUrl, url, configRef.current, dataRef.current);\n const { items, total } = mapResponse(resp.data);\n\n setOptions((prev) => (append ? [...prev, ...items] : items));\n setTotalRows(total);\n setPageNumber(page);\n } catch (err) {\n setError(err.response?.data?.message ?? err.message ?? t('Unknown error'));\n } finally {\n page === 1 ? setLoading(false) : setLoadingMore(false);\n }\n },\n [\n apiBaseUrl,\n apiEndpoint,\n mapResponse,\n pageSize,\n sortColumn,\n sortDirection,\n isFilterable,\n isSortable,\n fetchEnabled,\n t,\n ]\n );\n\n /* ---------- infinite scroll ---------- */\n const handleListboxScroll = (e) => {\n if (!isPaginated) return;\n\n const node = e.currentTarget;\n prevScrollPositionRef.current = node.scrollTop;\n\n if (\n node.scrollTop + node.clientHeight >= node.scrollHeight - 30 &&\n !loadingMore &&\n options.length < totalRows\n ) {\n fetchPage(inputValue, pageNumber + 1, true);\n }\n };\n\n /**\n * **Listbox**\n *\n * Custom scrollable container used by the Autocomplete dropdown.\n * - Attaches a ref to preserve scroll position between pages.\n * - Displays a loading message if no options are present initially.\n * - Shows a full overlay spinner when `loadingMore` is true.\n *\n * This component is passed as the `ListboxComponent` to FluentSelectMenu’s\n * Autocomplete integration, enabling infinite scroll with visual feedback.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Option elements to render\n * @param {boolean} props.initialLoading - Whether to show the “Loading…” message initially\n * @param {React.Ref} ref - Forwarded ref from the Autocomplete dropdown\n * @returns {JSX.Element}\n */\n const Listbox = forwardRef(({ children, initialLoading, ...other }, ref) => (\n <ul\n ref={(inst) => {\n if (inst) listboxRef.current = inst;\n if (typeof ref === 'function') ref(inst);\n else if (ref) ref.current = inst;\n }}\n {...other}\n style={{\n position: 'relative',\n maxHeight: 300,\n overflow: loadingMore ? 'hidden' : 'auto',\n }}\n >\n {Children.count(children) === 0 && initialLoading ? (\n <li style={{ textAlign: 'center', padding: 8 }}>{t('Loading...')}</li>\n ) : (\n children\n )}\n\n {loadingMore && (\n <Box className={classes.overlay}>\n <CircularProgress size={20} />\n <span className={classes.overlayText}>{t('Loading...')}</span>\n </Box>\n )}\n </ul>\n ));\n Listbox.displayName = 'FluentSMAutocompleteListbox';\n\n /* [Initial / filtered fetch] */\n useEffect(() => {\n if (!fetchEnabled || !isFilterable) return;\n if (value && inputValue === getOptionLabel(value)) return;\n\n const timer = setTimeout(() => fetchPage(inputValue, 1, false), 400);\n return () => clearTimeout(timer);\n }, [inputValue, fetchPage, value, getOptionLabel, isFilterable, fetchEnabled]);\n\n // [Initial fetch when filtering is disabled]\n useEffect(() => {\n if (!fetchEnabled || isFilterable) return;\n fetchPage('', 1, false);\n }, [isFilterable, fetchEnabled, fetchPage]);\n\n // [Restores scroll position after loading more items]\n useEffect(() => {\n if (!loadingMore && listboxRef.current) {\n listboxRef.current.scrollTop = prevScrollPositionRef.current;\n }\n }, [options, loadingMore]);\n\n useEffect(() => { configRef.current = apiConfig }, [apiConfig]);\n useEffect(() => { dataRef.current = apiData }, [apiData]);\n\n return (\n <Box width={width}>\n <FluentSelectMenu\n placeholder={placeholder}\n data={options}\n displayProperty={displayProperty}\n onChange={(val) => {\n setValue(val);\n onChange?.(val);\n }}\n InputProps={{\n endAdornment:\n loading && pageNumber === 1 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null,\n }}\n autoCompleteProps={{\n value,\n inputValue,\n onInputChange: (_e, v) => setInputValue(v),\n loading: loading && pageNumber === 1,\n getOptionLabel,\n groupBy,\n ListboxComponent: Listbox,\n ListboxProps: {\n onScroll: handleListboxScroll,\n initialLoading: loading && pageNumber === 1,\n },\n }}\n />\n\n {error && (\n <Alert severity=\"error\" style={{ marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </Box>\n );\n};\n\nFluentScrollLoadAutocompleteMenu.propTypes = {\n /** Base URL used by apiMutate */\n apiBaseUrl: PropTypes.string.isRequired,\n\n /** Builds the endpoint URL: (keyword, page, pageSize, sortCol, sortDir) => string */\n apiEndpoint: PropTypes.func.isRequired,\n\n /** Additional config passed to apiMutate */\n apiConfig: PropTypes.object,\n\n /** Raw API data passed to apiMutate */\n apiData: PropTypes.any,\n\n /** Maps raw API payload into { items, total } */\n mapResponse: PropTypes.func.isRequired,\n\n /** Called when the user selects or clears an option */\n onChange: PropTypes.func,\n\n /** Returns the text label for a given option */\n getOptionLabel: PropTypes.func,\n\n /** Returns the group heading for a given option */\n groupBy: PropTypes.func,\n\n placeholder: PropTypes.string,\n displayProperty: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /* Behavior flags */\n fetchEnabled: PropTypes.bool,\n initialValue: PropTypes.any,\n initialOptions: PropTypes.array,\n\n isPaginated: PropTypes.bool,\n isSortable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n\n pageSize: PropTypes.number,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.oneOf(['ASC', 'DESC']),\n};\n","import React, {forwardRef} from 'react'\nimport {\n makeStyles,\n withStyles,\n Typography,\n FormControl,\n NativeSelect,\n InputBase\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst FluentInput = withStyles((theme) => ({\n root: {\n 'label + &': {\n marginTop: theme.spacing(1)\n }\n },\n input: {\n borderRadius: 2,\n position: 'relative',\n border: '1px solid rgba(0, 0, 0, 0.23)',\n fontSize: 14,\n padding: '4px 8px',\n height: 20,\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderRadius: 2\n }\n }\n}))(InputBase)\n\nconst useStyles = makeStyles((theme) => ({\n margin: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n}))\n\nconst FluentSimpleSelectComponent = ({\n label,\n children,\n id,\n value,\n handleChange,\n defaultValue\n}, ref) => {\n const classes = useStyles()\n\n return (\n <div>\n <FormControl className={classes.margin}>\n <Typography\n className={classes.label}\n style={{\n color: 'rgba(0, 0, 0, 0.54)',\n fontWeight: 400,\n letterSpacing: 0\n }}\n >\n {label}\n </Typography>\n <NativeSelect\n id={id}\n inputRef={ref}\n value={value}\n onChange={handleChange}\n defaultValue={defaultValue}\n input={<FluentInput />}\n noShrink='true'\n >\n {children}\n </NativeSelect>\n </FormControl>\n </div>\n )\n}\n\nFluentSimpleSelectComponent.propTypes = {\n /**\n * Label that appears above the selector\n */\n label: PropTypes.string,\n /**\n * Contents of the selected options (<option></option>)\n */\n children: PropTypes.node,\n /**\n * Function to handle option change\n */\n handleChange: PropTypes.func,\n /**\n * Value: the value of the selected item\n */\n value: PropTypes.string\n}\nexport const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent)\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentTimePicker-
|
|
1
|
+
{"version":3,"file":"FluentTimePicker-C9wwQ3wX.js","names":[],"sources":["../src/UI/inputs/pickers/FluentTimePicker.jsx"],"sourcesContent":["import React from 'react'\nimport { KeyboardTimePicker } from '@material-ui/pickers'\nimport { makeStyles, InputAdornment } from '@material-ui/core'\nimport { EventDateIcon } from '@fluentui/react-icons'\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\nimport DateFnsUtils from '@date-io/date-fns'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n inputRoot: {\n fontSize: 12\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n paddingLeft: theme.spacing(1)\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n },\n FormControl: {\n display: 'none',\n marginTop: 0\n }\n}))\n\nexport const FluentTimePicker = (props) => {\n const classes = useStyles()\n const { id, label, startAdornment, endAdornment, ...otherProps } = props\n\n return (\n <div>\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\n <KeyboardTimePicker\n variant='inline'\n margin='normal'\n {...otherProps}\n id={id}\n inputVariant='outlined'\n KeyboardButtonProps={{\n 'aria-label': 'change date'\n }}\n keyboardIcon={<EventDateIcon style={{ fontSize: 16 }} />}\n InputProps={{\n classes: {\n root: classes.input,\n input: classes.formTextInput,\n ...props.InputProps?.classes\n },\n ...props.InputProps,\n ...startAdornment,\n ...endAdornment,\n startAdornment: (\n <InputAdornment\n classes={{ root: classes.inputRoot }}\n className={classes.inputRoot}\n position='start'\n >\n {label}\n </InputAdornment>\n )\n }}\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n />\n </MuiPickersUtilsProvider>\n </div>\n )\n}\n\nFluentTimePicker.propTypes = {\n /**\n * Adornment label (eg, From: )\n */\n label: PropTypes.string,\n /**\n * Id\n */\n id: PropTypes.string\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,WAAW,EACT,UAAU,IACX;CACD,OAAO;EACL,cAAc;EACd,QAAQ;EACR,SAAS;EACT,aAAa,MAAM,QAAQ,EAAE;EAC9B;CACD,eAAe,EACb,UAAU,IACX;CACD,WAAW,EACT,UAAU,IACX;CACD,aAAa;EACX,SAAS;EACT,WAAW;EACZ;CACF,EAAE;AAEH,MAAa,oBAAoB,UAAU;CACzC,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,IAAI,OAAO,gBAAgB,cAAc,GAAG,eAAe;AAEnE,QACE,oCAAC,aACC,oCAAC,2BAAwB,OAAO,gBAC9B,oCAAC;EACC,SAAQ;EACR,QAAO;EACP,GAAI;EACA;EACJ,cAAa;EACb,qBAAqB,EACnB,cAAc,eACf;EACD,cAAc,oCAAC,iBAAc,OAAO,EAAE,UAAU,IAAI,GAAI;EACxD,YAAY;GACV,SAAS;IACP,MAAM,QAAQ;IACd,OAAO,QAAQ;IACf,GAAG,MAAM,YAAY;IACtB;GACD,GAAG,MAAM;GACT,GAAG;GACH,GAAG;GACH,gBACE,oCAAC;IACC,SAAS,EAAE,MAAM,QAAQ,WAAW;IACpC,WAAW,QAAQ;IACnB,UAAS;MAER,MACc;GAEpB;EACD,iBAAiB;GACf,QAAQ;GACR,SAAS;IACP,MAAM,QAAQ;IACd,SAAS,QAAQ;IAClB;GACF;GACD,CACsB,CACtB;;AAIV,iBAAiB,YAAY;CAI3B,OAAO,UAAU;CAIjB,IAAI,UAAU;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentTimeline
|
|
1
|
+
{"version":3,"file":"FluentTimeline--7ISkVOo.js","names":["useStyles","NumberVisualization"],"sources":["../src/UI/widgets/utils/NumberVisualization.jsx","../src/UI/widgets/FluentComponents/molecules/FluentTimeline.jsx"],"sourcesContent":["import React, { Fragment } from 'react'\nimport { Avatar, colors, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n minWidth: 30,\n minHeight: 30,\n maxWidth: 70,\n maxHeight: 70,\n // color: theme.palette.getContrastText(theme.palette.primary.dark),\n color: theme?.palette?.primary?.dark\n },\n positive: {\n backgroundColor: (props) =>\n colors.teal[Math.ceil((props.number * 5) / 100) * 100]\n },\n negative: {\n backgroundColor: (props) =>\n colors.deepOrange[Math.abs(Math.ceil((props.number * 5) / 100) * 100)]\n }\n}))\n\nconst NumberVisualization = (props) => {\n const classes = useStyles(props)\n const { number } = props\n\n let displayCircle = ''\n\n if (number > 0) {\n displayCircle = (\n <Avatar\n className={clsx(classes.root, classes.positive)}\n style={{\n width: number * 2,\n height: number * 2\n }}\n >\n {number}\n </Avatar>\n )\n } else {\n displayCircle = (\n <Avatar\n className={clsx(classes.root, classes.negative)}\n style={{\n width: number * 2,\n height: number * 2\n }}\n >\n {number}\n </Avatar>\n )\n }\n\n return <Fragment> {displayCircle} </Fragment>\n}\nexport default NumberVisualization\n","import React from 'react'\nimport { makeStyles, Typography } from '@material-ui/core'\nimport NumberVisualization from '../../utils/NumberVisualization'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n marginTop: theme.spacing(3),\n marginLeft: theme.spacing(2),\n overflow: 'auto'\n },\n dot: {\n width: 10,\n height: 10,\n backgroundColor: 'white',\n borderRadius: theme.shape.borderRadius + 25,\n marginTop: theme.spacing(1)\n },\n timeLabels: {\n color: 'white'\n },\n indicator: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n marginRight: theme.spacing(2),\n textAlign: 'center',\n alignItems: 'center'\n }\n}))\n\nconst TimeDot = (props) => {\n const classes = useStyles()\n const { dot } = props\n return (\n <div className={classes.indicator}>\n <div className={classes.dot} />\n <div className={classes.timeLabels}>\n <Typography variant='overline'>{dot}</Typography>\n </div>\n </div>\n )\n}\n\nconst Visualization = (props) => {\n const classes = useStyles()\n const { value, label } = props\n return (\n <div className={classes.indicator}>\n <div>\n <NumberVisualization number={value} />\n </div>\n <div>\n <TimeDot dot={label} />\n </div>\n </div>\n )\n}\n\nconst categoriesToDisplay = (categories) =>\n categories.map((item) => {\n return (\n <Visualization key={item.label} value={item.value} label={item.label} />\n )\n })\n\nconst FluentTimeline = (props) => {\n const classes = useStyles()\n const { categories } = props\n\n return <div className={classes.root}>{categoriesToDisplay(categories)}</div>\n}\nexport default FluentTimeline\n"],"mappings":";;;;;AAIA,MAAMA,cAAY,YAAY,WAAW;CACvC,MAAM;EACJ,UAAU;EACV,WAAW;EACX,UAAU;EACV,WAAW;EAEX,OAAO,OAAO,SAAS,SAAS;EACjC;CACD,UAAU,EACR,kBAAkB,UAChB,OAAO,KAAK,KAAK,KAAM,MAAM,SAAS,IAAK,IAAI,GAAG,MACrD;CACD,UAAU,EACR,kBAAkB,UAChB,OAAO,WAAW,KAAK,IAAI,KAAK,KAAM,MAAM,SAAS,IAAK,IAAI,GAAG,IAAI,GACxE;CACF,EAAE;AAEH,MAAM,uBAAuB,UAAU;CACrC,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,EAAE,WAAW;CAEnB,IAAI,gBAAgB;AAEpB,KAAI,SAAS,EACX,iBACE,oCAAC;EACC,WAAW,KAAK,QAAQ,MAAM,QAAQ,SAAS;EAC/C,OAAO;GACL,OAAO,SAAS;GAChB,QAAQ,SAAS;GAClB;IAEA,OACM;KAGX,iBACE,oCAAC;EACC,WAAW,KAAK,QAAQ,MAAM,QAAQ,SAAS;EAC/C,OAAO;GACL,OAAO,SAAS;GAChB,QAAQ,SAAS;GAClB;IAEA,OACM;AAIb,QAAO,oCAAC,gBAAS,KAAE,eAAc,IAAY;;AAE/C,kCAAe;;;;ACrDf,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM;EACJ,SAAS;EACT,eAAe;EACf,WAAW,MAAM,QAAQ,EAAE;EAC3B,YAAY,MAAM,QAAQ,EAAE;EAC5B,UAAU;EACX;CACD,KAAK;EACH,OAAO;EACP,QAAQ;EACR,iBAAiB;EACjB,cAAc,MAAM,MAAM,eAAe;EACzC,WAAW,MAAM,QAAQ,EAAE;EAC5B;CACD,YAAY,EACV,OAAO,SACR;CACD,WAAW;EACT,SAAS;EACT,eAAe;EACf,gBAAgB;EAChB,aAAa,MAAM,QAAQ,EAAE;EAC7B,WAAW;EACX,YAAY;EACb;CACF,EAAE;AAEH,MAAM,WAAW,UAAU;CACzB,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,QAAQ;AAChB,QACE,oCAAC,SAAI,WAAW,QAAQ,aACtB,oCAAC,SAAI,WAAW,QAAQ,MAAO,EAC/B,oCAAC,SAAI,WAAW,QAAQ,cACtB,oCAAC,cAAW,SAAQ,cAAY,IAAiB,CAC7C,CACF;;AAIV,MAAM,iBAAiB,UAAU;CAC/B,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,OAAO,UAAU;AACzB,QACE,oCAAC,SAAI,WAAW,QAAQ,aACtB,oCAAC,aACC,oCAACC,+BAAoB,QAAQ,QAAS,CAClC,EACN,oCAAC,aACC,oCAAC,WAAQ,KAAK,QAAS,CACnB,CACF;;AAIV,MAAM,uBAAuB,eAC3B,WAAW,KAAK,SAAS;AACvB,QACE,oCAAC;EAAc,KAAK,KAAK;EAAO,OAAO,KAAK;EAAO,OAAO,KAAK;GAAS;EAE1E;AAEJ,MAAM,kBAAkB,UAAU;CAChC,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,eAAe;AAEvB,QAAO,oCAAC,SAAI,WAAW,QAAQ,QAAO,oBAAoB,WAAW,CAAO;;AAE9E,6BAAe"}
|