@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,99 +1,163 @@
1
- import { monitorsManager as e } from "../monitors/monitors.svelte.js";
2
- import { tooltipsPlugin as t, uPlotCursorConfig as n } from "./tooltip.js";
3
- import { fromUnixTime as r, getUnixTime as i, isAfter as a, isToday as o } from "date-fns";
4
- //#region src/lib/data-chart/chart-utils.ts
5
- var s = "3572b0";
6
- function c() {
7
- let t = (e.levels ?? []).map((e) => [e.range[0], e.color.replace(/^#/, "")]);
8
- return t.push([Infinity, "000000"]), t;
1
+ import { monitorsManager } from "../monitors/monitors.svelte";
2
+ import { tooltipsPlugin, uPlotCursorConfig } from "./tooltip";
3
+ import { fromUnixTime, getUnixTime, isToday, isAfter } from "date-fns";
4
+ const PM25_AVG_60_STROKE = "3572b0";
5
+ function getColors() {
6
+ const levels = monitorsManager.levels ?? [];
7
+ const colors = levels.map((level) => [level.range[0], level.color.replace(/^#/, "")]);
8
+ colors.push([Infinity, "000000"]);
9
+ return colors;
9
10
  }
10
- var l = {}, u = {
11
- show: !0,
12
- spanGaps: !1,
13
- width: 1
14
- }, d = {
15
- ...u,
16
- label: "Real Time",
17
- width: 2,
18
- stroke: (e) => g(e, "y", 1, c(), !0)
19
- }, f = {
20
- ...u,
21
- label: "60 Minute Average",
22
- stroke: (e) => h(e, s)
11
+ const baseXSeriesConfig = {};
12
+ const baseYSeriesConfig = {
13
+ show: true,
14
+ spanGaps: false,
15
+ width: 1
23
16
  };
24
- function p(s, c, l, u) {
25
- let d = m(s), f = (e, t) => {
26
- let n = d[t].stroke;
27
- return n(e, t);
28
- };
29
- return {
30
- width: l,
31
- height: u,
32
- cursor: n.get(),
33
- select: { show: !1 },
34
- plugins: [t()],
35
- series: d,
36
- legend: {
37
- live: !1,
38
- markers: { fill: (e, t) => f(e, t) }
39
- },
40
- scales: {
41
- x: { range: (e, t, n) => {
42
- let s = r(n), c = /* @__PURE__ */ new Date();
43
- return n = o(s) && a(c, s) ? i(c) : n, [t, n];
44
- } },
45
- y: { range: {
46
- min: {
47
- mode: 1,
48
- pad: .1
49
- },
50
- max: {
51
- mode: 2,
52
- soft: 0,
53
- pad: .1
54
- }
55
- } }
56
- },
57
- axes: [{ grid: { show: !1 } }, {
58
- label: e.pollutant === "pm25" ? "PM 2.5" : "Ozone",
59
- side: 3,
60
- values: (e, t) => t.map((e) => e.toFixed(+(c < 5)))
61
- }],
62
- hooks: { ready: [() => document.querySelector(".u-series").remove()] }
63
- };
17
+ const pm25SeriesConfig = {
18
+ ...baseYSeriesConfig,
19
+ label: "Real Time",
20
+ width: 2,
21
+ stroke: (u) => scaleGradient(u, "y", 1, getColors(), true)
22
+ };
23
+ const pm25Avg60SeriesConfig = {
24
+ ...baseYSeriesConfig,
25
+ label: "60 Minute Average",
26
+ stroke: (u) => autograd(u, PM25_AVG_60_STROKE)
27
+ };
28
+ export function getChartConfig(sourceName, maxDiff, width, height) {
29
+ const series = getSeriesConfigs(sourceName);
30
+ const getStroke = (u, sIdx) => {
31
+ const stroke = series[sIdx].stroke;
32
+ return stroke(u, sIdx);
33
+ };
34
+ return {
35
+ width,
36
+ height,
37
+ cursor: uPlotCursorConfig.get(),
38
+ // @ts-expect-error: select missing pseudo "required" options
39
+ select: {
40
+ show: false
41
+ },
42
+ plugins: [tooltipsPlugin()],
43
+ series,
44
+ legend: {
45
+ live: false,
46
+ markers: {
47
+ fill: (u, sIdx) => getStroke(u, sIdx)
48
+ }
49
+ },
50
+ scales: {
51
+ x: {
52
+ range: (_, min, max) => {
53
+ const maxDate = fromUnixTime(max);
54
+ const now = new Date();
55
+ max = isToday(maxDate) && isAfter(now, maxDate) ? getUnixTime(now) : max;
56
+ return [min, max];
57
+ }
58
+ },
59
+ y: {
60
+ range: {
61
+ min: {
62
+ mode: 1,
63
+ pad: 0.1
64
+ },
65
+ max: {
66
+ mode: 2,
67
+ soft: 0,
68
+ pad: 0.1
69
+ }
70
+ }
71
+ }
72
+ },
73
+ axes: [
74
+ {
75
+ grid: {
76
+ show: false
77
+ }
78
+ },
79
+ {
80
+ label: monitorsManager.pollutant === "pm25" ? "PM 2.5" : "Ozone",
81
+ side: 3,
82
+ values: (_, ticks) => ticks.map((v) => v.toFixed(maxDiff < 5 ? 1 : 0))
83
+ }
84
+ ],
85
+ hooks: {
86
+ ready: [() => document.querySelector(".u-series").remove()]
87
+ }
88
+ };
64
89
  }
65
- function m(e) {
66
- let t = Object.assign({}, f);
67
- switch (t.width = 2, e) {
68
- case "airnow":
69
- case "aqview":
70
- case "bam1022": return [l, t];
71
- case "airgradient":
72
- case "purpleair": return [l, d];
73
- }
90
+ function getSeriesConfigs(monitorType) {
91
+ const singleSeriesConfig = Object.assign({}, pm25Avg60SeriesConfig);
92
+ singleSeriesConfig.width = 2;
93
+ switch (monitorType) {
94
+ case "airnow":
95
+ case "aqview":
96
+ case "bam1022":
97
+ return [baseXSeriesConfig, singleSeriesConfig];
98
+ case "airgradient":
99
+ case "purpleair":
100
+ return [baseXSeriesConfig, pm25SeriesConfig];
101
+ }
74
102
  }
75
- function h(e, t) {
76
- return e.series.length > 2 ? t : g(e, "y", 1, c(), !0);
103
+ function autograd(u, fallback) {
104
+ if (u.series.length > 2) {
105
+ return fallback;
106
+ }
107
+ return scaleGradient(u, "y", 1, getColors(), true);
77
108
  }
78
- function g(e, t, n, r, i = !1) {
79
- let a = e.scales[t], o, s;
80
- for (let e = 0; e < r.length; e++) {
81
- let t = r[e][0];
82
- if ((t <= a.min || o === void 0) && (o = e), s = e, t >= a.max) break;
83
- }
84
- if (o == s) return r[o][1];
85
- let c = r[o][0], l = r[s][0];
86
- c === -Infinity && (c = a.min || 0), l === Infinity && (l = a.max || 0);
87
- let u = e.valToPos(c, t, !0), d = e.valToPos(l, t, !0);
88
- if (!u || !d) return;
89
- let f = u - d, p, m, h, g;
90
- n == 1 ? (p = h = 0, m = u, g = d) : (m = g = 0, p = u, h = d);
91
- let _ = e.ctx.createLinearGradient(p, m, h, g), v;
92
- for (let n = o; n <= s; n++) {
93
- let a = r[n], c = (u - (n == o ? u : n == s ? d : e.valToPos(a[0], t, !0))) / f;
94
- i && n > o && _.addColorStop(c, v), _.addColorStop(c, v = `#${a[1]}`);
95
- }
96
- return _;
109
+ function scaleGradient(u, scaleKey, ori, scaleStops, discrete = false) {
110
+ const scale = u.scales[scaleKey];
111
+ let minStopIdx;
112
+ let maxStopIdx;
113
+ for (let i = 0; i < scaleStops.length; i++) {
114
+ const stopVal = scaleStops[i][0];
115
+ if (stopVal <= scale.min || minStopIdx === undefined) {
116
+ minStopIdx = i;
117
+ }
118
+ maxStopIdx = i;
119
+ if (stopVal >= scale.max)
120
+ break;
121
+ }
122
+ if (minStopIdx == maxStopIdx) {
123
+ return scaleStops[minStopIdx][1];
124
+ }
125
+ let minStopVal = scaleStops[minStopIdx][0];
126
+ let maxStopVal = scaleStops[maxStopIdx][0];
127
+ if (minStopVal === -Infinity)
128
+ minStopVal = scale.min || 0;
129
+ if (maxStopVal === Infinity)
130
+ maxStopVal = scale.max || 0;
131
+ const minStopPos = u.valToPos(minStopVal, scaleKey, true);
132
+ const maxStopPos = u.valToPos(maxStopVal, scaleKey, true);
133
+ if (!minStopPos || !maxStopPos)
134
+ return;
135
+ const range = minStopPos - maxStopPos;
136
+ let x0, y0, x1, y1;
137
+ if (ori == 1) {
138
+ x0 = x1 = 0;
139
+ y0 = minStopPos;
140
+ y1 = maxStopPos;
141
+ }
142
+ else {
143
+ y0 = y1 = 0;
144
+ x0 = minStopPos;
145
+ x1 = maxStopPos;
146
+ }
147
+ const grd = u.ctx.createLinearGradient(x0, y0, x1, y1);
148
+ let prevColor;
149
+ for (let i = minStopIdx; i <= maxStopIdx; i++) {
150
+ const s = scaleStops[i];
151
+ const stopPos = i == minStopIdx
152
+ ? minStopPos
153
+ : i == maxStopIdx
154
+ ? maxStopPos
155
+ : u.valToPos(s[0], scaleKey, true);
156
+ const pct = (minStopPos - stopPos) / range;
157
+ if (discrete && i > minStopIdx) {
158
+ grd.addColorStop(pct, prevColor);
159
+ }
160
+ grd.addColorStop(pct, (prevColor = `#${s[1]}`));
161
+ }
162
+ return grd;
97
163
  }
98
- //#endregion
99
- export { p as getChartConfig };
@@ -0,0 +1,7 @@
1
+ import type { DateRange } from "./DateRange.ts";
2
+ declare class DataChartManager {
3
+ dateRange: DateRange;
4
+ chartData: uPlot.AlignedData;
5
+ loading: boolean;
6
+ }
7
+ export { DataChartManager };
@@ -1,28 +1,7 @@
1
- import { createDateRange as e } from "./DateRange.js";
2
- import * as t from "svelte/internal/client";
3
- //#region src/lib/data-chart/data-chart.svelte.ts
4
- var n = class {
5
- #e = t.state(t.proxy(e()));
6
- get dateRange() {
7
- return t.get(this.#e);
8
- }
9
- set dateRange(e) {
10
- t.set(this.#e, e, !0);
11
- }
12
- #t = t.state(t.proxy([]));
13
- get chartData() {
14
- return t.get(this.#t);
15
- }
16
- set chartData(e) {
17
- t.set(this.#t, e, !0);
18
- }
19
- #n = t.state(!1);
20
- get loading() {
21
- return t.get(this.#n);
22
- }
23
- set loading(e) {
24
- t.set(this.#n, e, !0);
25
- }
26
- };
27
- //#endregion
28
- export { n as DataChartManager };
1
+ import { createDateRange } from "./DateRange.ts";
2
+ class DataChartManager {
3
+ dateRange = $state(createDateRange());
4
+ chartData = $state([]);
5
+ loading = $state(false);
6
+ }
7
+ export { DataChartManager };
@@ -0,0 +1,3 @@
1
+ import { type MonitorLatestType } from "@sjvair/sdk";
2
+ import type { DateRange } from "./DateRange.ts";
3
+ export declare function fetchChartData(m: MonitorLatestType<"pm25" | "o3">, d: DateRange): Promise<uPlot.AlignedData>;
@@ -1,30 +1,38 @@
1
- import { monitorsManager as e } from "../monitors/monitors.svelte.js";
2
- import { getMonitorEntries as t } from "@sjvair/sdk";
3
- import { addMinutes as n, differenceInMinutes as r, getUnixTime as i, parseISO as a } from "date-fns";
4
- //#region src/lib/data-chart/requests.ts
5
- async function o(o, c) {
6
- return await t({
7
- entryType: e.pollutant ?? "pm25",
8
- monitorId: o.id,
9
- timestampGte: c.start,
10
- timestampLte: c.end
11
- }).then((e) => {
12
- let t = [], c = o.data_source.name === "PurpleAir" ? 2 : 60, l = [];
13
- for (let i = e.length - 1; i >= 0; i--) {
14
- let o = e[i];
15
- if (t.length > 1) {
16
- let e = a(o.timestamp), i = t[t.length - 1];
17
- for (; Math.abs(r(e, i)) > c + 1;) i = n(i, c), s(t, l, o, i);
18
- }
19
- s(t, l, o);
20
- }
21
- return [t.map((e) => i(e)), l];
22
- }).catch((e) => (console.error("Failed to load chart data: ", e), []));
1
+ import { getMonitorEntries } from "@sjvair/sdk";
2
+ import { getUnixTime, parseISO, differenceInMinutes, addMinutes } from "date-fns";
3
+ import { monitorsManager } from "../monitors/monitors.svelte";
4
+ export async function fetchChartData(m, d) {
5
+ return await getMonitorEntries({
6
+ entryType: monitorsManager.pollutant ?? "pm25",
7
+ monitorId: m.id,
8
+ timestampGte: d.start,
9
+ timestampLte: d.end
10
+ })
11
+ .then((entries) => {
12
+ const xAxisData = [];
13
+ const updateDuration = m.data_source.name === "PurpleAir" ? 2 : 60;
14
+ const yAxisRecord = [];
15
+ for (let i = entries.length - 1; i >= 0; i--) {
16
+ const entry = entries[i];
17
+ if (xAxisData.length > 1) {
18
+ const entryTime = parseISO(entry.timestamp);
19
+ let prevTimestamp = xAxisData[xAxisData.length - 1];
20
+ while (Math.abs(differenceInMinutes(entryTime, prevTimestamp)) > updateDuration + 1) {
21
+ prevTimestamp = addMinutes(prevTimestamp, updateDuration);
22
+ fillChartDataRecords(xAxisData, yAxisRecord, entry, prevTimestamp);
23
+ }
24
+ }
25
+ fillChartDataRecords(xAxisData, yAxisRecord, entry);
26
+ }
27
+ return [xAxisData.map((d) => getUnixTime(d)), yAxisRecord];
28
+ })
29
+ .catch((err) => {
30
+ console.error("Failed to load chart data: ", err);
31
+ return [];
32
+ });
23
33
  }
24
- function s(e, t, n, r) {
25
- e.push(r ?? a(n.timestamp));
26
- let i = parseFloat(n.value);
27
- t.push(r ? null : i >= 0 ? i : 0);
34
+ function fillChartDataRecords(xAxisData, yAxisRecord, entry, timestamp) {
35
+ xAxisData.push(timestamp ?? parseISO(entry.timestamp));
36
+ const value = parseFloat(entry.value);
37
+ yAxisRecord.push(timestamp ? null : value >= 0 ? value : 0);
28
38
  }
29
- //#endregion
30
- export { o as fetchChartData };
@@ -0,0 +1,10 @@
1
+ export declare const uPlotCursorConfig: {
2
+ set: (left: number, top: number) => void;
3
+ get: () => uPlot.Cursor;
4
+ };
5
+ export declare function tooltipsPlugin(): {
6
+ hooks: {
7
+ init: (u: uPlot, opts: uPlot.Options) => void;
8
+ setCursor: (u: uPlot) => void;
9
+ };
10
+ };
@@ -1,101 +1,163 @@
1
- import { monitorsManager as e } from "../monitors/monitors.svelte.js";
2
- import { format as t, fromUnixTime as n } from "date-fns";
3
- //#region src/lib/data-chart/tooltip.ts
4
- function r() {
5
- return (e.levels ?? []).map((e) => [e.range[0], e.color.replace(/^#/, "")]);
1
+ import { format, fromUnixTime } from "date-fns";
2
+ import { monitorsManager } from "../monitors/monitors.svelte";
3
+ function getColors() {
4
+ return (monitorsManager.levels ?? []).map((level) => [
5
+ level.range[0],
6
+ level.color.replace(/^#/, "")
7
+ ]);
6
8
  }
7
- var i = -100, a = -100, o = {
8
- set: (e, t) => {
9
- i = e, a = t;
10
- },
11
- get: () => ({
12
- left: i,
13
- top: a,
14
- y: !1,
15
- points: {
16
- size: 7,
17
- fill: (e, t) => {
18
- let n = e.cursor.idxs[t], i = r();
19
- if (n != null && e.series.length >= 2 && t === 1) {
20
- let r = e.data[t][n];
21
- for (let e = i.length - 1; e >= 0; e--) {
22
- let t = i[e];
23
- if (r >= t[0]) return `#${t[1]}`;
24
- }
25
- }
26
- let a = e.series[t].stroke;
27
- return a(e, t);
28
- }
29
- }
30
- })
31
- }, s = {
32
- pointerEvents: "none",
33
- whiteSpace: "nowrap",
34
- position: "absolute",
35
- backgroundColor: "white",
36
- zIndex: "100"
37
- }, c = {
38
- textAlign: "center",
39
- backgroundColor: "#f5f5f5",
40
- fontWeight: "600",
41
- fontSize: ".8rem",
42
- padding: ".5rem"
43
- }, l = {
44
- margin: ".5rem",
45
- fontSize: ".9rem"
9
+ let cursLeft = -100;
10
+ let cursTop = -100;
11
+ export const uPlotCursorConfig = {
12
+ set: (left, top) => {
13
+ cursLeft = left;
14
+ cursTop = top;
15
+ },
16
+ get: () => ({
17
+ left: cursLeft,
18
+ top: cursTop,
19
+ y: false,
20
+ points: {
21
+ size: 7,
22
+ fill: (u, sIdx) => {
23
+ const xIdx = u.cursor.idxs[sIdx];
24
+ const colors = getColors();
25
+ if (xIdx != null && u.series.length >= 2 && sIdx === 1) {
26
+ const val = u.data[sIdx][xIdx];
27
+ for (let i = colors.length - 1; i >= 0; i--) {
28
+ const stop = colors[i];
29
+ if (val >= stop[0]) {
30
+ return `#${stop[1]}`;
31
+ }
32
+ }
33
+ }
34
+ const stroke = u.series[sIdx].stroke;
35
+ return stroke(u, sIdx);
36
+ }
37
+ }
38
+ })
46
39
  };
47
- function u() {
48
- let e, r, i;
49
- function a(t, n) {
50
- let a = t.over;
51
- r = document.createElement("p"), r.classList.add("card-header"), Object.assign(r.style, c), e = document.createElement("div"), e.classList.add("card"), Object.assign(e.style, s), e.appendChild(r), a.appendChild(e), i = n.series.map((n, r) => {
52
- if (r === 0) return;
53
- let i = n.stroke, a = document.createElement("p");
54
- return Object.assign(a.style, l), a.style.color = i(t, r), r === 1 && (a.style.fontWeight = "600"), e.appendChild(a), a;
55
- });
56
- function o() {
57
- e.style.display = "none", i.forEach((e, t) => {
58
- t != 0 && (e.style.display = "none");
59
- });
60
- }
61
- function u() {
62
- e.style.display = "block", i.forEach((e, n) => {
63
- if (n == 0) return;
64
- let r = t.series[n];
65
- e.style.display = r.show ? "block" : "none";
66
- });
67
- }
68
- a.addEventListener("mouseleave", () => {
69
- t.cursor.lock || o();
70
- }), a.addEventListener("mouseenter", () => {
71
- u();
72
- }), t.cursor.left < 0 ? setTimeout(() => o()) : u();
73
- }
74
- function u(a) {
75
- let { left: s, top: c, idx: l } = a.cursor;
76
- if (l == null) return;
77
- if (o.set(s, c), i.forEach((e, i) => {
78
- if (i != 0 && a.series[i].show) {
79
- let o = a.data[0][l], s = a.data[i][l];
80
- if (s === null) e.style.display = "none";
81
- else {
82
- e.style.display = "block";
83
- let c = a.series[i].label;
84
- c = c?.substring(c.indexOf("(") + 1, c.indexOf(")")) || c, r.textContent = t(n(o), "MMM d, yyyy h:mm a"), e.textContent = `${c}: ${s}`;
85
- }
86
- }
87
- }), !i.slice(1, i.length).find((e) => e.style.display === "block")) {
88
- e.style.display = "none";
89
- return;
90
- }
91
- e.style.display = "block";
92
- let u = e.offsetWidth, d = a.over.offsetWidth, f = s + 15 + u > d;
93
- e.style.left = f ? `${s - 15 - u}px` : `${s + 15}px`, e.style.top = c + "px";
94
- }
95
- return { hooks: {
96
- init: a,
97
- setCursor: u
98
- } };
40
+ const ttContainerStyles = {
41
+ pointerEvents: "none",
42
+ whiteSpace: "nowrap",
43
+ position: "absolute",
44
+ backgroundColor: "white",
45
+ zIndex: "100"
46
+ };
47
+ const ttHeaderStyles = {
48
+ textAlign: "center",
49
+ backgroundColor: "#f5f5f5",
50
+ fontWeight: "600",
51
+ fontSize: ".8rem",
52
+ padding: ".5rem"
53
+ };
54
+ const ttLineItemStyles = {
55
+ margin: ".5rem",
56
+ fontSize: ".9rem"
57
+ };
58
+ export function tooltipsPlugin() {
59
+ let ttContainer;
60
+ let ttHeader;
61
+ let seriesList;
62
+ function init(u, opts) {
63
+ const over = u.over;
64
+ ttHeader = document.createElement("p");
65
+ ttHeader.classList.add("card-header");
66
+ Object.assign(ttHeader.style, ttHeaderStyles);
67
+ ttContainer = document.createElement("div");
68
+ ttContainer.classList.add("card");
69
+ Object.assign(ttContainer.style, ttContainerStyles);
70
+ ttContainer.appendChild(ttHeader);
71
+ over.appendChild(ttContainer);
72
+ seriesList = opts.series.map((s, i) => {
73
+ if (i === 0)
74
+ return;
75
+ const stroke = s.stroke;
76
+ const line = document.createElement("p");
77
+ Object.assign(line.style, ttLineItemStyles);
78
+ line.style.color = stroke(u, i);
79
+ if (i === 1) {
80
+ line.style.fontWeight = "600";
81
+ }
82
+ ttContainer.appendChild(line);
83
+ return line;
84
+ });
85
+ function hideTips() {
86
+ ttContainer.style.display = "none";
87
+ seriesList.forEach((tt, i) => {
88
+ if (i == 0)
89
+ return;
90
+ tt.style.display = "none";
91
+ });
92
+ }
93
+ function showTips() {
94
+ ttContainer.style.display = "block";
95
+ seriesList.forEach((line, i) => {
96
+ if (i == 0)
97
+ return;
98
+ const s = u.series[i];
99
+ line.style.display = s.show ? "block" : "none";
100
+ });
101
+ }
102
+ over.addEventListener("mouseleave", () => {
103
+ if (!u.cursor.lock)
104
+ hideTips();
105
+ });
106
+ over.addEventListener("mouseenter", () => {
107
+ showTips();
108
+ });
109
+ if (u.cursor.left < 0) {
110
+ setTimeout(() => hideTips());
111
+ }
112
+ else {
113
+ showTips();
114
+ }
115
+ }
116
+ function setCursor(u) {
117
+ const { left, top, idx } = u.cursor;
118
+ if (idx == null)
119
+ return;
120
+ uPlotCursorConfig.set(left, top);
121
+ seriesList.forEach((tt, i) => {
122
+ if (i == 0)
123
+ return;
124
+ const s = u.series[i];
125
+ if (s.show) {
126
+ const xVal = u.data[0][idx];
127
+ const yVal = u.data[i][idx];
128
+ if (yVal === null) {
129
+ tt.style.display = "none";
130
+ }
131
+ else {
132
+ tt.style.display = "block";
133
+ let label = u.series[i].label;
134
+ label = label?.substring(label.indexOf("(") + 1, label.indexOf(")")) || label;
135
+ ttHeader.textContent = format(fromUnixTime(xVal), "MMM d, yyyy h:mm a");
136
+ tt.textContent = `${label}: ${yVal}`;
137
+ }
138
+ }
139
+ });
140
+ const hasContent = !!seriesList
141
+ .slice(1, seriesList.length)
142
+ .find((tt) => tt.style.display === "block");
143
+ if (!hasContent) {
144
+ ttContainer.style.display = "none";
145
+ return;
146
+ }
147
+ ttContainer.style.display = "block";
148
+ const offset = 15;
149
+ const ttWidth = ttContainer.offsetWidth;
150
+ const chartWidth = u.over.offsetWidth;
151
+ const overflowsRight = left + offset + ttWidth > chartWidth;
152
+ ttContainer.style.left = overflowsRight
153
+ ? `${left - offset - ttWidth}px`
154
+ : `${left + offset}px`;
155
+ ttContainer.style.top = top + "px";
156
+ }
157
+ return {
158
+ hooks: {
159
+ init,
160
+ setCursor
161
+ }
162
+ };
99
163
  }
100
- //#endregion
101
- export { u as tooltipsPlugin, o as uPlotCursorConfig };