// © 2026 TechnoLibre (http://www.technolibre.ca) // License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) // Point d'entrée de la page : le seul module de src/ qui choisit la // plateforme (§ 13.4). Sous la coquille Electron, le préchargement expose // window.gtt — le système de fichiers du processus principal et la copie // dans le presse-papiers ; sans lui, la page est la plateforme web, sur // l'OPFS et le presse-papiers du navigateur. Il construit les dépendances // d'App — l'horloge du système, l'exécuteur direct de la génération, les // identifiants tirés par crypto.randomUUID, les démonstrations livrées // nommées par le catalogue — et monte App dans le corps du document. Le // thème de départ est laissé à App, qui lit la préférence du système. import { mount } from 'svelte'; import { creerExecuteurDirect } from './application/generation.js'; import { creerHorlogeSysteme } from './application/horloge.js'; import { CATALOGUE } from './demo/catalogue.js'; import { LIVREES } from './demo/livrees.js'; import App from './interface/App.svelte'; import { FORMAT } from './stockage/document.js'; import { creerFichiersElectron } from './stockage/fichiers_electron.js'; import { creerFichiersWeb } from './stockage/fichiers_web.js'; import { VERSION } from './version.genere.js'; const pont = window.gtt; const sousElectron = pont !== undefined; const fs = sousElectron ? creerFichiersElectron(pont.fichiers) : creerFichiersWeb(); const pressePapiers = sousElectron ? { copier: async (texte) => void (await pont.copier(texte)) } : { copier: (texte) => navigator.clipboard.writeText(texte) }; // Chaque démonstration livrée, nommée par l'entrée de même clé du catalogue, // dans l'ordre du catalogue. const demonstrations = LIVREES.map(({ cle, texte }) => ({ cle, nom: CATALOGUE.find((entree) => entree.cle === cle).nom, texte, })); mount(App, { target: document.body, props: { fs, horloge: creerHorlogeSysteme(), executeur: creerExecuteurDirect(), pressePapiers, identifiant: () => crypto.randomUUID(), langue: 'fr', provenance: import.meta.env.MODE, demonstrations, formatCourant: FORMAT, produitVersion: VERSION.affichee, }, });