@12-apps/ui 6.98.1 → 6.100.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 (169) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.content.js +2 -2
  2. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  3. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  4. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
  5. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  6. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  7. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +1 -1
  8. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +17 -17
  9. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +22 -22
  10. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
  11. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +1 -1
  12. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +1 -1
  13. package/dist/_internal/components/data-display/DataViews/base-list-card.js +4 -4
  14. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +2 -2
  15. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +14 -14
  16. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  17. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +2 -2
  18. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +3 -3
  19. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
  20. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  21. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  22. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +2 -2
  23. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +7 -7
  24. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +2 -2
  25. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +3 -3
  26. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +2 -2
  27. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +6 -6
  28. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +5 -5
  29. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +7 -7
  30. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  31. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
  32. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  33. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +4 -4
  34. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  35. package/dist/_internal/components/data-display/RegionMap/RegionMap.fixtures.js +1 -1
  36. package/dist/_internal/components/data-display/RegionMap/RegionMap.helpers.js +3 -1
  37. package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +3 -3
  38. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +6 -5
  39. package/dist/_internal/components/data-display/RegionMap/RegionMap.view.js +2 -2
  40. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +3 -2
  41. package/dist/_internal/components/data-display/RegionMap/RegionMapPin.js +26 -0
  42. package/dist/_internal/components/data-display/index.js +51 -45
  43. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  44. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +4 -4
  45. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js +3 -3
  46. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +10 -10
  47. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +5 -5
  48. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +4 -4
  49. package/dist/_internal/components/feedback/index.js +11 -11
  50. package/dist/_internal/components/index.js +57 -51
  51. package/dist/charts.js +11 -11
  52. package/dist/{chunk-WYNGH2WL.js → chunk-255WTBZ5.js} +8 -8
  53. package/dist/{chunk-CGLMWS7K.js → chunk-37MJZLQU.js} +2 -2
  54. package/dist/{chunk-PNAKRHRT.js → chunk-3I7KE2N6.js} +2 -2
  55. package/dist/{chunk-L4FWEI2P.js → chunk-3V3Z4EML.js} +5 -5
  56. package/dist/{chunk-6RYSSNOO.js → chunk-54DOLCJ3.js} +2 -2
  57. package/dist/{chunk-74IH3ZGD.js → chunk-643YFWNK.js} +2 -2
  58. package/dist/{chunk-FRQGZIYU.js → chunk-6WAP7BJS.js} +2 -2
  59. package/dist/chunk-7XVT4RME.js +293 -0
  60. package/dist/chunk-7XVT4RME.js.map +1 -0
  61. package/dist/{chunk-JO6D7YGN.js → chunk-CWRQGA2T.js} +2 -2
  62. package/dist/{chunk-ZW7Q3IRL.js → chunk-FYJL432J.js} +4 -4
  63. package/dist/{chunk-G6TKWNF2.js → chunk-GZITNT7O.js} +11 -11
  64. package/dist/{chunk-RFMQBIE6.js → chunk-HBHBRRSW.js} +4 -4
  65. package/dist/{chunk-U4Z6GZDW.js → chunk-HN36UVOE.js} +4 -4
  66. package/dist/{chunk-WK577LQL.js → chunk-J2IQ6FJ5.js} +4 -4
  67. package/dist/{chunk-HCTHY66U.js → chunk-KAGXV3ID.js} +4 -4
  68. package/dist/{chunk-FWAY2SAI.js → chunk-KAZWBDIH.js} +2 -2
  69. package/dist/{chunk-DKPELKGL.js → chunk-KV7LTOWC.js} +5 -5
  70. package/dist/{chunk-UC7DLGMP.js → chunk-KVP5A3YK.js} +2 -2
  71. package/dist/{chunk-3CXRHRGE.js → chunk-LCKUEYU2.js} +7 -3
  72. package/dist/chunk-LCKUEYU2.js.map +1 -0
  73. package/dist/{chunk-EGBQR5GH.js → chunk-LOLYBFYY.js} +5 -5
  74. package/dist/{chunk-SOXO2VN3.js → chunk-MEMVZW64.js} +3 -3
  75. package/dist/{chunk-COOSJKZL.js → chunk-MNJZPJ5S.js} +2 -1
  76. package/dist/chunk-MNJZPJ5S.js.map +1 -0
  77. package/dist/{chunk-G2NVBCF7.js → chunk-NWUMGE6T.js} +3 -3
  78. package/dist/{chunk-RKAX37F4.js → chunk-Q5SCBQLY.js} +7 -7
  79. package/dist/{chunk-3R5MCSYO.js → chunk-QLKUWDMQ.js} +4 -4
  80. package/dist/{chunk-MPVH2GM5.js → chunk-RAQD5QCM.js} +4 -4
  81. package/dist/{chunk-KXDLLS62.js → chunk-REHGWN5M.js} +4 -4
  82. package/dist/{chunk-3N2HWNKT.js → chunk-UIJLDAV7.js} +2 -2
  83. package/dist/{chunk-GDWU7WF4.js → chunk-UN5WU2OX.js} +4 -4
  84. package/dist/{chunk-A27J4CIZ.js → chunk-UTIYB6VE.js} +11 -11
  85. package/dist/{chunk-5V7IZBRY.js → chunk-VRSW7PIO.js} +5 -5
  86. package/dist/{chunk-AESKKFA5.js → chunk-WDEVKND3.js} +3 -3
  87. package/dist/chunk-WGKLBVDZ.js +1 -0
  88. package/dist/chunk-WGKLBVDZ.js.map +1 -0
  89. package/dist/{chunk-67GTAPK6.js → chunk-XFOKLWJZ.js} +2 -2
  90. package/dist/{chunk-OV5NM4FY.js → chunk-XQAFSC66.js} +2 -2
  91. package/dist/{chunk-6FGP7RMV.js → chunk-XR474YYX.js} +2 -2
  92. package/dist/{chunk-E4MJA52O.js → chunk-YHFLI2FD.js} +16 -18
  93. package/dist/chunk-YHFLI2FD.js.map +1 -0
  94. package/dist/{chunk-4N4M237A.js → chunk-YQ5GQ32T.js} +2 -2
  95. package/dist/{chunk-YLZXIR6B.js → chunk-Z5V5E3JW.js} +4 -4
  96. package/dist/data-display/Alert.js +3 -3
  97. package/dist/data-display/CardKit.js +5 -5
  98. package/dist/data-display/Carousel.js +2 -2
  99. package/dist/data-display/Chart.js +11 -11
  100. package/dist/data-display/DataGrid.js +1 -1
  101. package/dist/data-display/DataViews.js +29 -29
  102. package/dist/data-display/DayRuler.js +7 -7
  103. package/dist/data-display/FleetMap.js +7 -7
  104. package/dist/data-display/HoverCard.js +2 -2
  105. package/dist/data-display/Lightbox.js +3 -3
  106. package/dist/data-display/MapPreview.js +4 -4
  107. package/dist/data-display/Progress.js +2 -2
  108. package/dist/data-display/RegionMap.js +14 -8
  109. package/dist/feedback/NotificationStatusNotice.js +4 -4
  110. package/dist/feedback/SequenceResolver.js +10 -10
  111. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts +1 -1
  112. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -1
  113. package/dist/types/components/data-display/RegionMap/RegionMap.helpers.d.ts +9 -0
  114. package/dist/types/components/data-display/RegionMap/RegionMap.helpers.d.ts.map +1 -1
  115. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +45 -1
  116. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -1
  117. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +4 -1
  118. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -1
  119. package/dist/types/components/data-display/RegionMap/RegionMapPin.d.ts +102 -0
  120. package/dist/types/components/data-display/RegionMap/RegionMapPin.d.ts.map +1 -0
  121. package/dist/types/components/data-display/RegionMap/index.d.ts +2 -1
  122. package/dist/types/components/data-display/RegionMap/index.d.ts.map +1 -1
  123. package/package.json +1 -1
  124. package/src/components/data-display/RegionMap/RegionMap.helpers.ts +1 -1
  125. package/src/components/data-display/RegionMap/RegionMap.md +19 -2
  126. package/src/components/data-display/RegionMap/RegionMap.tsx +4 -0
  127. package/src/components/data-display/RegionMap/RegionMap.types.ts +49 -1
  128. package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +11 -13
  129. package/src/components/data-display/RegionMap/RegionMapPin.tsx +388 -0
  130. package/src/components/data-display/RegionMap/index.ts +5 -0
  131. package/dist/chunk-3CXRHRGE.js.map +0 -1
  132. package/dist/chunk-COOSJKZL.js.map +0 -1
  133. package/dist/chunk-DY2I6LMX.js +0 -1
  134. package/dist/chunk-E4MJA52O.js.map +0 -1
  135. /package/dist/{chunk-DY2I6LMX.js.map → _internal/components/data-display/RegionMap/RegionMapPin.js.map} +0 -0
  136. /package/dist/{chunk-WYNGH2WL.js.map → chunk-255WTBZ5.js.map} +0 -0
  137. /package/dist/{chunk-CGLMWS7K.js.map → chunk-37MJZLQU.js.map} +0 -0
  138. /package/dist/{chunk-PNAKRHRT.js.map → chunk-3I7KE2N6.js.map} +0 -0
  139. /package/dist/{chunk-L4FWEI2P.js.map → chunk-3V3Z4EML.js.map} +0 -0
  140. /package/dist/{chunk-6RYSSNOO.js.map → chunk-54DOLCJ3.js.map} +0 -0
  141. /package/dist/{chunk-74IH3ZGD.js.map → chunk-643YFWNK.js.map} +0 -0
  142. /package/dist/{chunk-FRQGZIYU.js.map → chunk-6WAP7BJS.js.map} +0 -0
  143. /package/dist/{chunk-JO6D7YGN.js.map → chunk-CWRQGA2T.js.map} +0 -0
  144. /package/dist/{chunk-ZW7Q3IRL.js.map → chunk-FYJL432J.js.map} +0 -0
  145. /package/dist/{chunk-G6TKWNF2.js.map → chunk-GZITNT7O.js.map} +0 -0
  146. /package/dist/{chunk-RFMQBIE6.js.map → chunk-HBHBRRSW.js.map} +0 -0
  147. /package/dist/{chunk-U4Z6GZDW.js.map → chunk-HN36UVOE.js.map} +0 -0
  148. /package/dist/{chunk-WK577LQL.js.map → chunk-J2IQ6FJ5.js.map} +0 -0
  149. /package/dist/{chunk-HCTHY66U.js.map → chunk-KAGXV3ID.js.map} +0 -0
  150. /package/dist/{chunk-FWAY2SAI.js.map → chunk-KAZWBDIH.js.map} +0 -0
  151. /package/dist/{chunk-DKPELKGL.js.map → chunk-KV7LTOWC.js.map} +0 -0
  152. /package/dist/{chunk-UC7DLGMP.js.map → chunk-KVP5A3YK.js.map} +0 -0
  153. /package/dist/{chunk-EGBQR5GH.js.map → chunk-LOLYBFYY.js.map} +0 -0
  154. /package/dist/{chunk-SOXO2VN3.js.map → chunk-MEMVZW64.js.map} +0 -0
  155. /package/dist/{chunk-G2NVBCF7.js.map → chunk-NWUMGE6T.js.map} +0 -0
  156. /package/dist/{chunk-RKAX37F4.js.map → chunk-Q5SCBQLY.js.map} +0 -0
  157. /package/dist/{chunk-3R5MCSYO.js.map → chunk-QLKUWDMQ.js.map} +0 -0
  158. /package/dist/{chunk-MPVH2GM5.js.map → chunk-RAQD5QCM.js.map} +0 -0
  159. /package/dist/{chunk-KXDLLS62.js.map → chunk-REHGWN5M.js.map} +0 -0
  160. /package/dist/{chunk-3N2HWNKT.js.map → chunk-UIJLDAV7.js.map} +0 -0
  161. /package/dist/{chunk-GDWU7WF4.js.map → chunk-UN5WU2OX.js.map} +0 -0
  162. /package/dist/{chunk-A27J4CIZ.js.map → chunk-UTIYB6VE.js.map} +0 -0
  163. /package/dist/{chunk-5V7IZBRY.js.map → chunk-VRSW7PIO.js.map} +0 -0
  164. /package/dist/{chunk-AESKKFA5.js.map → chunk-WDEVKND3.js.map} +0 -0
  165. /package/dist/{chunk-67GTAPK6.js.map → chunk-XFOKLWJZ.js.map} +0 -0
  166. /package/dist/{chunk-OV5NM4FY.js.map → chunk-XQAFSC66.js.map} +0 -0
  167. /package/dist/{chunk-6FGP7RMV.js.map → chunk-XR474YYX.js.map} +0 -0
  168. /package/dist/{chunk-4N4M237A.js.map → chunk-YQ5GQ32T.js.map} +0 -0
  169. /package/dist/{chunk-YLZXIR6B.js.map → chunk-Z5V5E3JW.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-A27J4CIZ.js";
3
+ } from "./chunk-UTIYB6VE.js";
4
4
  import {
5
5
  useDataViewsState
6
- } from "./chunk-EGBQR5GH.js";
6
+ } from "./chunk-LOLYBFYY.js";
7
7
 
