/* Elevate — Tweaks app Overrides: - Day of week label (Mon..Sun, or Auto) - Season (Spring/Summer/Autumn/Winter, or Auto) - Coordinates string shown after "Waregem" Persists via __edit_mode_set_keys (EDITMODE block in this file). */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "day": "auto", "season": "auto", "lat": 50.8956, "lon": 3.4239, "coordFormat": "decimal" }/*EDITMODE-END*/; const DAYS = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; function autoSeason(d) { const m = d.getMonth() + 1, day = d.getDate(); if ((m === 3 && day >= 20) || m === 4 || m === 5 || (m === 6 && day < 21)) return 'spring'; if ((m === 6 && day >= 21) || m === 7 || m === 8 || (m === 9 && day < 23)) return 'summer'; if ((m === 9 && day >= 23) || m === 10 || m === 11 || (m === 12 && day < 21)) return 'autumn'; return 'winter'; } function fmtCoords(lat, lon, format) { const ns = lat >= 0 ? 'N' : 'S'; const ew = lon >= 0 ? 'E' : 'W'; const aLat = Math.abs(lat), aLon = Math.abs(lon); if (format === 'dms') { const toDms = (v) => { const deg = Math.floor(v); const minF = (v - deg) * 60; const min = Math.floor(minF); const sec = ((minF - min) * 60).toFixed(1); return `${deg}°${String(min).padStart(2,'0')}′${sec}″`; }; return `${toDms(aLat)} ${ns}, ${toDms(aLon)} ${ew}`; } if (format === 'short') { return `${aLat.toFixed(2)}° ${ns}, ${aLon.toFixed(2)}° ${ew}`; } return `${aLat.toFixed(4)}° ${ns}, ${aLon.toFixed(4)}° ${ew}`; } function applyTweaks(t) { const dayEl = document.querySelector('[data-scene-day]'); const seasonEl = document.querySelector('[data-scene-season]'); const coordsEl = document.querySelector('[data-scene-coords]'); const now = new Date(); if (dayEl) { dayEl.textContent = t.day === 'auto' ? DAYS[now.getDay()] : DAYS[Number(t.day)]; } if (seasonEl) { const season = t.season === 'auto' ? autoSeason(now) : t.season; seasonEl.textContent = season.charAt(0).toUpperCase() + season.slice(1); // Notify scene engine if available if (window.__sceneSetSeason) { window.__sceneSetSeason(t.season === 'auto' ? null : season); } } if (coordsEl) { coordsEl.textContent = fmtCoords(t.lat, t.lon, t.coordFormat); } } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); React.useEffect(() => { applyTweaks(t); }, [t]); return ( setTweak('day', v)} /> setTweak('season', v)} /> setTweak('lat', v)} /> setTweak('lon', v)} /> setTweak('coordFormat', v)} /> setTweak({ lat: 50.8956, lon: 3.4239, coordFormat: 'decimal' })} /> ); } const root = ReactDOM.createRoot(document.getElementById('tweaks-root')); root.render(); // Apply once on load even before tweaks panel opens, so default values render. document.addEventListener('DOMContentLoaded', () => applyTweaks(TWEAK_DEFAULTS));