Files
khadhroony-bot3/kb-app-demo-desktop/frontend/ts/main.ts
2026-07-25 19:59:48 +02:00

47 lines
1.8 KiB
TypeScript

// file: kb-app-demo-desktop/frontend/ts/main.ts
// version: 1
import * as bootstrap from "bootstrap";
import MarkdownIt from "markdown-it";
import ResizeObserver from "resize-observer-polyfill";
import "simplebar";
import { invoke } from "@tauri-apps/api/core";
import { frontendDebug, frontendError, installFrontendConsoleBridge } from "./frontend_log.ts";
(window as Window & typeof globalThis & { bootstrap?: typeof bootstrap }).bootstrap = bootstrap;
(window as Window & typeof globalThis & { ResizeObserver?: typeof ResizeObserver }).ResizeObserver = ResizeObserver;
const markdownRenderer = new MarkdownIt({
html: false,
linkify: true,
typographer: true,
});
async function loadReadme(readmeContent: HTMLElement): Promise<void> {
try {
const readme = await invoke<string>("load_project_readme");
readmeContent.innerHTML = markdownRenderer.render(readme);
} catch (caughtError) {
const message = caughtError instanceof Error ? caughtError.message : String(caughtError);
readmeContent.textContent = `Erreur pendant le chargement du README : ${message}`;
frontendError("kb-app-demo-desktop.frontend.main", `README loading failed: ${message}`);
}
}
document.addEventListener("DOMContentLoaded", async () => {
installFrontendConsoleBridge("kb-app-demo-desktop.frontend.main");
frontendDebug("kb-app-demo-desktop.frontend.main", "main window loaded");
const readmeContent = document.querySelector<HTMLElement>("#readmeContent");
if (readmeContent) {
await loadReadme(readmeContent);
}
});
const openDemoBackfillLink = document.querySelector<HTMLAnchorElement>("#openDemoBackfillLink");
if (openDemoBackfillLink) {
openDemoBackfillLink.addEventListener("click", event => {
event.preventDefault();
void invoke("open_demo_backfill_window");
});
}