2024-04-25 13:48:31 +02:00
|
|
|
<script lang="ts">
|
|
|
|
import { map, files, selectedFiles, getFileStore } from '$lib/stores';
|
|
|
|
import type { GPXFile } from 'gpx';
|
2024-04-25 14:55:35 +02:00
|
|
|
import { GPXLayer } from './GPXLayer';
|
2024-04-25 13:48:31 +02:00
|
|
|
import { get, type Writable } from 'svelte/store';
|
|
|
|
|
2024-04-25 14:55:35 +02:00
|
|
|
let gpxLayers: Map<Writable<GPXFile>, GPXLayer> = new Map();
|
2024-04-25 13:48:31 +02:00
|
|
|
|
|
|
|
$: if ($map) {
|
2024-04-25 16:41:06 +02:00
|
|
|
// remove layers for deleted files
|
2024-04-25 13:48:31 +02:00
|
|
|
gpxLayers.forEach((layer, file) => {
|
|
|
|
if (!get(files).includes(file)) {
|
|
|
|
layer.remove();
|
|
|
|
gpxLayers.delete(file);
|
|
|
|
}
|
|
|
|
});
|
2024-04-25 16:41:06 +02:00
|
|
|
// add layers for new files
|
2024-04-25 13:48:31 +02:00
|
|
|
$files.forEach((file) => {
|
|
|
|
if (!gpxLayers.has(file)) {
|
2024-04-25 14:55:35 +02:00
|
|
|
gpxLayers.set(file, new GPXLayer(get(map), file));
|
2024-04-25 13:48:31 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
$: $selectedFiles.forEach((file) => {
|
|
|
|
let fileStore = getFileStore(file);
|
|
|
|
if (gpxLayers.has(fileStore)) {
|
|
|
|
gpxLayers.get(fileStore)?.moveToFront();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
</script>
|