index.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { Extension } from '@codemirror/state';
  2. export const getEditorTheme = async(themeName: EditorTheme): Promise<Extension> => {
  3. switch (themeName) {
  4. case 'Eclipse':
  5. return (await import('@uiw/codemirror-theme-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 'Rosé Pine':
  11. return (await import('./rose-pine')).rosePine;
  12. case 'DefaultDark':
  13. return (await import('./original-dark')).originalDark;
  14. case 'Material':
  15. return (await import('cm6-theme-material-dark')).materialDark;
  16. case 'Nord':
  17. return (await import('cm6-theme-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. 'Rosé Pine': 'Rosé Pine',
  31. DefaultDark: 'DefaultDark',
  32. Material: 'Material',
  33. Nord: 'Nord',
  34. Cobalt: 'Cobalt',
  35. Kimbie: 'Kimbie',
  36. } as const;
  37. export const AllEditorTheme = Object.values(EditorTheme);
  38. export type EditorTheme = typeof EditorTheme[keyof typeof EditorTheme]