@sjvair/monitor-map 4.3.0 → 5.0.0-beta.0
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/LICENSE +21 -0
- package/README.md +59 -138
- package/dist/lib/MonitorDetailPanel.svelte +23 -20
- package/dist/lib/MonitorMapLayout.svelte +147 -77
- package/dist/lib/components/DataBox.svelte +4 -1
- package/dist/lib/components/ui/range-calendar/range-calendar.svelte.d.ts +1 -1
- package/dist/lib/config.svelte.d.ts +7 -0
- package/dist/lib/config.svelte.js +10 -0
- package/dist/lib/core.d.ts +2 -2
- package/dist/lib/core.js +2 -1
- package/dist/lib/data-chart/DataChart.svelte +40 -25
- package/dist/lib/data-chart/DateRange.d.ts +13 -4
- package/dist/lib/data-chart/DateRange.js +50 -14
- package/dist/lib/data-chart/chart-utils.js +5 -7
- package/dist/lib/data-chart/level-colors.d.ts +3 -4
- package/dist/lib/data-chart/level-colors.js +7 -4
- package/dist/lib/data-chart/pacific-time.d.ts +9 -0
- package/dist/lib/data-chart/pacific-time.js +25 -0
- package/dist/lib/data-chart/tooltip.js +2 -2
- package/{src/lib/ev-stations/components/EvStationTooltip.svelte → dist/lib/ev-stations/EvPopup.svelte} +6 -5
- package/dist/lib/ev-stations/EvPopup.svelte.d.ts +7 -0
- package/dist/lib/ev-stations/ev-plugin.svelte.d.ts +14 -0
- package/dist/lib/ev-stations/ev-plugin.svelte.js +71 -0
- package/dist/lib/ev-stations/ev-station-icons.d.ts +1 -4
- package/dist/lib/ev-stations/ev-station-icons.js +1 -13
- package/dist/lib/ev-stations/ev-stations.d.ts +7 -0
- package/dist/lib/ev-stations/ev-stations.js +53 -0
- package/dist/lib/ev-stations/ev-store.svelte.d.ts +21 -0
- package/dist/lib/ev-stations/ev-store.svelte.js +83 -0
- package/dist/lib/ev-stations/station-popup.svelte.d.ts +14 -0
- package/dist/lib/ev-stations/station-popup.svelte.js +54 -0
- package/dist/lib/ev-stations/types.d.ts +0 -29
- package/dist/lib/ev-stations/zip-codes.d.ts +11 -0
- package/dist/lib/ev-stations/zip-codes.js +28 -16
- package/dist/lib/index.d.ts +8 -56
- package/dist/lib/index.js +7 -46
- package/dist/lib/legend/Legend.svelte +18 -19
- package/dist/lib/legend/Legend.svelte.d.ts +2 -2
- package/dist/lib/levels.d.ts +7 -0
- package/dist/lib/levels.js +19 -0
- package/dist/lib/map/MapShell.svelte +17 -24
- package/dist/lib/map/MapShell.svelte.d.ts +4 -4
- package/dist/lib/map/basemaps.d.ts +25 -0
- package/dist/lib/map/basemaps.js +66 -0
- package/dist/lib/map/live-map.svelte.d.ts +3 -0
- package/dist/lib/map/live-map.svelte.js +22 -0
- package/dist/lib/map/sync-plugins.svelte.d.ts +19 -0
- package/dist/lib/map/sync-plugins.svelte.js +52 -0
- package/dist/lib/monitors/components/MonitorSubscriptionManager.svelte +66 -61
- package/dist/lib/monitors/filtered-source.svelte.d.ts +9 -0
- package/dist/lib/monitors/filtered-source.svelte.js +28 -0
- package/dist/lib/monitors/monitors.svelte.d.ts +25 -35
- package/dist/lib/monitors/monitors.svelte.js +35 -218
- package/dist/lib/monitors/retry-load.d.ts +8 -0
- package/dist/lib/monitors/retry-load.js +11 -0
- package/dist/lib/monitors/types.d.ts +1 -41
- package/dist/lib/options/map-option-defaults.d.ts +25 -36
- package/dist/lib/options/map-option-defaults.js +12 -30
- package/dist/lib/options/map-options.svelte.d.ts +13 -0
- package/dist/lib/options/map-options.svelte.js +26 -0
- package/dist/lib/options/menus/LayersMenu.svelte +8 -20
- package/dist/lib/options/menus/LayersMenu.svelte.d.ts +17 -2
- package/dist/lib/options/menus/MonitorsMenu.svelte +34 -18
- package/dist/lib/options/menus/OverlaysMenu.svelte +2 -2
- package/dist/lib/options/menus/PollutantMenu.svelte +4 -9
- package/dist/lib/options/menus/SettingsMenu.svelte +32 -25
- package/dist/lib/options/menus/SettingsMenu.svelte.d.ts +5 -16
- package/dist/lib/options/plugin-order.d.ts +8 -0
- package/dist/lib/options/plugin-order.js +36 -0
- package/dist/lib/options/pollutant-param.d.ts +7 -5
- package/dist/lib/options/pollutant-param.js +9 -5
- package/dist/lib/options/row-icons.d.ts +8 -0
- package/dist/lib/options/row-icons.js +15 -0
- package/dist/lib/options/rows/MarkerIcon.svelte +5 -5
- package/dist/lib/options/rows/MarkerIcon.svelte.d.ts +1 -2
- package/dist/lib/search/Search.svelte +20 -33
- package/dist/lib/search/Search.svelte.d.ts +5 -1
- package/dist/lib/search/search-pin.svelte.d.ts +11 -0
- package/dist/lib/search/search-pin.svelte.js +28 -0
- package/dist/lib/search/service.d.ts +7 -2
- package/dist/lib/search/service.js +17 -10
- package/dist/lib/stores.svelte.d.ts +8 -0
- package/dist/lib/stores.svelte.js +9 -0
- package/dist/lib/wind/wind-plugin.d.ts +11 -0
- package/dist/lib/wind/wind-plugin.js +25 -0
- package/package.json +12 -10
- package/src/lib/MonitorDetailPanel.svelte +23 -20
- package/src/lib/MonitorMapLayout.svelte +147 -77
- package/src/lib/components/DataBox.svelte +4 -1
- package/src/lib/config.svelte.ts +16 -0
- package/src/lib/core.ts +2 -2
- package/src/lib/data-chart/DataChart.svelte +40 -25
- package/src/lib/data-chart/DateRange.ts +58 -15
- package/src/lib/data-chart/chart-utils.ts +6 -7
- package/src/lib/data-chart/level-colors.ts +8 -9
- package/src/lib/data-chart/pacific-time.ts +31 -0
- package/src/lib/data-chart/tooltip.ts +2 -2
- package/{dist/lib/ev-stations/components/EvStationTooltip.svelte → src/lib/ev-stations/EvPopup.svelte} +6 -5
- package/src/lib/ev-stations/ev-plugin.svelte.ts +86 -0
- package/src/lib/ev-stations/ev-station-icons.ts +1 -17
- package/src/lib/ev-stations/ev-stations.ts +72 -0
- package/src/lib/ev-stations/ev-store.svelte.ts +117 -0
- package/src/lib/ev-stations/station-popup.svelte.ts +64 -0
- package/src/lib/ev-stations/types.ts +0 -34
- package/src/lib/ev-stations/zip-codes.ts +29 -16
- package/src/lib/index.ts +8 -99
- package/src/lib/legend/Legend.svelte +18 -19
- package/src/lib/levels.ts +24 -0
- package/src/lib/map/MapShell.svelte +17 -24
- package/src/lib/map/basemaps.ts +76 -0
- package/src/lib/map/live-map.svelte.ts +24 -0
- package/src/lib/map/sync-plugins.svelte.ts +69 -0
- package/src/lib/monitors/components/MonitorSubscriptionManager.svelte +66 -61
- package/src/lib/monitors/filtered-source.svelte.ts +38 -0
- package/src/lib/monitors/monitors.svelte.ts +58 -261
- package/src/lib/monitors/retry-load.ts +14 -0
- package/src/lib/monitors/types.ts +1 -47
- package/src/lib/options/map-option-defaults.ts +30 -53
- package/src/lib/options/map-options.svelte.ts +30 -0
- package/src/lib/options/menus/LayersMenu.svelte +8 -20
- package/src/lib/options/menus/MonitorsMenu.svelte +34 -18
- package/src/lib/options/menus/OverlaysMenu.svelte +2 -2
- package/src/lib/options/menus/PollutantMenu.svelte +4 -9
- package/src/lib/options/menus/SettingsMenu.svelte +32 -25
- package/src/lib/options/plugin-order.ts +38 -0
- package/src/lib/options/pollutant-param.ts +14 -9
- package/src/lib/options/row-icons.ts +17 -0
- package/src/lib/options/rows/MarkerIcon.svelte +5 -5
- package/src/lib/search/Search.svelte +20 -33
- package/src/lib/search/search-pin.svelte.ts +35 -0
- package/src/lib/search/service.ts +34 -15
- package/src/lib/stores.svelte.ts +15 -0
- package/src/lib/wind/wind-plugin.ts +33 -0
- package/dist/lib/collocation-sites/CollocationTooltip.svelte +0 -98
- package/dist/lib/collocation-sites/CollocationTooltip.svelte.d.ts +0 -7
- package/dist/lib/collocation-sites/collocations-icon-manager.svelte.d.ts +0 -7
- package/dist/lib/collocation-sites/collocations-icon-manager.svelte.js +0 -18
- package/dist/lib/collocation-sites/collocations-map-integration.svelte.d.ts +0 -21
- package/dist/lib/collocation-sites/collocations-map-integration.svelte.js +0 -113
- package/dist/lib/collocation-sites/collocations.svelte.d.ts +0 -10
- package/dist/lib/collocation-sites/collocations.svelte.js +0 -21
- package/dist/lib/collocation-sites/types.d.ts +0 -8
- package/dist/lib/collocation-sites/types.js +0 -1
- package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte +0 -16
- package/dist/lib/ev-stations/components/EvStationClusterTooltip.svelte.d.ts +0 -7
- package/dist/lib/ev-stations/components/EvStationTooltip.svelte.d.ts +0 -7
- package/dist/lib/ev-stations/ev-stations-cluster-renderer.d.ts +0 -19
- package/dist/lib/ev-stations/ev-stations-cluster-renderer.js +0 -131
- package/dist/lib/ev-stations/ev-stations-map-integration.svelte.d.ts +0 -31
- package/dist/lib/ev-stations/ev-stations-map-integration.svelte.js +0 -226
- package/dist/lib/ev-stations/ev-stations.svelte.d.ts +0 -10
- package/dist/lib/ev-stations/ev-stations.svelte.js +0 -57
- package/dist/lib/hms/hms-fire-icon-manager.d.ts +0 -13
- package/dist/lib/hms/hms-fire-icon-manager.js +0 -39
- package/dist/lib/hms/hms-fire-map-integration.svelte.d.ts +0 -23
- package/dist/lib/hms/hms-fire-map-integration.svelte.js +0 -94
- package/dist/lib/hms/hms-smoke-map-integration.svelte.d.ts +0 -39
- package/dist/lib/hms/hms-smoke-map-integration.svelte.js +0 -87
- package/dist/lib/hms/hms.svelte.d.ts +0 -20
- package/dist/lib/hms/hms.svelte.js +0 -237
- package/dist/lib/legend/LegendBar.svelte +0 -45
- package/dist/lib/legend/LegendBar.svelte.d.ts +0 -7
- package/dist/lib/legend/legend-data.d.ts +0 -40
- package/dist/lib/legend/legend-data.js +0 -65
- package/dist/lib/map/Map.svelte +0 -13
- package/dist/lib/map/Map.svelte.d.ts +0 -8
- package/dist/lib/map/basemap.d.ts +0 -14
- package/dist/lib/map/basemap.js +0 -10
- package/dist/lib/map/icons.d.ts +0 -7
- package/dist/lib/map/icons.js +0 -33
- package/dist/lib/map/integrations/base-layer-seperator.d.ts +0 -9
- package/dist/lib/map/integrations/base-layer-seperator.js +0 -11
- package/dist/lib/map/integrations/click-manager.d.ts +0 -14
- package/dist/lib/map/integrations/click-manager.js +0 -52
- package/dist/lib/map/integrations/integrations-manager.d.ts +0 -8
- package/dist/lib/map/integrations/integrations-manager.js +0 -20
- package/dist/lib/map/integrations/map-display-option.svelte.d.ts +0 -7
- package/dist/lib/map/integrations/map-display-option.svelte.js +0 -10
- package/dist/lib/map/integrations/map-geojson-integration.svelte.d.ts +0 -32
- package/dist/lib/map/integrations/map-geojson-integration.svelte.js +0 -60
- package/dist/lib/map/integrations/map-icon-manager.d.ts +0 -15
- package/dist/lib/map/integrations/map-icon-manager.js +0 -52
- package/dist/lib/map/integrations/map-integration.svelte.d.ts +0 -6
- package/dist/lib/map/integrations/map-integration.svelte.js +0 -2
- package/dist/lib/map/integrations/map-layer-integration.svelte.d.ts +0 -11
- package/dist/lib/map/integrations/map-layer-integration.svelte.js +0 -40
- package/dist/lib/map/integrations/tooltip.svelte.d.ts +0 -36
- package/dist/lib/map/integrations/tooltip.svelte.js +0 -131
- package/dist/lib/map/integrations/types.d.ts +0 -14
- package/dist/lib/map/integrations/types.js +0 -1
- package/dist/lib/map/map-manager.svelte.d.ts +0 -20
- package/dist/lib/map/map-manager.svelte.js +0 -63
- package/dist/lib/map/map-style-state.svelte.d.ts +0 -23
- package/dist/lib/map/map-style-state.svelte.js +0 -86
- package/dist/lib/map/utils.d.ts +0 -7
- package/dist/lib/map/utils.js +0 -36
- package/dist/lib/monitors/components/MonitorClusterTooltip.svelte +0 -112
- package/dist/lib/monitors/components/MonitorClusterTooltip.svelte.d.ts +0 -7
- package/dist/lib/monitors/components/MonitorTooltip.svelte +0 -61
- package/dist/lib/monitors/components/MonitorTooltip.svelte.d.ts +0 -7
- package/dist/lib/monitors/monitor-utils.d.ts +0 -4
- package/dist/lib/monitors/monitor-utils.js +0 -41
- package/dist/lib/monitors/monitors-cluster-renderer.d.ts +0 -33
- package/dist/lib/monitors/monitors-cluster-renderer.js +0 -221
- package/dist/lib/monitors/monitors-icon-manager.svelte.d.ts +0 -15
- package/dist/lib/monitors/monitors-icon-manager.svelte.js +0 -78
- package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +0 -43
- package/dist/lib/monitors/monitors-map-integration.svelte.js +0 -301
- package/dist/lib/options/reset-map-options.d.ts +0 -2
- package/dist/lib/options/reset-map-options.js +0 -24
- package/dist/lib/reactivity.svelte.d.ts +0 -0
- package/dist/lib/reactivity.svelte.js +0 -83
- package/dist/lib/wind/wind.svelte.d.ts +0 -10
- package/dist/lib/wind/wind.svelte.js +0 -13
- package/src/lib/collocation-sites/CollocationTooltip.svelte +0 -98
- package/src/lib/collocation-sites/collocations-icon-manager.svelte.ts +0 -21
- package/src/lib/collocation-sites/collocations-map-integration.svelte.ts +0 -136
- package/src/lib/collocation-sites/collocations.svelte.ts +0 -27
- package/src/lib/collocation-sites/types.ts +0 -10
- package/src/lib/ev-stations/components/EvStationClusterTooltip.svelte +0 -16
- package/src/lib/ev-stations/ev-stations-cluster-renderer.ts +0 -162
- package/src/lib/ev-stations/ev-stations-map-integration.svelte.ts +0 -248
- package/src/lib/ev-stations/ev-stations.svelte.ts +0 -84
- package/src/lib/hms/hms-fire-icon-manager.ts +0 -48
- package/src/lib/hms/hms-fire-map-integration.svelte.ts +0 -109
- package/src/lib/hms/hms-smoke-map-integration.svelte.ts +0 -105
- package/src/lib/hms/hms.svelte.ts +0 -270
- package/src/lib/legend/LegendBar.svelte +0 -45
- package/src/lib/legend/legend-data.ts +0 -101
- package/src/lib/map/Map.svelte +0 -13
- package/src/lib/map/basemap.ts +0 -24
- package/src/lib/map/icons.ts +0 -42
- package/src/lib/map/integrations/base-layer-seperator.ts +0 -17
- package/src/lib/map/integrations/click-manager.ts +0 -64
- package/src/lib/map/integrations/integrations-manager.ts +0 -25
- package/src/lib/map/integrations/map-display-option.svelte.ts +0 -13
- package/src/lib/map/integrations/map-geojson-integration.svelte.ts +0 -77
- package/src/lib/map/integrations/map-icon-manager.ts +0 -67
- package/src/lib/map/integrations/map-integration.svelte.ts +0 -8
- package/src/lib/map/integrations/map-layer-integration.svelte.ts +0 -49
- package/src/lib/map/integrations/tooltip.svelte.ts +0 -153
- package/src/lib/map/integrations/types.ts +0 -24
- package/src/lib/map/map-manager.svelte.ts +0 -83
- package/src/lib/map/map-style-state.svelte.ts +0 -94
- package/src/lib/map/utils.ts +0 -53
- package/src/lib/monitors/components/MonitorClusterTooltip.svelte +0 -112
- package/src/lib/monitors/components/MonitorTooltip.svelte +0 -61
- package/src/lib/monitors/monitor-utils.ts +0 -57
- package/src/lib/monitors/monitors-cluster-renderer.ts +0 -285
- package/src/lib/monitors/monitors-icon-manager.svelte.ts +0 -98
- package/src/lib/monitors/monitors-map-integration.svelte.ts +0 -318
- package/src/lib/options/reset-map-options.ts +0 -28
- package/src/lib/reactivity.svelte.ts +0 -82
- package/src/lib/wind/wind.svelte.ts +0 -20
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { MapLayerIntegration } from "./map-layer-integration.svelte";
|
|
2
|
-
import { mapManager } from "../map-manager.svelte.js";
|
|
3
|
-
export class MapGeoJSONIntegration extends MapLayerIntegration {
|
|
4
|
-
remove() {
|
|
5
|
-
this.removeLayerAndSource();
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Removes only this integration's own layer and source. Non-virtual on purpose: `apply()`
|
|
9
|
-
* paths call it to clear stale map state before re-adding, without triggering a subclass's
|
|
10
|
-
* `remove()` override (which also tears down tooltips/click handlers that apply just set up).
|
|
11
|
-
*/
|
|
12
|
-
removeLayerAndSource() {
|
|
13
|
-
if (mapManager.map?.getLayer(this.referenceId)) {
|
|
14
|
-
mapManager.map.removeLayer(this.referenceId);
|
|
15
|
-
}
|
|
16
|
-
if (mapManager.map?.getSource(this.referenceId)) {
|
|
17
|
-
mapManager.map.removeSource(this.referenceId);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export class MapIconLayerIntegration extends MapGeoJSONIntegration {
|
|
22
|
-
generation = 0;
|
|
23
|
-
/**
|
|
24
|
-
* Drops every callback still waiting on icons. `apply()` and `remove()` call it, so a
|
|
25
|
-
* subclass overriding `apply()` without calling `super.apply()` first must call it itself.
|
|
26
|
-
*/
|
|
27
|
-
supersedePending() {
|
|
28
|
-
this.generation++;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Runs `run` once the icons have loaded, unless an `apply()` or `remove()` has happened
|
|
32
|
-
* since (the state it was scheduled for is gone) or a basemap change is in flight (the
|
|
33
|
-
* refresh on "style.load" re-applies).
|
|
34
|
-
*/
|
|
35
|
-
whenIconsLoad(run) {
|
|
36
|
-
const generation = this.generation;
|
|
37
|
-
this.icons
|
|
38
|
-
.loadIcons()
|
|
39
|
-
.then(() => {
|
|
40
|
-
if (generation !== this.generation || mapManager.styleLoading)
|
|
41
|
-
return;
|
|
42
|
-
run();
|
|
43
|
-
})
|
|
44
|
-
.catch(console.error);
|
|
45
|
-
}
|
|
46
|
-
apply() {
|
|
47
|
-
if (!mapManager.map)
|
|
48
|
-
return;
|
|
49
|
-
this.supersedePending();
|
|
50
|
-
this.whenIconsLoad(() => {
|
|
51
|
-
this.removeLayerAndSource();
|
|
52
|
-
mapManager.map?.addSource(this.referenceId, this.mapSource);
|
|
53
|
-
super.apply();
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
remove() {
|
|
57
|
-
this.supersedePending();
|
|
58
|
-
super.remove();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
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,52 +0,0 @@
|
|
|
1
|
-
import { mapManager } from "../map-manager.svelte.js";
|
|
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
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Map as MaptilerMap } from "@maptiler/sdk";
|
|
2
|
-
import { MapIntegration } from "./map-integration.svelte";
|
|
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,40 +0,0 @@
|
|
|
1
|
-
import { untrack } from "svelte";
|
|
2
|
-
import { mapManager } from "../map-manager.svelte.js";
|
|
3
|
-
import { MapIntegration } from "./map-integration.svelte";
|
|
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. While a new basemap style is
|
|
12
|
-
// loading nothing is applied or removed: the refresh on "style.load" does both.
|
|
13
|
-
$effect.root(() => {
|
|
14
|
-
$effect(() => {
|
|
15
|
-
const enabled = this.enabled;
|
|
16
|
-
if (!mapManager.map || mapManager.styleLoading)
|
|
17
|
-
return;
|
|
18
|
-
if (enabled) {
|
|
19
|
-
untrack(() => this.apply());
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
untrack(() => this.remove());
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
apply() {
|
|
28
|
-
if (!mapManager.map)
|
|
29
|
-
return;
|
|
30
|
-
if (!mapManager.map.getLayer(this.referenceId)) {
|
|
31
|
-
mapManager.map.addLayer(this.mapLayer, this.beforeLayer);
|
|
32
|
-
}
|
|
33
|
-
mapManager.map.setLayoutProperty(this.referenceId, "visibility", this.enabled ? "visible" : "none");
|
|
34
|
-
}
|
|
35
|
-
remove() {
|
|
36
|
-
if (mapManager.map?.getLayer(this.referenceId)) {
|
|
37
|
-
mapManager.map.removeLayer(this.referenceId);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
/**
|
|
6
|
-
* Host-controlled master switch. When false, enable() is a no-op
|
|
7
|
-
* regardless of how many times or when internal code (e.g. a map
|
|
8
|
-
* integration's apply()) calls it -- unlike isEnabled below, this is
|
|
9
|
-
* checked fresh on every enable() call, so it can't be raced by an
|
|
10
|
-
* apply() invocation that fires before a host sets this to false.
|
|
11
|
-
*/
|
|
12
|
-
enabled: boolean;
|
|
13
|
-
private isEnabled;
|
|
14
|
-
private _tooltips;
|
|
15
|
-
get tooltips(): MapIterator<TooltipHandle>;
|
|
16
|
-
enable(layerId?: string): void;
|
|
17
|
-
disable(layerId?: string): void;
|
|
18
|
-
get(layerId: string): TooltipHandle | undefined;
|
|
19
|
-
has(layerId: string): boolean;
|
|
20
|
-
register(layerId: string, builder: TooltipBuilder, priority?: number): TooltipHandle;
|
|
21
|
-
with(layerId: string | Array<string>, cb: (tooltip: TooltipHandle) => void): void;
|
|
22
|
-
private forEachHandle;
|
|
23
|
-
}
|
|
24
|
-
declare class TooltipHandle {
|
|
25
|
-
layerId: string;
|
|
26
|
-
priority: number;
|
|
27
|
-
tooltip: Popup | null;
|
|
28
|
-
private activeFeatureId;
|
|
29
|
-
private isEnabled;
|
|
30
|
-
clearTooltip: () => void;
|
|
31
|
-
private setTooltip;
|
|
32
|
-
constructor(layerId: string, builder: TooltipBuilder, priority?: number);
|
|
33
|
-
enable(): void;
|
|
34
|
-
disable(): void;
|
|
35
|
-
}
|
|
36
|
-
export {};
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { mapManager } from "../map-manager.svelte.js";
|
|
2
|
-
import { XMap } from "@tstk/builtin-extensions";
|
|
3
|
-
function handleZoom() {
|
|
4
|
-
TooltipManager.activeHandle?.clearTooltip();
|
|
5
|
-
}
|
|
6
|
-
function setCursorPointer() {
|
|
7
|
-
mapManager.map.getCanvas().style.cursor = "pointer";
|
|
8
|
-
}
|
|
9
|
-
function setCursorDefault() {
|
|
10
|
-
mapManager.map.getCanvas().style.cursor = "";
|
|
11
|
-
}
|
|
12
|
-
export class TooltipManager {
|
|
13
|
-
static activeHandle = null;
|
|
14
|
-
/**
|
|
15
|
-
* Host-controlled master switch. When false, enable() is a no-op
|
|
16
|
-
* regardless of how many times or when internal code (e.g. a map
|
|
17
|
-
* integration's apply()) calls it -- unlike isEnabled below, this is
|
|
18
|
-
* checked fresh on every enable() call, so it can't be raced by an
|
|
19
|
-
* apply() invocation that fires before a host sets this to false.
|
|
20
|
-
*/
|
|
21
|
-
enabled = true;
|
|
22
|
-
isEnabled = false;
|
|
23
|
-
_tooltips = new XMap();
|
|
24
|
-
get tooltips() {
|
|
25
|
-
return this._tooltips.values();
|
|
26
|
-
}
|
|
27
|
-
enable(layerId) {
|
|
28
|
-
if (!this.enabled || !mapManager.map || this.isEnabled)
|
|
29
|
-
return;
|
|
30
|
-
mapManager.map.on("zoom", handleZoom);
|
|
31
|
-
this.forEachHandle(layerId, (h) => h.enable());
|
|
32
|
-
this.isEnabled = true;
|
|
33
|
-
}
|
|
34
|
-
disable(layerId) {
|
|
35
|
-
if (!mapManager.map || !this.isEnabled)
|
|
36
|
-
return;
|
|
37
|
-
mapManager.map.off("zoom", handleZoom);
|
|
38
|
-
this.forEachHandle(layerId, (h) => h.disable());
|
|
39
|
-
this.isEnabled = false;
|
|
40
|
-
}
|
|
41
|
-
get(layerId) {
|
|
42
|
-
return this._tooltips.get(layerId);
|
|
43
|
-
}
|
|
44
|
-
has(layerId) {
|
|
45
|
-
return this._tooltips.has(layerId);
|
|
46
|
-
}
|
|
47
|
-
register(layerId, builder, priority = 0) {
|
|
48
|
-
const tooltipHandle = new TooltipHandle(layerId, builder, priority);
|
|
49
|
-
this._tooltips.set(layerId, tooltipHandle);
|
|
50
|
-
return tooltipHandle;
|
|
51
|
-
}
|
|
52
|
-
with(layerId, cb) {
|
|
53
|
-
const ids = Array.isArray(layerId) ? layerId : [layerId];
|
|
54
|
-
for (const id of ids) {
|
|
55
|
-
const tooltip = this._tooltips.get(id);
|
|
56
|
-
if (tooltip)
|
|
57
|
-
cb(tooltip);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
forEachHandle(layerId, cb) {
|
|
61
|
-
if (layerId !== undefined && this._tooltips.has(layerId)) {
|
|
62
|
-
cb(this._tooltips.get(layerId));
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
for (const h of this.tooltips)
|
|
66
|
-
cb(h);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
class TooltipHandle {
|
|
71
|
-
layerId;
|
|
72
|
-
priority;
|
|
73
|
-
tooltip = null;
|
|
74
|
-
activeFeatureId = undefined;
|
|
75
|
-
isEnabled = false;
|
|
76
|
-
clearTooltip = () => {
|
|
77
|
-
if (TooltipManager.activeHandle !== this)
|
|
78
|
-
return;
|
|
79
|
-
this.tooltip?.remove();
|
|
80
|
-
this.tooltip = null;
|
|
81
|
-
TooltipManager.activeHandle = null;
|
|
82
|
-
this.activeFeatureId = undefined;
|
|
83
|
-
};
|
|
84
|
-
setTooltip;
|
|
85
|
-
constructor(layerId, builder, priority = 0) {
|
|
86
|
-
this.layerId = layerId;
|
|
87
|
-
this.priority = priority;
|
|
88
|
-
this.setTooltip = (evt) => {
|
|
89
|
-
if (!mapManager.map || !evt.features)
|
|
90
|
-
return;
|
|
91
|
-
const featureId = evt.features[0]?.id;
|
|
92
|
-
const isOwner = TooltipManager.activeHandle === this;
|
|
93
|
-
const sameFeature = featureId === this.activeFeatureId;
|
|
94
|
-
if (isOwner && this.tooltip && sameFeature) {
|
|
95
|
-
this.tooltip.setLngLat(evt.lngLat);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const activeHandle = TooltipManager.activeHandle;
|
|
99
|
-
if (activeHandle !== null && activeHandle !== this && activeHandle.priority >= this.priority)
|
|
100
|
-
return;
|
|
101
|
-
activeHandle?.clearTooltip();
|
|
102
|
-
this.activeFeatureId = undefined;
|
|
103
|
-
const tooltip = builder(evt);
|
|
104
|
-
if (tooltip) {
|
|
105
|
-
this.tooltip = tooltip;
|
|
106
|
-
TooltipManager.activeHandle = this;
|
|
107
|
-
this.activeFeatureId = featureId;
|
|
108
|
-
tooltip.addTo(mapManager.map);
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
enable() {
|
|
113
|
-
if (!mapManager.map || this.isEnabled)
|
|
114
|
-
return;
|
|
115
|
-
mapManager.map.on("mousemove", this.layerId, setCursorPointer);
|
|
116
|
-
mapManager.map.on("mouseleave", this.layerId, setCursorDefault);
|
|
117
|
-
mapManager.map.on("mousemove", this.layerId, this.setTooltip);
|
|
118
|
-
mapManager.map.on("mouseleave", this.layerId, this.clearTooltip);
|
|
119
|
-
this.isEnabled = true;
|
|
120
|
-
}
|
|
121
|
-
disable() {
|
|
122
|
-
if (!mapManager.map || !this.isEnabled)
|
|
123
|
-
return;
|
|
124
|
-
this.clearTooltip();
|
|
125
|
-
mapManager.map.off("mousemove", this.layerId, setCursorPointer);
|
|
126
|
-
mapManager.map.off("mouseleave", this.layerId, setCursorDefault);
|
|
127
|
-
mapManager.map.off("mousemove", this.layerId, this.setTooltip);
|
|
128
|
-
mapManager.map.off("mouseleave", this.layerId, this.clearTooltip);
|
|
129
|
-
this.isEnabled = false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { MapLayerEventType, Map as MaptilerMap, Popup } from "@maptiler/sdk";
|
|
2
|
-
import type { MapIntegration } from "./map-integration.svelte";
|
|
3
|
-
import type { MapGeoJSONIntegration, MapIconLayerIntegration } from "./map-geojson-integration.svelte";
|
|
4
|
-
export type TooltipPopup = <T extends TooltipController>(mapCtrl: T) => (evt: MapLayerEventType["mousemove"] & object) => void;
|
|
5
|
-
export type SomeMapIntegration = MapIntegration | MapGeoJSONIntegration<Record<string, unknown>> | MapIconLayerIntegration<Record<string, unknown>>;
|
|
6
|
-
interface TooltipController {
|
|
7
|
-
tooltip: Popup | null;
|
|
8
|
-
map?: MaptilerMap;
|
|
9
|
-
}
|
|
10
|
-
export interface MapImageIcon {
|
|
11
|
-
id: string;
|
|
12
|
-
image: HTMLImageElement;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { MapStyleVariant, Map as MaptilerMap } from "@maptiler/sdk";
|
|
2
|
-
import type { Attachment } from "svelte/attachments";
|
|
3
|
-
import type { Feature, GeoJsonProperties, Geometry } from "geojson";
|
|
4
|
-
export declare const DefaultMapStyle: MapStyleVariant;
|
|
5
|
-
declare class MapManager {
|
|
6
|
-
map: MaptilerMap | null;
|
|
7
|
-
/**
|
|
8
|
-
* True between `setStyle()` and the new style's "style.load". Plain (non-reactive) on purpose:
|
|
9
|
-
* integrations skip touching the style while it's set, and the `integrationsManager.refresh()`
|
|
10
|
-
* that runs on "style.load" applies/removes every integration afterwards.
|
|
11
|
-
*/
|
|
12
|
-
styleLoading: boolean;
|
|
13
|
-
setDataSource(sourceId: string, features: Array<Feature<Geometry, GeoJsonProperties>>): void;
|
|
14
|
-
refreshMap(): void;
|
|
15
|
-
removeExcludedLayers(): void;
|
|
16
|
-
removeMap(): void;
|
|
17
|
-
}
|
|
18
|
-
export declare const mapManager: MapManager;
|
|
19
|
-
export type { MapManager };
|
|
20
|
-
export declare const initializeMap: Attachment<HTMLDivElement>;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { MapStyle, config as MaptilerConfig, Map as MaptilerMap } from "@maptiler/sdk";
|
|
2
|
-
import { isGeoJSONSource } from "./utils";
|
|
3
|
-
MaptilerConfig.apiKey = import.meta.env.VITE_MAPTILER_KEY;
|
|
4
|
-
export const DefaultMapStyle = MapStyle.STREETS_V4.DEFAULT;
|
|
5
|
-
const excludeLayers = ["Sport", "Tourism", "Culture", "Shopping", "Food", "Transport"];
|
|
6
|
-
class MapManager {
|
|
7
|
-
map = $state(null);
|
|
8
|
-
/**
|
|
9
|
-
* True between `setStyle()` and the new style's "style.load". Plain (non-reactive) on purpose:
|
|
10
|
-
* integrations skip touching the style while it's set, and the `integrationsManager.refresh()`
|
|
11
|
-
* that runs on "style.load" applies/removes every integration afterwards.
|
|
12
|
-
*/
|
|
13
|
-
styleLoading = false;
|
|
14
|
-
setDataSource(sourceId, features) {
|
|
15
|
-
const source = mapManager.map?.getSource(sourceId);
|
|
16
|
-
if (isGeoJSONSource(source)) {
|
|
17
|
-
source.setData({
|
|
18
|
-
type: "FeatureCollection",
|
|
19
|
-
features
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
refreshMap() {
|
|
24
|
-
if (mapManager.map) {
|
|
25
|
-
this.removeExcludedLayers();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
removeExcludedLayers() {
|
|
29
|
-
for (const toExclude of excludeLayers) {
|
|
30
|
-
if (mapManager.map?.getLayer(toExclude)) {
|
|
31
|
-
mapManager.map.removeLayer(toExclude);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
removeMap() {
|
|
36
|
-
return mapManager.map?.remove();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export const mapManager = new MapManager();
|
|
40
|
-
export const initializeMap = (container) => {
|
|
41
|
-
const map = new MaptilerMap({
|
|
42
|
-
container: container,
|
|
43
|
-
center: [-119.7987626619462, 36.76272050981146],
|
|
44
|
-
zoom: 7,
|
|
45
|
-
style: DefaultMapStyle,
|
|
46
|
-
projection: "globe",
|
|
47
|
-
space: {
|
|
48
|
-
preset: "milkyway"
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
// "load" fires once the style and initial viewport tiles have loaded --
|
|
52
|
-
// in practice this can hang indefinitely (observed: never fires, even
|
|
53
|
-
// after 20+s, despite the style/tiles being independently fetchable) for
|
|
54
|
-
// reasons that don't affect "idle", which fires once the map has
|
|
55
|
-
// finished rendering after becoming idle. MapShell's own effect no
|
|
56
|
-
// longer waits for a *second* idle event to hide the load screen (see
|
|
57
|
-
// its comment), so listening for "idle" here doesn't reintroduce the
|
|
58
|
-
// hang that change was fixing.
|
|
59
|
-
map.once("idle", () => {
|
|
60
|
-
mapManager.map = map;
|
|
61
|
-
});
|
|
62
|
-
return () => map.remove();
|
|
63
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { MapStyleVariant, ReferenceMapStyle } from "@maptiler/sdk";
|
|
2
|
-
/** Basemap + theme selection, shared so the Settings menu and Reset Map Options agree. */
|
|
3
|
-
declare class MapStyleState {
|
|
4
|
-
referenceStyle: ReferenceMapStyle;
|
|
5
|
-
variant: MapStyleVariant;
|
|
6
|
-
private applied;
|
|
7
|
-
private loaded;
|
|
8
|
-
private stopWaiting;
|
|
9
|
-
selectReferenceStyle(style: ReferenceMapStyle): void;
|
|
10
|
-
selectVariant(variant: MapStyleVariant): void;
|
|
11
|
-
reset(): void;
|
|
12
|
-
private apply;
|
|
13
|
-
private load;
|
|
14
|
-
/**
|
|
15
|
-
* A style that fails to load leaves the map with no style at all, so go back to the last one
|
|
16
|
-
* that loaded and make the selection say so. When that one fails too (e.g. offline) there is
|
|
17
|
-
* nothing to draw on: `styleLoading` stays set, since integrations cannot add layers to a
|
|
18
|
-
* missing style, and the next selection starts a fresh attempt.
|
|
19
|
-
*/
|
|
20
|
-
private recover;
|
|
21
|
-
}
|
|
22
|
-
export declare const mapStyleState: MapStyleState;
|
|
23
|
-
export type { MapStyleState };
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { DefaultMapStyle, mapManager } from "./map-manager.svelte.js";
|
|
2
|
-
import { integrationsManager } from "./integrations/integrations-manager";
|
|
3
|
-
import { variantForStyle } from "./basemap";
|
|
4
|
-
/** Basemap + theme selection, shared so the Settings menu and Reset Map Options agree. */
|
|
5
|
-
class MapStyleState {
|
|
6
|
-
referenceStyle = $state.raw(DefaultMapStyle.getReferenceStyle());
|
|
7
|
-
variant = $state.raw(DefaultMapStyle);
|
|
8
|
-
// The variant last handed to setStyle (loaded or still loading); null once a load has failed
|
|
9
|
-
// with nothing left to fall back to, so that any later selection is tried again.
|
|
10
|
-
applied = DefaultMapStyle;
|
|
11
|
-
// The variant the map last finished loading, which a failed change falls back to.
|
|
12
|
-
loaded = DefaultMapStyle;
|
|
13
|
-
stopWaiting = null;
|
|
14
|
-
selectReferenceStyle(style) {
|
|
15
|
-
this.referenceStyle = style;
|
|
16
|
-
this.selectVariant(variantForStyle(style, this.variant));
|
|
17
|
-
}
|
|
18
|
-
selectVariant(variant) {
|
|
19
|
-
this.variant = variant;
|
|
20
|
-
this.apply();
|
|
21
|
-
}
|
|
22
|
-
reset() {
|
|
23
|
-
this.referenceStyle = DefaultMapStyle.getReferenceStyle();
|
|
24
|
-
this.selectVariant(DefaultMapStyle);
|
|
25
|
-
}
|
|
26
|
-
apply() {
|
|
27
|
-
if (!mapManager.map || this.variant === this.applied)
|
|
28
|
-
return;
|
|
29
|
-
this.load(this.variant);
|
|
30
|
-
}
|
|
31
|
-
load(variant) {
|
|
32
|
-
const map = mapManager.map;
|
|
33
|
-
if (!map)
|
|
34
|
-
return;
|
|
35
|
-
// A newer change supersedes one still in flight.
|
|
36
|
-
this.stopWaiting?.();
|
|
37
|
-
this.applied = variant;
|
|
38
|
-
// setStyle wipes every custom source/layer; re-add enabled integrations once it loads.
|
|
39
|
-
const onLoad = () => {
|
|
40
|
-
this.stopWaiting?.();
|
|
41
|
-
this.loaded = variant;
|
|
42
|
-
mapManager.styleLoading = false;
|
|
43
|
-
integrationsManager.refresh();
|
|
44
|
-
};
|
|
45
|
-
// "error" also fires for tiles, sprites and glyphs; only the style document failing means
|
|
46
|
-
// the change failed.
|
|
47
|
-
const onError = (event) => {
|
|
48
|
-
if (!isRequestFor(event.error, variant.getExpandedStyleURL()))
|
|
49
|
-
return;
|
|
50
|
-
this.stopWaiting?.();
|
|
51
|
-
this.recover(variant);
|
|
52
|
-
};
|
|
53
|
-
this.stopWaiting = () => {
|
|
54
|
-
map.off("style.load", onLoad);
|
|
55
|
-
map.off("error", onError);
|
|
56
|
-
this.stopWaiting = null;
|
|
57
|
-
};
|
|
58
|
-
map.on("style.load", onLoad);
|
|
59
|
-
map.on("error", onError);
|
|
60
|
-
mapManager.styleLoading = true;
|
|
61
|
-
map.setStyle(variant);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* A style that fails to load leaves the map with no style at all, so go back to the last one
|
|
65
|
-
* that loaded and make the selection say so. When that one fails too (e.g. offline) there is
|
|
66
|
-
* nothing to draw on: `styleLoading` stays set, since integrations cannot add layers to a
|
|
67
|
-
* missing style, and the next selection starts a fresh attempt.
|
|
68
|
-
*/
|
|
69
|
-
recover(failed) {
|
|
70
|
-
if (failed === this.loaded) {
|
|
71
|
-
this.applied = null;
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
this.variant = this.loaded;
|
|
75
|
-
this.referenceStyle = this.loaded.getReferenceStyle();
|
|
76
|
-
this.load(this.loaded);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/** Whether a map "error" event's error is a failed request for `url`, ignoring the query. */
|
|
80
|
-
function isRequestFor(error, url) {
|
|
81
|
-
const failed = error?.url;
|
|
82
|
-
if (typeof failed !== "string")
|
|
83
|
-
return false;
|
|
84
|
-
return failed.split("?")[0] === url.split("?")[0];
|
|
85
|
-
}
|
|
86
|
-
export const mapStyleState = new MapStyleState();
|
package/dist/lib/map/utils.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Component } from "svelte";
|
|
2
|
-
import { Popup } from "@maptiler/sdk";
|
|
3
|
-
import type { ReferenceMapStyle, GeoJSONSource, LngLat } from "@maptiler/sdk";
|
|
4
|
-
export declare const MAP_STYLE_OPTIONS: ReferenceMapStyle[];
|
|
5
|
-
export declare function isGeoJSONSource(source: unknown): source is GeoJSONSource;
|
|
6
|
-
export declare function mountPopup<P extends Record<string, unknown>>(component: Component<P>, props: P, lngLat: LngLat, closeButton?: boolean): Popup;
|
|
7
|
-
export declare function mountClickPopup<P extends Record<string, unknown>>(component: Component<P>, props: P, lngLat: LngLat): Popup;
|
package/dist/lib/map/utils.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { mount, unmount } from "svelte";
|
|
2
|
-
import { MapStyle, Popup } from "@maptiler/sdk";
|
|
3
|
-
export const MAP_STYLE_OPTIONS = (() => {
|
|
4
|
-
const latest = new Map();
|
|
5
|
-
for (const style of Object.values(MapStyle)) {
|
|
6
|
-
const id = style.getId();
|
|
7
|
-
const match = id.match(/^(.+?)_V(\d+)$/i);
|
|
8
|
-
const baseName = match ? match[1] : id;
|
|
9
|
-
const version = match ? parseInt(match[2], 10) : 0;
|
|
10
|
-
const existing = latest.get(baseName);
|
|
11
|
-
if (!existing || version > existing.version) {
|
|
12
|
-
latest.set(baseName, { version, style });
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return Array.from(latest.values())
|
|
16
|
-
.map((e) => e.style)
|
|
17
|
-
.sort((a, b) => a.getName().localeCompare(b.getName()));
|
|
18
|
-
})();
|
|
19
|
-
export function isGeoJSONSource(source) {
|
|
20
|
-
return (typeof source === "object" &&
|
|
21
|
-
source !== null &&
|
|
22
|
-
"type" in source &&
|
|
23
|
-
source.type === "geojson");
|
|
24
|
-
}
|
|
25
|
-
export function mountPopup(component, props, lngLat, closeButton = false) {
|
|
26
|
-
const container = document.createElement("div");
|
|
27
|
-
const instance = mount(component, { target: container, props });
|
|
28
|
-
const popup = new Popup({ closeButton, closeOnClick: false, maxWidth: "none" })
|
|
29
|
-
.setLngLat(lngLat)
|
|
30
|
-
.setDOMContent(container);
|
|
31
|
-
popup.on("close", () => unmount(instance));
|
|
32
|
-
return popup;
|
|
33
|
-
}
|
|
34
|
-
export function mountClickPopup(component, props, lngLat) {
|
|
35
|
-
return mountPopup(component, props, lngLat, true);
|
|
36
|
-
}
|