@12-apps/ui 6.23.0 → 6.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +6 -4
- 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-3FLVIVOK.js → chunk-BHIGHSXA.js} +2 -2
- package/dist/{chunk-VNNG46TS.js → chunk-BPLFM2GL.js} +6 -6
- package/dist/chunk-BTQZ3EX3.js +45 -0
- package/dist/chunk-BTQZ3EX3.js.map +1 -0
- 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-X5MPHXG5.js → chunk-EZ5Z5UFI.js} +9 -7
- package/dist/{chunk-X5MPHXG5.js.map → chunk-EZ5Z5UFI.js.map} +1 -1
- 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-4XZXLB4I.js → chunk-JQ45NDBS.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-VON4BFK4.js → chunk-PN5CQKA2.js} +2 -2
- package/dist/{chunk-CF3FAAPC.js → chunk-RP5FK3SO.js} +2 -2
- package/dist/{chunk-L4U23SBX.js → chunk-TSYWI3NP.js} +13 -13
- 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-ACFGEZ4Q.js → chunk-XO753WHD.js} +3 -3
- 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/DataGrid/DataGrid.d.ts +11 -0
- package/dist/types/components/data-display/DataGrid/DataGrid.d.ts.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/DataGrid/DataGrid.tsx +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-3FLVIVOK.js.map → chunk-BHIGHSXA.js.map} +0 -0
- /package/dist/{chunk-VNNG46TS.js.map → chunk-BPLFM2GL.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-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-4XZXLB4I.js.map → chunk-JQ45NDBS.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-VON4BFK4.js.map → chunk-PN5CQKA2.js.map} +0 -0
- /package/dist/{chunk-CF3FAAPC.js.map → chunk-RP5FK3SO.js.map} +0 -0
- /package/dist/{chunk-L4U23SBX.js.map → chunk-TSYWI3NP.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-ACFGEZ4Q.js.map → chunk-XO753WHD.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,69 +1,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseCard
|
|
3
|
+
} from "../chunk-JWW2Z3RH.js";
|
|
1
4
|
import {
|
|
2
5
|
DataViewsTableBase
|
|
3
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-JQ45NDBS.js";
|
|
4
7
|
import "../chunk-4X4KM4ZB.js";
|
|
5
8
|
import {
|
|
6
9
|
DataViewsGrid
|
|
7
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-XO753WHD.js";
|
|
8
11
|
import {
|
|
9
12
|
BaseListCard
|
|
10
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-WR5JFDQ5.js";
|
|
11
14
|
import "../chunk-I5SBTNV2.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-3FLVIVOK.js";
|
|
14
|
-
import "../chunk-2JCRNWHE.js";
|
|
15
|
-
import {
|
|
16
|
-
BaseCard
|
|
17
|
-
} from "../chunk-JWW2Z3RH.js";
|
|
15
|
+
import "../chunk-TTLI6PF7.js";
|
|
18
16
|
import "../chunk-OQFSYMHJ.js";
|
|
17
|
+
import "../chunk-BHIGHSXA.js";
|
|
18
|
+
import "../chunk-2JCRNWHE.js";
|
|
19
19
|
import "../chunk-ZOLAYP2D.js";
|
|
20
20
|
import {
|
|
21
21
|
DragContainerProvider,
|
|
22
22
|
DropIndicator,
|
|
23
23
|
useDragItem
|
|
24
24
|
} from "../chunk-JCJGJX7V.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-TSYWI3NP.js";
|
|
26
|
+
import "../chunk-BPLFM2GL.js";
|
|
27
|
+
import {
|
|
28
|
+
DataViewsBoard
|
|
29
|
+
} from "../chunk-E55CJV65.js";
|
|
30
|
+
import "../chunk-PN5CQKA2.js";
|
|
27
31
|
import "../chunk-5OIH36KX.js";
|
|
28
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-I3E2QHTH.js";
|
|
29
33
|
import "../chunk-5WNQJ5KS.js";
|
|
30
34
|
import "../chunk-EJQW2IYW.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-6LGWJFQK.js";
|
|
36
|
+
import "../chunk-O4VCZTK4.js";
|
|
33
37
|
import "../chunk-JSH3HFDQ.js";
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import
|
|
36
|
-
|
|
37
|
-
} from "../chunk-E55CJV65.js";
|
|
38
|
-
import "../chunk-BZTFPSWT.js";
|
|
38
|
+
import "../chunk-DFLTUI7W.js";
|
|
39
|
+
import "../chunk-FV36LFPX.js";
|
|
40
|
+
import "../chunk-GCZJH4XL.js";
|
|
39
41
|
import "../chunk-F4RR4666.js";
|
|
40
42
|
import "../chunk-CBOB5AV6.js";
|
|
41
43
|
import "../chunk-HP2ODXNA.js";
|
|
42
44
|
import "../chunk-TQ6FPOPD.js";
|
|
43
45
|
import "../chunk-IAGOUTI6.js";
|
|
44
|
-
import "../chunk-
|
|
46
|
+
import "../chunk-6RZDDUSM.js";
|
|
45
47
|
import "../chunk-KX75HM5U.js";
|
|
46
48
|
import "../chunk-XKV5ZIBG.js";
|
|
47
49
|
import "../chunk-A7Q5AQVD.js";
|
|
48
|
-
import "../chunk-
|
|
49
|
-
import
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
import
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
import "../chunk-
|
|
58
|
-
import "../chunk-
|
|
50
|
+
import "../chunk-OGGHD64H.js";
|
|
51
|
+
import {
|
|
52
|
+
DEFAULT_RAILS,
|
|
53
|
+
ListCardGroup,
|
|
54
|
+
RAIL_COUNT
|
|
55
|
+
} from "../chunk-CZPU5TW3.js";
|
|
56
|
+
import {
|
|
57
|
+
DEFAULT_CELL_WIDTH
|
|
58
|
+
} from "../chunk-6VP2L3DJ.js";
|
|
59
|
+
import "../chunk-2C47DEVU.js";
|
|
60
|
+
import "../chunk-OAYX4XN7.js";
|
|
59
61
|
import "../chunk-7NSX7A5H.js";
|
|
62
|
+
import "../chunk-DW5FRWRQ.js";
|
|
60
63
|
import "../chunk-SNR537TI.js";
|
|
64
|
+
import "../chunk-XUJG2HFW.js";
|
|
65
|
+
import {
|
|
66
|
+
cardMinWidthForZoom,
|
|
67
|
+
cardScaleForZoom
|
|
68
|
+
} from "../chunk-ZPIMPOHV.js";
|
|
61
69
|
import "../chunk-2FDBR77W.js";
|
|
70
|
+
import "../chunk-U2YJCNRU.js";
|
|
71
|
+
import "../chunk-CHPZTF34.js";
|
|
72
|
+
import "../chunk-6JGPPTLX.js";
|
|
73
|
+
import "../chunk-5M4TYFR3.js";
|
|
62
74
|
import "../chunk-HR7YTBR7.js";
|
|
63
75
|
import "../chunk-DZEC6RFM.js";
|
|
64
|
-
import "../chunk-
|
|
76
|
+
import "../chunk-TX5V42AY.js";
|
|
65
77
|
import "../chunk-TW3BXVEU.js";
|
|
66
78
|
import "../chunk-YGQX7BNI.js";
|
|
79
|
+
import "../chunk-IMLIIW77.js";
|
|
67
80
|
import "../chunk-LLZWB32X.js";
|
|
68
81
|
import {
|
|
69
82
|
DataViewsScopeTabs,
|
|
@@ -72,29 +85,16 @@ import {
|
|
|
72
85
|
} from "../chunk-LYKV3C7B.js";
|
|
73
86
|
import "../chunk-U5FOJBLG.js";
|
|
74
87
|
import "../chunk-U2ZDN2AL.js";
|
|
75
|
-
import "../chunk-IMLIIW77.js";
|
|
76
|
-
import "../chunk-2HPP6RVC.js";
|
|
77
|
-
import {
|
|
78
|
-
DEFAULT_RAILS,
|
|
79
|
-
ListCardGroup,
|
|
80
|
-
RAIL_COUNT
|
|
81
|
-
} from "../chunk-LYSSO6WC.js";
|
|
82
|
-
import {
|
|
83
|
-
cardMinWidthForZoom,
|
|
84
|
-
cardScaleForZoom
|
|
85
|
-
} from "../chunk-ZPIMPOHV.js";
|
|
86
88
|
import {
|
|
87
89
|
CARD_ASPECT_RATIOS,
|
|
88
90
|
DATA_VIEWS_LAYOUTS,
|
|
89
91
|
toSavedViewSummary
|
|
90
92
|
} from "../chunk-LHHAYZ55.js";
|
|
93
|
+
import "../chunk-2HPP6RVC.js";
|
|
91
94
|
import {
|
|
92
95
|
DataViewsCopyProvider,
|
|
93
96
|
useDataViewsCopy
|
|
94
97
|
} from "../chunk-KHG57NAE.js";
|
|
95
|
-
import {
|
|
96
|
-
DEFAULT_CELL_WIDTH
|
|
97
|
-
} from "../chunk-6VP2L3DJ.js";
|
|
98
98
|
import "../chunk-NCS2TBIP.js";
|
|
99
99
|
import "../chunk-Y4KKS6WL.js";
|
|
100
100
|
import "../chunk-MQJDMQJZ.js";
|
|
@@ -175,12 +175,12 @@ import "../chunk-SMCLG2RA.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-EZ5Z5UFI.js";
|
|
179
|
+
import "../chunk-5E3XZAED.js";
|
|
179
180
|
import "../chunk-DLJGBJZW.js";
|
|
180
181
|
import "../chunk-KZLLTOB2.js";
|
|
181
182
|
import "../chunk-E5LWJDI3.js";
|
|
182
183
|
import "../chunk-G3E66C6J.js";
|
|
183
|
-
import "../chunk-5E3XZAED.js";
|
|
184
184
|
import "../chunk-SNCSGLJ6.js";
|
|
185
185
|
import "../chunk-M4LQRQFL.js";
|
|
186
186
|
import "../chunk-NUGT7LMR.js";
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import "../chunk-RQWZYD6H.js";
|
|
2
2
|
import {
|
|
3
3
|
FleetMap
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-JZXWCEH5.js";
|
|
5
|
+
import "../chunk-ZCPSND5Y.js";
|
|
6
|
+
import "../chunk-RP5FK3SO.js";
|
|
6
7
|
import "../chunk-2RQINU5T.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-F7VBGS4C.js";
|
|
8
|
+
import "../chunk-HMV4QMXS.js";
|
|
9
9
|
import {
|
|
10
10
|
freshnessOf,
|
|
11
11
|
mapCentre,
|
|
12
12
|
nextSelection,
|
|
13
13
|
rosterOrder
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-XPMGFAJ3.js";
|
|
15
|
+
import "../chunk-BTQZ3EX3.js";
|
|
15
16
|
import "../chunk-RNCQ5KHQ.js";
|
|
16
17
|
import "../chunk-7VN7LFBA.js";
|
|
17
18
|
import "../chunk-7WDPC46N.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/platform/aria.ts"],"sourcesContent":["/**\n * WEB ATTRIBUTES REACT NATIVE DOES NOT DECLARE.\n *\n * React Native's `ViewProps` (0.83) type a dozen `aria-*` props and stop:\n * `aria-level`, `aria-atomic` and `aria-describedby` are not among them.\n * react-native-web forwards all three to the DOM — and `aria-level` also\n * picks the heading tag, so a `role=\"heading\"` at level 3 renders an `<h3>`\n * exactly as the MUI half's `component=\"h3\"` does — while a device ignores\n * them. A native component spreads them through here rather than widening\n * the element's props type or casting at every call site.\n */\nexport interface WebAria {\n 'aria-level'?: 1 | 2 | 3 | 4 | 5 | 6;\n 'aria-atomic'?: 'true' | 'false';\n 'aria-describedby'?: string;\n /**\n * A field's validity and whether it must be filled. React Native's\n * `accessibilityState` has neither — its five flags are disabled, selected,\n * checked, busy and expanded — so these are web-only, and a device reads the\n * error text instead. react-native-web forwards both.\n */\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n /**\n * What a control pops open. React Native has `aria-expanded` and no\n * `aria-haspopup`, so a `combobox` needs this one from here to say the thing\n * it expands is a listbox — which is what the web's own trigger carries.\n */\n 'aria-haspopup'?: 'listbox' | 'menu' | 'dialog' | 'true';\n /**\n * Which option a composite widget's single tab stop is currently on — the\n * listbox pattern, where the LIST holds focus and the selection moves inside\n * it. React Native has no equivalent because it has no roving focus to\n * describe: a device selects by touching the row.\n *\n * Note the interaction with `aria-atomic` documented on {@link webAria}:\n * react-native-web reads THIS value when it means the atomic flag, so a\n * component that sets both gets the descendant id emitted as `aria-atomic`.\n * Nothing here sets both, and a component that needs to should pass its own\n * atomic flag directly rather than through this helper.\n */\n 'aria-activedescendant'?: string;\n}\n\n/**\n * `attrs` as something JSX can spread onto a react-native element without\n * that element's props type having to know them.\n *\n * `aria-atomic` travels under react-native-web's own older name. Its\n * `createDOMProps` (0.20.0) reads `aria-activedescendant` where it means\n * `aria-atomic` — `_ariaAtomic = ariaAtomic != null ? ariaActiveDescendant :\n * accessibilityAtomic` — so the modern spelling never reaches the DOM and\n * the legacy one, still accepted and still emitted as `aria-atomic`, does.\n * Neither name exists on a device, so nothing is lost there.\n */\nexport function webAria(attrs: WebAria): object {\n const { 'aria-atomic': atomic, ...rest } = attrs;\n return atomic === undefined ? rest : { ...rest, accessibilityAtomic: atomic };\n}\n\n/**\n * `disabled` for a react-native-web form control.\n *\n * React Native's `TextInput` has `editable` and no `disabled`, because a\n * device has no disabled state to speak of — an uneditable field simply does\n * not take the keyboard. The DOM does: only a real `disabled` attribute takes\n * an `<input>` out of the tab order, and it is what `toBeDisabled()` reads. So\n * a native field spreads this ALONGSIDE `editable={false}` and\n * `aria-disabled`: react-native-web puts the attribute on the input, and a\n * device ignores a prop it does not know.\n */\nexport function webDisabled(disabled: boolean): object {\n return disabled ? { disabled: true } : {};\n}\n\n/**\n * `onClick` for a react-native-web element whose React Native twin has no\n * click of its own.\n *\n * react-native-web's `TextInput` forwards `onClick` to the DOM input and drops\n * `onPressIn`; a device does the opposite. A field that must answer a press on\n * both renderers spreads this ALONGSIDE `onPressIn`, and exactly one of the two\n * fires on each side — never both.\n */\nexport function webClick<E>(handler: ((event: E) => void) | undefined): object {\n return handler === undefined ? {} : { onClick: handler };\n}\n\n/**\n * A `role` React Native's own union does not carry.\n *\n * `Role` (0.83) stops at `list` and `menu`: `listbox`, the role a dropdown's\n * option list owes a screen reader, is not in it. react-native-web forwards\n * whatever string it is given, and a device ignores a role it does not know —\n * the same trade `webAria` makes for the attributes below it.\n */\nexport function webRole(role: string): object {\n return { role };\n}\n\n/** The half of a DOM keyboard event a component needs, without the DOM lib. */\nexport interface WebKeyEvent {\n key: string;\n}\n\n/**\n * `onKeyDown` for a react-native-web element.\n *\n * React Native has no key events on a `View` — a phone has no keyboard to\n * press Escape on — so nothing here is typed by react-native and nothing here\n * fires on a device. react-native-web forwards it to the DOM, which is what\n * lets a native dropdown still answer Escape and the arrow keys in a browser.\n */\nexport function webKeyDown(handler: (event: WebKeyEvent) => void): object {\n return { onKeyDown: handler };\n}\n"],"mappings":";AAuDO,SAAS,QAAQ,OAAwB;AAC9C,QAAM,EAAE,eAAe,QAAQ,GAAG,KAAK,IAAI;AAC3C,SAAO,WAAW,SAAY,OAAO,EAAE,GAAG,MAAM,qBAAqB,OAAO;AAC9E;AAaO,SAAS,YAAY,UAA2B;AACrD,SAAO,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAC1C;AAWO,SAAS,SAAY,SAAmD;AAC7E,SAAO,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,QAAQ;AACzD;AAUO,SAAS,QAAQ,MAAsB;AAC5C,SAAO,EAAE,KAAK;AAChB;AAeO,SAAS,WAAW,SAA+C;AACxE,SAAO,EAAE,WAAW,QAAQ;AAC9B;","names":[]}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useLoopedProgress
|
|
3
|
+
} from "./chunk-MLQIOKQZ.js";
|
|
4
|
+
import {
|
|
5
|
+
resolveTestId,
|
|
6
|
+
withoutTestIdProps
|
|
7
|
+
} from "./chunk-AR5O4BEY.js";
|
|
8
|
+
import {
|
|
9
|
+
useUiTheme
|
|
10
|
+
} from "./chunk-GWGIWQO7.js";
|
|
11
|
+
import {
|
|
12
|
+
alpha
|
|
13
|
+
} from "./chunk-LEMMXZFN.js";
|
|
14
|
+
|
|
15
|
+
// src/components/layout/Skeleton/Skeleton.native.tsx
|
|
16
|
+
import * as React from "react";
|
|
17
|
+
import {
|
|
18
|
+
Animated,
|
|
19
|
+
Easing,
|
|
20
|
+
StyleSheet,
|
|
21
|
+
View
|
|
22
|
+
} from "react-native";
|
|
23
|
+
|
|
24
|
+
// src/components/layout/Skeleton/Skeleton.helpers.ts
|
|
25
|
+
var SKELETON_DEFAULTS = {
|
|
26
|
+
variant: "text",
|
|
27
|
+
animation: "pulse",
|
|
28
|
+
count: 1,
|
|
29
|
+
spacing: 1,
|
|
30
|
+
intensity: "medium",
|
|
31
|
+
glassmorphism: false,
|
|
32
|
+
shimmer: false
|
|
33
|
+
};
|
|
34
|
+
var definedProps = (props) => Object.fromEntries(
|
|
35
|
+
Object.entries(props).filter(([, value]) => value !== void 0)
|
|
36
|
+
);
|
|
37
|
+
var resolveSkeletonProps = (props) => ({ ...SKELETON_DEFAULTS, ...definedProps(props) });
|
|
38
|
+
var skeletonInstanceTestId = (base, index) => base ? `${base}-${index}` : void 0;
|
|
39
|
+
|
|
40
|
+
// src/components/layout/Skeleton/Skeleton.metrics.ts
|
|
41
|
+
var SKELETON_INTENSITY_OPACITY = {
|
|
42
|
+
low: 0.11,
|
|
43
|
+
medium: 0.13,
|
|
44
|
+
high: 0.15
|
|
45
|
+
};
|
|
46
|
+
var SKELETON_DEFAULT_DIMENSIONS = {
|
|
47
|
+
// `text` has no height of its own: MUI's line box gives it one (below).
|
|
48
|
+
text: { width: "100%", height: void 0 },
|
|
49
|
+
circular: { width: 40, height: 40 },
|
|
50
|
+
rectangular: { width: "100%", height: 40 },
|
|
51
|
+
wave: { width: "100%", height: 40 }
|
|
52
|
+
};
|
|
53
|
+
var GLASS_BACKGROUND_ALPHA_FROM = 0.8;
|
|
54
|
+
var GLASS_BORDER_ALPHA = 0.2;
|
|
55
|
+
var GLASS_SHADOW = { offsetY: 8, blur: 32, alpha: 0.1 };
|
|
56
|
+
var SHIMMER_ALPHA = 0.3;
|
|
57
|
+
var SHIMMER_DURATION_MS = 2e3;
|
|
58
|
+
var COMMON_BLACK = "#000";
|
|
59
|
+
var COMMON_WHITE = "#fff";
|
|
60
|
+
var PULSE = { durationMs: 2e3, delayMs: 500, dip: 0.4 };
|
|
61
|
+
var WAVE = { durationMs: 1600, delayMs: 500 };
|
|
62
|
+
var TEXT_LINE_HEIGHT_EM = 1.2;
|
|
63
|
+
var TEXT_SCALE_Y = 0.6;
|
|
64
|
+
|
|
65
|
+
// src/components/layout/Skeleton/Skeleton.native.tsx
|
|
66
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
67
|
+
var PULSE_EASING = Easing.inOut(Easing.ease);
|
|
68
|
+
var PERCENT = /^-?\d+(?:\.\d+)?%$/;
|
|
69
|
+
function dimension(value) {
|
|
70
|
+
if (value === void 0 || typeof value === "number") return value;
|
|
71
|
+
return PERCENT.test(value) ? value : void 0;
|
|
72
|
+
}
|
|
73
|
+
var skeletonTint = (theme, intensity) => alpha(
|
|
74
|
+
theme.mode === "dark" ? COMMON_WHITE : theme.palette.text.primary,
|
|
75
|
+
SKELETON_INTENSITY_OPACITY[intensity]
|
|
76
|
+
);
|
|
77
|
+
var radiusFor = (theme, variant) => {
|
|
78
|
+
if (variant === "circular") return theme.radius.full;
|
|
79
|
+
return variant === "text" ? theme.radius.md : 0;
|
|
80
|
+
};
|
|
81
|
+
function textBoxHeight(theme, height) {
|
|
82
|
+
if (typeof height === "string") return dimension(height);
|
|
83
|
+
const box = height ?? theme.typography.sizes.md.fontSize * TEXT_LINE_HEIGHT_EM;
|
|
84
|
+
return box * TEXT_SCALE_Y;
|
|
85
|
+
}
|
|
86
|
+
function glassStyle(theme) {
|
|
87
|
+
return {
|
|
88
|
+
backgroundColor: alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM),
|
|
89
|
+
borderWidth: 1,
|
|
90
|
+
borderColor: alpha(theme.palette.divider, GLASS_BORDER_ALPHA),
|
|
91
|
+
boxShadow: `0 ${GLASS_SHADOW.offsetY}px ${GLASS_SHADOW.blur}px 0 ${alpha(COMMON_BLACK, GLASS_SHADOW.alpha)}`
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function skeletonBoxStyle(theme, a) {
|
|
95
|
+
const box = SKELETON_DEFAULT_DIMENSIONS[a.variant];
|
|
96
|
+
const height = a.height ?? box.height;
|
|
97
|
+
const style = {
|
|
98
|
+
width: dimension(a.width ?? box.width),
|
|
99
|
+
height: a.variant === "text" ? textBoxHeight(theme, height) : dimension(height),
|
|
100
|
+
borderRadius: dimension(a.borderRadius) ?? radiusFor(theme, a.variant),
|
|
101
|
+
backgroundColor: skeletonTint(theme, a.intensity)
|
|
102
|
+
};
|
|
103
|
+
if (a.clipped) style.overflow = "hidden";
|
|
104
|
+
return a.glassmorphism ? { ...style, ...glassStyle(theme) } : style;
|
|
105
|
+
}
|
|
106
|
+
function Wash({ color, durationMs, delayMs, testID }) {
|
|
107
|
+
const progress = useLoopedProgress(true, { durationMs, delayMs, easing: Easing.linear });
|
|
108
|
+
return /* @__PURE__ */ jsx(
|
|
109
|
+
Animated.View,
|
|
110
|
+
{
|
|
111
|
+
testID,
|
|
112
|
+
style: [
|
|
113
|
+
StyleSheet.absoluteFill,
|
|
114
|
+
{
|
|
115
|
+
pointerEvents: "none",
|
|
116
|
+
backgroundColor: color,
|
|
117
|
+
opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [0, 1, 0] })
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
var effectiveAnimation = (variant, animation) => variant === "wave" ? "wave" : animation;
|
|
124
|
+
function SkeletonBox({
|
|
125
|
+
animation,
|
|
126
|
+
shimmer,
|
|
127
|
+
style,
|
|
128
|
+
testID,
|
|
129
|
+
rest,
|
|
130
|
+
...styleArgs
|
|
131
|
+
}) {
|
|
132
|
+
const theme = useUiTheme();
|
|
133
|
+
const animates = effectiveAnimation(styleArgs.variant, animation);
|
|
134
|
+
const pulse = useLoopedProgress(animates === "pulse", {
|
|
135
|
+
durationMs: PULSE.durationMs,
|
|
136
|
+
delayMs: PULSE.delayMs,
|
|
137
|
+
easing: PULSE_EASING
|
|
138
|
+
});
|
|
139
|
+
const box = skeletonBoxStyle(theme, styleArgs);
|
|
140
|
+
const washId = testID ? `${testID}-wash` : void 0;
|
|
141
|
+
return /* @__PURE__ */ jsxs(
|
|
142
|
+
Animated.View,
|
|
143
|
+
{
|
|
144
|
+
"aria-hidden": true,
|
|
145
|
+
testID,
|
|
146
|
+
style: [
|
|
147
|
+
box,
|
|
148
|
+
animates === "pulse" ? { opacity: pulse.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, PULSE.dip, 1] }) } : null,
|
|
149
|
+
style
|
|
150
|
+
],
|
|
151
|
+
...rest,
|
|
152
|
+
children: [
|
|
153
|
+
shimmer ? /* @__PURE__ */ jsx(
|
|
154
|
+
Wash,
|
|
155
|
+
{
|
|
156
|
+
color: alpha(COMMON_WHITE, SHIMMER_ALPHA),
|
|
157
|
+
durationMs: SHIMMER_DURATION_MS,
|
|
158
|
+
delayMs: 0,
|
|
159
|
+
testID: washId
|
|
160
|
+
}
|
|
161
|
+
) : null,
|
|
162
|
+
!shimmer && animates === "wave" ? /* @__PURE__ */ jsx(
|
|
163
|
+
Wash,
|
|
164
|
+
{
|
|
165
|
+
color: theme.palette.action.hover,
|
|
166
|
+
durationMs: WAVE.durationMs,
|
|
167
|
+
delayMs: WAVE.delayMs,
|
|
168
|
+
testID: washId
|
|
169
|
+
}
|
|
170
|
+
) : null
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
var Skeleton = React.memo(function Skeleton2(rawProps) {
|
|
176
|
+
const resolved = resolveSkeletonProps(rawProps);
|
|
177
|
+
const {
|
|
178
|
+
variant,
|
|
179
|
+
animation,
|
|
180
|
+
width,
|
|
181
|
+
height,
|
|
182
|
+
count,
|
|
183
|
+
spacing,
|
|
184
|
+
borderRadius,
|
|
185
|
+
intensity,
|
|
186
|
+
glassmorphism,
|
|
187
|
+
shimmer,
|
|
188
|
+
style,
|
|
189
|
+
...others
|
|
190
|
+
} = resolved;
|
|
191
|
+
const theme = useUiTheme();
|
|
192
|
+
const testID = resolveTestId(others);
|
|
193
|
+
const box = {
|
|
194
|
+
variant,
|
|
195
|
+
animation,
|
|
196
|
+
intensity,
|
|
197
|
+
width,
|
|
198
|
+
height,
|
|
199
|
+
borderRadius,
|
|
200
|
+
glassmorphism,
|
|
201
|
+
shimmer,
|
|
202
|
+
clipped: shimmer || effectiveAnimation(variant, animation) === "wave",
|
|
203
|
+
style,
|
|
204
|
+
rest: withoutTestIdProps(others)
|
|
205
|
+
};
|
|
206
|
+
if (count === 0) return null;
|
|
207
|
+
if (count === 1) return /* @__PURE__ */ jsx(SkeletonBox, { ...box, testID });
|
|
208
|
+
return /* @__PURE__ */ jsx(View, { style: { gap: theme.spacing(spacing) }, children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx(View, { children: /* @__PURE__ */ jsx(SkeletonBox, { ...box, testID: skeletonInstanceTestId(testID, index) }) }, `skeleton-${index}`)) });
|
|
209
|
+
});
|
|
210
|
+
Skeleton.displayName = "Skeleton";
|
|
211
|
+
|
|
212
|
+
export {
|
|
213
|
+
Skeleton
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=chunk-GW7TQ7HO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/layout/Skeleton/Skeleton.native.tsx","../../../src/components/layout/Skeleton/Skeleton.helpers.ts","../../../src/components/layout/Skeleton/Skeleton.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Easing,\n StyleSheet,\n View,\n type DimensionValue,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveSkeletonProps, skeletonInstanceTestId } from './Skeleton.helpers';\nimport {\n COMMON_BLACK,\n COMMON_WHITE,\n GLASS_BACKGROUND_ALPHA_FROM,\n GLASS_BORDER_ALPHA,\n GLASS_SHADOW,\n PULSE,\n SHIMMER_ALPHA,\n SHIMMER_DURATION_MS,\n SKELETON_DEFAULT_DIMENSIONS,\n SKELETON_INTENSITY_OPACITY,\n TEXT_LINE_HEIGHT_EM,\n TEXT_SCALE_Y,\n WAVE,\n} from './Skeleton.metrics';\nimport type {\n SkeletonAnimation,\n SkeletonIntensity,\n SkeletonProps,\n SkeletonVariant,\n} from './Skeleton.types.native';\nimport { useLoopedProgress } from '../../../platform/animation';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\n\n/** MUI's `pulseKeyframe` runs `ease-in-out`. */\nconst PULSE_EASING = Easing.inOut(Easing.ease);\nconst PERCENT = /^-?\\d+(?:\\.\\d+)?%$/;\n\n/**\n * A width or a height, as React Native accepts one. The web takes any CSS\n * length; here a number is dp and a percentage is a percentage — anything else\n * (`10rem`, `calc(...)`) has no equivalent and sizes the box from its content,\n * which `NATIVE-NOTES.md` records.\n */\nexport function dimension(value: number | string | undefined): DimensionValue | undefined {\n if (value === undefined || typeof value === 'number') return value;\n return PERCENT.test(value) ? (value as `${number}%`) : undefined;\n}\n\n/** The tint the web writes: the body ink at the intensity's alpha, white in dark mode. */\nexport const skeletonTint = (theme: UiTheme, intensity: SkeletonIntensity): string =>\n alpha(\n theme.mode === 'dark' ? COMMON_WHITE : theme.palette.text.primary,\n SKELETON_INTENSITY_OPACITY[intensity],\n );\n\n/** MUI's radius per variant: a circle, a square rectangle, the theme's 4px on text. */\nconst radiusFor = (theme: UiTheme, variant: SkeletonVariant): number => {\n if (variant === 'circular') return theme.radius.full;\n return variant === 'text' ? theme.radius.md : 0;\n};\n\n/**\n * The `text` variant's height. MUI gives it a `1.2em` line box and squashes the\n * whole box to 60%; React Native's transforms do not change layout, so the two\n * are multiplied out into the height the web actually shows.\n */\nexport function textBoxHeight(\n theme: UiTheme,\n height: number | string | undefined,\n): DimensionValue | undefined {\n if (typeof height === 'string') return dimension(height);\n const box = height ?? theme.typography.sizes.md.fontSize * TEXT_LINE_HEIGHT_EM;\n return box * TEXT_SCALE_Y;\n}\n\n/**\n * `glassmorphism`: the gradient's first stop flat, the hairline, and the web's\n * own box-shadow string — React Native 0.76+ takes CSS shadow syntax, so the\n * two renderers draw the shadow from the same declaration. What is missing is\n * the 20px backdrop blur, which React Native has no equivalent of.\n */\nfunction glassStyle(theme: UiTheme): ViewStyle {\n return {\n backgroundColor: alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, GLASS_BORDER_ALPHA),\n boxShadow: `0 ${GLASS_SHADOW.offsetY}px ${GLASS_SHADOW.blur}px 0 ${alpha(COMMON_BLACK, GLASS_SHADOW.alpha)}`,\n };\n}\n\ninterface SkeletonBoxStyleArgs {\n variant: SkeletonVariant;\n intensity: SkeletonIntensity;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n glassmorphism: boolean;\n /** A box with a wash sliding over it clips, as MUI's `wave` and the shimmer do. */\n clipped: boolean;\n}\n\n/** The box the web paints, in absolute numbers. */\nexport function skeletonBoxStyle(theme: UiTheme, a: SkeletonBoxStyleArgs): ViewStyle {\n const box = SKELETON_DEFAULT_DIMENSIONS[a.variant];\n const height = a.height ?? box.height;\n const style: ViewStyle = {\n width: dimension(a.width ?? box.width),\n height: a.variant === 'text' ? textBoxHeight(theme, height) : dimension(height),\n borderRadius: dimension(a.borderRadius) ?? radiusFor(theme, a.variant),\n backgroundColor: skeletonTint(theme, a.intensity),\n };\n if (a.clipped) style.overflow = 'hidden';\n return a.glassmorphism ? { ...style, ...glassStyle(theme) } : style;\n}\n\ninterface WashProps {\n color: string;\n durationMs: number;\n delayMs: number;\n testID?: string;\n}\n\n/**\n * MUI's sweeping `::after`, standing still. React Native core has no gradient\n * fill and no pseudo-elements, so the same wash covers the box and fades in and\n * out on the same cadence instead of travelling across it. It carries no\n * `aria-hidden` of its own: the box it sits in is already hidden, and the\n * shared stories count the boxes by that attribute.\n */\nfunction Wash({ color, durationMs, delayMs, testID }: WashProps): React.JSX.Element {\n const progress = useLoopedProgress(true, { durationMs, delayMs, easing: Easing.linear });\n return (\n <Animated.View\n testID={testID}\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.5, 1], outputRange: [0, 1, 0] }),\n },\n ]}\n />\n );\n}\n\ninterface SkeletonBoxProps extends SkeletonBoxStyleArgs {\n animation: SkeletonAnimation;\n shimmer: boolean;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n rest: ViewProps;\n}\n\n/** The web's `muiAnimationFor`: the `wave` VARIANT always animates as a wave. */\nconst effectiveAnimation = (\n variant: SkeletonVariant,\n animation: SkeletonAnimation,\n): SkeletonAnimation => (variant === 'wave' ? 'wave' : animation);\n\n/** One skeleton box: the tint, the pulse, and the wash the sweep stands in for. */\nfunction SkeletonBox({\n animation,\n shimmer,\n style,\n testID,\n rest,\n ...styleArgs\n}: SkeletonBoxProps): React.JSX.Element {\n const theme = useUiTheme();\n const animates = effectiveAnimation(styleArgs.variant, animation);\n const pulse = useLoopedProgress(animates === 'pulse', {\n durationMs: PULSE.durationMs,\n delayMs: PULSE.delayMs,\n easing: PULSE_EASING,\n });\n const box = skeletonBoxStyle(theme, styleArgs);\n const washId = testID ? `${testID}-wash` : undefined;\n\n return (\n <Animated.View\n aria-hidden\n testID={testID}\n style={[\n box,\n animates === 'pulse'\n ? { opacity: pulse.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, PULSE.dip, 1] }) }\n : null,\n style,\n ]}\n {...rest}\n >\n {shimmer ? (\n <Wash\n color={alpha(COMMON_WHITE, SHIMMER_ALPHA)}\n durationMs={SHIMMER_DURATION_MS}\n delayMs={0}\n testID={washId}\n />\n ) : null}\n {!shimmer && animates === 'wave' ? (\n <Wash\n color={theme.palette.action.hover}\n durationMs={WAVE.durationMs}\n delayMs={WAVE.delayMs}\n testID={washId}\n />\n ) : null}\n </Animated.View>\n );\n}\n\n/**\n * The native `Skeleton`: the same box, the same tint and the same default\n * dimensions the MUI half draws, on a `View`.\n */\nexport const Skeleton: React.FC<SkeletonProps> = React.memo(function Skeleton(rawProps) {\n const resolved = resolveSkeletonProps(rawProps);\n const {\n variant,\n animation,\n width,\n height,\n count,\n spacing,\n borderRadius,\n intensity,\n glassmorphism,\n shimmer,\n style,\n ...others\n } = resolved;\n const theme = useUiTheme();\n const testID = resolveTestId(others);\n const box: Omit<SkeletonBoxProps, 'testID'> = {\n variant,\n animation,\n intensity,\n width,\n height,\n borderRadius,\n glassmorphism,\n shimmer,\n clipped: shimmer || effectiveAnimation(variant, animation) === 'wave',\n style,\n rest: withoutTestIdProps(others),\n };\n\n // Handle edge case: count of 0 should render nothing\n if (count === 0) return null;\n if (count === 1) return <SkeletonBox {...box} testID={testID} />;\n\n return (\n <View style={{ gap: theme.spacing(spacing) }}>\n {Array.from({ length: count }, (_, index) => (\n <View key={`skeleton-${index}`}>\n <SkeletonBox {...box} testID={skeletonInstanceTestId(testID, index)} />\n </View>\n ))}\n </View>\n );\n});\n\nSkeleton.displayName = 'Skeleton';\n","import type { SkeletonBaseProps } from './Skeleton.base';\n\ntype SkeletonDefaultedKeys =\n | 'variant'\n | 'animation'\n | 'count'\n | 'spacing'\n | 'intensity'\n | 'glassmorphism'\n | 'shimmer';\n\n/**\n * Generic over the renderer's own props: the web and the native `Skeleton`\n * carry different extras (`className`/`style` against a `View`'s props), and\n * both come back out untouched.\n */\ntype ResolvedSkeletonProps<P extends SkeletonBaseProps> = P &\n Required<Pick<SkeletonBaseProps, SkeletonDefaultedKeys>>;\n\nconst SKELETON_DEFAULTS: Required<Pick<SkeletonBaseProps, SkeletonDefaultedKeys>> = {\n variant: 'text',\n animation: 'pulse',\n count: 1,\n spacing: 1,\n intensity: 'medium',\n glassmorphism: false,\n shimmer: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `count={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = <P extends SkeletonBaseProps>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\nexport const resolveSkeletonProps = <P extends SkeletonBaseProps>(\n props: P,\n): ResolvedSkeletonProps<P> =>\n ({ ...SKELETON_DEFAULTS, ...definedProps(props) }) as ResolvedSkeletonProps<P>;\n\n/**\n * The id of instance `index` when a caller asked for several. Unnamed\n * skeletons stay unnamed — the web has always cloned `undefined` there.\n */\nexport const skeletonInstanceTestId = (\n base: string | undefined,\n index: number,\n): string | undefined => (base ? `${base}-${index}` : undefined);\n","import type { SkeletonIntensity, SkeletonVariant } from './Skeleton.base';\n\n/**\n * THE NUMBERS BOTH `Skeleton` RENDERERS DRAW WITH.\n *\n * `Skeleton.styles.ts` (web, emotion over MUI's own `Skeleton`) and\n * `Skeleton.native.tsx` (React Native) read this one table. The web turns them\n * into CSS strings — `blur(20px)`, `shimmer 2s infinite` — and native uses the\n * numbers as they are, so neither renderer restates a value.\n *\n * Two groups live here. The first is what the web component WRITES (the\n * intensity alphas, the default box, the glass and shimmer washes). The second\n * is what MUI's own `Skeleton` contributes on the web and the native half\n * therefore has to restate: its pulse keyframe, its wave cadence, and the\n * geometry of the `text` variant. Those are MUI's DEFAULTS — a host that\n * re-themes them moves the web only, which `NATIVE-NOTES.md` records.\n */\n\n/** The tint's alpha over the ink, per intensity. */\nexport const SKELETON_INTENSITY_OPACITY: Record<SkeletonIntensity, number> = {\n low: 0.11,\n medium: 0.13,\n high: 0.15,\n};\n\n/** The box a variant draws when the caller gives no `width`/`height`. */\nexport const SKELETON_DEFAULT_DIMENSIONS: Record<\n SkeletonVariant,\n { width: number | string; height: number | undefined }\n> = {\n // `text` has no height of its own: MUI's line box gives it one (below).\n text: { width: '100%', height: undefined },\n circular: { width: 40, height: 40 },\n rectangular: { width: '100%', height: 40 },\n wave: { width: '100%', height: 40 },\n};\n\n/* ── `glassmorphism` ──────────────────────────────────────────────────────── */\n\n/** The 135° wash over `background.paper`, from the first stop to the last. */\nexport const GLASS_BACKGROUND_ALPHA_FROM = 0.8;\nexport const GLASS_BACKGROUND_ALPHA_TO = 0.4;\nexport const GLASS_BLUR_PX = 20;\nexport const GLASS_BORDER_ALPHA = 0.2;\n/** `0 8px 32px 0 rgba(0, 0, 0, 0.1)`. */\nexport const GLASS_SHADOW = { offsetY: 8, blur: 32, alpha: 0.1 } as const;\n\n/* ── `shimmer` ────────────────────────────────────────────────────────────── */\n\n/** The sweep's middle stop, over white. */\nexport const SHIMMER_ALPHA = 0.3;\nexport const SHIMMER_DURATION_MS = 2000;\n\n/**\n * MUI's `palette.common`, which is a pair of fixed hexes rather than anything\n * derived — so the shared theme has no slot for them and they are named here.\n */\nexport const COMMON_BLACK = '#000';\nexport const COMMON_WHITE = '#fff';\n\n/* ── MUI's own `Skeleton`, restated for the renderer that has no MUI ──────── */\n\n/**\n * MUI's `pulseKeyframe`: opacity 1 → 0.4 → 1, `2s ease-in-out 0.5s infinite`.\n * The delay runs once on the web; native replays it each lap unless the\n * animation is sequenced, which `Skeleton.native.tsx` does.\n */\nexport const PULSE = { durationMs: 2000, delayMs: 500, dip: 0.4 } as const;\n\n/** MUI's `wave` sweep: `1.6s linear 0.5s infinite`, in `palette.action.hover`. */\nexport const WAVE = { durationMs: 1600, delayMs: 500 } as const;\n\n/**\n * The `text` variant, as MUI draws it: a line box `1.2em` tall squashed to 60%\n * of its height (`transform: scale(1, 0.60)`), with a `4px/6.7px` elliptical\n * radius that the same squash turns back into a round 4px. React Native has no\n * `em`, and its transforms do not change layout, so the native half multiplies\n * the two out into one height and draws the plain 4px radius the squash lands on.\n */\nexport const TEXT_LINE_HEIGHT_EM = 1.2;\nexport const TEXT_SCALE_Y = 0.6;\n"],"mappings":"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","names":["Skeleton"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/platform/web-keys.ts"],"sourcesContent":["/**\n * KEY EVENTS REACT NATIVE DOES NOT DECLARE.\n *\n * There is no `onKeyDown` on React Native's `ViewProps` or `PressableProps`,\n * because there is no keyboard behind a `View` on a device. react-native-web\n * DOES forward one to the DOM, and a component that stands in for a native\n * control — a chip that removes on Delete, a listbox option that activates on\n * Space — carries those conventions as part of its contract on the web.\n *\n * `webKeyDown` spreads the handler onto a react-native element without that\n * element's props type having to know it, the way `./aria.ts` does for the\n * `aria-*` attributes React Native leaves out. On a device it is simply never\n * called, which is the honest outcome: the gesture is the input there.\n *\n * The event is typed structurally rather than as a DOM `KeyboardEvent`, because\n * the native type program is checked WITHOUT the DOM lib.\n */\nexport interface WebKeyEvent {\n key: string;\n preventDefault: () => void;\n}\n\nexport type WebKeyHandler = (event: WebKeyEvent) => void;\n\n/** `{ onKeyDown }` as something JSX can spread onto a react-native element. */\nexport function webKeyDown(handler: WebKeyHandler | undefined): object {\n return handler === undefined ? {} : { onKeyDown: handler };\n}\n"],"mappings":";AAyBO,SAAS,WAAW,SAA4C;AACrE,SAAO,YAAY,SAAY,CAAC,IAAI,EAAE,WAAW,QAAQ;AAC3D;","names":[]}
|