| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
- import { isValidTeXFile } from '../../../main/is-valid-tex-file'
- const visualEditorProviders = importOverleafModules('visualEditorProviders')
- const cmVisualEditorProviders = importOverleafModules(
- 'sourceEditorVisualExtensions'
- )
- /**
- * This currently covers LaTeX and Markdown. Other file
- * types (e.g. .bib) use module-provided visual editors that render their own
- * component instead, so they must NOT enable the CodeMirror visual extensions.
- */
- export function isCmVisualEditorAvailable(filename: string): boolean {
- if (isValidTeXFile(filename)) {
- return true
- }
- for (const provider of cmVisualEditorProviders) {
- if (provider.import.isCmVisualEditorFile?.(filename)) {
- return true
- }
- }
- return false
- }
- /**
- * Whether any visual editor exists for the file, including module-provided
- * ones. Drives the editor toggle UI and the default editor mode for a file.
- */
- export function isVisualEditorAvailable(filename: string): boolean {
- if (isCmVisualEditorAvailable(filename)) {
- return true
- }
- // Visual editors provided by modules
- for (const provider of visualEditorProviders) {
- if (provider.import.isVisualEditorAvailable(filename)) {
- return true
- }
- }
- return false
- }
- export function getVisualEditorComponent(filename: string) {
- for (const provider of visualEditorProviders) {
- const component = provider.import.getVisualEditorComponent(filename)
- if (component != null) {
- return component
- }
- }
- return null
- }
- export function getVisualEditorStorageKey(filename: string): string {
- for (const provider of visualEditorProviders) {
- if (provider.import.isVisualEditorAvailable(filename)) {
- const id = provider.import.id
- return id != null ? `editor.lastUsedMode.${id}` : 'editor.lastUsedMode'
- }
- }
- return 'editor.lastUsedMode'
- }
|