8
8
  // src/components/data-display/DataViews/DataViewsGrid.tsx
9
9
  import { useEffect, useRef } from "react";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-SOXO2VN3.js.map
30
+ //# sourceMappingURL=chunk-MEMVZW64.js.map
@@ -177,6 +177,7 @@ function decodePolyline(encoded, precision = 1e5) {
177
177
  }
178
178
 
179
179
  export {
180
+ METRES_PER_DEGREE,
180
181
  projectionAt,
181
182
  regionPath,
182
183
  extent,
@@ -194,4 +195,4 @@ export {
194
195
  drawOrder,
195
196
  decodePolyline
196
197
  };
197
- //# sourceMappingURL=chunk-COOSJKZL.js.map
198
+ //# sourceMappingURL=chunk-MNJZPJ5S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/RegionMap/RegionMap.helpers.ts"],"sourcesContent":["import type { RegionMapPoint, RegionMapRegion, RegionMapRing } from './RegionMap.types';\n\n/**\n * The geometry behind `RegionMap`, kept pure so it is tested without a DOM.\n *\n * Coordinates are projected to METRES on a plane around the centre\n * (equirectangular): within the tens of kilometres a map like this spans, its\n * error is far below any outline's own. `y` grows SOUTH, as SVG's does.\n */\n\n/** Metres per degree of latitude on the mean sphere. */\nexport const METRES_PER_DEGREE = 111_195;\n\n/** A projected point, metres east (`x`) and south (`y`) of the centre. */\nexport interface PlanePoint {\n x: number;\n y: number;\n}\n\n/** An SVG viewBox in projected metres. */\nexport interface PlaneBox {\n /** West edge, metres east of the centre. */\n minX: number;\n /** North edge, metres south of the centre. */\n minY: number;\n /** East-west extent, metres. */\n spanX: number;\n /** North-south extent, metres. */\n spanY: number;\n}\n\nexport interface Projection {\n project: (point: RegionMapPoint) => PlanePoint;\n}\n\n/** The projection around a centre. */\nexport function projectionAt(center: { latitude: number; longitude: number }): Projection {\n const kx = METRES_PER_DEGREE * Math.cos((center.latitude * Math.PI) / 180);\n return {\n project: ([latitude, longitude]) => ({\n x: (longitude - center.longitude) * kx,\n y: -(latitude - center.latitude) * METRES_PER_DEGREE,\n }),\n };\n}\n\n/** A ring as an SVG path segment, closed. */\nfunction ringPath(ring: readonly PlanePoint[]): string {\n if (ring.length === 0) return '';\n const [first, ...rest] = ring;\n return `M${first!.x.toFixed(1)} ${first!.y.toFixed(1)}${rest.map((p) => `L${p.x.toFixed(1)} ${p.y.toFixed(1)}`).join('')}Z`;\n}\n\n/** Every ring of an area as one path, to be filled with `fill-rule=\"evenodd\"`. */\nexport function regionPath(rings: readonly (readonly PlanePoint[])[]): string {\n return rings.map(ringPath).join('');\n}\n\n/** The smallest and largest of some numbers, in one pass (no spread). */\nexport function extent(values: Iterable<number>): { min: number; max: number } | null {\n let min = Infinity;\n let max = -Infinity;\n for (const value of values) {\n if (value < min) min = value;\n if (value > max) max = value;\n }\n return min === Infinity ? null : { min, max };\n}\n\n/** The box around projected rings. */\nexport function planeBounds(rings: readonly (readonly PlanePoint[])[]): PlaneBox | null {\n const points = rings.flat();\n const xs = extent(points.map((p) => p.x));\n const ys = extent(points.map((p) => p.y));\n if (xs === null || ys === null) return null;\n return { minX: xs.min, minY: ys.min, spanX: xs.max - xs.min, spanY: ys.max - ys.min };\n}\n\n/**\n * The square the map shows: the largest circle with a margin, else every area,\n * else nothing. Square so the drawing keeps its proportions at every width.\n */\nexport function viewBoxFor(\n largestRadius: number | null,\n areaBounds: PlaneBox | null,\n margin = 0.12,\n): PlaneBox | null {\n if (largestRadius !== null && largestRadius > 0) {\n const half = largestRadius * (1 + margin);\n return { minX: -half, minY: -half, spanX: half * 2, spanY: half * 2 };\n }\n if (areaBounds === null) return null;\n const side = Math.max(areaBounds.spanX, areaBounds.spanY) * (1 + margin) || 1;\n const cx = areaBounds.minX + areaBounds.spanX / 2;\n const cy = areaBounds.minY + areaBounds.spanY / 2;\n return { minX: cx - side / 2, minY: cy - side / 2, spanX: side, spanY: side };\n}\n\n/** Do two boxes overlap? Used to skip areas wholly outside the view. */\nexport function boxesOverlap(a: PlaneBox, b: PlaneBox): boolean {\n return (\n a.minX <= b.minX + b.spanX &&\n b.minX <= a.minX + a.spanX &&\n a.minY <= b.minY + b.spanY &&\n b.minY <= a.minY + a.spanY\n );\n}\n\n/** How many of one ring's edges a ray from the point, eastward, crosses. */\nfunction ringCrossings(ring: readonly PlanePoint[], point: PlanePoint): number {\n let crossings = 0;\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n const a = ring[i]!;\n const b = ring[j]!;\n if (a.y > point.y !== b.y > point.y && point.x < ((b.x - a.x) * (point.y - a.y)) / (b.y - a.y) + a.x) {\n crossings += 1;\n }\n }\n return crossings;\n}\n\n/** Is the point inside the rings, by the even-odd rule? */\nexport function ringsContain(rings: readonly (readonly PlanePoint[])[], point: PlanePoint): boolean {\n return rings.reduce((sum, ring) => sum + ringCrossings(ring, point), 0) % 2 === 1;\n}\n\n/** The point's distance to one ring's nearest edge. */\nfunction ringDistance(ring: readonly PlanePoint[], point: PlanePoint): number {\n let best = Infinity;\n for (let i = 1; i <= ring.length; i++) {\n const a = ring[i - 1]!;\n const b = ring[i % ring.length]!;\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const lengthSquared = dx * dx + dy * dy;\n const t =\n lengthSquared === 0\n ? 0\n : Math.max(0, Math.min(1, ((point.x - a.x) * dx + (point.y - a.y) * dy) / lengthSquared));\n best = Math.min(best, Math.hypot(a.x + t * dx - point.x, a.y + t * dy - point.y));\n }\n return best;\n}\n\n/** The point's distance to the rings: 0 inside, else to the nearest edge. */\nexport function ringsDistance(rings: readonly (readonly PlanePoint[])[], point: PlanePoint): number {\n if (ringsContain(rings, point)) return 0;\n let best = Infinity;\n for (const ring of rings) best = Math.min(best, ringDistance(ring, point));\n return best;\n}\n\n/** An area projected once: what drawing it and hit-testing it read. */\nexport interface AreaGeometry {\n rings: readonly (readonly PlanePoint[])[];\n /** Null for an area with no points. */\n bounds: PlaneBox | null;\n /** Square metres of the largest ring — orders hits and draw order. */\n area: number;\n /** The SVG path, every ring, for `fill-rule=\"evenodd\"`. */\n path: string;\n}\n\n/** A projected area, as the hit test reads it. */\nexport interface PlaneRegion {\n id: string;\n geometry: AreaGeometry;\n}\n\n/** Is the point within `margin` of the box? */\nfunction nearBox(box: PlaneBox, point: PlanePoint, margin: number): boolean {\n return (\n point.x >= box.minX - margin &&\n point.x <= box.minX + box.spanX + margin &&\n point.y >= box.minY - margin &&\n point.y <= box.minY + box.spanY + margin\n );\n}\n\n/**\n * Which area a tap at this point means: the SMALLEST area within `tolerance`\n * of it, the ones holding it included (distance 0).\n *\n * Smallest, because a fingertip is wider than a sliver: a tap that lands on a\n * big area a few pixels from a 10 m strip almost always meant the strip, and\n * the big one stays easy to hit everywhere else. An area in another's hole is\n * smaller than the one around it, so it wins too. Nothing within the\n * tolerance — empty map — is nothing: a tap there is not a guess. Areas whose\n * box is not near the point are skipped before any ray is cast.\n */\nexport function hitRegion(\n regions: readonly PlaneRegion[],\n point: PlanePoint,\n tolerance: number,\n): string | null {\n let best: { id: string; area: number; distance: number } | null = null;\n for (const { id, geometry } of regions) {\n const distance = reach(geometry, point, tolerance);\n if (distance !== null && beats(geometry.area, distance, best)) {\n best = { id, area: geometry.area, distance };\n }\n }\n return best?.id ?? null;\n}\n\n/** The point's distance to the area, or null when it is beyond the tolerance. */\nfunction reach(geometry: AreaGeometry, point: PlanePoint, tolerance: number): number | null {\n if (geometry.bounds === null || !nearBox(geometry.bounds, point, tolerance)) return null;\n const distance = ringsDistance(geometry.rings, point);\n return distance <= tolerance ? distance : null;\n}\n\n/** Smaller wins; between two the same size, the nearer. */\nfunction beats(area: number, distance: number, best: { area: number; distance: number } | null): boolean {\n if (best === null || area < best.area) return true;\n return area === best.area && distance < best.distance;\n}\n\n/** Signed area and centroid of one ring (shoelace). */\nfunction ringCentroid(ring: readonly PlanePoint[]): { area: number; x: number; y: number } {\n let area = 0;\n let cx = 0;\n let cy = 0;\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n const a = ring[j]!;\n const b = ring[i]!;\n const cross = a.x * b.y - b.x * a.y;\n area += cross;\n cx += (a.x + b.x) * cross;\n cy += (a.y + b.y) * cross;\n }\n area /= 2;\n if (area === 0) return { area: 0, x: ring[0]?.x ?? 0, y: ring[0]?.y ?? 0 };\n return { area, x: cx / (6 * area), y: cy / (6 * area) };\n}\n\n/**\n * The area's size in square metres, read from its LARGEST ring. Rough on\n * purpose — holes and second parts are ignored — because it only orders\n * things: which of two areas holding a tap is the smaller, and which is drawn\n * first so a small one is never painted over by its neighbour.\n */\nexport function planeArea(rings: readonly (readonly PlanePoint[])[]): number {\n let largest = 0;\n for (const ring of rings) largest = Math.max(largest, Math.abs(ringCentroid(ring).area));\n return largest;\n}\n\n/**\n * Where an area's label goes: the centroid of its largest ring, pulled back\n * inside the view, as fractions of the view (0..1) — the label is HTML laid\n * over the drawing, so its type stays the theme's size at every width.\n */\nexport function labelPosition(\n rings: readonly (readonly PlanePoint[])[],\n view: PlaneBox,\n inset = 0.04,\n): { fractionX: number; fractionY: number } {\n const largest = rings\n .map(ringCentroid)\n .reduce((a, b) => (Math.abs(b.area) > Math.abs(a.area) ? b : a), { area: 0, x: 0, y: 0 });\n const clamp = (value: number): number => Math.min(1 - inset, Math.max(inset, value));\n return {\n fractionX: clamp((largest.x - view.minX) / view.spanX),\n fractionY: clamp((largest.y - view.minY) / view.spanY),\n };\n}\n\n/** Every ring of an area, projected. */\nexport function projectRings(rings: readonly RegionMapRing[], projection: Projection): PlanePoint[][] {\n return rings.map((ring) => ring.map(projection.project));\n}\n\n/** One area's geometry, projected and pathed. */\nexport function areaGeometry(rings: readonly RegionMapRing[], projection: Projection): AreaGeometry {\n const plane = projectRings(rings, projection);\n return { rings: plane, bounds: planeBounds(plane), area: planeArea(plane), path: regionPath(plane) };\n}\n\n/**\n * A cache of geometry per `rings` IDENTITY, for one projection. A host that\n * re-creates its region objects on every toggle (`{ ...area, excluded }`)\n * keeps the same `rings` arrays, so a tap re-projects nothing.\n */\nexport function geometryCache(projection: Projection): (rings: readonly RegionMapRing[]) => AreaGeometry {\n const cache = new WeakMap<readonly RegionMapRing[], AreaGeometry>();\n return (rings) => {\n let geometry = cache.get(rings);\n if (geometry === undefined) {\n geometry = areaGeometry(rings, projection);\n cache.set(rings, geometry);\n }\n return geometry;\n };\n}\n\n/** An area as the drawing reads it. */\nexport type DrawnRegion = RegionMapRegion & { geometry: AreaGeometry };\n\n/** The areas worth drawing — any part in the view — largest first. */\nexport function drawOrder(\n regions: readonly RegionMapRegion[],\n geometryOf: (rings: readonly RegionMapRing[]) => AreaGeometry,\n view: PlaneBox,\n): DrawnRegion[] {\n return regions\n .map((region) => ({ ...region, geometry: geometryOf(region.rings) }))\n .filter(({ geometry }) => geometry.bounds !== null && boxesOverlap(geometry.bounds, view))\n .sort((a, b) => b.geometry.area - a.geometry.area);\n}\n\n/**\n * A Google encoded polyline into `[latitude, longitude]` points, at 1e-5 — the\n * compact form an outline usually travels in. Product-free, so it lives here.\n */\nexport function decodePolyline(encoded: string, precision = 1e5): RegionMapPoint[] {\n const points: RegionMapPoint[] = [];\n let index = 0;\n let lat = 0;\n let lng = 0;\n const next = (): number => {\n let shift = 0;\n let result = 0;\n let byte: number;\n do {\n byte = encoded.charCodeAt(index++) - 63;\n result |= (byte & 0x1f) << shift;\n shift += 5;\n } while (byte >= 0x20);\n return result & 1 ? ~(result >> 1) : result >> 1;\n };\n while (index < encoded.length) {\n lat += next();\n lng += next();\n points.push([lat / precision, lng / precision]);\n }\n return points;\n}\n"],"mappings":";AAWO,IAAM,oBAAoB;AAyB1B,SAAS,aAAa,QAA6D;AACxF,QAAM,KAAK,oBAAoB,KAAK,IAAK,OAAO,WAAW,KAAK,KAAM,GAAG;AACzE,SAAO;AAAA,IACL,SAAS,CAAC,CAAC,UAAU,SAAS,OAAO;AAAA,MACnC,IAAI,YAAY,OAAO,aAAa;AAAA,MACpC,GAAG,EAAE,WAAW,OAAO,YAAY;AAAA,IACrC;AAAA,EACF;AACF;AAGA,SAAS,SAAS,MAAqC;AACrD,MAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAM,CAAC,OAAO,GAAG,IAAI,IAAI;AACzB,SAAO,IAAI,MAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AAC1H;AAGO,SAAS,WAAW,OAAmD;AAC5E,SAAO,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE;AACpC;AAGO,SAAS,OAAO,QAA+D;AACpF,MAAI,MAAM;AACV,MAAI,MAAM;AACV,aAAW,SAAS,QAAQ;AAC1B,QAAI,QAAQ,IAAK,OAAM;AACvB,QAAI,QAAQ,IAAK,OAAM;AAAA,EACzB;AACA,SAAO,QAAQ,WAAW,OAAO,EAAE,KAAK,IAAI;AAC9C;AAGO,SAAS,YAAY,OAA4D;AACtF,QAAM,SAAS,MAAM,KAAK;AAC1B,QAAM,KAAK,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,QAAM,KAAK,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,MAAI,OAAO,QAAQ,OAAO,KAAM,QAAO;AACvC,SAAO,EAAE,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,OAAO,GAAG,MAAM,GAAG,IAAI;AACtF;AAMO,SAAS,WACd,eACA,YACA,SAAS,MACQ;AACjB,MAAI,kBAAkB,QAAQ,gBAAgB,GAAG;AAC/C,UAAM,OAAO,iBAAiB,IAAI;AAClC,WAAO,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,OAAO,OAAO,GAAG,OAAO,OAAO,EAAE;AAAA,EACtE;AACA,MAAI,eAAe,KAAM,QAAO;AAChC,QAAM,OAAO,KAAK,IAAI,WAAW,OAAO,WAAW,KAAK,KAAK,IAAI,WAAW;AAC5E,QAAM,KAAK,WAAW,OAAO,WAAW,QAAQ;AAChD,QAAM,KAAK,WAAW,OAAO,WAAW,QAAQ;AAChD,SAAO,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,KAAK,OAAO,GAAG,OAAO,MAAM,OAAO,KAAK;AAC9E;AAGO,SAAS,aAAa,GAAa,GAAsB;AAC9D,SACE,EAAE,QAAQ,EAAE,OAAO,EAAE,SACrB,EAAE,QAAQ,EAAE,OAAO,EAAE,SACrB,EAAE,QAAQ,EAAE,OAAO,EAAE,SACrB,EAAE,QAAQ,EAAE,OAAO,EAAE;AAEzB;AAGA,SAAS,cAAc,MAA6B,OAA2B;AAC7E,MAAI,YAAY;AAChB,WAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK,QAAQ,IAAI,KAAK;AAC7D,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,MAAM,KAAK,MAAM,KAAM,EAAE,IAAI,EAAE,MAAM,MAAM,IAAI,EAAE,MAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG;AACpG,mBAAa;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,aAAa,OAA2C,OAA4B;AAClG,SAAO,MAAM,OAAO,CAAC,KAAK,SAAS,MAAM,cAAc,MAAM,KAAK,GAAG,CAAC,IAAI,MAAM;AAClF;AAGA,SAAS,aAAa,MAA6B,OAA2B;AAC5E,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,KAAK;AACrC,UAAM,IAAI,KAAK,IAAI,CAAC;AACpB,UAAM,IAAI,KAAK,IAAI,KAAK,MAAM;AAC9B,UAAM,KAAK,EAAE,IAAI,EAAE;AACnB,UAAM,KAAK,EAAE,IAAI,EAAE;AACnB,UAAM,gBAAgB,KAAK,KAAK,KAAK;AACrC,UAAM,IACJ,kBAAkB,IACd,IACA,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM,MAAM,IAAI,EAAE,KAAK,MAAM,aAAa,CAAC;AAC5F,WAAO,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,IAAI,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;AAAA,EAClF;AACA,SAAO;AACT;AAGO,SAAS,cAAc,OAA2C,OAA2B;AAClG,MAAI,aAAa,OAAO,KAAK,EAAG,QAAO;AACvC,MAAI,OAAO;AACX,aAAW,QAAQ,MAAO,QAAO,KAAK,IAAI,MAAM,aAAa,MAAM,KAAK,CAAC;AACzE,SAAO;AACT;AAoBA,SAAS,QAAQ,KAAe,OAAmB,QAAyB;AAC1E,SACE,MAAM,KAAK,IAAI,OAAO,UACtB,MAAM,KAAK,IAAI,OAAO,IAAI,QAAQ,UAClC,MAAM,KAAK,IAAI,OAAO,UACtB,MAAM,KAAK,IAAI,OAAO,IAAI,QAAQ;AAEtC;AAaO,SAAS,UACd,SACA,OACA,WACe;AACf,MAAI,OAA8D;AAClE,aAAW,EAAE,IAAI,SAAS,KAAK,SAAS;AACtC,UAAM,WAAW,MAAM,UAAU,OAAO,SAAS;AACjD,QAAI,aAAa,QAAQ,MAAM,SAAS,MAAM,UAAU,IAAI,GAAG;AAC7D,aAAO,EAAE,IAAI,MAAM,SAAS,MAAM,SAAS;AAAA,IAC7C;AAAA,EACF;AACA,SAAO,MAAM,MAAM;AACrB;AAGA,SAAS,MAAM,UAAwB,OAAmB,WAAkC;AAC1F,MAAI,SAAS,WAAW,QAAQ,CAAC,QAAQ,SAAS,QAAQ,OAAO,SAAS,EAAG,QAAO;AACpF,QAAM,WAAW,cAAc,SAAS,OAAO,KAAK;AACpD,SAAO,YAAY,YAAY,WAAW;AAC5C;AAGA,SAAS,MAAM,MAAc,UAAkB,MAA0D;AACvG,MAAI,SAAS,QAAQ,OAAO,KAAK,KAAM,QAAO;AAC9C,SAAO,SAAS,KAAK,QAAQ,WAAW,KAAK;AAC/C;AAGA,SAAS,aAAa,MAAqE;AACzF,MAAI,OAAO;AACX,MAAI,KAAK;AACT,MAAI,KAAK;AACT,WAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK,QAAQ,IAAI,KAAK;AAC7D,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,YAAQ;AACR,WAAO,EAAE,IAAI,EAAE,KAAK;AACpB,WAAO,EAAE,IAAI,EAAE,KAAK;AAAA,EACtB;AACA,UAAQ;AACR,MAAI,SAAS,EAAG,QAAO,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE;AACzE,SAAO,EAAE,MAAM,GAAG,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI,MAAM;AACxD;AAQO,SAAS,UAAU,OAAmD;AAC3E,MAAI,UAAU;AACd,aAAW,QAAQ,MAAO,WAAU,KAAK,IAAI,SAAS,KAAK,IAAI,aAAa,IAAI,EAAE,IAAI,CAAC;AACvF,SAAO;AACT;AAOO,SAAS,cACd,OACA,MACA,QAAQ,MACkC;AAC1C,QAAM,UAAU,MACb,IAAI,YAAY,EAChB,OAAO,CAAC,GAAG,MAAO,KAAK,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,IAAI,GAAI,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1F,QAAM,QAAQ,CAAC,UAA0B,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC;AACnF,SAAO;AAAA,IACL,WAAW,OAAO,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK;AAAA,IACrD,WAAW,OAAO,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK;AAAA,EACvD;AACF;AAGO,SAAS,aAAa,OAAiC,YAAwC;AACpG,SAAO,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,WAAW,OAAO,CAAC;AACzD;AAGO,SAAS,aAAa,OAAiC,YAAsC;AAClG,QAAM,QAAQ,aAAa,OAAO,UAAU;AAC5C,SAAO,EAAE,OAAO,OAAO,QAAQ,YAAY,KAAK,GAAG,MAAM,UAAU,KAAK,GAAG,MAAM,WAAW,KAAK,EAAE;AACrG;AAOO,SAAS,cAAc,YAA2E;AACvG,QAAM,QAAQ,oBAAI,QAAgD;AAClE,SAAO,CAAC,UAAU;AAChB,QAAI,WAAW,MAAM,IAAI,KAAK;AAC9B,QAAI,aAAa,QAAW;AAC1B,iBAAW,aAAa,OAAO,UAAU;AACzC,YAAM,IAAI,OAAO,QAAQ;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,UACd,SACA,YACA,MACe;AACf,SAAO,QACJ,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,UAAU,WAAW,OAAO,KAAK,EAAE,EAAE,EACnE,OAAO,CAAC,EAAE,SAAS,MAAM,SAAS,WAAW,QAAQ,aAAa,SAAS,QAAQ,IAAI,CAAC,EACxF,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,OAAO,EAAE,SAAS,IAAI;AACrD;AAMO,SAAS,eAAe,SAAiB,YAAY,KAAuB;AACjF,QAAM,SAA2B,CAAC;AAClC,MAAI,QAAQ;AACZ,MAAI,MAAM;AACV,MAAI,MAAM;AACV,QAAM,OAAO,MAAc;AACzB,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI;AACJ,OAAG;AACD,aAAO,QAAQ,WAAW,OAAO,IAAI;AACrC,iBAAW,OAAO,OAAS;AAC3B,eAAS;AAAA,IACX,SAAS,QAAQ;AACjB,WAAO,SAAS,IAAI,EAAE,UAAU,KAAK,UAAU;AAAA,EACjD;AACA,SAAO,QAAQ,QAAQ,QAAQ;AAC7B,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,WAAO,KAAK,CAAC,MAAM,WAAW,MAAM,SAAS,CAAC;AAAA,EAChD;AACA,SAAO;AACT;","names":[]}
@@ -2,14 +2,14 @@ import {
2
2
  centreOf,
3
3
  reachBox,
4
4
  viewWithin
5
- } from "./chunk-FWAY2SAI.js";
5
+ } from "./chunk-KAZWBDIH.js";
6
6
  import {
7
7
  drawOrder,
8
8
  extent,
9
9
  geometryCache,
10
10
  hitRegion,
11
11
  projectionAt
12
- } from "./chunk-COOSJKZL.js";
12
+ } from "./chunk-MNJZPJ5S.js";
13
13
 
