@sjvair/monitor-map 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/lib/LoadScreen.svelte +68 -0
  2. package/dist/lib/LoadScreen.svelte.d.ts +25 -0
  3. package/dist/lib/MainMapView.svelte +1 -0
  4. package/dist/lib/MainMapView.svelte.d.ts +26 -0
  5. package/dist/lib/MapLegend.svelte +15 -0
  6. package/dist/lib/MapLegend.svelte.d.ts +18 -0
  7. package/dist/lib/MonitorDetailPanel.svelte +152 -0
  8. package/dist/lib/MonitorDetailPanel.svelte.d.ts +3 -0
  9. package/dist/lib/MonitorMapLayout.svelte +193 -0
  10. package/dist/lib/MonitorMapLayout.svelte.d.ts +7 -0
  11. package/dist/lib/actions.d.ts +3 -0
  12. package/dist/lib/actions.js +12 -8
  13. package/dist/lib/assets/icons/adjustment-horizontal.svg +3 -0
  14. package/dist/lib/assets/logos/airgradient-blue.svg +63 -0
  15. package/dist/lib/assets/logos/airnow-compact.jpg +0 -0
  16. package/dist/lib/assets/logos/carb-compact.jpg +0 -0
  17. package/dist/lib/assets/logos/purpleair-compact.png +0 -0
  18. package/dist/lib/assets/logos/sjvair-parts/sjvair-air.webp +0 -0
  19. package/dist/lib/assets/logos/sjvair-parts/sjvair-icon.webp +0 -0
  20. package/dist/lib/assets/logos/sjvair-parts/sjvair-sjv.webp +0 -0
  21. package/dist/lib/assets/logos/sjvair-white.svg +115 -0
  22. package/dist/lib/assets/logos/sjvair.svg +96 -0
  23. package/dist/lib/collocation-sites/CollocationTooltip.svelte +98 -0
  24. package/dist/lib/collocation-sites/CollocationTooltip.svelte.d.ts +7 -0
  25. package/dist/lib/collocation-sites/collocation-utils.d.ts +3 -0
  26. package/dist/lib/collocation-sites/collocation-utils.js +30 -0
  27. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.d.ts +7 -0
  28. package/dist/lib/collocation-sites/collocations-icon-manager.svelte.js +17 -20
  29. package/dist/lib/collocation-sites/collocations-map-integration.svelte.d.ts +18 -0
  30. package/dist/lib/collocation-sites/collocations-map-integration.svelte.js +98 -83
  31. package/dist/lib/collocation-sites/collocations.svelte.d.ts +9 -0
  32. package/dist/lib/collocation-sites/collocations.svelte.js +17 -26
  33. package/dist/lib/collocation-sites/types.d.ts +8 -0
  34. package/dist/lib/collocation-sites/types.js +1 -0
  35. package/dist/lib/colors.d.ts +17 -0
  36. package/dist/lib/colors.js +29 -23
  37. package/dist/lib/components/DataBox.svelte +29 -0
  38. package/dist/lib/components/DataBox.svelte.d.ts +9 -0
  39. package/dist/lib/components/DisplayOption.svelte +7 -0
  40. package/dist/lib/components/DisplayOption.svelte.d.ts +5 -0
  41. package/dist/lib/components/MapLayersDisplayOptions.svelte +42 -0
  42. package/dist/lib/components/MapLayersDisplayOptions.svelte.d.ts +18 -0
  43. package/dist/lib/components/SegmentedControl.svelte +61 -0
  44. package/dist/lib/components/SegmentedControl.svelte.d.ts +11 -0
  45. package/dist/lib/components/ToggleSwitch.svelte +93 -0
  46. package/dist/lib/components/ToggleSwitch.svelte.d.ts +9 -0
  47. package/dist/lib/components/ui/button/button.svelte +89 -0
  48. package/dist/lib/components/ui/button/button.svelte.d.ts +70 -0
  49. package/dist/lib/components/ui/button/index.d.ts +2 -0
  50. package/dist/lib/components/ui/button/index.js +4 -0
  51. package/dist/lib/components/ui/range-calendar/index.d.ts +19 -0
  52. package/dist/lib/components/ui/range-calendar/index.js +21 -0
  53. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte +76 -0
  54. package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte.d.ts +19 -0
  55. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
  56. package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
  57. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte +36 -0
  58. package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
  59. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte +7 -0
  60. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte.d.ts +4 -0
  61. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte +7 -0
  62. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte.d.ts +4 -0
  63. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
  64. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
  65. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
  66. package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
  67. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte +19 -0
  68. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
  69. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte +19 -0
  70. package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
  71. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
  72. package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
  73. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte +44 -0
  74. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte.d.ts +4 -0
  75. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte +15 -0
  76. package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte.d.ts +5 -0
  77. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte +19 -0
  78. package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
  79. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte +19 -0
  80. package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte.d.ts +5 -0
  81. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte +36 -0
  82. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +8 -0
  83. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte +36 -0
  84. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +8 -0
  85. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte +43 -0
  86. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte.d.ts +4 -0
  87. package/dist/lib/components/ui/range-calendar/range-calendar.svelte +112 -0
  88. package/dist/lib/components/ui/range-calendar/range-calendar.svelte.d.ts +21 -0
  89. package/dist/lib/data-chart/DataChart.svelte +303 -0
  90. package/dist/lib/data-chart/DataChart.svelte.d.ts +7 -0
  91. package/dist/lib/data-chart/DateRange.d.ts +6 -0
  92. package/dist/lib/data-chart/DateRange.js +15 -14
  93. package/dist/lib/data-chart/chart-utils.d.ts +3 -0
  94. package/dist/lib/data-chart/chart-utils.js +157 -93
  95. package/dist/lib/data-chart/data-chart.svelte.d.ts +7 -0
  96. package/dist/lib/data-chart/data-chart.svelte.js +7 -28
  97. package/dist/lib/data-chart/requests.d.ts +3 -0
  98. package/dist/lib/data-chart/requests.js +36 -28
  99. package/dist/lib/data-chart/tooltip.d.ts +10 -0
  100. package/dist/lib/data-chart/tooltip.js +160 -98
  101. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte +16 -0
  102. package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte.d.ts +7 -0
  103. package/dist/lib/ev-stations/components/EvStationTooltip.svelte +127 -0
  104. package/dist/lib/ev-stations/components/EvStationTooltip.svelte.d.ts +7 -0
  105. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte +46 -0
  106. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte.d.ts +18 -0
  107. package/dist/lib/ev-stations/data-maps.d.ts +5 -0
  108. package/dist/lib/ev-stations/data-maps.js +152 -4
  109. package/dist/lib/ev-stations/ev-station-icons.d.ts +16 -0
  110. package/dist/lib/ev-stations/ev-station-icons.js +21 -27
  111. package/dist/lib/ev-stations/ev-stations-cluster-renderer.d.ts +19 -0
  112. package/dist/lib/ev-stations/ev-stations-cluster-renderer.js +130 -117
  113. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.d.ts +31 -0
  114. package/dist/lib/ev-stations/ev-stations-map-integration.svelte.js +206 -180
  115. package/dist/lib/ev-stations/ev-stations.svelte.d.ts +9 -0
  116. package/dist/lib/ev-stations/ev-stations.svelte.js +54 -32
  117. package/dist/lib/ev-stations/types.d.ts +53 -0
  118. package/dist/lib/ev-stations/types.js +1 -0
  119. package/dist/lib/ev-stations/zip-codes.d.ts +13 -0
  120. package/dist/lib/ev-stations/zip-codes.js +457 -135
  121. package/dist/lib/hms/components/HMSFireLegend.svelte +21 -0
  122. package/dist/lib/hms/components/HMSFireLegend.svelte.d.ts +18 -0
  123. package/dist/lib/hms/hms-fire-icon-manager.d.ts +5 -0
  124. package/dist/lib/hms/hms-fire-icon-manager.js +28 -37
  125. package/dist/lib/hms/hms-fire-map-integration.svelte.d.ts +23 -0
  126. package/dist/lib/hms/hms-fire-map-integration.svelte.js +94 -97
  127. package/dist/lib/hms/hms-smoke-map-integration.svelte.d.ts +19 -0
  128. package/dist/lib/hms/hms-smoke-map-integration.svelte.js +68 -84
  129. package/dist/lib/hms/hms.svelte.d.ts +19 -0
  130. package/dist/lib/hms/hms.svelte.js +225 -76
  131. package/dist/lib/index.d.ts +68 -0
  132. package/dist/lib/index.js +56 -21
  133. package/dist/lib/map/Map.svelte +13 -0
  134. package/dist/lib/map/Map.svelte.d.ts +8 -0
  135. package/dist/lib/map/MapStyleDisplayOptions.svelte +61 -0
  136. package/dist/lib/map/MapStyleDisplayOptions.svelte.d.ts +3 -0
  137. package/dist/lib/map/Menu.svelte +64 -0
  138. package/dist/lib/map/Menu.svelte.d.ts +5 -0
  139. package/dist/lib/map/icons.d.ts +7 -0
  140. package/dist/lib/map/icons.js +24 -22
  141. package/dist/lib/map/integrations/base-layer-seperator.d.ts +9 -0
  142. package/dist/lib/map/integrations/base-layer-seperator.js +11 -12
  143. package/dist/lib/map/integrations/click-manager.d.ts +14 -0
  144. package/dist/lib/map/integrations/click-manager.js +52 -33
  145. package/dist/lib/map/integrations/integrations-manager.d.ts +8 -0
  146. package/dist/lib/map/integrations/integrations-manager.js +20 -12
  147. package/dist/lib/map/integrations/map-display-option.svelte.d.ts +7 -0
  148. package/dist/lib/map/integrations/map-display-option.svelte.js +10 -18
  149. package/dist/lib/map/integrations/map-geojson-integration.svelte.d.ts +13 -0
  150. package/dist/lib/map/integrations/map-geojson-integration.svelte.js +21 -17
  151. package/dist/lib/map/integrations/map-icon-manager.d.ts +15 -0
  152. package/dist/lib/map/integrations/map-icon-manager.js +52 -46
  153. package/dist/lib/map/integrations/map-integration.svelte.d.ts +6 -0
  154. package/dist/lib/map/integrations/map-integration.svelte.js +2 -5
  155. package/dist/lib/map/integrations/map-layer-integration.svelte.d.ts +11 -0
  156. package/dist/lib/map/integrations/map-layer-integration.svelte.js +36 -23
  157. package/dist/lib/map/integrations/tooltip.svelte.d.ts +28 -0
  158. package/dist/lib/map/integrations/tooltip.svelte.js +120 -78
  159. package/dist/lib/map/integrations/types.d.ts +14 -0
  160. package/dist/lib/map/integrations/types.js +1 -0
  161. package/dist/lib/map/map.svelte.d.ts +14 -0
  162. package/dist/lib/map/map.svelte.js +48 -50
  163. package/dist/lib/map/utils.d.ts +7 -0
  164. package/dist/lib/map/utils.js +32 -29
  165. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte +112 -0
  166. package/dist/lib/monitors/components/MonitorClusterTooltip.svelte.d.ts +7 -0
  167. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte +41 -0
  168. package/dist/lib/monitors/components/MonitorMarkersLegend.svelte.d.ts +3 -0
  169. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte +128 -0
  170. package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte.d.ts +6 -0
  171. package/dist/lib/monitors/components/MonitorTooltip.svelte +61 -0
  172. package/dist/lib/monitors/components/MonitorTooltip.svelte.d.ts +7 -0
  173. package/dist/lib/monitors/components/MonitorWidgetModal.svelte +100 -0
  174. package/dist/lib/monitors/components/MonitorWidgetModal.svelte.d.ts +6 -0
  175. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +79 -0
  176. package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte.d.ts +3 -0
  177. package/dist/lib/monitors/monitor-utils.d.ts +4 -0
  178. package/dist/lib/monitors/monitor-utils.js +33 -23
  179. package/dist/lib/monitors/monitors-cluster-renderer.d.ts +33 -0
  180. package/dist/lib/monitors/monitors-cluster-renderer.js +218 -209
  181. package/dist/lib/monitors/monitors-icon-manager.svelte.d.ts +13 -0
  182. package/dist/lib/monitors/monitors-icon-manager.svelte.js +75 -70
  183. package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +40 -0
  184. package/dist/lib/monitors/monitors-map-integration.svelte.js +278 -270
  185. package/dist/lib/monitors/monitors.svelte.d.ts +16 -0
  186. package/dist/lib/monitors/monitors.svelte.js +38 -63
  187. package/dist/lib/monitors/types.d.ts +26 -0
  188. package/dist/lib/monitors/types.js +1 -0
  189. package/dist/lib/reactivity.svelte.d.ts +0 -0
  190. package/dist/lib/reactivity.svelte.js +83 -0
  191. package/dist/lib/router-context.d.ts +27 -0
  192. package/dist/lib/router-context.js +11 -11
  193. package/dist/lib/routes.d.ts +2 -0
  194. package/dist/lib/routes.js +10 -9
  195. package/dist/lib/search/Search.svelte +189 -0
  196. package/dist/lib/search/Search.svelte.d.ts +3 -0
  197. package/dist/lib/search/service.d.ts +17 -0
  198. package/dist/lib/search/service.js +75 -85
  199. package/dist/lib/utils.d.ts +13 -0
  200. package/dist/lib/utils.js +10 -12
  201. package/dist/lib/weather.d.ts +1 -0
  202. package/dist/lib/weather.js +11 -7
  203. package/dist/lib/wind/wind.svelte.d.ts +10 -0
  204. package/dist/lib/wind/wind.svelte.js +13 -21
  205. package/package.json +9 -7
  206. package/src/lib/LoadScreen.svelte +3 -3
  207. package/src/lib/hms/components/HMSFireLegend.svelte +1 -1
  208. package/src/lib/hms/hms.svelte.ts +8 -9
  209. package/src/lib/index.ts +18 -0
  210. package/src/lib/routes.ts +6 -1
  211. package/src/lib/utils.ts +1 -1
  212. package/dist/lib/LoadScreen.js +0 -73
  213. package/dist/lib/MainMapView.js +0 -7
  214. package/dist/lib/MapLegend.js +0 -13
  215. package/dist/lib/MonitorDetailPanel.js +0 -169
  216. package/dist/lib/MonitorMapLayout.js +0 -91
  217. package/dist/lib/_virtual/_rolldown/runtime.js +0 -11
  218. package/dist/lib/assets/logos/airgradient-blue.js +0 -4
  219. package/dist/lib/assets/logos/airnow-compact.js +0 -4
  220. package/dist/lib/assets/logos/carb-compact.js +0 -4
  221. package/dist/lib/assets/logos/purpleair-compact.js +0 -4
  222. package/dist/lib/assets/logos/sjvair.js +0 -4
  223. package/dist/lib/collocation-sites/CollocationTooltip.js +0 -105
  224. package/dist/lib/components/DataBox.js +0 -30
  225. package/dist/lib/components/DisplayOption.js +0 -10
  226. package/dist/lib/components/MapLayersDisplayOptions.js +0 -87
  227. package/dist/lib/components/SegmentedControl.js +0 -37
  228. package/dist/lib/components/ToggleSwitch.js +0 -17
  229. package/dist/lib/components/ui/button/button.js +0 -34
  230. package/dist/lib/components/ui/range-calendar/range-calendar-caption.js +0 -82
  231. package/dist/lib/components/ui/range-calendar/range-calendar-cell.js +0 -35
  232. package/dist/lib/components/ui/range-calendar/range-calendar-day.js +0 -35
  233. package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.js +0 -27
  234. package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.js +0 -27
  235. package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.js +0 -35
  236. package/dist/lib/components/ui/range-calendar/range-calendar-grid.js +0 -35
  237. package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.js +0 -35
  238. package/dist/lib/components/ui/range-calendar/range-calendar-header.js +0 -35
  239. package/dist/lib/components/ui/range-calendar/range-calendar-month-select.js +0 -61
  240. package/dist/lib/components/ui/range-calendar/range-calendar-month.js +0 -25
  241. package/dist/lib/components/ui/range-calendar/range-calendar-months.js +0 -25
  242. package/dist/lib/components/ui/range-calendar/range-calendar-nav.js +0 -25
  243. package/dist/lib/components/ui/range-calendar/range-calendar-next-button.js +0 -58
  244. package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.js +0 -58
  245. package/dist/lib/components/ui/range-calendar/range-calendar-year-select.js +0 -59
  246. package/dist/lib/components/ui/range-calendar/range-calendar.js +0 -272
  247. package/dist/lib/data-chart/DataChart.js +0 -142
  248. package/dist/lib/ev-stations/components/EvStationClusterTooltip.js +0 -16
  249. package/dist/lib/ev-stations/components/EvStationTooltip.js +0 -120
  250. package/dist/lib/ev-stations/components/EvStationsDisplayOptions.js +0 -41
  251. package/dist/lib/hms/components/HMSFireLegend.js +0 -35
  252. package/dist/lib/map/Map.js +0 -14
  253. package/dist/lib/map/MapStyleDisplayOptions.js +0 -43
  254. package/dist/lib/map/Menu.js +0 -44
  255. package/dist/lib/monitors/components/MonitorClusterTooltip.js +0 -83
  256. package/dist/lib/monitors/components/MonitorMarkersLegend.js +0 -35
  257. package/dist/lib/monitors/components/MonitorSubscriptionManager.js +0 -104
  258. package/dist/lib/monitors/components/MonitorTooltip.js +0 -59
  259. package/dist/lib/monitors/components/MonitorWidgetModal.js +0 -40
  260. package/dist/lib/monitors/components/MonitorsDisplayOptions.js +0 -76
  261. package/dist/lib/search/Search.js +0 -124
  262. package/dist/lib/sjvair-air.avif +0 -0
  263. package/dist/lib/sjvair-air.png +0 -0
  264. package/dist/lib/sjvair-air.webp +0 -0
  265. package/dist/lib/sjvair-air2.avif +0 -0
  266. package/dist/lib/sjvair-air2.png +0 -0
  267. package/dist/lib/sjvair-air2.webp +0 -0
  268. package/dist/lib/sjvair-icon.avif +0 -0
  269. package/dist/lib/sjvair-icon.png +0 -0
  270. package/dist/lib/sjvair-icon.webp +0 -0
  271. package/dist/lib/sjvair-icon2.avif +0 -0
  272. package/dist/lib/sjvair-icon2.png +0 -0
  273. package/dist/lib/sjvair-icon2.webp +0 -0
  274. package/dist/lib/sjvair-sjv.avif +0 -0
  275. package/dist/lib/sjvair-sjv.png +0 -0
  276. package/dist/lib/sjvair-sjv.webp +0 -0
  277. package/dist/lib/sjvair-sjv2.avif +0 -0
  278. package/dist/lib/sjvair-sjv2.png +0 -0
  279. package/dist/lib/sjvair-sjv2.webp +0 -0
