2026-02-19 12:38:07 +01:00
|
|
|
import { slides } from "@state/slides.svelte";
|
2026-02-18 12:08:03 +01:00
|
|
|
import { site } from "@state/site.svelte";
|
|
|
|
|
import { locale } from "@state/locale.svelte";
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
let siteInitialized = false;
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
function normalizePath(path) {
|
|
|
|
|
return path === "/" ? "/home" : path;
|
|
|
|
|
}
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
async function loadSlide(path) {
|
|
|
|
|
const idx = slides.getIndexByPath(path);
|
|
|
|
|
if (idx !== -1) {
|
|
|
|
|
const slide = slides.all[idx];
|
|
|
|
|
if (slide.loaded || slide.loading) return;
|
|
|
|
|
slides.setLoading(path, true);
|
|
|
|
|
}
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
try {
|
|
|
|
|
const response = await fetch(`${path}.json`);
|
|
|
|
|
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
const data = await response.json();
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
if (!siteInitialized && data.site) {
|
2026-02-07 08:26:28 +01:00
|
|
|
site.set(data.site);
|
|
|
|
|
locale.initialize(data.site.language, data.site.languages);
|
2026-02-19 12:38:07 +01:00
|
|
|
slides.init(data.site.navigation);
|
|
|
|
|
siteInitialized = true;
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
slides.setData(path, data);
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
} catch (error) {
|
2026-02-19 12:38:07 +01:00
|
|
|
console.error(`[router] Failed to load slide ${path}:`, error);
|
|
|
|
|
slides.setLoading(path, false);
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
function loadAllSlidesInBackground(exceptPath) {
|
|
|
|
|
slides.all
|
|
|
|
|
.filter((s) => s.path !== exceptPath)
|
|
|
|
|
.forEach((s) => loadSlide(s.path));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function slideTo(path, { skipHistory = false } = {}) {
|
|
|
|
|
path = normalizePath(path);
|
|
|
|
|
|
|
|
|
|
if (!skipHistory) {
|
|
|
|
|
history.pushState({}, "", path === "/home" ? "/" : path);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const idx = slides.getIndexByPath(path);
|
|
|
|
|
if (idx !== -1 && slides.all[idx].title) {
|
|
|
|
|
document.title = `${slides.all[idx].title} — World Game`;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
slides.slideTo(path);
|
|
|
|
|
|
|
|
|
|
if (idx !== -1 && !slides.all[idx].loaded) {
|
|
|
|
|
loadSlide(path);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function initRouter() {
|
|
|
|
|
const initialPath = normalizePath(window.location.pathname);
|
|
|
|
|
|
|
|
|
|
await loadSlide(initialPath);
|
|
|
|
|
|
|
|
|
|
const idx = slides.getIndexByPath(initialPath);
|
|
|
|
|
if (idx !== -1) {
|
|
|
|
|
slides.setActiveIndex(idx);
|
|
|
|
|
}
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
loadAllSlidesInBackground(initialPath);
|
|
|
|
|
|
|
|
|
|
window.addEventListener("popstate", () => {
|
|
|
|
|
const path = normalizePath(window.location.pathname);
|
|
|
|
|
slideTo(path, { skipHistory: true });
|
|
|
|
|
});
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
|
|
|
|
|
document.addEventListener("click", (e) => {
|
|
|
|
|
const link = e.target.closest("a");
|
|
|
|
|
if (!link) return;
|
|
|
|
|
|
|
|
|
|
const url = new URL(link.href, window.location.origin);
|
|
|
|
|
if (
|
|
|
|
|
url.origin === window.location.origin &&
|
|
|
|
|
!link.target &&
|
|
|
|
|
!link.hasAttribute("download")
|
|
|
|
|
) {
|
|
|
|
|
e.preventDefault();
|
2026-02-19 12:38:07 +01:00
|
|
|
slideTo(url.pathname);
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-19 12:38:07 +01:00
|
|
|
// Keep navigateTo as alias so existing views don't break
|
|
|
|
|
export const navigateTo = slideTo;
|