14
14
  // src/components/data-display/RegionMap/RegionMap.hooks.ts
15
15
  import React from "react";
@@ -72,4 +72,4 @@ function useRegionMap({
72
72
  export {
73
73
  useRegionMap
74
74
  };
75
- //# sourceMappingURL=chunk-G2NVBCF7.js.map
75
+ //# sourceMappingURL=chunk-NWUMGE6T.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AlertContent
3
- } from "./chunk-GDWU7WF4.js";
3
+ } from "./chunk-UN5WU2OX.js";
4
4
  import {
5
5
  alertEmphasisStyles,
6
6
  alertLayoutStyles,
@@ -9,17 +9,17 @@ import {
9
9
  getColorFromTheme,
10
10
  getVariantIcon
11
11
  } from "./chunk-YBF2WUGQ.js";
12
+ import {
13
+ resolveAlertProps,
14
+ resolveAnnouncement,
15
+ testIdFor
16
+ } from "./chunk-L7VH6IMR.js";
12
17
  import {
13
18
  resolveIconPlacement
14
19
  } from "./chunk-QXUXO22M.js";
15
20
  import {
16
21
  pointerInkStyles
17
22
  } from "./chunk-LNZJJFZQ.js";
18
- import {
19
- resolveAlertProps,
20
- resolveAnnouncement,
21
- testIdFor
22
- } from "./chunk-L7VH6IMR.js";
23
23
  import {
24
24
  ACTIVE,
25
25
  ALERT_EASING,
@@ -284,4 +284,4 @@ export {
284
284
  Alert,
285
285
  ALERT_ONLY_PROPS
286
286
  };
287
- //# sourceMappingURL=chunk-RKAX37F4.js.map
287
+ //# sourceMappingURL=chunk-Q5SCBQLY.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  ResolverFrame
3
- } from "./chunk-74IH3ZGD.js";
3
+ } from "./chunk-643YFWNK.js";
4
4
  import {
5
5
  SequenceOverviewBody
6
- } from "./chunk-OV5NM4FY.js";
6
+ } from "./chunk-XQAFSC66.js";
7
7
  import {
8
8
  SequenceDoneBody,
9
9
  SequenceIntroBody,
10
10
  SequenceStepBody
11
- } from "./chunk-PNAKRHRT.js";
11
+ } from "./chunk-3I7KE2N6.js";
12
12
  import {
13
13
  SEQUENCE_METRICS
14
14
  } from "./chunk-ALDS5ISD.js";
