@12-apps/ui 6.38.0 → 6.39.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/dist/_internal/components/data-display/DataGrid/DataGrid.body.js +3 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.cells.js +2 -1
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +4 -4
- package/dist/_internal/components/data-display/DataGrid/DataGrid.model.js +2 -1
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +19 -19
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +26 -26
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-overflow-costs.js +4 -3
- package/dist/_internal/components/data-display/DataViews/data-views-overflow.js +3 -2
- 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 +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
- 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 +3 -3
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +9 -9
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -8
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +10 -10
- package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -7
- package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/mapProjection.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
- package/dist/_internal/components/data-display/Table/Table.helpers.js +5 -3
- package/dist/_internal/components/data-display/Table/Table.hooks.js +2 -1
- package/dist/_internal/components/data-display/Table/Table.js +4 -4
- package/dist/_internal/components/data-display/Table/TableParts.hooks.js +4 -2
- package/dist/_internal/components/data-display/Table/TableParts.js +4 -2
- package/dist/_internal/components/data-display/index.js +18 -18
- package/dist/_internal/components/form/Calendar/Calendar.js +5 -4
- package/dist/_internal/components/form/Calendar/CalendarDay.js +2 -1
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +3 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +4 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -5
- package/dist/_internal/components/form/Switch/Switch.js +4 -4
- package/dist/_internal/components/form/Switch/Switch.metrics.js +5 -1
- package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
- package/dist/_internal/components/form/index.js +9 -9
- package/dist/_internal/components/index.js +37 -37
- package/dist/_internal/components/layout/CardGrid/CardGrid.js +2 -1
- package/dist/_internal/components/layout/Resizable/Resizable.helpers.js +8 -3
- package/dist/_internal/components/layout/Resizable/Resizable.hooks.js +3 -2
- package/dist/_internal/components/layout/Resizable/Resizable.js +4 -3
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.helpers.js +1 -1
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
- package/dist/_internal/components/layout/index.js +5 -5
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.hooks.js +1 -1
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +4 -3
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -1
- package/dist/_internal/components/utility/VirtualList/VirtualList.hooks.js +6 -3
- package/dist/_internal/components/utility/VirtualList/VirtualList.js +3 -2
- package/dist/_internal/components/utility/index.js +5 -5
- package/dist/{chunk-J2DAQQQH.js → chunk-222HN7GK.js} +33 -64
- package/dist/chunk-222HN7GK.js.map +1 -0
- package/dist/{chunk-MR2HKBHS.js → chunk-27LOJVR3.js} +2 -2
- package/dist/{chunk-S3D5VBHW.js → chunk-3YOXVNO4.js} +7 -7
- package/dist/{chunk-CZIX4BW2.js → chunk-4ALF5PB5.js} +3 -3
- package/dist/{chunk-XJPJ6ESI.js → chunk-4OAKGKK5.js} +3 -3
- package/dist/{chunk-4CHROSWR.js → chunk-5ETBB2DG.js} +2 -2
- package/dist/{chunk-ATSHKSSD.js → chunk-5KNDAC24.js} +20 -7
- package/dist/chunk-5KNDAC24.js.map +1 -0
- package/dist/{chunk-ULTOQ6ZV.js → chunk-5LWB4BYX.js} +80 -89
- package/dist/chunk-5LWB4BYX.js.map +1 -0
- package/dist/{chunk-46UPILLK.js → chunk-5NT2M2JI.js} +2 -2
- package/dist/{chunk-H5BEWPEY.js → chunk-6N2EDWMG.js} +2 -2
- package/dist/{chunk-GJQYM3PM.js → chunk-6PU3JYVY.js} +2 -2
- package/dist/{chunk-PUBPZOQJ.js → chunk-AG3DY5TH.js} +8 -5
- package/dist/chunk-AG3DY5TH.js.map +1 -0
- package/dist/{chunk-PPRV4LTM.js → chunk-BWHOCNGW.js} +4 -4
- package/dist/chunk-BWHOCNGW.js.map +1 -0
- package/dist/{chunk-TUBCN4DJ.js → chunk-CB6DTWD5.js} +7 -7
- package/dist/chunk-CB6DTWD5.js.map +1 -0
- package/dist/{chunk-ZAY6OA6F.js → chunk-D4FZ3ANG.js} +15 -5
- package/dist/chunk-D4FZ3ANG.js.map +1 -0
- package/dist/{chunk-Y7F5JBAT.js → chunk-DDRKYNPB.js} +2 -2
- package/dist/{chunk-DLJGBJZW.js → chunk-DGMDQHMI.js} +16 -9
- package/dist/chunk-DGMDQHMI.js.map +1 -0
- package/dist/{chunk-IAGOUTI6.js → chunk-DNT5PZLF.js} +21 -12
- package/dist/chunk-DNT5PZLF.js.map +1 -0
- package/dist/{chunk-DZA7RSLX.js → chunk-DVSO3EG6.js} +19 -11
- package/dist/chunk-DVSO3EG6.js.map +1 -0
- package/dist/{chunk-OS6KPL4D.js → chunk-EHYI2WCJ.js} +4 -4
- package/dist/{chunk-NB3FGWU4.js → chunk-EQXIW5MQ.js} +2 -2
- package/dist/{chunk-C66RGVAS.js → chunk-ERY6D2OV.js} +6 -4
- package/dist/chunk-ERY6D2OV.js.map +1 -0
- package/dist/{chunk-M2JTIH5M.js → chunk-F44R7US6.js} +2 -2
- package/dist/{chunk-AROBXRC5.js → chunk-F7JTIHV5.js} +18 -7
- package/dist/chunk-F7JTIHV5.js.map +1 -0
- package/dist/{chunk-XJJXBUPN.js → chunk-FX26DAFF.js} +2 -2
- package/dist/{chunk-R6SN73RX.js → chunk-GLHNMTP6.js} +7 -7
- package/dist/{chunk-YU26GBNX.js → chunk-H3AQQOTI.js} +9 -4
- package/dist/chunk-H3AQQOTI.js.map +1 -0
- package/dist/{chunk-HTZNB6IV.js → chunk-H5ZTIELC.js} +23 -8
- package/dist/chunk-H5ZTIELC.js.map +1 -0
- package/dist/{chunk-GSFNH4C5.js → chunk-HBP2OU4Q.js} +15 -8
- package/dist/chunk-HBP2OU4Q.js.map +1 -0
- package/dist/{chunk-I4QA2F4L.js → chunk-HBRQPG7H.js} +5 -5
- package/dist/{chunk-HGMBY5LP.js → chunk-HQWJUHR4.js} +18 -11
- package/dist/chunk-HQWJUHR4.js.map +1 -0
- package/dist/{chunk-CNQUCNEA.js → chunk-I3F4C5SS.js} +3 -3
- package/dist/{chunk-UFJYJHQI.js → chunk-J5VWGQSR.js} +2 -2
- package/dist/{chunk-MTFCPPZ5.js → chunk-JWZJSXI5.js} +3 -2
- package/dist/chunk-JWZJSXI5.js.map +1 -0
- package/dist/{chunk-4JFL62K3.js → chunk-K7FSTB2K.js} +3 -3
- package/dist/{chunk-FFCJ7NR2.js → chunk-KRQUPE4K.js} +4 -4
- package/dist/{chunk-2OYFTSG4.js → chunk-KXLUMEDX.js} +2 -2
- package/dist/{chunk-DVAAUWTC.js → chunk-LCHCE2G5.js} +2 -2
- package/dist/{chunk-G4HBNILE.js → chunk-LEHMWJNZ.js} +3 -3
- package/dist/{chunk-P6TNXBDA.js → chunk-MYKWJCR7.js} +9 -9
- package/dist/chunk-MYKWJCR7.js.map +1 -0
- package/dist/{chunk-TQ6FPOPD.js → chunk-ODW2D5PN.js} +39 -30
- package/dist/chunk-ODW2D5PN.js.map +1 -0
- package/dist/{chunk-RZYSKQTS.js → chunk-PCBZYORN.js} +3 -3
- package/dist/{chunk-5OBXEMQO.js → chunk-PRIBOWX4.js} +3 -3
- package/dist/{chunk-F42MJOHM.js → chunk-PVM7XTLZ.js} +64 -62
- package/dist/chunk-PVM7XTLZ.js.map +1 -0
- package/dist/{chunk-3TDVGZZN.js → chunk-QBTBRJ2Q.js} +37 -13
- package/dist/chunk-QBTBRJ2Q.js.map +1 -0
- package/dist/{chunk-2WFDHFK4.js → chunk-QNCWSDXE.js} +26 -11
- package/dist/chunk-QNCWSDXE.js.map +1 -0
- package/dist/{chunk-PQECNGDE.js → chunk-QSRZOXQI.js} +2 -2
- package/dist/{chunk-RHIDWUK7.js → chunk-QUWK7SYN.js} +1 -2
- package/dist/chunk-QUWK7SYN.js.map +1 -0
- package/dist/{chunk-UN5INW6K.js → chunk-R53ZOW4B.js} +8 -4
- package/dist/chunk-R53ZOW4B.js.map +1 -0
- package/dist/{chunk-DCJSHYE5.js → chunk-RSDYS5B3.js} +4 -4
- package/dist/{chunk-N5GVW6RO.js → chunk-S6IWKDWT.js} +2 -2
- package/dist/{chunk-TKC6WHGB.js → chunk-SBIZXZPP.js} +2 -2
- package/dist/{chunk-D5SZXH7Q.js → chunk-TNBJ4DK4.js} +7 -3
- package/dist/chunk-TNBJ4DK4.js.map +1 -0
- package/dist/{chunk-PMOEG36E.js → chunk-XZJM6EPC.js} +8 -6
- package/dist/chunk-XZJM6EPC.js.map +1 -0
- package/dist/{chunk-QF6LTUCE.js → chunk-Y2X7LYIN.js} +4 -4
- package/dist/chunk-Y2X7LYIN.js.map +1 -0
- package/dist/{chunk-UEVHI62V.js → chunk-YCCY77W5.js} +2 -2
- package/dist/{chunk-DF4K5XVW.js → chunk-YZVR5ROE.js} +14 -6
- package/dist/chunk-YZVR5ROE.js.map +1 -0
- package/dist/{chunk-AUSUCZYR.js → chunk-ZBVU2YWV.js} +5 -5
- package/dist/chunk-ZBVU2YWV.js.map +1 -0
- package/dist/{chunk-VZIB5W5L.js → chunk-ZGCPDA3F.js} +2 -2
- package/dist/data-display/DataGrid.js +4 -4
- package/dist/data-display/DataViews.js +29 -29
- package/dist/data-display/FleetMap.js +10 -10
- package/dist/data-display/MapPreview.js +7 -7
- package/dist/data-display/Table.js +4 -4
- package/dist/form/Calendar.js +5 -4
- package/dist/form/DateRangePicker.js +5 -5
- package/dist/form/Switch.js +4 -4
- package/dist/layout/CardGrid.js +2 -1
- package/dist/layout/Resizable.js +4 -3
- package/dist/layout/ScrollArea.js +2 -2
- package/dist/native/form/Switch.js +3 -1
- package/dist/native/form/Switch.js.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.body.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.cells.d.ts +4 -2
- package/dist/types/components/data-display/DataGrid/DataGrid.cells.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.model.d.ts +7 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.model.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +10 -4
- package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-columns.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts +2 -0
- package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-layout-context.d.ts +7 -3
- package/dist/types/components/data-display/DataViews/data-views-layout-context.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-overflow-costs.d.ts +19 -9
- package/dist/types/components/data-display/DataViews/data-views-overflow-costs.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-overflow.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapTiles.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/mapProjection.d.ts +6 -1
- package/dist/types/components/data-display/MapPreview/mapProjection.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.helpers.d.ts +6 -0
- package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.hooks.d.ts +9 -1
- package/dist/types/components/data-display/Table/Table.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.types.d.ts +6 -2
- package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/TableParts.d.ts +2 -0
- package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
- package/dist/types/components/form/Switch/Switch.metrics.d.ts +13 -3
- package/dist/types/components/form/Switch/Switch.metrics.d.ts.map +1 -1
- package/dist/types/components/form/Switch/Switch.styles.d.ts.map +1 -1
- package/dist/types/components/layout/CardGrid/CardGrid.d.ts +9 -7
- package/dist/types/components/layout/CardGrid/CardGrid.d.ts.map +1 -1
- package/dist/types/components/layout/Resizable/Resizable.d.ts.map +1 -1
- package/dist/types/components/layout/Resizable/Resizable.helpers.d.ts +21 -9
- package/dist/types/components/layout/Resizable/Resizable.helpers.d.ts.map +1 -1
- package/dist/types/components/layout/Resizable/Resizable.hooks.d.ts +13 -3
- package/dist/types/components/layout/Resizable/Resizable.hooks.d.ts.map +1 -1
- package/dist/types/components/layout/Resizable/Resizable.types.d.ts +10 -0
- package/dist/types/components/layout/Resizable/Resizable.types.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.helpers.d.ts +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.helpers.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +4 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.hooks.d.ts +3 -2
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.hooks.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +3 -2
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +9 -0
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
- package/dist/types/components/utility/VirtualList/VirtualList.d.ts.map +1 -1
- package/dist/types/components/utility/VirtualList/VirtualList.hooks.d.ts +24 -28
- package/dist/types/components/utility/VirtualList/VirtualList.hooks.d.ts.map +1 -1
- package/dist/types/components/utility/VirtualList/VirtualList.types.d.ts +17 -0
- package/dist/types/components/utility/VirtualList/VirtualList.types.d.ts.map +1 -1
- package/dist/types-native/components/form/Switch/Switch.metrics.d.ts +13 -3
- package/dist/types-native/components/form/Switch/Switch.metrics.d.ts.map +1 -1
- package/dist/utility/InfiniteScroll.js +4 -3
- package/dist/utility/VirtualList.js +3 -2
- package/package.json +1 -1
- package/src/components/data-display/DataGrid/DataGrid.body.tsx +27 -7
- package/src/components/data-display/DataGrid/DataGrid.cells.tsx +33 -9
- package/src/components/data-display/DataGrid/DataGrid.model.ts +24 -11
- package/src/components/data-display/DataGrid/DataGrid.types.ts +12 -6
- package/src/components/data-display/DataViews/data-views-columns.ts +14 -3
- package/src/components/data-display/DataViews/data-views-grid-helpers.tsx +5 -3
- package/src/components/data-display/DataViews/data-views-layout-context.tsx +12 -9
- package/src/components/data-display/DataViews/data-views-overflow-costs.ts +32 -14
- package/src/components/data-display/DataViews/data-views-overflow.ts +40 -26
- package/src/components/data-display/MapPreview/MapTiles.tsx +16 -9
- package/src/components/data-display/MapPreview/mapProjection.ts +10 -5
- package/src/components/data-display/Table/Table.helpers.ts +7 -1
- package/src/components/data-display/Table/Table.hooks.ts +16 -5
- package/src/components/data-display/Table/Table.types.ts +6 -2
- package/src/components/data-display/Table/TableParts.tsx +38 -42
- package/src/components/form/Calendar/Calendar.tsx +4 -2
- package/src/components/form/Calendar/CalendarDay.tsx +6 -3
- package/src/components/form/Calendar/CalendarMonth.tsx +6 -3
- package/src/components/form/Switch/Switch.metrics.ts +19 -5
- package/src/components/form/Switch/Switch.styles.ts +5 -3
- package/src/components/layout/CardGrid/CardGrid.tsx +37 -24
- package/src/components/layout/Resizable/Resizable.helpers.ts +43 -21
- package/src/components/layout/Resizable/Resizable.hooks.ts +17 -9
- package/src/components/layout/Resizable/Resizable.md +9 -5
- package/src/components/layout/Resizable/Resizable.tsx +20 -8
- package/src/components/layout/Resizable/Resizable.types.ts +10 -0
- package/src/components/layout/ScrollArea/ScrollArea.helpers.ts +0 -2
- package/src/components/layout/ScrollArea/ScrollArea.tsx +5 -3
- package/src/components/layout/ScrollArea/ScrollArea.types.ts +4 -1
- package/src/components/utility/InfiniteScroll/InfiniteScroll.hooks.ts +5 -4
- package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +29 -12
- package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +11 -5
- package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +10 -2
- package/src/components/utility/VirtualList/VirtualList.hooks.ts +101 -112
- package/src/components/utility/VirtualList/VirtualList.tsx +36 -65
- package/src/components/utility/VirtualList/VirtualList.types.ts +20 -3
- package/dist/chunk-2WFDHFK4.js.map +0 -1
- package/dist/chunk-3TDVGZZN.js.map +0 -1
- package/dist/chunk-AROBXRC5.js.map +0 -1
- package/dist/chunk-ATSHKSSD.js.map +0 -1
- package/dist/chunk-AUSUCZYR.js.map +0 -1
- package/dist/chunk-C66RGVAS.js.map +0 -1
- package/dist/chunk-D5SZXH7Q.js.map +0 -1
- package/dist/chunk-DF4K5XVW.js.map +0 -1
- package/dist/chunk-DLJGBJZW.js.map +0 -1
- package/dist/chunk-DZA7RSLX.js.map +0 -1
- package/dist/chunk-F42MJOHM.js.map +0 -1
- package/dist/chunk-GSFNH4C5.js.map +0 -1
- package/dist/chunk-HGMBY5LP.js.map +0 -1
- package/dist/chunk-HTZNB6IV.js.map +0 -1
- package/dist/chunk-IAGOUTI6.js.map +0 -1
- package/dist/chunk-J2DAQQQH.js.map +0 -1
- package/dist/chunk-MTFCPPZ5.js.map +0 -1
- package/dist/chunk-P6TNXBDA.js.map +0 -1
- package/dist/chunk-PMOEG36E.js.map +0 -1
- package/dist/chunk-PPRV4LTM.js.map +0 -1
- package/dist/chunk-PUBPZOQJ.js.map +0 -1
- package/dist/chunk-QF6LTUCE.js.map +0 -1
- package/dist/chunk-RHIDWUK7.js.map +0 -1
- package/dist/chunk-TQ6FPOPD.js.map +0 -1
- package/dist/chunk-TUBCN4DJ.js.map +0 -1
- package/dist/chunk-ULTOQ6ZV.js.map +0 -1
- package/dist/chunk-UN5INW6K.js.map +0 -1
- package/dist/chunk-YU26GBNX.js.map +0 -1
- package/dist/chunk-ZAY6OA6F.js.map +0 -1
- /package/dist/{chunk-MR2HKBHS.js.map → chunk-27LOJVR3.js.map} +0 -0
- /package/dist/{chunk-S3D5VBHW.js.map → chunk-3YOXVNO4.js.map} +0 -0
- /package/dist/{chunk-CZIX4BW2.js.map → chunk-4ALF5PB5.js.map} +0 -0
- /package/dist/{chunk-XJPJ6ESI.js.map → chunk-4OAKGKK5.js.map} +0 -0
- /package/dist/{chunk-4CHROSWR.js.map → chunk-5ETBB2DG.js.map} +0 -0
- /package/dist/{chunk-46UPILLK.js.map → chunk-5NT2M2JI.js.map} +0 -0
- /package/dist/{chunk-H5BEWPEY.js.map → chunk-6N2EDWMG.js.map} +0 -0
- /package/dist/{chunk-GJQYM3PM.js.map → chunk-6PU3JYVY.js.map} +0 -0
- /package/dist/{chunk-Y7F5JBAT.js.map → chunk-DDRKYNPB.js.map} +0 -0
- /package/dist/{chunk-OS6KPL4D.js.map → chunk-EHYI2WCJ.js.map} +0 -0
- /package/dist/{chunk-NB3FGWU4.js.map → chunk-EQXIW5MQ.js.map} +0 -0
- /package/dist/{chunk-M2JTIH5M.js.map → chunk-F44R7US6.js.map} +0 -0
- /package/dist/{chunk-XJJXBUPN.js.map → chunk-FX26DAFF.js.map} +0 -0
- /package/dist/{chunk-R6SN73RX.js.map → chunk-GLHNMTP6.js.map} +0 -0
- /package/dist/{chunk-I4QA2F4L.js.map → chunk-HBRQPG7H.js.map} +0 -0
- /package/dist/{chunk-CNQUCNEA.js.map → chunk-I3F4C5SS.js.map} +0 -0
- /package/dist/{chunk-UFJYJHQI.js.map → chunk-J5VWGQSR.js.map} +0 -0
- /package/dist/{chunk-4JFL62K3.js.map → chunk-K7FSTB2K.js.map} +0 -0
- /package/dist/{chunk-FFCJ7NR2.js.map → chunk-KRQUPE4K.js.map} +0 -0
- /package/dist/{chunk-2OYFTSG4.js.map → chunk-KXLUMEDX.js.map} +0 -0
- /package/dist/{chunk-DVAAUWTC.js.map → chunk-LCHCE2G5.js.map} +0 -0
- /package/dist/{chunk-G4HBNILE.js.map → chunk-LEHMWJNZ.js.map} +0 -0
- /package/dist/{chunk-RZYSKQTS.js.map → chunk-PCBZYORN.js.map} +0 -0
- /package/dist/{chunk-5OBXEMQO.js.map → chunk-PRIBOWX4.js.map} +0 -0
- /package/dist/{chunk-PQECNGDE.js.map → chunk-QSRZOXQI.js.map} +0 -0
- /package/dist/{chunk-DCJSHYE5.js.map → chunk-RSDYS5B3.js.map} +0 -0
- /package/dist/{chunk-N5GVW6RO.js.map → chunk-S6IWKDWT.js.map} +0 -0
- /package/dist/{chunk-TKC6WHGB.js.map → chunk-SBIZXZPP.js.map} +0 -0
- /package/dist/{chunk-UEVHI62V.js.map → chunk-YCCY77W5.js.map} +0 -0
- /package/dist/{chunk-VZIB5W5L.js.map → chunk-ZGCPDA3F.js.map} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DataViewsTableBase
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-4ALF5PB5.js";
|
|
4
4
|
import "../chunk-BFMDA6UO.js";
|
|
5
5
|
import {
|
|
6
6
|
DataViewsGrid
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-PRIBOWX4.js";
|
|
8
8
|
import {
|
|
9
9
|
BaseListCard
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-EHYI2WCJ.js";
|
|
11
11
|
import "../chunk-GZT7MLLO.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-KRQUPE4K.js";
|
|
13
|
+
import "../chunk-F44R7US6.js";
|
|
14
14
|
import "../chunk-2JCRNWHE.js";
|
|
15
15
|
import {
|
|
16
16
|
BaseCard
|
|
@@ -22,8 +22,8 @@ import {
|
|
|
22
22
|
DropIndicator,
|
|
23
23
|
useDragItem
|
|
24
24
|
} from "../chunk-K4EKTMTC.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-GLHNMTP6.js";
|
|
26
|
+
import "../chunk-HBRQPG7H.js";
|
|
27
27
|
import {
|
|
28
28
|
DataViewsBoard
|
|
29
29
|
} from "../chunk-UGGJ3KDT.js";
|
|
@@ -40,30 +40,30 @@ import "../chunk-57FZM6GH.js";
|
|
|
40
40
|
import "../chunk-7D7CJRL7.js";
|
|
41
41
|
import "../chunk-CBOB5AV6.js";
|
|
42
42
|
import "../chunk-2S752BIJ.js";
|
|
43
|
-
import "../chunk-
|
|
44
|
-
import "../chunk-
|
|
43
|
+
import "../chunk-ODW2D5PN.js";
|
|
44
|
+
import "../chunk-DNT5PZLF.js";
|
|
45
45
|
import "../chunk-KX75HM5U.js";
|
|
46
46
|
import "../chunk-3KREF4ZF.js";
|
|
47
47
|
import "../chunk-62UAI62O.js";
|
|
48
|
-
import "../chunk-
|
|
48
|
+
import "../chunk-6N2EDWMG.js";
|
|
49
49
|
import "../chunk-O5UGAL2V.js";
|
|
50
50
|
import "../chunk-GCZJH4XL.js";
|
|
51
|
-
import "../chunk-
|
|
52
|
-
import "../chunk-
|
|
51
|
+
import "../chunk-KXLUMEDX.js";
|
|
52
|
+
import "../chunk-27LOJVR3.js";
|
|
53
53
|
import "../chunk-QA2ZGCRL.js";
|
|
54
54
|
import "../chunk-5M4TYFR3.js";
|
|
55
|
-
import "../chunk-
|
|
56
|
-
import "../chunk-
|
|
57
|
-
import "../chunk-
|
|
55
|
+
import "../chunk-FX26DAFF.js";
|
|
56
|
+
import "../chunk-I3F4C5SS.js";
|
|
57
|
+
import "../chunk-DDRKYNPB.js";
|
|
58
58
|
import "../chunk-R2XVTUVR.js";
|
|
59
59
|
import "../chunk-6N4AA2Y7.js";
|
|
60
|
-
import "../chunk-
|
|
60
|
+
import "../chunk-YCCY77W5.js";
|
|
61
61
|
import "../chunk-YLGY3D52.js";
|
|
62
62
|
import "../chunk-XIG3DXXX.js";
|
|
63
63
|
import "../chunk-HR7YTBR7.js";
|
|
64
64
|
import "../chunk-DZEC6RFM.js";
|
|
65
|
-
import "../chunk-
|
|
66
|
-
import "../chunk-
|
|
65
|
+
import "../chunk-PCBZYORN.js";
|
|
66
|
+
import "../chunk-D4FZ3ANG.js";
|
|
67
67
|
import "../chunk-YGQX7BNI.js";
|
|
68
68
|
import "../chunk-LLZWB32X.js";
|
|
69
69
|
import {
|
|
@@ -72,18 +72,18 @@ import {
|
|
|
72
72
|
resolveScope
|
|
73
73
|
} from "../chunk-PL2AB5HJ.js";
|
|
74
74
|
import "../chunk-U5FOJBLG.js";
|
|
75
|
-
import "../chunk-
|
|
75
|
+
import "../chunk-BWHOCNGW.js";
|
|
76
76
|
import "../chunk-IMLIIW77.js";
|
|
77
77
|
import "../chunk-OB56SZGL.js";
|
|
78
78
|
import {
|
|
79
79
|
DEFAULT_RAILS,
|
|
80
80
|
ListCardGroup,
|
|
81
81
|
RAIL_COUNT
|
|
82
|
-
} from "../chunk-
|
|
82
|
+
} from "../chunk-EQXIW5MQ.js";
|
|
83
83
|
import {
|
|
84
84
|
cardMinWidthForZoom,
|
|
85
85
|
cardScaleForZoom
|
|
86
|
-
} from "../chunk-
|
|
86
|
+
} from "../chunk-XZJM6EPC.js";
|
|
87
87
|
import {
|
|
88
88
|
CARD_ASPECT_RATIOS,
|
|
89
89
|
DATA_VIEWS_LAYOUTS,
|
|
@@ -122,11 +122,11 @@ import "../chunk-MNHIK2OR.js";
|
|
|
122
122
|
import "../chunk-4RWPGWJW.js";
|
|
123
123
|
import "../chunk-6LOGBWLG.js";
|
|
124
124
|
import "../chunk-4PJ52YBO.js";
|
|
125
|
-
import "../chunk-
|
|
126
|
-
import "../chunk-
|
|
127
|
-
import "../chunk-
|
|
125
|
+
import "../chunk-ZGCPDA3F.js";
|
|
126
|
+
import "../chunk-K7FSTB2K.js";
|
|
127
|
+
import "../chunk-ZBVU2YWV.js";
|
|
128
128
|
import "../chunk-RIEV4VXF.js";
|
|
129
|
-
import "../chunk-
|
|
129
|
+
import "../chunk-TNBJ4DK4.js";
|
|
130
130
|
import "../chunk-SZS7VZJN.js";
|
|
131
131
|
import "../chunk-SJRTT3PA.js";
|
|
132
132
|
import "../chunk-4PRZLII7.js";
|
|
@@ -175,11 +175,11 @@ import "../chunk-77JL5XVD.js";
|
|
|
175
175
|
import "../chunk-G3QKH23Y.js";
|
|
176
176
|
import "../chunk-JZRSHDNY.js";
|
|
177
177
|
import "../chunk-L5CPOEDP.js";
|
|
178
|
-
import "../chunk-
|
|
178
|
+
import "../chunk-LEHMWJNZ.js";
|
|
179
179
|
import "../chunk-EARWC6PD.js";
|
|
180
|
-
import "../chunk-
|
|
181
|
-
import "../chunk-
|
|
182
|
-
import "../chunk-
|
|
180
|
+
import "../chunk-DGMDQHMI.js";
|
|
181
|
+
import "../chunk-H5ZTIELC.js";
|
|
182
|
+
import "../chunk-F7JTIHV5.js";
|
|
183
183
|
import "../chunk-G3E66C6J.js";
|
|
184
184
|
import "../chunk-SNCSGLJ6.js";
|
|
185
185
|
import "../chunk-VIRYHNEM.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-RQWZYD6H.js";
|
|
2
2
|
import {
|
|
3
3
|
FleetMap
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-J5VWGQSR.js";
|
|
5
|
+
import "../chunk-SBIZXZPP.js";
|
|
6
|
+
import "../chunk-LCHCE2G5.js";
|
|
7
7
|
import "../chunk-5JCGBCFJ.js";
|
|
8
8
|
import "../chunk-BTQZ3EX3.js";
|
|
9
9
|
import "../chunk-ZCPSND5Y.js";
|
|
@@ -18,21 +18,21 @@ import "../chunk-BEGTLELZ.js";
|
|
|
18
18
|
import "../chunk-E2QIKJX2.js";
|
|
19
19
|
import "../chunk-EMPVMZAB.js";
|
|
20
20
|
import "../chunk-7WDPC46N.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-4OAKGKK5.js";
|
|
22
22
|
import "../chunk-VIUDWOV6.js";
|
|
23
23
|
import "../chunk-VNOFFVRQ.js";
|
|
24
24
|
import "../chunk-WRCLYSTX.js";
|
|
25
25
|
import "../chunk-4NQXHPQR.js";
|
|
26
26
|
import "../chunk-ZZ4MMUBY.js";
|
|
27
27
|
import "../chunk-ODFJTEIL.js";
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-QSRZOXQI.js";
|
|
29
|
+
import "../chunk-5NT2M2JI.js";
|
|
30
30
|
import "../chunk-H2J2MTRE.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-RSDYS5B3.js";
|
|
32
|
+
import "../chunk-5ETBB2DG.js";
|
|
33
|
+
import "../chunk-HQWJUHR4.js";
|
|
34
34
|
import "../chunk-X6AIKCAV.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-CB6DTWD5.js";
|
|
36
36
|
import "../chunk-HN3PZTUK.js";
|
|
37
37
|
import "../chunk-KLPTOVIX.js";
|
|
38
38
|
import "../chunk-MWFSIB6K.js";
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import "../chunk-EJDOH7IN.js";
|
|
2
2
|
import {
|
|
3
3
|
MapPreview
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-4OAKGKK5.js";
|
|
5
5
|
import "../chunk-VIUDWOV6.js";
|
|
6
6
|
import "../chunk-VNOFFVRQ.js";
|
|
7
7
|
import "../chunk-WRCLYSTX.js";
|
|
8
8
|
import "../chunk-4NQXHPQR.js";
|
|
9
9
|
import "../chunk-ZZ4MMUBY.js";
|
|
10
10
|
import "../chunk-ODFJTEIL.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-QSRZOXQI.js";
|
|
12
|
+
import "../chunk-5NT2M2JI.js";
|
|
13
13
|
import "../chunk-H2J2MTRE.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-RSDYS5B3.js";
|
|
15
|
+
import "../chunk-5ETBB2DG.js";
|
|
16
|
+
import "../chunk-HQWJUHR4.js";
|
|
17
17
|
import "../chunk-X6AIKCAV.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-CB6DTWD5.js";
|
|
19
19
|
import "../chunk-CGO452DC.js";
|
|
20
20
|
import "../chunk-GDN2LUTZ.js";
|
|
21
21
|
import "../chunk-7FDU3FIN.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "../chunk-WG2WFANT.js";
|
|
2
2
|
import {
|
|
3
3
|
Table
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-3YOXVNO4.js";
|
|
5
5
|
import "../chunk-POV2KL2P.js";
|
|
6
|
-
import "../chunk-MTFCPPZ5.js";
|
|
7
6
|
import "../chunk-XIXR2L3L.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-5LWB4BYX.js";
|
|
8
|
+
import "../chunk-YZVR5ROE.js";
|
|
9
|
+
import "../chunk-JWZJSXI5.js";
|
|
10
10
|
import "../chunk-YKCAJ2TN.js";
|
|
11
11
|
import "../chunk-PZ5AY32C.js";
|
|
12
12
|
export {
|
package/dist/form/Calendar.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import "../chunk-BO6S47KI.js";
|
|
2
2
|
import {
|
|
3
3
|
Calendar
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-R53ZOW4B.js";
|
|
5
5
|
import "../chunk-2ZRZTGWP.js";
|
|
6
6
|
import "../chunk-SUALMVL7.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-AG3DY5TH.js";
|
|
8
|
+
import "../chunk-6PU3JYVY.js";
|
|
9
|
+
import "../chunk-H3AQQOTI.js";
|
|
10
10
|
import "../chunk-E2Y7G4MP.js";
|
|
11
11
|
import "../chunk-FFQ4NOJT.js";
|
|
12
12
|
import "../chunk-TERT6TIS.js";
|
|
13
|
+
import "../chunk-YKCAJ2TN.js";
|
|
13
14
|
import "../chunk-PZ5AY32C.js";
|
|
14
15
|
export {
|
|
15
16
|
Calendar,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../chunk-BN6POCYF.js";
|
|
2
2
|
import {
|
|
3
3
|
DateRangePicker
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-S6IWKDWT.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_QUICK_RANGES,
|
|
7
7
|
DEFAULT_QUICK_RANGE_LABELS,
|
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
} from "../chunk-OJ2XR3WH.js";
|
|
17
17
|
import "../chunk-FRAVVI4A.js";
|
|
18
18
|
import "../chunk-BO6S47KI.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-R53ZOW4B.js";
|
|
20
20
|
import "../chunk-2ZRZTGWP.js";
|
|
21
21
|
import "../chunk-SUALMVL7.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-AG3DY5TH.js";
|
|
23
|
+
import "../chunk-6PU3JYVY.js";
|
|
24
|
+
import "../chunk-H3AQQOTI.js";
|
|
25
25
|
import "../chunk-E2Y7G4MP.js";
|
|
26
26
|
import "../chunk-FFQ4NOJT.js";
|
|
27
27
|
import "../chunk-TERT6TIS.js";
|
package/dist/form/Switch.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../chunk-4PJ52YBO.js";
|
|
2
2
|
import {
|
|
3
3
|
Switch
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-ZGCPDA3F.js";
|
|
5
|
+
import "../chunk-K7FSTB2K.js";
|
|
6
|
+
import "../chunk-ZBVU2YWV.js";
|
|
7
7
|
import "../chunk-RIEV4VXF.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-TNBJ4DK4.js";
|
|
9
9
|
import "../chunk-SZS7VZJN.js";
|
|
10
10
|
import "../chunk-TYJR4GOF.js";
|
|
11
11
|
import "../chunk-HPK33ACY.js";
|
package/dist/layout/CardGrid.js
CHANGED
package/dist/layout/Resizable.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "../chunk-ENORM6S2.js";
|
|
2
2
|
import {
|
|
3
3
|
Resizable
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-DVSO3EG6.js";
|
|
5
|
+
import "../chunk-MYKWJCR7.js";
|
|
6
|
+
import "../chunk-QBTBRJ2Q.js";
|
|
7
|
+
import "../chunk-YKCAJ2TN.js";
|
|
7
8
|
import "../chunk-PZ5AY32C.js";
|
|
8
9
|
export {
|
|
9
10
|
Resizable
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "../chunk-KAK5SAEA.js";
|
|
2
2
|
import {
|
|
3
3
|
ScrollArea
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-ERY6D2OV.js";
|
|
5
|
+
import "../chunk-QUWK7SYN.js";
|
|
6
6
|
import "../chunk-BAZXVFLR.js";
|
|
7
7
|
import "../chunk-4VMFS3VJ.js";
|
|
8
8
|
import "../chunk-I7GSRTGQ.js";
|
|
@@ -123,7 +123,9 @@ var MUI_SHADOWS = {
|
|
|
123
123
|
2: ELEVATION_SHADOWS[2],
|
|
124
124
|
3: ELEVATION_SHADOWS[3]
|
|
125
125
|
};
|
|
126
|
-
var
|
|
126
|
+
var AS_PX = (value) => `${value}px`;
|
|
127
|
+
var iosThumbShadow = (length = AS_PX) => `0 ${length(3)} ${length(1)} 0 ${alpha(SWITCH_BLACK, 0.04)}, 0 ${length(3)} ${length(8)} 0 ${alpha(SWITCH_BLACK, 0.12)}, 0 ${length(1)} 0 0 ${alpha(SWITCH_BLACK, 0.08)}`;
|
|
128
|
+
var IOS_THUMB_SHADOW = iosThumbShadow();
|
|
127
129
|
var TRACK_ALPHA = { ios: 0.1, android: 0.2, other: 0.3 };
|
|
128
130
|
var trackColor = (ink, look) => {
|
|
129
131
|
if (look === "ios") return alpha(ink.black, TRACK_ALPHA.ios);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/form/Switch/Switch.native.tsx","../../../src/components/form/Switch/Switch.helpers.ts","../../../src/components/form/Switch/Switch.metrics.ts","../../../src/components/form/Switch/Switch.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Animated,\n Easing,\n Platform,\n Pressable,\n StyleSheet,\n Text as RNText,\n View,\n type GestureResponderEvent,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveSwitchProps, withoutSwitchProps, type ResolvedSwitchProps } from './Switch.helpers';\nimport {\n descriptionTextStyle,\n helperTextStyle,\n labelTextStyle,\n checkedInk,\n switchPalette,\n thumbStyle,\n trackStyle,\n type SwitchPaint,\n type SwitchState,\n} from './Switch.look.native';\nimport {\n LABEL_GAP_UNITS,\n SWITCH_ICON,\n SWITCH_ICON_SIZES,\n SWITCH_PULSE,\n SWITCH_SPINNER,\n SWITCH_TRANSITION,\n TRACK_LABEL,\n geometryOf,\n lookOf,\n showsTrackLabels,\n thumbTravel,\n type SwitchGeometry,\n} from './Switch.metrics';\nimport type { SwitchProps } from './Switch.types.native';\nimport { webKeyDown } from '../../../platform/aria';\nimport { childTestId, resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 value that follows `on`, over MUI's 300ms curve unless animation is off. */\nfunction useProgress(on: boolean, animated: boolean): Animated.Value {\n const progress = React.useRef(new Animated.Value(on ? 1 : 0)).current;\n React.useEffect(() => {\n const timing = Animated.timing(progress, {\n toValue: on ? 1 : 0,\n duration: animated ? SWITCH_TRANSITION.ms : 0,\n easing: Easing.bezier(0.4, 0, 0.2, 1),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [on, animated, progress]);\n return progress;\n}\n\n/** The web's `pulseAnimation` on the thumb: it breathes to 0.7 and 0.95 and back. */\nfunction usePulse(enabled: boolean): { opacity?: Animated.AnimatedInterpolation<number>; scale?: Animated.AnimatedInterpolation<number> } {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n const loop = Animated.loop(\n Animated.timing(progress, {\n toValue: 1,\n duration: SWITCH_PULSE.ms,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [enabled, progress]);\n if (!enabled) return {};\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minOpacity, 1] }),\n scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minScale, 1] }),\n };\n}\n\n/** The wording the `label` variant prints inside the track, both halves at once. */\nfunction TrackLabels({\n theme,\n onText,\n offText,\n contrastText,\n}: {\n theme: UiTheme;\n onText?: string;\n offText?: string;\n contrastText: string;\n}): React.JSX.Element {\n const inset = theme.spacing(TRACK_LABEL.insetUnits);\n const base = {\n fontFamily: theme.typography.fontFamily,\n fontSize: TRACK_LABEL.fontSize,\n fontWeight: String(TRACK_LABEL.fontWeight) as 'normal',\n };\n return (\n <View style={styles.trackLabels}>\n <RNText style={[base, { color: contrastText, marginLeft: inset }]}>{onText ?? ''}</RNText>\n <RNText style={[base, { color: theme.palette.text.secondary, marginRight: inset }]}>\n {offText ?? ''}\n </RNText>\n </View>\n );\n}\n\n/**\n * One of the two icons overlaid on the track.\n *\n * The web centres a hidden icon on the track and pins a shown one to `left: 4`\n * (or `right: 4`) with a `translate(∓50%)` — which puts half of it outside the\n * track. Same arithmetic here, in px.\n */\nfunction SwitchIcon({\n icon,\n shown,\n animated,\n size,\n side,\n width,\n}: {\n icon: React.ReactNode;\n shown: boolean;\n animated: boolean;\n size: number;\n side: 'on' | 'off';\n width: number;\n}): React.JSX.Element {\n const half = size / 2;\n const offset = shown ? SWITCH_ICON.inset - half : width / 2 - half;\n return (\n <View\n style={[\n styles.icon,\n side === 'on' ? { left: offset } : { right: offset },\n {\n width: size,\n height: size,\n opacity: shown ? 1 : 0,\n transform: [{ translateY: -half }, { scale: shown && animated ? 1 : SWITCH_ICON.hiddenScale }],\n },\n ]}\n >\n {icon}\n </View>\n );\n}\n\ninterface ControlProps {\n props: ResolvedSwitchProps;\n theme: UiTheme;\n checked: boolean;\n inactive: boolean;\n onToggle: (event?: GestureResponderEvent) => void;\n rest: Record<string, unknown>;\n testID: string;\n}\n\n/**\n * The track, the thumb, and everything overlaid on them.\n *\n * The control carries its own NAME (FUT-1905). React Native has no `<label\n * for>` to wire the words beside it with, so the name has to be stated on the\n * pressable itself or the control announces as \"checkbox, checked\" and nothing\n * else — which is the defect the web half of this ticket fixed, still live\n * here. A caller's own `aria-label` wins, because a caller that wrote one meant\n * it to differ from the visible words.\n */\nfunction SwitchControl({ props, theme, checked, inactive, onToggle, rest, testID }: ControlProps): React.JSX.Element {\n const { variant, color, size, animated, loading, onIcon, offIcon, onText, offText } = props;\n const geometry: SwitchGeometry = geometryOf(size, props.trackWidth, props.trackHeight);\n const look = lookOf(variant);\n const palette = switchPalette(theme, color);\n const state: SwitchState = { checked, disabled: inactive };\n const paint: SwitchPaint = props;\n const { rest: restX, travel } = thumbTravel(look, geometry);\n const progress = useProgress(checked, animated);\n const pulse = usePulse(props.pulse && !loading);\n const iconSize = SWITCH_ICON_SIZES[size];\n\n return (\n <Pressable\n testID={testID}\n role=\"checkbox\"\n aria-label={(rest['aria-label'] as string | undefined) ?? props.label}\n aria-checked={checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={onToggle}\n {...webKeyDown((event) => {\n if (event.key === ' ' || event.key === 'Spacebar') onToggle();\n })}\n style={{ width: geometry.width, height: geometry.height }}\n {...rest}\n >\n <View style={trackStyle(theme, paint, palette, geometry, look, state)} />\n {showsTrackLabels(variant, onText, offText) ? (\n <TrackLabels\n theme={theme}\n onText={onText}\n offText={offText}\n contrastText={checkedInk(paint, palette)}\n />\n ) : null}\n {onIcon == null ? null : (\n <SwitchIcon icon={onIcon} shown={checked} animated={animated} size={iconSize} side=\"on\" width={geometry.width} />\n )}\n {offIcon == null ? null : (\n <SwitchIcon icon={offIcon} shown={!checked} animated={animated} size={iconSize} side=\"off\" width={geometry.width} />\n )}\n <Animated.View\n style={[\n thumbStyle(theme, paint, palette, geometry, look, state),\n { top: geometry.padding, left: restX, opacity: pulse.opacity },\n {\n transform: [\n { translateX: progress.interpolate({ inputRange: [0, 1], outputRange: [0, travel] }) },\n ...(pulse.scale === undefined ? [] : [{ scale: pulse.scale }]),\n ],\n },\n ]}\n >\n {loading ? (\n <ActivityIndicator\n size={geometry.thumbSize * SWITCH_SPINNER.sizeRatio}\n color={palette.main}\n accessibilityLabel=\"loading\"\n />\n ) : null}\n </Animated.View>\n </Pressable>\n );\n}\n\n/** The label and its description, in the column beside (or above) the control. */\nfunction LabelBlock({\n theme,\n label,\n description,\n error,\n testID,\n}: {\n theme: UiTheme;\n label: string;\n description?: string;\n error: boolean;\n testID: string;\n}): React.JSX.Element {\n return (\n <View style={styles.labelBlock}>\n <RNText testID={testID} style={labelTextStyle(theme, error)}>\n {label}\n </RNText>\n {description === undefined ? null : (\n <RNText style={descriptionTextStyle(theme, error)}>{description}</RNText>\n )}\n </View>\n );\n}\n\n/** The row (or column) the label and the control share, per `labelPosition`. */\nfunction labelRowStyle(theme: UiTheme, position: string): ViewStyle {\n const stacked = position === 'top' || position === 'bottom';\n return {\n flexDirection: position === 'top' ? 'column' : position === 'bottom' ? 'column-reverse' : 'row',\n alignItems: stacked ? 'flex-start' : 'center',\n gap: theme.spacing(stacked ? LABEL_GAP_UNITS.stacked : LABEL_GAP_UNITS.beside),\n width: '100%',\n };\n}\n\n/**\n * The native `Switch`.\n *\n * React Native's own `Switch` is the platform control at the platform's size,\n * with no track geometry, no thumb radius and no room for an icon — so this\n * draws the track and the thumb itself, off the same table the web styles MUI\n * with, and takes `role=\"checkbox\"` with `aria-checked` for the state a hidden\n * `<input type=\"checkbox\">` carries on the web. See `NATIVE-NOTES.md`.\n */\nexport const Switch = React.forwardRef<View, SwitchProps>((rawProps, ref) => {\n const props = resolveSwitchProps(rawProps);\n const {\n label, description, labelPosition, error, helperText, loading, disabled,\n checked, defaultChecked, onChange, onClick, onPress, style, ...others\n } = props;\n\n const theme = useUiTheme();\n const [own, setOwn] = React.useState(defaultChecked ?? false);\n const current = checked ?? own;\n const inactive = loading || disabled;\n const rest = withoutSwitchProps(others);\n\n // A keyboard toggle has no gesture behind it, so `onClick`/`onPress` — which\n // are press handlers — only fire when there is a press to report.\n const toggle = (event?: GestureResponderEvent): void => {\n const next = !current;\n setOwn(next);\n onChange?.({ target: { checked: next } }, next);\n if (event === undefined) return;\n onClick?.(event);\n onPress?.(event);\n };\n\n const control = (\n <SwitchControl\n props={props}\n theme={theme}\n checked={current}\n inactive={inactive}\n onToggle={toggle}\n rest={rest}\n testID={resolveTestId(others, 'switch') ?? 'switch'}\n />\n );\n\n return (\n <View ref={ref} testID={childTestId(others, 'container', 'switch')} style={style}>\n {label === undefined ? (\n control\n ) : (\n <View style={labelRowStyle(theme, labelPosition)}>\n {labelPosition === 'start' ? control : null}\n <LabelBlock\n theme={theme}\n label={label}\n description={description}\n error={error}\n testID={childTestId(others, 'label', 'switch')}\n />\n {labelPosition === 'start' ? null : control}\n </View>\n )}\n {helperText === undefined ? null : (\n <RNText testID={childTestId(others, 'helper', 'switch')} style={helperTextStyle(theme, error)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSwitch.displayName = 'Switch';\n\nconst styles = StyleSheet.create({\n labelBlock: {\n flex: 1,\n },\n trackLabels: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n pointerEvents: 'none',\n },\n icon: {\n position: 'absolute',\n top: '50%',\n zIndex: 2,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { SwitchBaseProps } from './Switch.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SwitchDefaultedKeys =\n | 'variant'\n | 'color'\n | 'size'\n | 'glow'\n | 'glass'\n | 'gradient'\n | 'labelPosition'\n | 'error'\n | 'animated'\n | 'loading'\n | 'ripple'\n | 'pulse'\n | 'disabled';\n\nexport type ResolvedSwitchProps<P extends SwitchBaseProps = SwitchBaseProps> = P &\n Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>>;\n\n/** `Switch.tsx`'s own `DEFAULTS`, plus the `disabled` MUI would have defaulted. */\nconst SWITCH_DEFAULTS: Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>> = {\n variant: 'default',\n color: 'primary',\n size: 'md',\n glow: false,\n glass: false,\n gradient: false,\n labelPosition: 'end',\n error: false,\n animated: true,\n loading: false,\n ripple: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSwitchProps = <P extends SwitchBaseProps>(props: P): ResolvedSwitchProps<P> =>\n withDefaults(props, SWITCH_DEFAULTS as Partial<P>) as ResolvedSwitchProps<P>;\n\n/**\n * Every prop the switch consumes itself.\n *\n * Listed so what is left over — `aria-label`, `aria-describedby`, an `id` — can\n * be spread onto the control without the component's own props riding along.\n * react-native-web would drop them and React Native ignore them, but a prop\n * that reaches an element it means nothing to is a prop nobody can explain.\n */\nexport const SWITCH_BASE_KEYS = [\n 'variant', 'color', 'size', 'label', 'description', 'glow', 'glass', 'gradient',\n 'labelPosition', 'onIcon', 'offIcon', 'onText', 'offText', 'error', 'helperText',\n 'trackWidth', 'trackHeight', 'animated', 'loading', 'ripple', 'pulse', 'disabled',\n 'testID', 'dataTestId', 'data-testid',\n] as const satisfies ReadonlyArray<keyof SwitchBaseProps | 'data-testid'>;\n\n/** `props` without any of them, for spreading onto the control. */\nexport function withoutSwitchProps(props: object): Record<string, unknown> {\n const own = new Set<string>(SWITCH_BASE_KEYS);\n return Object.fromEntries(Object.entries(props).filter(([key]) => !own.has(key)));\n}\n","import type { SwitchVariant } from './Switch.base';\nimport { alpha } from '../../../tokens/color';\nimport { ABSOLUTE_INK, ELEVATION_SHADOWS, NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Switch` RENDERERS DRAW WITH.\n *\n * `Switch.styles.ts` (web, emotion over MUI's `Switch`) and\n * `Switch.native.tsx` (React Native, drawing the track and thumb itself) read\n * this one table: the geometry per size, the four looks' radii and shadows,\n * the resting track colours, and the type the label, the description and the\n * helper are set in.\n *\n * Spacing is in SPACING UNITS where the web writes `theme.spacing(n)`;\n * everything else is px, a ratio or an alpha.\n */\n\n/** MUI's `palette.common.black`, which `UiTheme` does not carry. */\nexport const SWITCH_BLACK = ABSOLUTE_INK.black;\n\nexport interface SwitchGeometry {\n width: number;\n height: number;\n padding: number;\n thumbSize: number;\n}\n\nexport const SWITCH_SIZES: Record<SizeValue, SwitchGeometry> = {\n xs: { width: 34, height: 18, padding: 1, thumbSize: 14 },\n sm: { width: 42, height: 22, padding: 1, thumbSize: 18 },\n md: { width: 50, height: 26, padding: 1, thumbSize: 22 },\n lg: { width: 58, height: 30, padding: 2, thumbSize: 24 },\n xl: { width: 66, height: 34, padding: 2, thumbSize: 28 },\n};\n\n/** The four platform looks. `label` prints its wording on a `default` track. */\nexport type SwitchLook = 'ios' | 'android' | 'material' | 'default';\n\nexport const lookOf = (variant?: string): SwitchLook => {\n if (variant === 'ios') return 'ios';\n if (variant === 'android') return 'android';\n if (variant === 'material') return 'material';\n return 'default';\n};\n\n/** Track geometry once the caller's overrides and the size preset are combined. */\nexport const geometryOf = (size: SizeValue | undefined, width?: number, height?: number): SwitchGeometry => {\n const preset = SWITCH_SIZES[size as SizeValue] ?? SWITCH_SIZES.md;\n return { ...preset, width: width || preset.width, height: height || preset.height };\n};\n\n/**\n * The thumb's corner. `'50%'` is what the web emits; a renderer with no\n * percentage radius asks {@link thumbRadius} for the px instead.\n */\nexport const THUMB_RADIUS: Record<SwitchLook, (thumbSize: number) => number | string> = {\n ios: () => '50%',\n android: () => 4,\n material: (thumbSize) => thumbSize / 3,\n default: () => '50%',\n};\n\nexport const TRACK_RADIUS: Record<SwitchLook, (height: number) => number> = {\n ios: (height) => height / 2,\n android: (height) => height / 3,\n material: (height) => height / 2.5,\n default: (height) => height / 2,\n};\n\n/** The web's `'50%'` as the px a circle of this size needs. */\nexport const thumbRadius = (look: SwitchLook, thumbSize: number): number => {\n const radius = THUMB_RADIUS[look](thumbSize);\n return typeof radius === 'number' ? radius : thumbSize / 2;\n};\n\n/**\n * The elevation the thumb rests at per look — an INDEX into `theme.shadows`,\n * not the shadow itself, so a host that re-themes MUI's elevations keeps\n * moving the web. {@link MUI_SHADOWS} carries MUI's own values for the native\n * side, which has no `theme.shadows` to read.\n */\nexport const THUMB_ELEVATION: Record<SwitchLook, number> = { ios: 0, android: 3, material: 2, default: 2 };\n\nexport const MUI_SHADOWS: Record<number, string> = {\n 2: ELEVATION_SHADOWS[2],\n 3: ELEVATION_SHADOWS[3],\n};\n\n/** The iOS thumb's own three-layer shadow, which the web writes out literally. */\nexport const IOS_THUMB_SHADOW = `0 3px 1px 0 ${alpha(SWITCH_BLACK, 0.04)}, 0 3px 8px 0 ${alpha(SWITCH_BLACK, 0.12)}, 0 1px 0 0 ${alpha(SWITCH_BLACK, 0.08)}`;\n\n/** The iOS track's inset hairline. */\nexport const iosTrackShadow = (): string =>\n `inset 0 0 0 0.5px ${alpha(SWITCH_BLACK, 0.1)}, inset 0 2px 3px ${alpha(SWITCH_BLACK, 0.12)}`;\n\n/** The resting track: a black wash on iOS, the disabled ink elsewhere. */\nexport const TRACK_ALPHA = { ios: 0.1, android: 0.2, other: 0.3 } as const;\n\n/**\n * `black` is MUI's `palette.common.black` on the web and {@link SWITCH_BLACK}\n * on native, whose theme has no `common` — the same `#000` either way, passed\n * in rather than assumed so a host that themes it still moves the web.\n */\nexport const trackColor = (ink: { black: string; disabled: string }, look: SwitchLook): string => {\n if (look === 'ios') return alpha(ink.black, TRACK_ALPHA.ios);\n const strength = look === 'android' ? TRACK_ALPHA.android : TRACK_ALPHA.other;\n return alpha(ink.disabled, strength);\n};\n\n/** How far the thumb travels, and where it starts. iOS insets differently. */\nexport const thumbTravel = (look: SwitchLook, geometry: SwitchGeometry): { rest: number; travel: number } => {\n const { width, thumbSize, padding } = geometry;\n if (look === 'ios') {\n // The web nudges the whole switch base 2px right and shortens the trip.\n return { rest: padding + IOS_BASE_OFFSET, travel: width - thumbSize - IOS_TRAVEL_INSET };\n }\n return { rest: padding, travel: width - thumbSize - padding * 2 };\n};\n\nexport const IOS_BASE_OFFSET = 2;\nexport const IOS_TRAVEL_INSET = 4;\n\n/** MUI's 300ms `cubic-bezier(0.4, 0, 0.2, 1)`, on everything the switch moves. */\nexport const SWITCH_TRANSITION = { ms: 300, easing: 'cubic-bezier(0.4, 0, 0.2, 1)' } as const;\n\n/** The disabled treatment: the thumb greys and the track fades. */\nexport const DISABLED = { trackOpacity: 0.3, checkedTrackOpacity: 0.5, thumbGrey: 100 } as const;\n\n/** `glass`: a paper wash under a blur, inside a faint divider hairline. */\nexport const SWITCH_GLASS = {\n trackAlpha: 0.1,\n thumbAlpha: 0.9,\n borderAlpha: 0.2,\n trackBlur: 20,\n thumbBlur: 10,\n} as const;\n\n/** `gradient`: the checked track runs light → main → dark; the resting one is fainter. */\nexport const SWITCH_GRADIENT = {\n checked: { angleDeg: 90, stops: [0, 50, 100] },\n resting: { angleDeg: 135, lightAlpha: 0.3, mainAlpha: 0.2 },\n shimmerMs: 3000,\n} as const;\n\n/** `glow`: a halo of the hue around the checked track, breathing every two seconds. */\nexport const SWITCH_GLOW = { blur: 10, alpha: 0.6, insetBlur: 10, insetAlpha: 0.2, ms: 2000 } as const;\n\n/** `pulse`: the thumb breathes; `ripple`: a wash of the hue expands under the pointer. */\nexport const SWITCH_PULSE = { ms: 2000, minOpacity: 0.7, minScale: 0.95 } as const;\nexport const SWITCH_RIPPLE = { alpha: 0.2, ms: 600, scale: 2 } as const;\n\n/** `loading`: a 2px ring inside the thumb, turning once a second. */\nexport const SWITCH_SPINNER = { sizeRatio: 0.6, borderWidth: 2, ms: 1000 } as const;\n\n/** The two icons overlaid on the track, at their own size per step of the scale. */\nexport const SWITCH_ICON_SIZES: Record<SizeValue, number> = { xs: 12, sm: 14, md: 16, lg: 18, xl: 20 };\n/** Where a shown icon sits, and how small a hidden one is drawn. */\nexport const SWITCH_ICON = { inset: 4, hiddenScale: 0.8 } as const;\n\n/** The wording the `label` variant prints inside the track: 0.75rem at 500, 8px in. */\nexport const TRACK_LABEL = { fontSize: 12, fontWeight: 500, insetUnits: 1 } as const;\n\n/** MUI's `body2` for the label, `caption` for the description and the helper text. */\nexport const SWITCH_LABEL = { fontSize: 14, lineHeight: 1.43, fontWeight: 500 } as const;\nexport const SWITCH_DESCRIPTION = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 0.5 } as const;\nexport const SWITCH_HELPER = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 1 } as const;\n\n/** The label row: 16px from the control beside it, 8px above or below it. */\nexport const LABEL_GAP_UNITS = { beside: 2, stacked: 1 } as const;\n\n/**\n * The minimum height of a touch target, in px (FUT-1905).\n *\n * No entry in {@link SWITCH_SIZES} reaches it — `xl`, the largest, is 34px tall\n * and `md` is 26 — so a consumer cannot buy a legal target by passing a bigger\n * `size`. The label is what clears it: see `SwitchLabel` in `Switch.parts.tsx`.\n */\nexport const TAP_TARGET_MIN = 40;\n\n/**\n * `neutral`'s three greys, and the literals the web falls back to for a theme\n * whose grey ramp omits a step. Same three steps `Button` draws its neutral\n * from.\n */\nexport const NEUTRAL_GREY = { main: 700, dark: 800, light: 500 } as const;\nexport const NEUTRAL_FALLBACK = {\n main: NEUTRAL_RAMP[NEUTRAL_GREY.main],\n dark: NEUTRAL_RAMP[NEUTRAL_GREY.dark],\n light: NEUTRAL_RAMP[NEUTRAL_GREY.light],\n} as const;\nexport const NEUTRAL_CONTRAST = ABSOLUTE_INK.white;\n\n/**\n * The RESTING thumb — the knob while the switch is off (FUT-1924).\n *\n * It stays white, and the reason is worth stating because the checked thumb no\n * longer is: the resting track is `theme.palette.action.disabled` washed over\n * the page, which no tenant picks, and a white knob on it is the conventional\n * look in both modes. The CHECKED track is `palette.main`, a colour the tenant\n * does pick, and that is where a stated white was a defect. See `checkedInk`\n * in `Switch.styles.ts` and its native twin.\n */\nexport const RESTING_THUMB = ABSOLUTE_INK.white;\n\n/** Hover: the thumb lifts a shade and takes a halo of the hue. */\nexport const SWITCH_HOVER = { thumbScale: 1.05, elevation: 4, blur: 12, alpha: 0.2 } as const;\n\n/** Focus: MUI rings the thumb rather than moving it. */\nexport const SWITCH_FOCUS_RING = { width: 6, alpha: 0.2 } as const;\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** Whether this variant prints its wording inside the track. */\nexport const showsTrackLabels = (variant: SwitchVariant | undefined, onText?: string, offText?: string): boolean =>\n variant === 'label' && Boolean(onText ?? offText);\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SwitchBaseProps } from './Switch.base';\nimport {\n DISABLED,\n IOS_THUMB_SHADOW,\n MUI_SHADOWS,\n NEUTRAL_CONTRAST,\n RESTING_THUMB,\n NEUTRAL_FALLBACK,\n NEUTRAL_GREY,\n SWITCH_BLACK,\n SWITCH_DESCRIPTION,\n SWITCH_GLASS,\n SWITCH_GLOW,\n SWITCH_GRADIENT,\n SWITCH_HELPER,\n SWITCH_LABEL,\n THUMB_ELEVATION,\n TRACK_RADIUS,\n thumbRadius,\n trackColor,\n type SwitchGeometry,\n type SwitchLook,\n} from './Switch.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { inkOver } from '../../../tokens/theme';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Switch` PAINTS.\n *\n * The web hands MUI's `Switch` a style object and MUI draws the track and the\n * thumb; React Native has no such control at this size, so the native half\n * draws both itself — from this file, off the same table.\n */\nexport interface SwitchPalette {\n main: string;\n dark: string;\n light: string;\n contrastText: string;\n}\n\nexport interface SwitchState {\n checked: boolean;\n disabled: boolean;\n}\n\n/** The web's `getColorFromTheme`: `danger` is the error palette, `neutral` three greys. */\nexport function switchPalette(theme: UiTheme, color: ColorValue): SwitchPalette {\n if (color === 'neutral') {\n return {\n main: theme.palette.grey[NEUTRAL_GREY.main] || NEUTRAL_FALLBACK.main,\n dark: theme.palette.grey[NEUTRAL_GREY.dark] || NEUTRAL_FALLBACK.dark,\n light: theme.palette.grey[NEUTRAL_GREY.light] || NEUTRAL_FALLBACK.light,\n contrastText: NEUTRAL_CONTRAST,\n };\n }\n const palette = theme.palette[color];\n return {\n main: palette.main,\n dark: palette.dark,\n light: palette.light,\n contrastText: palette.contrastText || NEUTRAL_CONTRAST,\n };\n}\n\n/** Which of the switch's own flags change how it paints. */\nexport type SwitchFlagKeys = 'glow' | 'glass' | 'gradient' | 'loading' | 'pulse';\nexport type SwitchPaint = Pick<SwitchBaseProps, SwitchFlagKeys>;\n\n/**\n * The bar behind the thumb.\n *\n * `gradient` paints the gradient's FIRST stop flat — React Native core has no\n * gradient fill — and `glass` its paper wash without the blur.\n */\nexport function trackStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n ...StyleSheetAbsoluteFill,\n borderRadius: TRACK_RADIUS[look](geometry.height),\n backgroundColor: state.checked\n ? palette.main\n : trackColor({ black: SWITCH_BLACK, disabled: theme.palette.action.disabled }, look),\n opacity: disabledTrackOpacity(state),\n };\n\n if (paint.glass) {\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.trackAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n }\n if (paint.gradient) {\n return { ...base, backgroundColor: gradientFirstStop(palette, state.checked) };\n }\n if (paint.glow && state.checked) {\n return {\n ...base,\n boxShadow: `0 0 ${SWITCH_GLOW.blur}px ${alpha(palette.main, SWITCH_GLOW.alpha)}, inset 0 0 ${SWITCH_GLOW.insetBlur}px ${alpha(palette.main, SWITCH_GLOW.insetAlpha)}`,\n };\n }\n return base;\n}\n\n/**\n * The ink on the CHECKED track — the thumb, and the `on` wording (FUT-1924).\n *\n * Both halves of the component had a stated `#fff` here, and the checked track\n * is the one surface a tenant chooses: a pale brand got a white knob on a pale\n * bar, which reads as OFF while it is on.\n *\n * **The fills are THIS renderer's, not the web's, and they differ.** The web\n * paints a real three-stop gradient and hands `checkedInk` all three\n * (`Switch.styles.ts`); React Native has no gradient without a dependency, so\n * `trackStyle` shows `gradientFirstStop` — `palette.light`, FLAT — and\n * `NATIVE-NOTES.md` records that as a known divergence. Passing the web's set\n * here would judge the ink against two fills native never draws, and the two\n * renderers then disagree on the same palette: measured on `#00897b`, the web\n * answers white and this answered dark ink, because `main` and `dark` were in\n * the list and only `light` is on screen.\n *\n * So the gradient case is ONE fill, which is the one it paints.\n */\nexport function checkedInk(paint: SwitchPaint, palette: SwitchPalette): string {\n const fills = [paint.gradient ? palette.light || palette.main : palette.main];\n\n return inkOver(fills, palette.contrastText || NEUTRAL_CONTRAST);\n}\n\n/** The web's two gradients, at the stop a flat fill can show. */\nfunction gradientFirstStop(palette: SwitchPalette, checked: boolean): string {\n if (checked) return palette.light || palette.main;\n return alpha(palette.light || palette.main, SWITCH_GRADIENT.resting.lightAlpha);\n}\n\nconst disabledTrackOpacity = (state: SwitchState): number => {\n if (!state.disabled) return 1;\n return state.checked ? DISABLED.checkedTrackOpacity : DISABLED.trackOpacity;\n};\n\n/** React Native has no `StyleSheet.absoluteFillObject` constant worth importing for four keys. */\nconst StyleSheetAbsoluteFill = { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 } as const;\n\n/** Disabled greys out; checked takes the track's ink; resting stays white. */\nfunction thumbFill(\n paint: SwitchPaint,\n palette: SwitchPalette,\n state: SwitchState,\n theme: UiTheme,\n): string {\n if (state.disabled) return theme.palette.grey[DISABLED.thumbGrey] ?? RESTING_THUMB;\n return state.checked ? checkedInk(paint, palette) : RESTING_THUMB;\n}\n\n/**\n * The knob: round for iOS and the default, squarer for Android and Material.\n * White while resting, the checked track's own ink once on — see\n * {@link RESTING_THUMB} and {@link checkedInk}.\n */\nexport function thumbStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n position: 'absolute',\n width: geometry.thumbSize,\n height: geometry.thumbSize,\n borderRadius: thumbRadius(look, geometry.thumbSize),\n backgroundColor: thumbFill(paint, palette, state, theme),\n boxShadow: look === 'ios' ? IOS_THUMB_SHADOW : (MUI_SHADOWS[THUMB_ELEVATION[look]] ?? 'none'),\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n if (!paint.glass) return base;\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.thumbAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n}\n\n/** MUI's `body2` at 500, in the error hue when the row is in error. */\nexport function labelTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_LABEL.fontSize,\n lineHeight: SWITCH_LABEL.fontSize * SWITCH_LABEL.lineHeight,\n fontWeight: String(SWITCH_LABEL.fontWeight) as TextStyle['fontWeight'],\n };\n}\n\n/** MUI's `caption`, 4px under the label. */\nexport function descriptionTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_DESCRIPTION.fontSize,\n lineHeight: SWITCH_DESCRIPTION.fontSize * SWITCH_DESCRIPTION.lineHeight,\n marginTop: theme.spacing(SWITCH_DESCRIPTION.marginTopUnits),\n };\n}\n\n/** `FormHelperText`, 8px under the whole control. */\nexport function helperTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_HELPER.fontSize,\n lineHeight: SWITCH_HELPER.fontSize * SWITCH_HELPER.lineHeight,\n marginTop: theme.spacing(SWITCH_HELPER.marginTopUnits),\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/form/Switch/Switch.native.tsx","../../../src/components/form/Switch/Switch.helpers.ts","../../../src/components/form/Switch/Switch.metrics.ts","../../../src/components/form/Switch/Switch.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Animated,\n Easing,\n Platform,\n Pressable,\n StyleSheet,\n Text as RNText,\n View,\n type GestureResponderEvent,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveSwitchProps, withoutSwitchProps, type ResolvedSwitchProps } from './Switch.helpers';\nimport {\n descriptionTextStyle,\n helperTextStyle,\n labelTextStyle,\n checkedInk,\n switchPalette,\n thumbStyle,\n trackStyle,\n type SwitchPaint,\n type SwitchState,\n} from './Switch.look.native';\nimport {\n LABEL_GAP_UNITS,\n SWITCH_ICON,\n SWITCH_ICON_SIZES,\n SWITCH_PULSE,\n SWITCH_SPINNER,\n SWITCH_TRANSITION,\n TRACK_LABEL,\n geometryOf,\n lookOf,\n showsTrackLabels,\n thumbTravel,\n type SwitchGeometry,\n} from './Switch.metrics';\nimport type { SwitchProps } from './Switch.types.native';\nimport { webKeyDown } from '../../../platform/aria';\nimport { childTestId, resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\n\nconst nativeDriver = Platform.OS !== 'web';\n\n/** A 0→1 value that follows `on`, over MUI's 300ms curve unless animation is off. */\nfunction useProgress(on: boolean, animated: boolean): Animated.Value {\n const progress = React.useRef(new Animated.Value(on ? 1 : 0)).current;\n React.useEffect(() => {\n const timing = Animated.timing(progress, {\n toValue: on ? 1 : 0,\n duration: animated ? SWITCH_TRANSITION.ms : 0,\n easing: Easing.bezier(0.4, 0, 0.2, 1),\n useNativeDriver: nativeDriver,\n });\n timing.start();\n return () => timing.stop();\n }, [on, animated, progress]);\n return progress;\n}\n\n/** The web's `pulseAnimation` on the thumb: it breathes to 0.7 and 0.95 and back. */\nfunction usePulse(enabled: boolean): { opacity?: Animated.AnimatedInterpolation<number>; scale?: Animated.AnimatedInterpolation<number> } {\n const progress = React.useRef(new Animated.Value(0)).current;\n React.useEffect(() => {\n if (!enabled) return undefined;\n const loop = Animated.loop(\n Animated.timing(progress, {\n toValue: 1,\n duration: SWITCH_PULSE.ms,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: nativeDriver,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [enabled, progress]);\n if (!enabled) return {};\n return {\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minOpacity, 1] }),\n scale: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, SWITCH_PULSE.minScale, 1] }),\n };\n}\n\n/** The wording the `label` variant prints inside the track, both halves at once. */\nfunction TrackLabels({\n theme,\n onText,\n offText,\n contrastText,\n}: {\n theme: UiTheme;\n onText?: string;\n offText?: string;\n contrastText: string;\n}): React.JSX.Element {\n const inset = theme.spacing(TRACK_LABEL.insetUnits);\n const base = {\n fontFamily: theme.typography.fontFamily,\n fontSize: TRACK_LABEL.fontSize,\n fontWeight: String(TRACK_LABEL.fontWeight) as 'normal',\n };\n return (\n <View style={styles.trackLabels}>\n <RNText style={[base, { color: contrastText, marginLeft: inset }]}>{onText ?? ''}</RNText>\n <RNText style={[base, { color: theme.palette.text.secondary, marginRight: inset }]}>\n {offText ?? ''}\n </RNText>\n </View>\n );\n}\n\n/**\n * One of the two icons overlaid on the track.\n *\n * The web centres a hidden icon on the track and pins a shown one to `left: 4`\n * (or `right: 4`) with a `translate(∓50%)` — which puts half of it outside the\n * track. Same arithmetic here, in px.\n */\nfunction SwitchIcon({\n icon,\n shown,\n animated,\n size,\n side,\n width,\n}: {\n icon: React.ReactNode;\n shown: boolean;\n animated: boolean;\n size: number;\n side: 'on' | 'off';\n width: number;\n}): React.JSX.Element {\n const half = size / 2;\n const offset = shown ? SWITCH_ICON.inset - half : width / 2 - half;\n return (\n <View\n style={[\n styles.icon,\n side === 'on' ? { left: offset } : { right: offset },\n {\n width: size,\n height: size,\n opacity: shown ? 1 : 0,\n transform: [{ translateY: -half }, { scale: shown && animated ? 1 : SWITCH_ICON.hiddenScale }],\n },\n ]}\n >\n {icon}\n </View>\n );\n}\n\ninterface ControlProps {\n props: ResolvedSwitchProps;\n theme: UiTheme;\n checked: boolean;\n inactive: boolean;\n onToggle: (event?: GestureResponderEvent) => void;\n rest: Record<string, unknown>;\n testID: string;\n}\n\n/**\n * The track, the thumb, and everything overlaid on them.\n *\n * The control carries its own NAME (FUT-1905). React Native has no `<label\n * for>` to wire the words beside it with, so the name has to be stated on the\n * pressable itself or the control announces as \"checkbox, checked\" and nothing\n * else — which is the defect the web half of this ticket fixed, still live\n * here. A caller's own `aria-label` wins, because a caller that wrote one meant\n * it to differ from the visible words.\n */\nfunction SwitchControl({ props, theme, checked, inactive, onToggle, rest, testID }: ControlProps): React.JSX.Element {\n const { variant, color, size, animated, loading, onIcon, offIcon, onText, offText } = props;\n const geometry: SwitchGeometry = geometryOf(size, props.trackWidth, props.trackHeight);\n const look = lookOf(variant);\n const palette = switchPalette(theme, color);\n const state: SwitchState = { checked, disabled: inactive };\n const paint: SwitchPaint = props;\n const { rest: restX, travel } = thumbTravel(look, geometry);\n const progress = useProgress(checked, animated);\n const pulse = usePulse(props.pulse && !loading);\n const iconSize = SWITCH_ICON_SIZES[size];\n\n return (\n <Pressable\n testID={testID}\n role=\"checkbox\"\n aria-label={(rest['aria-label'] as string | undefined) ?? props.label}\n aria-checked={checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={onToggle}\n {...webKeyDown((event) => {\n if (event.key === ' ' || event.key === 'Spacebar') onToggle();\n })}\n style={{ width: geometry.width, height: geometry.height }}\n {...rest}\n >\n <View style={trackStyle(theme, paint, palette, geometry, look, state)} />\n {showsTrackLabels(variant, onText, offText) ? (\n <TrackLabels\n theme={theme}\n onText={onText}\n offText={offText}\n contrastText={checkedInk(paint, palette)}\n />\n ) : null}\n {onIcon == null ? null : (\n <SwitchIcon icon={onIcon} shown={checked} animated={animated} size={iconSize} side=\"on\" width={geometry.width} />\n )}\n {offIcon == null ? null : (\n <SwitchIcon icon={offIcon} shown={!checked} animated={animated} size={iconSize} side=\"off\" width={geometry.width} />\n )}\n <Animated.View\n style={[\n thumbStyle(theme, paint, palette, geometry, look, state),\n { top: geometry.padding, left: restX, opacity: pulse.opacity },\n {\n transform: [\n { translateX: progress.interpolate({ inputRange: [0, 1], outputRange: [0, travel] }) },\n ...(pulse.scale === undefined ? [] : [{ scale: pulse.scale }]),\n ],\n },\n ]}\n >\n {loading ? (\n <ActivityIndicator\n size={geometry.thumbSize * SWITCH_SPINNER.sizeRatio}\n color={palette.main}\n accessibilityLabel=\"loading\"\n />\n ) : null}\n </Animated.View>\n </Pressable>\n );\n}\n\n/** The label and its description, in the column beside (or above) the control. */\nfunction LabelBlock({\n theme,\n label,\n description,\n error,\n testID,\n}: {\n theme: UiTheme;\n label: string;\n description?: string;\n error: boolean;\n testID: string;\n}): React.JSX.Element {\n return (\n <View style={styles.labelBlock}>\n <RNText testID={testID} style={labelTextStyle(theme, error)}>\n {label}\n </RNText>\n {description === undefined ? null : (\n <RNText style={descriptionTextStyle(theme, error)}>{description}</RNText>\n )}\n </View>\n );\n}\n\n/** The row (or column) the label and the control share, per `labelPosition`. */\nfunction labelRowStyle(theme: UiTheme, position: string): ViewStyle {\n const stacked = position === 'top' || position === 'bottom';\n return {\n flexDirection: position === 'top' ? 'column' : position === 'bottom' ? 'column-reverse' : 'row',\n alignItems: stacked ? 'flex-start' : 'center',\n gap: theme.spacing(stacked ? LABEL_GAP_UNITS.stacked : LABEL_GAP_UNITS.beside),\n width: '100%',\n };\n}\n\n/**\n * The native `Switch`.\n *\n * React Native's own `Switch` is the platform control at the platform's size,\n * with no track geometry, no thumb radius and no room for an icon — so this\n * draws the track and the thumb itself, off the same table the web styles MUI\n * with, and takes `role=\"checkbox\"` with `aria-checked` for the state a hidden\n * `<input type=\"checkbox\">` carries on the web. See `NATIVE-NOTES.md`.\n */\nexport const Switch = React.forwardRef<View, SwitchProps>((rawProps, ref) => {\n const props = resolveSwitchProps(rawProps);\n const {\n label, description, labelPosition, error, helperText, loading, disabled,\n checked, defaultChecked, onChange, onClick, onPress, style, ...others\n } = props;\n\n const theme = useUiTheme();\n const [own, setOwn] = React.useState(defaultChecked ?? false);\n const current = checked ?? own;\n const inactive = loading || disabled;\n const rest = withoutSwitchProps(others);\n\n // A keyboard toggle has no gesture behind it, so `onClick`/`onPress` — which\n // are press handlers — only fire when there is a press to report.\n const toggle = (event?: GestureResponderEvent): void => {\n const next = !current;\n setOwn(next);\n onChange?.({ target: { checked: next } }, next);\n if (event === undefined) return;\n onClick?.(event);\n onPress?.(event);\n };\n\n const control = (\n <SwitchControl\n props={props}\n theme={theme}\n checked={current}\n inactive={inactive}\n onToggle={toggle}\n rest={rest}\n testID={resolveTestId(others, 'switch') ?? 'switch'}\n />\n );\n\n return (\n <View ref={ref} testID={childTestId(others, 'container', 'switch')} style={style}>\n {label === undefined ? (\n control\n ) : (\n <View style={labelRowStyle(theme, labelPosition)}>\n {labelPosition === 'start' ? control : null}\n <LabelBlock\n theme={theme}\n label={label}\n description={description}\n error={error}\n testID={childTestId(others, 'label', 'switch')}\n />\n {labelPosition === 'start' ? null : control}\n </View>\n )}\n {helperText === undefined ? null : (\n <RNText testID={childTestId(others, 'helper', 'switch')} style={helperTextStyle(theme, error)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSwitch.displayName = 'Switch';\n\nconst styles = StyleSheet.create({\n labelBlock: {\n flex: 1,\n },\n trackLabels: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n pointerEvents: 'none',\n },\n icon: {\n position: 'absolute',\n top: '50%',\n zIndex: 2,\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n },\n});\n","import type { SwitchBaseProps } from './Switch.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SwitchDefaultedKeys =\n | 'variant'\n | 'color'\n | 'size'\n | 'glow'\n | 'glass'\n | 'gradient'\n | 'labelPosition'\n | 'error'\n | 'animated'\n | 'loading'\n | 'ripple'\n | 'pulse'\n | 'disabled';\n\nexport type ResolvedSwitchProps<P extends SwitchBaseProps = SwitchBaseProps> = P &\n Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>>;\n\n/** `Switch.tsx`'s own `DEFAULTS`, plus the `disabled` MUI would have defaulted. */\nconst SWITCH_DEFAULTS: Required<Pick<SwitchBaseProps, SwitchDefaultedKeys>> = {\n variant: 'default',\n color: 'primary',\n size: 'md',\n glow: false,\n glass: false,\n gradient: false,\n labelPosition: 'end',\n error: false,\n animated: true,\n loading: false,\n ripple: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSwitchProps = <P extends SwitchBaseProps>(props: P): ResolvedSwitchProps<P> =>\n withDefaults(props, SWITCH_DEFAULTS as Partial<P>) as ResolvedSwitchProps<P>;\n\n/**\n * Every prop the switch consumes itself.\n *\n * Listed so what is left over — `aria-label`, `aria-describedby`, an `id` — can\n * be spread onto the control without the component's own props riding along.\n * react-native-web would drop them and React Native ignore them, but a prop\n * that reaches an element it means nothing to is a prop nobody can explain.\n */\nexport const SWITCH_BASE_KEYS = [\n 'variant', 'color', 'size', 'label', 'description', 'glow', 'glass', 'gradient',\n 'labelPosition', 'onIcon', 'offIcon', 'onText', 'offText', 'error', 'helperText',\n 'trackWidth', 'trackHeight', 'animated', 'loading', 'ripple', 'pulse', 'disabled',\n 'testID', 'dataTestId', 'data-testid',\n] as const satisfies ReadonlyArray<keyof SwitchBaseProps | 'data-testid'>;\n\n/** `props` without any of them, for spreading onto the control. */\nexport function withoutSwitchProps(props: object): Record<string, unknown> {\n const own = new Set<string>(SWITCH_BASE_KEYS);\n return Object.fromEntries(Object.entries(props).filter(([key]) => !own.has(key)));\n}\n","import type { SwitchVariant } from './Switch.base';\nimport { alpha } from '../../../tokens/color';\nimport { ABSOLUTE_INK, ELEVATION_SHADOWS, NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Switch` RENDERERS DRAW WITH.\n *\n * `Switch.styles.ts` (web, emotion over MUI's `Switch`) and\n * `Switch.native.tsx` (React Native, drawing the track and thumb itself) read\n * this one table: the geometry per size, the four looks' radii and shadows,\n * the resting track colours, and the type the label, the description and the\n * helper are set in.\n *\n * Spacing is in SPACING UNITS where the web writes `theme.spacing(n)`;\n * everything else is px, a ratio or an alpha.\n */\n\n/** MUI's `palette.common.black`, which `UiTheme` does not carry. */\nexport const SWITCH_BLACK = ABSOLUTE_INK.black;\n\nexport interface SwitchGeometry {\n width: number;\n height: number;\n padding: number;\n thumbSize: number;\n}\n\nexport const SWITCH_SIZES: Record<SizeValue, SwitchGeometry> = {\n xs: { width: 34, height: 18, padding: 1, thumbSize: 14 },\n sm: { width: 42, height: 22, padding: 1, thumbSize: 18 },\n md: { width: 50, height: 26, padding: 1, thumbSize: 22 },\n lg: { width: 58, height: 30, padding: 2, thumbSize: 24 },\n xl: { width: 66, height: 34, padding: 2, thumbSize: 28 },\n};\n\n/** The four platform looks. `label` prints its wording on a `default` track. */\nexport type SwitchLook = 'ios' | 'android' | 'material' | 'default';\n\nexport const lookOf = (variant?: string): SwitchLook => {\n if (variant === 'ios') return 'ios';\n if (variant === 'android') return 'android';\n if (variant === 'material') return 'material';\n return 'default';\n};\n\n/** Track geometry once the caller's overrides and the size preset are combined. */\nexport const geometryOf = (size: SizeValue | undefined, width?: number, height?: number): SwitchGeometry => {\n const preset = SWITCH_SIZES[size as SizeValue] ?? SWITCH_SIZES.md;\n return { ...preset, width: width || preset.width, height: height || preset.height };\n};\n\n/**\n * The thumb's corner. `'50%'` is what the web emits; a renderer with no\n * percentage radius asks {@link thumbRadius} for the px instead.\n */\nexport const THUMB_RADIUS: Record<SwitchLook, (thumbSize: number) => number | string> = {\n ios: () => '50%',\n android: () => 4,\n material: (thumbSize) => thumbSize / 3,\n default: () => '50%',\n};\n\nexport const TRACK_RADIUS: Record<SwitchLook, (height: number) => number> = {\n ios: (height) => height / 2,\n android: (height) => height / 3,\n material: (height) => height / 2.5,\n default: (height) => height / 2,\n};\n\n/** The web's `'50%'` as the px a circle of this size needs. */\nexport const thumbRadius = (look: SwitchLook, thumbSize: number): number => {\n const radius = THUMB_RADIUS[look](thumbSize);\n return typeof radius === 'number' ? radius : thumbSize / 2;\n};\n\n/**\n * The elevation the thumb rests at per look — an INDEX into `theme.shadows`,\n * not the shadow itself, so a host that re-themes MUI's elevations keeps\n * moving the web. {@link MUI_SHADOWS} carries MUI's own values for the native\n * side, which has no `theme.shadows` to read.\n */\nexport const THUMB_ELEVATION: Record<SwitchLook, number> = { ios: 0, android: 3, material: 2, default: 2 };\n\nexport const MUI_SHADOWS: Record<number, string> = {\n 2: ELEVATION_SHADOWS[2],\n 3: ELEVATION_SHADOWS[3],\n};\n\n/**\n * How a shadow builder writes one of its lengths. Native takes the px as they\n * stand ({@link AS_PX}); the web hands in its type scale (`rem`), so the iOS\n * shadows scale with the theme like every other length it draws.\n */\nexport type ShadowLength = (px: number) => string;\n\n/** A length written as the px it was drawn at — what native reads. */\nexport const AS_PX: ShadowLength = (value) => `${value}px`;\n\n/** The iOS thumb's own three-layer shadow. */\nexport const iosThumbShadow = (length: ShadowLength = AS_PX): string =>\n `0 ${length(3)} ${length(1)} 0 ${alpha(SWITCH_BLACK, 0.04)}, 0 ${length(3)} ${length(8)} 0 ${alpha(SWITCH_BLACK, 0.12)}, 0 ${length(1)} 0 0 ${alpha(SWITCH_BLACK, 0.08)}`;\n\n/** {@link iosThumbShadow} in px, as native draws it. */\nexport const IOS_THUMB_SHADOW = iosThumbShadow();\n\n/** The iOS track's inset hairline and inner shade. */\nexport const iosTrackShadow = (length: ShadowLength = AS_PX): string =>\n `inset 0 0 0 ${length(0.5)} ${alpha(SWITCH_BLACK, 0.1)}, inset 0 ${length(2)} ${length(3)} ${alpha(SWITCH_BLACK, 0.12)}`;\n\n/** The resting track: a black wash on iOS, the disabled ink elsewhere. */\nexport const TRACK_ALPHA = { ios: 0.1, android: 0.2, other: 0.3 } as const;\n\n/**\n * `black` is MUI's `palette.common.black` on the web and {@link SWITCH_BLACK}\n * on native, whose theme has no `common` — the same `#000` either way, passed\n * in rather than assumed so a host that themes it still moves the web.\n */\nexport const trackColor = (ink: { black: string; disabled: string }, look: SwitchLook): string => {\n if (look === 'ios') return alpha(ink.black, TRACK_ALPHA.ios);\n const strength = look === 'android' ? TRACK_ALPHA.android : TRACK_ALPHA.other;\n return alpha(ink.disabled, strength);\n};\n\n/** How far the thumb travels, and where it starts. iOS insets differently. */\nexport const thumbTravel = (look: SwitchLook, geometry: SwitchGeometry): { rest: number; travel: number } => {\n const { width, thumbSize, padding } = geometry;\n if (look === 'ios') {\n // The web nudges the whole switch base 2px right and shortens the trip.\n return { rest: padding + IOS_BASE_OFFSET, travel: width - thumbSize - IOS_TRAVEL_INSET };\n }\n return { rest: padding, travel: width - thumbSize - padding * 2 };\n};\n\nexport const IOS_BASE_OFFSET = 2;\nexport const IOS_TRAVEL_INSET = 4;\n\n/** MUI's 300ms `cubic-bezier(0.4, 0, 0.2, 1)`, on everything the switch moves. */\nexport const SWITCH_TRANSITION = { ms: 300, easing: 'cubic-bezier(0.4, 0, 0.2, 1)' } as const;\n\n/** The disabled treatment: the thumb greys and the track fades. */\nexport const DISABLED = { trackOpacity: 0.3, checkedTrackOpacity: 0.5, thumbGrey: 100 } as const;\n\n/** `glass`: a paper wash under a blur, inside a faint divider hairline. */\nexport const SWITCH_GLASS = {\n trackAlpha: 0.1,\n thumbAlpha: 0.9,\n borderAlpha: 0.2,\n trackBlur: 20,\n thumbBlur: 10,\n} as const;\n\n/** `gradient`: the checked track runs light → main → dark; the resting one is fainter. */\nexport const SWITCH_GRADIENT = {\n checked: { angleDeg: 90, stops: [0, 50, 100] },\n resting: { angleDeg: 135, lightAlpha: 0.3, mainAlpha: 0.2 },\n shimmerMs: 3000,\n} as const;\n\n/** `glow`: a halo of the hue around the checked track, breathing every two seconds. */\nexport const SWITCH_GLOW = { blur: 10, alpha: 0.6, insetBlur: 10, insetAlpha: 0.2, ms: 2000 } as const;\n\n/** `pulse`: the thumb breathes; `ripple`: a wash of the hue expands under the pointer. */\nexport const SWITCH_PULSE = { ms: 2000, minOpacity: 0.7, minScale: 0.95 } as const;\nexport const SWITCH_RIPPLE = { alpha: 0.2, ms: 600, scale: 2 } as const;\n\n/** `loading`: a 2px ring inside the thumb, turning once a second. */\nexport const SWITCH_SPINNER = { sizeRatio: 0.6, borderWidth: 2, ms: 1000 } as const;\n\n/** The two icons overlaid on the track, at their own size per step of the scale. */\nexport const SWITCH_ICON_SIZES: Record<SizeValue, number> = { xs: 12, sm: 14, md: 16, lg: 18, xl: 20 };\n/** Where a shown icon sits, and how small a hidden one is drawn. */\nexport const SWITCH_ICON = { inset: 4, hiddenScale: 0.8 } as const;\n\n/** The wording the `label` variant prints inside the track: 0.75rem at 500, 8px in. */\nexport const TRACK_LABEL = { fontSize: 12, fontWeight: 500, insetUnits: 1 } as const;\n\n/** MUI's `body2` for the label, `caption` for the description and the helper text. */\nexport const SWITCH_LABEL = { fontSize: 14, lineHeight: 1.43, fontWeight: 500 } as const;\nexport const SWITCH_DESCRIPTION = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 0.5 } as const;\nexport const SWITCH_HELPER = { fontSize: 12, lineHeight: 1.66, marginTopUnits: 1 } as const;\n\n/** The label row: 16px from the control beside it, 8px above or below it. */\nexport const LABEL_GAP_UNITS = { beside: 2, stacked: 1 } as const;\n\n/**\n * The minimum height of a touch target, in px (FUT-1905).\n *\n * No entry in {@link SWITCH_SIZES} reaches it — `xl`, the largest, is 34px tall\n * and `md` is 26 — so a consumer cannot buy a legal target by passing a bigger\n * `size`. The label is what clears it: see `SwitchLabel` in `Switch.parts.tsx`.\n */\nexport const TAP_TARGET_MIN = 40;\n\n/**\n * `neutral`'s three greys, and the literals the web falls back to for a theme\n * whose grey ramp omits a step. Same three steps `Button` draws its neutral\n * from.\n */\nexport const NEUTRAL_GREY = { main: 700, dark: 800, light: 500 } as const;\nexport const NEUTRAL_FALLBACK = {\n main: NEUTRAL_RAMP[NEUTRAL_GREY.main],\n dark: NEUTRAL_RAMP[NEUTRAL_GREY.dark],\n light: NEUTRAL_RAMP[NEUTRAL_GREY.light],\n} as const;\nexport const NEUTRAL_CONTRAST = ABSOLUTE_INK.white;\n\n/**\n * The RESTING thumb — the knob while the switch is off (FUT-1924).\n *\n * It stays white, and the reason is worth stating because the checked thumb no\n * longer is: the resting track is `theme.palette.action.disabled` washed over\n * the page, which no tenant picks, and a white knob on it is the conventional\n * look in both modes. The CHECKED track is `palette.main`, a colour the tenant\n * does pick, and that is where a stated white was a defect. See `checkedInk`\n * in `Switch.styles.ts` and its native twin.\n */\nexport const RESTING_THUMB = ABSOLUTE_INK.white;\n\n/** Hover: the thumb lifts a shade and takes a halo of the hue. */\nexport const SWITCH_HOVER = { thumbScale: 1.05, elevation: 4, blur: 12, alpha: 0.2 } as const;\n\n/** Focus: MUI rings the thumb rather than moving it. */\nexport const SWITCH_FOCUS_RING = { width: 6, alpha: 0.2 } as const;\n\n/** A duration as the CSS the web has always emitted: `2000` → `2s`. */\nexport const seconds = (ms: number): string => `${ms / 1000}s`;\n\n/** Whether this variant prints its wording inside the track. */\nexport const showsTrackLabels = (variant: SwitchVariant | undefined, onText?: string, offText?: string): boolean =>\n variant === 'label' && Boolean(onText ?? offText);\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SwitchBaseProps } from './Switch.base';\nimport {\n DISABLED,\n IOS_THUMB_SHADOW,\n MUI_SHADOWS,\n NEUTRAL_CONTRAST,\n RESTING_THUMB,\n NEUTRAL_FALLBACK,\n NEUTRAL_GREY,\n SWITCH_BLACK,\n SWITCH_DESCRIPTION,\n SWITCH_GLASS,\n SWITCH_GLOW,\n SWITCH_GRADIENT,\n SWITCH_HELPER,\n SWITCH_LABEL,\n THUMB_ELEVATION,\n TRACK_RADIUS,\n thumbRadius,\n trackColor,\n type SwitchGeometry,\n type SwitchLook,\n} from './Switch.metrics';\nimport { alpha } from '../../../tokens/color';\nimport { inkOver } from '../../../tokens/theme';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { ColorValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Switch` PAINTS.\n *\n * The web hands MUI's `Switch` a style object and MUI draws the track and the\n * thumb; React Native has no such control at this size, so the native half\n * draws both itself — from this file, off the same table.\n */\nexport interface SwitchPalette {\n main: string;\n dark: string;\n light: string;\n contrastText: string;\n}\n\nexport interface SwitchState {\n checked: boolean;\n disabled: boolean;\n}\n\n/** The web's `getColorFromTheme`: `danger` is the error palette, `neutral` three greys. */\nexport function switchPalette(theme: UiTheme, color: ColorValue): SwitchPalette {\n if (color === 'neutral') {\n return {\n main: theme.palette.grey[NEUTRAL_GREY.main] || NEUTRAL_FALLBACK.main,\n dark: theme.palette.grey[NEUTRAL_GREY.dark] || NEUTRAL_FALLBACK.dark,\n light: theme.palette.grey[NEUTRAL_GREY.light] || NEUTRAL_FALLBACK.light,\n contrastText: NEUTRAL_CONTRAST,\n };\n }\n const palette = theme.palette[color];\n return {\n main: palette.main,\n dark: palette.dark,\n light: palette.light,\n contrastText: palette.contrastText || NEUTRAL_CONTRAST,\n };\n}\n\n/** Which of the switch's own flags change how it paints. */\nexport type SwitchFlagKeys = 'glow' | 'glass' | 'gradient' | 'loading' | 'pulse';\nexport type SwitchPaint = Pick<SwitchBaseProps, SwitchFlagKeys>;\n\n/**\n * The bar behind the thumb.\n *\n * `gradient` paints the gradient's FIRST stop flat — React Native core has no\n * gradient fill — and `glass` its paper wash without the blur.\n */\nexport function trackStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n ...StyleSheetAbsoluteFill,\n borderRadius: TRACK_RADIUS[look](geometry.height),\n backgroundColor: state.checked\n ? palette.main\n : trackColor({ black: SWITCH_BLACK, disabled: theme.palette.action.disabled }, look),\n opacity: disabledTrackOpacity(state),\n };\n\n if (paint.glass) {\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.trackAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n }\n if (paint.gradient) {\n return { ...base, backgroundColor: gradientFirstStop(palette, state.checked) };\n }\n if (paint.glow && state.checked) {\n return {\n ...base,\n boxShadow: `0 0 ${SWITCH_GLOW.blur}px ${alpha(palette.main, SWITCH_GLOW.alpha)}, inset 0 0 ${SWITCH_GLOW.insetBlur}px ${alpha(palette.main, SWITCH_GLOW.insetAlpha)}`,\n };\n }\n return base;\n}\n\n/**\n * The ink on the CHECKED track — the thumb, and the `on` wording (FUT-1924).\n *\n * Both halves of the component had a stated `#fff` here, and the checked track\n * is the one surface a tenant chooses: a pale brand got a white knob on a pale\n * bar, which reads as OFF while it is on.\n *\n * **The fills are THIS renderer's, not the web's, and they differ.** The web\n * paints a real three-stop gradient and hands `checkedInk` all three\n * (`Switch.styles.ts`); React Native has no gradient without a dependency, so\n * `trackStyle` shows `gradientFirstStop` — `palette.light`, FLAT — and\n * `NATIVE-NOTES.md` records that as a known divergence. Passing the web's set\n * here would judge the ink against two fills native never draws, and the two\n * renderers then disagree on the same palette: measured on `#00897b`, the web\n * answers white and this answered dark ink, because `main` and `dark` were in\n * the list and only `light` is on screen.\n *\n * So the gradient case is ONE fill, which is the one it paints.\n */\nexport function checkedInk(paint: SwitchPaint, palette: SwitchPalette): string {\n const fills = [paint.gradient ? palette.light || palette.main : palette.main];\n\n return inkOver(fills, palette.contrastText || NEUTRAL_CONTRAST);\n}\n\n/** The web's two gradients, at the stop a flat fill can show. */\nfunction gradientFirstStop(palette: SwitchPalette, checked: boolean): string {\n if (checked) return palette.light || palette.main;\n return alpha(palette.light || palette.main, SWITCH_GRADIENT.resting.lightAlpha);\n}\n\nconst disabledTrackOpacity = (state: SwitchState): number => {\n if (!state.disabled) return 1;\n return state.checked ? DISABLED.checkedTrackOpacity : DISABLED.trackOpacity;\n};\n\n/** React Native has no `StyleSheet.absoluteFillObject` constant worth importing for four keys. */\nconst StyleSheetAbsoluteFill = { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 } as const;\n\n/** Disabled greys out; checked takes the track's ink; resting stays white. */\nfunction thumbFill(\n paint: SwitchPaint,\n palette: SwitchPalette,\n state: SwitchState,\n theme: UiTheme,\n): string {\n if (state.disabled) return theme.palette.grey[DISABLED.thumbGrey] ?? RESTING_THUMB;\n return state.checked ? checkedInk(paint, palette) : RESTING_THUMB;\n}\n\n/**\n * The knob: round for iOS and the default, squarer for Android and Material.\n * White while resting, the checked track's own ink once on — see\n * {@link RESTING_THUMB} and {@link checkedInk}.\n */\nexport function thumbStyle(\n theme: UiTheme,\n paint: SwitchPaint,\n palette: SwitchPalette,\n geometry: SwitchGeometry,\n look: SwitchLook,\n state: SwitchState,\n): ViewStyle {\n const base: ViewStyle = {\n position: 'absolute',\n width: geometry.thumbSize,\n height: geometry.thumbSize,\n borderRadius: thumbRadius(look, geometry.thumbSize),\n backgroundColor: thumbFill(paint, palette, state, theme),\n boxShadow: look === 'ios' ? IOS_THUMB_SHADOW : (MUI_SHADOWS[THUMB_ELEVATION[look]] ?? 'none'),\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n if (!paint.glass) return base;\n return {\n ...base,\n backgroundColor: alpha(theme.palette.background.paper, SWITCH_GLASS.thumbAlpha),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, SWITCH_GLASS.borderAlpha),\n };\n}\n\n/** MUI's `body2` at 500, in the error hue when the row is in error. */\nexport function labelTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_LABEL.fontSize,\n lineHeight: SWITCH_LABEL.fontSize * SWITCH_LABEL.lineHeight,\n fontWeight: String(SWITCH_LABEL.fontWeight) as TextStyle['fontWeight'],\n };\n}\n\n/** MUI's `caption`, 4px under the label. */\nexport function descriptionTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_DESCRIPTION.fontSize,\n lineHeight: SWITCH_DESCRIPTION.fontSize * SWITCH_DESCRIPTION.lineHeight,\n marginTop: theme.spacing(SWITCH_DESCRIPTION.marginTopUnits),\n };\n}\n\n/** `FormHelperText`, 8px under the whole control. */\nexport function helperTextStyle(theme: UiTheme, error: boolean): TextStyle {\n return {\n color: error ? theme.palette.danger.main : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: SWITCH_HELPER.fontSize,\n lineHeight: SWITCH_HELPER.fontSize * SWITCH_HELPER.lineHeight,\n marginTop: theme.spacing(SWITCH_HELPER.marginTopUnits),\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid.body.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.body.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DataGrid.body.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.body.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AA0CD,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,MAAM,CAIjB;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC3B,KAAK,CAAC,GAAG,CAAC,OAAO,CAyBnB;AA2BD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC3B,KAAK,CAAC,GAAG,CAAC,OAAO,CA+BnB"}
|
|
@@ -6,7 +6,8 @@ export interface HeaderCellProps<T extends Record<string, unknown>> {
|
|
|
6
6
|
sort: GridSort | undefined;
|
|
7
7
|
sortable: boolean;
|
|
8
8
|
stickyHeader: boolean;
|
|
9
|
-
|
|
9
|
+
/** The header row's height, as CSS. */
|
|
10
|
+
headerHeight: string;
|
|
10
11
|
onSort: (columnId: string) => void;
|
|
11
12
|
}
|
|
12
13
|
export declare function HeaderCell<T extends Record<string, unknown>>({ column, sort, sortable, stickyHeader, headerHeight, onSort, }: HeaderCellProps<T>): React.JSX.Element;
|
|
@@ -15,7 +16,8 @@ export interface DataCellProps<T extends Record<string, unknown>> {
|
|
|
15
16
|
rowIndex: number;
|
|
16
17
|
rowId: string | number;
|
|
17
18
|
column: GridColumn<T>;
|
|
18
|
-
rowHeight
|
|
19
|
+
/** The row's height, as CSS — `DataGridModel.rowHeight`. */
|
|
20
|
+
rowHeight: string;
|
|
19
21
|
editing: NonNullable<DataGridProps<T>['editing']>;
|
|
20
22
|
model: Pick<DataGridModel<T>, 'editingCell' | 'setEditingCell'>;
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid.cells.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.cells.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DataGrid.cells.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.cells.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqC5E,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC5D,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,MAAM,GACP,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2CxC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,GAAG,EAAE,CAAC,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAC,CAAC;CACjE;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC1D,GAAG,EACH,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,GACN,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkCtC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB;AAoDD,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,KAAK,CAAC,GAAG,CAAC,OAAO,CAuCnB"}
|
|
@@ -13,7 +13,13 @@ export interface VisibleRange {
|
|
|
13
13
|
/** Everything the render needs, and nothing it has to derive. */
|
|
14
14
|
export interface DataGridModel<T extends Record<string, unknown>> {
|
|
15
15
|
containerRef: React.RefObject<HTMLDivElement | null>;
|
|
16
|
-
|
|
16
|
+
/** A row's height as CSS: the design height, density applied, through `rem`. */
|
|
17
|
+
rowHeight: string;
|
|
18
|
+
/**
|
|
19
|
+
* The same height in px (`remPx`) — what the window divides `scrollTop` by.
|
|
20
|
+
* One design number drawn two ways, so the rows and the window never disagree.
|
|
21
|
+
*/
|
|
22
|
+
rowPitch: number;
|
|
17
23
|
visibleColumns: GridColumn<T>[];
|
|
18
24
|
processedRows: T[];
|
|
19
25
|
visibleRows: T[];
|