' . "\n";
}
// Preload imports
foreach ($chunk['imports'] ?? [] as $importKey) {
$imp = $manifest[$importKey] ?? null;
if ($imp) {
echo '' . "\n";
}
}
// Main entry
echo '' . "\n";
}
// Dev fallback: keine Manifest-Datei → direkte TS-Referenz (Vite Dev Server)
}
/** Session-Kontext als JS-Variable injizieren */
function injectSessionContext(): void {
$ctx = [
'sessionId' => Session::studentId(),
'teacherId' => Session::teacherId(),
'baseUrl' => BASE_URL,
'basePath' => BASE_PATH,
];
echo '' . "\n";
}
/** Seite rendern: HTML laden, Session-Kontext + Favicon injizieren, ausgeben */
function renderPage(string $htmlFile): void {
$html = file_get_contents(APP_ROOT . '/' . $htmlFile);
// Favicon-Block (ersetzt alte logo.png Referenz)
$bp = BASE_PATH;
$favicon = <<
HTML;
// Alten Favicon-Link ersetzen oder vor einfuegen
if (preg_match('/]*rel=["\']icon["\'][^>]*>/', $html)) {
$html = preg_replace('/]*rel=["\']icon["\'][^>]*>\s*/', '', $html);
}
$html = str_replace('', $favicon . "\n", $html);
// Session-Kontext
$ctx = '';
echo str_replace('