UNPKG

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

Version:

CodeBlockAdvanced plugin for @atlaskit/editor-core

89 lines (88 loc) 3.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LanguageLoader = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _language = require("@codemirror/language"); var _syntaxHighlightingTheme = require("../../ui/syntaxHighlightingTheme"); var _languageMap = require("./languageMap"); /** * Manages loading the languages (for syntax highlighting, etc.) * from CodeMirror and updating the language in the CodeMirror view */ var LanguageLoader = exports.LanguageLoader = /*#__PURE__*/function () { function LanguageLoader(updateLanguageCompartment) { (0, _classCallCheck2.default)(this, LanguageLoader); (0, _defineProperty2.default)(this, "languageName", ''); this.updateLanguageCompartment = updateLanguageCompartment; } return (0, _createClass2.default)(LanguageLoader, [{ key: "updateLanguage", value: function () { var _updateLanguage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(languageName) { var _this = this; var language, configureEmpty, lang, styling; return _regenerator.default.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 = (0, _languageMap.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 = (0, _syntaxHighlightingTheme.languageStyling)(lang.language); if (styling) { this.updateLanguageCompartment([lang, (0, _language.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; }() }]); }();