@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.
Files changed (205) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  3. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  4. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  5. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  6. package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
  7. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  8. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  9. package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
  10. package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
  11. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +1 -1
  12. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +21 -21
  13. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +25 -25
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +6 -6
  15. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +7 -7
  16. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +5 -5
  17. package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
  18. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +6 -6
  19. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +7 -7
  20. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +18 -18
  21. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
  22. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
  23. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
  24. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +4 -4
  25. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
  26. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +2 -2
  27. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +4 -4
  28. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  29. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  30. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +9 -9
  31. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -8
  32. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
  33. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  34. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
  35. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  36. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  37. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
  38. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  39. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
  40. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -7
  41. package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +2 -1
  42. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +4 -3
  43. package/dist/_internal/components/data-display/RegionMap/RegionMap.view.js +19 -0
  44. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +1 -1
  45. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
  46. package/dist/_internal/components/data-display/index.js +50 -44
  47. package/dist/_internal/components/index.js +57 -51
  48. package/dist/_internal/components/layout/SettingCard/SettingCard.js +8 -8
  49. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +4 -4
  50. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +7 -7
  51. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +5 -5
  52. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +9 -9
  53. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
  54. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +9 -9
  55. package/dist/_internal/components/layout/index.js +12 -12
  56. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  57. package/dist/charts.js +5 -5
  58. package/dist/{chunk-K2VDRODL.js → chunk-3IDL7NK7.js} +2 -2
  59. package/dist/{chunk-QADTI63U.js → chunk-3JZ3KEQQ.js} +2 -2
  60. package/dist/{chunk-EOIRU62W.js → chunk-42D7KBDH.js} +2 -2
  61. package/dist/{chunk-LXIPBHNJ.js → chunk-42TOCPXB.js} +5 -5
  62. package/dist/{chunk-KANCE4MS.js → chunk-4KWDNGMA.js} +3 -3
  63. package/dist/{chunk-7YJYIMWP.js → chunk-4QR7LM5F.js} +6 -6
  64. package/dist/{chunk-SCXVTNLE.js → chunk-5E2CRRD4.js} +4 -4
  65. package/dist/{chunk-ZDAAHCIS.js → chunk-5HADIIWN.js} +3 -3
  66. package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
  67. package/dist/{chunk-7F6D73NL.js → chunk-76DX2IMH.js} +2 -2
  68. package/dist/{chunk-FI2CQOGC.js → chunk-7NP2JHGM.js} +2 -2
  69. package/dist/{chunk-BMTIBQQC.js → chunk-BBBHPK2Q.js} +6 -6
  70. package/dist/{chunk-EUR2ORTN.js → chunk-CSJ7WNXU.js} +2 -2
  71. package/dist/{chunk-WWR6APJR.js → chunk-DA3D5X5Z.js} +5 -5
  72. package/dist/chunk-DY2I6LMX.js +1 -0
  73. package/dist/chunk-DY2I6LMX.js.map +1 -0
  74. package/dist/{chunk-QKOJ4637.js → chunk-E6K2UZGR.js} +3 -3
  75. package/dist/{chunk-VIMMEADQ.js → chunk-FORAVDJF.js} +9 -9
  76. package/dist/chunk-FWAY2SAI.js +72 -0
  77. package/dist/chunk-FWAY2SAI.js.map +1 -0
  78. package/dist/{chunk-GMRQPNG3.js → chunk-G2NVBCF7.js} +20 -25
  79. package/dist/chunk-G2NVBCF7.js.map +1 -0
  80. package/dist/{chunk-Z5WUSI47.js → chunk-G3JFESKD.js} +6 -6
  81. package/dist/{chunk-3EIRRLCQ.js → chunk-HC6OZ7QK.js} +2 -2
  82. package/dist/{chunk-SKIAWOUC.js → chunk-HOPRZEBM.js} +3 -3
  83. package/dist/{chunk-JHWEL4NX.js → chunk-HS662RLW.js} +2 -2
  84. package/dist/{chunk-BZBLPXV7.js → chunk-IWSTMVCA.js} +4 -4
  85. package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
  86. package/dist/{chunk-CW5Z67NA.js → chunk-JH2XLVWM.js} +2 -2
  87. package/dist/{chunk-3OTGREQG.js → chunk-JKZPGCN7.js} +11 -11
  88. package/dist/{chunk-DSBC6O46.js → chunk-JN2IANXD.js} +3 -3
  89. package/dist/{chunk-GBB23QLL.js → chunk-KJKD6Y6V.js} +3 -3
  90. package/dist/{chunk-KRBPWTXW.js → chunk-L3PDY7CJ.js} +2 -2
  91. package/dist/{chunk-HI7JPDD6.js → chunk-M3XJVD5G.js} +2 -2
  92. package/dist/{chunk-EEO7M5GU.js → chunk-MYTV353T.js} +4 -4
  93. package/dist/{chunk-3HZKUN5J.js → chunk-MZAYIG2I.js} +2 -2
  94. package/dist/{chunk-AKE6KVQG.js → chunk-NGXL4R54.js} +5 -1
  95. package/dist/chunk-NGXL4R54.js.map +1 -0
  96. package/dist/{chunk-3X2MA47R.js → chunk-NKEFH3RS.js} +5 -5
  97. package/dist/{chunk-NI67M453.js → chunk-PGANINQD.js} +5 -5
  98. package/dist/{chunk-BV2LOTMC.js → chunk-Q3SILZTQ.js} +2 -2
  99. package/dist/{chunk-TIM4PXWN.js → chunk-QHIWV55K.js} +2 -2
  100. package/dist/{chunk-DHAXUVMR.js → chunk-QN7FVZQD.js} +4 -4
  101. package/dist/{chunk-X2GWR75Q.js → chunk-TSEBMVYY.js} +3 -3
  102. package/dist/{chunk-CJ6XXM4X.js → chunk-U2AEM3K4.js} +6 -6
  103. package/dist/{chunk-ZH6NYB6Y.js → chunk-U2QXQ7D4.js} +4 -4
  104. package/dist/{chunk-SK2CTB3O.js → chunk-U2SAW6DH.js} +5 -5
  105. package/dist/{chunk-DAHSKQBV.js → chunk-UMOHHWXY.js} +2 -2
  106. package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
  107. package/dist/{chunk-JFD742C3.js → chunk-WCF56ZCD.js} +2 -2
  108. package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
  109. package/dist/{chunk-NK6O4NE4.js → chunk-XILMDEGZ.js} +3 -3
  110. package/dist/{chunk-QAEO52Z4.js → chunk-YGQM6GFQ.js} +2 -2
  111. package/dist/{chunk-WNNA6YYE.js → chunk-Z7T4EFEC.js} +7 -4
  112. package/dist/chunk-Z7T4EFEC.js.map +1 -0
  113. package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
  114. package/dist/{chunk-COKPPU42.js → chunk-ZIHSCBMN.js} +12 -12
  115. package/dist/data-display/AsyncStateContainer.js +3 -3
  116. package/dist/data-display/Avatar.js +2 -2
  117. package/dist/data-display/CardKit.js +7 -7
  118. package/dist/data-display/Carousel.js +2 -2
  119. package/dist/data-display/Chart.js +5 -5
  120. package/dist/data-display/Chip.js +3 -3
  121. package/dist/data-display/DataGrid.js +1 -1
  122. package/dist/data-display/DataViews.js +34 -34
  123. package/dist/data-display/DayRuler.js +4 -4
  124. package/dist/data-display/EmptyState.js +2 -2
  125. package/dist/data-display/FleetMap.js +12 -12
  126. package/dist/data-display/InteractiveTooltip.js +2 -2
  127. package/dist/data-display/Lightbox.js +7 -7
  128. package/dist/data-display/MapPreview.js +7 -7
  129. package/dist/data-display/RegionMap.js +11 -5
  130. package/dist/data-display/SectionOnboarding.js +3 -3
  131. package/dist/layout/SettingCard.js +12 -12
  132. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts +4 -1
  133. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -1
  134. package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts +4 -2
  135. package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts.map +1 -1
  136. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +40 -0
  137. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -1
  138. package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts +36 -0
  139. package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts.map +1 -0
  140. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +4 -1
  141. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -1
  142. package/dist/types/components/data-display/RegionMap/index.d.ts +3 -2
  143. package/dist/types/components/data-display/RegionMap/index.d.ts.map +1 -1
  144. package/dist/user-avatar.js +3 -3
  145. package/package.json +1 -1
  146. package/src/components/data-display/RegionMap/RegionMap.hooks.ts +24 -33
  147. package/src/components/data-display/RegionMap/RegionMap.md +27 -0
  148. package/src/components/data-display/RegionMap/RegionMap.tsx +7 -1
  149. package/src/components/data-display/RegionMap/RegionMap.types.ts +41 -0
  150. package/src/components/data-display/RegionMap/RegionMap.view.ts +105 -0
  151. package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +11 -0
  152. package/src/components/data-display/RegionMap/index.ts +5 -1
  153. package/src/components/data-display/RegionMap/tests.md +10 -2
  154. package/dist/chunk-ACFKPE2T.js +0 -1
  155. package/dist/chunk-AKE6KVQG.js.map +0 -1
  156. package/dist/chunk-GMRQPNG3.js.map +0 -1
  157. package/dist/chunk-WNNA6YYE.js.map +0 -1
  158. /package/dist/{chunk-ACFKPE2T.js.map → _internal/components/data-display/RegionMap/RegionMap.view.js.map} +0 -0
  159. /package/dist/{chunk-K2VDRODL.js.map → chunk-3IDL7NK7.js.map} +0 -0
  160. /package/dist/{chunk-QADTI63U.js.map → chunk-3JZ3KEQQ.js.map} +0 -0
  161. /package/dist/{chunk-EOIRU62W.js.map → chunk-42D7KBDH.js.map} +0 -0
  162. /package/dist/{chunk-LXIPBHNJ.js.map → chunk-42TOCPXB.js.map} +0 -0
  163. /package/dist/{chunk-KANCE4MS.js.map → chunk-4KWDNGMA.js.map} +0 -0
  164. /package/dist/{chunk-7YJYIMWP.js.map → chunk-4QR7LM5F.js.map} +0 -0
  165. /package/dist/{chunk-SCXVTNLE.js.map → chunk-5E2CRRD4.js.map} +0 -0
  166. /package/dist/{chunk-ZDAAHCIS.js.map → chunk-5HADIIWN.js.map} +0 -0
  167. /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
  168. /package/dist/{chunk-7F6D73NL.js.map → chunk-76DX2IMH.js.map} +0 -0
  169. /package/dist/{chunk-FI2CQOGC.js.map → chunk-7NP2JHGM.js.map} +0 -0
  170. /package/dist/{chunk-BMTIBQQC.js.map → chunk-BBBHPK2Q.js.map} +0 -0
  171. /package/dist/{chunk-EUR2ORTN.js.map → chunk-CSJ7WNXU.js.map} +0 -0
  172. /package/dist/{chunk-WWR6APJR.js.map → chunk-DA3D5X5Z.js.map} +0 -0
  173. /package/dist/{chunk-QKOJ4637.js.map → chunk-E6K2UZGR.js.map} +0 -0
  174. /package/dist/{chunk-VIMMEADQ.js.map → chunk-FORAVDJF.js.map} +0 -0
  175. /package/dist/{chunk-Z5WUSI47.js.map → chunk-G3JFESKD.js.map} +0 -0
  176. /package/dist/{chunk-3EIRRLCQ.js.map → chunk-HC6OZ7QK.js.map} +0 -0
  177. /package/dist/{chunk-SKIAWOUC.js.map → chunk-HOPRZEBM.js.map} +0 -0
  178. /package/dist/{chunk-JHWEL4NX.js.map → chunk-HS662RLW.js.map} +0 -0
  179. /package/dist/{chunk-BZBLPXV7.js.map → chunk-IWSTMVCA.js.map} +0 -0
  180. /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.js.map} +0 -0
  181. /package/dist/{chunk-CW5Z67NA.js.map → chunk-JH2XLVWM.js.map} +0 -0
  182. /package/dist/{chunk-3OTGREQG.js.map → chunk-JKZPGCN7.js.map} +0 -0
  183. /package/dist/{chunk-DSBC6O46.js.map → chunk-JN2IANXD.js.map} +0 -0
  184. /package/dist/{chunk-GBB23QLL.js.map → chunk-KJKD6Y6V.js.map} +0 -0
  185. /package/dist/{chunk-KRBPWTXW.js.map → chunk-L3PDY7CJ.js.map} +0 -0
  186. /package/dist/{chunk-HI7JPDD6.js.map → chunk-M3XJVD5G.js.map} +0 -0
  187. /package/dist/{chunk-EEO7M5GU.js.map → chunk-MYTV353T.js.map} +0 -0
  188. /package/dist/{chunk-3HZKUN5J.js.map → chunk-MZAYIG2I.js.map} +0 -0
  189. /package/dist/{chunk-3X2MA47R.js.map → chunk-NKEFH3RS.js.map} +0 -0
  190. /package/dist/{chunk-NI67M453.js.map → chunk-PGANINQD.js.map} +0 -0
  191. /package/dist/{chunk-BV2LOTMC.js.map → chunk-Q3SILZTQ.js.map} +0 -0
  192. /package/dist/{chunk-TIM4PXWN.js.map → chunk-QHIWV55K.js.map} +0 -0
  193. /package/dist/{chunk-DHAXUVMR.js.map → chunk-QN7FVZQD.js.map} +0 -0
  194. /package/dist/{chunk-X2GWR75Q.js.map → chunk-TSEBMVYY.js.map} +0 -0
  195. /package/dist/{chunk-CJ6XXM4X.js.map → chunk-U2AEM3K4.js.map} +0 -0
  196. /package/dist/{chunk-ZH6NYB6Y.js.map → chunk-U2QXQ7D4.js.map} +0 -0
  197. /package/dist/{chunk-SK2CTB3O.js.map → chunk-U2SAW6DH.js.map} +0 -0
  198. /package/dist/{chunk-DAHSKQBV.js.map → chunk-UMOHHWXY.js.map} +0 -0
  199. /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
  200. /package/dist/{chunk-JFD742C3.js.map → chunk-WCF56ZCD.js.map} +0 -0
  201. /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
  202. /package/dist/{chunk-NK6O4NE4.js.map → chunk-XILMDEGZ.js.map} +0 -0
  203. /package/dist/{chunk-QAEO52Z4.js.map → chunk-YGQM6GFQ.js.map} +0 -0
  204. /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
  205. /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-Z5WUSI47.js";
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-COKPPU42.js";
5
- import "../chunk-T2G4LDU5.js";
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-P772HCHI.js";
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-BP3ZKIPE.js";
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-CJ6XXM4X.js";
5
- import "../chunk-EEO7M5GU.js";
6
- import "../chunk-ZH6NYB6Y.js";
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-ACFKPE2T.js";
1
+ import "../chunk-DY2I6LMX.js";
2
2
  import {
3
3
  RegionMap
4
- } from "../chunk-WNNA6YYE.js";
5
- import "../chunk-AKE6KVQG.js";
4
+ } from "../chunk-Z7T4EFEC.js";
5
+ import "../chunk-NGXL4R54.js";
6
6
  import "../chunk-J3AWGTJY.js";