@@ -243,4 +243,4 @@ function SequenceResolver(props) {
243
243
  export {
244
244
  SequenceResolver
245
245
  };
246
- //# sourceMappingURL=chunk-3R5MCSYO.js.map
246
+ //# sourceMappingURL=chunk-QLKUWDMQ.js.map
@@ -3,14 +3,14 @@ import {
3
3
  footerNoteSx,
4
4
  trendSx
5
5
  } from "./chunk-WSSD7H5E.js";
6
+ import {
7
+ formatHour
8
+ } from "./chunk-L5CAHQIN.js";
6
9
  import {
7
10
  coverageLabelSx,
8
11
  coverageSx,
9
12
  lineSx
10
13
  } from "./chunk-5AZEDQXX.js";
11
- import {
12
- formatHour
13
- } from "./chunk-L5CAHQIN.js";
14
14
  import {
15
15
  SR_ONLY_SX
16
16
  } from "./chunk-SJAOQGQI.js";
@@ -80,4 +80,4 @@ export {
80
80
  trendPoints,
81
81
  GroupFooter
82
82
  };
83
- //# sourceMappingURL=chunk-MPVH2GM5.js.map
83
+ //# sourceMappingURL=chunk-RAQD5QCM.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- DAY_RULER_METRICS
3
- } from "./chunk-273OLFJD.js";
4
1
  import {
5
2
  createdSpan,
6
3
  hourAt,
7
4
  moved,
8
5
  resized
9
6
  } from "./chunk-L5CAHQIN.js";
