@sjvair/monitor-map 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/lib/LoadScreen.svelte +68 -0
  2. package/dist/lib/LoadScreen.svelte.d.ts +25 -0
  3. package/dist/lib/MainMapView.svelte +1 -0
  4. package/dist/lib/MainMapView.svelte.d.ts +26 -0
  5. package/dist/lib/MapLegend.svelte +15 -0
  6. package/dist/lib/MapLegend.svelte.d.ts +18 -0
  7. package/dist/lib/MonitorDetailPanel.svelte +152 -0
  8. package/dist/lib/MonitorDetailPanel.svelte.d.ts +3 -0
  9. package/dist/lib/MonitorMapLayout.svelte +193 -0
  10. package/dist/lib/MonitorMapLayout.svelte.d.ts +7 -0
  11. package/dist/lib/actions.d.ts +3 -0
  12. package/dist/lib/actions.js +12 -8
  13. package/dist/lib/assets/icons/adjustment-horizontal.svg +3 -0
  14. package/dist/lib/assets/logos/airgradient-blue.svg +63 -0
  15. package/dist/lib/assets/logos/airnow-compact.jpg +0 -0
  16. package/dist/lib/assets/logos/carb-compact.jpg +0 -0
  17. package/dist/lib/assets/logos/purpleair-compact.png +0 -0
  18. package/dist/lib/assets/logos/sjvair-parts/sjvair-air.webp +0 -0
  19. package/dist/lib/assets/logos/sjvair-parts/sjvair-icon.webp +0 -0
  20. package/dist/lib/assets/logos/sjvair-parts/sjvair-sjv.webp +0 -0
  21. package/dist/lib/assets/logos/sjvair-white.svg +115 -0
  22. package/dist/lib/assets/logos/sjvair.svg +96 -0
  23. package/dist/lib/collocation-sites/CollocationTooltip.svelte +98 -0
  24. package/dist/lib/collocation-sites/CollocationTooltip.svelte.d.ts +7 -0
  25. package/dist/lib/collocation-sites/collocation-utils.d.ts +3 -0
  26. package/dist/lib/collocation-sites/collocation-utils.js +30 -0
  27. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.d.ts +7 -0
  28. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.js +17 -20
  29. package/dist/lib/collocation-sites/collocations-map-integration.svelte.d.ts +18 -0
  30. package/dist/lib/collocation-sites/collocations-map-integration.svelte.js +98 -83
  31. package/dist/lib/collocation-sites/collocations.svelte.d.ts +9 -0
  32. package/dist/lib/collocation-sites/collocations.svelte.js +17 -26
  33. package/dist/lib/collocation-sites/types.d.ts +8 -0
  34. package/dist/lib/collocation-sites/types.js +1 -0
  35. package/dist/lib/colors.d.ts +17 -0
  36. package/dist/lib/colors.js +29 -23
  37. package/dist/lib/components/DataBox.svelte +29 -0
  38. package/dist/lib/components/DataBox.svelte.d.ts +9 -0
  39. package/dist/lib/components/DisplayOption.svelte +7 -0
  40. package/dist/lib/components/DisplayOption.svelte.d.ts +5 -0
  41. package/dist/lib/components/MapLayersDisplayOptions.svelte +42 -0
  42. package/dist/lib/components/MapLayersDisplayOptions.svelte.d.ts +18 -0
  43. package/dist/lib/components/SegmentedControl.svelte +61 -0
  44. package/dist/lib/components/SegmentedControl.svelte.d.ts +11 -0
  45. package/dist/lib/components/ToggleSwitch.svelte +93 -0
  46. package/dist/lib/components/ToggleSwitch.svelte.d.ts +9 -0
  47. package/dist/lib/components/ui/button/button.svelte +89 -0
  48. package/dist/lib/components/ui/button/button.svelte.d.ts +70 -0
  49. package/dist/lib/components/ui/button/index.d.ts +2 -0
  50. package/dist/lib/components/ui/button/index.js +4 -0
  51. package/dist/lib/components/ui/range-calendar/index.d.ts +19 -0
  52. package/dist/lib/components/ui/range-calendar/index.js +21 -0
  53. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte +76 -0
  54. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte.d.ts +19 -0
  55. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
  56. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
  57. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte +36 -0
  58. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
  59. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte +7 -0
  60. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte.d.ts +4 -0
  61. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte +7 -0
  62. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte.d.ts +4 -0
  63. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
  64. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
  65. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
  66. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
  67. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte +19 -0
  68. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
  69. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte +19 -0
  70. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
  71. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
  72. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
  73. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte +44 -0
  74. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte.d.ts +4 -0
  75. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte +15 -0
  76. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte.d.ts +5 -0
  77. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte +19 -0
  78. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
  79. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte +19 -0
  80. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte.d.ts +5 -0
  81. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte +36 -0
  82. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +8 -0
  83. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte +36 -0
  84. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +8 -0
  85. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte +43 -0
  86. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte.d.ts +4 -0
  87. package/dist/lib/components/ui/range-calendar/range-calendar.svelte +112 -0
  88. package/dist/lib/components/ui/range-calendar/range-calendar.svelte.d.ts +21 -0
  89. package/dist/lib/data-chart/DataChart.svelte +303 -0
  90. package/dist/lib/data-chart/DataChart.svelte.d.ts +7 -0
  91. package/dist/lib/data-chart/DateRange.d.ts +6 -0
  92. package/dist/lib/data-chart/DateRange.js +15 -14
  93. package/dist/lib/data-chart/chart-utils.d.ts +3 -0
  94. package/dist/lib/data-chart/chart-utils.js +157 -93
  95. package/dist/lib/data-chart/data-chart.svelte.d.ts +7 -0
  96. package/dist/lib/data-chart/data-chart.svelte.js +7 -28
  97. package/dist/lib/data-chart/requests.d.ts +3 -0
  98. package/dist/lib/data-chart/requests.js +36 -28
  99. package/dist/lib/data-chart/tooltip.d.ts +10 -0
  100. package/dist/lib/data-chart/tooltip.js +160 -98
  101. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte +16 -0
  102. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte.d.ts +7 -0
  103. package/dist/lib/ev-stations/components/EvStationTooltip.svelte +127 -0
  104. package/dist/lib/ev-stations/components/EvStationTooltip.svelte.d.ts +7 -0
  105. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte +46 -0
  106. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte.d.ts +18 -0
  107. package/dist/lib/ev-stations/data-maps.d.ts +5 -0
  108. package/dist/lib/ev-stations/data-maps.js +152 -4
  109. package/dist/lib/ev-stations/ev-station-icons.d.ts +16 -0
  110. package/dist/lib/ev-stations/ev-station-icons.js +21 -27
  111. package/dist/lib/ev-stations/ev-stations-cluster-renderer.d.ts +19 -0
  112. package/dist/lib/ev-stations/ev-stations-cluster-renderer.js +130 -117
  113. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.d.ts +31 -0
  114. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.js +206 -180
  115. package/dist/lib/ev-stations/ev-stations.svelte.d.ts +9 -0
  116. package/dist/lib/ev-stations/ev-stations.svelte.js +54 -32
  117. package/dist/lib/ev-stations/types.d.ts +53 -0
  118. package/dist/lib/ev-stations/types.js +1 -0
  119. package/dist/lib/ev-stations/zip-codes.d.ts +13 -0
  120. package/dist/lib/ev-stations/zip-codes.js +457 -135
  121. package/dist/lib/hms/components/HMSFireLegend.svelte +21 -0
  122. package/dist/lib/hms/components/HMSFireLegend.svelte.d.ts +18 -0
  123. package/dist/lib/hms/hms-fire-icon-manager.d.ts +5 -0
  124. package/dist/lib/hms/hms-fire-icon-manager.js +28 -37
  125. package/dist/lib/hms/hms-fire-map-integration.svelte.d.ts +23 -0
  126. package/dist/lib/hms/hms-fire-map-integration.svelte.js +94 -97
  127. package/dist/lib/hms/hms-smoke-map-integration.svelte.d.ts +19 -0
  128. package/dist/lib/hms/hms-smoke-map-integration.svelte.js +68 -84
  129. package/dist/lib/hms/hms.svelte.d.ts +19 -0
  130. package/dist/lib/hms/hms.svelte.js +225 -76
  131. package/dist/lib/index.d.ts +68 -0
  132. package/dist/lib/index.js +56 -21
  133. package/dist/lib/map/Map.svelte +13 -0
  134. package/dist/lib/map/Map.svelte.d.ts +8 -0
  135. package/dist/lib/map/MapStyleDisplayOptions.svelte +61 -0
  136. package/dist/lib/map/MapStyleDisplayOptions.svelte.d.ts +3 -0
  137. package/dist/lib/map/Menu.svelte +64 -0
  138. package/dist/lib/map/Menu.svelte.d.ts +5 -0
  139. package/dist/lib/map/icons.d.ts +7 -0
  140. package/dist/lib/map/icons.js +24 -22
  141. package/dist/lib/map/integrations/base-layer-seperator.d.ts +9 -0
  142. package/dist/lib/map/integrations/base-layer-seperator.js +11 -12
  143. package/dist/lib/map/integrations/click-manager.d.ts +14 -0
  144. package/dist/lib/map/integrations/click-manager.js +52 -33
  145. package/dist/lib/map/integrations/integrations-manager.d.ts +8 -0
  146. package/dist/lib/map/integrations/integrations-manager.js +20 -12
  147. package/dist/lib/map/integrations/map-display-option.svelte.d.ts +7 -0
  148. package/dist/lib/map/integrations/map-display-option.svelte.js +10 -18
  149. package/dist/lib/map/integrations/map-geojson-integration.svelte.d.ts +13 -0
  150. package/dist/lib/map/integrations/map-geojson-integration.svelte.js +21 -17
  151. package/dist/lib/map/integrations/map-icon-manager.d.ts +15 -0
  152. package/dist/lib/map/integrations/map-icon-manager.js +52 -46
  153. package/dist/lib/map/integrations/map-integration.svelte.d.ts +6 -0
  154. package/dist/lib/map/integrations/map-integration.svelte.js +2 -5
  155. package/dist/lib/map/integrations/map-layer-integration.svelte.d.ts +11 -0
  156. package/dist/lib/map/integrations/map-layer-integration.svelte.js +36 -23
  157. package/dist/lib/map/integrations/tooltip.svelte.d.ts +28 -0
  158. package/dist/lib/map/integrations/tooltip.svelte.js +120 -78
  159. package/dist/lib/map/integrations/types.d.ts +14 -0
  160. package/dist/lib/map/integrations/types.js +1 -0
  161. package/dist/lib/map/map.svelte.d.ts +14 -0
  162. package/dist/lib/map/map.svelte.js +48 -50
  163. package/dist/lib/map/utils.d.ts +7 -0
  164. package/dist/lib/map/utils.js +32 -29
  165. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte +112 -0
  166. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte.d.ts +7 -0
  167. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte +41 -0
  168. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte.d.ts +3 -0
  169. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte +128 -0
  170. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte.d.ts +6 -0
  171. package/dist/lib/monitors/components/MonitorTooltip.svelte +61 -0
  172. package/dist/lib/monitors/components/MonitorTooltip.svelte.d.ts +7 -0
  173. package/dist/lib/monitors/components/MonitorWidgetModal.svelte +100 -0
  174. package/dist/lib/monitors/components/MonitorWidgetModal.svelte.d.ts +6 -0
  175. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +79 -0
  176. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte.d.ts +3 -0
  177. package/dist/lib/monitors/monitor-utils.d.ts +4 -0
  178. package/dist/lib/monitors/monitor-utils.js +33 -23
  179. package/dist/lib/monitors/monitors-cluster-renderer.d.ts +33 -0
  180. package/dist/lib/monitors/monitors-cluster-renderer.js +218 -209
  181. package/dist/lib/monitors/monitors-icon-manager.svelte.d.ts +13 -0
  182. package/dist/lib/monitors/monitors-icon-manager.svelte.js +75 -70
  183. package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +40 -0
  184. package/dist/lib/monitors/monitors-map-integration.svelte.js +278 -270
  185. package/dist/lib/monitors/monitors.svelte.d.ts +16 -0
  186. package/dist/lib/monitors/monitors.svelte.js +38 -63
  187. package/dist/lib/monitors/types.d.ts +26 -0
  188. package/dist/lib/monitors/types.js +1 -0
  189. package/dist/lib/reactivity.svelte.d.ts +0 -0
  190. package/dist/lib/reactivity.svelte.js +83 -0
  191. package/dist/lib/router-context.d.ts +27 -0
  192. package/dist/lib/router-context.js +11 -11
  193. package/dist/lib/routes.d.ts +2 -0
  194. package/dist/lib/routes.js +10 -9
  195. package/dist/lib/search/Search.svelte +189 -0
  196. package/dist/lib/search/Search.svelte.d.ts +3 -0
  197. package/dist/lib/search/service.d.ts +17 -0
  198. package/dist/lib/search/service.js +75 -85
  199. package/dist/lib/utils.d.ts +13 -0
  200. package/dist/lib/utils.js +10 -12
  201. package/dist/lib/weather.d.ts +1 -0
  202. package/dist/lib/weather.js +11 -7
  203. package/dist/lib/wind/wind.svelte.d.ts +10 -0
  204. package/dist/lib/wind/wind.svelte.js +13 -21
  205. package/package.json +9 -7
  206. package/src/lib/LoadScreen.svelte +3 -3
  207. package/src/lib/hms/components/HMSFireLegend.svelte +1 -1
  208. package/src/lib/hms/hms.svelte.ts +8 -9
  209. package/src/lib/index.ts +18 -0
  210. package/src/lib/routes.ts +6 -1
  211. package/src/lib/utils.ts +1 -1
  212. package/dist/lib/LoadScreen.js +0 -73
  213. package/dist/lib/MainMapView.js +0 -7
  214. package/dist/lib/MapLegend.js +0 -13
  215. package/dist/lib/MonitorDetailPanel.js +0 -169
  216. package/dist/lib/MonitorMapLayout.js +0 -91
  217. package/dist/lib/_virtual/_rolldown/runtime.js +0 -11
  218. package/dist/lib/assets/logos/airgradient-blue.js +0 -4
  219. package/dist/lib/assets/logos/airnow-compact.js +0 -4
  220. package/dist/lib/assets/logos/carb-compact.js +0 -4
  221. package/dist/lib/assets/logos/purpleair-compact.js +0 -4
  222. package/dist/lib/assets/logos/sjvair.js +0 -4
  223. package/dist/lib/collocation-sites/CollocationTooltip.js +0 -105
  224. package/dist/lib/components/DataBox.js +0 -30
  225. package/dist/lib/components/DisplayOption.js +0 -10
  226. package/dist/lib/components/MapLayersDisplayOptions.js +0 -87
  227. package/dist/lib/components/SegmentedControl.js +0 -37
  228. package/dist/lib/components/ToggleSwitch.js +0 -17
  229. package/dist/lib/components/ui/button/button.js +0 -34
  230. package/dist/lib/components/ui/range-calendar/range-calendar-caption.js +0 -82
  231. package/dist/lib/components/ui/range-calendar/range-calendar-cell.js +0 -35
  232. package/dist/lib/components/ui/range-calendar/range-calendar-day.js +0 -35
  233. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.js +0 -27
  234. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.js +0 -27
  235. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.js +0 -35
  236. package/dist/lib/components/ui/range-calendar/range-calendar-grid.js +0 -35
  237. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.js +0 -35
  238. package/dist/lib/components/ui/range-calendar/range-calendar-header.js +0 -35
  239. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.js +0 -61
  240. package/dist/lib/components/ui/range-calendar/range-calendar-month.js +0 -25
  241. package/dist/lib/components/ui/range-calendar/range-calendar-months.js +0 -25
  242. package/dist/lib/components/ui/range-calendar/range-calendar-nav.js +0 -25
  243. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.js +0 -58
  244. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.js +0 -58
  245. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.js +0 -59
  246. package/dist/lib/components/ui/range-calendar/range-calendar.js +0 -272
  247. package/dist/lib/data-chart/DataChart.js +0 -142
  248. package/dist/lib/ev-stations/components/EvStationClusterTooltip.js +0 -16
  249. package/dist/lib/ev-stations/components/EvStationTooltip.js +0 -120
  250. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.js +0 -41
  251. package/dist/lib/hms/components/HMSFireLegend.js +0 -35
  252. package/dist/lib/map/Map.js +0 -14
  253. package/dist/lib/map/MapStyleDisplayOptions.js +0 -43
  254. package/dist/lib/map/Menu.js +0 -44
  255. package/dist/lib/monitors/components/MonitorClusterTooltip.js +0 -83
  256. package/dist/lib/monitors/components/MonitorMarkersLegend.js +0 -35
  257. package/dist/lib/monitors/components/MonitorSubscriptionManager.js +0 -104
  258. package/dist/lib/monitors/components/MonitorTooltip.js +0 -59
  259. package/dist/lib/monitors/components/MonitorWidgetModal.js +0 -40
  260. package/dist/lib/monitors/components/MonitorsDisplayOptions.js +0 -76
  261. package/dist/lib/search/Search.js +0 -124
  262. package/dist/lib/sjvair-air.avif +0 -0
  263. package/dist/lib/sjvair-air.png +0 -0
  264. package/dist/lib/sjvair-air.webp +0 -0
  265. package/dist/lib/sjvair-air2.avif +0 -0
  266. package/dist/lib/sjvair-air2.png +0 -0
  267. package/dist/lib/sjvair-air2.webp +0 -0
  268. package/dist/lib/sjvair-icon.avif +0 -0
  269. package/dist/lib/sjvair-icon.png +0 -0
  270. package/dist/lib/sjvair-icon.webp +0 -0
  271. package/dist/lib/sjvair-icon2.avif +0 -0
  272. package/dist/lib/sjvair-icon2.png +0 -0
  273. package/dist/lib/sjvair-icon2.webp +0 -0
  274. package/dist/lib/sjvair-sjv.avif +0 -0
  275. package/dist/lib/sjvair-sjv.png +0 -0
  276. package/dist/lib/sjvair-sjv.webp +0 -0
  277. package/dist/lib/sjvair-sjv2.avif +0 -0
  278. package/dist/lib/sjvair-sjv2.png +0 -0
  279. package/dist/lib/sjvair-sjv2.webp +0 -0
