const STORAGE_KEY = 'kestrel-cot-layers' const DEFAULT_LAYERS = Object.freeze({ air: true, surface: true, ground: true }) function loadLayers() { if (typeof localStorage === 'undefined') return { ...DEFAULT_LAYERS } try { const raw = localStorage.getItem(STORAGE_KEY) if (!raw) return { ...DEFAULT_LAYERS } const parsed = JSON.parse(raw) return { air: parsed.air !== false, surface: parsed.surface !== false, ground: parsed.ground !== false, } } catch { return { ...DEFAULT_LAYERS } } } function saveLayers(layers) { if (typeof localStorage === 'undefined') return try { localStorage.setItem(STORAGE_KEY, JSON.stringify(layers)) } catch { /* ignore quota */ } } export function useCotLayers() { const layers = ref(loadLayers()) const layerQuery = computed(() => { const parts = [] if (layers.value.air) parts.push('air') if (layers.value.surface) parts.push('surface') if (layers.value.ground) parts.push('ground') return parts.length ? parts.join(',') : 'none' }) function toggleLayer(name) { if (!(name in DEFAULT_LAYERS)) return layers.value = { ...layers.value, [name]: !layers.value[name] } saveLayers(layers.value) } return Object.freeze({ layers, layerQuery, toggleLayer }) }