7
+ import {
8
+ DAY_RULER_METRICS
9
+ } from "./chunk-273OLFJD.js";
10
10
  import {
11
11
  useDragWindow,
12
12
  useTrailingClick
@@ -101,4 +101,4 @@ function useRulerDrag(scale, handlers) {
101
101
  export {
102
102
  useRulerDrag
103
103
  };
104
- //# sourceMappingURL=chunk-KXDLLS62.js.map
104
+ //# sourceMappingURL=chunk-REHGWN5M.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MoreGroup,
4
4
  MoreQuick,
5
5
  fieldClearing
6
- } from "./chunk-WK577LQL.js";
6
+ } from "./chunk-J2IQ6FJ5.js";
7
7
  import {
8
8
  useStillAnchor
9
9
  } from "./chunk-7CUZTWKW.js";
@@ -223,4 +223,4 @@ function MoreFilters({
223
223
  export {
224
224
  MoreFilters
225
225
  };
226
- //# sourceMappingURL=chunk-3N2HWNKT.js.map
226
+ //# sourceMappingURL=chunk-UIJLDAV7.js.map
@@ -1,10 +1,10 @@
1
+ import {
2
+ testIdFor
3
+ } from "./chunk-L7VH6IMR.js";
1
4
  import {
2
5
  ALERT_CHILDREN_CLASS,
3
6
  ALERT_DESCRIPTION_CLASS
4
7
  } from "./chunk-LNZJJFZQ.js";
5
- import {
6
- testIdFor
7
- } from "./chunk-L7VH6IMR.js";
8
8
  import {
9
9
  DESCRIPTION,
10
10
  ICON_SLOT,
@@ -85,4 +85,4 @@ var AlertContent = ({ title, description, titleIcon, dataTestId, children }) =>
85
85
  export {
86
86
  AlertContent
87
87
  };
88
- //# sourceMappingURL=chunk-GDWU7WF4.js.map
88
+ //# sourceMappingURL=chunk-UN5WU2OX.js.map
@@ -1,3 +1,9 @@
1
+ import {
2
+ ShellEmpty
3
+ } from "./chunk-MKVDHR3B.js";
4
+ import {
5
+ GridHeaderRow
6
+ } from "./chunk-X3AFXHY5.js";
1
7
  import {
2
8
  GridMain
3
9
  } from "./chunk-SA3KLZDZ.js";
@@ -5,18 +11,9 @@ import {
5
11
  FilterDialog,
6
12
  GridFilterPanel
7
13
  } from "./chunk-HOWAMSUY.js";
8
- import {
9
- ShellEmpty
10
- } from "./chunk-MKVDHR3B.js";
11
14
  import {
12
15
  InlineFilterControls
13
- } from "./chunk-5V7IZBRY.js";
14
- import {
15
- GridHeaderRow
16
- } from "./chunk-X3AFXHY5.js";
17
- import {
18
- DataViewsPagination
19
- } from "./chunk-XZFTRGRW.js";
16
+ } from "./chunk-VRSW7PIO.js";
20
17
  import {
21
18
  useFilterOverflow
22
19
  } from "./chunk-WWH674WU.js";
@@ -24,6 +21,9 @@ import {
24
21
  toOverflowFields,
25
22
  toggleQuick
26
23
  } from "./chunk-KYUEO2IO.js";
24
+ import {
25
+ DataViewsPagination
26
+ } from "./chunk-XZFTRGRW.js";
27
27
  import {
28
28
  ScopeTabsSlot
29
29
  } from "./chunk-K3PMMW23.js";
@@ -252,4 +252,4 @@ function GridShell(props) {
252
252
  export {
253
253
  GridShell
254
254
  };
255
- //# sourceMappingURL=chunk-A27J4CIZ.js.map
255
+ //# sourceMappingURL=chunk-UTIYB6VE.js.map
@@ -5,19 +5,19 @@ import {
5
5
  } from "./chunk-T7OIVPCO.js";
6
6
  import {
7
7
  MoreFilters
8
- } from "./chunk-3N2HWNKT.js";
8
+ } from "./chunk-UIJLDAV7.js";
9
9
  import {
10
10
  PillControl
11
11
  } from "./chunk-XA5ES25V.js";
12
- import {
13
- QuickChip
14
- } from "./chunk-AT6UKTH4.js";
15
12
  import {
16
13
  isQuickActive
17
14
  } from "./chunk-KYUEO2IO.js";
18
15
  import {
19
16
  RangePill
20
17
  } from "./chunk-O4UXH7BM.js";
18
+ import {
19
+ QuickChip
20
+ } from "./chunk-AT6UKTH4.js";
21
21
  import {
22
22
  CollapsedSearch,
23
23
  InlineKeyword
@@ -251,4 +251,4 @@ function FilterSlots({
251
251
  export {
252
252
  InlineFilterControls
253
253
  };
254
- //# sourceMappingURL=chunk-5V7IZBRY.js.map
254
+ //# sourceMappingURL=chunk-VRSW7PIO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DataViewsGrid
3
- } from "./chunk-SOXO2VN3.js";
3
+ } from "./chunk-MEMVZW64.js";
4
4
  import {
5
5
  DeleteViewDialog
6
6
  } from "./chunk-3V7OTBUZ.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  ViewDialogs,
16
16
  ViewMutationErrorAlert
17
- } from "./chunk-CGLMWS7K.js";
17
+ } from "./chunk-37MJZLQU.js";
18
18
  import {
19
19
  useSavedViewsController
20
20
  } from "./chunk-B2JSUFDX.js";
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
166
166
  export {
167
167
  DataViewsTableBase
168
168
  };
169
- //# sourceMappingURL=chunk-AESKKFA5.js.map
169
+ //# sourceMappingURL=chunk-WDEVKND3.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-WGKLBVDZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useCardActions
3
- } from "./chunk-4N4M237A.js";
3
+ } from "./chunk-YQ5GQ32T.js";
4
4
  import {
5
5
  ConfirmActionDialog
6
6
  } from "./chunk-4P63RSSY.js";
