// Icon Store - For efficient SVG icon imports (Vue3 Composition API)
import { ref } from 'vue';

type IconMap = {
  [key: string]: string;
}

// 响应式状态
const availableIcons = ref<IconMap>({});
const iconContents = ref<IconMap>({});
const iconCache = new Map();

// 使用Vite的import.meta.glob动态导入
export const initialize = async () => {
  const iconModules = import.meta.glob('/src/assets/icons/*.svg', {
    eager: true,
    as: 'raw'
  });

  Object.entries(iconModules).forEach(([path, content]: [string, string]) => {
    const name = path?.split('/')?.pop()?.replace('.svg', '') as string;
    iconContents.value[name] = content;
    availableIcons.value[name] = `data:image/svg+xml;base64,${btoa(content)}`;
  });

  return Object.keys(availableIcons).length;
};

// 获取图标URL
export const getIconUrl = (name: string) => {
  if (iconCache.has(name)) return iconCache.get(name);

  const url = availableIcons.value[name];
  if (url) iconCache.set(name, url);
  return url;
};

// 获取原始SVG内容
export const getIconContent = (name: string) => {
  return iconContents.value[name] || null;
};

initialize()

// return {
//   availableIcons: ref(availableIcons),
//   iconContents: ref(iconContents),
//   initialize,
//   getIconUrl,
//   getIconContent
// };

// 初始化图标存储
// export function useIconStore() {
//   // 使用Vite的import.meta.glob动态导入
//   const initialize = async () => {
//     const iconModules = import.meta.glob('/src/lib/assets/icons/*.svg', {
//       eager: true,
//       as: 'raw'
//     });

//     Object.entries(iconModules).forEach(([path, content]: [string, string]) => {
//       const name = path?.split('/')?.pop()?.replace('.svg', '') as string;
//       iconContents.value[name] = content;
//       availableIcons.value[name] = `data:image/svg+xml;base64,${btoa(content)}`;
//     });

//     return Object.keys(availableIcons).length;
//   };

//   // 获取图标URL
//   const getIconUrl = (name: string) => {
//     if (iconCache.has(name)) return iconCache.get(name);

//     const url = availableIcons.value[name];
//     if (url) iconCache.set(name, url);
//     return url;
//   };

//   // 获取原始SVG内容
//   const getIconContent = (name: string) => {
//     return iconContents.value[name] || null;
//   };

//   return {
//     availableIcons: ref(availableIcons),
//     iconContents: ref(iconContents),
//     initialize,
//     getIconUrl,
//     getIconContent
//   };
// }
