UNPKG

@atlaskit/editor-plugin-code-block-advanced

Version:

CodeBlockAdvanced plugin for @atlaskit/editor-core

47 lines (46 loc) 1.42 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import { syntaxHighlighting } from '@codemirror/language'; import { languageStyling } from '../../ui/syntaxHighlightingTheme'; import { mapLanguageToCodeMirror } from './languageMap'; /** * Manages loading the languages (for syntax highlighting, etc.) * from CodeMirror and updating the language in the CodeMirror view */ export class LanguageLoader { constructor(updateLanguageCompartment) { _defineProperty(this, "languageName", ''); this.updateLanguageCompartment = updateLanguageCompartment; } async updateLanguage(languageName) { if (languageName === this.languageName) { return; } const language = mapLanguageToCodeMirror(languageName); const configureEmpty = () => { if (this.languageName) { this.updateLanguageCompartment([]); } this.languageName = ''; }; if (!language) { configureEmpty(); return; } try { const lang = await language.load(); if (lang) { const styling = languageStyling(lang.language); if (styling) { this.updateLanguageCompartment([lang, syntaxHighlighting(styling)]); } else { this.updateLanguageCompartment(lang); } this.languageName = languageName; } else { configureEmpty(); } } catch (e) { configureEmpty(); } } }