// Chargement des pages de la section « Après le GONG » depuis content/apres-le-gong/*.md.
// _index.md fournit le texte d'introduction de la page d'index (pas une carte).
import { parseFrontmatter, renderAvecSources } from './markdown';

const files = import.meta.glob('/content/apres-le-gong/*.md', {
	query: '?raw',
	import: 'default',
	eager: true
}) as Record<string, string>;

export interface PageApresGong {
	slug: string;
	titre: string;
	chapeau: string;
	ordre: number;
	html: string; // corps rendu (notes [^N^] traitées, section Sources en fin)
}

let cache: PageApresGong[] | null = null;
let indexCache: { titre: string; chapeau: string; html: string } | null = null;

export function getPagesApresGong(): PageApresGong[] {
	if (cache) return cache;
	const out: PageApresGong[] = [];
	for (const [path, raw] of Object.entries(files)) {
		const slug = path.split('/').pop()!.replace(/\.md$/, '');
		if (slug.startsWith('_')) continue; // _index.md : intro de la section
		const { data, body } = parseFrontmatter(raw);
		if (!data.titre) continue;
		out.push({
			slug,
			titre: data.titre,
			chapeau: data.chapeau ?? '',
			ordre: Number(data.ordre ?? 99),
			html: renderAvecSources(body.trim())
		});
	}
	out.sort((a, b) => a.ordre - b.ordre);
	cache = out;
	return out;
}

export function getPageApresGong(slug: string): PageApresGong | undefined {
	return getPagesApresGong().find((p) => p.slug === slug);
}

/** Texte d'introduction de la page d'index (content/apres-le-gong/_index.md). */
export function getIndexApresGong(): { titre: string; chapeau: string; html: string } {
	if (indexCache) return indexCache;
	const raw = files['/content/apres-le-gong/_index.md'];
	const { data, body } = parseFrontmatter(raw ?? '');
	indexCache = {
		titre: data.titre ?? 'Après le GONG',
		chapeau: data.chapeau ?? '',
		html: renderAvecSources(body.trim())
	};
	return indexCache;
}
