_.contribution.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*!-----------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
  4. * Released under the MIT license
  5. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  6. *-----------------------------------------------------------------------------*/
  7. var __defProp = Object.defineProperty;
  8. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  9. var __getOwnPropNames = Object.getOwnPropertyNames;
  10. var __hasOwnProp = Object.prototype.hasOwnProperty;
  11. var __copyProps = (to, from, except, desc) => {
  12. if (from && typeof from === "object" || typeof from === "function") {
  13. for (let key of __getOwnPropNames(from))
  14. if (!__hasOwnProp.call(to, key) && key !== except)
  15. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  16. }
  17. return to;
  18. };
  19. var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
  20. // src/fillers/monaco-editor-core.ts
  21. var monaco_editor_core_exports = {};
  22. __reExport(monaco_editor_core_exports, monaco_editor_core_star);
  23. import * as monaco_editor_core_star from "../editor/editor.api.js";
  24. // src/basic-languages/_.contribution.ts
  25. var languageDefinitions = {};
  26. var lazyLanguageLoaders = {};
  27. var LazyLanguageLoader = class {
  28. static getOrCreate(languageId) {
  29. if (!lazyLanguageLoaders[languageId]) {
  30. lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);
  31. }
  32. return lazyLanguageLoaders[languageId];
  33. }
  34. _languageId;
  35. _loadingTriggered;
  36. _lazyLoadPromise;
  37. _lazyLoadPromiseResolve;
  38. _lazyLoadPromiseReject;
  39. constructor(languageId) {
  40. this._languageId = languageId;
  41. this._loadingTriggered = false;
  42. this._lazyLoadPromise = new Promise((resolve, reject) => {
  43. this._lazyLoadPromiseResolve = resolve;
  44. this._lazyLoadPromiseReject = reject;
  45. });
  46. }
  47. load() {
  48. if (!this._loadingTriggered) {
  49. this._loadingTriggered = true;
  50. languageDefinitions[this._languageId].loader().then((mod) => this._lazyLoadPromiseResolve(mod), (err) => this._lazyLoadPromiseReject(err));
  51. }
  52. return this._lazyLoadPromise;
  53. }
  54. };
  55. async function loadLanguage(languageId) {
  56. await LazyLanguageLoader.getOrCreate(languageId).load();
  57. const model = monaco_editor_core_exports.editor.createModel("", languageId);
  58. model.dispose();
  59. }
  60. function registerLanguage(def) {
  61. const languageId = def.id;
  62. languageDefinitions[languageId] = def;
  63. monaco_editor_core_exports.languages.register(def);
  64. const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);
  65. monaco_editor_core_exports.languages.registerTokensProviderFactory(languageId, {
  66. create: async () => {
  67. const mod = await lazyLanguageLoader.load();
  68. return mod.language;
  69. }
  70. });
  71. monaco_editor_core_exports.languages.onLanguageEncountered(languageId, async () => {
  72. const mod = await lazyLanguageLoader.load();
  73. monaco_editor_core_exports.languages.setLanguageConfiguration(languageId, mod.conf);
  74. });
  75. }
  76. export {
  77. loadLanguage,
  78. registerLanguage
  79. };