| import ValidadorToken from './components/lib/ValidadorToken.js';
import GerenciadorUsuarios from './components/list/GerenciadorUsuarios.js';
import LoginScreen from './components/screen/LoginScreen.js';
import GerenciadorPermissoes from './components/list/GerenciadorPermissoes.js';
import RegistrationScreen from './components/screen/RegistrationScreen.js';
import RecoveryScreen from './components/screen/RecoveryScreen.js';
import ListaSaloes from './components/list/ListaSaloes.js';
import Admin from './components/screen/Admin.js';
import About from './components/screen/About.js';
import GerenciadorSaloes from './components/list/GerenciadorSaloes.js';
import HeatmapComponent from './components/lib/HeatmapComponent.js';
import CadSaloes from './components/cad/CadSaloes.js';
import CadEnderecos from './components/cad/CadEnderecos.js';
import MapaSaloes from './components/screen/MapaSaloes.js';
import MinhaArea from './components/screen/MinhaArea.js';
class App {
    constructor() {
        this.userLanguage = navigator.language || navigator.userLanguage;
        this.appElement = document.getElementById('app');
        this.tokenJWT = new ValidadorToken(this.navigate.bind(this),this.userLanguage);
        this.tokenJWT.init();
    }
navigate(link, params = {}) {
    if (this.appElement) {
        this.appElement.innerHTML = '';
    } else {
        console.error('Elemento #app não encontrado');
    }
    
    let componentInstance =  this.getComponentInstance(link, params);
    
    if (componentInstance) {
        const { element, init } = componentInstance.render();
        this.appElement.appendChild(element);
        if (init && typeof init === 'function') {
            init();
        }
    }
}
addPopStateListener() {
    window.addEventListener('popstate', (event) => {
        const path = window.location.pathname.replace('/', '');
        history.pushState(null, '', path);
    });
}
getComponentInstance(link, params) {
  
            switch (link) {
                case 'usuarios':
                    return new GerenciadorUsuarios();
                   
                case 'recuperarSenha':
                    return new RecoveryScreen(this.navigate.bind(this));
                   
                case 'cadastro':
                    return new RegistrationScreen(this.navigate.bind(this));
                
                case 'minhaarea':
                    return new MinhaArea();
                   
                case 'admin':
                    return new Admin(this.navigate.bind(this), this.userLanguage);
                    
                case 'permissoes':
                    return new GerenciadorPermissoes();
                   
                case 'sobre':
                    return new About(this.userLanguage);
                   
                case 'saloes':
                    return new ListaSaloes();
                case 'gerirsaloes':
                    return new GerenciadorSaloes(this.navigate.bind(this));
                   
                case 'login':
                    return new LoginScreen(this.navigate.bind(this));
                
                case 'experiencia':
                    return new HeatmapComponent();
                
                case 'cadsalao':
                    return new CadSaloes(this.navigate.bind(this));
                    
                case 'cadendereco':
                        return new CadEnderecos(this.navigate.bind(this),params);
                case 'mapa':
                    return new MapaSaloes(this.navigate.bind(this));
                default:
                    return null;
                    
            }
       
}
}
document.addEventListener('DOMContentLoaded', function() {
   const app = new App();
   app.navigate('mapa')
});
 |