@sjvair/monitor-map 3.0.3 → 3.0.5

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 (279) hide show
  1. package/dist/lib/LoadScreen.svelte +68 -0
  2. package/dist/lib/LoadScreen.svelte.d.ts +25 -0
  3. package/dist/lib/MainMapView.svelte +1 -0
  4. package/dist/lib/MainMapView.svelte.d.ts +26 -0
  5. package/dist/lib/MapLegend.svelte +15 -0
  6. package/dist/lib/MapLegend.svelte.d.ts +18 -0
  7. package/dist/lib/MonitorDetailPanel.svelte +152 -0
  8. package/dist/lib/MonitorDetailPanel.svelte.d.ts +3 -0
  9. package/dist/lib/MonitorMapLayout.svelte +193 -0
  10. package/dist/lib/MonitorMapLayout.svelte.d.ts +7 -0
  11. package/dist/lib/actions.d.ts +3 -0
  12. package/dist/lib/actions.js +12 -8
  13. package/dist/lib/assets/icons/adjustment-horizontal.svg +3 -0
  14. package/dist/lib/assets/logos/airgradient-blue.svg +63 -0
  15. package/dist/lib/assets/logos/airnow-compact.jpg +0 -0
  16. package/dist/lib/assets/logos/carb-compact.jpg +0 -0
  17. package/dist/lib/assets/logos/purpleair-compact.png +0 -0
  18. package/dist/lib/assets/logos/sjvair-parts/sjvair-air.webp +0 -0
  19. package/dist/lib/assets/logos/sjvair-parts/sjvair-icon.webp +0 -0
  20. package/dist/lib/assets/logos/sjvair-parts/sjvair-sjv.webp +0 -0
  21. package/dist/lib/assets/logos/sjvair-white.svg +115 -0
  22. package/dist/lib/assets/logos/sjvair.svg +96 -0
  23. package/dist/lib/collocation-sites/CollocationTooltip.svelte +98 -0
  24. package/dist/lib/collocation-sites/CollocationTooltip.svelte.d.ts +7 -0
  25. package/dist/lib/collocation-sites/collocation-utils.d.ts +3 -0
  26. package/dist/lib/collocation-sites/collocation-utils.js +30 -0
  27. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.d.ts +7 -0
  28. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.js +17 -20
  29. package/dist/lib/collocation-sites/collocations-map-integration.svelte.d.ts +18 -0
  30. package/dist/lib/collocation-sites/collocations-map-integration.svelte.js +98 -83
  31. package/dist/lib/collocation-sites/collocations.svelte.d.ts +9 -0
  32. package/dist/lib/collocation-sites/collocations.svelte.js +17 -26
  33. package/dist/lib/collocation-sites/types.d.ts +8 -0
  34. package/dist/lib/collocation-sites/types.js +1 -0
  35. package/dist/lib/colors.d.ts +17 -0
  36. package/dist/lib/colors.js +29 -23
  37. package/dist/lib/components/DataBox.svelte +29 -0
  38. package/dist/lib/components/DataBox.svelte.d.ts +9 -0
  39. package/dist/lib/components/DisplayOption.svelte +7 -0
  40. package/dist/lib/components/DisplayOption.svelte.d.ts +5 -0
  41. package/dist/lib/components/MapLayersDisplayOptions.svelte +42 -0
  42. package/dist/lib/components/MapLayersDisplayOptions.svelte.d.ts +18 -0
  43. package/dist/lib/components/SegmentedControl.svelte +61 -0
  44. package/dist/lib/components/SegmentedControl.svelte.d.ts +11 -0
  45. package/dist/lib/components/ToggleSwitch.svelte +93 -0
  46. package/dist/lib/components/ToggleSwitch.svelte.d.ts +9 -0
  47. package/dist/lib/components/ui/button/button.svelte +89 -0
  48. package/dist/lib/components/ui/button/button.svelte.d.ts +70 -0
  49. package/dist/lib/components/ui/button/index.d.ts +2 -0
  50. package/dist/lib/components/ui/button/index.js +4 -0
  51. package/dist/lib/components/ui/range-calendar/index.d.ts +19 -0
  52. package/dist/lib/components/ui/range-calendar/index.js +21 -0
  53. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte +76 -0
  54. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte.d.ts +19 -0
  55. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
  56. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
  57. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte +36 -0
  58. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
  59. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte +7 -0
  60. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte.d.ts +4 -0
  61. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte +7 -0
  62. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte.d.ts +4 -0
  63. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
  64. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
  65. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
  66. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
  67. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte +19 -0
  68. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
  69. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte +19 -0
  70. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
  71. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
  72. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
  73. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte +44 -0
  74. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte.d.ts +4 -0
  75. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte +15 -0
  76. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte.d.ts +5 -0
  77. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte +19 -0
  78. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
  79. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte +19 -0
  80. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte.d.ts +5 -0
  81. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte +36 -0
  82. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +8 -0
  83. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte +36 -0
  84. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +8 -0
  85. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte +43 -0
  86. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte.d.ts +4 -0
  87. package/dist/lib/components/ui/range-calendar/range-calendar.svelte +112 -0
  88. package/dist/lib/components/ui/range-calendar/range-calendar.svelte.d.ts +21 -0
  89. package/dist/lib/data-chart/DataChart.svelte +303 -0
  90. package/dist/lib/data-chart/DataChart.svelte.d.ts +7 -0
  91. package/dist/lib/data-chart/DateRange.d.ts +6 -0
  92. package/dist/lib/data-chart/DateRange.js +15 -14
  93. package/dist/lib/data-chart/chart-utils.d.ts +3 -0
  94. package/dist/lib/data-chart/chart-utils.js +157 -93
  95. package/dist/lib/data-chart/data-chart.svelte.d.ts +7 -0
  96. package/dist/lib/data-chart/data-chart.svelte.js +7 -28
  97. package/dist/lib/data-chart/requests.d.ts +3 -0
  98. package/dist/lib/data-chart/requests.js +36 -28
  99. package/dist/lib/data-chart/tooltip.d.ts +10 -0
  100. package/dist/lib/data-chart/tooltip.js +160 -98
  101. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte +16 -0
  102. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte.d.ts +7 -0
  103. package/dist/lib/ev-stations/components/EvStationTooltip.svelte +127 -0
  104. package/dist/lib/ev-stations/components/EvStationTooltip.svelte.d.ts +7 -0
  105. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte +46 -0
  106. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte.d.ts +18 -0
  107. package/dist/lib/ev-stations/data-maps.d.ts +5 -0
  108. package/dist/lib/ev-stations/data-maps.js +152 -4
  109. package/dist/lib/ev-stations/ev-station-icons.d.ts +16 -0
  110. package/dist/lib/ev-stations/ev-station-icons.js +21 -27
  111. package/dist/lib/ev-stations/ev-stations-cluster-renderer.d.ts +19 -0
  112. package/dist/lib/ev-stations/ev-stations-cluster-renderer.js +130 -117
  113. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.d.ts +31 -0
  114. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.js +206 -180
  115. package/dist/lib/ev-stations/ev-stations.svelte.d.ts +9 -0
  116. package/dist/lib/ev-stations/ev-stations.svelte.js +54 -32
  117. package/dist/lib/ev-stations/types.d.ts +53 -0
  118. package/dist/lib/ev-stations/types.js +1 -0
  119. package/dist/lib/ev-stations/zip-codes.d.ts +13 -0
  120. package/dist/lib/ev-stations/zip-codes.js +457 -135
  121. package/dist/lib/hms/components/HMSFireLegend.svelte +21 -0
  122. package/dist/lib/hms/components/HMSFireLegend.svelte.d.ts +18 -0
  123. package/dist/lib/hms/hms-fire-icon-manager.d.ts +5 -0
  124. package/dist/lib/hms/hms-fire-icon-manager.js +28 -37
  125. package/dist/lib/hms/hms-fire-map-integration.svelte.d.ts +23 -0
  126. package/dist/lib/hms/hms-fire-map-integration.svelte.js +94 -97
  127. package/dist/lib/hms/hms-smoke-map-integration.svelte.d.ts +19 -0
  128. package/dist/lib/hms/hms-smoke-map-integration.svelte.js +68 -84
  129. package/dist/lib/hms/hms.svelte.d.ts +19 -0
  130. package/dist/lib/hms/hms.svelte.js +225 -76
  131. package/dist/lib/index.d.ts +68 -0
  132. package/dist/lib/index.js +56 -21
  133. package/dist/lib/map/Map.svelte +13 -0
  134. package/dist/lib/map/Map.svelte.d.ts +8 -0
  135. package/dist/lib/map/MapStyleDisplayOptions.svelte +61 -0
  136. package/dist/lib/map/MapStyleDisplayOptions.svelte.d.ts +3 -0
  137. package/dist/lib/map/Menu.svelte +64 -0
  138. package/dist/lib/map/Menu.svelte.d.ts +5 -0
  139. package/dist/lib/map/icons.d.ts +7 -0
  140. package/dist/lib/map/icons.js +24 -22
  141. package/dist/lib/map/integrations/base-layer-seperator.d.ts +9 -0
  142. package/dist/lib/map/integrations/base-layer-seperator.js +11 -12
  143. package/dist/lib/map/integrations/click-manager.d.ts +14 -0
  144. package/dist/lib/map/integrations/click-manager.js +52 -33
  145. package/dist/lib/map/integrations/integrations-manager.d.ts +8 -0
  146. package/dist/lib/map/integrations/integrations-manager.js +20 -12
  147. package/dist/lib/map/integrations/map-display-option.svelte.d.ts +7 -0
  148. package/dist/lib/map/integrations/map-display-option.svelte.js +10 -18
  149. package/dist/lib/map/integrations/map-geojson-integration.svelte.d.ts +13 -0
  150. package/dist/lib/map/integrations/map-geojson-integration.svelte.js +21 -17
  151. package/dist/lib/map/integrations/map-icon-manager.d.ts +15 -0
  152. package/dist/lib/map/integrations/map-icon-manager.js +52 -46
  153. package/dist/lib/map/integrations/map-integration.svelte.d.ts +6 -0
  154. package/dist/lib/map/integrations/map-integration.svelte.js +2 -5
  155. package/dist/lib/map/integrations/map-layer-integration.svelte.d.ts +11 -0
  156. package/dist/lib/map/integrations/map-layer-integration.svelte.js +36 -23
  157. package/dist/lib/map/integrations/tooltip.svelte.d.ts +28 -0
  158. package/dist/lib/map/integrations/tooltip.svelte.js +120 -78
  159. package/dist/lib/map/integrations/types.d.ts +14 -0
  160. package/dist/lib/map/integrations/types.js +1 -0
  161. package/dist/lib/map/map.svelte.d.ts +14 -0
  162. package/dist/lib/map/map.svelte.js +48 -50
  163. package/dist/lib/map/utils.d.ts +7 -0
  164. package/dist/lib/map/utils.js +32 -29
  165. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte +112 -0
  166. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte.d.ts +7 -0
  167. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte +41 -0
  168. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte.d.ts +3 -0
  169. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte +128 -0
  170. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte.d.ts +6 -0
  171. package/dist/lib/monitors/components/MonitorTooltip.svelte +61 -0
  172. package/dist/lib/monitors/components/MonitorTooltip.svelte.d.ts +7 -0
  173. package/dist/lib/monitors/components/MonitorWidgetModal.svelte +100 -0
  174. package/dist/lib/monitors/components/MonitorWidgetModal.svelte.d.ts +6 -0
  175. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +79 -0
  176. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte.d.ts +3 -0
  177. package/dist/lib/monitors/monitor-utils.d.ts +4 -0
  178. package/dist/lib/monitors/monitor-utils.js +33 -23
  179. package/dist/lib/monitors/monitors-cluster-renderer.d.ts +33 -0
  180. package/dist/lib/monitors/monitors-cluster-renderer.js +218 -209
  181. package/dist/lib/monitors/monitors-icon-manager.svelte.d.ts +13 -0
  182. package/dist/lib/monitors/monitors-icon-manager.svelte.js +75 -70
  183. package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +40 -0
  184. package/dist/lib/monitors/monitors-map-integration.svelte.js +278 -270
  185. package/dist/lib/monitors/monitors.svelte.d.ts +16 -0
  186. package/dist/lib/monitors/monitors.svelte.js +38 -63
  187. package/dist/lib/monitors/types.d.ts +26 -0
  188. package/dist/lib/monitors/types.js +1 -0
  189. package/dist/lib/reactivity.svelte.d.ts +0 -0
  190. package/dist/lib/reactivity.svelte.js +83 -0
  191. package/dist/lib/router-context.d.ts +27 -0
  192. package/dist/lib/router-context.js +11 -11
  193. package/dist/lib/routes.d.ts +2 -0
  194. package/dist/lib/routes.js +10 -9
  195. package/dist/lib/search/Search.svelte +189 -0
  196. package/dist/lib/search/Search.svelte.d.ts +3 -0
  197. package/dist/lib/search/service.d.ts +17 -0
  198. package/dist/lib/search/service.js +75 -85
  199. package/dist/lib/utils.d.ts +13 -0
  200. package/dist/lib/utils.js +10 -12
  201. package/dist/lib/weather.d.ts +1 -0
  202. package/dist/lib/weather.js +11 -7
  203. package/dist/lib/wind/wind.svelte.d.ts +10 -0
  204. package/dist/lib/wind/wind.svelte.js +13 -21
  205. package/package.json +9 -7
  206. package/src/lib/LoadScreen.svelte +3 -3
  207. package/src/lib/hms/components/HMSFireLegend.svelte +1 -1
  208. package/src/lib/hms/hms.svelte.ts +8 -9
  209. package/src/lib/index.ts +18 -0
  210. package/src/lib/routes.ts +6 -1
  211. package/src/lib/utils.ts +1 -1
  212. package/dist/lib/LoadScreen.js +0 -73
  213. package/dist/lib/MainMapView.js +0 -7
  214. package/dist/lib/MapLegend.js +0 -13
  215. package/dist/lib/MonitorDetailPanel.js +0 -169
  216. package/dist/lib/MonitorMapLayout.js +0 -91
  217. package/dist/lib/_virtual/_rolldown/runtime.js +0 -11
  218. package/dist/lib/assets/logos/airgradient-blue.js +0 -4
  219. package/dist/lib/assets/logos/airnow-compact.js +0 -4
  220. package/dist/lib/assets/logos/carb-compact.js +0 -4
  221. package/dist/lib/assets/logos/purpleair-compact.js +0 -4
  222. package/dist/lib/assets/logos/sjvair.js +0 -4
  223. package/dist/lib/collocation-sites/CollocationTooltip.js +0 -105
  224. package/dist/lib/components/DataBox.js +0 -30
  225. package/dist/lib/components/DisplayOption.js +0 -10
  226. package/dist/lib/components/MapLayersDisplayOptions.js +0 -87
  227. package/dist/lib/components/SegmentedControl.js +0 -37
  228. package/dist/lib/components/ToggleSwitch.js +0 -17
  229. package/dist/lib/components/ui/button/button.js +0 -34
  230. package/dist/lib/components/ui/range-calendar/range-calendar-caption.js +0 -82
  231. package/dist/lib/components/ui/range-calendar/range-calendar-cell.js +0 -35
  232. package/dist/lib/components/ui/range-calendar/range-calendar-day.js +0 -35
  233. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.js +0 -27
  234. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.js +0 -27
  235. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.js +0 -35
  236. package/dist/lib/components/ui/range-calendar/range-calendar-grid.js +0 -35
  237. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.js +0 -35
  238. package/dist/lib/components/ui/range-calendar/range-calendar-header.js +0 -35
  239. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.js +0 -61
  240. package/dist/lib/components/ui/range-calendar/range-calendar-month.js +0 -25
  241. package/dist/lib/components/ui/range-calendar/range-calendar-months.js +0 -25
  242. package/dist/lib/components/ui/range-calendar/range-calendar-nav.js +0 -25
  243. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.js +0 -58
  244. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.js +0 -58
  245. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.js +0 -59
  246. package/dist/lib/components/ui/range-calendar/range-calendar.js +0 -272
  247. package/dist/lib/data-chart/DataChart.js +0 -142
  248. package/dist/lib/ev-stations/components/EvStationClusterTooltip.js +0 -16
  249. package/dist/lib/ev-stations/components/EvStationTooltip.js +0 -120
  250. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.js +0 -41
  251. package/dist/lib/hms/components/HMSFireLegend.js +0 -35
  252. package/dist/lib/map/Map.js +0 -14
  253. package/dist/lib/map/MapStyleDisplayOptions.js +0 -43
  254. package/dist/lib/map/Menu.js +0 -44
  255. package/dist/lib/monitors/components/MonitorClusterTooltip.js +0 -83
  256. package/dist/lib/monitors/components/MonitorMarkersLegend.js +0 -35
  257. package/dist/lib/monitors/components/MonitorSubscriptionManager.js +0 -104
  258. package/dist/lib/monitors/components/MonitorTooltip.js +0 -59
  259. package/dist/lib/monitors/components/MonitorWidgetModal.js +0 -40
  260. package/dist/lib/monitors/components/MonitorsDisplayOptions.js +0 -76
  261. package/dist/lib/search/Search.js +0 -124
  262. package/dist/lib/sjvair-air.avif +0 -0
  263. package/dist/lib/sjvair-air.png +0 -0
  264. package/dist/lib/sjvair-air.webp +0 -0
  265. package/dist/lib/sjvair-air2.avif +0 -0
  266. package/dist/lib/sjvair-air2.png +0 -0
  267. package/dist/lib/sjvair-air2.webp +0 -0
  268. package/dist/lib/sjvair-icon.avif +0 -0
  269. package/dist/lib/sjvair-icon.png +0 -0
  270. package/dist/lib/sjvair-icon.webp +0 -0
  271. package/dist/lib/sjvair-icon2.avif +0 -0
  272. package/dist/lib/sjvair-icon2.png +0 -0
  273. package/dist/lib/sjvair-icon2.webp +0 -0
  274. package/dist/lib/sjvair-sjv.avif +0 -0
  275. package/dist/lib/sjvair-sjv.png +0 -0
  276. package/dist/lib/sjvair-sjv.webp +0 -0
  277. package/dist/lib/sjvair-sjv2.avif +0 -0
  278. package/dist/lib/sjvair-sjv2.png +0 -0
  279. package/dist/lib/sjvair-sjv2.webp +0 -0
