@12-apps/ui 6.90.0 → 6.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components-catalog.md +1 -1
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/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 +1 -1
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +21 -21
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +25 -25
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +18 -18
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +2 -2
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +4 -4
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +9 -9
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -8
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
- package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -7
- package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +2 -1
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +4 -3
- package/dist/_internal/components/data-display/RegionMap/RegionMap.view.js +19 -0
- package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +1 -1
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
- package/dist/_internal/components/data-display/index.js +50 -44
- package/dist/_internal/components/index.js +57 -51
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +7 -7
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +5 -5
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +9 -9
- package/dist/_internal/components/layout/index.js +12 -12
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +5 -5
- package/dist/{chunk-K2VDRODL.js → chunk-3IDL7NK7.js} +2 -2
- package/dist/{chunk-QADTI63U.js → chunk-3JZ3KEQQ.js} +2 -2
- package/dist/{chunk-EOIRU62W.js → chunk-42D7KBDH.js} +2 -2
- package/dist/{chunk-LXIPBHNJ.js → chunk-42TOCPXB.js} +5 -5
- package/dist/{chunk-KANCE4MS.js → chunk-4KWDNGMA.js} +3 -3
- package/dist/{chunk-7YJYIMWP.js → chunk-4QR7LM5F.js} +6 -6
- package/dist/{chunk-SCXVTNLE.js → chunk-5E2CRRD4.js} +4 -4
- package/dist/{chunk-ZDAAHCIS.js → chunk-5HADIIWN.js} +3 -3
- package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
- package/dist/{chunk-7F6D73NL.js → chunk-76DX2IMH.js} +2 -2
- package/dist/{chunk-FI2CQOGC.js → chunk-7NP2JHGM.js} +2 -2
- package/dist/{chunk-BMTIBQQC.js → chunk-BBBHPK2Q.js} +6 -6
- package/dist/{chunk-EUR2ORTN.js → chunk-CSJ7WNXU.js} +2 -2
- package/dist/{chunk-WWR6APJR.js → chunk-DA3D5X5Z.js} +5 -5
- package/dist/chunk-DY2I6LMX.js +1 -0
- package/dist/chunk-DY2I6LMX.js.map +1 -0
- package/dist/{chunk-QKOJ4637.js → chunk-E6K2UZGR.js} +3 -3
- package/dist/{chunk-VIMMEADQ.js → chunk-FORAVDJF.js} +9 -9
- package/dist/chunk-FWAY2SAI.js +72 -0
- package/dist/chunk-FWAY2SAI.js.map +1 -0
- package/dist/{chunk-GMRQPNG3.js → chunk-G2NVBCF7.js} +20 -25
- package/dist/chunk-G2NVBCF7.js.map +1 -0
- package/dist/{chunk-Z5WUSI47.js → chunk-G3JFESKD.js} +6 -6
- package/dist/{chunk-3EIRRLCQ.js → chunk-HC6OZ7QK.js} +2 -2
- package/dist/{chunk-SKIAWOUC.js → chunk-HOPRZEBM.js} +3 -3
- package/dist/{chunk-JHWEL4NX.js → chunk-HS662RLW.js} +2 -2
- package/dist/{chunk-BZBLPXV7.js → chunk-IWSTMVCA.js} +4 -4
- package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
- package/dist/{chunk-CW5Z67NA.js → chunk-JH2XLVWM.js} +2 -2
- package/dist/{chunk-3OTGREQG.js → chunk-JKZPGCN7.js} +11 -11
- package/dist/{chunk-DSBC6O46.js → chunk-JN2IANXD.js} +3 -3
- package/dist/{chunk-GBB23QLL.js → chunk-KJKD6Y6V.js} +3 -3
- package/dist/{chunk-KRBPWTXW.js → chunk-L3PDY7CJ.js} +2 -2
- package/dist/{chunk-HI7JPDD6.js → chunk-M3XJVD5G.js} +2 -2
- package/dist/{chunk-EEO7M5GU.js → chunk-MYTV353T.js} +4 -4
- package/dist/{chunk-3HZKUN5J.js → chunk-MZAYIG2I.js} +2 -2
- package/dist/{chunk-AKE6KVQG.js → chunk-NGXL4R54.js} +5 -1
- package/dist/chunk-NGXL4R54.js.map +1 -0
- package/dist/{chunk-3X2MA47R.js → chunk-NKEFH3RS.js} +5 -5
- package/dist/{chunk-NI67M453.js → chunk-PGANINQD.js} +5 -5
- package/dist/{chunk-BV2LOTMC.js → chunk-Q3SILZTQ.js} +2 -2
- package/dist/{chunk-TIM4PXWN.js → chunk-QHIWV55K.js} +2 -2
- package/dist/{chunk-DHAXUVMR.js → chunk-QN7FVZQD.js} +4 -4
- package/dist/{chunk-X2GWR75Q.js → chunk-TSEBMVYY.js} +3 -3
- package/dist/{chunk-CJ6XXM4X.js → chunk-U2AEM3K4.js} +6 -6
- package/dist/{chunk-ZH6NYB6Y.js → chunk-U2QXQ7D4.js} +4 -4
- package/dist/{chunk-SK2CTB3O.js → chunk-U2SAW6DH.js} +5 -5
- package/dist/{chunk-DAHSKQBV.js → chunk-UMOHHWXY.js} +2 -2
- package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
- package/dist/{chunk-JFD742C3.js → chunk-WCF56ZCD.js} +2 -2
- package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
- package/dist/{chunk-NK6O4NE4.js → chunk-XILMDEGZ.js} +3 -3
- package/dist/{chunk-QAEO52Z4.js → chunk-YGQM6GFQ.js} +2 -2
- package/dist/{chunk-WNNA6YYE.js → chunk-Z7T4EFEC.js} +7 -4
- package/dist/chunk-Z7T4EFEC.js.map +1 -0
- package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
- package/dist/{chunk-COKPPU42.js → chunk-ZIHSCBMN.js} +12 -12
- package/dist/data-display/AsyncStateContainer.js +3 -3
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/CardKit.js +7 -7
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +5 -5
- package/dist/data-display/Chip.js +3 -3
- package/dist/data-display/DataGrid.js +1 -1
- package/dist/data-display/DataViews.js +34 -34
- package/dist/data-display/DayRuler.js +4 -4
- package/dist/data-display/EmptyState.js +2 -2
- package/dist/data-display/FleetMap.js +12 -12
- package/dist/data-display/InteractiveTooltip.js +2 -2
- package/dist/data-display/Lightbox.js +7 -7
- package/dist/data-display/MapPreview.js +7 -7
- package/dist/data-display/RegionMap.js +11 -5
- package/dist/data-display/SectionOnboarding.js +3 -3
- package/dist/layout/SettingCard.js +12 -12
- package/dist/types/components/data-display/RegionMap/RegionMap.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts +4 -2
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +40 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts +36 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts.map +1 -0
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/index.d.ts +3 -2
- package/dist/types/components/data-display/RegionMap/index.d.ts.map +1 -1
- package/dist/user-avatar.js +3 -3
- package/package.json +1 -1
- package/src/components/data-display/RegionMap/RegionMap.hooks.ts +24 -33
- package/src/components/data-display/RegionMap/RegionMap.md +27 -0
- package/src/components/data-display/RegionMap/RegionMap.tsx +7 -1
- package/src/components/data-display/RegionMap/RegionMap.types.ts +41 -0
- package/src/components/data-display/RegionMap/RegionMap.view.ts +105 -0
- package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +11 -0
- package/src/components/data-display/RegionMap/index.ts +5 -1
- package/src/components/data-display/RegionMap/tests.md +10 -2
- package/dist/chunk-ACFKPE2T.js +0 -1
- package/dist/chunk-AKE6KVQG.js.map +0 -1
- package/dist/chunk-GMRQPNG3.js.map +0 -1
- package/dist/chunk-WNNA6YYE.js.map +0 -1
- /package/dist/{chunk-ACFKPE2T.js.map → _internal/components/data-display/RegionMap/RegionMap.view.js.map} +0 -0
- /package/dist/{chunk-K2VDRODL.js.map → chunk-3IDL7NK7.js.map} +0 -0
- /package/dist/{chunk-QADTI63U.js.map → chunk-3JZ3KEQQ.js.map} +0 -0
- /package/dist/{chunk-EOIRU62W.js.map → chunk-42D7KBDH.js.map} +0 -0
- /package/dist/{chunk-LXIPBHNJ.js.map → chunk-42TOCPXB.js.map} +0 -0
- /package/dist/{chunk-KANCE4MS.js.map → chunk-4KWDNGMA.js.map} +0 -0
- /package/dist/{chunk-7YJYIMWP.js.map → chunk-4QR7LM5F.js.map} +0 -0
- /package/dist/{chunk-SCXVTNLE.js.map → chunk-5E2CRRD4.js.map} +0 -0
- /package/dist/{chunk-ZDAAHCIS.js.map → chunk-5HADIIWN.js.map} +0 -0
- /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
- /package/dist/{chunk-7F6D73NL.js.map → chunk-76DX2IMH.js.map} +0 -0
- /package/dist/{chunk-FI2CQOGC.js.map → chunk-7NP2JHGM.js.map} +0 -0
- /package/dist/{chunk-BMTIBQQC.js.map → chunk-BBBHPK2Q.js.map} +0 -0
- /package/dist/{chunk-EUR2ORTN.js.map → chunk-CSJ7WNXU.js.map} +0 -0
- /package/dist/{chunk-WWR6APJR.js.map → chunk-DA3D5X5Z.js.map} +0 -0
- /package/dist/{chunk-QKOJ4637.js.map → chunk-E6K2UZGR.js.map} +0 -0
- /package/dist/{chunk-VIMMEADQ.js.map → chunk-FORAVDJF.js.map} +0 -0
- /package/dist/{chunk-Z5WUSI47.js.map → chunk-G3JFESKD.js.map} +0 -0
- /package/dist/{chunk-3EIRRLCQ.js.map → chunk-HC6OZ7QK.js.map} +0 -0
- /package/dist/{chunk-SKIAWOUC.js.map → chunk-HOPRZEBM.js.map} +0 -0
- /package/dist/{chunk-JHWEL4NX.js.map → chunk-HS662RLW.js.map} +0 -0
- /package/dist/{chunk-BZBLPXV7.js.map → chunk-IWSTMVCA.js.map} +0 -0
- /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.js.map} +0 -0
- /package/dist/{chunk-CW5Z67NA.js.map → chunk-JH2XLVWM.js.map} +0 -0
- /package/dist/{chunk-3OTGREQG.js.map → chunk-JKZPGCN7.js.map} +0 -0
- /package/dist/{chunk-DSBC6O46.js.map → chunk-JN2IANXD.js.map} +0 -0
- /package/dist/{chunk-GBB23QLL.js.map → chunk-KJKD6Y6V.js.map} +0 -0
- /package/dist/{chunk-KRBPWTXW.js.map → chunk-L3PDY7CJ.js.map} +0 -0
- /package/dist/{chunk-HI7JPDD6.js.map → chunk-M3XJVD5G.js.map} +0 -0
- /package/dist/{chunk-EEO7M5GU.js.map → chunk-MYTV353T.js.map} +0 -0
- /package/dist/{chunk-3HZKUN5J.js.map → chunk-MZAYIG2I.js.map} +0 -0
- /package/dist/{chunk-3X2MA47R.js.map → chunk-NKEFH3RS.js.map} +0 -0
- /package/dist/{chunk-NI67M453.js.map → chunk-PGANINQD.js.map} +0 -0
- /package/dist/{chunk-BV2LOTMC.js.map → chunk-Q3SILZTQ.js.map} +0 -0
- /package/dist/{chunk-TIM4PXWN.js.map → chunk-QHIWV55K.js.map} +0 -0
- /package/dist/{chunk-DHAXUVMR.js.map → chunk-QN7FVZQD.js.map} +0 -0
- /package/dist/{chunk-X2GWR75Q.js.map → chunk-TSEBMVYY.js.map} +0 -0
- /package/dist/{chunk-CJ6XXM4X.js.map → chunk-U2AEM3K4.js.map} +0 -0
- /package/dist/{chunk-ZH6NYB6Y.js.map → chunk-U2QXQ7D4.js.map} +0 -0
- /package/dist/{chunk-SK2CTB3O.js.map → chunk-U2SAW6DH.js.map} +0 -0
- /package/dist/{chunk-DAHSKQBV.js.map → chunk-UMOHHWXY.js.map} +0 -0
- /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
- /package/dist/{chunk-JFD742C3.js.map → chunk-WCF56ZCD.js.map} +0 -0
- /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
- /package/dist/{chunk-NK6O4NE4.js.map → chunk-XILMDEGZ.js.map} +0 -0
- /package/dist/{chunk-QAEO52Z4.js.map → chunk-YGQM6GFQ.js.map} +0 -0
- /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
- /package/dist/{chunk-COKPPU42.js.map → chunk-ZIHSCBMN.js.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-TAF3YYMK.js";
|
|
2
2
|
import {
|
|
3
3
|
InteractiveTooltip
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-BCWL7HUO.js";
|
|
4
|
+
} from "../chunk-G3JFESKD.js";
|
|
6
5
|
import "../chunk-QYJ25FWM.js";
|
|
6
|
+
import "../chunk-BCWL7HUO.js";
|
|
7
7
|
import "../chunk-XJAD6E3V.js";
|
|
8
8
|
import "../chunk-F5H2ZXST.js";
|
|
9
9
|
import "../chunk-N3GAFIXG.js";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import "../chunk-UM35GGCS.js";
|
|
2
2
|
import {
|
|
3
3
|
Lightbox_default
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-ZIHSCBMN.js";
|
|
5
|
+
import "../chunk-UOS7DEQZ.js";
|
|
6
|
+
import "../chunk-SYGM4SHY.js";
|
|
7
|
+
import "../chunk-WLLUARTC.js";
|
|
6
8
|
import "../chunk-RBGUS7WO.js";
|
|
7
9
|
import "../chunk-IOCY5G43.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-UOS7DEQZ.js";
|
|
10
|
+
import "../chunk-W676GY42.js";
|
|
10
11
|
import "../chunk-HZBDTPPV.js";
|
|
11
12
|
import "../chunk-WZERH7E3.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-TEQYTEM2.js";
|
|
14
|
-
import "../chunk-SYGM4SHY.js";
|
|
13
|
+
import "../chunk-64UNVW6D.js";
|
|
15
14
|
import "../chunk-VQU3CBAL.js";
|
|
15
|
+
import "../chunk-TEQYTEM2.js";
|
|
16
16
|
import "../chunk-XJAD6E3V.js";
|
|
17
17
|
import "../chunk-F5H2ZXST.js";
|
|
18
18
|
import "../chunk-N3GAFIXG.js";
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import "../chunk-EJDOH7IN.js";
|
|
2
2
|
import {
|
|
3
3
|
MapPreview
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-U2AEM3K4.js";
|
|
5
|
+
import "../chunk-MYTV353T.js";
|
|
6
|
+
import "../chunk-U2QXQ7D4.js";
|
|
7
7
|
import "../chunk-ZZ4MMUBY.js";
|
|
8
8
|
import "../chunk-6PU5P7QT.js";
|
|
9
9
|
import "../chunk-M5Y42AZ4.js";
|
|
10
|
+
import "../chunk-QSRZOXQI.js";
|
|
11
|
+
import "../chunk-5NT2M2JI.js";
|
|
12
|
+
import "../chunk-H2J2MTRE.js";
|
|
10
13
|
import "../chunk-UAOE3ZPC.js";
|
|
11
14
|
import "../chunk-LTSVYILY.js";
|
|
12
15
|
import "../chunk-EMSMJRP3.js";
|
|
13
16
|
import "../chunk-4YYFZ6TE.js";
|
|
14
|
-
import "../chunk-MIUPTZS6.js";
|
|
15
|
-
import "../chunk-QSRZOXQI.js";
|
|
16
|
-
import "../chunk-5NT2M2JI.js";
|
|
17
|
-
import "../chunk-H2J2MTRE.js";
|
|
18
17
|
import "../chunk-CB6DTWD5.js";
|
|
18
|
+
import "../chunk-MIUPTZS6.js";
|
|
19
19
|
import "../chunk-ARGVUTTL.js";
|
|
20
20
|
import "../chunk-PZS7N74L.js";
|
|
21
21
|
import "../chunk-AA2X5GOT.js";
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-DY2I6LMX.js";
|
|
2
2
|
import {
|
|
3
3
|
RegionMap
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-Z7T4EFEC.js";
|
|
5
|
+
import "../chunk-NGXL4R54.js";
|
|
6
6
|
import "../chunk-J3AWGTJY.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-G2NVBCF7.js";
|
|
8
|
+
import {
|
|
9
|
+
boundsOfRings,
|
|
10
|
+
regionMapView
|
|
11
|
+
} from "../chunk-FWAY2SAI.js";
|
|
8
12
|
import {
|
|
9
13
|
decodePolyline,
|
|
10
14
|
hitRegion,
|
|
@@ -39,8 +43,10 @@ import "../chunk-YKCAJ2TN.js";
|
|
|
39
43
|
import "../chunk-PZ5AY32C.js";
|
|
40
44
|
export {
|
|
41
45
|
RegionMap,
|
|
46
|
+
boundsOfRings,
|
|
42
47
|
decodePolyline,
|
|
43
48
|
hitRegion,
|
|
44
|
-
projectionAt
|
|
49
|
+
projectionAt,
|
|
50
|
+
regionMapView
|
|
45
51
|
};
|
|
46
52
|
//# sourceMappingURL=RegionMap.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionOnboarding,
|
|
3
3
|
SectionOnboarding_default
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-42D7KBDH.js";
|
|
5
5
|
import "../chunk-EWFBDAB7.js";
|
|
6
6
|
import "../chunk-LL2BWQPM.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-KLPTOVIX.js";
|
|
7
|
+
import "../chunk-42TOCPXB.js";
|
|
9
8
|
import "../chunk-MWFSIB6K.js";
|
|
9
|
+
import "../chunk-KLPTOVIX.js";
|
|
10
10
|
import "../chunk-XOXXG7Q5.js";
|
|
11
11
|
import "../chunk-TYJR4GOF.js";
|
|
12
12
|
import "../chunk-XJAD6E3V.js";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import "../chunk-QGUNUXTT.js";
|
|
2
2
|
import {
|
|
3
3
|
SettingToggle
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-3IDL7NK7.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingGroup
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-KJKD6Y6V.js";
|
|
8
|
+
import "../chunk-5HADIIWN.js";
|
|
9
9
|
import "../chunk-XJQNSMGA.js";
|
|
10
10
|
import {
|
|
11
11
|
SETTING_GRID_CONTAINER,
|
|
12
12
|
SettingGrid
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-JH2XLVWM.js";
|
|
14
14
|
import {
|
|
15
15
|
SettingCard
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-HOPRZEBM.js";
|
|
17
17
|
import "../chunk-SALQ65SM.js";
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-TSEBMVYY.js";
|
|
19
|
+
import "../chunk-HC6OZ7QK.js";
|
|
20
20
|
import "../chunk-IQWPVPV5.js";
|
|
21
21
|
import "../chunk-BFRVMCQM.js";
|
|
22
22
|
import "../chunk-RN7UJI7S.js";
|
|
@@ -24,14 +24,14 @@ import "../chunk-JYWF76Z5.js";
|
|
|
24
24
|
import "../chunk-GGMB6LJH.js";
|
|
25
25
|
import "../chunk-PUFA7FQ7.js";
|
|
26
26
|
import "../chunk-TAF3YYMK.js";
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-BCWL7HUO.js";
|
|
27
|
+
import "../chunk-G3JFESKD.js";
|
|
29
28
|
import "../chunk-QYJ25FWM.js";
|
|
29
|
+
import "../chunk-BCWL7HUO.js";
|
|
30
30
|
import "../chunk-2GTORM5E.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-E5I776YW.js";
|
|
31
|
+
import "../chunk-PGANINQD.js";
|
|
32
|
+
import "../chunk-QN7FVZQD.js";
|
|
34
33
|
import "../chunk-BF4FYOAR.js";
|
|
34
|
+
import "../chunk-E5I776YW.js";
|
|
35
35
|
import "../chunk-4PJ52YBO.js";
|
|
36
36
|
import "../chunk-EIMFA7KP.js";
|
|
37
37
|
import "../chunk-OPP6USJC.js";
|
|
@@ -18,8 +18,11 @@ import type { RegionMapProps } from './RegionMap.types';
|
|
|
18
18
|
* is that path. A finger's tap takes the SMALLEST area within a few pixels'
|
|
19
19
|
* worth of metres (`hitRegion`), so a sliver beside a big area can be hit
|
|
20
20
|
* from the map; one too thin even for that is still on the list.
|
|
21
|
+
* - **The host can draw inside it.** `reach` widens the view past the largest
|
|
22
|
+
* circle and `overlay` draws a layer in the SVG at the map's own projection,
|
|
23
|
+
* tap-transparent; `regionMapView` gives the same view to HTML laid over it.
|
|
21
24
|
* - **A toggle is cheap.** Geometry is projected once per `rings` identity,
|
|
22
25
|
* and the base layer is memoised, so a tap re-renders the hatch and labels.
|
|
23
26
|
*/
|
|
24
|
-
export declare function RegionMap({ regions, center, circles, onToggle, highlightedIds, copy, listMode, listSort, maxHeight, className, dataTestId, }: RegionMapProps): React.JSX.Element | null;
|
|
27
|
+
export declare function RegionMap({ regions, center, circles, reach, overlay, onToggle, highlightedIds, copy, listMode, listSort, maxHeight, className, dataTestId, }: RegionMapProps): React.JSX.Element | null;
|
|
25
28
|
//# sourceMappingURL=RegionMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionMap.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD
|
|
1
|
+
{"version":3,"file":"RegionMap.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,cAAuB,EACvB,IAAI,EACJ,QAAsB,EACtB,QAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAyB,GAC1B,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0C3C"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type DrawnRegion, type PlaneBox } from './RegionMap.helpers';
|
|
2
|
+
import { type DrawnRegion, type PlaneBox, type Projection } from './RegionMap.helpers';
|
|
3
3
|
import type { RegionMapProps } from './RegionMap.types';
|
|
4
4
|
/** What the drawing needs, derived from the props. */
|
|
5
5
|
export interface RegionMapModel {
|
|
6
6
|
/** The square shown, or null when there is nothing to centre on. */
|
|
7
7
|
view: PlaneBox | null;
|
|
8
|
+
/** The projection drawn with, or null when there is nothing to centre on. */
|
|
9
|
+
projection: Projection | null;
|
|
8
10
|
drawn: DrawnRegion[];
|
|
9
11
|
/** Radii drawn, in metres; empty without circles. */
|
|
10
12
|
radii: number[];
|
|
@@ -24,5 +26,5 @@ export interface RegionMapModel {
|
|
|
24
26
|
* other tap — a finger, a pen — goes to `hitRegion`: the smallest area within
|
|
25
27
|
* a few pixels, so a sliver beside a big area is reachable from the map.
|
|
26
28
|
*/
|
|
27
|
-
export declare function useRegionMap({ regions, center, circles, onToggle, }: Pick<RegionMapProps, 'regions' | 'center' | 'circles' | 'onToggle'>): RegionMapModel;
|
|
29
|
+
export declare function useRegionMap({ regions, center, circles, reach, onToggle, }: Pick<RegionMapProps, 'regions' | 'center' | 'circles' | 'reach' | 'onToggle'>): RegionMapModel;
|
|
28
30
|
//# sourceMappingURL=RegionMap.hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionMap.hooks.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"RegionMap.hooks.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kDAAkD;IAClD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAClE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC3D;AA8CD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,MAAM,EACN,OAAY,EACZ,KAAK,EACL,QAAQ,GACT,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,cAAc,CAwBhG"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* parking sector alike. Coordinates are plain WGS 84 latitude/longitude, and
|
|
7
7
|
* every word arrives through `copy`.
|
|
8
8
|
*/
|
|
9
|
+
import type React from 'react';
|
|
10
|
+
import type { PlaneBox, Projection } from './RegionMap.helpers';
|
|
9
11
|
/** A latitude/longitude pair, in that order. */
|
|
10
12
|
export type RegionMapPoint = readonly [latitude: number, longitude: number];
|
|
11
13
|
/** One closed ring: the first point repeated last is allowed, not required. */
|
|
@@ -45,6 +47,30 @@ export interface RegionMapRegion {
|
|
|
45
47
|
export interface RegionMapCircle {
|
|
46
48
|
radiusMetres: number;
|
|
47
49
|
}
|
|
50
|
+
/** A latitude/longitude box, by its four edges in degrees. */
|
|
51
|
+
export interface RegionMapBounds {
|
|
52
|
+
south: number;
|
|
53
|
+
west: number;
|
|
54
|
+
north: number;
|
|
55
|
+
east: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* An extent the view must fit besides its circles: a radius around the centre,
|
|
59
|
+
* or a box — e.g. the bounds of some outlines (`boundsOfRings`), for a reach
|
|
60
|
+
* no single radius describes.
|
|
61
|
+
*/
|
|
62
|
+
export type RegionMapReach = {
|
|
63
|
+
radiusMetres: number;
|
|
64
|
+
} | {
|
|
65
|
+
bounds: RegionMapBounds;
|
|
66
|
+
};
|
|
67
|
+
/** What a host overlay is drawn with: the map's own view and projection. */
|
|
68
|
+
export interface RegionMapLayer {
|
|
69
|
+
/** The SVG viewBox, in projected metres. */
|
|
70
|
+
view: PlaneBox;
|
|
71
|
+
/** The projection the map draws with — `projectionAt(center)`. */
|
|
72
|
+
projection: Projection;
|
|
73
|
+
}
|
|
48
74
|
/** Every word the map prints or announces. */
|
|
49
75
|
export interface RegionMapCopy {
|
|
50
76
|
/** The drawing's accessible name (`role="img"`). */
|
|
@@ -93,6 +119,20 @@ export interface RegionMapProps {
|
|
|
93
119
|
} | null;
|
|
94
120
|
/** Circles around the centre; the view fits the largest. */
|
|
95
121
|
circles?: readonly RegionMapCircle[];
|
|
122
|
+
/**
|
|
123
|
+
* An extent the view must ALSO fit, before its margin — something the host
|
|
124
|
+
* draws past the largest circle. With circles the view stays centred on the
|
|
125
|
+
* centre and grows to the reach's farthest edge; without, it fits the areas
|
|
126
|
+
* and the reach together. Omit it and the view is the circles' (or areas').
|
|
127
|
+
*/
|
|
128
|
+
reach?: RegionMapReach;
|
|
129
|
+
/**
|
|
130
|
+
* A host layer drawn INSIDE the drawing's SVG, over the excluded hatch and
|
|
131
|
+
* under the circles, highlights and centre, so it shares the map's view,
|
|
132
|
+
* projection and frame. It is wrapped in `pointer-events: none`: taps go
|
|
133
|
+
* through it to the areas. Return SVG elements, in projected metres.
|
|
134
|
+
*/
|
|
135
|
+
overlay?: (layer: RegionMapLayer) => React.ReactNode;
|
|
96
136
|
/**
|
|
97
137
|
* A tap on an area, or a press of its list button. Omit it and the map is
|
|
98
138
|
* read-only: nothing is tappable and the list rows are not buttons.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionMap.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE5E,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,cAAc,EAAE,CAAC;AAEtD,sBAAsB;AACtB,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC;;;OAGG;IACH,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,4DAA4D;IAC5D,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"RegionMap.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type PlaneBox, type Projection } from './RegionMap.helpers';
|
|
2
|
+
import type { RegionMapBounds, RegionMapCircle, RegionMapReach, RegionMapRegion, RegionMapRing } from './RegionMap.types';
|
|
3
|
+
/** The smallest box holding every given box, or null with none. */
|
|
4
|
+
export declare function unionBox(boxes: readonly (PlaneBox | null)[]): PlaneBox | null;
|
|
5
|
+
/** The latitude/longitude box around some outlines — a `reach` no radius describes. */
|
|
6
|
+
export declare function boundsOfRings(rings: readonly RegionMapRing[]): RegionMapBounds | null;
|
|
7
|
+
/** A `reach` as a box in projected metres (a radius is a square around the centre). */
|
|
8
|
+
export declare function reachBox(reach: RegionMapReach, projection: Projection): PlaneBox | null;
|
|
9
|
+
/**
|
|
10
|
+
* The view, given what it must fit: the outermost circle and the `reach` with
|
|
11
|
+
* the margin on top, still centred on the centre; else every area and the
|
|
12
|
+
* reach together. Without a reach it is exactly `viewBoxFor`'s.
|
|
13
|
+
*/
|
|
14
|
+
export declare function viewWithin(outermostMetres: number | null, reach: PlaneBox | null, areaBoxes: () => readonly (PlaneBox | null)[]): PlaneBox | null;
|
|
15
|
+
/** The middle of every area, for a map with no centre of its own. */
|
|
16
|
+
export declare function centreOf(regions: readonly RegionMapRegion[]): {
|
|
17
|
+
latitude: number;
|
|
18
|
+
longitude: number;
|
|
19
|
+
} | null;
|
|
20
|
+
/**
|
|
21
|
+
* The square `RegionMap` shows for these props, in projected metres around
|
|
22
|
+
* `center` (or the areas' middle) — for a host that lays its own HTML over the
|
|
23
|
+
* drawing at the same scale: a point `p` sits at
|
|
24
|
+
* `(p.x - view.minX) / view.spanX` across. With circles the view is centred,
|
|
25
|
+
* so its half-side is `view.spanX / 2`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function regionMapView({ regions, center, circles, reach, }: {
|
|
28
|
+
regions: readonly RegionMapRegion[];
|
|
29
|
+
center: {
|
|
30
|
+
latitude: number;
|
|
31
|
+
longitude: number;
|
|
32
|
+
} | null;
|
|
33
|
+
circles?: readonly RegionMapCircle[];
|
|
34
|
+
reach?: RegionMapReach;
|
|
35
|
+
}): PlaneBox | null;
|
|
36
|
+
//# sourceMappingURL=RegionMap.view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegionMap.view.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMap.view.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACb,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACd,MAAM,mBAAmB,CAAC;AAK3B,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,IAAI,CAM7E;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,eAAe,GAAG,IAAI,CAMrF;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CASvF;AAOD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,KAAK,EAAE,QAAQ,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAC5C,QAAQ,GAAG,IAAI,CAKjB;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI5G;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,MAAM,EACN,OAAY,EACZ,KAAK,GACN,EAAE;IACD,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,GAAG,QAAQ,GAAG,IAAI,CASlB"}
|
|
@@ -2,10 +2,13 @@ import { type Theme } from '@mui/material/styles/index.js';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { type PlaneBox } from './RegionMap.helpers';
|
|
4
4
|
import type { RegionMapModel } from './RegionMap.hooks';
|
|
5
|
+
import type { RegionMapLayer } from './RegionMap.types';
|
|
5
6
|
export interface RegionMapDrawingProps {
|
|
6
7
|
model: RegionMapModel & {
|
|
7
8
|
view: PlaneBox;
|
|
8
9
|
};
|
|
10
|
+
/** The host's layer, drawn inside the SVG under the circles (`RegionMapProps.overlay`). */
|
|
11
|
+
overlay?: (layer: RegionMapLayer) => React.ReactNode;
|
|
9
12
|
showCenter: boolean;
|
|
10
13
|
highlightedIds: readonly string[];
|
|
11
14
|
maxHeight: string | undefined;
|
|
@@ -24,5 +27,5 @@ export interface RegionMapDrawingProps {
|
|
|
24
27
|
* The base areas are a memoised layer: a toggle changes `excluded`, not the
|
|
25
28
|
* geometry, so only the hatch, highlight and label layers re-render.
|
|
26
29
|
*/
|
|
27
|
-
export declare function RegionMapDrawing({ model, showCenter, highlightedIds, maxHeight, label, tappable, testId, theme, }: RegionMapDrawingProps): React.JSX.Element;
|
|
30
|
+
export declare function RegionMapDrawing({ model, overlay, showCenter, highlightedIds, maxHeight, label, tappable, testId, theme, }: RegionMapDrawingProps): React.JSX.Element;
|
|
28
31
|
//# sourceMappingURL=RegionMapDrawing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionMapDrawing.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMapDrawing.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAsD,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RegionMapDrawing.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/RegionMapDrawing.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAsD,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC3C,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmE3C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { RegionMap } from './RegionMap';
|
|
2
2
|
export { decodePolyline, hitRegion, projectionAt } from './RegionMap.helpers';
|
|
3
|
-
export
|
|
4
|
-
export type {
|
|
3
|
+
export { boundsOfRings, regionMapView } from './RegionMap.view';
|
|
4
|
+
export type { AreaGeometry, PlaneBox, PlanePoint, PlaneRegion, Projection } from './RegionMap.helpers';
|
|
5
|
+
export type { RegionMapBounds, RegionMapCircle, RegionMapCopy, RegionMapLayer, RegionMapListMode, RegionMapListSort, RegionMapPoint, RegionMapProps, RegionMapReach, RegionMapRegion, RegionMapRing, } from './RegionMap.types';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/RegionMap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvG,YAAY,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC"}
|
package/dist/user-avatar.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserAvatar,
|
|
3
3
|
UserMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Q3SILZTQ.js";
|
|
5
5
|
import "./chunk-DQ22UKMZ.js";
|
|
6
6
|
import "./chunk-UDQSIRAP.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-3ZVUNSFF.js";
|
|
7
|
+
import "./chunk-4QR7LM5F.js";
|
|
9
8
|
import "./chunk-EOQ6EKTS.js";
|
|
10
9
|
import "./chunk-6ZZGK5DT.js";
|
|
10
|
+
import "./chunk-3ZVUNSFF.js";
|
|
11
11
|
import "./chunk-MTEQEPNY.js";
|
|
12
12
|
import "./chunk-VUHLNYAE.js";
|
|
13
13
|
import "./chunk-2GSIEDGN.js";
|
package/package.json
CHANGED
|
@@ -6,16 +6,19 @@ import {
|
|
|
6
6
|
geometryCache,
|
|
7
7
|
hitRegion,
|
|
8
8
|
projectionAt,
|
|
9
|
-
viewBoxFor,
|
|
10
9
|
type DrawnRegion,
|
|
11
10
|
type PlaneBox,
|
|
11
|
+
type Projection,
|
|
12
12
|
} from './RegionMap.helpers';
|
|
13
|
-
import type { RegionMapProps
|
|
13
|
+
import type { RegionMapProps } from './RegionMap.types';
|
|
14
|
+
import { centreOf, reachBox, viewWithin } from './RegionMap.view';
|
|
14
15
|
|
|
15
16
|
/** What the drawing needs, derived from the props. */
|
|
16
17
|
export interface RegionMapModel {
|
|
17
18
|
/** The square shown, or null when there is nothing to centre on. */
|
|
18
19
|
view: PlaneBox | null;
|
|
20
|
+
/** The projection drawn with, or null when there is nothing to centre on. */
|
|
21
|
+
projection: Projection | null;
|
|
19
22
|
drawn: DrawnRegion[];
|
|
20
23
|
/** Radii drawn, in metres; empty without circles. */
|
|
21
24
|
radii: number[];
|
|
@@ -28,15 +31,6 @@ export interface RegionMapModel {
|
|
|
28
31
|
/** A tap reaches an area this close: a share of the view (~8 px on a phone). */
|
|
29
32
|
const TOLERANCE_SHARE = 1 / 45;
|
|
30
33
|
|
|
31
|
-
/** The middle of every area, for a map with no centre of its own. */
|
|
32
|
-
function centreOf(regions: readonly RegionMapRegion[]): { latitude: number; longitude: number } | null {
|
|
33
|
-
const points = regions.flatMap((r) => r.rings.flat());
|
|
34
|
-
const lats = extent(points.map(([lat]) => lat));
|
|
35
|
-
const lngs = extent(points.map(([, lng]) => lng));
|
|
36
|
-
if (lats === null || lngs === null) return null;
|
|
37
|
-
return { latitude: (lats.min + lats.max) / 2, longitude: (lngs.min + lngs.max) / 2 };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
34
|
/** The click, in the drawing's own coordinates — or null where it cannot be read. */
|
|
41
35
|
function svgPoint(event: React.MouseEvent<SVGSVGElement>): { x: number; y: number } | null {
|
|
42
36
|
const svg = event.currentTarget;
|
|
@@ -46,16 +40,6 @@ function svgPoint(event: React.MouseEvent<SVGSVGElement>): { x: number; y: numbe
|
|
|
46
40
|
return { x: point.x, y: point.y };
|
|
47
41
|
}
|
|
48
42
|
|
|
49
|
-
/** The view: the outermost circle when there is one, else every area's box. */
|
|
50
|
-
function viewOf(outermostMetres: number | null, drawable: () => (PlaneBox | null)[]): PlaneBox | null {
|
|
51
|
-
if (outermostMetres !== null) return viewBoxFor(outermostMetres, null);
|
|
52
|
-
const boxes = drawable().filter((box): box is PlaneBox => box !== null);
|
|
53
|
-
const xs = extent(boxes.flatMap((b) => [b.minX, b.minX + b.spanX]));
|
|
54
|
-
const ys = extent(boxes.flatMap((b) => [b.minY, b.minY + b.spanY]));
|
|
55
|
-
if (xs === null || ys === null) return null;
|
|
56
|
-
return viewBoxFor(null, { minX: xs.min, minY: ys.min, spanX: xs.max - xs.min, spanY: ys.max - ys.min });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
43
|
/** Which area a click or tap means — see `useRegionMap`. */
|
|
60
44
|
function tappedRegion(
|
|
61
45
|
event: React.MouseEvent<SVGSVGElement>,
|
|
@@ -74,16 +58,18 @@ function tappedRegion(
|
|
|
74
58
|
);
|
|
75
59
|
}
|
|
76
60
|
|
|
77
|
-
/** The geometry cache for a centre, or
|
|
78
|
-
function useGeometry(
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
/** The projection and geometry cache for a centre, or nulls without one. */
|
|
62
|
+
function useGeometry(origin: { latitude: number; longitude: number } | null): {
|
|
63
|
+
projection: Projection | null;
|
|
64
|
+
geometryOf: ReturnType<typeof geometryCache> | null;
|
|
65
|
+
} {
|
|
81
66
|
const lat = origin?.latitude ?? null;
|
|
82
67
|
const lng = origin?.longitude ?? null;
|
|
83
|
-
return React.useMemo(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
68
|
+
return React.useMemo(() => {
|
|
69
|
+
if (lat === null || lng === null) return { projection: null, geometryOf: null };
|
|
70
|
+
const projection = projectionAt({ latitude: lat, longitude: lng });
|
|
71
|
+
return { projection, geometryOf: geometryCache(projection) };
|
|
72
|
+
}, [lat, lng]);
|
|
87
73
|
}
|
|
88
74
|
|
|
89
75
|
/**
|
|
@@ -101,13 +87,18 @@ export function useRegionMap({
|
|
|
101
87
|
regions,
|
|
102
88
|
center,
|
|
103
89
|
circles = [],
|
|
90
|
+
reach,
|
|
104
91
|
onToggle,
|
|
105
|
-
}: Pick<RegionMapProps, 'regions' | 'center' | 'circles' | 'onToggle'>): RegionMapModel {
|
|
106
|
-
const geometryOf = useGeometry(center ?? centreOf(regions));
|
|
92
|
+
}: Pick<RegionMapProps, 'regions' | 'center' | 'circles' | 'reach' | 'onToggle'>): RegionMapModel {
|
|
93
|
+
const { projection, geometryOf } = useGeometry(center ?? centreOf(regions));
|
|
107
94
|
const radii = circles.map((c) => c.radiusMetres);
|
|
108
95
|
const outermostMetres = extent(radii)?.max ?? null;
|
|
109
96
|
const view =
|
|
110
|
-
|
|
97
|
+
projection === null || geometryOf === null
|
|
98
|
+
? null
|
|
99
|
+
: viewWithin(outermostMetres, reach === undefined ? null : reachBox(reach, projection), () =>
|
|
100
|
+
regions.map((r) => geometryOf(r.rings).bounds),
|
|
101
|
+
);
|
|
111
102
|
const drawn = geometryOf && view ? drawOrder(regions, geometryOf, view) : [];
|
|
112
103
|
const pointerType = React.useRef<string>('mouse');
|
|
113
104
|
|
|
@@ -121,5 +112,5 @@ export function useRegionMap({
|
|
|
121
112
|
if (hit) onToggle(hit);
|
|
122
113
|
};
|
|
123
114
|
|
|
124
|
-
return { view, drawn, radii, outermostMetres, onPointerDown, onClick };
|
|
115
|
+
return { view, projection, drawn, radii, outermostMetres, onPointerDown, onClick };
|
|
125
116
|
}
|
|
@@ -75,6 +75,27 @@ clipped at an edge — the map reads the same at 320 px and at 1600 px. The
|
|
|
75
75
|
drawing is square; `maxHeight` caps it on a wide screen, and where it sits in a
|
|
76
76
|
wider box is the host's call.
|
|
77
77
|
|
|
78
|
+
### A host can draw inside it, at its scale
|
|
79
|
+
|
|
80
|
+
A host often has something of its own to show over the areas — a band served
|
|
81
|
+
past the largest circle, a route, a marker — and laying a second SVG over the
|
|
82
|
+
drawing means copying its view math and losing its frame. So:
|
|
83
|
+
|
|
84
|
+
- `reach` (`{ radiusMetres }` or `{ bounds }`) is an extent the view must ALSO
|
|
85
|
+
fit, before the 12% margin. With circles the view stays centred on the centre
|
|
86
|
+
and grows to the reach's farthest edge, so a ring stays a circle in the
|
|
87
|
+
middle; without circles the view fits the areas and the reach together. A
|
|
88
|
+
reach no radius describes — the outlines of some areas — is a box:
|
|
89
|
+
`boundsOfRings(rings)`. Omit it and the view is exactly what it was.
|
|
90
|
+
- `overlay(layer)` draws inside the SVG with `layer.view` and
|
|
91
|
+
`layer.projection` (`projectionAt(center)`), over the excluded hatch and
|
|
92
|
+
under the circles, highlights and centre. It sits in a `pointer-events: none`
|
|
93
|
+
group, so a tap still reaches the area beneath.
|
|
94
|
+
- `regionMapView(props)` returns the same view for HTML laid over the drawing
|
|
95
|
+
(a pill on a circle, a note): a point `p` sits at `(p.x - view.minX) /
|
|
96
|
+
view.spanX` across; with circles the view is centred and its half-side is
|
|
97
|
+
`view.spanX / 2`.
|
|
98
|
+
|
|
78
99
|
## Props
|
|
79
100
|
|
|
80
101
|
| prop | type | default | what it does |
|
|
@@ -82,6 +103,8 @@ wider box is the host's call.
|
|
|
82
103
|
| `regions` | `readonly RegionMapRegion[]` | — | the areas; drawn when any part is in view |
|
|
83
104
|
| `center` | `{ latitude, longitude } \| null` | — | centre, dot and circles; `null` centres on the areas, no dot |
|
|
84
105
|
| `circles` | `readonly { radiusMetres }[]` | `[]` | dashed circles; the view fits the largest |
|
|
106
|
+
| `reach` | `{ radiusMetres } \| { bounds: { south, west, north, east } }` | — | an extent the view must also fit (margin on top) |
|
|
107
|
+
| `overlay` | `(layer: { view, projection }) => ReactNode` | — | a host layer inside the SVG, under the circles, tap-transparent |
|
|
85
108
|
| `onToggle` | `(id: string) => void` | — | a tap or a list press; omit for read-only |
|
|
86
109
|
| `highlightedIds` | `readonly string[]` | `[]` | areas to point at (a search's hits), outlined and named |
|
|
87
110
|
| `copy` | `RegionMapCopy` | — | every word |
|
|
@@ -117,6 +140,10 @@ wider box is the host's call.
|
|
|
117
140
|
`[latitude, longitude]` points; outlines usually travel this way.
|
|
118
141
|
- `hitRegion(regions, point, tolerance)` and `projectionAt(center)` — the hit
|
|
119
142
|
test and projection the component uses, for a host that draws its own layer.
|
|
143
|
+
- `regionMapView({ regions, center, circles, reach })` — the view the
|
|
144
|
+
component shows for those props, in projected metres, for HTML laid over it.
|
|
145
|
+
- `boundsOfRings(rings)` — the latitude/longitude box around some outlines,
|
|
146
|
+
for a `reach` no radius describes.
|
|
120
147
|
|
|
121
148
|
## Example
|
|
122
149
|
|
|
@@ -29,6 +29,9 @@ const NO_IDS: readonly string[] = [];
|
|
|
29
29
|
* is that path. A finger's tap takes the SMALLEST area within a few pixels'
|
|
30
30
|
* worth of metres (`hitRegion`), so a sliver beside a big area can be hit
|
|
31
31
|
* from the map; one too thin even for that is still on the list.
|
|
32
|
+
* - **The host can draw inside it.** `reach` widens the view past the largest
|
|
33
|
+
* circle and `overlay` draws a layer in the SVG at the map's own projection,
|
|
34
|
+
* tap-transparent; `regionMapView` gives the same view to HTML laid over it.
|
|
32
35
|
* - **A toggle is cheap.** Geometry is projected once per `rings` identity,
|
|
33
36
|
* and the base layer is memoised, so a tap re-renders the hatch and labels.
|
|
34
37
|
*/
|
|
@@ -36,6 +39,8 @@ export function RegionMap({
|
|
|
36
39
|
regions,
|
|
37
40
|
center,
|
|
38
41
|
circles,
|
|
42
|
+
reach,
|
|
43
|
+
overlay,
|
|
39
44
|
onToggle,
|
|
40
45
|
highlightedIds = NO_IDS,
|
|
41
46
|
copy,
|
|
@@ -46,7 +51,7 @@ export function RegionMap({
|
|
|
46
51
|
dataTestId = 'region-map',
|
|
47
52
|
}: RegionMapProps): React.JSX.Element | null {
|
|
48
53
|
const theme = useTheme();
|
|
49
|
-
const model = useRegionMap({ regions, center, circles, onToggle });
|
|
54
|
+
const model = useRegionMap({ regions, center, circles, reach, onToggle });
|
|
50
55
|
const { view } = model;
|
|
51
56
|
if (view === null && regions.length === 0) return null;
|
|
52
57
|
return (
|
|
@@ -55,6 +60,7 @@ export function RegionMap({
|
|
|
55
60
|
<>
|
|
56
61
|
<RegionMapDrawing
|
|
57
62
|
model={{ ...model, view }}
|
|
63
|
+
overlay={overlay}
|
|
58
64
|
showCenter={center !== null}
|
|
59
65
|
highlightedIds={highlightedIds}
|
|
60
66
|
maxHeight={maxHeight}
|