@12-apps/ui 6.23.0 → 6.24.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/NATIVE.md +2 -1
- package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
- package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +24 -24
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +30 -30
- 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 +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +21 -21
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
- 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 +2 -2
- 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 +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +4 -3
- package/dist/_internal/components/data-display/FleetMap/FleetMap.base.js +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.base.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.helpers.js +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.hooks.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +6 -5
- package/dist/_internal/components/data-display/FleetMap/FleetMap.metrics.js +20 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.metrics.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -2
- package/dist/_internal/components/data-display/index.js +26 -25
- package/dist/_internal/components/index.js +26 -25
- package/dist/_internal/platform/aria.js.map +1 -1
- package/dist/_internal/user-avatar/user-avatar.js +4 -4
- package/dist/charts.js +10 -10
- package/dist/{chunk-WGRS4PGY.js → chunk-2C47DEVU.js} +4 -4
- package/dist/{chunk-KHWCX4LI.js → chunk-6LGWJFQK.js} +2 -2
- package/dist/{chunk-XSF6AXEU.js → chunk-6RZDDUSM.js} +2 -2
- package/dist/{chunk-L4U23SBX.js → chunk-B7DKSBAE.js} +13 -13
- package/dist/{chunk-3FLVIVOK.js → chunk-BHIGHSXA.js} +2 -2
- package/dist/chunk-BTQZ3EX3.js +45 -0
- package/dist/chunk-BTQZ3EX3.js.map +1 -0
- package/dist/{chunk-ACFGEZ4Q.js → chunk-C6KTQF4F.js} +3 -3
- package/dist/{chunk-LYSSO6WC.js → chunk-CZPU5TW3.js} +4 -4
- package/dist/{chunk-BZTFPSWT.js → chunk-DFLTUI7W.js} +7 -7
- package/dist/{chunk-URXT5TOY.js → chunk-E46PG577.js} +4 -4
- package/dist/{chunk-4XZXLB4I.js → chunk-EMUBMZMA.js} +3 -3
- package/dist/{chunk-DRHIIUDO.js → chunk-FPWB5ILF.js} +5 -5
- package/dist/{chunk-R6SBP5M5.js → chunk-GOWBYHYW.js} +4 -4
- package/dist/{chunk-MQNKRIGC.js → chunk-HMV4QMXS.js} +25 -11
- package/dist/chunk-HMV4QMXS.js.map +1 -0
- package/dist/{chunk-N2TUX4A5.js → chunk-I3E2QHTH.js} +3 -3
- package/dist/{chunk-I7HYGIEJ.js → chunk-JUHUKZGU.js} +2 -2
- package/dist/{chunk-TWQYDKCA.js → chunk-JZXWCEH5.js} +12 -9
- package/dist/chunk-JZXWCEH5.js.map +1 -0
- package/dist/{chunk-WQA4LIIK.js → chunk-KT6HWAEN.js} +4 -4
- package/dist/{chunk-2UGJIKVA.js → chunk-MZQTHSLN.js} +3 -3
- package/dist/{chunk-4SQFO4GW.js → chunk-NA7MIEG6.js} +7 -7
- package/dist/{chunk-MYGNIFZC.js → chunk-O4VCZTK4.js} +2 -2
- package/dist/{chunk-LS4FMSHY.js → chunk-OAYX4XN7.js} +4 -4
- package/dist/{chunk-Y5UCOBQN.js → chunk-OGGHD64H.js} +4 -4
- package/dist/{chunk-CBTY36TU.js → chunk-OH3YGJT5.js} +2 -2
- package/dist/{chunk-VNNG46TS.js → chunk-ORSLFKKZ.js} +6 -6
- package/dist/{chunk-VON4BFK4.js → chunk-PN5CQKA2.js} +2 -2
- package/dist/{chunk-CF3FAAPC.js → chunk-RP5FK3SO.js} +2 -2
- package/dist/{chunk-X5MPHXG5.js → chunk-RPWEXIAW.js} +6 -6
- package/dist/{chunk-YQ6TNHAC.js → chunk-TTLI6PF7.js} +5 -5
- package/dist/{chunk-OIKQO73C.js → chunk-TX5V42AY.js} +5 -5
- package/dist/{chunk-AJGYHDA5.js → chunk-U2YJCNRU.js} +4 -4
- package/dist/{chunk-W7Y6RA6W.js → chunk-WR5JFDQ5.js} +4 -4
- package/dist/{chunk-5V4UPOWK.js → chunk-XPMGFAJ3.js} +1 -1
- package/dist/chunk-XPMGFAJ3.js.map +1 -0
- package/dist/{chunk-AEGXHZQT.js → chunk-YW5T6KZ5.js} +7 -7
- package/dist/{chunk-F7VBGS4C.js → chunk-ZCPSND5Y.js} +2 -2
- package/dist/chunk-ZCPSND5Y.js.map +1 -0
- package/dist/{chunk-4LRFGB3K.js → chunk-ZRPGVHTR.js} +2 -2
- package/dist/data-display/Avatar.js +3 -3
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +10 -10
- package/dist/data-display/Chart.js +10 -10
- package/dist/data-display/Chip.js +3 -3
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +48 -48
- package/dist/data-display/FleetMap.js +6 -5
- package/dist/native/chunks/{chunk-T6BJPP3E.js → chunk-DN73KYIZ.js} +1 -1
- package/dist/native/chunks/chunk-DN73KYIZ.js.map +1 -0
- package/dist/native/chunks/chunk-GW7TQ7HO.js +215 -0
- package/dist/native/chunks/chunk-GW7TQ7HO.js.map +1 -0
- package/dist/native/chunks/chunk-MJVSQXOD.js +9 -0
- package/dist/native/chunks/chunk-MJVSQXOD.js.map +1 -0
- package/dist/native/chunks/chunk-ZAQ3AZJM.js +292 -0
- package/dist/native/chunks/chunk-ZAQ3AZJM.js.map +1 -0
- package/dist/native/data-display/Alert.js +4 -4
- package/dist/native/data-display/Avatar.js +3 -3
- package/dist/native/data-display/Badge.js +4 -4
- package/dist/native/data-display/Chip.js +3 -5
- package/dist/native/data-display/Chip.js.map +1 -1
- package/dist/native/data-display/EmptyState.js +9 -286
- package/dist/native/data-display/EmptyState.js.map +1 -1
- package/dist/native/data-display/ErrorState.js +6 -6
- package/dist/native/data-display/FleetMap.js +498 -0
- package/dist/native/data-display/FleetMap.js.map +1 -0
- package/dist/native/data-display/LoadingState.js +3 -3
- package/dist/native/feedback/Dialog.js +3 -3
- package/dist/native/form/Checkbox.js +1 -1
- package/dist/native/form/Input.js +1 -1
- package/dist/native/form/Select.js +1 -1
- package/dist/native/form/Switch.js +1 -1
- package/dist/native/layout/Card.js +3 -3
- package/dist/native/layout/Skeleton.js +6 -209
- package/dist/native/layout/Skeleton.js.map +1 -1
- package/dist/types/components/data-display/FleetMap/FleetMap.base.d.ts +141 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.base.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.d.ts.map +1 -1
- package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts +1 -1
- package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts.map +1 -1
- package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts +20 -3
- package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/FleetMap/FleetMap.metrics.d.ts +76 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.metrics.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts +13 -113
- package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts.map +1 -1
- package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts.map +1 -1
- package/dist/types/platform/aria.d.ts +13 -0
- package/dist/types/platform/aria.d.ts.map +1 -1
- package/dist/types-native/components/data-display/FleetMap/FleetMap.base.d.ts +141 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.base.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.helpers.d.ts +45 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.helpers.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.hooks.d.ts +71 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.hooks.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.metrics.d.ts +76 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.metrics.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.native.d.ts +30 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.types.native.d.ts +36 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.types.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetRoster.native.d.ts +17 -0
- package/dist/types-native/components/data-display/FleetMap/FleetRoster.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/index.native.d.ts +4 -0
- package/dist/types-native/components/data-display/FleetMap/index.native.d.ts.map +1 -0
- package/dist/types-native/platform/aria.d.ts +13 -0
- package/dist/types-native/platform/aria.d.ts.map +1 -1
- package/dist/user-avatar.js +4 -4
- package/package.json +5 -1
- package/src/components/data-display/FleetMap/FleetMap.base.ts +144 -0
- package/src/components/data-display/FleetMap/FleetMap.helpers.ts +1 -1
- package/src/components/data-display/FleetMap/FleetMap.hooks.ts +23 -4
- package/src/components/data-display/FleetMap/FleetMap.md +15 -8
- package/src/components/data-display/FleetMap/FleetMap.metrics.ts +81 -0
- package/src/components/data-display/FleetMap/FleetMap.native.tsx +185 -0
- package/src/components/data-display/FleetMap/FleetMap.tsx +8 -14
- package/src/components/data-display/FleetMap/FleetMap.types.native.ts +44 -0
- package/src/components/data-display/FleetMap/FleetMap.types.ts +19 -114
- package/src/components/data-display/FleetMap/FleetRoster.native.tsx +382 -0
- package/src/components/data-display/FleetMap/FleetRoster.tsx +17 -11
- package/src/components/data-display/FleetMap/NATIVE-NOTES.md +14 -0
- package/src/components/data-display/FleetMap/index.native.ts +10 -0
- package/src/components/data-display/FleetMap/tests.md +6 -1
- package/src/platform/aria.ts +13 -0
- package/dist/chunk-5V4UPOWK.js.map +0 -1
- package/dist/chunk-F7VBGS4C.js.map +0 -1
- package/dist/chunk-MQNKRIGC.js.map +0 -1
- package/dist/chunk-TWQYDKCA.js.map +0 -1
- package/dist/native/chunks/chunk-T6BJPP3E.js.map +0 -1
- /package/dist/{chunk-WGRS4PGY.js.map → chunk-2C47DEVU.js.map} +0 -0
- /package/dist/{chunk-KHWCX4LI.js.map → chunk-6LGWJFQK.js.map} +0 -0
- /package/dist/{chunk-XSF6AXEU.js.map → chunk-6RZDDUSM.js.map} +0 -0
- /package/dist/{chunk-L4U23SBX.js.map → chunk-B7DKSBAE.js.map} +0 -0
- /package/dist/{chunk-3FLVIVOK.js.map → chunk-BHIGHSXA.js.map} +0 -0
- /package/dist/{chunk-ACFGEZ4Q.js.map → chunk-C6KTQF4F.js.map} +0 -0
- /package/dist/{chunk-LYSSO6WC.js.map → chunk-CZPU5TW3.js.map} +0 -0
- /package/dist/{chunk-BZTFPSWT.js.map → chunk-DFLTUI7W.js.map} +0 -0
- /package/dist/{chunk-URXT5TOY.js.map → chunk-E46PG577.js.map} +0 -0
- /package/dist/{chunk-4XZXLB4I.js.map → chunk-EMUBMZMA.js.map} +0 -0
- /package/dist/{chunk-DRHIIUDO.js.map → chunk-FPWB5ILF.js.map} +0 -0
- /package/dist/{chunk-R6SBP5M5.js.map → chunk-GOWBYHYW.js.map} +0 -0
- /package/dist/{chunk-N2TUX4A5.js.map → chunk-I3E2QHTH.js.map} +0 -0
- /package/dist/{chunk-I7HYGIEJ.js.map → chunk-JUHUKZGU.js.map} +0 -0
- /package/dist/{chunk-WQA4LIIK.js.map → chunk-KT6HWAEN.js.map} +0 -0
- /package/dist/{chunk-2UGJIKVA.js.map → chunk-MZQTHSLN.js.map} +0 -0
- /package/dist/{chunk-4SQFO4GW.js.map → chunk-NA7MIEG6.js.map} +0 -0
- /package/dist/{chunk-MYGNIFZC.js.map → chunk-O4VCZTK4.js.map} +0 -0
- /package/dist/{chunk-LS4FMSHY.js.map → chunk-OAYX4XN7.js.map} +0 -0
- /package/dist/{chunk-Y5UCOBQN.js.map → chunk-OGGHD64H.js.map} +0 -0
- /package/dist/{chunk-CBTY36TU.js.map → chunk-OH3YGJT5.js.map} +0 -0
- /package/dist/{chunk-VNNG46TS.js.map → chunk-ORSLFKKZ.js.map} +0 -0
- /package/dist/{chunk-VON4BFK4.js.map → chunk-PN5CQKA2.js.map} +0 -0
- /package/dist/{chunk-CF3FAAPC.js.map → chunk-RP5FK3SO.js.map} +0 -0
- /package/dist/{chunk-X5MPHXG5.js.map → chunk-RPWEXIAW.js.map} +0 -0
- /package/dist/{chunk-YQ6TNHAC.js.map → chunk-TTLI6PF7.js.map} +0 -0
- /package/dist/{chunk-OIKQO73C.js.map → chunk-TX5V42AY.js.map} +0 -0
- /package/dist/{chunk-AJGYHDA5.js.map → chunk-U2YJCNRU.js.map} +0 -0
- /package/dist/{chunk-W7Y6RA6W.js.map → chunk-WR5JFDQ5.js.map} +0 -0
- /package/dist/{chunk-AEGXHZQT.js.map → chunk-YW5T6KZ5.js.map} +0 -0
- /package/dist/{chunk-4LRFGB3K.js.map → chunk-ZRPGVHTR.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MoreGroup,
|
|
3
3
|
fieldClearing
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-O4VCZTK4.js";
|
|
5
5
|
import {
|
|
6
6
|
useDataViewsCopy
|
|
7
7
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -180,4 +180,4 @@ function MoreFilters({
|
|
|
180
180
|
export {
|
|
181
181
|
MoreFilters
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
183
|
+
//# sourceMappingURL=chunk-6LGWJFQK.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridToolbar
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2C47DEVU.js";
|
|
4
4
|
|
|
5
5
|
// src/components/data-display/DataViews/data-views-shell-toolbar.tsx
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -64,4 +64,4 @@ function ShellToolbar({
|
|
|
64
64
|
export {
|
|
65
65
|
ShellToolbar
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-6RZDDUSM.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GridMain
|
|
3
|
+
} from "./chunk-ORSLFKKZ.js";
|
|
1
4
|
import {
|
|
2
5
|
FilterDialog,
|
|
3
6
|
GridFilterPanel
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PN5CQKA2.js";
|
|
5
8
|
import {
|
|
6
9
|
DataViewsEmpty
|
|
7
10
|
} from "./chunk-5OIH36KX.js";
|
|
8
11
|
import {
|
|
9
12
|
InlineFilterControls
|
|
10
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-I3E2QHTH.js";
|
|
11
14
|
import {
|
|
12
15
|
GridHeaderRow
|
|
13
16
|
} from "./chunk-JSH3HFDQ.js";
|
|
14
|
-
import {
|
|
15
|
-
GridMain
|
|
16
|
-
} from "./chunk-VNNG46TS.js";
|
|
17
17
|
import {
|
|
18
18
|
DataViewsPagination
|
|
19
19
|
} from "./chunk-HP2ODXNA.js";
|
|
@@ -21,22 +21,22 @@ import {
|
|
|
21
21
|
toOverflowFields,
|
|
22
22
|
useFilterOverflow
|
|
23
23
|
} from "./chunk-TQ6FPOPD.js";
|
|
24
|
+
import {
|
|
25
|
+
ShellToolbar
|
|
26
|
+
} from "./chunk-6RZDDUSM.js";
|
|
24
27
|
import {
|
|
25
28
|
resolveSelectionExtra
|
|
26
29
|
} from "./chunk-KX75HM5U.js";
|
|
27
30
|
import {
|
|
28
31
|
ScopeTabsSlot
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import {
|
|
31
|
-
ShellToolbar
|
|
32
|
-
} from "./chunk-XSF6AXEU.js";
|
|
33
|
-
import {
|
|
34
|
-
togglePillValues
|
|
35
|
-
} from "./chunk-U2ZDN2AL.js";
|
|
32
|
+
} from "./chunk-OGGHD64H.js";
|
|
36
33
|
import {
|
|
37
34
|
DataViewsLayoutProvider,
|
|
38
35
|
useDataViewsLayout
|
|
39
36
|
} from "./chunk-ZPIMPOHV.js";
|
|
37
|
+
import {
|
|
38
|
+
togglePillValues
|
|
39
|
+
} from "./chunk-U2ZDN2AL.js";
|
|
40
40
|
import {
|
|
41
41
|
useDataViewsCopy
|
|
42
42
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -237,4 +237,4 @@ function GridShell(props) {
|
|
|
237
237
|
export {
|
|
238
238
|
GridShell
|
|
239
239
|
};
|
|
240
|
-
//# sourceMappingURL=chunk-
|
|
240
|
+
//# sourceMappingURL=chunk-B7DKSBAE.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RAIL_GAP_PX
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CZPU5TW3.js";
|
|
4
4
|
import {
|
|
5
5
|
DescriptionItem
|
|
6
6
|
} from "./chunk-M4LQRQFL.js";
|
|
@@ -222,4 +222,4 @@ export {
|
|
|
222
222
|
ListCardActions,
|
|
223
223
|
ListCardTail
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-BHIGHSXA.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/components/data-display/FleetMap/FleetMap.metrics.ts
|
|
2
|
+
var FLEET_PANEL = {
|
|
3
|
+
/** Between the heading, the status region and the body. */
|
|
4
|
+
gapUnits: 1.5
|
|
5
|
+
};
|
|
6
|
+
var FLEET_ROSTER = {
|
|
7
|
+
/** Between rows. */
|
|
8
|
+
gapUnits: 0.5,
|
|
9
|
+
/** `:focus-visible` ring on the web; a device has no focus ring to draw. */
|
|
10
|
+
focusRingWidth: 2,
|
|
11
|
+
focusRingOffset: 2
|
|
12
|
+
};
|
|
13
|
+
var FLEET_ROW = {
|
|
14
|
+
/** Between the dot, the text block and the badge. */
|
|
15
|
+
gapUnits: 1.5,
|
|
16
|
+
/** `theme.spacing(y, x)`. */
|
|
17
|
+
paddingYUnits: 1,
|
|
18
|
+
paddingXUnits: 1.5,
|
|
19
|
+
/** A MULTIPLE of `theme.shape.borderRadius` — see the note above. */
|
|
20
|
+
radiusMultiple: 1
|
|
21
|
+
};
|
|
22
|
+
var FLEET_DOT = {
|
|
23
|
+
size: 10
|
|
24
|
+
};
|
|
25
|
+
var FLEET_SKELETON = {
|
|
26
|
+
/** Three bars, the height of a row with its padding. */
|
|
27
|
+
rows: 3,
|
|
28
|
+
height: 44,
|
|
29
|
+
/** A MULTIPLE, for the same reason the row's is. */
|
|
30
|
+
radiusMultiple: 1,
|
|
31
|
+
gapUnits: 1
|
|
32
|
+
};
|
|
33
|
+
var FLEET_DEFAULT_LAGGING_AFTER_SECONDS = 90;
|
|
34
|
+
var FLEET_DEFAULT_STALE_AFTER_SECONDS = 300;
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
FLEET_PANEL,
|
|
38
|
+
FLEET_ROSTER,
|
|
39
|
+
FLEET_ROW,
|
|
40
|
+
FLEET_DOT,
|
|
41
|
+
FLEET_SKELETON,
|
|
42
|
+
FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
|
|
43
|
+
FLEET_DEFAULT_STALE_AFTER_SECONDS
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=chunk-BTQZ3EX3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/FleetMap/FleetMap.metrics.ts"],"sourcesContent":["/**\n * THE NUMBERS BOTH `FleetMap` RENDERERS DRAW WITH.\n *\n * `FleetRoster.tsx` / `FleetMap.tsx` (web, MUI `sx`) and `FleetRoster.native.tsx`\n * / `FleetMap.native.tsx` (React Native) read this one table. The web hands the\n * spacing UNITS to `theme.spacing()` and the radius MULTIPLES to `sx`; native\n * multiplies the units by the theme's own spacing step and the multiples by\n * `shape.borderRadius`.\n *\n * Nothing here imports a renderer, a theme or a colour: a freshness dot's\n * COLOUR is the theme's (`success.main`, `warning.main`, `text.disabled`), and\n * the two sides reach the same palette through different doors.\n *\n * ## Why the radii are MULTIPLES and never pixels\n *\n * MUI's `sx` reads a bare number for `borderRadius` as a multiple of\n * `theme.shape.borderRadius`, so a value that already had the theme's radius\n * divided out of it is applied twice. Measured: `theme.shape.borderRadius / 4`\n * drew 4px on the default theme — which is why it looked right — and 36px on a\n * host that sets its own radius to 12. In a package whose whole premise is\n * being re-themed, only the multiple is portable, and it is the multiple that\n * both renderers store here.\n */\n\n/** `theme.spacing(n)` for the panel's own stack. */\nexport const FLEET_PANEL = {\n /** Between the heading, the status region and the body. */\n gapUnits: 1.5,\n} as const;\n\n/** The roster list box. */\nexport const FLEET_ROSTER = {\n /** Between rows. */\n gapUnits: 0.5,\n /** `:focus-visible` ring on the web; a device has no focus ring to draw. */\n focusRingWidth: 2,\n focusRingOffset: 2,\n} as const;\n\n/** One roster row. */\nexport const FLEET_ROW = {\n /** Between the dot, the text block and the badge. */\n gapUnits: 1.5,\n /** `theme.spacing(y, x)`. */\n paddingYUnits: 1,\n paddingXUnits: 1.5,\n /** A MULTIPLE of `theme.shape.borderRadius` — see the note above. */\n radiusMultiple: 1,\n} as const;\n\n/**\n * The freshness dot.\n *\n * A perfect circle, so the radius is half the box on both sides rather than\n * the web's `50%`: React Native resolves a percentage radius against the box\n * it is given, and a square box makes the two spellings agree.\n */\nexport const FLEET_DOT = {\n size: 10,\n} as const;\n\n/** What stands in for the roster before any unit has landed. */\nexport const FLEET_SKELETON = {\n /** Three bars, the height of a row with its padding. */\n rows: 3,\n height: 44,\n /** A MULTIPLE, for the same reason the row's is. */\n radiusMultiple: 1,\n gapUnits: 1,\n} as const;\n\n/**\n * How long a fix stays `live`, and then `lagging`, when the caller says nothing.\n *\n * Ninety seconds and five minutes: sized for a phone reporting every twenty\n * seconds, which is the densest cadence a battery tolerates all day. They are\n * DEFAULTS and not a rule — a fleet on five-minute trackers passes its own, and\n * the props exist so it can.\n */\nexport const FLEET_DEFAULT_LAGGING_AFTER_SECONDS = 90;\nexport const FLEET_DEFAULT_STALE_AFTER_SECONDS = 300;\n"],"mappings":";AAyBO,IAAM,cAAc;AAAA;AAAA,EAEzB,UAAU;AACZ;AAGO,IAAM,eAAe;AAAA;AAAA,EAE1B,UAAU;AAAA;AAAA,EAEV,gBAAgB;AAAA,EAChB,iBAAiB;AACnB;AAGO,IAAM,YAAY;AAAA;AAAA,EAEvB,UAAU;AAAA;AAAA,EAEV,eAAe;AAAA,EACf,eAAe;AAAA;AAAA,EAEf,gBAAgB;AAClB;AASO,IAAM,YAAY;AAAA,EACvB,MAAM;AACR;AAGO,IAAM,iBAAiB;AAAA;AAAA,EAE5B,MAAM;AAAA,EACN,QAAQ;AAAA;AAAA,EAER,gBAAgB;AAAA,EAChB,UAAU;AACZ;AAUO,IAAM,sCAAsC;AAC5C,IAAM,oCAAoC;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridShell
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-B7DKSBAE.js";
|
|
4
4
|
import {
|
|
5
5
|
useDataViewsState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TX5V42AY.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/DataViews/DataViewsGrid.tsx
|
|
9
9
|
import { useEffect, useRef } from "react";
|
|
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
|
|
|
27
27
|
export {
|
|
28
28
|
DataViewsGrid
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-C6KTQF4F.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DENSITY_ROW_PADDING
|
|
3
|
-
} from "./chunk-ZPIMPOHV.js";
|
|
4
1
|
import {
|
|
5
2
|
CellConfigProvider,
|
|
6
3
|
cellTracks
|
|
7
4
|
} from "./chunk-6VP2L3DJ.js";
|
|
5
|
+
import {
|
|
6
|
+
DENSITY_ROW_PADDING
|
|
7
|
+
} from "./chunk-ZPIMPOHV.js";
|
|
8
8
|
import {
|
|
9
9
|
default as default2
|
|
10
10
|
} from "./chunk-6DPAWXZ3.js";
|
|
@@ -129,4 +129,4 @@ export {
|
|
|
129
129
|
cellRailCount,
|
|
130
130
|
ListCardGroup
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-CZPU5TW3.js.map
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
RangePresets
|
|
3
|
-
} from "./chunk-F4RR4666.js";
|
|
4
|
-
import {
|
|
5
|
-
presetsFor
|
|
6
|
-
} from "./chunk-CBOB5AV6.js";
|
|
7
1
|
import {
|
|
8
2
|
NumberBoundInput
|
|
9
3
|
} from "./chunk-FV36LFPX.js";
|
|
@@ -13,6 +7,12 @@ import {
|
|
|
13
7
|
numericRange,
|
|
14
8
|
rangeChipLabel
|
|
15
9
|
} from "./chunk-GCZJH4XL.js";
|
|
10
|
+
import {
|
|
11
|
+
RangePresets
|
|
12
|
+
} from "./chunk-F4RR4666.js";
|
|
13
|
+
import {
|
|
14
|
+
presetsFor
|
|
15
|
+
} from "./chunk-CBOB5AV6.js";
|
|
16
16
|
import {
|
|
17
17
|
useDataViewsCopy
|
|
18
18
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -279,4 +279,4 @@ export {
|
|
|
279
279
|
RangePill,
|
|
280
280
|
PanelRangeField
|
|
281
281
|
};
|
|
282
|
-
//# sourceMappingURL=chunk-
|
|
282
|
+
//# sourceMappingURL=chunk-DFLTUI7W.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
chipKeyAction
|
|
3
|
-
} from "./chunk-BF4FYOAR.js";
|
|
4
1
|
import {
|
|
5
2
|
CHIP_SIZES,
|
|
6
3
|
CHIP_TRANSITION_EASING,
|
|
@@ -8,6 +5,9 @@ import {
|
|
|
8
5
|
HOVER_LIFT_PX,
|
|
9
6
|
HOVER_SHADOW
|
|
10
7
|
} from "./chunk-KU6VHNRV.js";
|
|
8
|
+
import {
|
|
9
|
+
chipKeyAction
|
|
10
|
+
} from "./chunk-BF4FYOAR.js";
|
|
11
11
|
|
|
12
12
|
// src/components/data-display/Chip/Chip.styles.tsx
|
|
13
13
|
import Avatar from "@mui/material/Avatar/index.js";
|
|
@@ -75,4 +75,4 @@ export {
|
|
|
75
75
|
chipStyles,
|
|
76
76
|
iconWithTestId
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
78
|
+
//# sourceMappingURL=chunk-E46PG577.js.map
|
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
} from "./chunk-4X4KM4ZB.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsGrid
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-C6KTQF4F.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
10
10
|
import {
|
|
11
11
|
ViewDialogs,
|
|
12
12
|
ViewMutationErrorAlert
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-U2YJCNRU.js";
|
|
14
14
|
import {
|
|
15
15
|
useSavedViewsController
|
|
16
16
|
} from "./chunk-HR7YTBR7.js";
|
|
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
178
178
|
export {
|
|
179
179
|
DataViewsTableBase
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-EMUBMZMA.js.map
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
chipStyles,
|
|
4
4
|
iconWithTestId,
|
|
5
5
|
makeKeyDownHandler
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-E46PG577.js";
|
|
7
|
+
import {
|
|
8
|
+
chipMuiSize
|
|
9
|
+
} from "./chunk-KU6VHNRV.js";
|
|
7
10
|
import {
|
|
8
11
|
chipRole,
|
|
9
12
|
isClickable,
|
|
10
13
|
makeTestId
|
|
11
14
|
} from "./chunk-BF4FYOAR.js";
|
|
12
|
-
import {
|
|
13
|
-
chipMuiSize
|
|
14
|
-
} from "./chunk-KU6VHNRV.js";
|
|
15
15
|
|
|
16
16
|
// src/components/data-display/Chip/Chip.tsx
|
|
17
17
|
import CancelIcon from "@mui/icons-material/Cancel";
|
|
@@ -76,4 +76,4 @@ Chip.displayName = "Chip";
|
|
|
76
76
|
export {
|
|
77
77
|
Chip
|
|
78
78
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-FPWB5ILF.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
chartValueFormatter
|
|
3
|
+
} from "./chunk-QVWNK4JO.js";
|
|
1
4
|
import {
|
|
2
5
|
getChartSpecRenderer,
|
|
3
6
|
getRegisteredChartSpecTypes
|
|
4
7
|
} from "./chunk-WKUA6P3W.js";
|
|
5
|
-
import {
|
|
6
|
-
chartValueFormatter
|
|
7
|
-
} from "./chunk-QVWNK4JO.js";
|
|
8
8
|
|
|
9
9
|
// src/components/data-display/Chart/chart-spec.ts
|
|
10
10
|
var CHART_SEMANTIC_COLORS = [
|
|
@@ -149,4 +149,4 @@ export {
|
|
|
149
149
|
parseChartSpec,
|
|
150
150
|
specToChartProps
|
|
151
151
|
};
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
152
|
+
//# sourceMappingURL=chunk-GOWBYHYW.js.map
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
freshnessOf
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XPMGFAJ3.js";
|
|
4
|
+
import {
|
|
5
|
+
FLEET_DOT,
|
|
6
|
+
FLEET_ROSTER,
|
|
7
|
+
FLEET_ROW,
|
|
8
|
+
FLEET_SKELETON
|
|
9
|
+
} from "./chunk-BTQZ3EX3.js";
|
|
4
10
|
import {
|
|
5
11
|
Skeleton
|
|
6
12
|
} from "./chunk-7VN7LFBA.js";
|
|
@@ -72,15 +78,15 @@ function rowSx(theme, selected) {
|
|
|
72
78
|
return {
|
|
73
79
|
display: "flex",
|
|
74
80
|
alignItems: "center",
|
|
75
|
-
gap: theme.spacing(
|
|
76
|
-
padding: theme.spacing(
|
|
81
|
+
gap: theme.spacing(FLEET_ROW.gapUnits),
|
|
82
|
+
padding: theme.spacing(FLEET_ROW.paddingYUnits, FLEET_ROW.paddingXUnits),
|
|
77
83
|
// `1`, not `theme.shape.borderRadius / 4`. MUI's `sx` reads a NUMBER here as
|
|
78
84
|
// a multiple of `theme.shape.borderRadius`, so dividing the theme value out
|
|
79
85
|
// and letting `sx` multiply it back in is quadratic: measured 4px on the
|
|
80
86
|
// default theme — which is why this looked right — and 36px on a host that
|
|
81
87
|
// sets its own radius to 12. In a package whose whole premise is being
|
|
82
88
|
// re-themed, only the multiple is portable.
|
|
83
|
-
borderRadius:
|
|
89
|
+
borderRadius: FLEET_ROW.radiusMultiple,
|
|
84
90
|
cursor: "pointer",
|
|
85
91
|
backgroundColor: resting,
|
|
86
92
|
"&:hover": {
|
|
@@ -119,8 +125,8 @@ function FleetRow({
|
|
|
119
125
|
"aria-hidden": "true",
|
|
120
126
|
"data-testid": `${testId}-dot`,
|
|
121
127
|
sx: {
|
|
122
|
-
width:
|
|
123
|
-
height:
|
|
128
|
+
width: FLEET_DOT.size,
|
|
129
|
+
height: FLEET_DOT.size,
|
|
124
130
|
borderRadius: "50%",
|
|
125
131
|
flexShrink: 0,
|
|
126
132
|
backgroundColor: color
|
|
@@ -143,7 +149,15 @@ function FleetRow({
|
|
|
143
149
|
);
|
|
144
150
|
}
|
|
145
151
|
function FirstLoad({ testId }) {
|
|
146
|
-
return /* @__PURE__ */ jsx(Stack, { spacing:
|
|
152
|
+
return /* @__PURE__ */ jsx(Stack, { spacing: FLEET_SKELETON.gapUnits, "data-testid": `${testId}-skeleton`, "aria-hidden": "true", children: Array.from({ length: FLEET_SKELETON.rows }, (_, row) => /* @__PURE__ */ jsx(
|
|
153
|
+
Skeleton,
|
|
154
|
+
{
|
|
155
|
+
variant: "rectangular",
|
|
156
|
+
height: FLEET_SKELETON.height,
|
|
157
|
+
borderRadius: FLEET_SKELETON.radiusMultiple
|
|
158
|
+
},
|
|
159
|
+
row
|
|
160
|
+
)) });
|
|
147
161
|
}
|
|
148
162
|
function FleetRoster({
|
|
149
163
|
units,
|
|
@@ -173,12 +187,12 @@ function FleetRoster({
|
|
|
173
187
|
sx: {
|
|
174
188
|
display: "flex",
|
|
175
189
|
flexDirection: "column",
|
|
176
|
-
gap: theme.spacing(
|
|
190
|
+
gap: theme.spacing(FLEET_ROSTER.gapUnits),
|
|
177
191
|
overflowY: "auto",
|
|
178
192
|
minWidth: 0,
|
|
179
193
|
"&:focus-visible": {
|
|
180
|
-
outline:
|
|
181
|
-
outlineOffset:
|
|
194
|
+
outline: `${FLEET_ROSTER.focusRingWidth}px solid ${theme.palette.primary.main}`,
|
|
195
|
+
outlineOffset: FLEET_ROSTER.focusRingOffset
|
|
182
196
|
}
|
|
183
197
|
},
|
|
184
198
|
children: units.map((unit, index) => /* @__PURE__ */ jsx(
|
|
@@ -202,4 +216,4 @@ function FleetRoster({
|
|
|
202
216
|
export {
|
|
203
217
|
FleetRoster
|
|
204
218
|
};
|
|
205
|
-
//# sourceMappingURL=chunk-
|
|
219
|
+
//# sourceMappingURL=chunk-HMV4QMXS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/FleetMap/FleetRoster.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { Skeleton } from '../../layout/Skeleton/Skeleton';\n\nimport { freshnessOf } from './FleetMap.helpers';\nimport { FLEET_DOT, FLEET_ROSTER, FLEET_ROW, FLEET_SKELETON } from './FleetMap.metrics';\nimport type { FleetFreshness, FleetMapCopy, FleetUnit } from './FleetMap.types';\n\n/**\n * The roster beside the map — and the ACCESSIBLE half of this component.\n *\n * A map is a picture of positions and a screen reader cannot read a picture, so\n * the panel's information is carried by this list. That is not a consolation\n * prize: the list answers the questions a dispatcher actually asks — who is\n * reporting, how recently, and what are they carrying — and it answers them in\n * an order the map cannot express.\n *\n * The map beside it is a NAMED LANDMARK rather than an `aria-hidden` one, so a\n * reader can skip it in one gesture — see `FleetCanvas`, which carries the\n * reason it must not be hidden.\n */\n\n/** Each freshness draws from the semantic palette, never a hardcoded hex. */\nfunction freshnessColor(freshness: FleetFreshness, theme: Theme): string {\n if (freshness === 'live') return theme.palette.success.main;\n if (freshness === 'lagging') return theme.palette.warning.main;\n return theme.palette.text.disabled;\n}\n\n/**\n * A row's two lines of text — the name, and the one-line summary under it.\n *\n * Split out of `FleetRow` to keep that function under the size gate, and the\n * seam is the natural one: everything here is READ, nothing is interactive.\n */\nfunction RowText({\n unit,\n copy,\n freshness,\n testId,\n}: Pick<RowProps, 'unit' | 'copy' | 'freshness' | 'testId'>): React.JSX.Element {\n const theme = useTheme();\n\n // Dropped rather than rendered empty: a phone that reports no accuracy radius\n // would otherwise print a trailing separator with nothing after it.\n const meta = [\n copy.freshness[freshness],\n copy.lastSeen(unit.staleSeconds),\n unit.accuracyM == null ? null : copy.accuracy(unit.accuracyM),\n ]\n .filter((part): part is string => Boolean(part))\n .join(' · ');\n\n return (\n <Stack sx={{ minWidth: 0, flexGrow: 1 }}>\n <Typography\n variant=\"body2\"\n component=\"p\"\n data-testid={`${testId}-label`}\n sx={{ fontWeight: theme.typography.fontWeightMedium, overflowWrap: 'anywhere' }}\n >\n {unit.label}\n </Typography>\n <Typography\n variant=\"caption\"\n component=\"p\"\n data-testid={`${testId}-meta`}\n sx={{ color: theme.palette.text.secondary }}\n >\n {meta}\n </Typography>\n </Stack>\n );\n}\n\n/**\n * Keep the selected row visible INSIDE the roster.\n *\n * The roster caps its own height, so a dispatcher arrowing through a fleet of\n * thirty otherwise walks the selection below the fold with nothing moving —\n * `aria-activedescendant` follows, and a SIGHTED keyboard user sees no feedback\n * at all.\n *\n * Watches the row's POSITION as well as its selectedness, because the roster\n * re-sorts on every poll: a rider who stays selected while their staleness\n * moves them down the list would otherwise slide out of view with the effect\n * never re-running.\n *\n * Arithmetic rather than `scrollIntoView({ block: 'nearest' })` because that\n * walks every scrollable ancestor, the document included, and `nearest` only\n * spares an ancestor the row is already visible in — which is exactly false\n * when the panel is off screen. Re-running on every re-sort, it would yank the\n * whole page back to the map on a timer, and drag it there on mount for any\n * board rendered below the fold with a selection already set.\n */\nfunction useKeptInView(\n selected: boolean,\n position: number,\n): React.RefObject<HTMLDivElement | null> {\n const row = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const box = row.current;\n const list = box?.parentElement;\n if (!selected || !box || !list) return;\n const top = box.offsetTop - list.offsetTop;\n if (top < list.scrollTop) {\n list.scrollTop = top;\n } else if (top + box.offsetHeight > list.scrollTop + list.clientHeight) {\n list.scrollTop = top + box.offsetHeight - list.clientHeight;\n }\n }, [selected, position]);\n\n return row;\n}\n\n/**\n * A row's own box, selected or not.\n *\n * Out of line because the hover rule needs the explanation more than the JSX\n * has room for: hover must never WEAKEN the selection. Written flat as\n * `'&:hover': { backgroundColor: action.hover }`, the pseudo-class wins on\n * specificity and repaints the selected row with the hover tint — measured at\n * `rgba(0,0,0,0.08)` idle against `rgba(0,0,0,0.04)` hovered, so pointing at\n * the selected row visually DESELECTED it and made it indistinguishable from\n * any other row under the cursor.\n */\nfunction rowSx(theme: Theme, selected: boolean): SxProps<Theme> {\n const resting = selected ? theme.palette.action.selected : 'transparent';\n return {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(FLEET_ROW.gapUnits),\n padding: theme.spacing(FLEET_ROW.paddingYUnits, FLEET_ROW.paddingXUnits),\n // `1`, not `theme.shape.borderRadius / 4`. MUI's `sx` reads a NUMBER here as\n // a multiple of `theme.shape.borderRadius`, so dividing the theme value out\n // and letting `sx` multiply it back in is quadratic: measured 4px on the\n // default theme — which is why this looked right — and 36px on a host that\n // sets its own radius to 12. In a package whose whole premise is being\n // re-themed, only the multiple is portable.\n borderRadius: FLEET_ROW.radiusMultiple,\n cursor: 'pointer',\n backgroundColor: resting,\n '&:hover': {\n backgroundColor: selected ? theme.palette.action.selected : theme.palette.action.hover,\n },\n };\n}\n\ninterface RowProps {\n unit: FleetUnit;\n copy: FleetMapCopy;\n freshness: FleetFreshness;\n selected: boolean;\n onSelect: (id: string) => void;\n /** The row's DOM id, which `aria-activedescendant` points at. */\n optionId: string;\n /** Where the row sits in the re-sorted roster — see the scroll effect. */\n position: number;\n testId: string;\n}\n\nfunction FleetRow({\n unit,\n copy,\n freshness,\n selected,\n onSelect,\n optionId,\n position,\n testId,\n}: RowProps): React.JSX.Element {\n const theme = useTheme();\n const color = freshnessColor(freshness, theme);\n const row = useKeptInView(selected, position);\n\n return (\n <Box\n ref={row}\n role=\"option\"\n aria-selected={selected}\n id={optionId}\n data-testid={testId}\n data-freshness={freshness}\n onClick={() => onSelect(unit.id)}\n sx={rowSx(theme, selected)}\n >\n {/* The dot repeats what the freshness word beside it already says, so it\n is hidden rather than read twice — and colour is never the only\n carrier of the state. */}\n <Box\n aria-hidden=\"true\"\n data-testid={`${testId}-dot`}\n sx={{\n width: FLEET_DOT.size,\n height: FLEET_DOT.size,\n borderRadius: '50%',\n flexShrink: 0,\n backgroundColor: color,\n }}\n />\n <RowText unit={unit} copy={copy} freshness={freshness} testId={testId} />\n {unit.badge && (\n <Typography\n variant=\"caption\"\n component=\"span\"\n data-testid={`${testId}-badge`}\n sx={{ color: theme.palette.text.secondary, flexShrink: 0 }}\n >\n {unit.badge}\n </Typography>\n )}\n </Box>\n );\n}\n\n/**\n * What stands in for the roster before any unit has landed.\n *\n * `aria-hidden`, because three grey bars are not information — the panel's\n * `aria-busy` and its optional announcement carry that. The radius is the same\n * MULTIPLE a real row uses rather than a raw pixel count: `Skeleton` forwards\n * the number into `sx`, where it scales with `theme.shape.borderRadius`, so a\n * literal `4` drew 16px against the rows' 4px on the default theme and 48px\n * against 12px on a re-themed host.\n */\nfunction FirstLoad({ testId }: { testId: string }): React.JSX.Element {\n return (\n <Stack spacing={FLEET_SKELETON.gapUnits} data-testid={`${testId}-skeleton`} aria-hidden=\"true\">\n {Array.from({ length: FLEET_SKELETON.rows }, (_, row) => (\n <Skeleton\n key={row}\n variant=\"rectangular\"\n height={FLEET_SKELETON.height}\n borderRadius={FLEET_SKELETON.radiusMultiple}\n />\n ))}\n </Stack>\n );\n}\n\nexport interface FleetRosterProps {\n units: readonly FleetUnit[];\n copy: FleetMapCopy;\n selectedId: string | null | undefined;\n onSelect: (id: string) => void;\n laggingAfterSeconds: number;\n staleAfterSeconds: number;\n loading: boolean;\n testId: string;\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport function FleetRoster({\n units,\n copy,\n selectedId,\n onSelect,\n laggingAfterSeconds,\n staleAfterSeconds,\n loading,\n testId,\n onKeyDown,\n}: FleetRosterProps): React.JSX.Element {\n const theme = useTheme();\n // Generated, not derived from `dataTestId`: two boards on one page filtered\n // from the same fleet would otherwise emit duplicate DOM ids and an ambiguous\n // `aria-activedescendant`. Same reason the heading uses one.\n const rowIdPrefix = React.useId();\n const optionId = (id: string): string => `${rowIdPrefix}-${id}`;\n\n // The selection is CONTROLLED, so it can name a unit that has since dropped\n // out of the freshness window — a courier ending their shift mid-poll. The\n // attribute must then be absent rather than pointing at an element that no\n // longer renders, which announces nothing and fails an axe audit. `mapCentre`\n // and `nextSelection` both handle the same case; this is the third place.\n const active = units.some((unit) => unit.id === selectedId) ? selectedId : null;\n\n // Only when there is nothing to show yet. Unmounting a populated listbox on\n // every poll destroys the focus inside it, so a dispatcher arrowing through\n // the roster is thrown back to the top of the page each time the data\n // refreshes — and the rows they were reading vanish and return.\n if (loading && units.length === 0) return <FirstLoad testId={testId} />;\n\n return (\n <Box\n role=\"listbox\"\n // A single tab stop with arrow keys inside, which is the listbox pattern:\n // a dispatcher tabbing past a fleet of thirty should not have to press it\n // thirty times to reach the map.\n tabIndex={0}\n aria-label={copy.rosterLabel}\n aria-activedescendant={active ? optionId(active) : undefined}\n data-testid={`${testId}-roster`}\n onKeyDown={onKeyDown}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(FLEET_ROSTER.gapUnits),\n overflowY: 'auto',\n minWidth: 0,\n '&:focus-visible': {\n outline: `${FLEET_ROSTER.focusRingWidth}px solid ${theme.palette.primary.main}`,\n outlineOffset: FLEET_ROSTER.focusRingOffset,\n },\n }}\n >\n {units.map((unit, index) => (\n <FleetRow\n key={unit.id}\n unit={unit}\n copy={copy}\n freshness={freshnessOf(unit.staleSeconds, laggingAfterSeconds, staleAfterSeconds)}\n selected={unit.id === active}\n onSelect={onSelect}\n optionId={optionId(unit.id)}\n position={index}\n testId={`${testId}-${unit.id}`}\n />\n ))}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
} from "./chunk-EJQW2IYW.js";
|
|
8
8
|
import {
|
|
9
9
|
MoreFilters
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6LGWJFQK.js";
|
|
11
11
|
import {
|
|
12
12
|
RangePill
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DFLTUI7W.js";
|
|
14
14
|
import {
|
|
15
15
|
CollapsedSearch,
|
|
16
16
|
InlineKeyword
|
|
@@ -220,4 +220,4 @@ function FilterSlots({
|
|
|
220
220
|
export {
|
|
221
221
|
InlineFilterControls
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-I3E2QHTH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AvatarView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NA7MIEG6.js";
|
|
4
4
|
import {
|
|
5
5
|
BORDER_WIDTH,
|
|
6
6
|
GROUP_HOVER,
|
|
@@ -172,4 +172,4 @@ export {
|
|
|
172
172
|
Avatar,
|
|
173
173
|
AvatarGroup
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# sourceMappingURL=chunk-JUHUKZGU.js.map
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useFleetMap
|
|
3
|
+
} from "./chunk-ZCPSND5Y.js";
|
|
1
4
|
import {
|
|
2
5
|
FleetBody
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RP5FK3SO.js";
|
|
4
7
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
|
|
9
|
+
FLEET_DEFAULT_STALE_AFTER_SECONDS,
|
|
10
|
+
FLEET_PANEL
|
|
11
|
+
} from "./chunk-BTQZ3EX3.js";
|
|
7
12
|
import {
|
|
8
13
|
SR_ONLY_SX
|
|
9
14
|
} from "./chunk-RNCQ5KHQ.js";
|
|
@@ -17,8 +22,6 @@ import Typography from "@mui/material/Typography/index.js";
|
|
|
17
22
|
import { useTheme } from "@mui/material/styles/index.js";
|
|
18
23
|
import React from "react";
|
|
19
24
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
|
-
var DEFAULT_LAGGING_AFTER_SECONDS = 90;
|
|
21
|
-
var DEFAULT_STALE_AFTER_SECONDS = 300;
|
|
22
25
|
var DEFAULT_HEIGHT = "420px";
|
|
23
26
|
function FleetStatus({
|
|
24
27
|
announcement,
|
|
@@ -37,8 +40,8 @@ var FleetMap = React.memo(
|
|
|
37
40
|
// controlled and the uncontrolled path unreachable.
|
|
38
41
|
selectedId,
|
|
39
42
|
onSelect,
|
|
40
|
-
laggingAfterSeconds =
|
|
41
|
-
staleAfterSeconds =
|
|
43
|
+
laggingAfterSeconds = FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
|
|
44
|
+
staleAfterSeconds = FLEET_DEFAULT_STALE_AFTER_SECONDS,
|
|
42
45
|
height = DEFAULT_HEIGHT,
|
|
43
46
|
loading = false,
|
|
44
47
|
className,
|
|
@@ -59,7 +62,7 @@ var FleetMap = React.memo(
|
|
|
59
62
|
"aria-labelledby": headingId,
|
|
60
63
|
className,
|
|
61
64
|
"data-testid": testId,
|
|
62
|
-
sx: { display: "flex", flexDirection: "column", gap: theme.spacing(
|
|
65
|
+
sx: { display: "flex", flexDirection: "column", gap: theme.spacing(FLEET_PANEL.gapUnits), minWidth: 0 },
|
|
63
66
|
children: [
|
|
64
67
|
/* @__PURE__ */ jsx(
|
|
65
68
|
Typography,
|
|
@@ -110,4 +113,4 @@ export {
|
|
|
110
113
|
FleetMap,
|
|
111
114
|
FleetMap_default
|
|
112
115
|
};
|
|
113
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-JZXWCEH5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/FleetMap/FleetMap.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { SR_ONLY_SX } from '../../form/Label/Label.styles';\nimport { EmptyState } from '../EmptyState/EmptyState';\n\nimport { FleetBody } from './FleetBody';\nimport { useFleetMap } from './FleetMap.hooks';\nimport {\n FLEET_DEFAULT_LAGGING_AFTER_SECONDS,\n FLEET_DEFAULT_STALE_AFTER_SECONDS,\n FLEET_PANEL,\n} from './FleetMap.metrics';\nimport type { FleetMapProps } from './FleetMap.types';\n\n/** The map's own default height. Overridable, and never a hardcoded viewport. */\nconst DEFAULT_HEIGHT = '420px';\n\n/**\n * The reload announcement, and nothing else.\n *\n * `aria-busy` marks the region stale for assistive technology but UTTERS\n * nothing, and the skeletons beside it are `aria-hidden` — so a screen-reader\n * user got silence while the roster reloaded. This is the utterance.\n *\n * Optional by design: the sentence is in the reader's language, which only the\n * caller knows, and inventing an English one in a component whose whole premise\n * is that every word arrives through `copy` would be the bug it exists to\n * avoid. No `copy.loading`, no region.\n *\n * ## The node outlives the text, and that is the whole trick\n *\n * A live region has to be in the DOM BEFORE its content changes; a screen\n * reader watches an existing region for mutations rather than announcing one\n * that appears already populated. Mounting region-and-text together in a single\n * commit is the classic silent case — it satisfies a DOM assertion while\n * announcing nothing. So the region mounts as soon as the caller offers the\n * copy and merely EMPTIES when idle, which is what `CepField`, `UploadButton`\n * and `DateRangePickerFields` all do.\n */\nfunction FleetStatus({\n announcement,\n loading,\n testId,\n}: {\n announcement: string | undefined;\n loading: boolean;\n testId: string;\n}): React.JSX.Element | null {\n // No copy, no region at all — the caller has not asked for an announcement.\n if (announcement === undefined) return null;\n return (\n <Box role=\"status\" aria-live=\"polite\" data-testid={`${testId}-status`} sx={SR_ONLY_SX}>\n {loading ? announcement : ''}\n </Box>\n );\n}\n\n/**\n * FleetMap — where a set of tracked units is right now, as a map beside the\n * roster that reads it.\n *\n * Product-free by construction: it draws labelled dots with a freshness, and\n * every word — the heading, the three freshness states, how a duration and a\n * distance are written — arrives through {@link FleetMapProps.copy}. Couriers,\n * service vans and field engineers are all the same picture.\n *\n * ## Three decisions worth knowing before changing it\n *\n * **The roster is the accessible representation, not a sidebar.** A map is a\n * picture and a screen reader cannot read one, so the list carries the\n * information: everything a sighted user gets from a pin — who, how recently,\n * what they are carrying — is on the row. The map is a NAMED region rather than\n * an `aria-hidden` one, because its controls are focusable and hiding a\n * focusable subtree is the `aria-hidden-focus` violation.\n *\n * **Nothing here formats.** `lastSeen` and `accuracy` are functions on the copy\n * object, the same line `StatCard` holds for its `value`: a duration and a\n * distance are locale rules, and a component that wrote \"2 min ago\" would have\n * made English the only language it could ever render.\n *\n * **An empty fleet is an empty STATE, not an empty map.** A map with no pins is\n * indistinguishable from a map that failed to load, and the difference is the\n * whole question a dispatcher is asking.\n */\nexport const FleetMap: React.FC<FleetMapProps> = React.memo(\n ({\n units,\n copy,\n // NO default. `undefined` is what tells the hook the caller does not own\n // the selection; defaulting it to `null` here made every render look\n // controlled and the uncontrolled path unreachable.\n selectedId,\n onSelect,\n laggingAfterSeconds = FLEET_DEFAULT_LAGGING_AFTER_SECONDS,\n staleAfterSeconds = FLEET_DEFAULT_STALE_AFTER_SECONDS,\n height = DEFAULT_HEIGHT,\n loading = false,\n className,\n dataTestId,\n }) => {\n const theme = useTheme();\n const testId = dataTestId || 'fleet-map';\n const headingId = React.useId();\n const { ordered, active, centre, select, markers, onKeyDown } = useFleetMap(\n units,\n selectedId,\n onSelect,\n );\n\n return (\n <Box\n role=\"region\"\n aria-labelledby={headingId}\n className={className}\n data-testid={testId}\n sx={{ display: 'flex', flexDirection: 'column', gap: theme.spacing(FLEET_PANEL.gapUnits), minWidth: 0 }}\n >\n <Typography\n id={headingId}\n variant=\"subtitle1\"\n component=\"h2\"\n data-testid={`${testId}-title`}\n sx={{ fontWeight: theme.typography.fontWeightMedium }}\n >\n {copy.title}\n </Typography>\n\n <FleetStatus announcement={copy.loading} loading={loading} testId={testId} />\n\n {!loading && ordered.length === 0 ? (\n <EmptyState\n variant=\"minimal\"\n title={copy.emptyTitle}\n description={copy.emptyDescription}\n dataTestId={`${testId}-empty`}\n />\n ) : (\n <FleetBody\n ordered={ordered}\n centre={centre}\n markers={markers}\n select={select}\n onKeyDown={onKeyDown}\n copy={copy}\n selectedId={active}\n laggingAfterSeconds={laggingAfterSeconds}\n staleAfterSeconds={staleAfterSeconds}\n height={height}\n loading={loading}\n testId={testId}\n />\n )}\n </Box>\n );\n },\n);\n\nFleetMap.displayName = 'FleetMap';\n\nexport default FleetMap;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,gBAAgB;AACvB,SAAS,gBAAgB;AACzB,OAAO,WAAW;AAmDd,cA2DE,YA3DF;AApCJ,IAAM,iBAAiB;AAwBvB,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AACF,GAI6B;AAE3B,MAAI,iBAAiB,OAAW,QAAO;AACvC,SACE,oBAAC,OAAI,MAAK,UAAS,aAAU,UAAS,eAAa,GAAG,MAAM,WAAW,IAAI,YACxE,oBAAU,eAAe,IAC5B;AAEJ;AA6BO,IAAM,WAAoC,MAAM;AAAA,EACrD,CAAC;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACF,MAAM;AACJ,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,cAAc;AAC7B,UAAM,YAAY,MAAM,MAAM;AAC9B,UAAM,EAAE,SAAS,QAAQ,QAAQ,QAAQ,SAAS,UAAU,IAAI;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,mBAAiB;AAAA,QACjB;AAAA,QACA,eAAa;AAAA,QACb,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,MAAM,QAAQ,YAAY,QAAQ,GAAG,UAAU,EAAE;AAAA,QAEtG;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,IAAI;AAAA,cACJ,SAAQ;AAAA,cACR,WAAU;AAAA,cACV,eAAa,GAAG,MAAM;AAAA,cACtB,IAAI,EAAE,YAAY,MAAM,WAAW,iBAAiB;AAAA,cAEnD,eAAK;AAAA;AAAA,UACR;AAAA,UAEA,oBAAC,eAAY,cAAc,KAAK,SAAS,SAAkB,QAAgB;AAAA,UAE1E,CAAC,WAAW,QAAQ,WAAW,IAC9B;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAO,KAAK;AAAA,cACZ,aAAa,KAAK;AAAA,cAClB,YAAY,GAAG,MAAM;AAAA;AAAA,UACvB,IAEA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;AAEvB,IAAO,mBAAQ;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildChartContext
|
|
3
|
+
} from "./chunk-BLBOYCOV.js";
|
|
1
4
|
import {
|
|
2
5
|
ChartLegendContent,
|
|
3
6
|
ChartTooltipContent
|
|
4
7
|
} from "./chunk-M5T3COS2.js";
|
|
5
|
-
import {
|
|
6
|
-
buildChartContext
|
|
7
|
-
} from "./chunk-BLBOYCOV.js";
|
|
8
8
|
|
|
9
9
|
// src/components/data-display/Chart/chart-renderers.tsx
|
|
10
10
|
import {
|
|
@@ -312,4 +312,4 @@ function renderChartByType(props, theme) {
|
|
|
312
312
|
export {
|
|
313
313
|
renderChartByType
|
|
314
314
|
};
|
|
315
|
-
//# sourceMappingURL=chunk-
|
|
315
|
+
//# sourceMappingURL=chunk-KT6HWAEN.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Chart
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OH3YGJT5.js";
|
|
4
4
|
import {
|
|
5
5
|
CHART_SEMANTIC_COLORS,
|
|
6
6
|
specToChartProps
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GOWBYHYW.js";
|
|
8
8
|
import {
|
|
9
9
|
accentFor
|
|
10
10
|
} from "./chunk-V5IOLAIS.js";
|
|
@@ -46,4 +46,4 @@ var SpecChart = ({
|
|
|
46
46
|
export {
|
|
47
47
|
SpecChart
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-MZQTHSLN.js.map
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
pulseAnimation,
|
|
3
|
+
rotateAnimation,
|
|
4
|
+
scaleInAnimation,
|
|
5
|
+
shimmerAnimation
|
|
6
|
+
} from "./chunk-XRMZMBE3.js";
|
|
1
7
|
import {
|
|
2
8
|
ACTIVE_SCALE,
|
|
3
9
|
AVATAR_SIZES,
|
|
@@ -17,12 +23,6 @@ import {
|
|
|
17
23
|
SPINNER,
|
|
18
24
|
STATUS_DOT
|
|
19
25
|
} from "./chunk-FAITHWIO.js";
|
|
20
|
-
import {
|
|
21
|
-
pulseAnimation,
|
|
22
|
-
rotateAnimation,
|
|
23
|
-
scaleInAnimation,
|
|
24
|
-
shimmerAnimation
|
|
25
|
-
} from "./chunk-XRMZMBE3.js";
|
|
26
26
|
import {
|
|
27
27
|
px
|
|
28
28
|
} from "./chunk-NQN5Z36J.js";
|
|
@@ -272,4 +272,4 @@ function AvatarView(props) {
|
|
|
272
272
|
export {
|
|
273
273
|
AvatarView
|
|
274
274
|
};
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
275
|
+
//# sourceMappingURL=chunk-NA7MIEG6.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RangeBounds
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DFLTUI7W.js";
|
|
4
4
|
import {
|
|
5
5
|
isRangeSet
|
|
6
6
|
} from "./chunk-GCZJH4XL.js";
|
|
@@ -188,4 +188,4 @@ export {
|
|
|
188
188
|
fieldClearing,
|
|
189
189
|
MoreGroup
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-O4VCZTK4.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ColumnsTab
|
|
3
|
-
} from "./chunk-DW5FRWRQ.js";
|
|
4
1
|
import {
|
|
5
2
|
DisplayTab,
|
|
6
3
|
SortTab
|
|
7
4
|
} from "./chunk-7NSX7A5H.js";
|
|
5
|
+
import {
|
|
6
|
+
ColumnsTab
|
|
7
|
+
} from "./chunk-DW5FRWRQ.js";
|
|
8
8
|
import {
|
|
9
9
|
ViewActions,
|
|
10
10
|
ViewFooter,
|
|
@@ -261,4 +261,4 @@ function DataViewsDisplayPanel({
|
|
|
261
261
|
export {
|
|
262
262
|
DataViewsDisplayPanel
|
|
263
263
|
};
|
|
264
|
-
//# sourceMappingURL=chunk-
|
|
264
|
+
//# sourceMappingURL=chunk-OAYX4XN7.js.map
|