import { isValidStr } from './string-helper';

/**
 * 解析配色方案,优先dark模式
 */
export function parseColorScheme(colorScheme: string): {
  isDarkMode: boolean;
  extraSchemeName: string | null;
} {
  if (colorScheme === 'dark') {
    return {
      isDarkMode: true,
      extraSchemeName: null,
    };
  } else if (colorScheme === 'light') {
    return {
      isDarkMode: false,
      extraSchemeName: null,
    };
  } else if (colorScheme === 'auto') {
    return {
      isDarkMode: window.matchMedia
        ? window.matchMedia('(prefers-color-scheme: dark)').matches
        : true,
      extraSchemeName: null,
    };
  } else {
    // 可能是插件 for example: dark+miku
    let [base, name] = colorScheme.split('+');

    if (!isValidStr(name)) {
      name = base;
      base = 'dark';
    }

    return {
      isDarkMode: base === 'dark',
      extraSchemeName: `theme-${name}`,
    };
  }
}