@12-apps/ui 6.90.0 → 6.92.0
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/components-catalog.md +3 -3
- package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +25 -25
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +31 -31
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +22 -22
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +1 -1
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +4 -4
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.en-US.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +5 -5
- package/dist/_internal/components/data-display/DayRuler/DayRuler.labels.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +9 -4
- package/dist/_internal/components/data-display/DayRuler/DayRuler.pt-BR.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +9 -1
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +9 -9
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +8 -8
- package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +2 -1
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +5 -4
- package/dist/_internal/components/data-display/RegionMap/RegionMap.view.js +19 -0
- package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +1 -1
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +4 -3
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +3 -2
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js +12 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js.map +1 -0
- package/dist/_internal/components/data-display/index.js +58 -51
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +5 -5
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +3 -3
- package/dist/_internal/components/feedback/index.js +6 -6
- package/dist/_internal/components/index.js +69 -62
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/index.js +9 -9
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +6 -6
- package/dist/{chunk-FI2CQOGC.js → chunk-3OHZAZEE.js} +5 -5
- package/dist/{chunk-CJ6XXM4X.js → chunk-3PQL2EN5.js} +6 -6
- package/dist/{chunk-7YJYIMWP.js → chunk-4QR7LM5F.js} +6 -6
- package/dist/{chunk-HI7JPDD6.js → chunk-5357QUVE.js} +2 -2
- package/dist/{chunk-WNNA6YYE.js → chunk-5I75WRXT.js} +10 -7
- package/dist/chunk-5I75WRXT.js.map +1 -0
- package/dist/chunk-5MXVKZKZ.js +30 -0
- package/dist/chunk-5MXVKZKZ.js.map +1 -0
- package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
- package/dist/{chunk-SCXVTNLE.js → chunk-66VKX6JE.js} +2 -2
- package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
- package/dist/{chunk-NK6O4NE4.js → chunk-AI7XWBNG.js} +3 -3
- package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
- package/dist/{chunk-BMTIBQQC.js → chunk-BBBHPK2Q.js} +6 -6
- package/dist/{chunk-A3DDEKLV.js → chunk-BOADHYTA.js} +2 -2
- package/dist/{chunk-KRBPWTXW.js → chunk-CKQOYPH3.js} +2 -2
- package/dist/{chunk-EUR2ORTN.js → chunk-CSJ7WNXU.js} +2 -2
- package/dist/{chunk-QADTI63U.js → chunk-CZVAVX5L.js} +4 -4
- package/dist/{chunk-O3OU3ED7.js → chunk-D7R6SRJB.js} +3 -3
- package/dist/{chunk-O3OU3ED7.js.map → chunk-D7R6SRJB.js.map} +1 -1
- package/dist/{chunk-DVX4HDNP.js → chunk-DBPFKGXX.js} +2 -2
- package/dist/{chunk-XCUHGPPZ.js → chunk-DTZOP4ZR.js} +2 -2
- package/dist/chunk-DY2I6LMX.js +1 -0
- package/dist/chunk-DY2I6LMX.js.map +1 -0
- package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
- package/dist/{chunk-QKOJ4637.js → chunk-E6K2UZGR.js} +3 -3
- package/dist/{chunk-MX2RF34M.js → chunk-E73C73UD.js} +15 -7
- package/dist/chunk-E73C73UD.js.map +1 -0
- package/dist/{chunk-HNW7IZPV.js → chunk-EZBBLLEU.js} +5 -5
- package/dist/{chunk-HNW7IZPV.js.map → chunk-EZBBLLEU.js.map} +1 -1
- package/dist/{chunk-K3IB7S7Q.js → chunk-F2ZUUEXC.js} +3 -2
- package/dist/{chunk-K3IB7S7Q.js.map → chunk-F2ZUUEXC.js.map} +1 -1
- package/dist/{chunk-2M3W6ACW.js → chunk-FAUNQ3FS.js} +3 -3
- package/dist/{chunk-VIMMEADQ.js → chunk-FORAVDJF.js} +9 -9
- package/dist/{chunk-PJNIJIE6.js → chunk-FQNDJITD.js} +2 -2
- package/dist/chunk-FWAY2SAI.js +72 -0
- package/dist/chunk-FWAY2SAI.js.map +1 -0
- package/dist/{chunk-COKPPU42.js → chunk-FWTVIRZZ.js} +13 -13
- package/dist/{chunk-GMRQPNG3.js → chunk-G2NVBCF7.js} +20 -25
- package/dist/chunk-G2NVBCF7.js.map +1 -0
- package/dist/{chunk-JHWEL4NX.js → chunk-HS662RLW.js} +2 -2
- package/dist/{chunk-BZBLPXV7.js → chunk-IWSTMVCA.js} +4 -4
- package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
- package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
- package/dist/{chunk-UKUGSU3Y.js → chunk-L4V7FZJI.js} +2 -2
- package/dist/{chunk-24HHUCWB.js → chunk-LDCZPZPD.js} +2 -2
- package/dist/{chunk-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
- package/dist/{chunk-EEO7M5GU.js → chunk-MYTV353T.js} +4 -4
- package/dist/{chunk-3HZKUN5J.js → chunk-MZAYIG2I.js} +2 -2
- package/dist/{chunk-AKE6KVQG.js → chunk-NGXL4R54.js} +5 -1
- package/dist/chunk-NGXL4R54.js.map +1 -0
- package/dist/{chunk-RDCIST7P.js → chunk-OCT5VCLP.js} +2 -2
- package/dist/{chunk-G2PVUPE7.js → chunk-OJZLFFG4.js} +41 -3
- package/dist/chunk-OJZLFFG4.js.map +1 -0
- package/dist/{chunk-F7LBTMCA.js → chunk-P53ANKZV.js} +4 -4
- package/dist/{chunk-HMEGQKNQ.js → chunk-PCQ5JWLF.js} +15 -7
- package/dist/chunk-PCQ5JWLF.js.map +1 -0
- package/dist/{chunk-QVDEGBME.js → chunk-PEAUGQKU.js} +4 -4
- package/dist/{chunk-BV2LOTMC.js → chunk-Q3SILZTQ.js} +2 -2
- package/dist/{chunk-DSBC6O46.js → chunk-R4LCPPKA.js} +3 -3
- package/dist/{chunk-ZH6NYB6Y.js → chunk-S2VZUBM7.js} +7 -7
- package/dist/{chunk-JFD742C3.js → chunk-TMINUTQQ.js} +2 -2
- package/dist/{chunk-SK2CTB3O.js → chunk-U2SAW6DH.js} +5 -5
- package/dist/{chunk-ACM3HHZY.js → chunk-UDBOGSFO.js} +68 -2
- package/dist/chunk-UDBOGSFO.js.map +1 -0
- package/dist/{chunk-DAHSKQBV.js → chunk-UMOHHWXY.js} +2 -2
- package/dist/{chunk-QAEO52Z4.js → chunk-VHE7UEG5.js} +2 -2
- package/dist/{chunk-TIM4PXWN.js → chunk-VWRXSBT2.js} +2 -2
- package/dist/{chunk-KANCE4MS.js → chunk-W2KOP27S.js} +3 -3
- package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
- package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
- package/dist/{chunk-3OTGREQG.js → chunk-X3GD3TFI.js} +15 -15
- package/dist/{chunk-3X2MA47R.js → chunk-XNAI7QGU.js} +6 -6
- package/dist/{chunk-L6JAALMX.js → chunk-XRV4QFEQ.js} +3 -3
- package/dist/{chunk-WH3LUOCQ.js → chunk-YE7M7URT.js} +2 -2
- package/dist/{chunk-WWR6APJR.js → chunk-YVDNCV2D.js} +5 -5
- package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
- package/dist/{chunk-D3OXTS7Y.js → chunk-ZHCZOPKE.js} +3 -2
- package/dist/{chunk-D3OXTS7Y.js.map → chunk-ZHCZOPKE.js.map} +1 -1
- package/dist/data-display/Alert.js +2 -2
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +14 -14
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +47 -47
- package/dist/data-display/DayRuler.js +9 -9
- package/dist/data-display/FleetMap.js +12 -12
- package/dist/data-display/Lightbox.js +7 -7
- package/dist/data-display/MapPreview.js +8 -8
- package/dist/data-display/RegionMap.js +12 -6
- package/dist/data-display/ScheduleGrid.js +4 -3
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/feedback/SequenceResolver.js +5 -5
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.en-US.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts +2 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.pt-BR.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +16 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +44 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/index.d.ts +1 -1
- package/dist/types/components/data-display/DayRuler/index.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts +4 -2
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +40 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts +36 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts.map +1 -0
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/index.d.ts +3 -2
- package/dist/types/components/data-display/RegionMap/index.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts +3 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts +12 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts +16 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts.map +1 -0
- package/dist/user-avatar.js +3 -3
- package/package.json +1 -1
- package/src/components/data-display/DayRuler/DayRuler.en-US.ts +1 -0
- package/src/components/data-display/DayRuler/DayRuler.labels.ts +2 -0
- package/src/components/data-display/DayRuler/DayRuler.md +3 -2
- package/src/components/data-display/DayRuler/DayRuler.parts.tsx +120 -1
- package/src/components/data-display/DayRuler/DayRuler.pt-BR.ts +1 -0
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +50 -1
- package/src/components/data-display/DayRuler/DayRuler.tsx +10 -1
- package/src/components/data-display/DayRuler/DayRuler.types.ts +30 -1
- package/src/components/data-display/DayRuler/index.ts +2 -0
- package/src/components/data-display/RegionMap/RegionMap.hooks.ts +24 -33
- package/src/components/data-display/RegionMap/RegionMap.md +27 -0
- package/src/components/data-display/RegionMap/RegionMap.tsx +7 -1
- package/src/components/data-display/RegionMap/RegionMap.types.ts +41 -0
- package/src/components/data-display/RegionMap/RegionMap.view.ts +105 -0
- package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +11 -0
- package/src/components/data-display/RegionMap/index.ts +5 -1
- package/src/components/data-display/RegionMap/tests.md +10 -2
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.md +3 -2
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +18 -3
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +1 -1
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +12 -0
- package/src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts +35 -0
- package/dist/chunk-ACFKPE2T.js +0 -1
- package/dist/chunk-ACM3HHZY.js.map +0 -1
- package/dist/chunk-AKE6KVQG.js.map +0 -1
- package/dist/chunk-G2PVUPE7.js.map +0 -1
- package/dist/chunk-GMRQPNG3.js.map +0 -1
- package/dist/chunk-HMEGQKNQ.js.map +0 -1
- package/dist/chunk-MX2RF34M.js.map +0 -1
- package/dist/chunk-WNNA6YYE.js.map +0 -1
- /package/dist/{chunk-ACFKPE2T.js.map → _internal/components/data-display/RegionMap/RegionMap.view.js.map} +0 -0
- /package/dist/{chunk-FI2CQOGC.js.map → chunk-3OHZAZEE.js.map} +0 -0
- /package/dist/{chunk-CJ6XXM4X.js.map → chunk-3PQL2EN5.js.map} +0 -0
- /package/dist/{chunk-7YJYIMWP.js.map → chunk-4QR7LM5F.js.map} +0 -0
- /package/dist/{chunk-HI7JPDD6.js.map → chunk-5357QUVE.js.map} +0 -0
- /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
- /package/dist/{chunk-SCXVTNLE.js.map → chunk-66VKX6JE.js.map} +0 -0
- /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
- /package/dist/{chunk-NK6O4NE4.js.map → chunk-AI7XWBNG.js.map} +0 -0
- /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
- /package/dist/{chunk-BMTIBQQC.js.map → chunk-BBBHPK2Q.js.map} +0 -0
- /package/dist/{chunk-A3DDEKLV.js.map → chunk-BOADHYTA.js.map} +0 -0
- /package/dist/{chunk-KRBPWTXW.js.map → chunk-CKQOYPH3.js.map} +0 -0
- /package/dist/{chunk-EUR2ORTN.js.map → chunk-CSJ7WNXU.js.map} +0 -0
- /package/dist/{chunk-QADTI63U.js.map → chunk-CZVAVX5L.js.map} +0 -0
- /package/dist/{chunk-DVX4HDNP.js.map → chunk-DBPFKGXX.js.map} +0 -0
- /package/dist/{chunk-XCUHGPPZ.js.map → chunk-DTZOP4ZR.js.map} +0 -0
- /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
- /package/dist/{chunk-QKOJ4637.js.map → chunk-E6K2UZGR.js.map} +0 -0
- /package/dist/{chunk-2M3W6ACW.js.map → chunk-FAUNQ3FS.js.map} +0 -0
- /package/dist/{chunk-VIMMEADQ.js.map → chunk-FORAVDJF.js.map} +0 -0
- /package/dist/{chunk-PJNIJIE6.js.map → chunk-FQNDJITD.js.map} +0 -0
- /package/dist/{chunk-COKPPU42.js.map → chunk-FWTVIRZZ.js.map} +0 -0
- /package/dist/{chunk-JHWEL4NX.js.map → chunk-HS662RLW.js.map} +0 -0
- /package/dist/{chunk-BZBLPXV7.js.map → chunk-IWSTMVCA.js.map} +0 -0
- /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.js.map} +0 -0
- /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
- /package/dist/{chunk-UKUGSU3Y.js.map → chunk-L4V7FZJI.js.map} +0 -0
- /package/dist/{chunk-24HHUCWB.js.map → chunk-LDCZPZPD.js.map} +0 -0
- /package/dist/{chunk-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
- /package/dist/{chunk-EEO7M5GU.js.map → chunk-MYTV353T.js.map} +0 -0
- /package/dist/{chunk-3HZKUN5J.js.map → chunk-MZAYIG2I.js.map} +0 -0
- /package/dist/{chunk-RDCIST7P.js.map → chunk-OCT5VCLP.js.map} +0 -0
- /package/dist/{chunk-F7LBTMCA.js.map → chunk-P53ANKZV.js.map} +0 -0
- /package/dist/{chunk-QVDEGBME.js.map → chunk-PEAUGQKU.js.map} +0 -0
- /package/dist/{chunk-BV2LOTMC.js.map → chunk-Q3SILZTQ.js.map} +0 -0
- /package/dist/{chunk-DSBC6O46.js.map → chunk-R4LCPPKA.js.map} +0 -0
- /package/dist/{chunk-ZH6NYB6Y.js.map → chunk-S2VZUBM7.js.map} +0 -0
- /package/dist/{chunk-JFD742C3.js.map → chunk-TMINUTQQ.js.map} +0 -0
- /package/dist/{chunk-SK2CTB3O.js.map → chunk-U2SAW6DH.js.map} +0 -0
- /package/dist/{chunk-DAHSKQBV.js.map → chunk-UMOHHWXY.js.map} +0 -0
- /package/dist/{chunk-QAEO52Z4.js.map → chunk-VHE7UEG5.js.map} +0 -0
- /package/dist/{chunk-TIM4PXWN.js.map → chunk-VWRXSBT2.js.map} +0 -0
- /package/dist/{chunk-KANCE4MS.js.map → chunk-W2KOP27S.js.map} +0 -0
- /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
- /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
- /package/dist/{chunk-3OTGREQG.js.map → chunk-X3GD3TFI.js.map} +0 -0
- /package/dist/{chunk-3X2MA47R.js.map → chunk-XNAI7QGU.js.map} +0 -0
- /package/dist/{chunk-L6JAALMX.js.map → chunk-XRV4QFEQ.js.map} +0 -0
- /package/dist/{chunk-WH3LUOCQ.js.map → chunk-YE7M7URT.js.map} +0 -0
- /package/dist/{chunk-WWR6APJR.js.map → chunk-YVDNCV2D.js.map} +0 -0
- /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.styles.ts"],"sourcesContent":["import { alpha, type CSSObject, type SxProps, type Theme } from '@mui/material/styles/index.js';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { actualBarColor, blockToneStyles, breakHatch, signalInk } from '../ScheduleGrid/schedule-tones';\nimport type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\n\n/** The container narrow rows answer to (container queries, never media queries). */\n/**\n * `--dr-actions`: the actions column, 220px when any row has actions and\n * nothing when none does (no empty column at the end of every row).\n */\nexport function rootSx(hasActions: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n containerType: 'inline-size',\n minWidth: 0,\n width: '100%',\n userSelect: 'none',\n '--dr-actions': hasActions ? rem(theme, M.sideColumn) : '0%',\n });\n}\n\n/** `@container` below which a row stacks (the coverage and axis rows go full width). Bounds are \"from px up\". */\nfunction compact(theme: Theme): string {\n return `@container (width < ${rem(theme, M.compactBelow)})`;\n}\n\n/** `@container` below which the pane is phone-sized: no coverage row, no axis. Bounds are \"from px up\". */\nfunction phone(theme: Theme): string {\n return `@container (width < ${rem(theme, M.phoneBelow)})`;\n}\n\n/** Name · track · actions, the coverage row and the axis row share these columns on a computer. */\nexport const lineSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n // Stacked: across the full width, like the tracks; the label above the counts.\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr)',\n rowGap: rem(theme, M.coverage.gap),\n '& > span:empty': { display: 'none' },\n },\n [phone(theme)]: { display: 'none' },\n});\n\nexport const coverageLabelSx: SxProps<Theme> = { fontSize: sxRem(M.meta), color: 'text.secondary' };\n\nexport function coverageSx(hours: number): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `repeat(${hours}, minmax(0, 1fr))`,\n gap: rem(theme, M.coverage.gap),\n height: rem(theme, M.coverage.height),\n });\n}\n\n/**\n * How strongly a staffed hour is filled: the prototype's tonal success step, deeper with each\n * person on the escala (0.18 + 0.09 per person, at most 0.85). An empty hour has none.\n */\nexport function coverageStrength(count: number): number {\n if (count <= 0) return 0;\n return Math.min(0.85, 0.18 + count * 0.09);\n}\n\nexport function coverageCellSx(count: number): SxProps<Theme> {\n return (theme: Theme) => {\n const strength = coverageStrength(count);\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: theme.palette.text.primary,\n // A tonal fill, as the prototype's coverage line draws it — never an outline (FUT-3831). It is\n // the success colour over the page, so a staffed hour is LIGHTER than an empty one in dark mode\n // and plainly green in light, where the soft-signal blend read as the empty grey. The hairline\n // stays transparent so a count never shifts its cell.\n backgroundColor: strength > 0 ? alpha(theme.palette.success.main, strength) : theme.palette.action.hover,\n border: '1px solid transparent',\n minWidth: 0,\n overflow: 'hidden',\n };\n };\n}\n\nexport const axisSx: SxProps<Theme> = (theme: Theme) => ({\n position: 'relative',\n height: rem(theme, M.axis.height),\n fontSize: rem(theme, M.axis.font),\n color: theme.palette.text.secondary,\n mt: 0.5,\n '& > span': { position: 'absolute', transform: 'translateX(-50%)', whiteSpace: 'nowrap' },\n});\n\nexport const groupTitleSx: SxProps<Theme> = {\n fontSize: sxRem(M.groupTitle),\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n color: 'text.secondary',\n fontWeight: 500,\n pt: 1.5,\n pb: 0.5,\n m: 0,\n};\n\n/**\n * One person's row. A computer: name · track · actions on one line. A narrow\n * ruler (a phone): name and actions on top, the track under them, full width.\n */\nexport const rowSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n gridTemplateAreas: '\"who track actions\"',\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n py: rem(theme, M.rowPaddingY),\n borderBottom: `1px solid ${theme.palette.divider}`,\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gridTemplateAreas: '\"who actions\" \"track track\"',\n rowGap: theme.spacing(1),\n py: theme.spacing(1.5),\n },\n});\n\nexport const whoSx: SxProps<Theme> = { gridArea: 'who', minWidth: 0 };\n\nexport const actionsSx: SxProps<Theme> = {\n gridArea: 'actions',\n display: 'flex',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexWrap: 'wrap',\n minWidth: 0,\n};\n\n/** A break inside a block: a hatched band across its height, under its text. `span` is in % of the block. */\nexport function breakSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${span.at}%`,\n width: `${span.share}%`,\n background: breakHatch(theme, rem(theme, M.breakStripe.ink), rem(theme, M.breakStripe.ink + M.breakStripe.gap)),\n pointerEvents: 'none',\n // Where the band meets an end of the block it takes the block's rounding:\n // on a phone the block does not clip (its hit area reaches past it).\n ...(span.at <= 0.01 ? { borderTopLeftRadius: 'inherit', borderBottomLeftRadius: 'inherit' } : {}),\n ...(span.at + span.share >= 99.99 ? { borderTopRightRadius: 'inherit', borderBottomRightRadius: 'inherit' } : {}),\n });\n}\n\n/** The hour lines: one every `every` hours of a `hours`-long ruler. */\nfunction hourLines(theme: Theme, hours: number, every: number): string {\n const line = theme.palette.divider;\n const step = `${(100 * every) / hours}%`;\n const hairline = `${FIELD_BORDER_WIDTH}px`;\n return `repeating-linear-gradient(to right, ${line} 0, ${line} ${hairline}, transparent ${hairline}, transparent ${step})`;\n}\n\nexport function trackSx(opts: { hours: number; tickHours: number; interactive: boolean }): SxProps<Theme> {\n return (theme: Theme) => ({\n gridArea: 'track',\n position: 'relative',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n backgroundImage: hourLines(theme, opts.hours, 1),\n cursor: opts.interactive ? 'crosshair' : 'default',\n touchAction: 'auto',\n outline: 'none',\n '&:focus-visible': { boxShadow: `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` },\n [compact(theme)]: {\n height: rem(theme, M.track.compactHeight),\n borderRadius: rem(theme, M.track.compactRadius),\n backgroundImage: hourLines(theme, opts.hours, opts.tickHours),\n },\n });\n}\n\n/** Where a bar starts and how long it is, both in % of the track. */\nexport interface Span {\n at: number;\n share: number;\n}\n\nexport function blockSx(tone: ScheduleBlockTone, span: Span, opts: { selected: boolean; movable: boolean }): SxProps<Theme> {\n return (theme: Theme): CSSObject => ({\n ...blockToneStyles(theme, tone, true),\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.block.top),\n height: rem(theme, M.block.height),\n boxSizing: 'border-box',\n borderRadius: rem(theme, M.block.radius),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: `0 ${rem(theme, M.block.paddingX)}`,\n margin: 0,\n font: 'inherit',\n fontSize: rem(theme, M.block.font),\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n cursor: opts.movable ? 'grab' : 'pointer',\n boxShadow: opts.selected ? `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` : 'none',\n '&:focus-visible': { outline: `${rem(theme, M.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, M.ringOffset) },\n '& [data-dr-text]': { position: 'relative', overflow: 'hidden', textOverflow: 'ellipsis', minWidth: 0 },\n '& [data-dr-text=\"short\"]': { display: 'none' },\n [compact(theme)]: {\n top: rem(theme, M.block.compactTop),\n height: rem(theme, M.block.compactHeight),\n // A 40px hit area around the 20px bar, the look unchanged: the text cuts\n // itself (its spans ellipsize), so the block need not clip.\n overflow: 'visible',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n top: '50%',\n height: rem(theme, M.block.hitArea),\n transform: 'translateY(-50%)',\n },\n '&[data-narrow] [data-dr-text=\"full\"]': { display: 'none' },\n '&[data-narrow] [data-dr-text=\"short\"]': { display: 'inline' },\n },\n });\n}\n\nexport function handleSx(side: 'l' | 'r'): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n [side === 'l' ? 'left' : 'right']: 0,\n width: rem(theme, M.handle),\n cursor: 'ew-resize',\n });\n}\n\nexport function actualSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.actual.top),\n height: rem(theme, M.actual.height),\n borderRadius: rem(theme, M.actual.radius),\n backgroundColor: actualBarColor(theme),\n pointerEvents: 'none',\n [compact(theme)]: { top: rem(theme, M.actual.compactTop), height: rem(theme, M.actual.compactHeight) },\n });\n}\n\nexport function actualLabelSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `calc(${left}% + ${rem(theme, M.actualLabel.offset)})`,\n top: rem(theme, M.actualLabel.top),\n fontSize: rem(theme, M.actualLabel.font),\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n [compact(theme)]: { display: 'none' },\n });\n}\n\nexport function nowSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${left}%`,\n top: rem(theme, -M.now.overhang),\n bottom: rem(theme, -M.now.overhang),\n width: rem(theme, M.now.width),\n backgroundColor: theme.palette.primary.main,\n pointerEvents: 'none',\n });\n}\n\nexport const skeletonTrackSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'track',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n});\n\nexport const skeletonNameSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'who',\n height: rem(theme, M.name),\n width: '60%',\n borderRadius: rem(theme, M.skeletonNameRadius),\n backgroundColor: theme.palette.action.hover,\n});\n\n/**\n * A marked footer's words (FUT-3882): the warning ink deepened until it reads\n * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps\n * `warning.main`: a non-text mark needs 3:1.\n */\nexport function footerInk(theme: Theme, marked: boolean, plain: string): string {\n return marked ? signalInk(theme, 'warning', theme.palette.background.default) : plain;\n}\n\n/** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */\nexport function footerCellSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: footerInk(theme, marked, theme.palette.text.primary),\n fontWeight: marked ? 500 : 400,\n // The hairline is always there, transparent when unmarked, so a mark never shifts a count.\n border: `1px solid ${marked ? theme.palette.warning.main : 'transparent'}`,\n minWidth: 0,\n overflow: 'hidden',\n });\n}\n\n/**\n * A footer line's sentence; when the host marks it (\"Faltam 2, 20h–22h\"), in\n * the readable warning ink with a warning bar before it — a shape, so colour\n * is never the only signal.\n */\nexport function footerNoteSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n fontSize: rem(theme, M.meta),\n color: footerInk(theme, marked, theme.palette.text.secondary),\n fontWeight: marked ? 500 : 400,\n ...(marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}),\n });\n}\n\n/** A group's trend line: as tall as the coverage row, drawn in the primary colour. */\nexport const trendSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'block',\n width: '100%',\n height: rem(theme, M.coverage.height + M.coverage.height / 2),\n color: theme.palette.primary.main,\n overflow: 'visible',\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DTZOP4ZR.js";
|
|
4
4
|
import {
|
|
5
5
|
RaisedActionButton,
|
|
6
6
|
raisedLift
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-L4V7FZJI.js";
|
|
8
8
|
import {
|
|
9
9
|
Box,
|
|
10
10
|
CONTROL_RESET,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
destinationControl,
|
|
16
16
|
focusRing,
|
|
17
17
|
useMounted
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LDCZPZPD.js";
|
|
19
19
|
import {
|
|
20
20
|
barSlots,
|
|
21
21
|
destinationState,
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
sectionNavSheetOffset,
|
|
328
328
|
SectionNavBar
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
//# sourceMappingURL=chunk-P53ANKZV.js.map
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Axis,
|
|
3
3
|
Coverage,
|
|
4
|
+
GroupFooter,
|
|
4
5
|
RulerRow
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UDBOGSFO.js";
|
|
6
7
|
import {
|
|
7
8
|
groupTitleSx,
|
|
8
9
|
rootSx,
|
|
9
10
|
rowSx,
|
|
10
11
|
skeletonNameSx,
|
|
11
12
|
skeletonTrackSx
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OJZLFFG4.js";
|
|
14
|
+
import {
|
|
15
|
+
EN_US_DAY_RULER_LABELS
|
|
16
|
+
} from "./chunk-F2ZUUEXC.js";
|
|
13
17
|
import {
|
|
14
18
|
handleBlockKey,
|
|
15
19
|
keyCreateSpan
|
|
16
20
|
} from "./chunk-Y3F2F36I.js";
|
|
17
|
-
import {
|
|
18
|
-
EN_US_DAY_RULER_LABELS
|
|
19
|
-
} from "./chunk-K3IB7S7Q.js";
|
|
20
21
|
import {
|
|
21
22
|
useRulerDrag
|
|
22
23
|
} from "./chunk-EKSJES5E.js";
|
|
@@ -58,6 +59,12 @@ function abilitiesOf(props) {
|
|
|
58
59
|
const open = !props.readOnly && !props.loading;
|
|
59
60
|
return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };
|
|
60
61
|
}
|
|
62
|
+
function FooterOf({ props, group, ctx }) {
|
|
63
|
+
const rows = props.groupFooter?.(group);
|
|
64
|
+
if (!rows || rows.length === 0) return null;
|
|
65
|
+
const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;
|
|
66
|
+
return /* @__PURE__ */ jsx(GroupFooter, { rows, scale: ctx.scale, testId: ctx.testId, marked });
|
|
67
|
+
}
|
|
61
68
|
function RulerBody({ props, ctx }) {
|
|
62
69
|
if (props.error) return /* @__PURE__ */ jsx(Fragment, { children: props.error });
|
|
63
70
|
if (props.loading) {
|
|
@@ -69,7 +76,8 @@ function RulerBody({ props, ctx }) {
|
|
|
69
76
|
if (props.rows.length === 0) return /* @__PURE__ */ jsx(Fragment, { children: props.empty ?? null });
|
|
70
77
|
return /* @__PURE__ */ jsx(Fragment, { children: grouped(props.rows).map((group, index) => /* @__PURE__ */ jsxs(Box, { role: "list", "aria-label": group.title, children: [
|
|
71
78
|
group.title ? /* @__PURE__ */ jsx(Box, { component: "p", sx: groupTitleSx, "aria-hidden": true, children: group.title }) : null,
|
|
72
|
-
group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id))
|
|
79
|
+
group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id)),
|
|
80
|
+
/* @__PURE__ */ jsx(FooterOf, { props, group: group.title, ctx })
|
|
73
81
|
] }, `${index}-${group.title ?? ""}`)) });
|
|
74
82
|
}
|
|
75
83
|
function DayRuler(props) {
|
|
@@ -117,4 +125,4 @@ function DayRuler(props) {
|
|
|
117
125
|
export {
|
|
118
126
|
DayRuler
|
|
119
127
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
128
|
+
//# sourceMappingURL=chunk-PCQ5JWLF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type React from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';\nimport { useAnnouncer } from '../ScheduleGrid/useAnnouncer';\nimport { handleBlockKey, keyCreateSpan, type RulerAbilities, type RulerScale } from './DayRuler.keyboard';\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { Axis, Coverage, GroupFooter, RulerRow, type RowContext } from './DayRuler.parts';\nimport { groupTitleSx, rootSx, rowSx, skeletonNameSx, skeletonTrackSx } from './DayRuler.styles';\nimport type { DayRulerProps, DayRulerRow } from './DayRuler.types';\nimport { useRulerDrag } from './useRulerDrag';\n\n/** The rows, grouped under a heading each time `row.group` changes. */\nfunction grouped(rows: readonly DayRulerRow[]): { title?: string; rows: DayRulerRow[] }[] {\n const out: { title?: string; rows: DayRulerRow[] }[] = [];\n for (const row of rows) {\n const last = out[out.length - 1];\n if (last && last.title === row.group) last.rows.push(row);\n else out.push({ title: row.group, rows: [row] });\n }\n return out;\n}\n\nfunction scaleOf(props: DayRulerProps): RulerScale {\n return {\n from: props.from ?? 6,\n to: props.to ?? 26,\n snap: (props.snapMinutes ?? 15) / 60,\n createHours: props.createHours ?? 4,\n tickHours: props.tickHours ?? 4,\n };\n}\n\nfunction abilitiesOf(props: DayRulerProps): RulerAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };\n}\n\n/** A group's lines under its rows, when the host gives any (`groupFooter`). */\nfunction FooterOf({ props, group, ctx }: { props: DayRulerProps; group: string | undefined; ctx: RowContext }): React.JSX.Element | null {\n const rows = props.groupFooter?.(group);\n if (!rows || rows.length === 0) return null;\n const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;\n return <GroupFooter rows={rows} scale={ctx.scale} testId={ctx.testId} marked={marked} />;\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nfunction RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): React.JSX.Element {\n if (props.error) return <>{props.error}</>;\n if (props.loading) {\n return (\n <>\n {Array.from({ length: M.skeletonRows }, (_, index) => (\n <Box key={index} sx={rowSx} aria-hidden data-testid={`${ctx.testId}-loading`}>\n <Box sx={skeletonNameSx} />\n <Box sx={skeletonTrackSx} />\n </Box>\n ))}\n </>\n );\n }\n if (props.rows.length === 0) return <>{props.empty ?? null}</>;\n return (\n <>\n {grouped(props.rows).map((group, index) => (\n <Box key={`${index}-${group.title ?? ''}`} role=\"list\" aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden>\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <RulerRow key={row.id} row={row} ctx={ctx} />\n ))}\n <FooterOf props={props} group={group.title} ctx={ctx} />\n </Box>\n ))}\n </>\n );\n}\n\n/**\n * One day as an hour ruler per row — who is on the escala when, and who is\n * really on shift (FUT-3825). Drag on an empty stretch to create (a click\n * alone is `createHours`), drag a block to move it, drag its ends to change\n * them; every hour snaps to `snapMinutes`. On a narrow ruler (a phone) each row\n * stacks and the blocks are tap-only: touch scrolls and never drags.\n *\n * The ruler reports gestures; hours, limits and refusals are the host's.\n */\nexport function DayRuler(props: DayRulerProps): React.JSX.Element {\n const { now, onCreate, onMove, onResize } = props;\n const testId = props.dataTestId ?? 'day-ruler';\n const labels = resolveLabels(EN_US_DAY_RULER_LABELS, props.labels);\n const scale = scaleOf(props);\n const can = abilitiesOf(props);\n const dragApi = useRulerDrag(scale, { onCreate, onMove, onResize });\n const { text: announcement, say } = useAnnouncer();\n\n const ctx: RowContext = {\n scale,\n now,\n can,\n drag: dragApi.drag,\n dragApi,\n onBlockClick: props.onBlockClick,\n onKeyCreate: (row) => {\n const [start, end] = keyCreateSpan(scale, now, props.createStart?.(row.id));\n onCreate?.(row.id, start, end);\n },\n onBlockKey: (event, block) => handleBlockKey(event, block, { scale, can, onMove, onResize, labels, say }),\n createLabel: labels.createTrack,\n testId,\n };\n\n return (\n <Box\n sx={rootSx(props.rows.some((row) => row.actions !== undefined && row.actions !== null))}\n data-testid={testId}\n role=\"region\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n >\n {props.coverage && props.coverage.length > 0 ? (\n <Coverage coverage={props.coverage} label={props.coverageLabel} scale={scale} testId={testId} />\n ) : null}\n <Axis scale={scale} testId={testId} />\n <RulerBody props={props} ctx={ctx} />\n <Box sx={SR_ONLY_SX} aria-live=\"polite\" role=\"status\" data-testid={`${testId}-live`}>\n {announcement}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveIconPlacement
|
|
3
|
+
} from "./chunk-QXUXO22M.js";
|
|
1
4
|
import {
|
|
2
5
|
AlertContent
|
|
3
6
|
} from "./chunk-7HZ36QDH.js";
|
|
@@ -14,9 +17,6 @@ import {
|
|
|
14
17
|
resolveAnnouncement,
|
|
15
18
|
testIdFor
|
|
16
19
|
} from "./chunk-L7VH6IMR.js";
|
|
17
|
-
import {
|
|
18
|
-
resolveIconPlacement
|
|
19
|
-
} from "./chunk-QXUXO22M.js";
|
|
20
20
|
import {
|
|
21
21
|
ACTIVE,
|
|
22
22
|
ALERT_EASING,
|
|
@@ -277,4 +277,4 @@ export {
|
|
|
277
277
|
Alert,
|
|
278
278
|
ALERT_ONLY_PROPS
|
|
279
279
|
};
|
|
280
|
-
//# sourceMappingURL=chunk-
|
|
280
|
+
//# sourceMappingURL=chunk-PEAUGQKU.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DQ22UKMZ.js";
|
|
4
4
|
import {
|
|
5
5
|
Avatar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4QR7LM5F.js";
|
|
7
7
|
import {
|
|
8
8
|
Card
|
|
9
9
|
} from "./chunk-4XBAEKQQ.js";
|
|
@@ -80,4 +80,4 @@ export {
|
|
|
80
80
|
UserAvatar,
|
|
81
81
|
UserMenu
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-Q3SILZTQ.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridShell
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-X3GD3TFI.js";
|
|
4
4
|
import {
|
|
5
5
|
useDataViewsState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZCNR4DN5.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/DataViews/DataViewsGrid.tsx
|
|
9
9
|
import { useEffect, useRef } from "react";
|
|
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
|
|
|
27
27
|
export {
|
|
28
28
|
DataViewsGrid
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-R4LCPPKA.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MapControlBar
|
|
3
|
+
} from "./chunk-6PU5P7QT.js";
|
|
1
4
|
import {
|
|
2
5
|
HeatmapOverlay,
|
|
3
6
|
RouteOverlay
|
|
4
7
|
} from "./chunk-ZZ4MMUBY.js";
|
|
5
|
-
import {
|
|
6
|
-
MapControlBar
|
|
7
|
-
} from "./chunk-6PU5P7QT.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveMapCopy
|
|
10
10
|
} from "./chunk-M5Y42AZ4.js";
|
|
11
|
-
import {
|
|
12
|
-
MapSearchBar
|
|
13
|
-
} from "./chunk-MIUPTZS6.js";
|
|
14
11
|
import {
|
|
15
12
|
HEATMAP_VIEWBOX
|
|
16
13
|
} from "./chunk-H2J2MTRE.js";
|
|
14
|
+
import {
|
|
15
|
+
MapSearchBar
|
|
16
|
+
} from "./chunk-MIUPTZS6.js";
|
|
17
17
|
|
|
18
18
|
// src/components/data-display/MapPreview/MapLayers.tsx
|
|
19
19
|
import { useTheme } from "@mui/material/styles/index.js";
|
|
@@ -59,4 +59,4 @@ var MapLayers = ({ settings, zoom, mapType, search, controls }) => {
|
|
|
59
59
|
export {
|
|
60
60
|
MapLayers
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
62
|
+
//# sourceMappingURL=chunk-S2VZUBM7.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FleetCanvas
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VHE7UEG5.js";
|
|
4
4
|
import {
|
|
5
5
|
FleetRoster
|
|
6
6
|
} from "./chunk-A4B27HYU.js";
|
|
@@ -79,4 +79,4 @@ function FleetBody({
|
|
|
79
79
|
export {
|
|
80
80
|
FleetBody
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-TMINUTQQ.js.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
containerStyles,
|
|
3
|
+
frameBox
|
|
4
|
+
} from "./chunk-Z64TMGYT.js";
|
|
1
5
|
import {
|
|
2
6
|
CarouselTrack
|
|
3
7
|
} from "./chunk-6FDLBWTE.js";
|
|
@@ -7,10 +11,6 @@ import {
|
|
|
7
11
|
import {
|
|
8
12
|
CarouselChrome
|
|
9
13
|
} from "./chunk-TB5CRHTF.js";
|
|
10
|
-
import {
|
|
11
|
-
containerStyles,
|
|
12
|
-
frameBox
|
|
13
|
-
} from "./chunk-Z64TMGYT.js";
|
|
14
14
|
import {
|
|
15
15
|
withDefaults
|
|
16
16
|
} from "./chunk-HPK33ACY.js";
|
|
@@ -151,4 +151,4 @@ var Carousel = (props) => {
|
|
|
151
151
|
export {
|
|
152
152
|
Carousel
|
|
153
153
|
};
|
|
154
|
-
//# sourceMappingURL=chunk-
|
|
154
|
+
//# sourceMappingURL=chunk-U2SAW6DH.js.map
|
|
@@ -8,13 +8,16 @@ import {
|
|
|
8
8
|
coverageCellSx,
|
|
9
9
|
coverageLabelSx,
|
|
10
10
|
coverageSx,
|
|
11
|
+
footerCellSx,
|
|
12
|
+
footerNoteSx,
|
|
11
13
|
handleSx,
|
|
12
14
|
lineSx,
|
|
13
15
|
nowSx,
|
|
14
16
|
rowSx,
|
|
15
17
|
trackSx,
|
|
18
|
+
trendSx,
|
|
16
19
|
whoSx
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OJZLFFG4.js";
|
|
18
21
|
import {
|
|
19
22
|
useTextFits
|
|
20
23
|
} from "./chunk-YMYJO2CZ.js";
|
|
@@ -27,6 +30,9 @@ import {
|
|
|
27
30
|
percentOf,
|
|
28
31
|
ticksOf
|
|
29
32
|
} from "./chunk-LE5JYNR7.js";
|
|
33
|
+
import {
|
|
34
|
+
SR_ONLY_SX
|
|
35
|
+
} from "./chunk-RYJ6XGFA.js";
|
|
30
36
|
import {
|
|
31
37
|
ScheduleNameCell
|
|
32
38
|
} from "./chunk-TZ44F6W7.js";
|
|
@@ -191,6 +197,64 @@ function Coverage(props) {
|
|
|
191
197
|
/* @__PURE__ */ jsx("span", {})
|
|
192
198
|
] });
|
|
193
199
|
}
|
|
200
|
+
function trendPoints(values, hours) {
|
|
201
|
+
const present = values.slice(0, hours).filter((value) => value !== null);
|
|
202
|
+
const max = Math.max(0, ...present);
|
|
203
|
+
return values.slice(0, hours).flatMap((value, index) => {
|
|
204
|
+
if (value === null) return [];
|
|
205
|
+
const x = (index + 0.5) * 100 / hours;
|
|
206
|
+
const y = max > 0 ? 38 - value / max * 34 : 38;
|
|
207
|
+
return [`${x.toFixed(2)},${y.toFixed(2)}`];
|
|
208
|
+
}).join(" ");
|
|
209
|
+
}
|
|
210
|
+
var hourWords = (hour, text) => text ? `${formatHour(hour)} \xB7 ${text}` : formatHour(hour);
|
|
211
|
+
function markedWords(cell, hour, marked) {
|
|
212
|
+
return cell.title ?? `${hourWords(hour, cell.text)} \xB7 ${marked}`;
|
|
213
|
+
}
|
|
214
|
+
function FooterCells({ cells, ctx }) {
|
|
215
|
+
return /* @__PURE__ */ jsx(Box, { sx: coverageSx(ctx.hours), children: Array.from({ length: ctx.hours }, (_, index) => {
|
|
216
|
+
const cell = cells[index] ?? { text: "" };
|
|
217
|
+
const hour = ctx.from + index;
|
|
218
|
+
return /* @__PURE__ */ jsx(
|
|
219
|
+
Box,
|
|
220
|
+
{
|
|
221
|
+
component: "span",
|
|
222
|
+
sx: footerCellSx(Boolean(cell.marked)),
|
|
223
|
+
title: cell.marked ? markedWords(cell, hour, ctx.marked) : cell.title ?? hourWords(hour, cell.text),
|
|
224
|
+
"data-marked": cell.marked ? "" : void 0,
|
|
225
|
+
children: cell.marked ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
226
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, children: cell.text }),
|
|
227
|
+
/* @__PURE__ */ jsx(Box, { component: "span", sx: SR_ONLY_SX, children: markedWords(cell, hour, ctx.marked) })
|
|
228
|
+
] }) : cell.text
|
|
229
|
+
},
|
|
230
|
+
index
|
|
231
|
+
);
|
|
232
|
+
}) });
|
|
233
|
+
}
|
|
234
|
+
function trendWords(values, ctx) {
|
|
235
|
+
return values.slice(0, ctx.hours).flatMap((value, index) => value === null ? [] : [`${formatHour(ctx.from + index)} ${Math.round(value * 10) / 10}`]).join(" \xB7 ");
|
|
236
|
+
}
|
|
237
|
+
function FooterFigures({ row, ctx }) {
|
|
238
|
+
if (row.trend) {
|
|
239
|
+
return /* @__PURE__ */ jsxs(Box, { component: "span", sx: { display: "block", minWidth: 0 }, children: [
|
|
240
|
+
/* @__PURE__ */ jsx(Box, { component: "svg", viewBox: "0 0 100 40", preserveAspectRatio: "none", sx: trendSx, "aria-hidden": true, children: /* @__PURE__ */ jsx("polyline", { fill: "none", stroke: "currentColor", strokeWidth: 1.5, vectorEffect: "non-scaling-stroke", points: trendPoints(row.trend, ctx.hours) }) }),
|
|
241
|
+
/* @__PURE__ */ jsx(Box, { component: "span", sx: SR_ONLY_SX, children: trendWords(row.trend, ctx) })
|
|
242
|
+
] });
|
|
243
|
+
}
|
|
244
|
+
if (row.note !== void 0) {
|
|
245
|
+
return /* @__PURE__ */ jsx(Box, { component: "span", sx: footerNoteSx(Boolean(row.marked)), "data-marked": row.marked ? "" : void 0, children: row.note });
|
|
246
|
+
}
|
|
247
|
+
return /* @__PURE__ */ jsx(FooterCells, { cells: row.cells ?? [], ctx });
|
|
248
|
+
}
|
|
249
|
+
function GroupFooter(props) {
|
|
250
|
+
const { rows, scale, testId } = props;
|
|
251
|
+
const ctx = { hours: scale.to - scale.from, from: scale.from, marked: props.marked };
|
|
252
|
+
return /* @__PURE__ */ jsx(Fragment, { children: rows.map((row) => /* @__PURE__ */ jsxs(Box, { sx: lineSx, "data-testid": `${testId}-footer-${row.id}`, children: [
|
|
253
|
+
/* @__PURE__ */ jsx(Box, { component: "span", sx: coverageLabelSx, children: row.label }),
|
|
254
|
+
/* @__PURE__ */ jsx(FooterFigures, { row, ctx }),
|
|
255
|
+
/* @__PURE__ */ jsx("span", {})
|
|
256
|
+
] }, row.id)) });
|
|
257
|
+
}
|
|
194
258
|
function Axis({ scale, testId }) {
|
|
195
259
|
return /* @__PURE__ */ jsxs(Box, { sx: lineSx, "data-testid": `${testId}-axis`, "aria-hidden": true, children: [
|
|
196
260
|
/* @__PURE__ */ jsx("span", {}),
|
|
@@ -203,6 +267,8 @@ export {
|
|
|
203
267
|
spanOf,
|
|
204
268
|
RulerRow,
|
|
205
269
|
Coverage,
|
|
270
|
+
trendPoints,
|
|
271
|
+
GroupFooter,
|
|
206
272
|
Axis
|
|
207
273
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
274
|
+
//# sourceMappingURL=chunk-UDBOGSFO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.parts.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport type * as React from 'react';\nimport { useRef } from 'react';\n\nimport { ScheduleNameCell } from '../ScheduleGrid/ScheduleNameCell';\nimport type { RulerAbilities, RulerScale } from './DayRuler.keyboard';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { useTextFits } from './useTextFits';\nimport { formatHour, formatRange, percentOf, ticksOf } from './day-ruler-model';\nimport { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';\nimport {\n actionsSx,\n actualLabelSx,\n actualSx,\n axisSx,\n blockSx,\n breakSx,\n coverageCellSx,\n coverageLabelSx,\n coverageSx,\n footerCellSx,\n footerNoteSx,\n handleSx,\n lineSx,\n nowSx,\n rowSx,\n trackSx,\n trendSx,\n whoSx,\n type Span,\n} from './DayRuler.styles';\nimport type { DayRulerBlock, DayRulerFooterCell, DayRulerFooterRow, DayRulerRow, RulerHour } from './DayRuler.types';\nimport type { RulerDrag, RulerDragApi } from './useRulerDrag';\n\nexport const spanOf = (start: RulerHour, end: RulerHour, scale: RulerScale): Span => {\n const at = percentOf(start, scale.from, scale.to);\n return { at, share: Math.max(0, percentOf(end, scale.from, scale.to) - at) };\n};\n\n/** What every row of one ruler shares. */\nexport interface RowContext {\n scale: RulerScale;\n now?: RulerHour;\n can: RulerAbilities;\n drag: RulerDrag | null;\n dragApi: RulerDragApi;\n onBlockClick?: (blockId: string) => void;\n onKeyCreate: (row: DayRulerRow) => void;\n onBlockKey: (event: React.KeyboardEvent, block: DayRulerBlock) => void;\n createLabel: (row: string) => string;\n testId: string;\n}\n\n/** The keys a block answers to, for `aria-keyshortcuts`. */\nfunction shortcutsOf(movable: boolean, resizable: boolean): string | undefined {\n const keys = [\n movable ? 'Alt+ArrowLeft Alt+ArrowRight' : '',\n resizable ? 'Shift+ArrowLeft Shift+ArrowRight Shift+Alt+ArrowLeft Shift+Alt+ArrowRight' : '',\n ];\n return keys.filter(Boolean).join(' ') || undefined;\n}\n\nfunction Handle({ side, onPointerDown, testId }: { side: 'l' | 'r'; onPointerDown: (event: React.PointerEvent<HTMLElement>) => void; testId: string }) {\n return <Box component=\"span\" aria-hidden sx={handleSx(side)} data-testid={testId} onPointerDown={onPointerDown} />;\n}\n\ninterface BlockProps {\n row: DayRulerRow;\n block: DayRulerBlock;\n /** Where it is drawn: its own hours, or where a drag has it now. */\n span: Span;\n /** The hours it is drawn at (its own, or a drag's). */\n at: { start: RulerHour; end: RulerHour };\n text: string;\n ctx: RowContext;\n testId: string;\n}\n\n/**\n * The block's break, where it falls inside the block as drawn: it moves with a\n * dragged block (same offset from its start) and is cut to the block's ends.\n */\nfunction breakShare(block: DayRulerBlock, start: RulerHour, end: RulerHour): Span | null {\n const span = block.breakSpan;\n const length = end - start;\n if (!span || !(length > 0)) return null;\n const shift = Math.abs(length - (block.end - block.start)) < 1e-6 ? start - block.start : 0;\n const a = Math.max(start, span.start + shift);\n const b = Math.min(end, span.end + shift);\n if (!(b > a)) return null;\n return { at: ((a - start) / length) * 100, share: ((b - a) / length) * 100 };\n}\n\n/** The block's break as a hatched band, when it falls inside the block as drawn. */\nfunction BreakBand({ block, at, testId }: { block: DayRulerBlock; at: BlockProps['at']; testId: string }): React.JSX.Element | null {\n const gap = breakShare(block, at.start, at.end);\n if (!gap) return null;\n return <Box component=\"span\" aria-hidden sx={breakSx(gap)} data-dr-break=\"\" data-testid={testId} />;\n}\n\nfunction RulerBlock({ row, block, span, at, text, ctx, testId }: BlockProps): React.JSX.Element {\n const { can, dragApi, scale } = ctx;\n const movable = can.move && Boolean(block.movable);\n const resizable = can.resize && Boolean(block.resizable);\n const ref = useRef<HTMLButtonElement | null>(null);\n // Short by pixels; where nothing can be measured, by the prototype's 30% rule.\n const fits = useTextFits(ref, text, (block.end - block.start) / (scale.to - scale.from) >= M.narrowShare);\n const press = (mode: 'move' | 'start' | 'end') => (event: React.PointerEvent<HTMLElement>) =>\n dragApi.startBlock(event, row.id, block, mode);\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={blockSx(block.tone, span, { selected: Boolean(block.selected), movable })}\n title={block.title ?? block.label}\n aria-keyshortcuts={shortcutsOf(movable, resizable)}\n aria-current={block.selected ? 'true' : undefined}\n ref={ref}\n data-narrow={fits ? undefined : ''}\n data-tone={block.tone}\n data-testid={testId}\n onPointerDown={movable ? press('move') : undefined}\n onClick={() => {\n if (!dragApi.takeClick()) ctx.onBlockClick?.(block.id);\n }}\n onKeyDown={(event: React.KeyboardEvent) => ctx.onBlockKey(event, block)}\n >\n <BreakBand block={block} at={at} testId={`${ctx.testId}-break-${block.id}`} />\n {resizable ? <Handle side=\"l\" onPointerDown={press('start')} testId={`${ctx.testId}-handle-l-${block.id}`} /> : null}\n <span data-dr-text=\"full\" title={text}>\n {text}\n </span>\n <span data-dr-text=\"short\" title={text}>\n {block.shortLabel ?? text}\n </span>\n {resizable ? <Handle side=\"r\" onPointerDown={press('end')} testId={`${ctx.testId}-handle-r-${block.id}`} /> : null}\n </Box>\n );\n}\n\n/** A row's blocks, each where a drag has it now (with its live hours) or where it is. */\nfunction Blocks({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n const mine = ctx.drag && ctx.drag.rowId === row.id ? ctx.drag : null;\n return (\n <>\n {row.blocks.map((block) => {\n const live = mine?.blockId === block.id ? mine : null;\n const start = live ? live.start : block.start;\n const end = live ? live.end : block.end;\n return (\n <RulerBlock\n key={block.id}\n row={row}\n block={block}\n span={spanOf(start, end, ctx.scale)}\n at={{ start, end }}\n text={live?.moved ? formatRange(start, end) : block.label}\n ctx={ctx}\n testId={`${ctx.testId}-block-${block.id}`}\n />\n );\n })}\n {mine && mine.mode === 'create' ? <CreatePreview row={row} drag={mine} ctx={ctx} /> : null}\n </>\n );\n}\n\n/** The block a create drag is drawing, with its live hours. */\nfunction CreatePreview({ row, drag, ctx }: { row: DayRulerRow; drag: RulerDrag; ctx: RowContext }): React.JSX.Element {\n const range = formatRange(drag.start, drag.end);\n return (\n <RulerBlock\n row={row}\n block={{ id: '\\u0000new', start: drag.start, end: drag.end, label: range, tone: 'plan' }}\n span={spanOf(drag.start, Math.max(drag.end, drag.start + ctx.scale.snap), ctx.scale)}\n at={{ start: drag.start, end: drag.end }}\n text={range}\n ctx={ctx}\n testId={`${ctx.testId}-preview`}\n />\n );\n}\n\n/** The real shift under the blocks, and its label at its start. */\nfunction Actual({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element | null {\n const { actual } = row;\n if (!actual) return null;\n return (\n <>\n <Box sx={actualSx(spanOf(actual.start, actual.end, ctx.scale))} data-testid={`${ctx.testId}-actual-${row.id}`} />\n {row.actualLabel ? (\n <Box component=\"span\" sx={actualLabelSx(percentOf(actual.start, ctx.scale.from, ctx.scale.to))}>\n {row.actualLabel}\n </Box>\n ) : null}\n </>\n );\n}\n\n/** A row's track: the actual bar, its blocks (or the one being dragged, live) and the now line. */\nfunction Track({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n const { scale, now, can, dragApi } = ctx;\n const showNow = now !== undefined && now >= scale.from && now <= scale.to;\n return (\n <Box\n sx={trackSx({ hours: scale.to - scale.from, tickHours: scale.tickHours, interactive: can.create })}\n data-dr-track=\"\"\n data-testid={`${ctx.testId}-track-${row.id}`}\n role={can.create ? 'group' : undefined}\n tabIndex={can.create ? 0 : undefined}\n aria-label={can.create ? ctx.createLabel(row.label) : undefined}\n onPointerDown={can.create ? (event: React.PointerEvent<HTMLElement>) => dragApi.startCreate(event, row.id) : undefined}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (!can.create || event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) return;\n event.preventDefault();\n ctx.onKeyCreate(row);\n }}\n >\n <Actual row={row} ctx={ctx} />\n <Blocks row={row} ctx={ctx} />\n {showNow ? <Box sx={nowSx(percentOf(now, scale.from, scale.to))} data-testid={`${ctx.testId}-now`} /> : null}\n </Box>\n );\n}\n\n/** One person: name, meta and chips · the track · the row's actions. */\nexport function RulerRow({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n return (\n <Box sx={rowSx} data-testid={`${ctx.testId}-row-${row.id}`} role=\"listitem\">\n <ScheduleNameCell row={row} sx={whoSx} sizes={{ name: M.name, meta: M.meta, chipsTop: 0.75 }} />\n <Track row={row} ctx={ctx} />\n <Box sx={actionsSx}>{row.actions}</Box>\n </Box>\n );\n}\n\n/** \"Na escala, por hora\": a count per hour above the axis. */\nexport function Coverage(props: { coverage: readonly number[]; label?: string; scale: RulerScale; testId: string }): React.JSX.Element {\n const { coverage, label, scale, testId } = props;\n const hours = scale.to - scale.from;\n return (\n <Box sx={lineSx} data-testid={`${testId}-coverage`}>\n <Box component=\"span\" sx={coverageLabelSx}>\n {label}\n </Box>\n <Box sx={coverageSx(hours)}>\n {Array.from({ length: hours }, (_, index) => {\n const count = coverage[index] ?? 0;\n return (\n <Box key={index} component=\"span\" sx={coverageCellSx(count)} title={`${formatHour(scale.from + index)} · ${count}`}>\n {count > 0 ? count : ''}\n </Box>\n );\n })}\n </Box>\n <span />\n </Box>\n );\n}\n\n/** The points of a trend over the hours' centres, in a 100 × 40 box: the highest value near the top, `null` breaks nothing (it is skipped). */\nexport function trendPoints(values: readonly (number | null)[], hours: number): string {\n const present = values.slice(0, hours).filter((value): value is number => value !== null);\n const max = Math.max(0, ...present);\n return values\n .slice(0, hours)\n .flatMap((value, index) => {\n if (value === null) return [];\n const x = ((index + 0.5) * 100) / hours;\n const y = max > 0 ? 38 - (value / max) * 34 : 38;\n return [`${x.toFixed(2)},${y.toFixed(2)}`];\n })\n .join(' ');\n}\n\n/** One hour's default words: \"20:00 · 4\"; just the hour when it says nothing. */\nconst hourWords = (hour: RulerHour, text: string): string => (text ? `${formatHour(hour)} · ${text}` : formatHour(hour));\n\n/** What a reader hears for a marked hour: the host's `title`, else the hour, its count and that it is short. */\nfunction markedWords(cell: DayRulerFooterCell, hour: RulerHour, marked: string): string {\n return cell.title ?? `${hourWords(hour, cell.text)} · ${marked}`;\n}\n\ninterface FooterContext {\n hours: number;\n from: RulerHour;\n /** `labels.footerMarked`. */\n marked: string;\n}\n\nfunction FooterCells({ cells, ctx }: { cells: readonly DayRulerFooterCell[]; ctx: FooterContext }): React.JSX.Element {\n return (\n <Box sx={coverageSx(ctx.hours)}>\n {Array.from({ length: ctx.hours }, (_, index) => {\n const cell = cells[index] ?? { text: '' };\n const hour = ctx.from + index;\n return (\n <Box\n key={index}\n component=\"span\"\n sx={footerCellSx(Boolean(cell.marked))}\n title={cell.marked ? markedWords(cell, hour, ctx.marked) : (cell.title ?? hourWords(hour, cell.text))}\n data-marked={cell.marked ? '' : undefined}\n >\n {/* A marked hour is said in words too, not only by its outline and a tooltip touch never shows. */}\n {cell.marked ? (\n <>\n <span aria-hidden>{cell.text}</span>\n <Box component=\"span\" sx={SR_ONLY_SX}>\n {markedWords(cell, hour, ctx.marked)}\n </Box>\n </>\n ) : (\n cell.text\n )}\n </Box>\n );\n })}\n </Box>\n );\n}\n\n/** A trend's figures in words, for the reader the drawn line does not reach: \"11:00 4 · 12:00 6\". */\nfunction trendWords(values: readonly (number | null)[], ctx: FooterContext): string {\n return values\n .slice(0, ctx.hours)\n .flatMap((value, index) => (value === null ? [] : [`${formatHour(ctx.from + index)} ${Math.round(value * 10) / 10}`]))\n .join(' · ');\n}\n\nfunction FooterFigures({ row, ctx }: { row: DayRulerFooterRow; ctx: FooterContext }): React.JSX.Element {\n if (row.trend) {\n return (\n <Box component=\"span\" sx={{ display: 'block', minWidth: 0 }}>\n <Box component=\"svg\" viewBox=\"0 0 100 40\" preserveAspectRatio=\"none\" sx={trendSx} aria-hidden>\n <polyline fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5} vectorEffect=\"non-scaling-stroke\" points={trendPoints(row.trend, ctx.hours)} />\n </Box>\n <Box component=\"span\" sx={SR_ONLY_SX}>\n {trendWords(row.trend, ctx)}\n </Box>\n </Box>\n );\n }\n if (row.note !== undefined) {\n return (\n <Box component=\"span\" sx={footerNoteSx(Boolean(row.marked))} data-marked={row.marked ? '' : undefined}>\n {row.note}\n </Box>\n );\n }\n return <FooterCells cells={row.cells ?? []} ctx={ctx} />;\n}\n\n/**\n * A group's lines under its rows (FUT-3882): counts per hour, a trend, or a\n * sentence, on the tracks' columns. `marked` is `labels.footerMarked`.\n */\nexport function GroupFooter(props: { rows: readonly DayRulerFooterRow[]; scale: RulerScale; testId: string; marked: string }): React.JSX.Element {\n const { rows, scale, testId } = props;\n const ctx: FooterContext = { hours: scale.to - scale.from, from: scale.from, marked: props.marked };\n return (\n <>\n {rows.map((row) => (\n <Box key={row.id} sx={lineSx} data-testid={`${testId}-footer-${row.id}`}>\n <Box component=\"span\" sx={coverageLabelSx}>\n {row.label}\n </Box>\n <FooterFigures row={row} ctx={ctx} />\n <span />\n </Box>\n ))}\n </>\n );\n}\n\n/** The hour labels under the coverage row. */\nexport function Axis({ scale, testId }: { scale: RulerScale; testId: string }): React.JSX.Element {\n return (\n <Box sx={lineSx} data-testid={`${testId}-axis`} aria-hidden>\n <span />\n <Box sx={axisSx}>\n {ticksOf(scale.from, scale.to, scale.tickHours).map((h) => (\n <span key={h} style={{ left: `${percentOf(h, scale.from, scale.to)}%` }}>\n {formatHour(h)}\n </span>\n ))}\n </Box>\n <span />\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
RAIL_GAP,
|
|
14
14
|
railsTemplateFor,
|
|
15
15
|
useListRails
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-BBBHPK2Q.js";
|
|
17
17
|
import {
|
|
18
18
|
DENSITY_ROW_PADDING
|
|
19
19
|
} from "./chunk-5CAWRMDX.js";
|
|
@@ -213,4 +213,4 @@ export {
|
|
|
213
213
|
rowGutters,
|
|
214
214
|
rowStyles
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-UMOHHWXY.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MapPreview
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3PQL2EN5.js";
|
|
4
4
|
|
|
5
5
|
// src/components/data-display/FleetMap/FleetCanvas.tsx
|
|
6
6
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -38,4 +38,4 @@ function FleetCanvas({
|
|
|
38
38
|
export {
|
|
39
39
|
FleetCanvas
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-VHE7UEG5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Chart
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5357QUVE.js";
|
|
4
4
|
import {
|
|
5
5
|
CHART_SEMANTIC_COLORS,
|
|
6
6
|
specToChartProps
|
|
@@ -46,4 +46,4 @@ var SpecChart = ({
|
|
|
46
46
|
export {
|
|
47
47
|
SpecChart
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-VWRXSBT2.js.map
|
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
} from "./chunk-YNVTUQ5B.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsGrid
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-R4LCPPKA.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
10
10
|
import {
|
|
11
11
|
ViewDialogs,
|
|
12
12
|
ViewMutationErrorAlert
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-66VKX6JE.js";
|
|
14
14
|
import {
|
|
15
15
|
useUrlEchoGuard,
|
|
16
16
|
useUrlSyncState
|
|
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
166
166
|
export {
|
|
167
167
|
DataViewsTableBase
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-W2KOP27S.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useLightboxCopy
|
|
3
|
-
} from "./chunk-TEQYTEM2.js";
|
|
4
1
|
import {
|
|
5
2
|
OVERLAY_Z_INDEX,
|
|
6
3
|
navButtonSx,
|
|
7
4
|
overlayButtonSx
|
|
8
5
|
} from "./chunk-VQU3CBAL.js";
|
|
6
|
+
import {
|
|
7
|
+
useLightboxCopy
|
|
8
|
+
} from "./chunk-TEQYTEM2.js";
|
|
9
9
|
import {
|
|
10
10
|
sxRem
|
|
11
11
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -156,4 +156,4 @@ export {
|
|
|
156
156
|
LightboxZoomControls,
|
|
157
157
|
LightboxAutoplayButton
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
//# sourceMappingURL=chunk-W676GY42.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
LightboxCloseButton,
|
|
4
4
|
LightboxNavButtons,
|
|
5
5
|
LightboxZoomControls
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-W676GY42.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/Lightbox/LightboxOverlay.tsx
|
|
9
9
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -60,4 +60,4 @@ var LightboxOverlay = ({
|
|
|
60
60
|
export {
|
|
61
61
|
LightboxOverlay
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-WLLUARTC.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FilterDialog,
|
|
3
|
+
GridFilterPanel
|
|
4
|
+
} from "./chunk-CKQOYPH3.js";
|
|
1
5
|
import {
|
|
2
6
|
ShellEmpty
|
|
3
7
|
} from "./chunk-MKVDHR3B.js";
|
|
4
8
|
import {
|
|
5
9
|
InlineFilterControls
|
|
6
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AI7XWBNG.js";
|
|
7
11
|
import {
|
|
8
12
|
GridHeaderRow
|
|
9
13
|
} from "./chunk-X3AFXHY5.js";
|
|
10
14
|
import {
|
|
11
15
|
GridMain
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
FilterDialog,
|
|
15
|
-
GridFilterPanel
|
|
16
|
-
} from "./chunk-KRBPWTXW.js";
|
|
16
|
+
} from "./chunk-XNAI7QGU.js";
|
|
17
17
|
import {
|
|
18
18
|
DataViewsPagination
|
|
19
19
|
} from "./chunk-XZFTRGRW.js";
|
|
@@ -24,27 +24,27 @@ import {
|
|
|
24
24
|
toOverflowFields,
|
|
25
25
|
toggleQuick
|
|
26
26
|
} from "./chunk-KYUEO2IO.js";
|
|
27
|
+
import {
|
|
28
|
+
allOnPageSelected,
|
|
29
|
+
resolveSelectionExtra
|
|
30
|
+
} from "./chunk-5YDS6HO3.js";
|
|
27
31
|
import {
|
|
28
32
|
ScopeTabsSlot
|
|
29
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-K6VEN5VN.js";
|
|
30
34
|
import {
|
|
31
35
|
ShellToolbar
|
|
32
36
|
} from "./chunk-Z2WZDVGG.js";
|
|
33
|
-
import {
|
|
34
|
-
allOnPageSelected,
|
|
35
|
-
resolveSelectionExtra
|
|
36
|
-
} from "./chunk-5YDS6HO3.js";
|
|
37
37
|
import {
|
|
38
38
|
SHELL_PROPS,
|
|
39
39
|
useStickyBarTop
|
|
40
40
|
} from "./chunk-4IE66GY2.js";
|
|
41
|
-
import {
|
|
42
|
-
togglePillValues
|
|
43
|
-
} from "./chunk-UKNMPGEM.js";
|
|
44
41
|
import {
|
|
45
42
|
DataViewsLayoutProvider,
|
|
46
43
|
useDataViewsLayout
|
|
47
44
|
} from "./chunk-5CAWRMDX.js";
|
|
45
|
+
import {
|
|
46
|
+
togglePillValues
|
|
47
|
+
} from "./chunk-UKNMPGEM.js";
|
|
48
48
|
import {
|
|
49
49
|
useDataViewsCopy
|
|
50
50
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -252,4 +252,4 @@ function GridShell(props) {
|
|
|
252
252
|
export {
|
|
253
253
|
GridShell
|
|
254
254
|
};
|
|
255
|
-
//# sourceMappingURL=chunk-
|
|
255
|
+
//# sourceMappingURL=chunk-X3GD3TFI.js.map
|