@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.
- package/dist/lib/LoadScreen.svelte +68 -0
- package/dist/lib/LoadScreen.svelte.d.ts +25 -0
- package/dist/lib/MainMapView.svelte +1 -0
- package/dist/lib/MainMapView.svelte.d.ts +26 -0
- package/dist/lib/MapLegend.svelte +15 -0
- package/dist/lib/MapLegend.svelte.d.ts +18 -0
- package/dist/lib/MonitorDetailPanel.svelte +152 -0
- package/dist/lib/MonitorDetailPanel.svelte.d.ts +3 -0
- package/dist/lib/MonitorMapLayout.svelte +193 -0
- package/dist/lib/MonitorMapLayout.svelte.d.ts +7 -0
- package/dist/lib/actions.d.ts +3 -0
- package/dist/lib/actions.js +12 -8
- package/dist/lib/assets/icons/adjustment-horizontal.svg +3 -0
- package/dist/lib/assets/logos/airgradient-blue.svg +63 -0
- package/dist/lib/assets/logos/airnow-compact.jpg +0 -0
- package/dist/lib/assets/logos/carb-compact.jpg +0 -0
- package/dist/lib/assets/logos/purpleair-compact.png +0 -0
- package/dist/lib/assets/logos/sjvair-parts/sjvair-air.webp +0 -0
- package/dist/lib/assets/logos/sjvair-parts/sjvair-icon.webp +0 -0
- package/dist/lib/assets/logos/sjvair-parts/sjvair-sjv.webp +0 -0
- package/dist/lib/assets/logos/sjvair-white.svg +115 -0
- package/dist/lib/assets/logos/sjvair.svg +96 -0
- package/dist/lib/collocation-sites/CollocationTooltip.svelte +98 -0
- package/dist/lib/collocation-sites/CollocationTooltip.svelte.d.ts +7 -0
- package/dist/lib/collocation-sites/collocation-utils.d.ts +3 -0
- package/dist/lib/collocation-sites/collocation-utils.js +30 -0
- package/dist/lib/collocation-sites/collocations-icon-manager.svelte.d.ts +7 -0
- package/dist/lib/collocation-sites/collocations-icon-manager.svelte.js +17 -20
- package/dist/lib/collocation-sites/collocations-map-integration.svelte.d.ts +18 -0
- package/dist/lib/collocation-sites/collocations-map-integration.svelte.js +98 -83
- package/dist/lib/collocation-sites/collocations.svelte.d.ts +9 -0
- package/dist/lib/collocation-sites/collocations.svelte.js +17 -26
- package/dist/lib/collocation-sites/types.d.ts +8 -0
- package/dist/lib/collocation-sites/types.js +1 -0
- package/dist/lib/colors.d.ts +17 -0
- package/dist/lib/colors.js +29 -23
- package/dist/lib/components/DataBox.svelte +29 -0
- package/dist/lib/components/DataBox.svelte.d.ts +9 -0
- package/dist/lib/components/DisplayOption.svelte +7 -0
- package/dist/lib/components/DisplayOption.svelte.d.ts +5 -0
- package/dist/lib/components/MapLayersDisplayOptions.svelte +42 -0
- package/dist/lib/components/MapLayersDisplayOptions.svelte.d.ts +18 -0
- package/dist/lib/components/SegmentedControl.svelte +61 -0
- package/dist/lib/components/SegmentedControl.svelte.d.ts +11 -0
- package/dist/lib/components/ToggleSwitch.svelte +93 -0
- package/dist/lib/components/ToggleSwitch.svelte.d.ts +9 -0
- package/dist/lib/components/ui/button/button.svelte +89 -0
- package/dist/lib/components/ui/button/button.svelte.d.ts +70 -0
- package/dist/lib/components/ui/button/index.d.ts +2 -0
- package/dist/lib/components/ui/button/index.js +4 -0
- package/dist/lib/components/ui/range-calendar/index.d.ts +19 -0
- package/dist/lib/components/ui/range-calendar/index.js +21 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte +76 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-caption.svelte.d.ts +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte +36 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte +7 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte +7 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte +44 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-month-select.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte +15 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-month.svelte.d.ts +5 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte +19 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-nav.svelte.d.ts +5 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte +36 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +8 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte +36 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +8 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte +43 -0
- package/dist/lib/components/ui/range-calendar/range-calendar-year-select.svelte.d.ts +4 -0
- package/dist/lib/components/ui/range-calendar/range-calendar.svelte +112 -0
- package/dist/lib/components/ui/range-calendar/range-calendar.svelte.d.ts +21 -0
- package/dist/lib/data-chart/DataChart.svelte +303 -0
- package/dist/lib/data-chart/DataChart.svelte.d.ts +7 -0
- package/dist/lib/data-chart/DateRange.d.ts +6 -0
- package/dist/lib/data-chart/DateRange.js +15 -14
- package/dist/lib/data-chart/chart-utils.d.ts +3 -0
- package/dist/lib/data-chart/chart-utils.js +157 -93
- package/dist/lib/data-chart/data-chart.svelte.d.ts +7 -0
- package/dist/lib/data-chart/data-chart.svelte.js +7 -28
- package/dist/lib/data-chart/requests.d.ts +3 -0
- package/dist/lib/data-chart/requests.js +36 -28
- package/dist/lib/data-chart/tooltip.d.ts +10 -0
- package/dist/lib/data-chart/tooltip.js +160 -98
- package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte +16 -0
- package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte.d.ts +7 -0
- package/dist/lib/ev-stations/components/EvStationTooltip.svelte +127 -0
- package/dist/lib/ev-stations/components/EvStationTooltip.svelte.d.ts +7 -0
- package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte +46 -0
- package/dist/lib/ev-stations/components/EvStationsDisplayOptions.svelte.d.ts +18 -0
- package/dist/lib/ev-stations/data-maps.d.ts +5 -0
- package/dist/lib/ev-stations/data-maps.js +152 -4
- package/dist/lib/ev-stations/ev-station-icons.d.ts +16 -0
- package/dist/lib/ev-stations/ev-station-icons.js +21 -27
- package/dist/lib/ev-stations/ev-stations-cluster-renderer.d.ts +19 -0
- package/dist/lib/ev-stations/ev-stations-cluster-renderer.js +130 -117
- package/dist/lib/ev-stations/ev-stations-map-integration.svelte.d.ts +31 -0
- package/dist/lib/ev-stations/ev-stations-map-integration.svelte.js +206 -180
- package/dist/lib/ev-stations/ev-stations.svelte.d.ts +9 -0
- package/dist/lib/ev-stations/ev-stations.svelte.js +54 -32
- package/dist/lib/ev-stations/types.d.ts +53 -0
- package/dist/lib/ev-stations/types.js +1 -0
- package/dist/lib/ev-stations/zip-codes.d.ts +13 -0
- package/dist/lib/ev-stations/zip-codes.js +457 -135
- package/dist/lib/hms/components/HMSFireLegend.svelte +21 -0
- package/dist/lib/hms/components/HMSFireLegend.svelte.d.ts +18 -0
- package/dist/lib/hms/hms-fire-icon-manager.d.ts +5 -0
- package/dist/lib/hms/hms-fire-icon-manager.js +28 -37
- package/dist/lib/hms/hms-fire-map-integration.svelte.d.ts +23 -0
- package/dist/lib/hms/hms-fire-map-integration.svelte.js +94 -97
- package/dist/lib/hms/hms-smoke-map-integration.svelte.d.ts +19 -0
- package/dist/lib/hms/hms-smoke-map-integration.svelte.js +68 -84
- package/dist/lib/hms/hms.svelte.d.ts +19 -0
- package/dist/lib/hms/hms.svelte.js +225 -76
- package/dist/lib/index.d.ts +68 -0
- package/dist/lib/index.js +56 -21
- package/dist/lib/map/Map.svelte +13 -0
- package/dist/lib/map/Map.svelte.d.ts +8 -0
- package/dist/lib/map/MapStyleDisplayOptions.svelte +61 -0
- package/dist/lib/map/MapStyleDisplayOptions.svelte.d.ts +3 -0
- package/dist/lib/map/Menu.svelte +64 -0
- package/dist/lib/map/Menu.svelte.d.ts +5 -0
- package/dist/lib/map/icons.d.ts +7 -0
- package/dist/lib/map/icons.js +24 -22
- package/dist/lib/map/integrations/base-layer-seperator.d.ts +9 -0
- package/dist/lib/map/integrations/base-layer-seperator.js +11 -12
- package/dist/lib/map/integrations/click-manager.d.ts +14 -0
- package/dist/lib/map/integrations/click-manager.js +52 -33
- package/dist/lib/map/integrations/integrations-manager.d.ts +8 -0
- package/dist/lib/map/integrations/integrations-manager.js +20 -12
- package/dist/lib/map/integrations/map-display-option.svelte.d.ts +7 -0
- package/dist/lib/map/integrations/map-display-option.svelte.js +10 -18
- package/dist/lib/map/integrations/map-geojson-integration.svelte.d.ts +13 -0
- package/dist/lib/map/integrations/map-geojson-integration.svelte.js +21 -17
- package/dist/lib/map/integrations/map-icon-manager.d.ts +15 -0
- package/dist/lib/map/integrations/map-icon-manager.js +52 -46
- package/dist/lib/map/integrations/map-integration.svelte.d.ts +6 -0
- package/dist/lib/map/integrations/map-integration.svelte.js +2 -5
- package/dist/lib/map/integrations/map-layer-integration.svelte.d.ts +11 -0
- package/dist/lib/map/integrations/map-layer-integration.svelte.js +36 -23
- package/dist/lib/map/integrations/tooltip.svelte.d.ts +28 -0
- package/dist/lib/map/integrations/tooltip.svelte.js +120 -78
- package/dist/lib/map/integrations/types.d.ts +14 -0
- package/dist/lib/map/integrations/types.js +1 -0
- package/dist/lib/map/map.svelte.d.ts +14 -0
- package/dist/lib/map/map.svelte.js +48 -50
- package/dist/lib/map/utils.d.ts +7 -0
- package/dist/lib/map/utils.js +32 -29
- package/dist/lib/monitors/components/MonitorClusterTooltip.svelte +112 -0
- package/dist/lib/monitors/components/MonitorClusterTooltip.svelte.d.ts +7 -0
- package/dist/lib/monitors/components/MonitorMarkersLegend.svelte +41 -0
- package/dist/lib/monitors/components/MonitorMarkersLegend.svelte.d.ts +3 -0
- package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte +128 -0
- package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte.d.ts +6 -0
- package/dist/lib/monitors/components/MonitorTooltip.svelte +61 -0
- package/dist/lib/monitors/components/MonitorTooltip.svelte.d.ts +7 -0
- package/dist/lib/monitors/components/MonitorWidgetModal.svelte +100 -0
- package/dist/lib/monitors/components/MonitorWidgetModal.svelte.d.ts +6 -0
- package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +79 -0
- package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte.d.ts +3 -0
- package/dist/lib/monitors/monitor-utils.d.ts +4 -0
- package/dist/lib/monitors/monitor-utils.js +33 -23
- package/dist/lib/monitors/monitors-cluster-renderer.d.ts +33 -0
- package/dist/lib/monitors/monitors-cluster-renderer.js +218 -209
- package/dist/lib/monitors/monitors-icon-manager.svelte.d.ts +13 -0
- package/dist/lib/monitors/monitors-icon-manager.svelte.js +75 -70
- package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +40 -0
- package/dist/lib/monitors/monitors-map-integration.svelte.js +278 -270
- package/dist/lib/monitors/monitors.svelte.d.ts +16 -0
- package/dist/lib/monitors/monitors.svelte.js +38 -63
- package/dist/lib/monitors/types.d.ts +26 -0
- package/dist/lib/monitors/types.js +1 -0
- package/dist/lib/reactivity.svelte.d.ts +0 -0
- package/dist/lib/reactivity.svelte.js +83 -0
- package/dist/lib/router-context.d.ts +27 -0
- package/dist/lib/router-context.js +11 -11
- package/dist/lib/routes.d.ts +2 -0
- package/dist/lib/routes.js +10 -9
- package/dist/lib/search/Search.svelte +189 -0
- package/dist/lib/search/Search.svelte.d.ts +3 -0
- package/dist/lib/search/service.d.ts +17 -0
- package/dist/lib/search/service.js +75 -85
- package/dist/lib/utils.d.ts +13 -0
- package/dist/lib/utils.js +10 -12
- package/dist/lib/weather.d.ts +1 -0
- package/dist/lib/weather.js +11 -7
- package/dist/lib/wind/wind.svelte.d.ts +10 -0
- package/dist/lib/wind/wind.svelte.js +13 -21
- package/package.json +9 -7
- package/src/lib/LoadScreen.svelte +3 -3
- package/src/lib/hms/components/HMSFireLegend.svelte +1 -1
- package/src/lib/hms/hms.svelte.ts +8 -9
- package/src/lib/index.ts +18 -0
- package/src/lib/routes.ts +6 -1
- package/src/lib/utils.ts +1 -1
- package/dist/lib/LoadScreen.js +0 -73
- package/dist/lib/MainMapView.js +0 -7
- package/dist/lib/MapLegend.js +0 -13
- package/dist/lib/MonitorDetailPanel.js +0 -169
- package/dist/lib/MonitorMapLayout.js +0 -91
- package/dist/lib/_virtual/_rolldown/runtime.js +0 -11
- package/dist/lib/assets/logos/airgradient-blue.js +0 -4
- package/dist/lib/assets/logos/airnow-compact.js +0 -4
- package/dist/lib/assets/logos/carb-compact.js +0 -4
- package/dist/lib/assets/logos/purpleair-compact.js +0 -4
- package/dist/lib/assets/logos/sjvair.js +0 -4
- package/dist/lib/collocation-sites/CollocationTooltip.js +0 -105
- package/dist/lib/components/DataBox.js +0 -30
- package/dist/lib/components/DisplayOption.js +0 -10
- package/dist/lib/components/MapLayersDisplayOptions.js +0 -87
- package/dist/lib/components/SegmentedControl.js +0 -37
- package/dist/lib/components/ToggleSwitch.js +0 -17
- package/dist/lib/components/ui/button/button.js +0 -34
- package/dist/lib/components/ui/range-calendar/range-calendar-caption.js +0 -82
- package/dist/lib/components/ui/range-calendar/range-calendar-cell.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-day.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-body.js +0 -27
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-head.js +0 -27
- package/dist/lib/components/ui/range-calendar/range-calendar-grid-row.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-grid.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-head-cell.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-header.js +0 -35
- package/dist/lib/components/ui/range-calendar/range-calendar-month-select.js +0 -61
- package/dist/lib/components/ui/range-calendar/range-calendar-month.js +0 -25
- package/dist/lib/components/ui/range-calendar/range-calendar-months.js +0 -25
- package/dist/lib/components/ui/range-calendar/range-calendar-nav.js +0 -25
- package/dist/lib/components/ui/range-calendar/range-calendar-next-button.js +0 -58
- package/dist/lib/components/ui/range-calendar/range-calendar-prev-button.js +0 -58
- package/dist/lib/components/ui/range-calendar/range-calendar-year-select.js +0 -59
- package/dist/lib/components/ui/range-calendar/range-calendar.js +0 -272
- package/dist/lib/data-chart/DataChart.js +0 -142
- package/dist/lib/ev-stations/components/EvStationClusterTooltip.js +0 -16
- package/dist/lib/ev-stations/components/EvStationTooltip.js +0 -120
- package/dist/lib/ev-stations/components/EvStationsDisplayOptions.js +0 -41
- package/dist/lib/hms/components/HMSFireLegend.js +0 -35
- package/dist/lib/map/Map.js +0 -14
- package/dist/lib/map/MapStyleDisplayOptions.js +0 -43
- package/dist/lib/map/Menu.js +0 -44
- package/dist/lib/monitors/components/MonitorClusterTooltip.js +0 -83
- package/dist/lib/monitors/components/MonitorMarkersLegend.js +0 -35
- package/dist/lib/monitors/components/MonitorSubscriptionManager.js +0 -104
- package/dist/lib/monitors/components/MonitorTooltip.js +0 -59
- package/dist/lib/monitors/components/MonitorWidgetModal.js +0 -40
- package/dist/lib/monitors/components/MonitorsDisplayOptions.js +0 -76
- package/dist/lib/search/Search.js +0 -124
- package/dist/lib/sjvair-air.avif +0 -0
- package/dist/lib/sjvair-air.png +0 -0
- package/dist/lib/sjvair-air.webp +0 -0
- package/dist/lib/sjvair-air2.avif +0 -0
- package/dist/lib/sjvair-air2.png +0 -0
- package/dist/lib/sjvair-air2.webp +0 -0
- package/dist/lib/sjvair-icon.avif +0 -0
- package/dist/lib/sjvair-icon.png +0 -0
- package/dist/lib/sjvair-icon.webp +0 -0
- package/dist/lib/sjvair-icon2.avif +0 -0
- package/dist/lib/sjvair-icon2.png +0 -0
- package/dist/lib/sjvair-icon2.webp +0 -0
- package/dist/lib/sjvair-sjv.avif +0 -0
- package/dist/lib/sjvair-sjv.png +0 -0
- package/dist/lib/sjvair-sjv.webp +0 -0
- package/dist/lib/sjvair-sjv2.avif +0 -0
- package/dist/lib/sjvair-sjv2.png +0 -0
- package/dist/lib/sjvair-sjv2.webp +0 -0
package/dist/lib/map/icons.js
CHANGED
|
@@ -1,31 +1,33 @@
|
|
|
1
|
-
import { darken
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
10
|
-
|
|
11
|
-
<circle cx="12" cy="12" r="${12 -
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
25
|
-
|
|
28
|
+
export function asDataURI(svg) {
|
|
29
|
+
return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;
|
|
26
30
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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();
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
2
|
-
import { SvelteMap
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
|
|
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,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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
|
|
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 {};
|