// file: kb-app-demo-desktop/frontend/ts/main.ts // version: 7 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 { try { const readme = await invoke("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}`); } } async function openDemoConfigWindow(): Promise { try { await invoke("open_demo_config_window"); } catch (caughtError) { const message = caughtError instanceof Error ? caughtError.message : String(caughtError); frontendError("kb-app-demo-desktop.frontend.main", `Cannot open configuration window: ${message}`); } } document.addEventListener("DOMContentLoaded", async () => { installFrontendConsoleBridge("kb-app-demo-desktop.frontend.main"); document.querySelector("#openDemoConfigLink")?.addEventListener("click", event => { event.preventDefault(); void openDemoConfigWindow(); }); document.querySelector("#openDemoWalletLink")?.addEventListener("click", event => { event.preventDefault(); void invoke("open_demo_wallet_window"); }); frontendDebug("kb-app-demo-desktop.frontend.main", "main window loaded"); const readmeContent = document.querySelector("#readmeContent"); if (readmeContent) { await loadReadme(readmeContent); } }); const openDemoWsLink = document.querySelector("#openDemoWsLink"); if (openDemoWsLink) { openDemoWsLink.addEventListener("click", event => { event.preventDefault(); void invoke("open_demo_ws_window"); }); } const openDemoHttpLink = document.querySelector("#openDemoHttpLink"); if (openDemoHttpLink) { openDemoHttpLink.addEventListener("click", event => { event.preventDefault(); void invoke("open_demo_http_window"); }); } const openDemoBackfillLink = document.querySelector("#openDemoBackfillLink"); if (openDemoBackfillLink) { openDemoBackfillLink.addEventListener("click", event => { event.preventDefault(); void invoke("open_demo_backfill_window"); }); } const pipelineDemoLinks: ReadonlyArray = [ ["openDemoCoreExtractionLink", "open_demo_core_extraction_window"], ["openDemoDecodeReplayLink", "open_demo_decode_replay_window"], ["openDemoExecutionSolanaCoreLink", "open_demo_execution_solana_core_window"], ["openDemoExecutionSplLink", "open_demo_execution_spl_window"], ["openDemoExecutionMetadataLink", "open_demo_execution_metadata_window"], ]; for (const [elementId, command] of pipelineDemoLinks) { const link = document.querySelector(`#${elementId}`); if (link) { link.addEventListener("click", event => { event.preventDefault(); void invoke(command); }); } } const sqlDemoLinks: ReadonlyArray = [ ["openDemoSqlDiagLink", "open_demo_sql_diag_window"], ["openDemoSqlPgRawLink", "open_demo_sql_pg_raw_window"], ["openDemoSqlPgCoreLink", "open_demo_sql_pg_core_window"], ["openDemoSqlReplayCandidatesLink", "open_demo_sql_replay_candidates_window"], ]; for (const [elementId, command] of sqlDemoLinks) { const link = document.querySelector(`#${elementId}`); if (link) { link.addEventListener("click", event => { event.preventDefault(); void invoke(command); }); } }