@@ -50,4 +50,4 @@ function useRemoveConfirm({
50
50
  export {
51
51
  useRemoveConfirm
52
52
  };
53
- //# sourceMappingURL=chunk-67GTAPK6.js.map
53
+ //# sourceMappingURL=chunk-XFOKLWJZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useFocusOnScreen
3
- } from "./chunk-PNAKRHRT.js";
3
+ } from "./chunk-3I7KE2N6.js";
4
4
  import {
5
5
  actionSx,
6
6
  categoryDescriptionSx,
@@ -47,4 +47,4 @@ function SequenceOverviewBody(props) {
47
47
  export {
48
48
  SequenceOverviewBody
49
49
  };
50
- //# sourceMappingURL=chunk-OV5NM4FY.js.map
50
+ //# sourceMappingURL=chunk-XQAFSC66.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-L7BRU4UF.js";
9
9
  import {
10
10
  Alert
11
- } from "./chunk-RKAX37F4.js";
11
+ } from "./chunk-Q5SCBQLY.js";
12
12
  import {
13
13
  Button
14
14
  } from "./chunk-YOXYSAUI.js";
@@ -106,4 +106,4 @@ NotificationStatusNotice.displayName = "NotificationStatusNotice";
106
106
  export {
107
107
  NotificationStatusNotice
108
108
  };
109
- //# sourceMappingURL=chunk-6FGP7RMV.js.map
109
+ //# sourceMappingURL=chunk-XR474YYX.js.map
@@ -1,10 +1,14 @@
1
- import {
2
- labelPosition
3
- } from "./chunk-COOSJKZL.js";
4
1
  import {
5
2
  labelOrder,
6
3
  placeLabels
7
4
  } from "./chunk-J3AWGTJY.js";
5
+ import {
6
+ PinOverlay,
7
+ PinShapes
8
+ } from "./chunk-7XVT4RME.js";
9
+ import {
10
+ labelPosition
11
+ } from "./chunk-MNJZPJ5S.js";
8
12
  import {
9
13
  rem,
10
14
  remPx
@@ -16,23 +20,15 @@ import Typography from "@mui/material/Typography/index.js";
16
20
  import { alpha } from "@mui/material/styles/index.js";
17
21
  import React from "react";
18
22
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
19
- function RegionMapDrawing({
20
- model,
21
- overlay,
22
- showCenter,
23
- highlightedIds,
24
- maxHeight,
25
- label,
26
- tappable,
27
- testId,
28
- theme
29
- }) {
23
+ function RegionMapDrawing(props) {
24
+ const { model, overlay, showCenter, moving, highlightedIds, maxHeight, label, tappable, testId, theme } = props;
30
25
  const hatchId = `${React.useId().replace(/:/g, "")}-hatch`;
31
26
  const { view, drawn } = model;
32
27
  const wanted = new Set(highlightedIds);
33
28
  const highlighted = drawn.filter((d) => wanted.has(d.id));
34
29
  const labelled = labelOrder(drawn.filter((d) => d.excluded || wanted.has(d.id)), wanted);
35
30
  const boxRef = React.useRef(null);
31
+ const svgRef = React.useRef(null);
36
32
  useLabelPlacement(boxRef, labelled.map((d) => d.id).join("|"), remPx(theme, 4));
37
33
  const base = drawn.map((d) => ({ id: d.id, name: d.name, geometry: d.geometry, outside: d.outside === true }));
38
34
  return /* @__PURE__ */ jsxs(
@@ -56,6 +52,7 @@ function RegionMapDrawing({
56
52
  /* @__PURE__ */ jsxs(
57
53
  "svg",
58
54
  {
55
+ ref: svgRef,
59
56
  viewBox: `${view.minX} ${view.minY} ${view.spanX} ${view.spanY}`,
60
57
  role: "img",
61
58
  "aria-label": label,
@@ -69,9 +66,9 @@ function RegionMapDrawing({
69
66
  overlay && model.projection && // `pointer-events` is inherited in SVG: nothing the host draws here
70
67
  // takes a tap from the areas beneath.
71
68
  /* @__PURE__ */ jsx("g", { pointerEvents: "none", "data-testid": `${testId}-overlay`, children: overlay({ view, projection: model.projection }) }),
72
- /* @__PURE__ */ jsx(Circles, { radii: model.radii, theme }),
69
+ /* @__PURE__ */ jsx(PinShapes, { model, moving, testId, theme, fallback: /* @__PURE__ */ jsx(Circles, { radii: model.radii, theme }) }),
73
70
  /* @__PURE__ */ jsx(Highlights, { areas: highlighted, testId, theme }),
74
- showCenter && /* @__PURE__ */ jsx(
71
+ showCenter && !moving?.pin && /* @__PURE__ */ jsx(
75
72
  "circle",
76
73
  {
77
74
  cx: 0,
@@ -88,7 +85,8 @@ function RegionMapDrawing({
88
85
  ]
89
86
  }
90
87
  ),
91
- labelled.map((d) => /* @__PURE__ */ jsx(AreaLabel, { area: d, view, testId, theme }, `l-${d.id}`))
88
+ labelled.map((d) => /* @__PURE__ */ jsx(AreaLabel, { area: d, view, testId, theme }, `l-${d.id}`)),
89
+ /* @__PURE__ */ jsx(PinOverlay, { model, moving, svgRef, testId, theme })
92
90
  ]
93
91
  }
94
92
  );
@@ -256,4 +254,4 @@ function AreaLabel({
256
254
  export {
257
255
  RegionMapDrawing
258
256
  };
259
- //# sourceMappingURL=chunk-E4MJA52O.js.map
257
+ //# sourceMappingURL=chunk-YHFLI2FD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/RegionMap/RegionMapDrawing.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { rem, remPx } from '../../../tokens/relative';\n\nimport { labelPosition, type AreaGeometry, type DrawnRegion, type PlaneBox } from './RegionMap.helpers';\nimport type { RegionMapModel } from './RegionMap.hooks';\nimport { labelOrder, placeLabels } from './RegionMap.labels';\nimport type { RegionMapLayer } from './RegionMap.types';\nimport type { Moving } from './RegionMapPin';\nimport { PinOverlay, PinShapes } from './RegionMapPin';\n\nexport interface RegionMapDrawingProps {\n model: RegionMapModel & { view: PlaneBox };\n /** The host's layer, drawn inside the SVG under the circles (`RegionMapProps.overlay`). */\n overlay?: (layer: RegionMapLayer) => React.ReactNode;\n showCenter: boolean;\n /** The movable centre and what is drawn with it (`RegionMapProps.pin`, `ghost`, `dots`). */\n moving?: Moving;\n highlightedIds: readonly string[];\n maxHeight: string | undefined;\n label: string;\n tappable: boolean;\n testId: string;\n theme: Theme;\n}\n\n/**\n * The drawing: one `role=\"img\"`, square, with HTML labels laid over it.\n *\n * Strokes are `non-scaling-stroke` and labels are HTML at theme sizes, so the\n * picture reads the same at 320 px and 1600 px; `maxHeight` caps it on a wide\n * screen. Where it sits in a wider box is the host's call.\n *\n * The base areas are a memoised layer: a toggle changes `excluded`, not the\n * geometry, so only the hatch, highlight and label layers re-render.\n */\nexport function RegionMapDrawing(props: RegionMapDrawingProps): React.JSX.Element {\n const { model, overlay, showCenter, moving, highlightedIds, maxHeight, label, tappable, testId, theme } = props;\n const hatchId = `${React.useId().replace(/:/g, '')}-hatch`;\n const { view, drawn } = model;\n const wanted = new Set(highlightedIds);\n const highlighted = drawn.filter((d) => wanted.has(d.id));\n // Highlighted, then excluded, then larger, then by name: the order labels\n // claim their place in, so a collision hides the less important one.\n const labelled = labelOrder(drawn.filter((d) => d.excluded || wanted.has(d.id)), wanted);\n const boxRef = React.useRef<HTMLDivElement>(null);\n const svgRef = React.useRef<SVGSVGElement>(null);\n useLabelPlacement(boxRef, labelled.map((d) => d.id).join('|'), remPx(theme, 4));\n const base = drawn.map((d) => ({ id: d.id, name: d.name, geometry: d.geometry, outside: d.outside === true }));\n return (\n <Box\n sx={{\n position: 'relative',\n width: '100%',\n maxWidth: maxHeight,\n maxHeight,\n aspectRatio: '1 / 1',\n border: 1,\n borderColor: 'divider',\n borderRadius: 1,\n overflow: 'hidden',\n bgcolor: 'background.paper',\n }}\n data-testid={`${testId}-canvas`}\n ref={boxRef}\n >\n <svg\n ref={svgRef}\n viewBox={`${view.minX} ${view.minY} ${view.spanX} ${view.spanY}`}\n role=\"img\"\n aria-label={label}\n onPointerDown={model.onPointerDown}\n onClick={model.onClick}\n style={{ display: 'block', width: '100%', height: '100%', cursor: tappable ? 'pointer' : 'default' }}\n >\n <Hatch id={hatchId} pitch={view.spanX / 70} theme={theme} />\n <BaseAreas areas={base} testId={testId} theme={theme} />\n <ExcludedAreas drawn={drawn} hatchId={hatchId} testId={testId} theme={theme} />\n {overlay && model.projection && (\n // `pointer-events` is inherited in SVG: nothing the host draws here\n // takes a tap from the areas beneath.\n <g pointerEvents=\"none\" data-testid={`${testId}-overlay`}>\n {overlay({ view, projection: model.projection })}\n </g>\n )}\n <PinShapes model={model} moving={moving} testId={testId} theme={theme} fallback={<Circles radii={model.radii} theme={theme} />} />\n <Highlights areas={highlighted} testId={testId} theme={theme} />\n {showCenter && !moving?.pin && (\n <circle\n cx={0}\n cy={0}\n r={view.spanX / 90}\n fill={theme.palette.primary.main}\n stroke={theme.palette.background.paper}\n strokeWidth={2}\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n data-testid={`${testId}-center`}\n />\n )}\n </svg>\n {labelled.map((d) => (\n <AreaLabel key={`l-${d.id}`} area={d} view={view} testId={testId} theme={theme} />\n ))}\n <PinOverlay model={model} moving={moving} svgRef={svgRef} testId={testId} theme={theme} />\n </Box>\n );\n}\n\n/** The highlighted areas, drawn over everything but the centre. */\nfunction Highlights({\n areas,\n testId,\n theme,\n}: {\n areas: readonly DrawnRegion[];\n testId: string;\n theme: Theme;\n}): React.JSX.Element {\n return (\n <>\n {areas.map((d) => (\n <path\n key={`h-${d.id}`}\n d={d.geometry.path}\n fillRule=\"evenodd\"\n vectorEffect=\"non-scaling-stroke\"\n fill={alpha(theme.palette.primary.main, 0.3)}\n stroke={theme.palette.primary.main}\n strokeWidth={2.5}\n pointerEvents=\"none\"\n data-testid={`${testId}-highlight-${d.id}`}\n />\n ))}\n </>\n );\n}\n\n/** The hatch an excluded area is filled with: lines, not a colour. */\nfunction Hatch({ id, pitch, theme }: { id: string; pitch: number; theme: Theme }): React.JSX.Element {\n return (\n <defs>\n <pattern id={id} width={pitch} height={pitch} patternUnits=\"userSpaceOnUse\" patternTransform=\"rotate(45)\">\n <rect width={pitch} height={pitch} fill={alpha(theme.palette.text.primary, 0.1)} />\n <rect width={pitch / 3} height={pitch} fill={theme.palette.text.secondary} />\n </pattern>\n </defs>\n );\n}\n\ninterface BaseArea {\n id: string;\n name: string;\n geometry: AreaGeometry;\n outside: boolean;\n}\n\ninterface BaseAreasProps {\n areas: readonly BaseArea[];\n testId: string;\n theme: Theme;\n}\n\n/** Same areas, same geometry objects, same look: nothing to re-render. */\nfunction sameBase(a: BaseAreasProps, b: BaseAreasProps): boolean {\n if (a.theme !== b.theme || a.testId !== b.testId || a.areas.length !== b.areas.length) return false;\n return a.areas.every((area, i) => {\n const other = b.areas[i]!;\n return (\n area.id === other.id &&\n area.geometry === other.geometry &&\n area.outside === other.outside &&\n area.name === other.name\n );\n });\n}\n\n/** Every area's fill and border — the tap targets. Memoised: see `sameBase`. */\nconst BaseAreas = React.memo(function BaseAreas({ areas, testId, theme }: BaseAreasProps): React.JSX.Element {\n const { palette } = theme;\n return (\n <>\n {areas.map((d) => (\n <path\n key={d.id}\n d={d.geometry.path}\n fillRule=\"evenodd\"\n vectorEffect=\"non-scaling-stroke\"\n fill={d.outside ? palette.background.paper : palette.action.hover}\n stroke={palette.divider}\n strokeWidth={1}\n data-region-id={d.id}\n data-testid={`${testId}-area-${d.id}`}\n >\n <title>{d.name}</title>\n </path>\n ))}\n </>\n );\n}, sameBase);\n\n/** The hatch over every excluded area. */\nfunction ExcludedAreas({\n drawn,\n hatchId,\n testId,\n theme,\n}: {\n drawn: readonly DrawnRegion[];\n hatchId: string;\n testId: string;\n theme: Theme;\n}): React.JSX.Element {\n return (\n <>\n {drawn\n .filter((d) => d.excluded)\n .map((d) => (\n <path\n key={`x-${d.id}`}\n d={d.geometry.path}\n fillRule=\"evenodd\"\n vectorEffect=\"non-scaling-stroke\"\n fill={`url(#${hatchId})`}\n stroke={theme.palette.text.secondary}\n strokeWidth={1.5}\n pointerEvents=\"none\"\n data-testid={`${testId}-excluded-${d.id}`}\n />\n ))}\n </>\n );\n}\n\n/** The dashed circles around the centre. */\nfunction Circles({ radii, theme }: { radii: readonly number[]; theme: Theme }): React.JSX.Element {\n return (\n <>\n {radii.map((radius) => (\n <circle\n key={radius}\n cx={0}\n cy={0}\n r={radius}\n fill=\"none\"\n stroke={theme.palette.info.main}\n strokeWidth={1.75}\n strokeDasharray=\"7 5\"\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n />\n ))}\n </>\n );\n}\n\n/**\n * Places every label the drawing carries, in their DOM order (the priority\n * order), and hides one that would overlap a label already drawn\n * (`placeLabels`). Measured by a ResizeObserver, never in a layout effect: its\n * first call comes after the browser's own layout, so mounting a label on a\n * tap forces no synchronous reflow of the drawing.\n */\nfunction useLabelPlacement(boxRef: React.RefObject<HTMLDivElement | null>, key: string, gap: number): void {\n React.useEffect(() => {\n const box = boxRef.current;\n if (!box || typeof ResizeObserver === 'undefined') return undefined;\n const labels = Array.from(box.querySelectorAll<HTMLElement>('[data-region-label]'));\n const place = (): void => {\n const spanX = box.clientWidth;\n const spanY = box.clientHeight;\n if (spanX === 0 || spanY === 0) return;\n const placed = placeLabels(\n labels.map((label) => ({\n fractionX: Number(label.dataset.fractionX),\n fractionY: Number(label.dataset.fractionY),\n spanX: label.offsetWidth,\n spanY: label.offsetHeight,\n })),\n { spanX, spanY },\n gap,\n );\n placed.forEach(({ x, y, visible }, index) => {\n const label = labels[index]!;\n label.style.left = `${(x / spanX) * 100}%`;\n label.style.top = `${(y / spanY) * 100}%`;\n label.style.visibility = visible ? 'visible' : 'hidden';\n label.dataset.hidden = visible ? 'false' : 'true';\n });\n };\n const observer = new ResizeObserver(place);\n observer.observe(box);\n for (const label of labels) observer.observe(label);\n return () => observer.disconnect();\n }, [boxRef, key, gap]);\n}\n\n/**\n * An area's name over the drawing, at the theme's type size whatever the\n * width. Placed — and hidden on a collision — by {@link useLabelPlacement}.\n * Decorative (`aria-hidden`): the area's name is its `<title>` and its row in\n * the list.\n */\nfunction AreaLabel({\n area,\n view,\n testId,\n theme,\n}: {\n area: DrawnRegion;\n view: PlaneBox;\n testId: string;\n theme: Theme;\n}): React.JSX.Element {\n const at = labelPosition(area.geometry.rings, view);\n const halo = `0 0 ${rem(theme, 3)} ${theme.palette.background.paper}`;\n return (\n <Typography\n component=\"span\"\n aria-hidden\n data-testid={`${testId}-label-${area.id}`}\n data-region-label=\"\"\n data-fraction-x={at.fractionX}\n data-fraction-y={at.fractionY}\n // Position as an inline style, not `sx`: a per-label class would insert\n // a new CSS rule (and a style recalculation) on every tap.\n style={{\n left: `${(at.fractionX * 100).toFixed(2)}%`,\n top: `${(at.fractionY * 100).toFixed(2)}%`,\n }}\n sx={{\n position: 'absolute',\n transform: 'translate(-50%, -50%)',\n fontSize: rem(theme, 12),\n fontWeight: 700,\n lineHeight: 1.1,\n textAlign: 'center',\n maxWidth: '45%',\n color: 'text.primary',\n pointerEvents: 'none',\n textShadow: `${halo}, ${halo}`,\n }}\n >\n {area.name}\n </Typography>\n );\n}\n"],"mappings":"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","names":["BaseAreas"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Alert
3
- } from "./chunk-RKAX37F4.js";
3
+ } from "./chunk-Q5SCBQLY.js";
4
4
 
5
5
  // src/components/data-display/CardKit/card-actions-context.tsx
6
6
  import { createContext, useCallback, useContext, useState } from "react";
@@ -58,4 +58,4 @@ export {
58
58
  CardActionsProvider,
59
59
  useCardActions
60
60
  };
61
- //# sourceMappingURL=chunk-4N4M237A.js.map
61
+ //# sourceMappingURL=chunk-YQ5GQ32T.js.map
@@ -13,12 +13,12 @@ import {
13
13
  import {
14
14
  LightboxOverlay
15
15
  } from "./chunk-WLLUARTC.js";
16
- import {
17
- LightboxCurrentMedia
18
- } from "./chunk-RBGUS7WO.js";
19
16
  import {
20
17
  makeTestId
21
18
  } from "./chunk-VQU3CBAL.js";
19
+ import {
20
+ LightboxCurrentMedia
21
+ } from "./chunk-RBGUS7WO.js";
22
22
  import {
23
23
  LightboxCopyProvider
24
24
  } from "./chunk-TEQYTEM2.js";
@@ -148,4 +148,4 @@ export {
148
148
  Lightbox,
149
149
  Lightbox_default
150
150
  };
151
- //# sourceMappingURL=chunk-YLZXIR6B.js.map
151
+ //# sourceMappingURL=chunk-Z5V5E3JW.js.map
@@ -1,12 +1,12 @@
1
1
  import "../chunk-AG4F6NVT.js";
2
2
  import {
3
3
  Alert
4
- } from "../chunk-RKAX37F4.js";
5
- import "../chunk-GDWU7WF4.js";
4
+ } from "../chunk-Q5SCBQLY.js";
5
+ import "../chunk-UN5WU2OX.js";
6
6
  import "../chunk-YBF2WUGQ.js";
7
+ import "../chunk-L7VH6IMR.js";
7
8
  import "../chunk-QXUXO22M.js";
8
9
  import "../chunk-LNZJJFZQ.js";
9
- import "../chunk-L7VH6IMR.js";
10
10
  import {
11
11
  POINTER_STATES
12
12
  } from "../chunk-TBQR5VCN.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "../chunk-3LD42RNV.js";
7
7
  import {
8
8
  useRemoveConfirm
9
- } from "../chunk-67GTAPK6.js";
9
+ } from "../chunk-XFOKLWJZ.js";
10
10
  import {
11
11
  rowActionsToMenuItems
12
12
  } from "../chunk-ZBXG6RVJ.js";
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  CardActionsProvider,
22
22
  useCardActions
23
- } from "../chunk-4N4M237A.js";
23
+ } from "../chunk-YQ5GQ32T.js";
24
24
  import "../chunk-WVML3ENZ.js";
25
25
  import "../chunk-AY5GKCH7.js";
26
26
  import "../chunk-XCBQXSTR.js";
@@ -32,12 +32,12 @@ import "../chunk-EMYESBIT.js";
32
32
  import "../chunk-LZRVUOMU.js";
33
33
  import "../chunk-EEB66IVH.js";
34
34
  import "../chunk-AG4F6NVT.js";
35
- import "../chunk-RKAX37F4.js";
36
- import "../chunk-GDWU7WF4.js";
35
+ import "../chunk-Q5SCBQLY.js";
36
+ import "../chunk-UN5WU2OX.js";
37
37
  import "../chunk-YBF2WUGQ.js";
38
+ import "../chunk-L7VH6IMR.js";
38
39
  import "../chunk-QXUXO22M.js";
39
40
  import "../chunk-LNZJJFZQ.js";
40
- import "../chunk-L7VH6IMR.js";
41
41
  import "../chunk-2IBFEHIX.js";
42
42
  import "../chunk-TTBLQZVT.js";
43
43
  import "../chunk-WGK7VNCO.js";
@@ -4,13 +4,13 @@ import {
4
4
  } from "../chunk-B4OZU7J4.js";
5
5
  import "../chunk-RUIV5TVA.js";
6
6
  import "../chunk-KEPLO2AB.js";
7
- import "../chunk-Z64TMGYT.js";
8
- import "../chunk-6FDLBWTE.js";
9
7
  import {
10
8
  CarouselArrows,
11
9
  CarouselIndicators,
12
10
  CarouselThumbnails
13
11
  } from "../chunk-GXYOBTOY.js";
12
+ import "../chunk-Z64TMGYT.js";
13
+ import "../chunk-6FDLBWTE.js";
14
14
  import "../chunk-IPVGWENM.js";
15
15
  import "../chunk-PZS7N74L.js";
16
16
  import "../chunk-AA2X5GOT.js";