chore: complete update

This commit is contained in:
2025-07-17 16:24:20 +02:00
parent 899227b0a4
commit 64a7051137
1300 changed files with 85570 additions and 2756 deletions

View File

@@ -0,0 +1,47 @@
import { moduleConfig } from './config.js';
import { Logger } from '../core/logger.js';
export const activeModules = new Map(); // key: modulename → { mod, config }
export async function registerModules() {
const modules = import.meta.glob('./*/index.js', { eager: true });
const domModules = new Set(
Array.from(document.querySelectorAll('[data-module]')).map(el => el.dataset.module).filter(Boolean)
);
const usedModules = new Set(domModules);
const fallbackMode = usedModules.size === 0;
Object.entries(modules).forEach(([path, mod]) => {
const name = path.split('/').slice(-2, -1)[0]; // z.B. "noise-toggle.js"
const config = moduleConfig[name] || {};
if(!fallbackMode && !usedModules.has(name)) {
Logger.info(`⏭️ [Module] Skipped (not used in DOM): ${name}`);
return;
}
if (typeof mod.init === 'function') {
mod.init(config);
activeModules.set(name, { mod, config });
Logger.info(`✅ [Module] Initialized: ${name}`);
} else {
Logger.warn(`⛔ [Module] No init() in ${name}`);
}
});
if (fallbackMode) {
Logger.info('⚠️ [Module] No data-module usage detected, fallback to full init mode');
}
}
export function destroyModules() {
for (const [name, { mod }] of activeModules.entries()) {
if (typeof mod.destroy === 'function') {
mod.destroy();
Logger.info(`🧹 [Module] Destroyed: ${name}`);
}
}
activeModules.clear();
}