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