@12-apps/ui 6.92.2 → 6.93.1
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 +10 -3
- package/components-guidelines.md +30 -0
- package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +9 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.view.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 +10 -10
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
- package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
- 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/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +34 -34
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +48 -48
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +28 -28
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +10 -10
- 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 +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
- 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 +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +25 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js +23 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +15 -13
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +12 -15
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -11
- package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +5 -1
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/useTextFits.js +4 -3
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
- 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/RegionMap/RegionMap.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +7 -7
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +5 -5
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +3 -3
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +3 -1
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +61 -59
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +48 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js.map +1 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -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 +15 -14
- package/dist/_internal/components/index.js +80 -77
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- 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 +13 -13
- package/dist/_internal/user-avatar/user-avatar.js +4 -4
- package/dist/charts.js +16 -16
- package/dist/{chunk-LDCZPZPD.js → chunk-24HHUCWB.js} +2 -2
- package/dist/{chunk-7ZQ3KQ7J.js → chunk-273OLFJD.js} +16 -6
- package/dist/chunk-273OLFJD.js.map +1 -0
- package/dist/{chunk-FAUNQ3FS.js → chunk-2M3W6ACW.js} +3 -3
- package/dist/{chunk-ALOEOGQV.js → chunk-3TZUZXY5.js} +2 -2
- package/dist/{chunk-4HK4FVMV.js → chunk-3UAHDLKH.js} +7 -1
- package/dist/{chunk-4HK4FVMV.js.map → chunk-3UAHDLKH.js.map} +1 -1
- package/dist/{chunk-DWH4TQXK.js → chunk-4E2RQOSQ.js} +2 -2
- package/dist/{chunk-4QR7LM5F.js → chunk-4J62V5OE.js} +7 -7
- package/dist/{chunk-OJZLFFG4.js → chunk-5AZEDQXX.js} +59 -70
- package/dist/chunk-5AZEDQXX.js.map +1 -0
- package/dist/{chunk-CZVAVX5L.js → chunk-6ATXOJVQ.js} +2 -2
- package/dist/{chunk-YE7M7URT.js → chunk-6D5AMANO.js} +2 -2
- package/dist/{chunk-Q3SILZTQ.js → chunk-6LGKJVOA.js} +2 -2
- package/dist/{chunk-ZCNR4DN5.js → chunk-7WE432RQ.js} +12 -12
- package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
- package/dist/{chunk-B5STMM3R.js → chunk-ALMGYCHY.js} +2 -2
- package/dist/{chunk-5357QUVE.js → chunk-AMLHEKSV.js} +5 -5
- package/dist/{chunk-3I5PHWKQ.js → chunk-ASEHJIIV.js} +6 -6
- package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
- package/dist/{chunk-OCT5VCLP.js → chunk-BQBEN44R.js} +2 -2
- package/dist/{chunk-FYUNROLW.js → chunk-BZYLTGOE.js} +2 -2
- package/dist/{chunk-TZ44F6W7.js → chunk-CGS2LQE5.js} +2 -2
- package/dist/chunk-CPQJFHNZ.js +63 -0
- package/dist/chunk-CPQJFHNZ.js.map +1 -0
- package/dist/{chunk-PCQ5JWLF.js → chunk-CWXX5JR3.js} +14 -12
- package/dist/chunk-CWXX5JR3.js.map +1 -0
- package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
- package/dist/{chunk-QE4KYG5I.js → chunk-F2UP5ZF4.js} +6 -6
- package/dist/{chunk-P53ANKZV.js → chunk-F7LBTMCA.js} +4 -4
- package/dist/{chunk-UDBOGSFO.js → chunk-FGZIEZEP.js} +67 -110
- package/dist/chunk-FGZIEZEP.js.map +1 -0
- package/dist/{chunk-IWSTMVCA.js → chunk-FKS2PNJF.js} +8 -8
- package/dist/{chunk-3WYEENUH.js → chunk-FPNVOB52.js} +7 -7
- package/dist/{chunk-E73C73UD.js → chunk-FYSS2PYA.js} +3 -3
- package/dist/{chunk-N557OEZR.js → chunk-G6NMSBSQ.js} +2 -2
- package/dist/{chunk-A5OERY43.js → chunk-GARM5SX6.js} +2 -2
- package/dist/{chunk-66VKX6JE.js → chunk-GXGHEOWC.js} +3 -3
- package/dist/{chunk-U2SAW6DH.js → chunk-GY53SDVL.js} +4 -4
- package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
- package/dist/{chunk-CNUO2BRV.js → chunk-HWZETMO4.js} +3 -3
- package/dist/{chunk-MM3QESLI.js → chunk-ILJ3FXIC.js} +2 -2
- package/dist/{chunk-FWTVIRZZ.js → chunk-JVQ56E3U.js} +6 -6
- package/dist/{chunk-YOLLISEY.js → chunk-JXK53XJW.js} +9 -9
- package/dist/{chunk-K6VEN5VN.js → chunk-K3PMMW23.js} +4 -4
- package/dist/{chunk-T5RFH2T5.js → chunk-KOGJBAFI.js} +2 -2
- package/dist/{chunk-COK65GX2.js → chunk-KURE5R7Z.js} +12 -2
- package/dist/chunk-KURE5R7Z.js.map +1 -0
- package/dist/{chunk-EKSJES5E.js → chunk-KXDLLS62.js} +3 -3
- package/dist/{chunk-LE5JYNR7.js → chunk-L5CAHQIN.js} +23 -2
- package/dist/chunk-L5CAHQIN.js.map +1 -0
- package/dist/{chunk-DBI6AMNY.js → chunk-LKWXU6NH.js} +4 -4
- package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
- package/dist/{chunk-NXQ6PXLJ.js → chunk-LZ5PGB7U.js} +2 -2
- package/dist/chunk-MPVH2GM5.js +83 -0
- package/dist/chunk-MPVH2GM5.js.map +1 -0
- package/dist/{chunk-5I75WRXT.js → chunk-N3GLX64O.js} +4 -4
- package/dist/{chunk-6DO672AG.js → chunk-N5PVD4J5.js} +7 -7
- package/dist/{chunk-PEAUGQKU.js → chunk-NQCTANF3.js} +7 -7
- package/dist/{chunk-ZYZPSBNQ.js → chunk-OGSTMHT6.js} +22 -7
- package/dist/chunk-OGSTMHT6.js.map +1 -0
- package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
- package/dist/{chunk-FQNDJITD.js → chunk-RCTHCXS6.js} +2 -2
- package/dist/{chunk-VWRXSBT2.js → chunk-SB2SEGR6.js} +3 -3
- package/dist/{chunk-Z2WZDVGG.js → chunk-SI5SKX52.js} +2 -2
- package/dist/{chunk-RYJ6XGFA.js → chunk-SJAOQGQI.js} +2 -2
- package/dist/{chunk-D7R6SRJB.js → chunk-SKQPUAMK.js} +3 -3
- package/dist/{chunk-AMIUZRDQ.js → chunk-SNWCT6JN.js} +3 -3
- package/dist/{chunk-7W5X3KQ2.js → chunk-SW7JCF4Z.js} +2 -2
- package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
- package/dist/{chunk-BNBWUXT3.js → chunk-TE6HAWDM.js} +2 -2
- package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
- package/dist/{chunk-Y3F2F36I.js → chunk-U4Z6GZDW.js} +3 -3
- package/dist/{chunk-KQDBOZQE.js → chunk-UIIHUWOV.js} +13 -13
- package/dist/{chunk-L4V7FZJI.js → chunk-UKUGSU3Y.js} +2 -2
- package/dist/{chunk-D2JQF2WC.js → chunk-UOKXYV3U.js} +5 -5
- package/dist/{chunk-K7IDOTSU.js → chunk-VNMD6BA4.js} +2 -2
- package/dist/chunk-WG7CAT5D.js +65 -0
- package/dist/chunk-WG7CAT5D.js.map +1 -0
- package/dist/chunk-WSSD7H5E.js +52 -0
- package/dist/chunk-WSSD7H5E.js.map +1 -0
- package/dist/{chunk-DTZOP4ZR.js → chunk-XCUHGPPZ.js} +2 -2
- package/dist/{chunk-DBPFKGXX.js → chunk-Y7BOP7VZ.js} +3 -3
- package/dist/{chunk-BOADHYTA.js → chunk-YNZUYZ2O.js} +2 -2
- package/dist/{chunk-XRV4QFEQ.js → chunk-ZBUMGMWP.js} +83 -65
- package/dist/chunk-ZBUMGMWP.js.map +1 -0
- package/dist/{chunk-XNAI7QGU.js → chunk-ZM6FJCWS.js} +4 -4
- package/dist/{chunk-FC7UCFFA.js → chunk-ZPWPA6FR.js} +8 -8
- package/dist/data-display/Alert.js +2 -2
- package/dist/data-display/AlertDialog.js +2 -2
- package/dist/data-display/Avatar.js +3 -3
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +18 -18
- package/dist/data-display/Carousel.js +3 -3
- package/dist/data-display/Chart.js +16 -16
- package/dist/data-display/DataViews.js +66 -66
- package/dist/data-display/DayRuler.js +15 -13
- package/dist/data-display/HoverCard.js +1 -1
- package/dist/data-display/Lightbox.js +5 -5
- package/dist/data-display/RegionMap.js +2 -2
- package/dist/data-display/ScheduleGrid.js +9 -9
- package/dist/data-display/Sheet.js +3 -3
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +8 -8
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/feedback/SequenceResolver.js +6 -5
- package/dist/navigation/AppHeader.js +4 -4
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts +11 -0
- package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts +16 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts +18 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +15 -5
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -14
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +20 -23
- 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 +13 -3
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +27 -0
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +11 -9
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +8 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts +55 -2
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts +16 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts.map +1 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +10 -4
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -1
- package/dist/user-avatar.js +4 -4
- package/package.json +1 -1
- package/src/components/data-display/AlertDialog/AlertDialog.md +25 -1
- package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +28 -0
- package/src/components/data-display/AlertDialog/AlertDialog.tsx +34 -5
- package/src/components/data-display/DayRuler/DayRuler.footer.styles.ts +54 -0
- package/src/components/data-display/DayRuler/DayRuler.footer.tsx +123 -0
- package/src/components/data-display/DayRuler/DayRuler.md +37 -13
- package/src/components/data-display/DayRuler/DayRuler.metrics.ts +15 -5
- package/src/components/data-display/DayRuler/DayRuler.parts.tsx +86 -155
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +89 -83
- package/src/components/data-display/DayRuler/DayRuler.tsx +3 -2
- package/src/components/data-display/DayRuler/DayRuler.types.ts +13 -3
- package/src/components/data-display/DayRuler/day-ruler-model.ts +45 -0
- package/src/components/data-display/DayRuler/useTextFits.ts +68 -25
- package/src/components/data-display/ScheduleGrid/schedule-tones.ts +13 -0
- package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.frame.tsx +71 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.md +2 -2
- package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +122 -61
- package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +10 -4
- package/dist/chunk-7ZQ3KQ7J.js.map +0 -1
- package/dist/chunk-COK65GX2.js.map +0 -1
- package/dist/chunk-LE5JYNR7.js.map +0 -1
- package/dist/chunk-OJZLFFG4.js.map +0 -1
- package/dist/chunk-PCQ5JWLF.js.map +0 -1
- package/dist/chunk-UDBOGSFO.js.map +0 -1
- package/dist/chunk-XRV4QFEQ.js.map +0 -1
- package/dist/chunk-YMYJO2CZ.js +0 -32
- package/dist/chunk-YMYJO2CZ.js.map +0 -1
- package/dist/chunk-ZYZPSBNQ.js.map +0 -1
- /package/dist/{chunk-LDCZPZPD.js.map → chunk-24HHUCWB.js.map} +0 -0
- /package/dist/{chunk-FAUNQ3FS.js.map → chunk-2M3W6ACW.js.map} +0 -0
- /package/dist/{chunk-ALOEOGQV.js.map → chunk-3TZUZXY5.js.map} +0 -0
- /package/dist/{chunk-DWH4TQXK.js.map → chunk-4E2RQOSQ.js.map} +0 -0
- /package/dist/{chunk-4QR7LM5F.js.map → chunk-4J62V5OE.js.map} +0 -0
- /package/dist/{chunk-CZVAVX5L.js.map → chunk-6ATXOJVQ.js.map} +0 -0
- /package/dist/{chunk-YE7M7URT.js.map → chunk-6D5AMANO.js.map} +0 -0
- /package/dist/{chunk-Q3SILZTQ.js.map → chunk-6LGKJVOA.js.map} +0 -0
- /package/dist/{chunk-ZCNR4DN5.js.map → chunk-7WE432RQ.js.map} +0 -0
- /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
- /package/dist/{chunk-B5STMM3R.js.map → chunk-ALMGYCHY.js.map} +0 -0
- /package/dist/{chunk-5357QUVE.js.map → chunk-AMLHEKSV.js.map} +0 -0
- /package/dist/{chunk-3I5PHWKQ.js.map → chunk-ASEHJIIV.js.map} +0 -0
- /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
- /package/dist/{chunk-OCT5VCLP.js.map → chunk-BQBEN44R.js.map} +0 -0
- /package/dist/{chunk-FYUNROLW.js.map → chunk-BZYLTGOE.js.map} +0 -0
- /package/dist/{chunk-TZ44F6W7.js.map → chunk-CGS2LQE5.js.map} +0 -0
- /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
- /package/dist/{chunk-QE4KYG5I.js.map → chunk-F2UP5ZF4.js.map} +0 -0
- /package/dist/{chunk-P53ANKZV.js.map → chunk-F7LBTMCA.js.map} +0 -0
- /package/dist/{chunk-IWSTMVCA.js.map → chunk-FKS2PNJF.js.map} +0 -0
- /package/dist/{chunk-3WYEENUH.js.map → chunk-FPNVOB52.js.map} +0 -0
- /package/dist/{chunk-E73C73UD.js.map → chunk-FYSS2PYA.js.map} +0 -0
- /package/dist/{chunk-N557OEZR.js.map → chunk-G6NMSBSQ.js.map} +0 -0
- /package/dist/{chunk-A5OERY43.js.map → chunk-GARM5SX6.js.map} +0 -0
- /package/dist/{chunk-66VKX6JE.js.map → chunk-GXGHEOWC.js.map} +0 -0
- /package/dist/{chunk-U2SAW6DH.js.map → chunk-GY53SDVL.js.map} +0 -0
- /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
- /package/dist/{chunk-CNUO2BRV.js.map → chunk-HWZETMO4.js.map} +0 -0
- /package/dist/{chunk-MM3QESLI.js.map → chunk-ILJ3FXIC.js.map} +0 -0
- /package/dist/{chunk-FWTVIRZZ.js.map → chunk-JVQ56E3U.js.map} +0 -0
- /package/dist/{chunk-YOLLISEY.js.map → chunk-JXK53XJW.js.map} +0 -0
- /package/dist/{chunk-K6VEN5VN.js.map → chunk-K3PMMW23.js.map} +0 -0
- /package/dist/{chunk-T5RFH2T5.js.map → chunk-KOGJBAFI.js.map} +0 -0
- /package/dist/{chunk-EKSJES5E.js.map → chunk-KXDLLS62.js.map} +0 -0
- /package/dist/{chunk-DBI6AMNY.js.map → chunk-LKWXU6NH.js.map} +0 -0
- /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
- /package/dist/{chunk-NXQ6PXLJ.js.map → chunk-LZ5PGB7U.js.map} +0 -0
- /package/dist/{chunk-5I75WRXT.js.map → chunk-N3GLX64O.js.map} +0 -0
- /package/dist/{chunk-6DO672AG.js.map → chunk-N5PVD4J5.js.map} +0 -0
- /package/dist/{chunk-PEAUGQKU.js.map → chunk-NQCTANF3.js.map} +0 -0
- /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
- /package/dist/{chunk-FQNDJITD.js.map → chunk-RCTHCXS6.js.map} +0 -0
- /package/dist/{chunk-VWRXSBT2.js.map → chunk-SB2SEGR6.js.map} +0 -0
- /package/dist/{chunk-Z2WZDVGG.js.map → chunk-SI5SKX52.js.map} +0 -0
- /package/dist/{chunk-RYJ6XGFA.js.map → chunk-SJAOQGQI.js.map} +0 -0
- /package/dist/{chunk-D7R6SRJB.js.map → chunk-SKQPUAMK.js.map} +0 -0
- /package/dist/{chunk-AMIUZRDQ.js.map → chunk-SNWCT6JN.js.map} +0 -0
- /package/dist/{chunk-7W5X3KQ2.js.map → chunk-SW7JCF4Z.js.map} +0 -0
- /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
- /package/dist/{chunk-BNBWUXT3.js.map → chunk-TE6HAWDM.js.map} +0 -0
- /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
- /package/dist/{chunk-Y3F2F36I.js.map → chunk-U4Z6GZDW.js.map} +0 -0
- /package/dist/{chunk-KQDBOZQE.js.map → chunk-UIIHUWOV.js.map} +0 -0
- /package/dist/{chunk-L4V7FZJI.js.map → chunk-UKUGSU3Y.js.map} +0 -0
- /package/dist/{chunk-D2JQF2WC.js.map → chunk-UOKXYV3U.js.map} +0 -0
- /package/dist/{chunk-K7IDOTSU.js.map → chunk-VNMD6BA4.js.map} +0 -0
- /package/dist/{chunk-DTZOP4ZR.js.map → chunk-XCUHGPPZ.js.map} +0 -0
- /package/dist/{chunk-DBPFKGXX.js.map → chunk-Y7BOP7VZ.js.map} +0 -0
- /package/dist/{chunk-BOADHYTA.js.map → chunk-YNZUYZ2O.js.map} +0 -0
- /package/dist/{chunk-XNAI7QGU.js.map → chunk-ZM6FJCWS.js.map} +0 -0
- /package/dist/{chunk-FC7UCFFA.js.map → chunk-ZPWPA6FR.js.map} +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
textFitOf
|
|
3
|
+
} from "./chunk-L5CAHQIN.js";
|
|
4
|
+
|
|
5
|
+
// src/components/data-display/DayRuler/useTextFits.ts
|
|
6
|
+
import { useLayoutEffect, useState } from "react";
|
|
7
|
+
function textWidth(span) {
|
|
8
|
+
if (!span) return Number.POSITIVE_INFINITY;
|
|
9
|
+
const range = span.ownerDocument.createRange();
|
|
10
|
+
range.selectNodeContents(span);
|
|
11
|
+
return range.getBoundingClientRect().width;
|
|
12
|
+
}
|
|
13
|
+
function measureFit(el) {
|
|
14
|
+
const full = el.querySelector('[data-dr-text="full"]');
|
|
15
|
+
if (!full) return null;
|
|
16
|
+
const short = el.querySelector('[data-dr-text="short"]');
|
|
17
|
+
const spans = [full, short].filter((span) => span !== null);
|
|
18
|
+
const shown = spans.map((span) => span.style.display);
|
|
19
|
+
for (const span of spans) span.style.display = "inline";
|
|
20
|
+
const fullWidth = textWidth(full);
|
|
21
|
+
const shortWidth = textWidth(short);
|
|
22
|
+
const style = getComputedStyle(el);
|
|
23
|
+
const outer = el.clientWidth;
|
|
24
|
+
const room = outer - Number.parseFloat(style.paddingLeft) - Number.parseFloat(style.paddingRight);
|
|
25
|
+
spans.forEach((span, index) => {
|
|
26
|
+
span.style.display = shown[index] ?? "";
|
|
27
|
+
});
|
|
28
|
+
if (room > 0) return textFitOf(fullWidth, shortWidth, room);
|
|
29
|
+
return outer > 0 ? "none" : null;
|
|
30
|
+
}
|
|
31
|
+
function useTextFit(block, text, short, fallback) {
|
|
32
|
+
const [fit, setFit] = useState(fallback);
|
|
33
|
+
useLayoutEffect(() => {
|
|
34
|
+
const el = block.current;
|
|
35
|
+
if (!el || typeof ResizeObserver === "undefined") return void 0;
|
|
36
|
+
let live = true;
|
|
37
|
+
let frame = 0;
|
|
38
|
+
const measure = () => {
|
|
39
|
+
frame = 0;
|
|
40
|
+
if (!live) return;
|
|
41
|
+
const next = measureFit(el);
|
|
42
|
+
if (next) setFit(next);
|
|
43
|
+
};
|
|
44
|
+
const schedule = () => {
|
|
45
|
+
if (frame || !live) return;
|
|
46
|
+
frame = typeof requestAnimationFrame === "function" ? requestAnimationFrame(measure) : 0;
|
|
47
|
+
if (!frame) measure();
|
|
48
|
+
};
|
|
49
|
+
measure();
|
|
50
|
+
const observer = new ResizeObserver(schedule);
|
|
51
|
+
observer.observe(el);
|
|
52
|
+
el.ownerDocument.fonts?.ready.then(schedule, () => void 0);
|
|
53
|
+
return () => {
|
|
54
|
+
live = false;
|
|
55
|
+
observer.disconnect();
|
|
56
|
+
if (frame && typeof cancelAnimationFrame === "function") cancelAnimationFrame(frame);
|
|
57
|
+
};
|
|
58
|
+
}, [block, text, short]);
|
|
59
|
+
return fit;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export {
|
|
63
|
+
useTextFit
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=chunk-WG7CAT5D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/useTextFits.ts"],"sourcesContent":["import type * as React from 'react';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { textFitOf, type BlockTextFit } from './day-ruler-model';\n\n/** A text span's own width (its laid-out text, whatever the span's own box). */\nfunction textWidth(span: HTMLElement | null): number {\n if (!span) return Number.POSITIVE_INFINITY;\n const range = span.ownerDocument.createRange();\n range.selectNodeContents(span);\n return range.getBoundingClientRect().width;\n}\n\n/**\n * The block's fit, measured in ONE layout: every write first (both texts\n * shown for the measurement alone), then every read, then the writes undone —\n * so a ruler of many blocks forces one layout per block, not one per text.\n * `null` when there is nothing to measure yet.\n */\nfunction measureFit(el: HTMLElement): BlockTextFit | null {\n const full = el.querySelector<HTMLElement>('[data-dr-text=\"full\"]');\n if (!full) return null;\n const short = el.querySelector<HTMLElement>('[data-dr-text=\"short\"]');\n const spans = [full, short].filter((span): span is HTMLElement => span !== null);\n const shown = spans.map((span) => span.style.display);\n for (const span of spans) span.style.display = 'inline';\n const fullWidth = textWidth(full);\n const shortWidth = textWidth(short);\n const style = getComputedStyle(el);\n const outer = el.clientWidth;\n const room = outer - Number.parseFloat(style.paddingLeft) - Number.parseFloat(style.paddingRight);\n spans.forEach((span, index) => {\n span.style.display = shown[index] ?? '';\n });\n if (room > 0) return textFitOf(fullWidth, shortWidth, room);\n // A bar with no room at all (narrower than its own padding) says nothing.\n return outer > 0 ? 'none' : null;\n}\n\n/**\n * Which of a block's texts fits it, by pixels (FUT-3825, FUT-3831): the full\n * text's and the short text's own widths against the room the block leaves\n * them. A wide block keeps \"18:00–23:00\"; one too short for it says its start\n * (\"18:00\"); one too short even for that says nothing — never a cut \"18:\".\n *\n * Measured at once (synchronously, so nothing is painted), then again on the\n * next frame whenever the block is resized, and once more when the page's\n * fonts have loaded: a webfont arriving late changes every text's width, and\n * a fit read in the fallback font would leave a label cut. Where nothing can\n * be measured (no `ResizeObserver`) it answers `fallback`.\n */\nexport function useTextFit(block: React.RefObject<HTMLElement | null>, text: string, short: string, fallback: BlockTextFit): BlockTextFit {\n const [fit, setFit] = useState<BlockTextFit>(fallback);\n\n useLayoutEffect(() => {\n const el = block.current;\n if (!el || typeof ResizeObserver === 'undefined') return undefined;\n let live = true;\n let frame = 0;\n const measure = (): void => {\n frame = 0;\n if (!live) return;\n const next = measureFit(el);\n if (next) setFit(next);\n };\n // Resizes and the fonts come in bursts: one measurement per frame.\n const schedule = (): void => {\n if (frame || !live) return;\n frame = typeof requestAnimationFrame === 'function' ? requestAnimationFrame(measure) : 0;\n if (!frame) measure();\n };\n measure();\n const observer = new ResizeObserver(schedule);\n observer.observe(el);\n el.ownerDocument.fonts?.ready.then(schedule, () => undefined);\n return () => {\n live = false;\n observer.disconnect();\n if (frame && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(frame);\n };\n }, [block, text, short]);\n\n return fit;\n}\n"],"mappings":";;;;;AACA,SAAS,iBAAiB,gBAAgB;AAK1C,SAAS,UAAU,MAAkC;AACnD,MAAI,CAAC,KAAM,QAAO,OAAO;AACzB,QAAM,QAAQ,KAAK,cAAc,YAAY;AAC7C,QAAM,mBAAmB,IAAI;AAC7B,SAAO,MAAM,sBAAsB,EAAE;AACvC;AAQA,SAAS,WAAW,IAAsC;AACxD,QAAM,OAAO,GAAG,cAA2B,uBAAuB;AAClE,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,GAAG,cAA2B,wBAAwB;AACpE,QAAM,QAAQ,CAAC,MAAM,KAAK,EAAE,OAAO,CAAC,SAA8B,SAAS,IAAI;AAC/E,QAAM,QAAQ,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,OAAO;AACpD,aAAW,QAAQ,MAAO,MAAK,MAAM,UAAU;AAC/C,QAAM,YAAY,UAAU,IAAI;AAChC,QAAM,aAAa,UAAU,KAAK;AAClC,QAAM,QAAQ,iBAAiB,EAAE;AACjC,QAAM,QAAQ,GAAG;AACjB,QAAM,OAAO,QAAQ,OAAO,WAAW,MAAM,WAAW,IAAI,OAAO,WAAW,MAAM,YAAY;AAChG,QAAM,QAAQ,CAAC,MAAM,UAAU;AAC7B,SAAK,MAAM,UAAU,MAAM,KAAK,KAAK;AAAA,EACvC,CAAC;AACD,MAAI,OAAO,EAAG,QAAO,UAAU,WAAW,YAAY,IAAI;AAE1D,SAAO,QAAQ,IAAI,SAAS;AAC9B;AAcO,SAAS,WAAW,OAA4C,MAAc,OAAe,UAAsC;AACxI,QAAM,CAAC,KAAK,MAAM,IAAI,SAAuB,QAAQ;AAErD,kBAAgB,MAAM;AACpB,UAAM,KAAK,MAAM;AACjB,QAAI,CAAC,MAAM,OAAO,mBAAmB,YAAa,QAAO;AACzD,QAAI,OAAO;AACX,QAAI,QAAQ;AACZ,UAAM,UAAU,MAAY;AAC1B,cAAQ;AACR,UAAI,CAAC,KAAM;AACX,YAAM,OAAO,WAAW,EAAE;AAC1B,UAAI,KAAM,QAAO,IAAI;AAAA,IACvB;AAEA,UAAM,WAAW,MAAY;AAC3B,UAAI,SAAS,CAAC,KAAM;AACpB,cAAQ,OAAO,0BAA0B,aAAa,sBAAsB,OAAO,IAAI;AACvF,UAAI,CAAC,MAAO,SAAQ;AAAA,IACtB;AACA,YAAQ;AACR,UAAM,WAAW,IAAI,eAAe,QAAQ;AAC5C,aAAS,QAAQ,EAAE;AACnB,OAAG,cAAc,OAAO,MAAM,KAAK,UAAU,MAAM,MAAS;AAC5D,WAAO,MAAM;AACX,aAAO;AACP,eAAS,WAAW;AACpB,UAAI,SAAS,OAAO,yBAAyB,WAAY,sBAAqB,KAAK;AAAA,IACrF;AAAA,EACF,GAAG,CAAC,OAAO,MAAM,KAAK,CAAC;AAEvB,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DAY_RULER_METRICS
|
|
3
|
+
} from "./chunk-273OLFJD.js";
|
|
4
|
+
import {
|
|
5
|
+
signalInk
|
|
6
|
+
} from "./chunk-3UAHDLKH.js";
|
|
7
|
+
import {
|
|
8
|
+
rem
|
|
9
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
10
|
+
|
|
11
|
+
// src/components/data-display/DayRuler/DayRuler.footer.styles.ts
|
|
12
|
+
function footerInk(theme, marked, plain) {
|
|
13
|
+
return marked ? signalInk(theme, "warning", theme.palette.background.default) : plain;
|
|
14
|
+
}
|
|
15
|
+
function footerCellSx(marked) {
|
|
16
|
+
return (theme) => ({
|
|
17
|
+
display: "flex",
|
|
18
|
+
alignItems: "center",
|
|
19
|
+
justifyContent: "center",
|
|
20
|
+
fontSize: rem(theme, DAY_RULER_METRICS.coverage.font),
|
|
21
|
+
borderRadius: rem(theme, DAY_RULER_METRICS.coverage.radius),
|
|
22
|
+
color: footerInk(theme, marked, theme.palette.text.primary),
|
|
23
|
+
fontWeight: marked ? 500 : 400,
|
|
24
|
+
// The hairline is always there, transparent when unmarked, so a mark never shifts a count.
|
|
25
|
+
border: `1px solid ${marked ? theme.palette.warning.main : "transparent"}`,
|
|
26
|
+
minWidth: 0,
|
|
27
|
+
overflow: "hidden"
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function footerNoteSx(marked) {
|
|
31
|
+
return (theme) => ({
|
|
32
|
+
fontSize: rem(theme, DAY_RULER_METRICS.meta),
|
|
33
|
+
color: footerInk(theme, marked, theme.palette.text.secondary),
|
|
34
|
+
fontWeight: marked ? 500 : 400,
|
|
35
|
+
...marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
var trendSx = (theme) => ({
|
|
39
|
+
display: "block",
|
|
40
|
+
width: "100%",
|
|
41
|
+
height: rem(theme, DAY_RULER_METRICS.coverage.height + DAY_RULER_METRICS.coverage.height / 2),
|
|
42
|
+
color: theme.palette.primary.main,
|
|
43
|
+
overflow: "visible"
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
footerInk,
|
|
48
|
+
footerCellSx,
|
|
49
|
+
footerNoteSx,
|
|
50
|
+
trendSx
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=chunk-WSSD7H5E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.footer.styles.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\n\nimport { rem } from '../../../tokens/relative';\nimport { signalInk } from '../ScheduleGrid/schedule-tones';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\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":";;;;;;;;;;;AAWO,SAAS,UAAU,OAAc,QAAiB,OAAuB;AAC9E,SAAO,SAAS,UAAU,OAAO,WAAW,MAAM,QAAQ,WAAW,OAAO,IAAI;AAClF;AAGO,SAAS,aAAa,QAAiC;AAC5D,SAAO,CAAC,WAAkB;AAAA,IACxB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU,IAAI,OAAO,kBAAE,SAAS,IAAI;AAAA,IACpC,cAAc,IAAI,OAAO,kBAAE,SAAS,MAAM;AAAA,IAC1C,OAAO,UAAU,OAAO,QAAQ,MAAM,QAAQ,KAAK,OAAO;AAAA,IAC1D,YAAY,SAAS,MAAM;AAAA;AAAA,IAE3B,QAAQ,aAAa,SAAS,MAAM,QAAQ,QAAQ,OAAO,aAAa;AAAA,IACxE,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF;AAOO,SAAS,aAAa,QAAiC;AAC5D,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU,IAAI,OAAO,kBAAE,IAAI;AAAA,IAC3B,OAAO,UAAU,OAAO,QAAQ,MAAM,QAAQ,KAAK,SAAS;AAAA,IAC5D,YAAY,SAAS,MAAM;AAAA,IAC3B,GAAI,SAAS,EAAE,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,MAAM,QAAQ,QAAQ,IAAI,IAAI,aAAa,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,EACrH;AACF;AAGO,IAAM,UAA0B,CAAC,WAAkB;AAAA,EACxD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,IAAI,OAAO,kBAAE,SAAS,SAAS,kBAAE,SAAS,SAAS,CAAC;AAAA,EAC5D,OAAO,MAAM,QAAQ,QAAQ;AAAA,EAC7B,UAAU;AACZ;","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CountedIcon,
|
|
5
5
|
controlProps,
|
|
6
6
|
focusRing
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-24HHUCWB.js";
|
|
8
8
|
import {
|
|
9
9
|
Drawer,
|
|
10
10
|
DrawerContent,
|
|
@@ -175,4 +175,4 @@ function SectionNavSheet({
|
|
|
175
175
|
export {
|
|
176
176
|
SectionNavSheet
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-XCUHGPPZ.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCardActions
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RCTHCXS6.js";
|
|
4
4
|
import {
|
|
5
5
|
ConfirmActionDialog
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SW7JCF4Z.js";
|
|
7
7
|
import {
|
|
8
8
|
useConfirmAction
|
|
9
9
|
} from "./chunk-EMYESBIT.js";
|
|
@@ -50,4 +50,4 @@ function useRemoveConfirm({
|
|
|
50
50
|
export {
|
|
51
51
|
useRemoveConfirm
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-Y7BOP7VZ.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-L7BRU4UF.js";
|
|
9
9
|
import {
|
|
10
10
|
Alert
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NQCTANF3.js";
|
|
12
12
|
import {
|
|
13
13
|
Button
|
|
14
14
|
} from "./chunk-YOXYSAUI.js";
|
|
@@ -106,4 +106,4 @@ NotificationStatusNotice.displayName = "NotificationStatusNotice";
|
|
|
106
106
|
export {
|
|
107
107
|
NotificationStatusNotice
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-YNZUYZ2O.js.map
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SequenceOverviewBody
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6D5AMANO.js";
|
|
4
4
|
import {
|
|
5
5
|
SequenceDoneBody,
|
|
6
6
|
SequenceIntroBody,
|
|
7
7
|
SequenceStepBody
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-BQBEN44R.js";
|
|
9
9
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
chromeSx,
|
|
14
|
-
columnSx,
|
|
15
|
-
paperSx,
|
|
16
|
-
scrollBodySx
|
|
17
|
-
} from "./chunk-2ORD2FMN.js";
|
|
10
|
+
ResolverFrame
|
|
11
|
+
} from "./chunk-CPQJFHNZ.js";
|
|
18
12
|
import {
|
|
19
13
|
SEQUENCE_METRICS
|
|
20
14
|
} from "./chunk-ALDS5ISD.js";
|
|
@@ -29,15 +23,11 @@ import {
|
|
|
29
23
|
progressOf,
|
|
30
24
|
summaryOf
|
|
31
25
|
} from "./chunk-KZ5F52D6.js";
|
|
32
|
-
import {
|
|
33
|
-
Dialog
|
|
34
|
-
} from "./chunk-DAFFZED3.js";
|
|
35
26
|
|
|
36
27
|
// src/components/feedback/SequenceResolver/SequenceResolver.tsx
|
|
37
|
-
import Box from "@mui/material/Box/index.js";
|
|
38
28
|
import { useTheme } from "@mui/material/styles/index.js";
|
|
39
29
|
import useMediaQuery from "@mui/material/useMediaQuery/index.js";
|
|
40
|
-
import { useCallback, useId, useRef, useState } from "react";
|
|
30
|
+
import { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
41
31
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
42
32
|
function headerLabelOf(props, run, current) {
|
|
43
33
|
const { labels } = props;
|
|
@@ -89,13 +79,6 @@ function headerOf(inputs) {
|
|
|
89
79
|
}
|
|
90
80
|
return { ...base, back: backOf(props, state), seeAll: overview.button };
|
|
91
81
|
}
|
|
92
|
-
function escapeCloses(close) {
|
|
93
|
-
return (event) => {
|
|
94
|
-
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
95
|
-
event.stopPropagation();
|
|
96
|
-
close();
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
82
|
function SequenceBody(body) {
|
|
100
83
|
const { props, state, current, step, overview, titleId, stepTitleRef, touch, testId, close } = body;
|
|
101
84
|
if (props.intro) {
|
|
@@ -137,6 +120,7 @@ function SequenceBody(body) {
|
|
|
137
120
|
] });
|
|
138
121
|
}
|
|
139
122
|
if (stepBody) return /* @__PURE__ */ jsx(Fragment, { children: stepBody });
|
|
123
|
+
if (props.done === null) return /* @__PURE__ */ jsx(Fragment, {});
|
|
140
124
|
const summary = summaryOf(state.run);
|
|
141
125
|
return /* @__PURE__ */ jsx(
|
|
142
126
|
SequenceDoneBody,
|
|
@@ -151,8 +135,51 @@ function SequenceBody(body) {
|
|
|
151
135
|
}
|
|
152
136
|
);
|
|
153
137
|
}
|
|
138
|
+
function useCloseAtEnd(ended, close) {
|
|
139
|
+
const closeRef = useRef(close);
|
|
140
|
+
const fired = useRef(false);
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
closeRef.current = close;
|
|
143
|
+
});
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
if (!ended) {
|
|
146
|
+
fired.current = false;
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (fired.current) return;
|
|
150
|
+
fired.current = true;
|
|
151
|
+
closeRef.current();
|
|
152
|
+
}, [ended]);
|
|
153
|
+
return ended;
|
|
154
|
+
}
|
|
155
|
+
function useExitScreen(live, input) {
|
|
156
|
+
const { open, hasStep, closesAtEnd } = input;
|
|
157
|
+
const last = useRef(null);
|
|
158
|
+
const wasOpen = useRef(open);
|
|
159
|
+
if (open && !wasOpen.current) last.current = null;
|
|
160
|
+
wasOpen.current = open;
|
|
161
|
+
if (!closesAtEnd) return live;
|
|
162
|
+
if (open && hasStep) {
|
|
163
|
+
last.current = live;
|
|
164
|
+
return live;
|
|
165
|
+
}
|
|
166
|
+
const kept = last.current;
|
|
167
|
+
if (!kept) return live;
|
|
168
|
+
const { header } = kept;
|
|
169
|
+
if (!("back" in header) || !header.back) return kept;
|
|
170
|
+
return { ...kept, header: { ...header, back: { ...header.back, onClick: () => void 0 } } };
|
|
171
|
+
}
|
|
172
|
+
function useRunEnding(props, state) {
|
|
173
|
+
const { open, onClose, intro } = props;
|
|
174
|
+
const { run } = state;
|
|
175
|
+
const current = intro ? void 0 : currentOf(run);
|
|
176
|
+
const close = () => onClose(summaryOf(run));
|
|
177
|
+
const closesAtEnd = props.done === null && !intro;
|
|
178
|
+
const ended = useCloseAtEnd(open && closesAtEnd && !current, close);
|
|
179
|
+
return { current, close, ended, exiting: ended || !open && closesAtEnd };
|
|
180
|
+
}
|
|
154
181
|
function SequenceResolver(props) {
|
|
155
|
-
const { open,
|
|
182
|
+
const { open, intro, labels } = props;
|
|
156
183
|
const testId = props.dataTestId ?? "sequence-resolver";
|
|
157
184
|
const theme = useTheme();
|
|
158
185
|
const touch = useMediaQuery(theme.breakpoints.down(SEQUENCE_METRICS.sheetBreakpoint));
|
|
@@ -171,53 +198,44 @@ function SequenceResolver(props) {
|
|
|
171
198
|
failed: labels.failed,
|
|
172
199
|
stepAllowsBack: () => stepAllowsBack.current
|
|
173
200
|
});
|
|
174
|
-
const
|
|
175
|
-
const current
|
|
176
|
-
const close = () => onClose(summaryOf(run));
|
|
201
|
+
const ending = useRunEnding(props, state);
|
|
202
|
+
const { current, close } = ending;
|
|
177
203
|
const overview = useOverview(props, state, current, open);
|
|
178
204
|
const titleProps = { id: overview.shown ? `${titleId}-kept` : titleId, tabIndex: -1, ref: titleRef };
|
|
179
205
|
const step = current ? props.renderStep(current, stepApiOf(state, titleProps)) : void 0;
|
|
180
206
|
stepAllowsBack.current = step?.canGoBack !== false;
|
|
207
|
+
const screen = useExitScreen(
|
|
208
|
+
{
|
|
209
|
+
header: headerOf({ props, state, current, overview, titleId }),
|
|
210
|
+
body: /* @__PURE__ */ jsx(
|
|
211
|
+
SequenceBody,
|
|
212
|
+
{
|
|
213
|
+
props,
|
|
214
|
+
state,
|
|
215
|
+
current,
|
|
216
|
+
step,
|
|
217
|
+
overview,
|
|
218
|
+
titleId,
|
|
219
|
+
stepTitleRef,
|
|
220
|
+
touch,
|
|
221
|
+
testId,
|
|
222
|
+
close
|
|
223
|
+
}
|
|
224
|
+
)
|
|
225
|
+
},
|
|
226
|
+
{ open, hasStep: current !== void 0 && step !== void 0, closesAtEnd: props.done === null && !intro }
|
|
227
|
+
);
|
|
181
228
|
return /* @__PURE__ */ jsx(
|
|
182
|
-
|
|
229
|
+
ResolverFrame,
|
|
183
230
|
{
|
|
184
|
-
open,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
dataTestId: testId,
|
|
193
|
-
children: /* @__PURE__ */ jsxs(Box, { sx: columnSx, children: [
|
|
194
|
-
/* @__PURE__ */ jsx(Box, { sx: chromeSx, children: /* @__PURE__ */ jsx(
|
|
195
|
-
SequenceHeader,
|
|
196
|
-
{
|
|
197
|
-
touch,
|
|
198
|
-
...headerOf({ props, state, current, overview, titleId }),
|
|
199
|
-
closeLabel: labels.close,
|
|
200
|
-
onClose: close,
|
|
201
|
-
progressLabel: labels.progress,
|
|
202
|
-
testId
|
|
203
|
-
}
|
|
204
|
-
) }),
|
|
205
|
-
/* @__PURE__ */ jsx(Box, { sx: scrollBodySx, "data-testid": `${testId}-body`, children: /* @__PURE__ */ jsx(
|
|
206
|
-
SequenceBody,
|
|
207
|
-
{
|
|
208
|
-
props,
|
|
209
|
-
state,
|
|
210
|
-
current,
|
|
211
|
-
step,
|
|
212
|
-
overview,
|
|
213
|
-
titleId,
|
|
214
|
-
stepTitleRef,
|
|
215
|
-
touch,
|
|
216
|
-
testId,
|
|
217
|
-
close
|
|
218
|
-
}
|
|
219
|
-
) })
|
|
220
|
-
] })
|
|
231
|
+
shown: open && !ending.ended,
|
|
232
|
+
exiting: ending.exiting,
|
|
233
|
+
touch,
|
|
234
|
+
titleId,
|
|
235
|
+
testId,
|
|
236
|
+
labels,
|
|
237
|
+
screen,
|
|
238
|
+
close
|
|
221
239
|
}
|
|
222
240
|
);
|
|
223
241
|
}
|
|
@@ -225,4 +243,4 @@ function SequenceResolver(props) {
|
|
|
225
243
|
export {
|
|
226
244
|
SequenceResolver
|
|
227
245
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
246
|
+
//# sourceMappingURL=chunk-ZBUMGMWP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"sourcesContent":["'use client';\n\nimport { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport React, { useCallback, useEffect, useId, useRef, useState } from 'react';\n\nimport { canReturn, currentOf, jumpTargetOf, positionOf, progressOf, summaryOf, type RunState } from './sequence-model';\nimport {\n SequenceDoneBody,\n SequenceIntroBody,\n SequenceStepBody,\n} from './SequenceResolver.parts';\nimport { SequenceOverviewBody } from './SequenceResolver.overview';\nimport { ResolverFrame } from './SequenceResolver.frame';\nimport { SEQUENCE_METRICS } from './SequenceResolver.metrics';\nimport type {\n SequenceItem,\n SequenceOverviewCategory,\n SequenceResolverProps,\n SequenceStep,\n SequenceStepApi,\n} from './SequenceResolver.types';\nimport { useSequenceRun, type SequenceRun } from './useSequenceRun';\n\n/** What the header's label says on the screen showing. */\nfunction headerLabelOf<I extends SequenceItem, R>(\n props: SequenceResolverProps<I, R>,\n run: RunState<I, R>,\n current: I | undefined,\n): string {\n const { labels } = props;\n if (props.intro) return labels.introStep;\n if (!current) return labels.doneStep;\n return labels.step(positionOf(run), summaryOf(run).total, current);\n}\n\n/** The header's back button, once a previous step exists and the host allows it. */\nfunction backOf<I extends SequenceItem, R>(props: SequenceResolverProps<I, R>, state: SequenceRun<I, R>) {\n const { intro, labels, canGoBack = true } = props;\n if (intro || !canGoBack || !canReturn(state.run)) return undefined;\n return { label: labels.back, accessible: labels.backAccessible, onClick: state.back, disabled: state.busy };\n}\n\ninterface OverviewState {\n /** The overview is on screen instead of the step. */\n shown: boolean;\n /** The header's \"Ver todos (N)\", while there is a step and more than one problem. */\n button?: { label: string; onClick: () => void; disabled: boolean };\n canPick: (category: SequenceOverviewCategory) => boolean;\n pick: (category: SequenceOverviewCategory) => void;\n hide: () => void;\n /** The overview's title (in the header row): focus goes to it when it opens. */\n titleRef: React.RefObject<HTMLHeadingElement | null>;\n}\n\n/**\n * \"Ver todos\" inside the run: whether it shows, its header button, and its\n * picks. Opening it changes nothing in the run; a pick jumps; \"continue\"\n * returns to the step it left. Every opening of the resolver starts closed.\n */\nfunction useOverview<I extends SequenceItem, R>(\n props: SequenceResolverProps<I, R>,\n state: SequenceRun<I, R>,\n current: I | undefined,\n open: boolean,\n): OverviewState {\n const [shown, setShown] = useState(false);\n const [wasOpen, setWasOpen] = useState(open);\n const titleRef = useRef<HTMLHeadingElement | null>(null);\n if (wasOpen !== open) {\n setWasOpen(open);\n if (shown) setShown(false);\n }\n const { overview } = props;\n const total = summaryOf(state.run).total;\n const available = Boolean(overview && current && total > 1);\n const hide = (): void => setShown(false);\n return {\n shown: shown && available,\n button:\n available && overview\n ? { label: overview.label(total), onClick: () => setShown(true), disabled: state.busy }\n : undefined,\n canPick: (category) => jumpTargetOf(state.run, category.keys) !== undefined,\n pick: (category) => {\n const target = jumpTargetOf(state.run, category.keys);\n if (target === undefined) return;\n state.jumpTo(target);\n setShown(false);\n category.onPick?.();\n },\n hide,\n titleRef,\n };\n}\n\n/** What the host's `renderStep` gets: the run's verbs, `busy`, and the props for its title. */\nfunction stepApiOf<I extends SequenceItem, R>(\n state: SequenceRun<I, R>,\n titleProps: SequenceStepApi<R>['titleProps'],\n): SequenceStepApi<R> {\n return { resolve: state.resolve, skip: state.skip, back: state.back, jumpTo: state.jumpTo, busy: state.busy, titleProps };\n}\n\ninterface HeaderInputs<I extends SequenceItem, R> {\n props: SequenceResolverProps<I, R>;\n state: SequenceRun<I, R>;\n current: I | undefined;\n overview: OverviewState;\n titleId: string;\n}\n\n/** The header's back, \"Ver todos\" and label — or, over the overview, its title and close alone. */\nfunction headerOf<I extends SequenceItem, R>(inputs: HeaderInputs<I, R>) {\n const { props, state, current, overview, titleId } = inputs;\n const run = state.run;\n const base = { label: headerLabelOf(props, run, current), progress: props.intro ? 0 : progressOf(run) };\n if (overview.shown && props.overview) {\n return { ...base, title: { id: titleId, text: props.overview.title, ref: overview.titleRef } };\n }\n return { ...base, back: backOf(props, state), seeAll: overview.button };\n}\n\ninterface BodyProps<I extends SequenceItem, R> {\n props: SequenceResolverProps<I, R>;\n state: SequenceRun<I, R>;\n current: I | undefined;\n /** The step on screen, rendered once by the resolver (it also reads `canGoBack` from it). */\n step: SequenceStep | undefined;\n overview: OverviewState;\n titleId: string;\n stepTitleRef: React.RefObject<HTMLElement | null>;\n touch: boolean;\n testId: string;\n close: () => void;\n}\n\n/** The intro, the step on screen, or the end screen. */\nfunction SequenceBody<I extends SequenceItem, R>(body: BodyProps<I, R>): React.JSX.Element {\n const { props, state, current, step, overview, titleId, stepTitleRef, touch, testId, close } = body;\n if (props.intro) {\n return <SequenceIntroBody intro={props.intro} titleId={titleId} testId={testId} screenKey=\"intro\" />;\n }\n const stepBody =\n current && step ? (\n <SequenceStepBody\n key={`step:${current.key}`}\n step={step}\n skip={{ label: props.labels.skip, onClick: state.skip }}\n busy={state.busy}\n error={state.error}\n touch={touch}\n testId={testId}\n screenKey={`step:${current.key}`}\n titleRef={stepTitleRef}\n hidden={overview.shown}\n />\n ) : null;\n if (overview.shown && props.overview) {\n // The step stays mounted under the overview, so a half-filled answer survives \"continue\".\n return (\n <>\n <SequenceOverviewBody\n key=\"overview\"\n categories={props.overview.categories}\n canPick={overview.canPick}\n onPick={overview.pick}\n pickLabel={props.overview.pickLabel}\n continueLabel={props.overview.continueLabel}\n onContinue={overview.hide}\n titleRef={overview.titleRef}\n touch={touch}\n testId={testId}\n />\n {stepBody}\n </>\n );\n }\n if (stepBody) return <>{stepBody}</>;\n // `done: null`: no end screen — the resolver is closing over its last step (see `useExitScreen`).\n if (props.done === null) return <></>;\n const summary = summaryOf(state.run);\n return (\n <SequenceDoneBody\n done={typeof props.done === 'function' ? props.done(summary) : props.done}\n titleId={titleId}\n error={state.error}\n touch={touch}\n onConfirm={close}\n testId={testId}\n screenKey=\"done\"\n />\n );\n}\n\n/**\n * With `done: null`, the run's end closes the resolver: `onClose(summary)`\n * once, when the queue runs out while it is open and past the intro. Returns\n * whether the run has ended that way, so the dialog starts closing in the same\n * render (and keeps its last screen for the exit, see `useExitScreen`).\n *\n * `fired` makes it once per ending: StrictMode replays a mount's effects, and\n * a resolver mounted open over an empty queue would otherwise close twice. It\n * resets when the run is live again (a reopening, a queue that grew back).\n */\nfunction useCloseAtEnd(ended: boolean, close: () => void): boolean {\n const closeRef = useRef(close);\n const fired = useRef(false);\n useEffect(() => {\n closeRef.current = close;\n });\n useEffect(() => {\n if (!ended) {\n fired.current = false;\n return;\n }\n if (fired.current) return;\n fired.current = true;\n closeRef.current();\n }, [ended]);\n return ended;\n}\n\nexport interface Screen {\n header: ReturnType<typeof headerOf>;\n body: React.JSX.Element;\n}\n\n/**\n * What the dialog shows. While a step is on screen, that screen — and it is\n * kept: when the run ends with `done: null` the dialog closes in that same\n * render, and its exit transition (a fade, the sheet sliding down) plays over\n * the LAST step as it was — its label, Back, progress and body — rather than\n * an empty, collapsed \"done\" paper — also once the host turns `open` off from\n * `onClose`. Back is inert during the exit.\n */\nfunction useExitScreen(live: Screen, input: { open: boolean; hasStep: boolean; closesAtEnd: boolean }): Screen {\n const { open, hasStep, closesAtEnd } = input;\n const last = useRef<Screen | null>(null);\n const wasOpen = useRef(open);\n // A new opening is a new run: the last one's screen is not kept into it.\n if (open && !wasOpen.current) last.current = null;\n wasOpen.current = open;\n if (!closesAtEnd) return live;\n if (open && hasStep) {\n last.current = live;\n return live;\n }\n // Ended (or closed by the host after `onClose`): the exit plays over the last step.\n const kept = last.current;\n if (!kept) return live;\n const { header } = kept;\n if (!('back' in header) || !header.back) return kept;\n return { ...kept, header: { ...header, back: { ...header.back, onClick: () => undefined } } };\n}\n\ninterface RunEnding<I extends SequenceItem> {\n current: I | undefined;\n close: () => void;\n /** The run ended with `done: null`: the dialog is closing. */\n ended: boolean;\n /** The kept last step is playing its exit. */\n exiting: boolean;\n}\n\nfunction useRunEnding<I extends SequenceItem, R>(\n props: SequenceResolverProps<I, R>,\n state: SequenceRun<I, R>,\n): RunEnding<I> {\n const { open, onClose, intro } = props;\n const { run } = state;\n const current = intro ? undefined : currentOf(run);\n const close = (): void => onClose(summaryOf(run));\n const closesAtEnd = props.done === null && !intro;\n const ended = useCloseAtEnd(open && closesAtEnd && !current, close);\n return { current, close, ended, exiting: ended || (!open && closesAtEnd) };\n}\n\n/**\n * Resolve a queue of problems one at a time, in ONE dialog whose body is\n * replaced step by step: a header with \"‹ Back\", the step's label and close,\n * a progress bar, the host's step, and an end screen (FUT-3671) — or none,\n * with `done: null`: the run's end closes it (FUT-3833).\n *\n * A centred `Dialog` from the `sm` breakpoint up; the `Dialog` inset\n * bottom-sheet variant below it, never taller than 95% of the viewport. Either\n * way the paper scrolls inside the viewport, so a long step is never cut off.\n *\n * The component owns the run — which step is on screen, what was answered or\n * skipped, where Back returns to — and nothing about the domain: every step\n * body, every word and every server call is the host's.\n */\nexport function SequenceResolver<I extends SequenceItem, R = unknown>(\n props: SequenceResolverProps<I, R>,\n): React.JSX.Element {\n const { open, intro, labels } = props;\n const testId = props.dataTestId ?? 'sequence-resolver';\n const theme = useTheme();\n const touch = useMediaQuery(theme.breakpoints.down(SEQUENCE_METRICS.sheetBreakpoint));\n const titleId = `${useId()}-title`;\n const stepTitleRef = useRef<HTMLElement | null>(null);\n const titleRef = useCallback((node: HTMLElement | null) => {\n stepTitleRef.current = node;\n }, []);\n\n // Read when an answer is recorded: the step on screen's own `canGoBack`.\n const stepAllowsBack = useRef(true);\n const state = useSequenceRun<I, R>({\n open,\n active: open && !intro,\n queue: props.queue,\n initialKey: props.initialKey,\n onBack: props.onBack,\n failed: labels.failed,\n stepAllowsBack: () => stepAllowsBack.current,\n });\n const ending = useRunEnding(props, state);\n const { current, close } = ending;\n const overview = useOverview(props, state, current, open);\n // Under the overview the step is kept but hidden, and the overview's title names the dialog.\n const titleProps = { id: overview.shown ? `${titleId}-kept` : titleId, tabIndex: -1, ref: titleRef } as const;\n const step = current ? props.renderStep(current, stepApiOf(state, titleProps)) : undefined;\n stepAllowsBack.current = step?.canGoBack !== false;\n const screen = useExitScreen(\n {\n header: headerOf({ props, state, current, overview, titleId }),\n body: (\n <SequenceBody\n props={props}\n state={state}\n current={current}\n step={step}\n overview={overview}\n titleId={titleId}\n stepTitleRef={stepTitleRef}\n touch={touch}\n testId={testId}\n close={close}\n />\n ),\n },\n { open, hasStep: current !== undefined && step !== undefined, closesAtEnd: props.done === null && !intro },\n );\n\n return (\n <ResolverFrame\n shown={open && !ending.ended}\n exiting={ending.exiting}\n touch={touch}\n titleId={titleId}\n testId={testId}\n labels={labels}\n screen={screen}\n close={close}\n />\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
CardBody
|
|
6
6
|
} from "./chunk-4ZQQUICR.js";
|
|
7
|
-
import {
|
|
8
|
-
SelectAllStrip
|
|
9
|
-
} from "./chunk-OY437NRJ.js";
|
|
10
7
|
import {
|
|
11
8
|
toGridExpansion
|
|
12
9
|
} from "./chunk-O5UGAL2V.js";
|
|
10
|
+
import {
|
|
11
|
+
SelectAllStrip
|
|
12
|
+
} from "./chunk-OY437NRJ.js";
|
|
13
13
|
import {
|
|
14
14
|
useStickyTableHead
|
|
15
15
|
} from "./chunk-4IE66GY2.js";
|
|
@@ -250,4 +250,4 @@ function GridMain(props) {
|
|
|
250
250
|
export {
|
|
251
251
|
GridMain
|
|
252
252
|
};
|
|
253
|
-
//# sourceMappingURL=chunk-
|
|
253
|
+
//# sourceMappingURL=chunk-ZM6FJCWS.js.map
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NumberBoundInput
|
|
3
|
+
} from "./chunk-2FKWKLSC.js";
|
|
1
4
|
import {
|
|
2
5
|
RangePresets
|
|
3
6
|
} from "./chunk-LZNUBQ5I.js";
|
|
4
7
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
isRangeInverted,
|
|
9
|
+
isRangeSet,
|
|
10
|
+
rangeChipLabel
|
|
11
|
+
} from "./chunk-GCZJH4XL.js";
|
|
7
12
|
import {
|
|
8
13
|
useOutsideResetKey
|
|
9
14
|
} from "./chunk-YOPMXGHY.js";
|
|
@@ -13,11 +18,6 @@ import {
|
|
|
13
18
|
import {
|
|
14
19
|
DayRangeCalendar
|
|
15
20
|
} from "./chunk-HRES2S3Q.js";
|
|
16
|
-
import {
|
|
17
|
-
isRangeInverted,
|
|
18
|
-
isRangeSet,
|
|
19
|
-
rangeChipLabel
|
|
20
|
-
} from "./chunk-GCZJH4XL.js";
|
|
21
21
|
import {
|
|
22
22
|
useDataViewsCopy
|
|
23
23
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -189,4 +189,4 @@ function RangeBounds({
|
|
|
189
189
|
export {
|
|
190
190
|
RangeBounds
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-ZPWPA6FR.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../chunk-NUGT7LMR.js";
|
|
2
2
|
import {
|
|
3
3
|
Alert
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-NQCTANF3.js";
|
|
5
|
+
import "../chunk-L5RS6QAT.js";
|
|
5
6
|
import "../chunk-QXUXO22M.js";
|
|
6
7
|
import "../chunk-7HZ36QDH.js";
|
|
7
|
-
import "../chunk-L5RS6QAT.js";
|
|
8
8
|
import "../chunk-L7VH6IMR.js";
|
|
9
9
|
import "../chunk-5ZY3IIIG.js";
|
|
10
10
|
import "../chunk-TYJR4GOF.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "../chunk-2IBFEHIX.js";
|
|
2
2
|
import {
|
|
3
3
|
AlertDialog
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-OGSTMHT6.js";
|
|
5
|
+
import "../chunk-KURE5R7Z.js";
|
|
6
6
|
import "../chunk-XOXXG7Q5.js";
|
|
7
7
|
import "../chunk-XJAD6E3V.js";
|
|
8
8
|
import "../chunk-F5H2ZXST.js";
|
|
@@ -2,11 +2,11 @@ import "../chunk-UDQSIRAP.js";
|
|
|
2
2
|
import {
|
|
3
3
|
Avatar,
|
|
4
4
|
AvatarGroup
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-EOQ6EKTS.js";
|
|
7
|
-
import "../chunk-6ZZGK5DT.js";
|
|
5
|
+
} from "../chunk-4J62V5OE.js";
|
|
8
6
|
import "../chunk-3ZVUNSFF.js";
|
|
7
|
+
import "../chunk-7XSCEHGA.js";
|
|
9
8
|
import "../chunk-MTEQEPNY.js";
|
|
9
|
+
import "../chunk-6ZZGK5DT.js";
|
|
10
10
|
import "../chunk-XOXXG7Q5.js";
|
|
11
11
|
import "../chunk-XJAD6E3V.js";
|
|
12
12
|
import "../chunk-F5H2ZXST.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../chunk-5AK2EZG5.js";
|
|
2
2
|
import {
|
|
3
3
|
Badge
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-N5PVD4J5.js";
|
|
5
|
+
import "../chunk-6C5D6O3D.js";
|
|
5
6
|
import "../chunk-ZNCYCE7L.js";
|
|
6
7
|
import "../chunk-2L3VRVRE.js";
|
|
7
8
|
import "../chunk-BJE3XHD4.js";
|
|
8
|
-
import "../chunk-6C5D6O3D.js";
|
|
9
9
|
import "../chunk-3UIDKLML.js";
|
|
10
10
|
import "../chunk-PYC4CWCQ.js";
|
|
11
11
|
import "../chunk-TYJR4GOF.js";
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useRowConfirm
|
|
3
|
+
} from "../chunk-G6NMSBSQ.js";
|
|
4
|
+
import {
|
|
5
|
+
useRemoveConfirm
|
|
6
|
+
} from "../chunk-Y7BOP7VZ.js";
|
|
1
7
|
import {
|
|
2
8
|
rowActionsToMenuItems
|
|
3
9
|
} from "../chunk-ZBXG6RVJ.js";
|
|
@@ -8,38 +14,32 @@ import {
|
|
|
8
14
|
Ledger,
|
|
9
15
|
TagList
|
|
10
16
|
} from "../chunk-JOKWTRWL.js";
|
|
11
|
-
import {
|
|
12
|
-
CardKebab
|
|
13
|
-
} from "../chunk-R2ODLE6G.js";
|
|
14
|
-
import {
|
|
15
|
-
useRowConfirm
|
|
16
|
-
} from "../chunk-N557OEZR.js";
|
|
17
|
-
import {
|
|
18
|
-
useRemoveConfirm
|
|
19
|
-
} from "../chunk-DBPFKGXX.js";
|
|
20
17
|
import {
|
|
21
18
|
CardActionsProvider,
|
|
22
19
|
useCardActions
|
|
23
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-RCTHCXS6.js";
|
|
21
|
+
import {
|
|
22
|
+
CardKebab
|
|
23
|
+
} from "../chunk-R2ODLE6G.js";
|
|
24
24
|
import "../chunk-WVML3ENZ.js";
|
|
25
25
|
import "../chunk-AY5GKCH7.js";
|
|
26
26
|
import "../chunk-XCBQXSTR.js";
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-KOGJBAFI.js";
|
|
28
|
+
import "../chunk-3TZUZXY5.js";
|
|
29
|
+
import "../chunk-TE6HAWDM.js";
|
|
30
|
+
import "../chunk-SW7JCF4Z.js";
|
|
31
31
|
import "../chunk-EMYESBIT.js";
|
|
32
32
|
import "../chunk-LZRVUOMU.js";
|
|
33
33
|
import "../chunk-EEB66IVH.js";
|
|
34
34
|
import "../chunk-NUGT7LMR.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-NQCTANF3.js";
|
|
36
|
+
import "../chunk-L5RS6QAT.js";
|
|
36
37
|
import "../chunk-QXUXO22M.js";
|
|
37
38
|
import "../chunk-7HZ36QDH.js";
|
|
38
|
-
import "../chunk-L5RS6QAT.js";
|
|
39
39
|
import "../chunk-L7VH6IMR.js";
|
|
40
40
|
import "../chunk-2IBFEHIX.js";
|
|
41
|
-
import "../chunk-
|
|
42
|
-
import "../chunk-
|
|
41
|
+
import "../chunk-OGSTMHT6.js";
|
|
42
|
+
import "../chunk-KURE5R7Z.js";
|
|
43
43
|
import "../chunk-5ZY3IIIG.js";
|
|
44
44
|
import "../chunk-6DPAWXZ3.js";
|
|
45
45
|
import "../chunk-BA4RHQ3B.js";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "../chunk-62FET2BM.js";
|
|
2
2
|
import {
|
|
3
3
|
Carousel
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-GY53SDVL.js";
|
|
5
|
+
import "../chunk-TB5CRHTF.js";
|
|
5
6
|
import "../chunk-Z64TMGYT.js";
|
|
6
7
|
import "../chunk-6FDLBWTE.js";
|
|
7
|
-
import "../chunk-RUIV5TVA.js";
|
|
8
|
-
import "../chunk-TB5CRHTF.js";
|
|
9
8
|
import {
|
|
10
9
|
CarouselArrows,
|
|
11
10
|
CarouselIndicators,
|
|
12
11
|
CarouselThumbnails
|
|
13
12
|
} from "../chunk-M2M4IDFU.js";
|
|
13
|
+
import "../chunk-RUIV5TVA.js";
|
|
14
14
|
import "../chunk-ARGVUTTL.js";
|
|
15
15
|
import "../chunk-PZS7N74L.js";
|
|
16
16
|
import "../chunk-AA2X5GOT.js";
|