Fix: overlays bikerouterGravel, cyclOSMlite, mapterhornHillshade, openRailwayMap cannot be toggled in Layer settings (#329)

This commit is contained in:
Pablo Ovelleiro Corral
2026-04-17 20:07:51 +02:00
committed by GitHub
parent 54b3113480
commit 40f97b7c35

View File

@@ -162,19 +162,19 @@ function getLayerValidator(allowed: Record<string, any>, fallback: string) {
function filterLayerTree(t: LayerTreeType, allowed: LayerTreeType | undefined): LayerTreeType { function filterLayerTree(t: LayerTreeType, allowed: LayerTreeType | undefined): LayerTreeType {
const filtered: LayerTreeType = {}; const filtered: LayerTreeType = {};
const values = Object.values(t); if (!allowed) return filtered;
if (values.length == 0) return filtered;
if (typeof values[0] === 'boolean') {
if (allowed) {
Object.keys(allowed).forEach((key) => { Object.keys(allowed).forEach((key) => {
if (Object.hasOwn(t, key)) { const allowedVal = allowed[key];
filtered[key] = t[key]; if (typeof allowedVal === 'boolean') {
filtered[key] = typeof t?.[key] === 'boolean' ? t[key] : allowedVal;
} else { } else {
filtered[key] = allowed[key]; filtered[key] = filterLayerTree(
typeof t?.[key] === 'object' ? (t[key] as LayerTreeType) : {},
allowedVal
);
} }
}); });
} Object.entries(t ?? {}).forEach(([key, value]) => {
Object.entries(t).forEach(([key, value]) => {
if ( if (
!Object.hasOwn(filtered, key) && !Object.hasOwn(filtered, key) &&
(key.startsWith('custom-') || key.startsWith('extension-')) (key.startsWith('custom-') || key.startsWith('extension-'))
@@ -182,18 +182,6 @@ function filterLayerTree(t: LayerTreeType, allowed: LayerTreeType | undefined):
filtered[key] = value; filtered[key] = value;
} }
}); });
} else {
Object.entries(t).forEach(([key, value]) => {
if (typeof value === 'object') {
filtered[key] = filterLayerTree(
value,
typeof allowed === 'object' && typeof allowed[key] === 'object'
? allowed[key]
: undefined
);
}
});
}
return filtered; return filtered;
} }