diff --git a/website/src/lib/components/map/layer-control/CustomLayers.svelte b/website/src/lib/components/map/layer-control/CustomLayers.svelte index d9bb06329..8d9825382 100644 --- a/website/src/lib/components/map/layer-control/CustomLayers.svelte +++ b/website/src/lib/components/map/layer-control/CustomLayers.svelte @@ -18,7 +18,7 @@ Layers2, } from '@lucide/svelte'; import { i18n } from '$lib/i18n/i18n.svelte'; - import { defaultBasemap, type CustomLayer } from '$lib/data/layers'; + import { defaultBasemap, layerGroup, type CustomLayer } from '$lib/data/layers'; import { onMount } from 'svelte'; import { remove } from './utils'; import { settings } from '$lib/state/settings'; @@ -128,8 +128,9 @@ ], }; } - addLayer(layerId); + $customLayers[layerId] = layer; + addLayer(layerId); selectedLayerId = undefined; setDataFromSelectedLayer(); } @@ -255,13 +256,12 @@ onfinalize={(e) => { customBasemapItems = e.detail.items; $customBasemapOrder = customBasemapItems.map((item) => item.id); - $selectedBasemapTree.basemaps['custom'] = customBasemapItems.reduce( - (acc, item) => { - acc[item.id] = true; - return acc; - }, - {} - ); + selectedBasemapTree.update(($tree) => { + layerGroup($tree.basemaps)['custom'] = Object.fromEntries( + customBasemapItems.map((item) => [item.id, true]) + ); + return $tree; + }); }} > {#each customBasemapItems as item (item.id)} @@ -315,13 +315,12 @@ onfinalize={(e) => { customOverlayItems = e.detail.items; $customOverlayOrder = customOverlayItems.map((item) => item.id); - $selectedOverlayTree.overlays['custom'] = customOverlayItems.reduce( - (acc, item) => { - acc[item.id] = true; - return acc; - }, - {} - ); + selectedOverlayTree.update(($tree) => { + layerGroup($tree.overlays)['custom'] = Object.fromEntries( + customOverlayItems.map((item) => [item.id, true]) + ); + return $tree; + }); }} > {#each customOverlayItems as item (item.id)} diff --git a/website/src/lib/components/map/layer-control/LayerTreeNode.svelte b/website/src/lib/components/map/layer-control/LayerTreeNode.svelte index 815e7956e..76908c314 100644 --- a/website/src/lib/components/map/layer-control/LayerTreeNode.svelte +++ b/website/src/lib/components/map/layer-control/LayerTreeNode.svelte @@ -22,7 +22,7 @@ selected?: string; onselect?: (value: string) => void; multiple: boolean; - checked: LayerTreeType; + checked?: LayerTreeType; } = $props(); const { customLayers } = settings; @@ -53,7 +53,9 @@ id="{name}-{id}" {name} value={id} - bind:checked={checked[id]} + bind:checked={ + () => checked[id] === true, (value) => (checked[id] = value) + } class="scale-90" aria-label={i18n._(`layers.label.${id}`)} /> @@ -90,12 +92,18 @@ {#snippet content()}