@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
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import type { EvStationClusterMapFeature } from "../types";
3
+
4
+ interface Props {
5
+ feature: EvStationClusterMapFeature;
6
+ }
7
+
8
+ const { feature }: Props = $props();
9
+
10
+ const levelLabel = $derived(feature.source.includes("lvl2") ? "Level 2" : "Level 3");
11
+ </script>
12
+
13
+ <div class="flex flex-col gap-1 p-1">
14
+ <p class="font-semibold">{levelLabel} Chargers</p>
15
+ <p class="text-sm">{feature.properties.point_count} stations</p>
16
+ </div>
@@ -0,0 +1,7 @@
1
+ import type { EvStationClusterMapFeature } from "../types";
2
+ interface Props {
3
+ feature: EvStationClusterMapFeature;
4
+ }
5
+ declare const EvStationClusterTooltip: import("svelte").Component<Props, {}, "">;
6
+ type EvStationClusterTooltip = ReturnType<typeof EvStationClusterTooltip>;
7
+ export default EvStationClusterTooltip;
@@ -0,0 +1,127 @@
1
+ <script lang="ts">
2
+ import CreditCard from "@lucide/svelte/icons/credit-card";
3
+ import Zap from "@lucide/svelte/icons/zap";
4
+ import type { EvStationMapFeature } from "../types";
5
+
6
+ interface Props {
7
+ feature: EvStationMapFeature;
8
+ }
9
+
10
+ const { feature }: Props = $props();
11
+
12
+ const computed = $derived.by(() => {
13
+ const p = feature.properties;
14
+
15
+ const connectors: string[] = JSON.parse(p.ev_connector_types || "[]");
16
+
17
+ const cards: string[] = p.cards_accepted
18
+ ? p.cards_accepted.split(",").map((c) => c.trim())
19
+ : [];
20
+
21
+ const hours: string[] = (() => {
22
+ if (!p.access_days_time) return [];
23
+ const delimiter = p.access_days_time.includes("|") ? "|" : ";";
24
+ return p.access_days_time.split(delimiter).map((line) => {
25
+ const trimmed = line.trim();
26
+ return trimmed.charAt(0).toUpperCase() + trimmed.slice(1);
27
+ });
28
+ })();
29
+
30
+ const pricingLines: string[] = (() => {
31
+ if (!p.ev_pricing) return [];
32
+ return p.ev_pricing.split(";").flatMap((segment) =>
33
+ segment
34
+ .split("and")
35
+ .map((part) => part.trim())
36
+ .filter(Boolean)
37
+ );
38
+ })();
39
+
40
+ const mapsUrl: string = (() => {
41
+ if (!p.street_address || !p.city || !p.state || !p.zip) return "";
42
+ return `https://maps.google.com/?q=${p.street_address}+${p.city},+${p.state}+${p.zip}`;
43
+ })();
44
+
45
+ return { p, connectors, cards, hours, pricingLines, mapsUrl };
46
+ });
47
+ </script>
48
+
49
+ <div class="flex max-w-xs flex-col gap-2 p-1">
50
+ <p class="text-center text-lg font-bold">{computed.p.station_name}</p>
51
+
52
+ {#if computed.p.facility_type || computed.p.ev_network}
53
+ <div class="flex flex-wrap justify-center gap-2">
54
+ {#if computed.p.facility_type}
55
+ <span class="rounded bg-blue-500 px-2 py-0.5 text-xs text-white"
56
+ >{computed.p.facility_type}</span
57
+ >
58
+ {/if}
59
+ {#if computed.p.ev_network}
60
+ <span class="rounded bg-blue-500 px-2 py-0.5 text-xs text-white"
61
+ >{computed.p.ev_network}</span
62
+ >
63
+ {/if}
64
+ </div>
65
+ {/if}
66
+
67
+ <div class="flex gap-4">
68
+ <div class="flex flex-col gap-1">
69
+ {#if computed.p.station_phone}
70
+ <a href="tel:+1{computed.p.station_phone}" class="text-sm underline"
71
+ >{computed.p.station_phone}</a
72
+ >
73
+ {/if}
74
+ {#if computed.mapsUrl}
75
+ <a href={computed.mapsUrl} target="_blank" class="text-sm leading-tight underline">
76
+ {computed.p.street_address}<br />{computed.p.city}, {computed.p.state}
77
+ {computed.p.zip}
78
+ </a>
79
+ {/if}
80
+ </div>
81
+ {#if computed.hours.length}
82
+ <div class="flex flex-col text-sm">
83
+ {#each computed.hours as line, i (i)}
84
+ <p>{line}</p>
85
+ {/each}
86
+ </div>
87
+ {/if}
88
+ </div>
89
+
90
+ {#if computed.p.access_detail_code}
91
+ <span class="w-fit rounded bg-red-500 px-2 py-0.5 text-xs text-white">
92
+ {computed.p.access_detail_code}
93
+ </span>
94
+ {/if}
95
+
96
+ {#if computed.cards.length}
97
+ <div class="flex flex-wrap gap-1">
98
+ {#each computed.cards as card, i (i)}
99
+ <span class="flex items-center gap-1 rounded border px-1.5 py-0.5 text-xs">
100
+ <CreditCard class="size-3.5" />
101
+ {card}
102
+ </span>
103
+ {/each}
104
+ </div>
105
+ {/if}
106
+
107
+ {#if computed.connectors.length}
108
+ <div class="flex flex-wrap gap-1">
109
+ {#each computed.connectors as connector, i (i)}
110
+ <span
111
+ class="flex items-center gap-1 rounded bg-green-600 px-1.5 py-0.5 text-xs font-semibold text-white"
112
+ >
113
+ <Zap class="size-3.5" />
114
+ {connector}
115
+ </span>
116
+ {/each}
117
+ </div>
118
+ {/if}
119
+
120
+ {#if computed.pricingLines.length}
121
+ <div class="text-sm">
122
+ {#each computed.pricingLines as line, i (i)}
123
+ <p>{line}</p>
124
+ {/each}
125
+ </div>
126
+ {/if}
127
+ </div>
@@ -0,0 +1,7 @@
1
+ import type { EvStationMapFeature } from "../types";
2
+ interface Props {
3
+ feature: EvStationMapFeature;
4
+ }
5
+ declare const EvStationTooltip: import("svelte").Component<Props, {}, "">;
6
+ type EvStationTooltip = ReturnType<typeof EvStationTooltip>;
7
+ export default EvStationTooltip;
@@ -0,0 +1,46 @@
1
+ <script lang="ts">
2
+ import DisplayOption from "../../components/DisplayOption.svelte";
3
+ import ToggleSwitch from "../../components/ToggleSwitch.svelte";
4
+ import { evStationsMapIntegration } from "../ev-stations-map-integration.svelte";
5
+
6
+ const { displayOptions } = evStationsMapIntegration;
7
+ </script>
8
+
9
+ <DisplayOption>
10
+ <p class="whitespace-nowrap text-lg font-bold underline">EV Stations</p>
11
+ <div class="mb-2 w-full text-xs">
12
+ <div class="w-fit">
13
+ <ToggleSwitch
14
+ id="ev-clusters"
15
+ label="Marker Clusters"
16
+ bind:value={evStationsMapIntegration.clustered}
17
+ />
18
+ </div>
19
+ </div>
20
+ <label for="ev-lvl2" class="flex gap-1 cursor-pointer select-none whitespace-nowrap">
21
+ <input
22
+ type="checkbox"
23
+ id="ev-lvl2"
24
+ bind:checked={evStationsMapIntegration.displayOptions.lvl2.value}
25
+ />
26
+ <img
27
+ class="w-5"
28
+ src={displayOptions.lvl2.icon!.image.src}
29
+ alt={displayOptions.lvl2.icon!.image.alt}
30
+ />
31
+ Level 2
32
+ </label>
33
+ <label for="ev-lvl3" class="flex gap-1 cursor-pointer select-none whitespace-nowrap">
34
+ <input
35
+ type="checkbox"
36
+ id="ev-lvl3"
37
+ bind:checked={evStationsMapIntegration.displayOptions.lvl3.value}
38
+ />
39
+ <img
40
+ class="w-5"
41
+ src={displayOptions.lvl3.icon!.image.src}
42
+ alt={displayOptions.lvl3.icon!.image.alt}
43
+ />
44
+ Level 3
45
+ </label>
46
+ </DisplayOption>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const EvStationsDisplayOptions: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type EvStationsDisplayOptions = InstanceType<typeof EvStationsDisplayOptions>;
18
+ export default EvStationsDisplayOptions;
@@ -0,0 +1,5 @@
1
+ export declare const accessDetailCodeTypes: Map<any, any>;
2
+ export declare const creditCardTypes: Map<any, any>;
3
+ export declare const evConnectorTypes: Map<any, any>;
4
+ export declare const evNetworkTypes: Map<any, any>;
5
+ export declare const facilityTypes: Map<any, any>;
@@ -1,4 +1,152 @@
1
- //#region src/lib/ev-stations/data-maps.ts
2
- var e = (/* @__PURE__ */ new Map()).set("CALL", "Call ahead").set("KEY_AFTER_HOURS", "Card key after hours").set("KEY_ALWAYS", "Card key at all times").set("CREDIT_CARD_AFTER_HOURS", "Credit card after hours").set("CREDIT_CARD_ALWAYS", "Credit card at all times").set("FLEET", "Fleet customers only").set("GOVERNMENT", "Government only").set("LIMITED_HOURS", "Limited hours").set("RESIDENTIAL", "Residential"), t = (/* @__PURE__ */ new Map()).set("all", "All").set("A", "American Express").set("CREDIT", "Credit").set("Debit", "Debit").set("D", "Discover").set("M", "MasterCard").set("V", "Visa").set("Cash", "Cash").set("Checks", "Check").set("ACCOUNT_BALANCE", "Account Balance").set("ALLIANCE", "Alliance AutoGas").set("ANDROID_PAY", "Android Pay").set("APPLE_PAY", "Apple Pay").set("ARI", "ARI").set("CleanEnergy", "Clean Energy").set("Comdata", "Comdata").set("CFN", "Commercial Fueling Network").set("EFS", "EFS").set("FleetOne", "Fleet One").set("FuelMan", "Fuelman").set("GasCard", "GASCARD").set("PacificPride", "Pacific Pride").set("PHH", "PHH").set("Proprietor", "Proprietor Fleet Card").set("Speedway", "Speedway").set("SuperPass", "SuperPass").set("TCH", "TCH").set("Tchek", "T-Chek T-Card").set("Trillium", "Trillium").set("Voyager", "Voyager").set("Wright_Exp", "WEX"), n = (/* @__PURE__ */ new Map()).set("NEMA1450", "NEMA 14-50").set("NEMA515", "NEMA 5-15").set("NEMA520", "NEMA 5-20").set("J1772", "J1772").set("J1772COMBO", "CCS").set("CHADEMO", "CHAdeMO").set("TESLA", "Tesla"), r = (/* @__PURE__ */ new Map()).set("AddÉnergie Technologies", "AddÉnergie").set("AMPUP", "AmpUp").set("BCHYDRO", "BC Hydro").set("Blink Network", "Blink").set("CHARGELAB", "ChargeLab").set("ChargePoint Network", "ChargePoint").set("Circuit électrique", "Circuit électrique").set("eCharge Network", "eCharge Network").set("Electrify America", "Electrify America").set("Electrify Canada", "Electrify Canada").set("EVCS", "EV Charging Solutions").set("EV Connect", "EV Connect").set("EVGATEWAY", "evGateway").set("eVgo Network", "EVgo").set("EVRANGE", "EV Range").set("FLO", "FLO").set("FPLEV", "FPL EVolution").set("FCN", "Francis").set("IVY", "Ivy").set("LIVINGSTON", "Livingston Energy Group").set("Non-Networked", "Non-Networked").set("OpConnect", "OpConnect").set("PETROCAN", "Petro-Canada").set("POWERFLEX", "PowerFlex").set("RIVIAN_ADVENTURE", "Rivian Adventure Network").set("RIVIAN_WAYPOINTS", "Rivian Waypoints").set("SemaCharge Network", "SemaConnect").set("SHELL_RECHARGE", "Shell Recharge").set("Sun Country Highway", "Sun Country Highway").set("SWTCH", "Swtch Energy").set("Tesla Destination", "Tesla Destination").set("Tesla", "Tesla Supercharger").set("UNIVERSAL", "Universal EV Chargers").set("Volta", "Volta").set("Webasto", "Webasto").set("ZEFNET", "ZEF Network"), i = (/* @__PURE__ */ new Map()).set("AIRPORT", "Airport").set("ARENA", "Arena").set("AUTO_REPAIR", "Auto Repair Shop").set("BANK", "Bank").set("B_AND_B", "B&B").set("BREWERY_DISTILLERY_WINERY", "Brewery/Distillery/Winery").set("CAMPGROUND", "Campground").set("CAR_DEALER", "Car Dealer").set("CARWASH", "Carwash").set("COLLEGE_CAMPUS", "College Campus").set("CONVENIENCE_STORE", "Convenience Store").set("CONVENTION_CENTER", "Convention Center").set("COOP", "Co-Op").set("FACTORY", "Factory").set("FED_GOV", "Federal Government").set("FIRE_STATION", "Fire Station").set("FLEET_GARAGE", "Fleet Garage").set("FUEL_RESELLER", "Fuel Reseller").set("GROCERY", "Grocery Store").set("HARDWARE_STORE", "Hardware Store").set("HOSPITAL", "Hospital").set("HOTEL", "Hotel").set("INN", "Inn").set("LIBRARY", "Library").set("MIL_BASE", "Military Base").set("MOTOR_POOL", "Motor Pool").set("MULTI_UNIT_DWELLING", "Multi-Family Housing").set("MUNI_GOV", "Municipal Government").set("MUSEUM", "Museum").set("NATL_PARK", "National Park").set("OFFICE_BLDG", "Office Building").set("OTHER", "Other").set("OTHER_ENTERTAINMENT", "Other Entertainment").set("PARK", "Park").set("PARKING_GARAGE", "Parking Garage").set("PARKING_LOT", "Parking Lot").set("PAY_GARAGE", "Pay-Parking Garage").set("PAY_LOT", "Pay-Parking Lot").set("PHARMACY", "Pharmacy").set("PLACE_OF_WORSHIP", "Place of Worship").set("PRISON", "Prison").set("PUBLIC", "Public").set("REC_SPORTS_FACILITY", "Recreational Sports Facility").set("REFINERY", "Refinery").set("RENTAL_CAR_RETURN", "Rental Car Return").set("RESEARCH_FACILITY", "Research Facility/Laboratory").set("RESTAURANT", "Restaurant").set("REST_STOP", "Rest Stop").set("RETAIL", "Retail").set("RV_PARK", "RV Park").set("SCHOOL", "School").set("GAS_STATION", "Service/Gas Station").set("SHOPPING_CENTER", "Shopping Center").set("SHOPPING_MALL", "Shopping Mall").set("STADIUM", "Stadium").set("STANDALONE_STATION", "Standalone Station").set("STATE_GOV", "State/Provincial Government").set("STORAGE", "Storage Facility").set("STREET_PARKING", "Street Parking").set("TNC", "Transportation Network Company").set("TRAVEL_CENTER", "Travel Center").set("TRUCK_STOP", "Truck Stop").set("UTILITY", "Utility").set("WORKPLACE", "Workplace");
3
- //#endregion
4
- export { e as accessDetailCodeTypes, t as creditCardTypes, n as evConnectorTypes, r as evNetworkTypes, i as facilityTypes };
1
+ export const accessDetailCodeTypes = new Map()
2
+ .set("CALL", "Call ahead")
3
+ .set("KEY_AFTER_HOURS", "Card key after hours")
4
+ .set("KEY_ALWAYS", "Card key at all times")
5
+ .set("CREDIT_CARD_AFTER_HOURS", "Credit card after hours")
6
+ .set("CREDIT_CARD_ALWAYS", "Credit card at all times")
7
+ .set("FLEET", "Fleet customers only")
8
+ .set("GOVERNMENT", "Government only")
9
+ .set("LIMITED_HOURS", "Limited hours")
10
+ .set("RESIDENTIAL", "Residential");
11
+ export const creditCardTypes = new Map()
12
+ .set("all", "All")
13
+ .set("A", "American Express")
14
+ .set("CREDIT", "Credit")
15
+ .set("Debit", "Debit")
16
+ .set("D", "Discover")
17
+ .set("M", "MasterCard")
18
+ .set("V", "Visa")
19
+ .set("Cash", "Cash")
20
+ .set("Checks", "Check")
21
+ .set("ACCOUNT_BALANCE", "Account Balance")
22
+ .set("ALLIANCE", "Alliance AutoGas")
23
+ .set("ANDROID_PAY", "Android Pay")
24
+ .set("APPLE_PAY", "Apple Pay")
25
+ .set("ARI", "ARI")
26
+ .set("CleanEnergy", "Clean Energy")
27
+ .set("Comdata", "Comdata")
28
+ .set("CFN", "Commercial Fueling Network")
29
+ .set("EFS", "EFS")
30
+ .set("FleetOne", "Fleet One")
31
+ .set("FuelMan", "Fuelman")
32
+ .set("GasCard", "GASCARD")
33
+ .set("PacificPride", "Pacific Pride")
34
+ .set("PHH", "PHH")
35
+ .set("Proprietor", "Proprietor Fleet Card")
36
+ .set("Speedway", "Speedway")
37
+ .set("SuperPass", "SuperPass")
38
+ .set("TCH", "TCH")
39
+ .set("Tchek", "T-Chek T-Card")
40
+ .set("Trillium", "Trillium")
41
+ .set("Voyager", "Voyager")
42
+ .set("Wright_Exp", "WEX");
43
+ export const evConnectorTypes = new Map()
44
+ .set("NEMA1450", "NEMA 14-50")
45
+ .set("NEMA515", "NEMA 5-15")
46
+ .set("NEMA520", "NEMA 5-20")
47
+ .set("J1772", "J1772")
48
+ .set("J1772COMBO", "CCS")
49
+ .set("CHADEMO", "CHAdeMO")
50
+ .set("TESLA", "Tesla");
51
+ export const evNetworkTypes = new Map()
52
+ .set("AddÉnergie Technologies", "AddÉnergie")
53
+ .set("AMPUP", "AmpUp")
54
+ .set("BCHYDRO", "BC Hydro")
55
+ .set("Blink Network", "Blink")
56
+ .set("CHARGELAB", "ChargeLab")
57
+ .set("ChargePoint Network", "ChargePoint")
58
+ .set("Circuit électrique", "Circuit électrique")
59
+ .set("eCharge Network", "eCharge Network")
60
+ .set("Electrify America", "Electrify America")
61
+ .set("Electrify Canada", "Electrify Canada")
62
+ .set("EVCS", "EV Charging Solutions")
63
+ .set("EV Connect", "EV Connect")
64
+ .set("EVGATEWAY", "evGateway")
65
+ .set("eVgo Network", "EVgo")
66
+ .set("EVRANGE", "EV Range")
67
+ .set("FLO", "FLO")
68
+ .set("FPLEV", "FPL EVolution")
69
+ .set("FCN", "Francis")
70
+ .set("IVY", "Ivy")
71
+ .set("LIVINGSTON", "Livingston Energy Group")
72
+ .set("Non-Networked", "Non-Networked")
73
+ .set("OpConnect", "OpConnect")
74
+ .set("PETROCAN", "Petro-Canada")
75
+ .set("POWERFLEX", "PowerFlex")
76
+ .set("RIVIAN_ADVENTURE", "Rivian Adventure Network")
77
+ .set("RIVIAN_WAYPOINTS", "Rivian Waypoints")
78
+ .set("SemaCharge Network", "SemaConnect")
79
+ .set("SHELL_RECHARGE", "Shell Recharge")
80
+ .set("Sun Country Highway", "Sun Country Highway")
81
+ .set("SWTCH", "Swtch Energy")
82
+ .set("Tesla Destination", "Tesla Destination")
83
+ .set("Tesla", "Tesla Supercharger")
84
+ .set("UNIVERSAL", "Universal EV Chargers")
85
+ .set("Volta", "Volta")
86
+ .set("Webasto", "Webasto")
87
+ .set("ZEFNET", "ZEF Network");
88
+ export const facilityTypes = new Map()
89
+ .set("AIRPORT", "Airport")
90
+ .set("ARENA", "Arena")
91
+ .set("AUTO_REPAIR", "Auto Repair Shop")
92
+ .set("BANK", "Bank")
93
+ .set("B_AND_B", "B&B")
94
+ .set("BREWERY_DISTILLERY_WINERY", "Brewery/Distillery/Winery")
95
+ .set("CAMPGROUND", "Campground")
96
+ .set("CAR_DEALER", "Car Dealer")
97
+ .set("CARWASH", "Carwash")
98
+ .set("COLLEGE_CAMPUS", "College Campus")
99
+ .set("CONVENIENCE_STORE", "Convenience Store")
100
+ .set("CONVENTION_CENTER", "Convention Center")
101
+ .set("COOP", "Co-Op")
102
+ .set("FACTORY", "Factory")
103
+ .set("FED_GOV", "Federal Government")
104
+ .set("FIRE_STATION", "Fire Station")
105
+ .set("FLEET_GARAGE", "Fleet Garage")
106
+ .set("FUEL_RESELLER", "Fuel Reseller")
107
+ .set("GROCERY", "Grocery Store")
108
+ .set("HARDWARE_STORE", "Hardware Store")
109
+ .set("HOSPITAL", "Hospital")
110
+ .set("HOTEL", "Hotel")
111
+ .set("INN", "Inn")
112
+ .set("LIBRARY", "Library")
113
+ .set("MIL_BASE", "Military Base")
114
+ .set("MOTOR_POOL", "Motor Pool")
115
+ .set("MULTI_UNIT_DWELLING", "Multi-Family Housing")
116
+ .set("MUNI_GOV", "Municipal Government")
117
+ .set("MUSEUM", "Museum")
118
+ .set("NATL_PARK", "National Park")
119
+ .set("OFFICE_BLDG", "Office Building")
120
+ .set("OTHER", "Other")
121
+ .set("OTHER_ENTERTAINMENT", "Other Entertainment")
122
+ .set("PARK", "Park")
123
+ .set("PARKING_GARAGE", "Parking Garage")
124
+ .set("PARKING_LOT", "Parking Lot")
125
+ .set("PAY_GARAGE", "Pay-Parking Garage")
126
+ .set("PAY_LOT", "Pay-Parking Lot")
127
+ .set("PHARMACY", "Pharmacy")
128
+ .set("PLACE_OF_WORSHIP", "Place of Worship")
129
+ .set("PRISON", "Prison")
130
+ .set("PUBLIC", "Public")
131
+ .set("REC_SPORTS_FACILITY", "Recreational Sports Facility")
132
+ .set("REFINERY", "Refinery")
133
+ .set("RENTAL_CAR_RETURN", "Rental Car Return")
134
+ .set("RESEARCH_FACILITY", "Research Facility/Laboratory")
135
+ .set("RESTAURANT", "Restaurant")
136
+ .set("REST_STOP", "Rest Stop")
137
+ .set("RETAIL", "Retail")
138
+ .set("RV_PARK", "RV Park")
139
+ .set("SCHOOL", "School")
140
+ .set("GAS_STATION", "Service/Gas Station")
141
+ .set("SHOPPING_CENTER", "Shopping Center")
142
+ .set("SHOPPING_MALL", "Shopping Mall")
143
+ .set("STADIUM", "Stadium")
144
+ .set("STANDALONE_STATION", "Standalone Station")
145
+ .set("STATE_GOV", "State/Provincial Government")
146
+ .set("STORAGE", "Storage Facility")
147
+ .set("STREET_PARKING", "Street Parking")
148
+ .set("TNC", "Transportation Network Company")
149
+ .set("TRAVEL_CENTER", "Travel Center")
150
+ .set("TRUCK_STOP", "Truck Stop")
151
+ .set("UTILITY", "Utility")
152
+ .set("WORKPLACE", "Workplace");
@@ -0,0 +1,16 @@
1
+ import { MapIconManager } from "../map/integrations/map-icon-manager.ts";
2
+ export declare const EV_STATION_LEVELS: {
3
+ readonly lvl2: {
4
+ readonly bg: "rgb(62, 142, 208)";
5
+ readonly border: "rgb(42, 114, 174)";
6
+ };
7
+ readonly lvl3: {
8
+ readonly bg: "rgb(53, 73, 182)";
9
+ readonly border: "rgb(42, 58, 146)";
10
+ };
11
+ };
12
+ export type EvStationLevel = keyof typeof EV_STATION_LEVELS;
13
+ export declare function evStationIcon(bg: string, border: string): string;
14
+ export declare class EvStationIconManager extends MapIconManager {
15
+ constructor();
16
+ }
@@ -1,32 +1,26 @@
1
- import { asDataURI as e } from "../map/icons.js";
2
- import { MapIconManager as t } from "../map/integrations/map-icon-manager.js";
3
- //#region src/lib/ev-stations/ev-station-icons.ts
4
- var n = "m340-200 100-160h-60v-120L280-320h60v120ZM240-560h240v-200H240v200Zm0 360h240v-280H240v280Zm-80 80v-640q0-33 23.5-56.5T240-840h240q33 0 56.5 23.5T560-760v280h50q29 0 49.5 20.5T680-410v185q0 17 14 31t31 14q18 0 31.5-14t13.5-31v-375h-10q-17 0-28.5-11.5T720-640v-80h20v-60h40v60h40v-60h40v60h20v80q0 17-11.5 28.5T840-600h-10v375q0 42-30.5 73.5T725-120q-43 0-74-31.5T620-225v-185q0-5-2.5-7.5T610-420h-50v300H160Zm320-80H240h240Z", r = {
5
- lvl2: {
6
- bg: "rgb(62, 142, 208)",
7
- border: "rgb(42, 114, 174)"
8
- },
9
- lvl3: {
10
- bg: "rgb(53, 73, 182)",
11
- border: "rgb(42, 58, 146)"
12
- }
1
+ import { MapIconManager } from "../map/integrations/map-icon-manager.ts";
2
+ import { asDataURI } from "../map/icons.ts";
3
+ const EV_STATION_PATH = "m340-200 100-160h-60v-120L280-320h60v120ZM240-560h240v-200H240v200Zm0 360h240v-280H240v280Zm-80 80v-640q0-33 23.5-56.5T240-840h240q33 0 56.5 23.5T560-760v280h50q29 0 49.5 20.5T680-410v185q0 17 14 31t31 14q18 0 31.5-14t13.5-31v-375h-10q-17 0-28.5-11.5T720-640v-80h20v-60h40v60h40v-60h40v60h20v80q0 17-11.5 28.5T840-600h-10v375q0 42-30.5 73.5T725-120q-43 0-74-31.5T620-225v-185q0-5-2.5-7.5T610-420h-50v300H160Zm320-80H240h240Z";
4
+ export const EV_STATION_LEVELS = {
5
+ lvl2: { bg: "rgb(62, 142, 208)", border: "rgb(42, 114, 174)" },
6
+ lvl3: { bg: "rgb(53, 73, 182)", border: "rgb(42, 58, 146)" }
13
7
  };
14
- function i(e, t) {
15
- return `<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
16
- <circle cx="16" cy="16" r="14" fill="${e}" stroke="${t}" stroke-width="2"/>
8
+ export function evStationIcon(bg, border) {
9
+ return `<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
10
+ <circle cx="16" cy="16" r="14" fill="${bg}" stroke="${border}" stroke-width="2"/>
17
11
  <svg x="6" y="6" width="20" height="20" viewBox="0 -960 960 960">
18
- <path d="${n}" fill="white"/>
12
+ <path d="${EV_STATION_PATH}" fill="white"/>
19
13
  </svg>
20
14
  </svg>`;
21
15
  }
22
- var a = class extends t {
23
- constructor() {
24
- super();
25
- for (let [t, n] of Object.entries(r)) {
26
- let r = `ev-station-${t}`, a = new Image(32, 32);
27
- a.src = e(i(n.bg, n.border)), this.register(r, a);
28
- }
29
- }
30
- };
31
- //#endregion
32
- export { r as EV_STATION_LEVELS, a as EvStationIconManager, i as evStationIcon };
16
+ export class EvStationIconManager extends MapIconManager {
17
+ constructor() {
18
+ super();
19
+ for (const [level, colors] of Object.entries(EV_STATION_LEVELS)) {
20
+ const id = `ev-station-${level}`;
21
+ const icon = new Image(32, 32);
22
+ icon.src = asDataURI(evStationIcon(colors.bg, colors.border));
23
+ this.register(id, icon);
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,19 @@
1
+ import { type ClickHandler } from "../map/integrations/click-manager.ts";
2
+ import { TooltipManager } from "../map/integrations/tooltip.svelte.ts";
3
+ import type { EvStationMapFeature } from "./types.ts";
4
+ export interface EvStationsClusterContext {
5
+ referenceId: string;
6
+ featuresByLevel: Record<string, EvStationMapFeature[]>;
7
+ beforeLayer?: string;
8
+ tooltipManager: TooltipManager;
9
+ }
10
+ export declare class EvStationsClusterRenderer {
11
+ private ctx;
12
+ private _levels;
13
+ constructor(ctx: EvStationsClusterContext);
14
+ apply(stationClickHandler: ClickHandler): void;
15
+ remove(): void;
16
+ get unclusteredLayerIds(): string[];
17
+ syncFeatures(): void;
18
+ private makeClusterClickHandler;
19
+ }