7
- import "../chunk-GMRQPNG3.js";
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-EOIRU62W.js";
4
+ } from "../chunk-42D7KBDH.js";
5
5
  import "../chunk-EWFBDAB7.js";
6
6
  import "../chunk-LL2BWQPM.js";
7
- import "../chunk-LXIPBHNJ.js";
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-K2VDRODL.js";
4
+ } from "../chunk-3IDL7NK7.js";
5
5
  import {
6
6
  SettingGroup
7
- } from "../chunk-GBB23QLL.js";
8
- import "../chunk-ZDAAHCIS.js";
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-CW5Z67NA.js";
13
+ } from "../chunk-JH2XLVWM.js";
14
14
  import {
15
15
  SettingCard
16
- } from "../chunk-SKIAWOUC.js";
16
+ } from "../chunk-HOPRZEBM.js";
17
17
  import "../chunk-SALQ65SM.js";
18
- import "../chunk-X2GWR75Q.js";
19
- import "../chunk-3EIRRLCQ.js";
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-Z5WUSI47.js";
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-NI67M453.js";
32
- import "../chunk-DHAXUVMR.js";
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;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,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,CAyC3C"}
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,EAOL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AAEzE,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,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;AA+DD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,MAAM,EACN,OAAY,EACZ,QAAQ,GACT,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,GAAG,cAAc,CAoBtF"}
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;AAGxD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC3C,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,UAAU,EACV,cAAc,EACd,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4D3C"}
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 type { AreaGeometry, PlanePoint, PlaneRegion } from './RegionMap.helpers';
4
- export type { RegionMapCircle, RegionMapCopy, RegionMapListMode, RegionMapListSort, RegionMapPoint, RegionMapProps, RegionMapRegion, RegionMapRing, } from './RegionMap.types';
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;AACjF,YAAY,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,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"}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-BV2LOTMC.js";
4
+ } from "./chunk-Q3SILZTQ.js";
5
5
  import "./chunk-DQ22UKMZ.js";
6
6
  import "./chunk-UDQSIRAP.js";
7
- import "./chunk-7YJYIMWP.js";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.90.0",
3
+ "version": "6.91.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -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, RegionMapRegion } from './RegionMap.types';
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 null without one. */
78
- function useGeometry(
79
- origin: { latitude: number; longitude: number } | null,
80
- ): ReturnType<typeof geometryCache> | null {
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
- () => (lat === null || lng === null ? null : geometryCache(projectionAt({ latitude: lat, longitude: lng }))),
85
- [lat, lng],
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
- geometryOf === null ? null : viewOf(outermostMetres, () => regions.map((r) => geometryOf(r.rings).bounds));
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}