@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
@@ -1,78 +1,227 @@
1
- import * as e from "svelte/internal/client";
2
- import { SvelteMap as t } from "svelte/reactivity";
3
- import { featureCollection as n, point as r } from "@turf/helpers";
4
- import { getHMSFire as i, getHMSSmoke as a } from "@sjvair/sdk/hms";
5
- import o from "@turf/clusters-dbscan";
6
- //#region src/lib/hms/hms.svelte.ts
7
- var s = 2, c = 1, l = class {
8
- #e = e.state();
9
- get smoke() {
10
- return e.get(this.#e);
11
- }
12
- set smoke(t) {
13
- e.set(this.#e, t, !0);
14
- }
15
- #t = e.state();
16
- get fire() {
17
- return e.get(this.#t);
18
- }
19
- set fire(t) {
20
- e.set(this.#t, t, !0);
21
- }
22
- #n = e.state();
23
- get fireGroups() {
24
- return e.get(this.#n);
25
- }
26
- set fireGroups(t) {
27
- e.set(this.#n, t, !0);
28
- }
29
- async init() {
30
- await Promise.allSettled([this.loadSmoke(), this.loadFire()]);
31
- }
32
- async loadSmoke() {
33
- this.smoke = await a();
34
- }
35
- async loadFire() {
36
- try {
37
- let e = u((await i()).filter((e) => e.frp !== null));
38
- this.fire = e, this.fireGroups = d(e);
39
- } catch (e) {
40
- console.error("HMS fire load failed:", e);
41
- }
42
- }
43
- };
44
- function u(e) {
45
- let t = /* @__PURE__ */ new Map();
46
- for (let n of e) {
47
- let [e, r] = n.geometry.coordinates, i = `${e},${r}`, a = t.get(i);
48
- (!a || n.timestamp > a.timestamp) && t.set(i, n);
49
- }
50
- return Array.from(t.values());
1
+ import { getHMSFire, getHMSSmoke } from "@sjvair/sdk/hms";
2
+ import clustersDbscan from "@turf/clusters-dbscan";
3
+ import { featureCollection, point } from "@turf/helpers";
4
+ const HMS_FIRE_DBSCAN_EPSILON = 2;
5
+ const HMS_FIRE_DBSCAN_MIN_POINTS = 1;
6
+ class HmsManager {
7
+ smoke = $state();
8
+ fire = $state();
9
+ fireGroups = $state();
10
+ async init() {
11
+ await Promise.allSettled([this.loadSmoke(), this.loadFire()]);
12
+ }
13
+ async loadSmoke() {
14
+ this.smoke = await getHMSSmoke();
15
+ }
16
+ async loadFire() {
17
+ try {
18
+ const raw = await getHMSFire();
19
+ const filtered = raw.filter((d) => d.frp !== null);
20
+ const deduped = deduplicateByCoordinates(filtered);
21
+ this.fire = deduped;
22
+ this.fireGroups = computeFireGroups(deduped);
23
+ }
24
+ catch (err) {
25
+ console.error("HMS fire load failed:", err);
26
+ }
27
+ }
51
28
  }
52
- function d(e) {
53
- if (!e.length) return [];
54
- let i = o(n(e.map((e) => r(e.geometry.coordinates, {
55
- fireId: e.id,
56
- frp: e.frp
57
- }))), s, {
58
- minPoints: c,
59
- units: "kilometers"
60
- }), a = new t();
61
- for (let e of i.features) {
62
- let t = e.properties, n = t.dbscan === "noise" ? `noise-${t.fireId}` : `cluster-${t.cluster}`, [r, i] = e.geometry.coordinates, o = a.get(n) ?? {
63
- frps: [],
64
- lngs: [],
65
- lats: []
66
- };
67
- o.frps.push(t.frp), o.lngs.push(r), o.lats.push(i), a.set(n, o);
68
- }
69
- return Array.from(a.entries()).map(([e, { frps: t, lngs: n, lats: r }]) => ({
70
- id: `hms-fire-group-${e}`,
71
- coordinates: [n.reduce((e, t) => e + t, 0) / n.length, r.reduce((e, t) => e + t, 0) / r.length],
72
- avgFrp: t.reduce((e, t) => e + t, 0) / t.length,
73
- count: t.length
74
- }));
29
+ function deduplicateByCoordinates(fires) {
30
+ const latest = {};
31
+ for (const fire of fires) {
32
+ const [lng, lat] = fire.geometry.coordinates;
33
+ const key = `${lng},${lat}`;
34
+ const existing = latest[key];
35
+ if (!existing || fire.timestamp > existing.timestamp) {
36
+ latest[key] = fire;
37
+ }
38
+ }
39
+ return Object.values(latest);
75
40
  }
76
- var f = new l();
77
- //#endregion
78
- export { f as hmsManager };
41
+ function computeFireGroups(fires) {
42
+ if (!fires.length)
43
+ return [];
44
+ const fc = featureCollection(fires.map((d) => point(d.geometry.coordinates, { fireId: d.id, frp: d.frp })));
45
+ const clustered = clustersDbscan(fc, HMS_FIRE_DBSCAN_EPSILON, {
46
+ minPoints: HMS_FIRE_DBSCAN_MIN_POINTS,
47
+ units: "kilometers"
48
+ });
49
+ const groups = {};
50
+ for (const feature of clustered.features) {
51
+ const props = feature.properties;
52
+ // With minPoints=1 every point self-qualifies as core, so "noise" never occurs.
53
+ // This branch activates correctly if minPoints is raised above 1 in future.
54
+ const key = props.dbscan === "noise" ? `noise-${props.fireId}` : `cluster-${props.cluster}`;
55
+ const [lng, lat] = feature.geometry.coordinates;
56
+ const entry = groups[key] ?? { frps: [], lngs: [], lats: [] };
57
+ entry.frps.push(props.frp);
58
+ entry.lngs.push(lng);
59
+ entry.lats.push(lat);
60
+ groups[key] = entry;
61
+ }
62
+ return Object.entries(groups).map(([key, { frps, lngs, lats }]) => ({
63
+ id: `hms-fire-group-${key}`,
64
+ coordinates: [
65
+ lngs.reduce((s, v) => s + v, 0) / lngs.length,
66
+ lats.reduce((s, v) => s + v, 0) / lats.length
67
+ ],
68
+ avgFrp: frps.reduce((s, v) => s + v, 0) / frps.length,
69
+ count: frps.length
70
+ }));
71
+ }
72
+ //async function fakeFireData(): Promise<Array<HMSFireGeoJSON>> {
73
+ // const response: FetchHMSFireResponse["body"] = {
74
+ // data: [
75
+ // {
76
+ // id: "4Kx7mNpQrQ",
77
+ // date: "2026-04-13",
78
+ // satellite: "GOES-16",
79
+ // timestamp: "2026-04-13T18:30:00Z",
80
+ // frp: 360,
81
+ // ecosystem: 4,
82
+ // method: "AF",
83
+ // geometry: {
84
+ // type: "Point",
85
+ // coordinates: [-118.532, 36.591],
86
+ // },
87
+ // },
88
+ // {
89
+ // id: "4Kx7mNpQrD",
90
+ // date: "2026-04-13",
91
+ // satellite: "GOES-16",
92
+ // timestamp: "2026-04-13T18:30:00Z",
93
+ // frp: 20,
94
+ // ecosystem: 4,
95
+ // method: "AF",
96
+ // geometry: {
97
+ // type: "Point",
98
+ // coordinates: [-118.632, 36.691],
99
+ // },
100
+ // },
101
+ // {
102
+ // id: "4Kx7mNpQrT",
103
+ // date: "2026-04-13",
104
+ // satellite: "GOES-16",
105
+ // timestamp: "2026-04-13T18:30:00Z",
106
+ // frp: 152.7,
107
+ // ecosystem: 4,
108
+ // method: "AF",
109
+ // geometry: {
110
+ // type: "Point",
111
+ // coordinates: [-118.832, 36.491],
112
+ // },
113
+ // },
114
+ // {
115
+ // id: "9vBjLsWqYm",
116
+ // date: "2026-04-13",
117
+ // satellite: "GOES-17",
118
+ // timestamp: "2026-04-13T17:45:00Z",
119
+ // frp: 58.2,
120
+ // ecosystem: 2,
121
+ // method: "AF",
122
+ // geometry: {
123
+ // type: "Point",
124
+ // coordinates: [-119.204, 37.112],
125
+ // },
126
+ // },
127
+ // {
128
+ // id: "2HcFnRkVxZ",
129
+ // date: "2026-04-13",
130
+ // satellite: "GOES-16",
131
+ // timestamp: "2026-04-13T16:00:00Z",
132
+ // frp: null,
133
+ // ecosystem: 7,
134
+ // method: "FDC",
135
+ // geometry: {
136
+ // type: "Point",
137
+ // coordinates: [-120.571, 35.883],
138
+ // },
139
+ // },
140
+ // ],
141
+ // page: 1,
142
+ // count: 3,
143
+ // pages: 1,
144
+ // has_next_page: false,
145
+ // has_previous_page: false,
146
+ // };
147
+ // return Promise.resolve(response.data);
148
+ //}
149
+ //async function fakeSmokeData(): Promise<Array<HMSSmokeGeoJSON>> {
150
+ // const response: FetchHMSSmokeResponse["body"] = {
151
+ // data: [
152
+ // {
153
+ // id: "sM3kNpQrL1",
154
+ // date: "2026-04-13",
155
+ // satellite: "GOES-16",
156
+ // start: "2026-04-13T12:00:00Z",
157
+ // end: "2026-04-13T18:00:00Z",
158
+ // density: "light",
159
+ // geometry: {
160
+ // type: "MultiPolygon",
161
+ // coordinates: [
162
+ // [
163
+ // [
164
+ // [-122.5, 39.5],
165
+ // [-120.5, 39.5],
166
+ // [-120.5, 41.0],
167
+ // [-122.5, 41.0],
168
+ // [-122.5, 39.5]
169
+ // ]
170
+ // ]
171
+ // ]
172
+ // }
173
+ // },
174
+ // {
175
+ // id: "sM3kNpQrL2",
176
+ // date: "2026-04-13",
177
+ // satellite: "GOES-16",
178
+ // start: "2026-04-13T12:00:00Z",
179
+ // end: "2026-04-13T18:00:00Z",
180
+ // density: "medium",
181
+ // geometry: {
182
+ // type: "MultiPolygon",
183
+ // coordinates: [
184
+ // [
185
+ // [
186
+ // [-121.0, 36.5],
187
+ // [-119.0, 36.5],
188
+ // [-119.0, 38.0],
189
+ // [-121.0, 38.0],
190
+ // [-121.0, 36.5]
191
+ // ]
192
+ // ]
193
+ // ]
194
+ // }
195
+ // },
196
+ // {
197
+ // id: "sM3kNpQrL3",
198
+ // date: "2026-04-13",
199
+ // satellite: "GOES-16",
200
+ // start: "2026-04-13T12:00:00Z",
201
+ // end: "2026-04-13T18:00:00Z",
202
+ // density: "heavy",
203
+ // geometry: {
204
+ // type: "MultiPolygon",
205
+ // coordinates: [
206
+ // [
207
+ // [
208
+ // [-119.0, 33.5],
209
+ // [-116.5, 33.5],
210
+ // [-116.5, 35.0],
211
+ // [-119.0, 35.0],
212
+ // [-119.0, 33.5]
213
+ // ]
214
+ // ]
215
+ // ]
216
+ // }
217
+ // }
218
+ // ],
219
+ // page: 1,
220
+ // count: 3,
221
+ // pages: 1,
222
+ // has_next_page: false,
223
+ // has_previous_page: false
224
+ // };
225
+ // return Promise.resolve(response.data);
226
+ //}
227
+ export const hmsManager = new HmsManager();
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Usage in a host app:
3
+ *
4
+ * ```ts
5
+ * // router.ts
6
+ * import { createRouter } from "sv-router";
7
+ * import { monitorMapRoutes } from "@sjvair/monitor-map";
8
+ *
9
+ * export const { route, navigate, p, isActive, Router } = createRouter({
10
+ * "/my-map": monitorMapRoutes
11
+ * // ...the host app's own routes
12
+ * });
13
+ * ```
14
+ *
15
+ * ```svelte
16
+ * <!-- app root -->
17
+ * <script>
18
+ * import { provideMonitorMapRouter } from "@sjvair/monitor-map";
19
+ * import { route, navigate, p, isActive, Router } from "./router";
20
+ *
21
+ * provideMonitorMapRouter({ route, navigate, p, isActive, basePath: "/my-map" });
22
+ * </script>
23
+ *
24
+ * <Router />
25
+ * ```
26
+ */
27
+ export { monitorMapRoutes } from "./routes";
28
+ export { ROUTER_KEY, provideMonitorMapRouter, useMonitorMapRouter, type MonitorMapRouterApi } from "./router-context";
29
+ export { monitorsManager } from "./monitors/monitors.svelte";
30
+ export type { MonitorsManager } from "./monitors/monitors.svelte";
31
+ export { collocationSitesManager } from "./collocation-sites/collocations.svelte";
32
+ export type { CollocationSitesManager } from "./collocation-sites/collocations.svelte";
33
+ export { evStationsManager } from "./ev-stations/ev-stations.svelte";
34
+ export type { EvStationsManager } from "./ev-stations/ev-stations.svelte";
35
+ export { hmsManager } from "./hms/hms.svelte";
36
+ export type { HMSManager } from "./hms/hms.svelte";
37
+ export { mapManager, DefaultMapStyle, initializeMap } from "./map/map.svelte";
38
+ export type { MapManager } from "./map/map.svelte";
39
+ export { monitorsMapIntegration } from "./monitors/monitors-map-integration.svelte.ts";
40
+ export { collocationSitesMapIntegration } from "./collocation-sites/collocations-map-integration.svelte.ts";
41
+ export { evStationsMapIntegration } from "./ev-stations/ev-stations-map-integration.svelte.ts";
42
+ export { windMapIntegration } from "./wind/wind.svelte";
43
+ export { baseLayerSeperator } from "./map/integrations/base-layer-seperator";
44
+ export { hmsFireMapIntegration } from "./hms/hms-fire-map-integration.svelte.ts";
45
+ export { hmsSmokeMapIntegration } from "./hms/hms-smoke-map-integration.svelte.ts";
46
+ export { default as Map } from "./map/Map.svelte";
47
+ export { default as Menu } from "./map/Menu.svelte";
48
+ export { default as LoadScreen, loadScreenState, enable as enableLoadScreen, disable as disableLoadScreen } from "./LoadScreen.svelte";
49
+ export type { LoadScreenState } from "./LoadScreen.svelte";
50
+ export { default as MonitorsDisplayOptions } from "./monitors/components/MonitorsDisplayOptions.svelte";
51
+ export { default as EvStationsDisplayOptions } from "./ev-stations/components/EvStationsDisplayOptions.svelte";
52
+ export { default as MapLayersDisplayOptions } from "./components/MapLayersDisplayOptions.svelte";
53
+ export { default as MapStyleDisplayOptions } from "./map/MapStyleDisplayOptions.svelte";
54
+ export { default as ToggleSwitch } from "./components/ToggleSwitch.svelte";
55
+ export { default as SegmentedControl } from "./components/SegmentedControl.svelte";
56
+ export { MapIntegration } from "./map/integrations/map-integration.svelte.ts";
57
+ export { MapLayerIntegration } from "./map/integrations/map-layer-integration.svelte.ts";
58
+ export { MapIconLayerIntegration as MapGeoJSONIntegration } from "./map/integrations/map-geojson-integration.svelte.ts";
59
+ export type { SomeMapIntegration } from "./map/integrations/types";
60
+ export type { MonitorsMapIntegration } from "./monitors/monitors-map-integration.svelte.ts";
61
+ export type { WindMapIntegration } from "./wind/wind.svelte.ts";
62
+ export type { EvStationsMapIntegration } from "./ev-stations/ev-stations-map-integration.svelte.ts";
63
+ export type { HMSFireMapIntegration } from "./hms/hms-fire-map-integration.svelte.ts";
64
+ export type { HMSSmokeMapIntegration } from "./hms/hms-smoke-map-integration.svelte.ts";
65
+ export type { HMSFireGroup } from "./hms/hms.svelte.ts";
66
+ export type { MonitorMapFeature, MonitorMarkerProperties, MonitorClusterMapFeature, MonitorClusterMarkerProperties } from "./monitors/types";
67
+ export type { CollocationSiteMapFeature, CollocationSiteMarkerProperties } from "./collocation-sites/types";
68
+ export type { EvStation, EvStationMarkerProperties, EvStationMapFeature, EvStationClusterMapFeature } from "./ev-stations/types";
package/dist/lib/index.js CHANGED
@@ -1,19 +1,56 @@
1
- import { monitorsManager as e } from "./monitors/monitors.svelte.js";
2
- import { collocationSitesManager as t } from "./collocation-sites/collocations.svelte.js";
3
- import { DefaultMapStyle as n, initializeMap as r, mapManager as i } from "./map/map.svelte.js";
4
- import { MapIntegration as a } from "./map/integrations/map-integration.svelte.js";
5
- import { MapLayerIntegration as o } from "./map/integrations/map-layer-integration.svelte.js";
6
- import { MapIconLayerIntegration as s } from "./map/integrations/map-geojson-integration.svelte.js";
7
- import { monitorsMapIntegration as c } from "./monitors/monitors-map-integration.svelte.js";
8
- import { collocationSitesMapIntegration as l } from "./collocation-sites/collocations-map-integration.svelte.js";
9
- import { baseLayerSeperator as u } from "./map/integrations/base-layer-seperator.js";
10
- import { windMapIntegration as d } from "./wind/wind.svelte.js";
11
- import f from "./map/Map.js";
12
- import p from "./map/Menu.js";
13
- import m, { disable as h, enable as g, loadScreenState as _ } from "./LoadScreen.js";
14
- import v from "./components/SegmentedControl.js";
15
- import y from "./components/ToggleSwitch.js";
16
- import b from "./monitors/components/MonitorsDisplayOptions.js";
17
- import x from "./components/MapLayersDisplayOptions.js";
18
- import S from "./map/MapStyleDisplayOptions.js";
19
- export { n as DefaultMapStyle, m as LoadScreen, f as Map, s as MapGeoJSONIntegration, a as MapIntegration, o as MapLayerIntegration, x as MapLayersDisplayOptions, S as MapStyleDisplayOptions, p as Menu, b as MonitorsDisplayOptions, v as SegmentedControl, y as ToggleSwitch, u as baseLayerSeperator, t as collocationSitesManager, l as collocationSitesMapIntegration, h as disableLoadScreen, g as enableLoadScreen, r as initializeMap, _ as loadScreenState, i as mapManager, e as monitorsManager, c as monitorsMapIntegration, d as windMapIntegration };
1
+ /**
2
+ * Usage in a host app:
3
+ *
4
+ * ```ts
5
+ * // router.ts
6
+ * import { createRouter } from "sv-router";
7
+ * import { monitorMapRoutes } from "@sjvair/monitor-map";
8
+ *
9
+ * export const { route, navigate, p, isActive, Router } = createRouter({
10
+ * "/my-map": monitorMapRoutes
11
+ * // ...the host app's own routes
12
+ * });
13
+ * ```
14
+ *
15
+ * ```svelte
16
+ * <!-- app root -->
17
+ * <script>
18
+ * import { provideMonitorMapRouter } from "@sjvair/monitor-map";
19
+ * import { route, navigate, p, isActive, Router } from "./router";
20
+ *
21
+ * provideMonitorMapRouter({ route, navigate, p, isActive, basePath: "/my-map" });
22
+ * </script>
23
+ *
24
+ * <Router />
25
+ * ```
26
+ */
27
+ export { monitorMapRoutes } from "./routes";
28
+ export { ROUTER_KEY, provideMonitorMapRouter, useMonitorMapRouter } from "./router-context";
29
+ // State managers
30
+ export { monitorsManager } from "./monitors/monitors.svelte";
31
+ export { collocationSitesManager } from "./collocation-sites/collocations.svelte";
32
+ export { evStationsManager } from "./ev-stations/ev-stations.svelte";
33
+ export { hmsManager } from "./hms/hms.svelte";
34
+ export { mapManager, DefaultMapStyle, initializeMap } from "./map/map.svelte";
35
+ // Map integrations
36
+ export { monitorsMapIntegration } from "./monitors/monitors-map-integration.svelte.ts";
37
+ export { collocationSitesMapIntegration } from "./collocation-sites/collocations-map-integration.svelte.ts";
38
+ export { evStationsMapIntegration } from "./ev-stations/ev-stations-map-integration.svelte.ts";
39
+ export { windMapIntegration } from "./wind/wind.svelte";
40
+ export { baseLayerSeperator } from "./map/integrations/base-layer-seperator";
41
+ export { hmsFireMapIntegration } from "./hms/hms-fire-map-integration.svelte.ts";
42
+ export { hmsSmokeMapIntegration } from "./hms/hms-smoke-map-integration.svelte.ts";
43
+ // Components
44
+ export { default as Map } from "./map/Map.svelte";
45
+ export { default as Menu } from "./map/Menu.svelte";
46
+ export { default as LoadScreen, loadScreenState, enable as enableLoadScreen, disable as disableLoadScreen } from "./LoadScreen.svelte";
47
+ export { default as MonitorsDisplayOptions } from "./monitors/components/MonitorsDisplayOptions.svelte";
48
+ export { default as EvStationsDisplayOptions } from "./ev-stations/components/EvStationsDisplayOptions.svelte";
49
+ export { default as MapLayersDisplayOptions } from "./components/MapLayersDisplayOptions.svelte";
50
+ export { default as MapStyleDisplayOptions } from "./map/MapStyleDisplayOptions.svelte";
51
+ export { default as ToggleSwitch } from "./components/ToggleSwitch.svelte";
52
+ export { default as SegmentedControl } from "./components/SegmentedControl.svelte";
53
+ // Integration base classes (extend these to add custom map features)
54
+ export { MapIntegration } from "./map/integrations/map-integration.svelte.ts";
55
+ export { MapLayerIntegration } from "./map/integrations/map-layer-integration.svelte.ts";
56
+ export { MapIconLayerIntegration as MapGeoJSONIntegration } from "./map/integrations/map-geojson-integration.svelte.ts";
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import "@maptiler/sdk/dist/maptiler-sdk.css";
3
+ import { initializeMap } from "./map.svelte.ts";
4
+ import { integrationsManager } from "./integrations/integrations-manager";
5
+ import type { SomeMapIntegration } from "./integrations/types.ts";
6
+
7
+ const { integrations }: { integrations: Array<SomeMapIntegration> } = $props();
8
+
9
+ // svelte-ignore state_referenced_locally (we only need the initial reference)
10
+ integrationsManager.register(...integrations);
11
+ </script>
12
+
13
+ <div {@attach initializeMap} style="width: 100%; height: 100%;"></div>
@@ -0,0 +1,8 @@
1
+ import "@maptiler/sdk/dist/maptiler-sdk.css";
2
+ import type { SomeMapIntegration } from "./integrations/types.ts";
3
+ type $$ComponentProps = {
4
+ integrations: Array<SomeMapIntegration>;
5
+ };
6
+ declare const Map: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type Map = ReturnType<typeof Map>;
8
+ export default Map;
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import { MapStyleVariant, ReferenceMapStyle } from "@maptiler/sdk";
3
+ import { mapManager, DefaultMapStyle } from "./map.svelte";
4
+ import { MAP_STYLE_OPTIONS } from "./utils.ts";
5
+ import { integrationsManager } from "./integrations/integrations-manager";
6
+ import DisplayOption from "../components/DisplayOption.svelte";
7
+
8
+ let currentMapStyle: MapStyleVariant = DefaultMapStyle;
9
+
10
+ let selectedReferenceStyle: ReferenceMapStyle = $state(DefaultMapStyle.getReferenceStyle());
11
+ let selectedVariant: MapStyleVariant = $state(DefaultMapStyle);
12
+
13
+ const selectedStyleVariants: Array<MapStyleVariant> = $derived(
14
+ selectedReferenceStyle.getVariants()
15
+ );
16
+
17
+ $effect(() => {
18
+ const referenceStyleChanged: boolean =
19
+ selectedReferenceStyle !== currentMapStyle.getReferenceStyle();
20
+ const variantChanged: boolean = selectedVariant !== currentMapStyle;
21
+
22
+ if (mapManager.map !== null) {
23
+ if (referenceStyleChanged && !variantChanged) {
24
+ selectedVariant = selectedReferenceStyle.getDefaultVariant();
25
+ } else if (variantChanged) {
26
+ mapManager.map.once("style.load", async () => {
27
+ currentMapStyle = selectedVariant;
28
+ integrationsManager.refresh();
29
+ });
30
+
31
+ mapManager.map.setStyle(selectedVariant);
32
+ }
33
+ }
34
+ });
35
+ </script>
36
+
37
+ <DisplayOption>
38
+ <p class="text-lg font-bold underline">Map Styles</p>
39
+ <label for="mapStyleType">Style</label>
40
+ <select
41
+ id="mapStyleType"
42
+ name="selectedOption"
43
+ bind:value={selectedReferenceStyle}
44
+ class="rounded border p-1"
45
+ >
46
+ {#each MAP_STYLE_OPTIONS as mapStyle, idx (idx)}
47
+ <option value={mapStyle}>{mapStyle.getName()}</option>
48
+ {/each}
49
+ </select>
50
+ <label for="mapStyleVariant">Variant</label>
51
+ <select
52
+ id="mapStyleType"
53
+ name="selectedOption"
54
+ bind:value={selectedVariant}
55
+ class="rounded border p-1"
56
+ >
57
+ {#each selectedStyleVariants as variant, idx (idx)}
58
+ <option value={variant}>{variant.getName()}</option>
59
+ {/each}
60
+ </select>
61
+ </DisplayOption>
@@ -0,0 +1,3 @@
1
+ declare const MapStyleDisplayOptions: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type MapStyleDisplayOptions = ReturnType<typeof MapStyleDisplayOptions>;
3
+ export default MapStyleDisplayOptions;
@@ -0,0 +1,64 @@
1
+ <script lang="ts">
2
+ import type { Attachment } from "svelte/attachments";
3
+ import { SlidersHorizontalIcon } from "@lucide/svelte";
4
+
5
+ let { children } = $props();
6
+ let isOpen: boolean = $state(false);
7
+
8
+ function open() {
9
+ if (!isOpen) {
10
+ isOpen = true;
11
+ }
12
+ }
13
+
14
+ function close() {
15
+ if (isOpen) {
16
+ isOpen = false;
17
+ }
18
+ }
19
+
20
+ const hasTarget = (target: EventTarget | null): target is HTMLElement => target !== null;
21
+
22
+ const displayOptionsToggle: Attachment<HTMLDivElement> = (target: HTMLDivElement) => {
23
+ function toggle(e: PointerEvent) {
24
+ if (hasTarget(e.target) && target.contains(e.target)) {
25
+ return "trigger" in e.target.dataset ? close() : open();
26
+ } else {
27
+ close();
28
+ }
29
+ }
30
+ document.body.addEventListener("click", toggle);
31
+
32
+ return () => document.body.removeEventListener("click", toggle);
33
+ };
34
+ </script>
35
+
36
+ <div
37
+ {@attach displayOptionsToggle}
38
+ data-trigger
39
+ class:rounded-full={!isOpen}
40
+ class:delay-100={!isOpen}
41
+ class="relative top-0 left-0 flex items-center justify-center overflow-hidden rounded bg-white p-1 shadow transition-all duration-0 select-none"
42
+ >
43
+ <button
44
+ class:w-0={isOpen}
45
+ class:h-0={isOpen}
46
+ class:opacity-0={isOpen}
47
+ class="relative size-10 transition-all flex justify-center items-center"
48
+ aria-label="Display Options"
49
+ >
50
+ <SlidersHorizontalIcon size="24" />
51
+ </button>
52
+ <div
53
+ class:h-55={isOpen}
54
+ class:w-135={isOpen}
55
+ class="relative flex h-0 w-0 items-center justify-center overflow-x-hidden overflow-y-scroll transition-all duration-250"
56
+ >
57
+ <div
58
+ data-trigger
59
+ class="absolute top-0 left-0 flex h-fit w-full items-start justify-between gap-4 p-2 flex-wrap"
60
+ >
61
+ {@render children?.()}
62
+ </div>
63
+ </div>
64
+ </div>
@@ -0,0 +1,5 @@
1
+ declare const Menu: import("svelte").Component<{
2
+ children: any;
3
+ }, {}, "">;
4
+ type Menu = ReturnType<typeof Menu>;
5
+ export default Menu;
@@ -0,0 +1,7 @@
1
+ export declare function square(color: string, borderWidth: number, borderColor?: string): string;
2
+ export declare function circle(color: string, borderWidth: number, borderColor?: string): string;
3
+ export declare function triangle(color: string, borderWidth: number, borderColor?: string): string;
4
+ export declare const CROSSHAIR_ICON_SIZE: number;
5
+ export declare function withCrosshair(baseSvg: string, color?: string): string;
6
+ export declare function asDataURI(svg: string): string;
7
+ export declare function fireIcon(color: string, size: number): string;