UNPKG

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

Version:

CodeBlockAdvanced plugin for @atlaskit/editor-core

83 lines (82 loc) 3.14 kB
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _regeneratorRuntime from "@babel/runtime/regenerator"; 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 var LanguageLoader = /*#__PURE__*/function () { function LanguageLoader(updateLanguageCompartment) { _classCallCheck(this, LanguageLoader); _defineProperty(this, "languageName", ''); this.updateLanguageCompartment = updateLanguageCompartment; } return _createClass(LanguageLoader, [{ key: "updateLanguage", value: function () { var _updateLanguage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(languageName) { var _this = this; var language, configureEmpty, lang, styling; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!(languageName === this.languageName)) { _context.next = 2; break; } return _context.abrupt("return"); case 2: language = mapLanguageToCodeMirror(languageName); configureEmpty = function configureEmpty() { if (_this.languageName) { _this.updateLanguageCompartment([]); } _this.languageName = ''; }; if (language) { _context.next = 7; break; } configureEmpty(); return _context.abrupt("return"); case 7: _context.prev = 7; _context.next = 10; return language.load(); case 10: lang = _context.sent; if (lang) { styling = languageStyling(lang.language); if (styling) { this.updateLanguageCompartment([lang, syntaxHighlighting(styling)]); } else { this.updateLanguageCompartment(lang); } this.languageName = languageName; } else { configureEmpty(); } _context.next = 17; break; case 14: _context.prev = 14; _context.t0 = _context["catch"](7); configureEmpty(); case 17: case "end": return _context.stop(); } }, _callee, this, [[7, 14]]); })); function updateLanguage(_x) { return _updateLanguage.apply(this, arguments); } return updateLanguage; }() }]); }();