Web Dev Solutions

Catalin Mititiuc

import { scenarios } from './scenarios.js'; export function init() { const showButton = document.getElementById('show-dialog'), mapDialog = document.getElementById('map-dialog'), selectEl = mapDialog.querySelector('select'), confirmBtn = mapDialog.querySelector('#confirm-btn'); Object.keys(scenarios).reverse().forEach(scenario => { const option = document.createElement('option'); option.setAttribute('value', scenario); option.textContent = scenarios[scenario].title; selectEl.prepend(option); }); return { selectCurrentOptionOnPageLoad() { mapDialog.querySelectorAll('option').forEach((option, index) => option.selected = option.value === localStorage.getItem('map') || index === 0 ); return this; }, showOnClick() { showButton.addEventListener('click', () => { mapDialog.showModal(); }); return this; }, updateValueOnSelection() { selectEl.addEventListener('change', () => { confirmBtn.value = selectEl.value; }); return this; }, changeMapOnConfirm(loadFn) { confirmBtn.addEventListener('click', e => { e.preventDefault(); localStorage.removeItem('pan-zoom'); localStorage.setItem('map', selectEl.value); loadFn(scenarios[selectEl.value]?.hashed || `assets/images/${selectEl.value}.svg`); mapDialog.close(); }); } }; } export const defaultMap = scenarios.sideShow;