@sjvair/monitor-map 3.0.2 → 3.0.4

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 (324) 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 -0
  109. package/dist/lib/ev-stations/ev-station-icons.d.ts +16 -0
  110. package/dist/lib/ev-stations/ev-station-icons.js +26 -0
  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 +131 -0
  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 +207 -0
  115. package/dist/lib/ev-stations/ev-stations.svelte.d.ts +9 -0
  116. package/dist/lib/ev-stations/ev-stations.svelte.js +55 -0
  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 +458 -0
  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 -19
  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 -43
  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 +33 -27
  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 -67
  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 +13 -0
  193. package/dist/lib/routes.d.ts +2 -0
  194. package/dist/lib/routes.js +11 -0
  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 +80 -0
  199. package/dist/lib/utils.d.ts +13 -0
  200. package/dist/lib/utils.js +11 -7
  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 +45 -42
  206. package/src/lib/LoadScreen.svelte +5 -5
  207. package/src/lib/MainMapView.svelte +1 -0
  208. package/src/lib/MapLegend.svelte +15 -0
  209. package/src/lib/MonitorDetailPanel.svelte +152 -0
  210. package/src/lib/MonitorMapLayout.svelte +193 -0
  211. package/src/lib/components/MapLayersDisplayOptions.svelte +6 -2
  212. package/src/lib/hms/components/HMSFireLegend.svelte +21 -0
  213. package/src/lib/hms/hms.svelte.ts +8 -9
  214. package/src/lib/index.ts +52 -0
  215. package/src/lib/map/Map.svelte +1 -0
  216. package/src/lib/map/Menu.svelte +4 -7
  217. package/src/lib/map/integrations/map-icon-manager.ts +4 -1
  218. package/src/lib/monitors/monitors.svelte.ts +1 -3
  219. package/src/lib/router-context.ts +48 -0
  220. package/src/lib/routes.ts +13 -0
  221. package/src/lib/search/Search.svelte +189 -0
  222. package/src/lib/search/service.ts +101 -0
  223. package/src/lib/utils.ts +11 -0
  224. package/dist/lib/LoadScreen.js +0 -73
  225. package/dist/lib/assets/icons/adjustment-horizontal.js +0 -4
  226. package/dist/lib/collocation-sites/CollocationTooltip.js +0 -105
  227. package/dist/lib/components/DataBox.js +0 -30
  228. package/dist/lib/components/DisplayOption.js +0 -10
  229. package/dist/lib/components/MapLayersDisplayOptions.js +0 -78
  230. package/dist/lib/components/SegmentedControl.js +0 -37
  231. package/dist/lib/components/ToggleSwitch.js +0 -17
  232. package/dist/lib/components/ui/button/button.js +0 -34
  233. package/dist/lib/components/ui/range-calendar/range-calendar-caption.js +0 -79
  234. package/dist/lib/components/ui/range-calendar/range-calendar-cell.js +0 -34
  235. package/dist/lib/components/ui/range-calendar/range-calendar-day.js +0 -34
  236. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.js +0 -26
  237. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.js +0 -26
  238. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.js +0 -34
  239. package/dist/lib/components/ui/range-calendar/range-calendar-grid.js +0 -34
  240. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.js +0 -34
  241. package/dist/lib/components/ui/range-calendar/range-calendar-header.js +0 -34
  242. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.js +0 -61
  243. package/dist/lib/components/ui/range-calendar/range-calendar-month.js +0 -25
  244. package/dist/lib/components/ui/range-calendar/range-calendar-months.js +0 -25
  245. package/dist/lib/components/ui/range-calendar/range-calendar-nav.js +0 -25
  246. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.js +0 -57
  247. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.js +0 -57
  248. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.js +0 -59
  249. package/dist/lib/components/ui/range-calendar/range-calendar.js +0 -272
  250. package/dist/lib/data-chart/DataChart.js +0 -142
  251. package/dist/lib/map/Map.js +0 -14
  252. package/dist/lib/map/MapStyleDisplayOptions.js +0 -43
  253. package/dist/lib/map/Menu.js +0 -45
  254. package/dist/lib/monitors/components/MonitorClusterTooltip.js +0 -83
  255. package/dist/lib/monitors/components/MonitorSubscriptionManager.js +0 -104
  256. package/dist/lib/monitors/components/MonitorTooltip.js +0 -59
  257. package/dist/lib/monitors/components/MonitorWidgetModal.js +0 -40
  258. package/dist/lib/monitors/components/MonitorsDisplayOptions.js +0 -76
  259. package/dist/lib/node_modules/@internationalized/date/dist/private/CalendarDate.js +0 -122
  260. package/dist/lib/node_modules/@internationalized/date/dist/private/DateFormatter.js +0 -84
  261. package/dist/lib/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js +0 -91
  262. package/dist/lib/node_modules/@internationalized/date/dist/private/conversion.js +0 -104
  263. package/dist/lib/node_modules/@internationalized/date/dist/private/manipulation.js +0 -159
  264. package/dist/lib/node_modules/@internationalized/date/dist/private/queries.js +0 -32
  265. package/dist/lib/node_modules/@internationalized/date/dist/private/string.js +0 -37
  266. package/dist/lib/node_modules/@internationalized/date/dist/private/utils.js +0 -6
  267. package/dist/lib/node_modules/clsx/dist/clsx.js +0 -16
  268. package/dist/lib/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -1723
  269. package/dist/lib/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +0 -70
  270. package/dist/lib/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +0 -166
  271. package/dist/lib/node_modules/tailwind-variants/dist/index.js +0 -19
  272. package/dist/lib/node_modules/uplot/dist/uPlot.esm.js +0 -2147
  273. package/dist/lib/sjvair-air.avif +0 -0
  274. package/dist/lib/sjvair-air.png +0 -0
  275. package/dist/lib/sjvair-air.webp +0 -0
  276. package/dist/lib/sjvair-air2.avif +0 -0
  277. package/dist/lib/sjvair-air2.png +0 -0
  278. package/dist/lib/sjvair-air2.webp +0 -0
  279. package/dist/lib/sjvair-icon.avif +0 -0
  280. package/dist/lib/sjvair-icon.png +0 -0
  281. package/dist/lib/sjvair-icon.webp +0 -0
  282. package/dist/lib/sjvair-icon2.avif +0 -0
  283. package/dist/lib/sjvair-icon2.png +0 -0
  284. package/dist/lib/sjvair-icon2.webp +0 -0
  285. package/dist/lib/sjvair-sjv.avif +0 -0
  286. package/dist/lib/sjvair-sjv.png +0 -0
  287. package/dist/lib/sjvair-sjv.webp +0 -0
  288. package/dist/lib/sjvair-sjv2.avif +0 -0
  289. package/dist/lib/sjvair-sjv2.png +0 -0
  290. package/dist/lib/sjvair-sjv2.webp +0 -0
  291. package/dist/lib/src/MapView.js +0 -7
  292. package/dist/lib/src/MonitorDetailPanel.js +0 -169
  293. package/dist/lib/src/router.js +0 -9
  294. package/dist/monitor-map/MonitorDetailPanel.css +0 -1
  295. package/dist/monitor-map/assets/MonitorDetailPanel-BU_pXZjp.js +0 -15
  296. package/dist/monitor-map/assets/validate-routes-CgbRa8fT.js +0 -1
  297. package/dist/monitor-map/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  298. package/dist/monitor-map/inter-cyrillic-wght-normal.woff2 +0 -0
  299. package/dist/monitor-map/inter-greek-ext-wght-normal.woff2 +0 -0
  300. package/dist/monitor-map/inter-greek-wght-normal.woff2 +0 -0
  301. package/dist/monitor-map/inter-latin-ext-wght-normal.woff2 +0 -0
  302. package/dist/monitor-map/inter-latin-wght-normal.woff2 +0 -0
  303. package/dist/monitor-map/inter-vietnamese-wght-normal.woff2 +0 -0
  304. package/dist/monitor-map/lungs.svg +0 -99
  305. package/dist/monitor-map/sjvair-air.avif +0 -0
  306. package/dist/monitor-map/sjvair-air.png +0 -0
  307. package/dist/monitor-map/sjvair-air.webp +0 -0
  308. package/dist/monitor-map/sjvair-air2.avif +0 -0
  309. package/dist/monitor-map/sjvair-air2.png +0 -0
  310. package/dist/monitor-map/sjvair-air2.webp +0 -0
  311. package/dist/monitor-map/sjvair-icon.avif +0 -0
  312. package/dist/monitor-map/sjvair-icon.png +0 -0
  313. package/dist/monitor-map/sjvair-icon.webp +0 -0
  314. package/dist/monitor-map/sjvair-icon2.avif +0 -0
  315. package/dist/monitor-map/sjvair-icon2.png +0 -0
  316. package/dist/monitor-map/sjvair-icon2.webp +0 -0
  317. package/dist/monitor-map/sjvair-sjv.avif +0 -0
  318. package/dist/monitor-map/sjvair-sjv.png +0 -0
  319. package/dist/monitor-map/sjvair-sjv.webp +0 -0
  320. package/dist/monitor-map/sjvair-sjv2.avif +0 -0
  321. package/dist/monitor-map/sjvair-sjv2.png +0 -0
  322. package/dist/monitor-map/sjvair-sjv2.webp +0 -0
  323. package/dist/monitor-map/sjvairMonitorMap.css +0 -1
  324. package/dist/monitor-map/sjvairMonitorMap.js +0 -4042
