SCREENS = {} to SCREENS = new Map

This commit is contained in:
the-djmaze 2022-11-22 11:00:09 +01:00
parent 63316be535
commit 1032d0eb45

View file

@ -1,15 +1,16 @@
import ko from 'ko'; import ko from 'ko';
import { koComputable } from 'External/ko'; import { koComputable } from 'External/ko';
import { doc, $htmlCL, elementById, fireEvent } from 'Common/Globals'; import { doc, $htmlCL, elementById, fireEvent } from 'Common/Globals';
import { forEachObjectValue, forEachObjectEntry } from 'Common/Utils'; import { forEachObjectEntry } from 'Common/Utils';
import { i18nToNodes } from 'Common/Translator'; import { i18nToNodes } from 'Common/Translator';
let let
SCREENS = {},
currentScreen = null, currentScreen = null,
defaultScreenName = ''; defaultScreenName = '';
const const
SCREENS = new Map,
autofocus = dom => dom.querySelector('[autofocus]')?.focus(), autofocus = dom => dom.querySelector('[autofocus]')?.focus(),
visiblePopups = new Set, visiblePopups = new Set,
@ -18,7 +19,7 @@ const
* @param {string} screenName * @param {string} screenName
* @returns {?Object} * @returns {?Object}
*/ */
screen = screenName => (screenName && SCREENS[screenName]) || null, screen = screenName => (screenName && SCREENS.get(screenName)) || null,
/** /**
* @param {Function} ViewModelClass * @param {Function} ViewModelClass
@ -130,7 +131,7 @@ const
} }
} }
return ViewModelClass && ViewModelClass.__vm; return ViewModelClass?.__vm;
}, },
forEachViewModel = (screen, fn) => { forEachViewModel = (screen, fn) => {
@ -158,11 +159,9 @@ const
* @param {Function} ViewModelClassToHide * @param {Function} ViewModelClassToHide
* @returns {void} * @returns {void}
*/ */
hideScreenPopup = ViewModelClassToHide => { hideScreenPopup = ViewModelClassToHide =>
if (ViewModelClassToHide?.__vm && ViewModelClassToHide?.__dom) { ViewModelClassToHide?.__vm && ViewModelClassToHide.__dom
ViewModelClassToHide.__vm.modalVisible(false); && ViewModelClassToHide.__vm.modalVisible(false),
}
},
/** /**
* @param {string} screenName * @param {string} screenName
@ -209,9 +208,7 @@ const
setTimeout(() => { setTimeout(() => {
// hide screen // hide screen
if (currentScreen && !isSameScreen) { currentScreen && !isSameScreen && hideScreen(currentScreen);
hideScreen(currentScreen);
}
// -- // --
currentScreen = vmScreen; currentScreen = vmScreen;
@ -268,21 +265,19 @@ export const
*/ */
startScreens = screensClasses => { startScreens = screensClasses => {
hasher.clear(); hasher.clear();
forEachObjectValue(SCREENS, screen => hideScreen(screen, 1)); SCREENS.forEach(screen => hideScreen(screen, 1));
SCREENS = {}; SCREENS.clear();
currentScreen = null, currentScreen = null,
defaultScreenName = ''; defaultScreenName = '';
screensClasses.forEach(CScreen => { screensClasses.forEach(CScreen => {
if (CScreen) { const vmScreen = new CScreen(),
const vmScreen = new CScreen(), screenName = vmScreen.screenName;
screenName = vmScreen.screenName; defaultScreenName || (defaultScreenName = screenName);
defaultScreenName || (defaultScreenName = screenName); SCREENS.set(screenName, vmScreen);
SCREENS[screenName] = vmScreen;
}
}); });
forEachObjectValue(SCREENS, vmScreen => { SCREENS.forEach(vmScreen => {
if (!vmScreen.__started) { if (!vmScreen.__started) {
vmScreen.onStart(); vmScreen.onStart();
vmScreen.__started = true; vmScreen.__started = true;