UNPKG

@nteract/monaco-editor

Version:

A React component for the monaco editor, tailored for nteract

48 lines (43 loc) 1.18 kB
import Immutable from "immutable"; import * as monaco from "monaco-editor/esm/vs/editor/editor.api"; /** * Code Mirror to Monaco constants. */ export enum Mode { markdown = "markdown", raw = "plaintext", python = "python", csharp = "csharp" } /** * Maps Code Mirror mode to a valid Monaco Editor supported language * defaults to plaintext if map not found. * @param mode Code Mirror mode * @returns Monaco language */ export function mapCodeMirrorModeToMonaco(mode: any): string { let language: string = ""; // Parse codemirror mode object if (typeof mode === "string") { language = mode; } // Vanilla object else if (typeof mode === "object" && mode.name) { language = mode.name; } // Immutable Map else if (Immutable.Map.isMap(mode) && mode.has("name")) { language = mode.get("name") as string; } // Need to handle "ipython" as a special case since it is not a registered language if (language === "ipython") { return Mode.python; } else if (language === "text/x-csharp") { return Mode.csharp; } else if (monaco.languages.getEncodedLanguageId(language) > 0) { return language; } return Mode.raw; }