visual-editor.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  2. import { isValidTeXFile } from '../../../main/is-valid-tex-file'
  3. const visualEditorProviders = importOverleafModules('visualEditorProviders')
  4. export function isVisualEditorAvailable(filename: string): boolean {
  5. // Core LaTeX visual editor
  6. if (isValidTeXFile(filename)) {
  7. return true
  8. }
  9. // Visual editors provided by modules
  10. for (const provider of visualEditorProviders) {
  11. if (provider.import.isVisualEditorAvailable(filename)) {
  12. return true
  13. }
  14. }
  15. return false
  16. }
  17. export function getVisualEditorComponent(filename: string) {
  18. for (const provider of visualEditorProviders) {
  19. const component = provider.import.getVisualEditorComponent(filename)
  20. if (component != null) {
  21. return component
  22. }
  23. }
  24. return null
  25. }
  26. export function getVisualEditorStorageKey(filename: string): string {
  27. for (const provider of visualEditorProviders) {
  28. if (provider.import.isVisualEditorAvailable(filename)) {
  29. const id = provider.import.id
  30. return id != null ? `editor.lastUsedMode.${id}` : 'editor.lastUsedMode'
  31. }
  32. }
  33. return 'editor.lastUsedMode'
  34. }