@@ -1,118 +1,131 @@
1
- import { mountPopup as e } from "../map/utils.js";
2
- import { mapManager as t } from "../map/map.svelte.js";
3
- import { clickManager as n } from "../map/integrations/click-manager.js";
4
- import { EV_STATION_LEVELS as r } from "./ev-station-icons.js";
5
- import i from "./components/EvStationClusterTooltip.js";
6
- //#region src/lib/ev-stations/ev-stations-cluster-renderer.ts
7
- function a(t) {
8
- let n = t.features?.[0];
9
- if (n) return e(i, { feature: n }, t.lngLat);
1
+ import { mapManager } from "../map/map.svelte.ts";
2
+ import { mountPopup } from "../map/utils.ts";
3
+ import { clickManager } from "../map/integrations/click-manager.ts";
4
+ import { EV_STATION_LEVELS } from "./ev-station-icons.ts";
5
+ import EvStationClusterTooltip from "./components/EvStationClusterTooltip.svelte";
6
+ function clusterTooltip(evt) {
7
+ const feature = evt.features?.[0];
8
+ if (!feature)
9
+ return;
10
+ return mountPopup(EvStationClusterTooltip, { feature }, evt.lngLat);
11
+ }
12
+ export class EvStationsClusterRenderer {
13
+ ctx;
14
+ _levels = [];
15
+ constructor(ctx) {
16
+ this.ctx = ctx;
17
+ }
18
+ apply(stationClickHandler) {
19
+ if (!mapManager.map)
20
+ return;
21
+ for (const level of Object.keys(EV_STATION_LEVELS)) {
22
+ const sourceId = `${this.ctx.referenceId}-${level}`;
23
+ const features = this.ctx.featuresByLevel[level] ?? [];
24
+ const { bg } = EV_STATION_LEVELS[level];
25
+ const clusterBg = bg.replace("rgb(", "rgba(").replace(")", ", 0.6)");
26
+ mapManager.map.addSource(sourceId, {
27
+ type: "geojson",
28
+ promoteId: "id",
29
+ data: { type: "FeatureCollection", features },
30
+ cluster: true,
31
+ clusterRadius: 40,
32
+ clusterMaxZoom: 9
33
+ });
34
+ mapManager.map.addLayer({
35
+ id: `${sourceId}-cluster-circle`,
36
+ type: "circle",
37
+ source: sourceId,
38
+ filter: ["has", "point_count"],
39
+ paint: {
40
+ "circle-color": clusterBg,
41
+ "circle-radius": ["step", ["get", "point_count"], 15, 10, 20, 25, 25]
42
+ }
43
+ }, this.ctx.beforeLayer);
44
+ mapManager.map.addLayer({
45
+ id: `${sourceId}-cluster-label`,
46
+ type: "symbol",
47
+ source: sourceId,
48
+ filter: ["has", "point_count"],
49
+ layout: {
50
+ "text-field": ["get", "point_count_abbreviated"],
51
+ "text-size": 12,
52
+ "text-allow-overlap": true,
53
+ "text-ignore-placement": true
54
+ },
55
+ paint: { "text-color": "#ffffff" }
56
+ }, this.ctx.beforeLayer);
57
+ mapManager.map.addLayer({
58
+ id: `${sourceId}-unclustered`,
59
+ type: "symbol",
60
+ source: sourceId,
61
+ filter: ["!", ["has", "point_count"]],
62
+ layout: {
63
+ "icon-image": `ev-station-${level}`,
64
+ "icon-allow-overlap": true,
65
+ "icon-ignore-placement": true,
66
+ "icon-size": 1
67
+ },
68
+ paint: {}
69
+ }, this.ctx.beforeLayer);
70
+ const circleLayerId = `${sourceId}-cluster-circle`;
71
+ const unclusteredLayerId = `${sourceId}-unclustered`;
72
+ if (!this.ctx.tooltipManager.has(circleLayerId)) {
73
+ this.ctx.tooltipManager.register(circleLayerId, clusterTooltip);
74
+ }
75
+ clickManager.register([circleLayerId], this.makeClusterClickHandler(sourceId));
76
+ clickManager.register([unclusteredLayerId], stationClickHandler);
77
+ this._levels.push(level);
78
+ }
79
+ }
80
+ remove() {
81
+ if (!mapManager.map)
82
+ return;
83
+ for (const level of this._levels) {
84
+ const sourceId = `${this.ctx.referenceId}-${level}`;
85
+ const layerIds = [
86
+ `${sourceId}-cluster-circle`,
87
+ `${sourceId}-cluster-label`,
88
+ `${sourceId}-unclustered`
89
+ ];
90
+ for (const layerId of layerIds) {
91
+ clickManager.unregister([layerId]);
92
+ if (mapManager.map.getLayer(layerId)) {
93
+ mapManager.map.removeLayer(layerId);
94
+ }
95
+ }
96
+ if (mapManager.map.getSource(sourceId)) {
97
+ mapManager.map.removeSource(sourceId);
98
+ }
99
+ }
100
+ this._levels = [];
101
+ }
102
+ get unclusteredLayerIds() {
103
+ return this._levels.map((level) => `${this.ctx.referenceId}-${level}-unclustered`);
104
+ }
105
+ syncFeatures() {
106
+ if (!mapManager.map)
107
+ return;
108
+ for (const level of this._levels) {
109
+ const sourceId = `${this.ctx.referenceId}-${level}`;
110
+ mapManager.setDataSource(sourceId, this.ctx.featuresByLevel[level] ?? []);
111
+ }
112
+ }
113
+ makeClusterClickHandler(sourceId) {
114
+ return async (features) => {
115
+ try {
116
+ const feature = features[0];
117
+ if (!feature?.properties?.cluster_id)
118
+ return;
119
+ const source = mapManager.map?.getSource(sourceId);
120
+ if (!source)
121
+ return;
122
+ const zoom = await source.getClusterExpansionZoom(feature.properties.cluster_id);
123
+ const coords = feature.geometry.coordinates;
124
+ mapManager.map?.easeTo({ center: coords, zoom });
125
+ }
126
+ catch (err) {
127
+ console.error("EvStations: cluster expansion zoom failed", err);
128
+ }
129
+ };
130
+ }
10
131
  }
11
- var o = class {
12
- ctx;
13
- _levels = [];
14
- constructor(e) {
15
- this.ctx = e;
16
- }
17
- apply(e) {
18
- if (t.map) for (let i of Object.keys(r)) {
19
- let o = `${this.ctx.referenceId}-${i}`, s = this.ctx.featuresByLevel[i] ?? [], { bg: c } = r[i], l = c.replace("rgb(", "rgba(").replace(")", ", 0.6)");
20
- t.map.addSource(o, {
21
- type: "geojson",
22
- promoteId: "id",
23
- data: {
24
- type: "FeatureCollection",
25
- features: s
26
- },
27
- cluster: !0,
28
- clusterRadius: 40,
29
- clusterMaxZoom: 9
30
- }), t.map.addLayer({
31
- id: `${o}-cluster-circle`,
32
- type: "circle",
33
- source: o,
34
- filter: ["has", "point_count"],
35
- paint: {
36
- "circle-color": l,
37
- "circle-radius": [
38
- "step",
39
- ["get", "point_count"],
40
- 15,
41
- 10,
42
- 20,
43
- 25,
44
- 25
45
- ]
46
- }
47
- }, this.ctx.beforeLayer), t.map.addLayer({
48
- id: `${o}-cluster-label`,
49
- type: "symbol",
50
- source: o,
51
- filter: ["has", "point_count"],
52
- layout: {
53
- "text-field": ["get", "point_count_abbreviated"],
54
- "text-size": 12,
55
- "text-allow-overlap": !0,
56
- "text-ignore-placement": !0
57
- },
58
- paint: { "text-color": "#ffffff" }
59
- }, this.ctx.beforeLayer), t.map.addLayer({
60
- id: `${o}-unclustered`,
61
- type: "symbol",
62
- source: o,
63
- filter: ["!", ["has", "point_count"]],
64
- layout: {
65
- "icon-image": `ev-station-${i}`,
66
- "icon-allow-overlap": !0,
67
- "icon-ignore-placement": !0,
68
- "icon-size": 1
69
- },
70
- paint: {}
71
- }, this.ctx.beforeLayer);
72
- let u = `${o}-cluster-circle`, d = `${o}-unclustered`;
73
- this.ctx.tooltipManager.has(u) || this.ctx.tooltipManager.register(u, a), n.register([u], this.makeClusterClickHandler(o)), n.register([d], e), this._levels.push(i);
74
- }
75
- }
76
- remove() {
77
- if (t.map) {
78
- for (let e of this._levels) {
79
- let r = `${this.ctx.referenceId}-${e}`, i = [
80
- `${r}-cluster-circle`,
81
- `${r}-cluster-label`,
82
- `${r}-unclustered`
83
- ];
84
- for (let e of i) n.unregister([e]), t.map.getLayer(e) && t.map.removeLayer(e);
85
- t.map.getSource(r) && t.map.removeSource(r);
86
- }
87
- this._levels = [];
88
- }
89
- }
90
- get unclusteredLayerIds() {
91
- return this._levels.map((e) => `${this.ctx.referenceId}-${e}-unclustered`);
92
- }
93
- syncFeatures() {
94
- if (t.map) for (let e of this._levels) {
95
- let n = `${this.ctx.referenceId}-${e}`;
96
- t.setDataSource(n, this.ctx.featuresByLevel[e] ?? []);
97
- }
98
- }
99
- makeClusterClickHandler(e) {
100
- return async (n) => {
101
- try {
102
- let r = n[0];
103
- if (!r?.properties?.cluster_id) return;
104
- let i = t.map?.getSource(e);
105
- if (!i) return;
106
- let a = await i.getClusterExpansionZoom(r.properties.cluster_id), o = r.geometry.coordinates;
107
- t.map?.easeTo({
108
- center: o,
109
- zoom: a
110
- });
111
- } catch (e) {
112
- console.error("EvStations: cluster expansion zoom failed", e);
113
- }
114
- };
115
- }
116
- };
117
- //#endregion
118
- export { o as EvStationsClusterRenderer };
@@ -0,0 +1,31 @@
1
+ import type { FilterSpecification, Map as MaptilerMap } from "@maptiler/sdk";
2
+ import { MapIconLayerIntegration } from "../map/integrations/map-geojson-integration.svelte.ts";
3
+ import { MapDisplayOption } from "../map/integrations/map-display-option.svelte.ts";
4
+ import { TooltipManager } from "../map/integrations/tooltip.svelte.ts";
5
+ import { EvStationIconManager } from "./ev-station-icons.ts";
6
+ import { type EvStationsClusterContext } from "./ev-stations-cluster-renderer.ts";
7
+ import type { EvStationMapFeature, EvStationMarkerProperties } from "./types.ts";
8
+ declare class EvStationsMapIntegration extends MapIconLayerIntegration<EvStationMarkerProperties> implements EvStationsClusterContext {
9
+ referenceId: string;
10
+ enabled: boolean;
11
+ clustered: boolean;
12
+ icons: EvStationIconManager;
13
+ tooltipManager: TooltipManager;
14
+ private renderer;
15
+ private currentPopup;
16
+ displayOptions: {
17
+ lvl2: MapDisplayOption;
18
+ lvl3: MapDisplayOption;
19
+ };
20
+ features: Array<EvStationMapFeature>;
21
+ featuresByLevel: Record<string, EvStationMapFeature[]>;
22
+ filters: FilterSpecification;
23
+ private handleStationClick;
24
+ get mapLayer(): Parameters<MaptilerMap["addLayer"]>[0];
25
+ get mapSource(): Parameters<MaptilerMap["addSource"]>[1];
26
+ constructor();
27
+ apply(): void;
28
+ remove(): void;
29
+ }
30
+ export declare const evStationsMapIntegration: EvStationsMapIntegration;
31
+ export type { EvStationsMapIntegration };