index.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import type { Extension } from '@codemirror/state';
  2. export const getEditorTheme = async(themeName?: EditorTheme): Promise<Extension> => {
  3. switch (themeName) {
  4. case 'eclipse':
  5. return (await import('./eclipse')).eclipse;
  6. case 'basic':
  7. return (await import('cm6-theme-basic-light')).basicLight;
  8. case 'ayu':
  9. return (await import('./ayu')).ayu;
  10. case 'rosepine':
  11. return (await import('./rose-pine')).rosePine;
  12. case 'defaultdark':
  13. return (await import('./original-dark')).originalDark;
  14. case 'material':
  15. return (await import('./material')).materialDark;
  16. case 'nord':
  17. return (await import('./nord')).nord;
  18. case 'cobalt':
  19. return (await import('./cobalt')).cobalt;
  20. case 'kimbie':
  21. return (await import('@uiw/codemirror-theme-kimbie')).kimbie;
  22. }
  23. return (await import('./original-light')).originalLight;
  24. };
  25. const EditorTheme = {
  26. defaultlight: 'defaultlight',
  27. eclipse: 'eclipse',
  28. basic: 'basic',
  29. ayu: 'ayu',
  30. rosepine: 'rosepine',
  31. defaultdark: 'defaultdark',
  32. material: 'material',
  33. nord: 'nord',
  34. cobalt: 'cobalt',
  35. kimbie: 'kimbie',
  36. } as const;
  37. export const DEFAULT_THEME = 'defaultlight';
  38. export const AllEditorTheme = Object.values(EditorTheme);
  39. export type EditorTheme = typeof EditorTheme[keyof typeof EditorTheme]