type ModuleType = {
    default: string;
};

type FolderName = "icons" | "images" | "publicImages" | "videos";

// Import toutes les images depuis différents dossiers
const icons = import.meta.glob<ModuleType>(
    "/src/assets/icons/**/*.{png,svg,jpg,jpeg,gif}",
    { eager: true }
);
const images = import.meta.glob<ModuleType>(
    "/src/assets/images/**/*.{png,svg,jpg,jpeg,gif}",
    { eager: true }
);
const publicImages = import.meta.glob<ModuleType>(
    "/public/images/**/*.{png,svg,jpg,jpeg,gif}",
    { eager: true }
);

const videos = import.meta.glob<ModuleType>(
    "/src/assets/videos/**/*.{webm,mp4}",
    { eager: true }
);

// Map des collections par nom de dossier
const collections: Record<string, Record<string, ModuleType>> = {
    icons,
    images,
    publicImages,
    videos,
};

/**
 * Récupère le chemin optimisé d'un média à partir de son chemin et du type de dossier
 * @param path Chemin du média (ex: "/src/assets/icons/home.png")
 * @param folderName Nom du dossier ("icons", "images", ou "logos")
 * @returns Le chemin optimisé pour le média ou undefined si non trouvé
 */

export const getMediaPath = (
    path: string,
    folderName: FolderName
): string | undefined => {
    return collections[folderName]?.[path]?.default;
};