@@ -0,0 +1,207 @@
1
+ import { untrack } from "svelte";
2
+ import { mapManager } from "../map/map.svelte.ts";
3
+ import { clickManager } from "../map/integrations/click-manager.ts";
4
+ import { MapIconLayerIntegration } from "../map/integrations/map-geojson-integration.svelte.ts";
5
+ import { MapDisplayOption } from "../map/integrations/map-display-option.svelte.ts";
6
+ import { TooltipManager } from "../map/integrations/tooltip.svelte.ts";
7
+ import { mountClickPopup } from "../map/utils.ts";
8
+ import { evStationsManager } from "./ev-stations.svelte.ts";
9
+ import { EvStationIconManager } from "./ev-station-icons.ts";
10
+ import { EvStationsClusterRenderer } from "./ev-stations-cluster-renderer.ts";
11
+ import EvStationTooltip from "./components/EvStationTooltip.svelte";
12
+ class EvStationsMapIntegration extends MapIconLayerIntegration {
13
+ referenceId = "ev-stations";
14
+ enabled = $state(true);
15
+ clustered = $state(true);
16
+ icons = new EvStationIconManager();
17
+ tooltipManager = new TooltipManager();
18
+ renderer = new EvStationsClusterRenderer(this);
19
+ currentPopup = null;
20
+ displayOptions = $derived.by(() => ({
21
+ lvl2: new MapDisplayOption("Level 2", false, this.icons.get("ev-station-lvl2")),
22
+ lvl3: new MapDisplayOption("Level 3", false, this.icons.get("ev-station-lvl3"))
23
+ }));
24
+ features = $derived.by(() => {
25
+ const result = [];
26
+ if (evStationsManager.lvl2Stations) {
27
+ for (const station of evStationsManager.lvl2Stations) {
28
+ result.push(toFeature(station, "lvl2"));
29
+ }
30
+ }
31
+ if (evStationsManager.lvl3Stations) {
32
+ for (const station of evStationsManager.lvl3Stations) {
33
+ result.push(toFeature(station, "lvl3"));
34
+ }
35
+ }
36
+ return result;
37
+ });
38
+ featuresByLevel = $derived.by(() => {
39
+ const byLevel = {};
40
+ for (const feature of this.features) {
41
+ const level = feature.properties.level;
42
+ if (level === "lvl2" && !this.displayOptions.lvl2.value)
43
+ continue;
44
+ if (level === "lvl3" && !this.displayOptions.lvl3.value)
45
+ continue;
46
+ const arr = byLevel[level] ?? [];
47
+ arr.push(feature);
48
+ byLevel[level] = arr;
49
+ }
50
+ return byLevel;
51
+ });
52
+ filters = $derived.by(() => {
53
+ const levels = [];
54
+ if (this.displayOptions.lvl2.value)
55
+ levels.push("lvl2");
56
+ if (this.displayOptions.lvl3.value)
57
+ levels.push("lvl3");
58
+ if (levels.length === 0)
59
+ return ["==", ["get", "level"], "none"];
60
+ if (levels.length === 2)
61
+ return ["boolean", true];
62
+ return ["==", ["get", "level"], levels[0]];
63
+ });
64
+ handleStationClick = (features, evt) => {
65
+ this.currentPopup?.remove();
66
+ const feature = features[0];
67
+ if (!feature)
68
+ return;
69
+ this.currentPopup = mountClickPopup(EvStationTooltip, { feature }, evt.lngLat);
70
+ this.currentPopup.addTo(mapManager.map);
71
+ };
72
+ get mapLayer() {
73
+ return {
74
+ id: this.referenceId,
75
+ type: "symbol",
76
+ source: this.referenceId,
77
+ filter: this.filters,
78
+ layout: {
79
+ "icon-allow-overlap": true,
80
+ "icon-ignore-placement": true,
81
+ "icon-image": ["get", "icon"],
82
+ "icon-size": 1
83
+ },
84
+ paint: {}
85
+ };
86
+ }
87
+ get mapSource() {
88
+ return {
89
+ type: "geojson",
90
+ promoteId: "id",
91
+ data: {
92
+ type: "FeatureCollection",
93
+ features: this.features
94
+ }
95
+ };
96
+ }
97
+ constructor() {
98
+ super();
99
+ $effect.root(() => {
100
+ // Lazy-fetch level data when integration is enabled and level is toggled on
101
+ $effect(() => {
102
+ if (this.displayOptions.lvl2.value && evStationsManager.lvl2Stations === undefined) {
103
+ evStationsManager.loadLvl2Stations();
104
+ }
105
+ });
106
+ $effect(() => {
107
+ if (this.displayOptions.lvl3.value && evStationsManager.lvl3Stations === undefined) {
108
+ evStationsManager.loadLvl3Stations();
109
+ }
110
+ });
111
+ // Push filter changes to the unclustered layer
112
+ $effect(() => {
113
+ const filter = this.filters;
114
+ if (!mapManager.map || this.clustered)
115
+ return;
116
+ if (mapManager.map.getLayer(this.referenceId)) {
117
+ mapManager.map.setFilter(this.referenceId, filter);
118
+ }
119
+ });
120
+ // Sync unclustered source when features change
121
+ $effect(() => {
122
+ const features = this.features;
123
+ if (!mapManager.map || this.clustered)
124
+ return;
125
+ mapManager.setDataSource(this.referenceId, features);
126
+ });
127
+ // Sync clustered sources when featuresByLevel changes
128
+ $effect(() => {
129
+ void this.featuresByLevel;
130
+ if (!mapManager.map || !this.clustered)
131
+ return;
132
+ this.renderer.syncFeatures();
133
+ });
134
+ // Re-apply when clustered mode switches or data first arrives
135
+ $effect(() => {
136
+ void this.clustered;
137
+ const hasFeatures = Object.keys(this.featuresByLevel).length > 0;
138
+ if (!untrack(() => mapManager.map) || !hasFeatures)
139
+ return;
140
+ untrack(() => this.apply());
141
+ });
142
+ });
143
+ }
144
+ apply() {
145
+ if (!mapManager.map)
146
+ return;
147
+ if (this.clustered) {
148
+ if (mapManager.map.getLayer(this.referenceId))
149
+ mapManager.map.removeLayer(this.referenceId);
150
+ if (mapManager.map.getSource(this.referenceId))
151
+ mapManager.map.removeSource(this.referenceId);
152
+ clickManager.unregister([this.referenceId]);
153
+ this.tooltipManager.disable();
154
+ this.renderer.remove();
155
+ this.icons.loadIcons().then(() => {
156
+ this.renderer.apply(this.handleStationClick);
157
+ this.tooltipManager.enable();
158
+ });
159
+ }
160
+ else {
161
+ this.renderer.remove();
162
+ this.tooltipManager.disable();
163
+ clickManager.unregister([this.referenceId]);
164
+ super.apply();
165
+ this.icons.loadIcons().then(() => {
166
+ clickManager.register([this.referenceId], this.handleStationClick);
167
+ this.tooltipManager.enable();
168
+ });
169
+ }
170
+ }
171
+ remove() {
172
+ clickManager.unregister([this.referenceId]);
173
+ clickManager.unregister(this.renderer.unclusteredLayerIds);
174
+ this.renderer.remove();
175
+ this.currentPopup?.remove();
176
+ this.currentPopup = null;
177
+ super.remove();
178
+ }
179
+ }
180
+ function toFeature(station, level) {
181
+ return {
182
+ type: "Feature",
183
+ properties: {
184
+ icon: `ev-station-${level}`,
185
+ id: station.id,
186
+ level,
187
+ station_name: station.station_name ?? "",
188
+ facility_type: station.facility_type ?? "",
189
+ ev_network: station.ev_network ?? "",
190
+ station_phone: station.station_phone ?? "",
191
+ street_address: station.street_address ?? "",
192
+ city: station.city ?? "",
193
+ state: station.state ?? "",
194
+ zip: station.zip ?? "",
195
+ access_days_time: station.access_days_time ?? "",
196
+ access_detail_code: station.access_detail_code ?? "",
197
+ cards_accepted: station.cards_accepted ?? null,
198
+ ev_pricing: station.ev_pricing ?? "",
199
+ ev_connector_types: JSON.stringify(station.ev_connector_types ?? [])
200
+ },
201
+ geometry: {
202
+ type: "Point",
203
+ coordinates: [station.longitude, station.latitude]
204
+ }
205
+ };
206
+ }
207
+ export const evStationsMapIntegration = new EvStationsMapIntegration();
@@ -0,0 +1,9 @@
1
+ import type { EvStation } from "./types.ts";
2
+ declare class EvStationsManager {
3
+ lvl2Stations: Array<EvStation> | undefined;
4
+ lvl3Stations: Array<EvStation> | undefined;
5
+ loadLvl3Stations(): Promise<void>;
6
+ loadLvl2Stations(): Promise<void>;
7
+ }
8
+ export declare const evStationsManager: EvStationsManager;
9
+ export type { EvStationsManager };
@@ -0,0 +1,55 @@
1
+ import { accessDetailCodeTypes, creditCardTypes, evConnectorTypes, evNetworkTypes, facilityTypes } from "./data-maps.ts";
2
+ import * as ZipCodes from "./zip-codes.ts";
3
+ class EvStationsManager {
4
+ lvl2Stations = $state();
5
+ lvl3Stations = $state();
6
+ async loadLvl3Stations() {
7
+ this.lvl3Stations = await fetchEvStations("dc_fast");
8
+ }
9
+ async loadLvl2Stations() {
10
+ this.lvl2Stations = await fetchEvStations("2");
11
+ }
12
+ }
13
+ const zipCodes = Object.values(ZipCodes)
14
+ .reduce((prev, curr) => prev.concat(curr))
15
+ .join(",");
16
+ async function fetchEvStations(chargingLevel) {
17
+ const url = new URL(`https://developer.nlr.gov/api/alt-fuel-stations/v1.json`);
18
+ url.searchParams.set("fuel_type", "ELEC");
19
+ url.searchParams.set("state", "CA");
20
+ url.searchParams.set("status", "E");
21
+ url.searchParams.set("access", "public");
22
+ url.searchParams.set("ev_charging_level", chargingLevel);
23
+ url.searchParams.set("zip", zipCodes);
24
+ url.searchParams.set("api_key", import.meta.env.VITE_NREL_KEY);
25
+ return await fetch(url)
26
+ .then(async (res) => await res.json())
27
+ .then((data) => {
28
+ const fuelStations = data.fuel_stations;
29
+ return (fuelStations
30
+ .map((station) => {
31
+ if (station.access_detail_code) {
32
+ station.access_detail_code = accessDetailCodeTypes.get(station.access_detail_code);
33
+ }
34
+ if (station.cards_accepted) {
35
+ station.cards_accepted = station.cards_accepted
36
+ .split(" ")
37
+ .map((c) => creditCardTypes.get(c))
38
+ .join(", ");
39
+ }
40
+ if (station.ev_connector_types && station.ev_connector_types.length) {
41
+ station.ev_connector_types = station.ev_connector_types.map((t) => evConnectorTypes.get(t));
42
+ }
43
+ if (station.ev_network) {
44
+ station.ev_network = evNetworkTypes.get(station.ev_network);
45
+ }
46
+ if (station.facility_type) {
47
+ station.facility_type = facilityTypes.get(station.facility_type);
48
+ }
49
+ return station;
50
+ })
51
+ // remove stations with invalid coordinates
52
+ .filter((station) => station.id !== 226154));
53
+ });
54
+ }
55
+ export const evStationsManager = new EvStationsManager();
@@ -0,0 +1,53 @@
1
+ import type { Feature, Geometry } from "geojson";
2
+ import type { MapGeoJSONFeature } from "@maptiler/sdk";
3
+ export interface EvStation {
4
+ access_code: string;
5
+ access_days_time: string;
6
+ access_detail_code: string;
7
+ cards_accepted: null | string;
8
+ date_last_confirmed: string;
9
+ groups_with_access_code: string;
10
+ id: number;
11
+ station_name: string;
12
+ station_phone: string;
13
+ updated_at: string;
14
+ facility_type: string;
15
+ latitude: number;
16
+ longitude: number;
17
+ city: string;
18
+ state: string;
19
+ street_address: string;
20
+ zip: string;
21
+ country: string;
22
+ ev_connector_types: Array<string>;
23
+ ev_dc_fast_num: number;
24
+ ev_network: string;
25
+ ev_pricing: string;
26
+ }
27
+ export interface EvStationMarkerProperties {
28
+ icon: string;
29
+ id: number;
30
+ level: "lvl2" | "lvl3";
31
+ station_name: string;
32
+ facility_type: string;
33
+ ev_network: string;
34
+ station_phone: string;
35
+ street_address: string;
36
+ city: string;
37
+ state: string;
38
+ zip: string;
39
+ access_days_time: string;
40
+ access_detail_code: string;
41
+ cards_accepted: string | null;
42
+ ev_pricing: string;
43
+ ev_connector_types: string;
44
+ }
45
+ export type EvStationMapFeature = Feature<Geometry, EvStationMarkerProperties>;
46
+ export interface EvStationClusterMapFeature extends MapGeoJSONFeature {
47
+ properties: {
48
+ cluster: true;
49
+ cluster_id: number;
50
+ point_count: number;
51
+ point_count_abbreviated: string | number;
52
+ };
53
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export declare const SanJoaquin: string[];
2
+ export declare const Stanislaus: string[];
3
+ export declare const Merced: string[];
4
+ export declare const Madera: string[];
5
+ export declare const Fresno: string[];
6
+ export declare const Kings: string[];
7
+ export declare const Tulare: string[];
8
+ export declare const Kern: string[];
9
+ export declare const Calaveras: string[];
10
+ export declare const Tuolumne: string[];
11
+ export declare const Mono: string[];
12
+ export declare const Mariposa: string[];
13
+ export declare const Inyo: string[];