@@ -1,31 +1,33 @@
1
- import { darken as e } from "color2k";
2
- //#region src/lib/map/icons.ts
3
- function t(t, n, r) {
4
- return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
5
- <rect x="${n / 2}" y="${n / 2}" width="${24 - n}" height="${24 - n}"
6
- fill="${t}" stroke="${e(r ?? t, .1)}" stroke-width="${n}"/>
1
+ import { darken } from "color2k";
2
+ export function square(color, borderWidth, borderColor) {
3
+ return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
4
+ <rect x="${borderWidth / 2}" y="${borderWidth / 2}" width="${24 - borderWidth}" height="${24 - borderWidth}"
5
+ fill="${color}" stroke="${darken(borderColor ?? color, 0.1)}" stroke-width="${borderWidth}"/>
7
6
  </svg>`;
8
7
  }
9
- function n(t, n, r) {
10
- return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
11
- <circle cx="12" cy="12" r="${12 - n}" fill="${t}" stroke="${e(r ?? t, .1)}" stroke-width="${n}"/>
8
+ export function circle(color, borderWidth, borderColor) {
9
+ return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
10
+ <circle cx="12" cy="12" r="${12 - borderWidth}" fill="${color}" stroke="${darken(borderColor ?? color, 0.1)}" stroke-width="${borderWidth}"/>
12
11
  </svg>`;
13
12
  }
14
- function r(t, n, r) {
15
- return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
16
- <polygon points="${`12,${n} ${24 - n},${24 - n} ${n},${24 - n}`}"
17
- fill="${t}" stroke="${e(r ?? t, .1)}" stroke-width="${n}"/>
13
+ export function triangle(color, borderWidth, borderColor) {
14
+ const points = `${12},${borderWidth} ${24 - borderWidth},${24 - borderWidth} ${borderWidth},${24 - borderWidth}`;
15
+ return `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
16
+ <polygon points="${points}"
17
+ fill="${color}" stroke="${darken(borderColor ?? color, 0.1)}" stroke-width="${borderWidth}"/>
18
18
  </svg>`;
19
19
  }
20
- var i = "M495.9 248H392c-4.4 0-8 3.6-8 8s3.6 8 8 8H495.9C491.7 390.2 390.2 491.7 264 495.9V392c0-4.4-3.6-8-8-8s-8 3.6-8 8V495.9C121.8 491.7 20.3 390.2 16.1 264H120c4.4 0 8-3.6 8-8s-3.6-8-8-8H16.1C20.3 121.8 121.8 20.3 248 16.1V120c0 4.4 3.6 8 8 8s8-3.6 8-8V16.1C390.2 20.3 491.7 121.8 495.9 248zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256z", a = 16;
21
- function o(e, t = "#ffffff") {
22
- return `<svg width="56" height="56" viewBox="0 0 56 56" xmlns="http://www.w3.org/2000/svg">${e.replace("<svg ", `<svg x="${a}" y="${a}" `)}<svg x="0" y="0" width="56" height="56" viewBox="-8 -8 528 528"><path d="${i}" fill="${t}" stroke="${t}" stroke-width="5"/></svg></svg>`;
20
+ const CROSSHAIR_PATH = "M495.9 248H392c-4.4 0-8 3.6-8 8s3.6 8 8 8H495.9C491.7 390.2 390.2 491.7 264 495.9V392c0-4.4-3.6-8-8-8s-8 3.6-8 8V495.9C121.8 491.7 20.3 390.2 16.1 264H120c4.4 0 8-3.6 8-8s-3.6-8-8-8H16.1C20.3 121.8 121.8 20.3 248 16.1V120c0 4.4 3.6 8 8 8s8-3.6 8-8V16.1C390.2 20.3 491.7 121.8 495.9 248zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256z";
21
+ const CROSSHAIR_PADDING = 16;
22
+ export const CROSSHAIR_ICON_SIZE = 24 + CROSSHAIR_PADDING * 2;
23
+ export function withCrosshair(baseSvg, color = "#ffffff") {
24
+ const size = CROSSHAIR_ICON_SIZE;
25
+ const inner = baseSvg.replace("<svg ", `<svg x="${CROSSHAIR_PADDING}" y="${CROSSHAIR_PADDING}" `);
26
+ return `<svg width="${size}" height="${size}" viewBox="0 0 ${size} ${size}" xmlns="http://www.w3.org/2000/svg">${inner}<svg x="0" y="0" width="${size}" height="${size}" viewBox="-8 -8 528 528"><path d="${CROSSHAIR_PATH}" fill="${color}" stroke="${color}" stroke-width="5"/></svg></svg>`;
23
27
  }
24
- function s(e) {
25
- return `data:image/svg+xml;utf8,${encodeURIComponent(e)}`;
28
+ export function asDataURI(svg) {
29
+ return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;
26
30
  }
27
- function c(e, t) {
28
- return `<svg width="${t}" height="${t}" viewBox="0 -960 960 960" xmlns="http://www.w3.org/2000/svg" fill="${e}"><path d="M200-400q0 52 21 98.5t60 81.5q-1-5-1-9v-9q0-32 12-60t35-51l113-111 113 111q23 23 35 51t12 60v9q0 4-1 9 39-35 60-81.5t21-98.5q0-50-18.5-94.5T608-574q-20 13-42 19.5t-45 6.5q-62 0-107.5-41T361-690q-39 33-69 68.5t-50.5 72Q221-513 210.5-475T200-400Zm240 52-57 56q-11 11-17 25t-6 29q0 32 23.5 55t56.5 23q33 0 56.5-23t23.5-55q0-16-6-29.5T497-292l-57-56Zm0-492v132q0 34 23.5 57t57.5 23q18 0 33.5-7.5T582-658l18-22q74 42 117 117t43 163q0 134-93 227T440-80q-134 0-227-93t-93-227q0-129 86.5-245T440-840Zm400 320q-17 0-28.5-11.5T800-560q0-17 11.5-28.5T840-600q17 0 28.5 11.5T880-560q0 17-11.5 28.5T840-520Zm-40-120v-200h80v200h-80Z"/></svg>`;
31
+ export function fireIcon(color, size) {
32
+ return `<svg width="${size}" height="${size}" viewBox="0 -960 960 960" xmlns="http://www.w3.org/2000/svg" fill="${color}"><path d="M200-400q0 52 21 98.5t60 81.5q-1-5-1-9v-9q0-32 12-60t35-51l113-111 113 111q23 23 35 51t12 60v9q0 4-1 9 39-35 60-81.5t21-98.5q0-50-18.5-94.5T608-574q-20 13-42 19.5t-45 6.5q-62 0-107.5-41T361-690q-39 33-69 68.5t-50.5 72Q221-513 210.5-475T200-400Zm240 52-57 56q-11 11-17 25t-6 29q0 32 23.5 55t56.5 23q33 0 56.5-23t23.5-55q0-16-6-29.5T497-292l-57-56Zm0-492v132q0 34 23.5 57t57.5 23q18 0 33.5-7.5T582-658l18-22q74 42 117 117t43 163q0 134-93 227T440-80q-134 0-227-93t-93-227q0-129 86.5-245T440-840Zm400 320q-17 0-28.5-11.5T800-560q0-17 11.5-28.5T840-600q17 0 28.5 11.5T880-560q0 17-11.5 28.5T840-520Zm-40-120v-200h80v200h-80Z"/></svg>`;
29
33
  }
30
- //#endregion
31
- export { s as asDataURI, n as circle, c as fireIcon, t as square, r as triangle, o as withCrosshair };
@@ -0,0 +1,9 @@
1
+ import { Map as MaptilerMap } from "@maptiler/sdk";
2
+ import { MapLayerIntegration } from "./map-layer-integration.svelte.ts";
3
+ declare class BaseLayerSeperator extends MapLayerIntegration {
4
+ referenceId: string;
5
+ enabled: boolean;
6
+ mapLayer: Parameters<MaptilerMap["addLayer"]>[0];
7
+ }
8
+ export declare const baseLayerSeperator: BaseLayerSeperator;
9
+ export type { BaseLayerSeperator };
@@ -1,12 +1,11 @@
1
- import { MapLayerIntegration as e } from "./map-layer-integration.svelte.js";
2
- var t = new class extends e {
3
- referenceId = "Base Layer Seperator";
4
- enabled = !0;
5
- mapLayer = {
6
- id: this.referenceId,
7
- type: "custom",
8
- render: function() {}
9
- };
10
- }();
11
- //#endregion
12
- export { t as baseLayerSeperator };
1
+ import { MapLayerIntegration } from "./map-layer-integration.svelte.ts";
2
+ class BaseLayerSeperator extends MapLayerIntegration {
3
+ referenceId = "Base Layer Seperator";
4
+ enabled = true;
5
+ mapLayer = {
6
+ id: this.referenceId,
7
+ type: "custom",
8
+ render: function () { }
9
+ };
10
+ }
11
+ export const baseLayerSeperator = new BaseLayerSeperator();
@@ -0,0 +1,14 @@
1
+ import type { MapGeoJSONFeature, MapMouseEvent } from "@maptiler/sdk";
2
+ export type ClickHandler = (features: MapGeoJSONFeature[], evt: MapMouseEvent & object) => void;
3
+ declare class ClickManager {
4
+ private registrations;
5
+ private isListening;
6
+ /** Must be called after `mapManager.map` is initialized (i.e. from within `apply()`). */
7
+ register(layerIds: string[], handler: ClickHandler): void;
8
+ unregister(layerIds: string[]): void;
9
+ private ensureListener;
10
+ private removeListener;
11
+ private handleClick;
12
+ }
13
+ export declare const clickManager: ClickManager;
14
+ export type { ClickManager };
@@ -1,33 +1,52 @@
1
- import { mapManager as e } from "../map.svelte.js";
2
- var t = new class {
3
- registrations = [];
4
- isListening = !1;
5
- register(e, t) {
6
- let n = new Set(e), r = this.registrations.find((e) => e.layerIds.some((e) => n.has(e)));
7
- r ? (r.layerIds = e, r.handler = t) : this.registrations.push({
8
- layerIds: e,
9
- handler: t
10
- }), this.ensureListener();
11
- }
12
- unregister(e) {
13
- let t = new Set(e);
14
- this.registrations = this.registrations.filter((e) => !e.layerIds.some((e) => t.has(e))), this.registrations.length === 0 && this.removeListener();
15
- }
16
- ensureListener() {
17
- this.isListening || !e.map || (e.map.on("click", this.handleClick), this.isListening = !0);
18
- }
19
- removeListener() {
20
- this.isListening &&= (e.map?.off("click", this.handleClick), !1);
21
- }
22
- handleClick = (t) => {
23
- if (!e.map) return;
24
- let n = this.registrations.flatMap((e) => e.layerIds), r = e.map.queryRenderedFeatures(t.point, { layers: n });
25
- if (!r.length) return;
26
- let i = r[0].layer.id, a = this.registrations.find((e) => e.layerIds.includes(i));
27
- if (!a) return;
28
- let o = r.filter((e) => a.layerIds.includes(e.layer.id));
29
- a.handler(o, t);
30
- };
31
- }();
32
- //#endregion
33
- export { t as clickManager };
1
+ import { mapManager } from "../map.svelte.ts";
2
+ class ClickManager {
3
+ registrations = [];
4
+ isListening = false;
5
+ /** Must be called after `mapManager.map` is initialized (i.e. from within `apply()`). */
6
+ register(layerIds, handler) {
7
+ const incomingSet = new Set(layerIds);
8
+ const existing = this.registrations.find((r) => r.layerIds.some((id) => incomingSet.has(id)));
9
+ if (existing) {
10
+ existing.layerIds = layerIds;
11
+ existing.handler = handler;
12
+ }
13
+ else {
14
+ this.registrations.push({ layerIds, handler });
15
+ }
16
+ this.ensureListener();
17
+ }
18
+ unregister(layerIds) {
19
+ const set = new Set(layerIds);
20
+ this.registrations = this.registrations.filter((r) => !r.layerIds.some((id) => set.has(id)));
21
+ if (this.registrations.length === 0) {
22
+ this.removeListener();
23
+ }
24
+ }
25
+ ensureListener() {
26
+ if (this.isListening || !mapManager.map)
27
+ return;
28
+ mapManager.map.on("click", this.handleClick);
29
+ this.isListening = true;
30
+ }
31
+ removeListener() {
32
+ if (!this.isListening)
33
+ return;
34
+ mapManager.map?.off("click", this.handleClick);
35
+ this.isListening = false;
36
+ }
37
+ handleClick = (evt) => {
38
+ if (!mapManager.map)
39
+ return;
40
+ const allLayerIds = this.registrations.flatMap((r) => r.layerIds);
41
+ const features = mapManager.map.queryRenderedFeatures(evt.point, { layers: allLayerIds });
42
+ if (!features.length)
43
+ return;
44
+ const winningLayerId = features[0].layer.id;
45
+ const registration = this.registrations.find((r) => r.layerIds.includes(winningLayerId));
46
+ if (!registration)
47
+ return;
48
+ const ownFeatures = features.filter((f) => registration.layerIds.includes(f.layer.id));
49
+ registration.handler(ownFeatures, evt);
50
+ };
51
+ }
52
+ export const clickManager = new ClickManager();
@@ -0,0 +1,8 @@
1
+ import type { SomeMapIntegration } from "./types";
2
+ declare class IntegrationsManager {
3
+ private integrations;
4
+ register(...integrations: Array<SomeMapIntegration>): void;
5
+ refresh(): void;
6
+ }
7
+ export declare const integrationsManager: IntegrationsManager;
8
+ export type { IntegrationsManager };
@@ -1,12 +1,20 @@
1
- import { XMap as e } from "@tstk/builtin-extensions";
2
- var t = new class {
3
- integrations = new e();
4
- register(...e) {
5
- for (let t of e) this.integrations.set(t.referenceId, t);
6
- }
7
- refresh() {
8
- for (let e of this.integrations.values()) e.enabled ? e.apply() : e.remove && e.remove();
9
- }
10
- }();
11
- //#endregion
12
- export { t as integrationsManager };
1
+ import { XMap } from "@tstk/builtin-extensions";
2
+ class IntegrationsManager {
3
+ integrations = new XMap();
4
+ register(...integrations) {
5
+ for (const integration of integrations) {
6
+ this.integrations.set(integration.referenceId, integration);
7
+ }
8
+ }
9
+ refresh() {
10
+ for (const integration of this.integrations.values()) {
11
+ if (integration.enabled) {
12
+ integration.apply();
13
+ }
14
+ else if (integration.remove) {
15
+ integration.remove();
16
+ }
17
+ }
18
+ }
19
+ }
20
+ export const integrationsManager = new IntegrationsManager();
@@ -0,0 +1,7 @@
1
+ import { MapImageIcon } from "./types";
2
+ export declare class MapDisplayOption {
3
+ icon?: MapImageIcon;
4
+ label: string;
5
+ value: boolean;
6
+ constructor(label: string, value: boolean, icon?: MapImageIcon);
7
+ }
@@ -1,18 +1,10 @@
1
- import * as e from "svelte/internal/client";
2
- //#region src/lib/map/integrations/map-display-option.svelte.ts
3
- var t = class {
4
- #e;
5
- get value() {
6
- return e.get(this.#e);
7
- }
8
- set value(t) {
9
- e.set(this.#e, t, !0);
10
- }
11
- icon;
12
- label;
13
- constructor(t, n, r) {
14
- this.icon = r, this.label = t, this.#e = e.state(e.proxy(n));
15
- }
16
- };
17
- //#endregion
18
- export { t as MapDisplayOption };
1
+ export class MapDisplayOption {
2
+ icon;
3
+ label;
4
+ value;
5
+ constructor(label, value, icon) {
6
+ this.icon = icon;
7
+ this.label = label;
8
+ this.value = $state(value);
9
+ }
10
+ }
@@ -0,0 +1,13 @@
1
+ import type { Map as MaptilerMap } from "@maptiler/sdk";
2
+ import type { Feature, Geometry } from "geojson";
3
+ import type { MapIconManager } from "./map-icon-manager.ts";
4
+ import { MapLayerIntegration } from "./map-layer-integration.svelte.ts";
5
+ export declare abstract class MapGeoJSONIntegration<T = Record<string, unknown>> extends MapLayerIntegration {
6
+ abstract features: Array<Feature<Geometry, T>>;
7
+ abstract mapSource: Parameters<MaptilerMap["addSource"]>[1];
8
+ remove(): void;
9
+ }
10
+ export declare abstract class MapIconLayerIntegration<T = Record<string, unknown>> extends MapGeoJSONIntegration<T> {
11
+ abstract icons: MapIconManager;
12
+ apply(): void;
13
+ }
@@ -1,17 +1,21 @@
1
- import { mapManager as e } from "../map.svelte.js";
2
- import { MapLayerIntegration as t } from "./map-layer-integration.svelte.js";
3
- import "svelte/internal/client";
4
- //#region src/lib/map/integrations/map-geojson-integration.svelte.ts
5
- var n = class extends t {
6
- remove() {
7
- super.remove(), e.map?.getSource(this.referenceId) && e.map.removeSource(this.referenceId);
8
- }
9
- }, r = class extends n {
10
- apply() {
11
- e.map && this.icons.loadIcons().then(() => {
12
- this.remove(), e.map?.addSource(this.referenceId, this.mapSource), super.apply();
13
- });
14
- }
15
- };
16
- //#endregion
17
- export { n as MapGeoJSONIntegration, r as MapIconLayerIntegration };
1
+ import { MapLayerIntegration } from "./map-layer-integration.svelte.ts";
2
+ import { mapManager } from "../map.svelte.ts";
3
+ export class MapGeoJSONIntegration extends MapLayerIntegration {
4
+ remove() {
5
+ super.remove();
6
+ if (mapManager.map?.getSource(this.referenceId)) {
7
+ mapManager.map.removeSource(this.referenceId);
8
+ }
9
+ }
10
+ }
11
+ export class MapIconLayerIntegration extends MapGeoJSONIntegration {
12
+ apply() {
13
+ if (!mapManager.map)
14
+ return;
15
+ this.icons.loadIcons().then(() => {
16
+ this.remove();
17
+ mapManager.map?.addSource(this.referenceId, this.mapSource);
18
+ super.apply();
19
+ });
20
+ }
21
+ }
@@ -0,0 +1,15 @@
1
+ import type { Map as MaptilerMap } from "@maptiler/sdk";
2
+ import type { MapImageIcon } from "./types";
3
+ import { SvelteMap } from "svelte/reactivity";
4
+ export declare class MapIconManager {
5
+ protected icons: SvelteMap<string, MapImageIcon>;
6
+ constructor(iconMap?: SvelteMap<string, MapImageIcon>);
7
+ get iter(): MapIterator<[string, MapImageIcon]>;
8
+ get(id: string): MapImageIcon | undefined;
9
+ has(id: string): boolean;
10
+ loadIcons(): Promise<void>;
11
+ register(id: string, icon: HTMLImageElement): void;
12
+ protected loadImage(icon: MapImageIcon, map: MaptilerMap): Promise<void>;
13
+ protected updateImage(icon: MapImageIcon, map: MaptilerMap): Promise<void>;
14
+ private applyImage;
15
+ }
@@ -1,46 +1,52 @@
1
- import { mapManager as e } from "../map.svelte.js";
2
- import { SvelteMap as t } from "svelte/reactivity";
3
- //#region src/lib/map/integrations/map-icon-manager.ts
4
- var n = class {
5
- icons = new t();
6
- constructor(e) {
7
- e && (this.icons = e);
8
- }
9
- get iter() {
10
- return this.icons.entries();
11
- }
12
- get(e) {
13
- return this.icons.get(e);
14
- }
15
- has(e) {
16
- return this.icons.has(e);
17
- }
18
- async loadIcons() {
19
- e.map && await Promise.all(this.icons.values().map((t) => this.loadImage(t, e.map)));
20
- }
21
- register(e, t) {
22
- let n = {
23
- id: e,
24
- image: t
25
- };
26
- this.icons.set(e, n);
27
- }
28
- loadImage(e, t) {
29
- return this.applyImage("add", e, t);
30
- }
31
- updateImage(e, t) {
32
- return this.applyImage("update", e, t);
33
- }
34
- applyImage(e, t, n) {
35
- let r = () => e === "add" ? n.addImage(t.id, t.image) : n.updateImage(t.id, t.image);
36
- return t.image.complete ? (r(), Promise.resolve()) : new Promise((e, n) => {
37
- t.image.onload = () => {
38
- r(), e();
39
- }, t.image.onerror = (e) => {
40
- n(Error(`Failed to load image ${t.id}: ${e}`, { cause: e }));
41
- };
42
- });
43
- }
44
- };
45
- //#endregion
46
- export { n as MapIconManager };
1
+ import { mapManager } from "../map.svelte.ts";
2
+ import { SvelteMap } from "svelte/reactivity";
3
+ export class MapIconManager {
4
+ icons = new SvelteMap();
5
+ constructor(iconMap) {
6
+ if (iconMap) {
7
+ this.icons = iconMap;
8
+ }
9
+ }
10
+ get iter() {
11
+ return this.icons.entries();
12
+ }
13
+ get(id) {
14
+ return this.icons.get(id);
15
+ }
16
+ has(id) {
17
+ return this.icons.has(id);
18
+ }
19
+ async loadIcons() {
20
+ if (!mapManager.map)
21
+ return;
22
+ await Promise.all(this.icons.values().map((icon) => this.loadImage(icon, mapManager.map)));
23
+ }
24
+ register(id, icon) {
25
+ const imageIcon = { id, image: icon };
26
+ this.icons.set(id, imageIcon);
27
+ }
28
+ loadImage(icon, map) {
29
+ return this.applyImage("add", icon, map);
30
+ }
31
+ updateImage(icon, map) {
32
+ return this.applyImage("update", icon, map);
33
+ }
34
+ applyImage(action, icon, map) {
35
+ const apply = () => action === "add" ? map.addImage(icon.id, icon.image) : map.updateImage(icon.id, icon.image);
36
+ if (!icon.image.complete) {
37
+ return new Promise((resolve, reject) => {
38
+ icon.image.onload = () => {
39
+ apply();
40
+ resolve();
41
+ };
42
+ icon.image.onerror = (err) => {
43
+ reject(new Error(`Failed to load image ${icon.id}: ${err}`, { cause: err }));
44
+ };
45
+ });
46
+ }
47
+ else {
48
+ apply();
49
+ return Promise.resolve();
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,6 @@
1
+ export declare abstract class MapIntegration {
2
+ abstract referenceId: string;
3
+ abstract enabled: boolean;
4
+ abstract apply(): void;
5
+ remove?(): void;
6
+ }
@@ -1,5 +1,2 @@
1
- import "svelte/internal/client";
2
- //#region src/lib/map/integrations/map-integration.svelte.ts
3
- var e = class {};
4
- //#endregion
5
- export { e as MapIntegration };
1
+ export class MapIntegration {
2
+ }
@@ -0,0 +1,11 @@
1
+ import type { Map as MaptilerMap } from "@maptiler/sdk";
2
+ import { MapIntegration } from "./map-integration.svelte.ts";
3
+ export declare abstract class MapLayerIntegration extends MapIntegration {
4
+ abstract referenceId: string;
5
+ abstract mapLayer: Parameters<MaptilerMap["addLayer"]>[0];
6
+ abstract enabled: boolean;
7
+ beforeLayer?: string;
8
+ constructor();
9
+ apply(): void;
10
+ remove(): void;
11
+ }
@@ -1,23 +1,36 @@
1
- import { mapManager as e } from "../map.svelte.js";
2
- import { MapIntegration as t } from "./map-integration.svelte.js";
3
- import * as n from "svelte/internal/client";
4
- import { untrack as r } from "svelte";
5
- //#region src/lib/map/integrations/map-layer-integration.svelte.ts
6
- var i = class extends t {
7
- beforeLayer;
8
- constructor() {
9
- super(), n.effect_root(() => {
10
- n.user_effect(() => {
11
- e.map && this.enabled ? r(() => this.apply()) : e.map && !this.enabled && r(() => this.remove());
12
- });
13
- });
14
- }
15
- apply() {
16
- e.map && (e.map.getLayer(this.referenceId) || e.map.addLayer(this.mapLayer, this.beforeLayer), e.map.setLayoutProperty(this.referenceId, "visibility", this.enabled ? "visible" : "none"));
17
- }
18
- remove() {
19
- e.map?.getLayer(this.referenceId) && e.map.removeLayer(this.referenceId);
20
- }
21
- };
22
- //#endregion
23
- export { i as MapLayerIntegration };
1
+ import { untrack } from "svelte";
2
+ import { mapManager } from "../map.svelte.ts";
3
+ import { MapIntegration } from "./map-integration.svelte.ts";
4
+ export class MapLayerIntegration extends MapIntegration {
5
+ beforeLayer;
6
+ constructor() {
7
+ super();
8
+ // Each integration manages its own lifecycle. Tracking both mapManager.map and
9
+ // this.enabled means apply/remove fire automatically on map load and on enabled
10
+ // changes. untrack on the call itself prevents reactive reads inside apply/remove
11
+ // from leaking back into this effect's dependency graph.
12
+ $effect.root(() => {
13
+ $effect(() => {
14
+ if (mapManager.map && this.enabled) {
15
+ untrack(() => this.apply());
16
+ }
17
+ else if (mapManager.map && !this.enabled) {
18
+ untrack(() => this.remove());
19
+ }
20
+ });
21
+ });
22
+ }
23
+ apply() {
24
+ if (!mapManager.map)
25
+ return;
26
+ if (!mapManager.map.getLayer(this.referenceId)) {
27
+ mapManager.map.addLayer(this.mapLayer, this.beforeLayer);
28
+ }
29
+ mapManager.map.setLayoutProperty(this.referenceId, "visibility", this.enabled ? "visible" : "none");
30
+ }
31
+ remove() {
32
+ if (mapManager.map?.getLayer(this.referenceId)) {
33
+ mapManager.map.removeLayer(this.referenceId);
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,28 @@
1
+ import type { MapLayerEventType, Popup } from "@maptiler/sdk";
2
+ export type TooltipBuilder = (evt: MapLayerEventType["mousemove"] & object) => Popup | void;
3
+ export declare class TooltipManager {
4
+ static activeHandle: TooltipHandle | null;
5
+ private isEnabled;
6
+ private _tooltips;
7
+ get tooltips(): MapIterator<TooltipHandle>;
8
+ enable(layerId?: string): void;
9
+ disable(layerId?: string): void;
10
+ get(layerId: string): TooltipHandle | undefined;
11
+ has(layerId: string): boolean;
12
+ register(layerId: string, builder: TooltipBuilder, priority?: number): TooltipHandle;
13
+ with(layerId: string | Array<string>, cb: (tooltip: TooltipHandle) => void): void;
14
+ private forEachHandle;
15
+ }
16
+ declare class TooltipHandle {
17
+ layerId: string;
18
+ priority: number;
19
+ tooltip: Popup | null;
20
+ private activeFeatureId;
21
+ private isEnabled;
22
+ clearTooltip: () => void;
23
+ private setTooltip;
24
+ constructor(layerId: string, builder: TooltipBuilder, priority?: number);
25
+ enable(): void;
26
+ disable(): void;
27
+ }
28
+ export {};