@@ -0,0 +1,68 @@
1
+ <script lang="ts" module>
2
+ export interface LoadScreenState {
3
+ enabled: boolean;
4
+ entered: boolean;
5
+ }
6
+
7
+ export const loadScreenState: LoadScreenState = $state({
8
+ enabled: true,
9
+ entered: false
10
+ });
11
+
12
+ export function enable() {
13
+ if (!loadScreenState.enabled) {
14
+ loadScreenState.enabled = true;
15
+ }
16
+ }
17
+
18
+ export function disable() {
19
+ if (loadScreenState.enabled) {
20
+ loadScreenState.enabled = false;
21
+ }
22
+ }
23
+ </script>
24
+
25
+ <script lang="ts">
26
+ import type { Attachment } from "svelte/attachments";
27
+
28
+ const animationTrigger: Attachment<HTMLDivElement> = () => {
29
+ loadScreenState.entered = true;
30
+ };
31
+ </script>
32
+
33
+ {#if loadScreenState.enabled}
34
+ <div
35
+ class="absolute top-0 left-0 z-50 flex h-full w-full items-center justify-center overflow-hidden bg-white"
36
+ {@attach animationTrigger}
37
+ >
38
+ <div class="flex justify-around gap-4">
39
+ <enhanced:img
40
+ src="./assets/logos/sjvair-parts/sjvair-icon.webp"
41
+ alt="SJVAir Icon"
42
+ class="icon inline-block h-24! w-auto! transition-all duration-500 ease-out object-contain"
43
+ class:translate-x-0={loadScreenState.entered}
44
+ class:-translate-x-full={!loadScreenState.entered}
45
+ class:opacity-100={loadScreenState.entered}
46
+ class:opacity-0={!loadScreenState.entered}
47
+ />
48
+ <enhanced:img
49
+ src="./assets/logos/sjvair-parts/sjvair-sjv.webp"
50
+ alt="SJV"
51
+ class="sjv inline-block h-24! w-auto! transition-all duration-500 ease-out object-contain"
52
+ class:translate-y-0={loadScreenState.entered}
53
+ class:-translate-y-full={!loadScreenState.entered}
54
+ class:opacity-100={loadScreenState.entered}
55
+ class:opacity-0={!loadScreenState.entered}
56
+ />
57
+ <enhanced:img
58
+ src="./assets/logos/sjvair-parts/sjvair-air.webp"
59
+ alt="Air"
60
+ class="air inline-block h-24! w-auto! transition-all duration-500 ease-out object-contain"
61
+ class:translate-y-0={loadScreenState.entered}
62
+ class:translate-y-full={!loadScreenState.entered}
63
+ class:opacity-100={loadScreenState.entered}
64
+ class:opacity-0={!loadScreenState.entered}
65
+ />
66
+ </div>
67
+ </div>
68
+ {/if}
@@ -0,0 +1,25 @@
1
+ export interface LoadScreenState {
2
+ enabled: boolean;
3
+ entered: boolean;
4
+ }
5
+ export declare const loadScreenState: LoadScreenState;
6
+ export declare function enable(): void;
7
+ export declare function disable(): void;
8
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
9
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
10
+ $$bindings?: Bindings;
11
+ } & Exports;
12
+ (internal: unknown, props: {
13
+ $$events?: Events;
14
+ $$slots?: Slots;
15
+ }): Exports & {
16
+ $set?: any;
17
+ $on?: any;
18
+ };
19
+ z_$$bindings?: Bindings;
20
+ }
21
+ declare const LoadScreen: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
22
+ [evt: string]: CustomEvent<any>;
23
+ }, {}, {}, string>;
24
+ type LoadScreen = InstanceType<typeof LoadScreen>;
25
+ export default LoadScreen;
@@ -0,0 +1 @@
1
+ <!-- Map view — the map renders in App.svelte, not in the router outlet -->
@@ -0,0 +1,26 @@
1
+ export default MainMapView;
2
+ type MainMapView = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const MainMapView: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import MonitorMarkersLegend from "./monitors/components/MonitorMarkersLegend.svelte";
3
+ import HMSFireLegend from "./hms/components/HMSFireLegend.svelte";
4
+ </script>
5
+
6
+ <!--
7
+ <div class="z-10 absolute bottom-6 left-6 w-1/2 lg:w-1/5">
8
+ <MonitorMarkersLegend />
9
+ <HMSFireLegend />
10
+ </div>
11
+ -->
12
+ <div class="flex flex-col gap-1 pointer-events-none pl-4 pb-4">
13
+ <HMSFireLegend />
14
+ <MonitorMarkersLegend />
15
+ </div>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const MapLegend: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type MapLegend = InstanceType<typeof MapLegend>;
18
+ export default MapLegend;
@@ -0,0 +1,152 @@
1
+ <script lang="ts">
2
+ import type { ComponentProps } from "svelte";
3
+ import type { SJVAirEntryLevel } from "@sjvair/sdk";
4
+ import DataBox from "./components/DataBox.svelte";
5
+ import MonitorWidgetModal from "./monitors/components/MonitorWidgetModal.svelte";
6
+ import MonitorSubscriptionManager from "./monitors/components/MonitorSubscriptionManager.svelte";
7
+ import DataChart from "./data-chart/DataChart.svelte";
8
+ import { monitorsManager } from "./";
9
+ import { useMonitorMapRouter } from "./router-context";
10
+ import { fetchTempByCoords } from "./weather.ts";
11
+ import { Colors, valueToColor } from "./colors";
12
+ import { getCurrentLevel } from "./monitors/monitor-utils.ts";
13
+
14
+ type TempDataBox = Pick<ComponentProps<typeof DataBox>, "color" | "value">;
15
+
16
+ interface BadgeOpts {
17
+ bgClass?: string;
18
+ iconColorClass?: string;
19
+ labelColorClass?: string;
20
+ href?: string;
21
+ }
22
+ const { route, navigate, basePath } = useMonitorMapRouter();
23
+
24
+ const monitor = $derived(monitorsManager.latest?.get(route.params.id ?? ""));
25
+ let tempData: TempDataBox | undefined = $state();
26
+ const entryData: ComponentProps<typeof DataBox> | undefined = $derived.by(() => {
27
+ if (!monitor || !monitorsManager.meta) return;
28
+
29
+ const entryType = monitorsManager.meta.entryType(monitor.latest.entry_type);
30
+ const level: SJVAirEntryLevel | undefined = getCurrentLevel(
31
+ monitor.latest.value,
32
+ entryType.asIter.levels!
33
+ );
34
+
35
+ const updateDuration = monitorsManager.meta.monitorType(monitor.type).expected_interval;
36
+
37
+ return {
38
+ color: level?.color ?? "",
39
+ header: entryType.label,
40
+ subheading: `(${updateDuration} avg)`,
41
+ value: Math.round(parseInt(monitor.latest.value, 10)).toString()
42
+ };
43
+ });
44
+
45
+ const tempColors = [
46
+ { min: -Infinity, color: Colors.blue },
47
+ { min: 65, color: Colors.green },
48
+ { min: 78, color: Colors.yellow },
49
+ { min: 95, color: Colors.red }
50
+ ];
51
+
52
+ $effect(() => {
53
+ if (monitor && monitor.position) {
54
+ fetchTempByCoords(monitor.position.coordinates).then((temperature) => {
55
+ tempData = {
56
+ value: `${temperature}°F`,
57
+ color: valueToColor(temperature, tempColors)
58
+ };
59
+ });
60
+ }
61
+ });
62
+ </script>
63
+
64
+ {#snippet badge(icon: string, label: string, opts: BadgeOpts = {})}
65
+ <span
66
+ class="flex items-center justify-center gap-1 rounded-sm border px-1 py-0.5
67
+ {opts.bgClass ?? 'bg-neutral-100'}"
68
+ >
69
+ <span class={["svg-icon", icon, opts.iconColorClass ?? "bg-black/70"]}></span>
70
+ {#if opts.href}
71
+ <a class="text-link text-xs" href={opts.href} target="_blank" translate="no">{label}</a>
72
+ {:else}
73
+ <span
74
+ class={["text-xs whitespace-nowrap", opts.labelColorClass ?? "text-black/70"]}
75
+ translate="no">{label}</span
76
+ >
77
+ {/if}
78
+ </span>
79
+ {/snippet}
80
+
81
+ <div class="flex h-full w-full flex-col overflow-y-auto bg-white">
82
+ <div
83
+ class="flex flex-col items-center justify-center gap-8 border-b border-gray-200 p-4 shadow-lg"
84
+ >
85
+ <button
86
+ class="cursor-pointer self-end rounded border border-gray-300 px-2 py-1 text-sm hover:bg-gray-50"
87
+ onclick={() => navigate(`${basePath}/`)}
88
+ >
89
+ ✕ Close
90
+ </button>
91
+ {#if monitor}
92
+ <h2 class="text-center text-3xl font-semibold">{monitor.name}</h2>
93
+ <div class="flex flex-wrap items-center justify-center gap-4">
94
+ {#if monitor.is_sjvair}
95
+ {@render badge("lungs", "SJVAir", {
96
+ bgClass: "bg-aqua-haze",
97
+ iconColorClass: "bg-sky-600",
98
+ labelColorClass: "text-sky-600"
99
+ })}
100
+ {/if}
101
+
102
+ {@render badge("rss-feed", monitor.data_source.name, { href: monitor.data_source.url })}
103
+ {@render badge("router", monitor.device)}
104
+ {@render badge("location-on", monitor.county)}
105
+ {@render badge("location-searching", monitor.location)}
106
+ </div>
107
+ {/if}
108
+ </div>
109
+
110
+ <div class="flex flex-col items-center gap-12 overflow-y-auto p-5 pt-10">
111
+ {#if monitor}
112
+ <div class="flex w-full justify-around">
113
+ {#if tempData}
114
+ <DataBox color={tempData.color} header="Temperature" value={tempData.value} />
115
+ {/if}
116
+ {#if entryData}
117
+ <DataBox
118
+ color={entryData.color}
119
+ header={entryData.header}
120
+ subheading={entryData.subheading}
121
+ value={entryData.value}
122
+ />
123
+ {/if}
124
+ </div>
125
+
126
+ <MonitorWidgetModal monitorId={monitor.id} />
127
+ <!-- eslint-disable-next-line @typescript-eslint/no-explicit-any -->
128
+ {#if (globalThis as any).USER?.is_authenticated}
129
+ <MonitorSubscriptionManager monitorId={monitor.id} />
130
+ {/if}
131
+
132
+ <div class="w-full">
133
+ <DataChart {monitor} />
134
+ </div>
135
+
136
+ <div class="w-full">
137
+ <h3 class="font-semibold">Data Provided Courtesy Of:</h3>
138
+ <ul>
139
+ {#each monitor.data_providers as provider, idx (idx)}
140
+ <li>
141
+ {#if provider.url}
142
+ <a class="text-link" href={provider.url} target="_blank">{provider.name}</a>
143
+ {:else}
144
+ <span>{provider.name}</span>
145
+ {/if}
146
+ </li>
147
+ {/each}
148
+ </ul>
149
+ </div>
150
+ {/if}
151
+ </div>
152
+ </div>
@@ -0,0 +1,3 @@
1
+ declare const MonitorDetailPanel: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type MonitorDetailPanel = ReturnType<typeof MonitorDetailPanel>;
3
+ export default MonitorDetailPanel;
@@ -0,0 +1,193 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import { onDestroy } from "svelte";
4
+ import LoadScreen, { disable as disableLoadScreen } from "./LoadScreen.svelte";
5
+ import Map from "./map/Map.svelte";
6
+ import Menu from "./map/Menu.svelte";
7
+ import MonitorsDisplayOptions from "./monitors/components/MonitorsDisplayOptions.svelte";
8
+ import MapLayersDisplayOptions from "./components/MapLayersDisplayOptions.svelte";
9
+ import MapStyleDisplayOptions from "./map/MapStyleDisplayOptions.svelte";
10
+ import { mapManager } from "./map/map.svelte";
11
+ import { monitorsManager } from "./monitors/monitors.svelte";
12
+ import { monitorsMapIntegration } from "./monitors/monitors-map-integration.svelte.ts";
13
+ import { windMapIntegration } from "./wind/wind.svelte";
14
+ import { baseLayerSeperator } from "./map/integrations/base-layer-seperator";
15
+ import type { SomeMapIntegration } from "./map/integrations/types";
16
+ import { collocationSitesManager } from "./collocation-sites/collocations.svelte";
17
+ import { collocationSitesMapIntegration } from "./collocation-sites/collocations-map-integration.svelte";
18
+ import EvStationsDisplayOptions from "./ev-stations/components/EvStationsDisplayOptions.svelte";
19
+ import { evStationsMapIntegration } from "./ev-stations/ev-stations-map-integration.svelte.ts";
20
+ import { hmsManager } from "./hms/hms.svelte.ts";
21
+ import { hmsFireMapIntegration } from "./hms/hms-fire-map-integration.svelte.ts";
22
+ import { hmsSmokeMapIntegration } from "./hms/hms-smoke-map-integration.svelte.ts";
23
+ import MapLegend from "./MapLegend.svelte";
24
+ import Search from "./search/Search.svelte";
25
+ import { useMonitorMapRouter } from "./router-context";
26
+
27
+ interface Props {
28
+ children: Snippet;
29
+ }
30
+
31
+ let { children }: Props = $props();
32
+
33
+ const { route, navigate, basePath } = useMonitorMapRouter();
34
+
35
+ const TRANSITION_MS = 300;
36
+
37
+ const integrations: Array<SomeMapIntegration> = [
38
+ baseLayerSeperator,
39
+ collocationSitesMapIntegration,
40
+ windMapIntegration,
41
+ hmsSmokeMapIntegration,
42
+ hmsFireMapIntegration,
43
+ monitorsMapIntegration,
44
+ evStationsMapIntegration
45
+ ];
46
+
47
+ monitorsManager.init(route.search.pollutant);
48
+ collocationSitesManager.init();
49
+ hmsManager.init();
50
+ monitorsMapIntegration.onMonitorClick = (id: string) => {
51
+ navigate(`${basePath}/monitor/:id`, { params: { id } }).catch(console.error);
52
+ };
53
+
54
+ let panelOpen = $derived(route.pathname.startsWith(`${basePath}/monitor/`));
55
+
56
+ $effect(() => {
57
+ if (mapManager.map && monitorsManager.initialized) {
58
+ mapManager.map.once("idle", () => disableLoadScreen());
59
+ }
60
+ });
61
+
62
+ $effect(() => {
63
+ if (panelOpen) {
64
+ // Container width snapped to open; resize after layout settles
65
+ requestAnimationFrame(() => mapManager.map?.resize());
66
+ } else {
67
+ // Container width snaps back after the transform transition ends
68
+ setTimeout(() => mapManager.map?.resize(), TRANSITION_MS);
69
+ }
70
+ });
71
+
72
+ // Clear selected icon scale when the detail panel closes
73
+ $effect(() => {
74
+ if (panelOpen) return;
75
+ monitorsMapIntegration.selectedMonitorId = null;
76
+ });
77
+
78
+ onDestroy(() => {
79
+ monitorsManager.autoUpdate.stop();
80
+ });
81
+
82
+ /**
83
+ * HACK: Fix for escaping sv-router and allowing navigation to other pages,
84
+ * as well as navigating back
85
+ */
86
+ const rootPath = basePath || "/";
87
+ const knownRoutes = [`${basePath}/monitor/`];
88
+
89
+ window.addEventListener("pageshow", (e) => {
90
+ if (e.persisted) window.location.reload();
91
+ });
92
+
93
+ document.addEventListener(
94
+ "click",
95
+ (e) => {
96
+ const anchor = e
97
+ .composedPath()
98
+ .find((el) => el instanceof HTMLAnchorElement) as HTMLAnchorElement;
99
+ if (!anchor) return;
100
+ const { pathname } = new URL(anchor.href);
101
+ const isKnown = pathname === rootPath || knownRoutes.some((r) => pathname.startsWith(r));
102
+ if (!isKnown) {
103
+ e.stopImmediatePropagation();
104
+ window.location.href = anchor.href;
105
+ }
106
+ },
107
+ { capture: true }
108
+ );
109
+ </script>
110
+
111
+ <div class="shell" class:panel-open={panelOpen}>
112
+ <LoadScreen />
113
+ <div class="relative flex-1 overflow-hidden">
114
+ <Map {integrations} />
115
+ <div class="z-10 absolute bottom-0 left-0 pointer-events-none">
116
+ <MapLegend />
117
+ </div>
118
+ <div class="absolute top-4 left-4 z-10">
119
+ <div class="absolute z-10">
120
+ <Menu>
121
+ <MonitorsDisplayOptions />
122
+ <EvStationsDisplayOptions />
123
+ <MapLayersDisplayOptions />
124
+ <MapStyleDisplayOptions />
125
+ </Menu>
126
+ </div>
127
+ <div class="absolute left-16">
128
+ <Search />
129
+ </div>
130
+ </div>
131
+ </div>
132
+ <div class="panel-container">
133
+ <div class="panel-content">
134
+ {@render children()}
135
+ </div>
136
+ </div>
137
+ </div>
138
+
139
+ <style>
140
+ .shell {
141
+ display: flex;
142
+ position: relative;
143
+ width: 100%;
144
+ height: 100%;
145
+ }
146
+
147
+ .panel-container {
148
+ flex-shrink: 0;
149
+ overflow: hidden;
150
+ width: 0;
151
+ }
152
+
153
+ .shell.panel-open .panel-container {
154
+ width: 33.333vw;
155
+ }
156
+
157
+ .panel-content {
158
+ width: 33.333vw;
159
+ height: 100%;
160
+ transform: translateX(100%);
161
+ transition: transform 300ms ease-in-out;
162
+ }
163
+
164
+ .shell.panel-open .panel-content {
165
+ transform: translateX(0);
166
+ }
167
+
168
+ @media (max-width: 768px) {
169
+ .shell {
170
+ flex-direction: column;
171
+ }
172
+
173
+ .panel-container {
174
+ width: 100vw;
175
+ height: 0;
176
+ }
177
+
178
+ .shell.panel-open .panel-container {
179
+ width: 100vw;
180
+ height: 50vh;
181
+ }
182
+
183
+ .panel-content {
184
+ width: 100vw;
185
+ height: 50vh;
186
+ transform: translateY(100%);
187
+ }
188
+
189
+ .shell.panel-open .panel-content {
190
+ transform: translateY(0);
191
+ }
192
+ }
193
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from "svelte";
2
+ interface Props {
3
+ children: Snippet;
4
+ }
5
+ declare const MonitorMapLayout: import("svelte").Component<Props, {}, "">;
6
+ type MonitorMapLayout = ReturnType<typeof MonitorMapLayout>;
7
+ export default MonitorMapLayout;
@@ -0,0 +1,3 @@
1
+ export declare function portal(node: HTMLElement): {
2
+ destroy(): void;
3
+ } | undefined;
@@ -1,9 +1,13 @@
1
- //#region src/lib/actions.ts
2
- function e(e) {
3
- let t = document.getElementById("SJVAirMonitorMap");
4
- if (t) return t.appendChild(e), { destroy() {
5
- e.remove();
6
- } };
1
+ // CSS transforms create a new containing block for `position: fixed` descendants.
2
+ // Use this action to move a node to document.body, escaping any transformed ancestor.
3
+ export function portal(node) {
4
+ const target = document.getElementById("SJVAirMonitorMap");
5
+ if (target) {
6
+ target.appendChild(node);
7
+ return {
8
+ destroy() {
9
+ node.remove();
10
+ }
11
+ };
12
+ }
7
13
  }
8
- //#endregion
9
- export { e as portal };
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
2
+ <path stroke-linecap="round" stroke-linejoin="round" d="M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75" />
3
+ </svg>
@@ -0,0 +1,63 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 566.9 283.5" style="enable-background:new 0 0 566.9 283.5;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#1c75bc;}
7
+ .st1{fill:#D1D3D4;}
8
+ .st2{clip-path:url(#SVGID_2_);}
9
+ .st3{fill:#FFFFFF;}
10
+ </style>
11
+ <g>
12
+ <g>
13
+ <path class="st0" d="M192.2,266.9c-19.1,5-38.2,6.1-57.6,2.1c-24.2-5-47.1-17-64.6-34.6c-32.9-33-43.3-82.9-30.3-127.2
14
+ c13.8-47,56-84.1,105.6-87c44.3-2.6,86.3,26.6,95.3,70.6c-7.6-19-20.3-34.5-38.3-44.6c-21.5-12.1-46.7-14.4-70.2-7.1
15
+ c-50.3,15.6-79.9,66.6-76.7,117.8c2.2,35.3,20.3,67.1,49.2,87.4C130.6,262.5,160.9,269.3,192.2,266.9z"/>
16
+ <g>
17
+ <path class="st0" d="M335.3,97.6c-1.4-10.7-4-21.3-7.9-31.4c-7.7-20.2-19.8-37-35.5-51.6c18.3,24.5,29.3,52.6,30.3,83.1H335.3z"
18
+ />
19
+ <path class="st0" d="M302.7,169.8c-8.3,13.1-19,24.8-31.9,34.2c-45.1,32.8-109,35.4-152.7-1.6c-20.4-17.3-33-41.7-34.4-68.5
20
+ c-1.2-22.4,5.5-43.1,18.5-61.1c-35.1,34-37.4,89.4-9.2,128.6c31.6,43.8,90.2,60.9,141.3,46.1c40-11.5,74.1-40.1,90.9-77.7H302.7z
21
+ "/>
22
+ </g>
23
+ </g>
24
+ <g>
25
+ <g>
26
+ <g>
27
+ <path class="st0" d="M154.7,147.6c0,4.9,0.2,9.6,0.7,12.4h-14.3l-0.9-5.1h-0.3c-3.3,4.1-8.5,6.3-14.6,6.3
28
+ c-10.3,0-16.5-7.5-16.5-15.6c0-13.2,11.9-19.6,29.9-19.5v-0.7c0-2.7-1.5-6.6-9.3-6.6c-5.2,0-10.7,1.8-14.1,3.9l-2.9-10.2
29
+ c3.5-2,10.5-4.5,19.8-4.5c17,0,22.4,10,22.4,22V147.6z M139.3,136c-8.3-0.1-14.8,1.9-14.8,8c0,4.1,2.7,6,6.3,6
30
+ c4,0,7.2-2.6,8.2-5.8c0.2-0.8,0.3-1.8,0.3-2.7V136z"/>
31
+ <path class="st0" d="M178.4,94.9c0,4.4-3.3,7.9-8.6,7.9c-5,0-8.3-3.5-8.2-7.9c-0.1-4.6,3.2-8,8.3-8
32
+ C175.1,86.9,178.3,90.3,178.4,94.9z M162.1,160v-51h15.8v51H162.1z"/>
33
+ <path class="st0" d="M185.4,125.8c0-7.5-0.2-12.4-0.4-16.8h13.7l0.5,9.4h0.4c2.6-7.4,8.9-10.5,13.8-10.5c1.5,0,2.2,0,3.3,0.2v15
34
+ c-1.1-0.3-2.5-0.5-4.3-0.5c-5.8,0-9.8,3.1-10.8,8c-0.2,1-0.3,2.3-0.3,3.5V160h-15.8V125.8z"/>
35
+ <path class="st0" d="M264.1,152.7c0,11.6-2.3,18.7-7.2,23c-4.9,4.6-12,6-18.4,6c-6,0-12.7-1.5-16.8-4.2l2.3-7
36
+ c3.3,2.1,8.6,4,14.8,4c9.4,0,16.3-4.9,16.3-17.6v-5.6H255c-2.8,4.7-8.2,8.4-16.1,8.4c-12.5,0-21.5-10.6-21.5-24.6
37
+ c0-17.1,11.2-26.8,22.7-26.8c8.8,0,13.6,4.6,15.7,8.8h0.2l0.4-7.6h8c-0.2,3.6-0.4,7.7-0.4,13.9V152.7z M255.1,129.5
38
+ c0-1.6-0.1-2.9-0.5-4.2c-1.7-5.3-6.2-9.7-12.8-9.7c-8.8,0-15,7.4-15,19.1c0,9.9,5,18.1,14.9,18.1c5.6,0,10.7-3.5,12.7-9.4
39
+ c0.5-1.6,0.7-3.3,0.7-4.9V129.5z"/>
40
+ <path class="st0" d="M273.5,125.3c0-5.9-0.1-11.1-0.4-15.7h8l0.3,9.9h0.4c2.3-6.8,7.8-11.1,14-11.1c1,0,1.8,0.1,2.6,0.3v8.7
41
+ c-0.9-0.2-1.9-0.3-3.1-0.3c-6.5,0-11.1,4.9-12.3,11.8c-0.2,1.3-0.4,2.7-0.4,4.3V160h-9.1V125.3z"/>
42
+ <path class="st0" d="M337.3,147.9c0,4.4,0.2,8.7,0.8,12.1h-8.3l-0.7-6.4h-0.3c-2.8,4-8.2,7.5-15.4,7.5
43
+ c-10.2,0-15.4-7.2-15.4-14.5c0-12.2,10.8-18.9,30.3-18.8v-1c0-4.2-1.1-11.7-11.5-11.7c-4.7,0-9.6,1.5-13.1,3.8l-2.1-6
44
+ c4.2-2.7,10.2-4.5,16.6-4.5c15.4,0,19.2,10.5,19.2,20.6V147.9z M328.5,134.3c-10-0.2-21.4,1.6-21.4,11.4c0,5.9,4,8.8,8.7,8.8
45
+ c6.6,0,10.7-4.2,12.2-8.4c0.3-0.9,0.5-2,0.5-2.9V134.3z"/>
46
+ <path class="st0" d="M390.5,86v61c0,4.5,0.1,9.6,0.4,13h-8.2l-0.4-8.8h-0.2c-2.8,5.6-9,9.9-17.2,9.9
47
+ c-12.2,0-21.6-10.3-21.6-25.6c-0.1-16.8,10.3-27.1,22.6-27.1c7.7,0,12.9,3.6,15.2,7.7h0.2V86H390.5z M381.3,130.1
48
+ c0-1.1-0.1-2.7-0.4-3.9c-1.4-5.8-6.4-10.6-13.2-10.6c-9.5,0-15.1,8.3-15.1,19.5c0,10.2,5,18.7,14.9,18.7
49
+ c6.2,0,11.8-4.1,13.4-10.9c0.3-1.3,0.4-2.5,0.4-4V130.1z"/>
50
+ <path class="st0" d="M410.7,95.4c0.1,3.1-2.2,5.6-5.8,5.6c-3.2,0-5.5-2.5-5.5-5.6c0-3.2,2.4-5.7,5.7-5.7
51
+ C408.5,89.7,410.7,92.2,410.7,95.4z M400.5,160v-50.5h9.2V160H400.5z"/>
52
+ <path class="st0" d="M424.8,136.5c0.2,12.4,8.1,17.5,17.3,17.5c6.6,0,10.5-1.1,14-2.6l1.6,6.6c-3.2,1.5-8.8,3.2-16.8,3.2
53
+ c-15.5,0-24.8-10.3-24.8-25.5c0-15.2,9-27.2,23.7-27.2c16.5,0,20.9,14.5,20.9,23.8c0,1.9-0.2,3.3-0.3,4.3H424.8z M451.7,129.9
54
+ c0.1-5.8-2.4-14.9-12.7-14.9c-9.3,0-13.3,8.6-14.1,14.9H451.7z"/>
55
+ <path class="st0" d="M466.7,123.2c0-5.2-0.1-9.5-0.4-13.7h8.1l0.5,8.3h0.2c2.5-4.8,8.3-9.5,16.7-9.5c7,0,17.8,4.2,17.8,21.5V160
56
+ h-9.2V131c0-8.1-3-14.9-11.7-14.9c-6,0-10.7,4.3-12.3,9.4c-0.4,1.1-0.6,2.7-0.6,4.3V160h-9.2V123.2z"/>
57
+ <path class="st0" d="M530,97.5v12.1h13.1v7H530v27.2c0,6.3,1.8,9.8,6.9,9.8c2.5,0,4-0.2,5.3-0.6l0.4,6.9
58
+ c-1.8,0.7-4.6,1.4-8.1,1.4c-4.3,0-7.7-1.5-9.9-4c-2.6-2.7-3.5-7.2-3.5-13.1v-27.5h-7.8v-7h7.8v-9.3L530,97.5z"/>
59
+ </g>
60
+ </g>
61
+ </g>
62
+ </g>
63
+ </svg>