{"version":3,"file":"ngstack-code-editor.mjs","sources":["../../../../projects/code-editor/src/lib/services/code-editor.service.ts","../../../../projects/code-editor/src/lib/services/typescript-defaults.service.ts","../../../../projects/code-editor/src/lib/services/javascript-defaults.service.ts","../../../../projects/code-editor/src/lib/services/json-defaults.service.ts","../../../../projects/code-editor/src/lib/code-editor/code-editor.component.ts","../../../../projects/code-editor/src/lib/code-editor/code-editor.component.html","../../../../projects/code-editor/src/lib/code-editor.module.ts","../../../../projects/code-editor/src/public_api.ts","../../../../projects/code-editor/src/ngstack-code-editor.ts"],"sourcesContent":["import { Injectable, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { CodeEditorSettings } from '../editor-settings';\nimport { editor } from 'monaco-editor';\n\nexport const EDITOR_SETTINGS = new InjectionToken<CodeEditorSettings>(\n  'EDITOR_SETTINGS'\n);\n\nexport interface TypingsInfo {\n  entryPoints: { [key: string]: string };\n  files: Array<{\n    content: string;\n    name: string;\n    url: string;\n    path: string;\n  }>;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CodeEditorService {\n  readonly baseUrl: string;\n  readonly typingsWorkerUrl: string;\n\n  typingsLoaded = new Subject<TypingsInfo>();\n  loaded = new BehaviorSubject<{ monaco: any } | null>({ monaco: null });\n\n  loadingTypings = new BehaviorSubject<boolean>(false);\n\n  private typingsWorker: Worker;\n\n  private _monaco: any;\n\n  /**\n   * Returns the global `monaco` instance\n   */\n  get monaco(): any {\n    return this._monaco;\n  }\n\n  constructor(\n    @Optional()\n    @Inject(EDITOR_SETTINGS)\n    settings: CodeEditorSettings\n  ) {\n    const editorVersion = settings?.editorVersion || 'latest';\n\n    this.baseUrl =\n      settings?.baseUrl ||\n      `https://cdn.jsdelivr.net/npm/monaco-editor@${editorVersion}/min`;\n    this.typingsWorkerUrl = settings?.typingsWorkerUrl || ``;\n  }\n\n  private loadTypingsWorker(): Worker {\n    if (!this.typingsWorker && (<any>window).Worker) {\n      if (this.typingsWorkerUrl.startsWith('http')) {\n        const proxyScript = `importScripts('${this.typingsWorkerUrl}');`;\n        const proxy = URL.createObjectURL(\n          new Blob([proxyScript], { type: 'text/javascript' })\n        );\n        this.typingsWorker = new Worker(proxy);\n      } else {\n        this.typingsWorker = new Worker(this.typingsWorkerUrl);\n      }\n      this.typingsWorker.addEventListener('message', (e) => {\n        this.loadingTypings.next(false);\n        this.typingsLoaded.next(e.data);\n      });\n    }\n    return this.typingsWorker;\n  }\n\n  loadTypings(dependencies: string[]) {\n    if (dependencies && dependencies.length > 0) {\n      const worker = this.loadTypingsWorker();\n      if (worker) {\n        this.loadingTypings.next(true);\n        worker.postMessage({\n          dependencies\n        });\n      }\n    }\n  }\n\n  loadEditor(): Promise<void> {\n    return new Promise((resolve) => {\n      const onGotAmdLoader = () => {\n        (<any>window).require.config({\n          paths: { vs: `${this.baseUrl}/vs` }\n        });\n\n        if (this.baseUrl.startsWith('http')) {\n          const proxyScript = `\n            self.MonacoEnvironment = {\n              baseUrl: \"${this.baseUrl}\"\n            };\n            importScripts('${this.baseUrl}/vs/base/worker/workerMain.js');\n          `;\n          const proxy = URL.createObjectURL(\n            new Blob([proxyScript], { type: 'text/javascript' })\n          );\n          window['MonacoEnvironment'] = {\n            getWorkerUrl: function () {\n              return proxy;\n            }\n          };\n        }\n\n        (<any>window).require(['vs/editor/editor.main'], () => {\n          this._monaco = window['monaco'];\n          this.loaded.next({ monaco: this._monaco });\n          resolve();\n        });\n      };\n\n      if (!(<any>window).require) {\n        const loaderScript = document.createElement('script');\n        loaderScript.type = 'text/javascript';\n        loaderScript.src = `${this.baseUrl}/vs/loader.js`;\n        loaderScript.addEventListener('load', onGotAmdLoader);\n        document.body.appendChild(loaderScript);\n      } else {\n        onGotAmdLoader();\n      }\n    });\n  }\n\n  /**\n   * Switches to a theme.\n   * @param themeName name of the theme\n   */\n  setTheme(themeName: string) {\n    this.monaco.editor.setTheme(themeName);\n  }\n\n  createEditor(\n    containerElement: HTMLElement,\n    options?: editor.IEditorConstructionOptions\n  ): editor.ICodeEditor {\n    return this.monaco.editor.create(containerElement, options);\n  }\n\n  createModel(\n    value: string,\n    language?: string,\n    uri?: string\n  ): editor.ITextModel {\n    return this.monaco.editor.createModel(\n      value,\n      language,\n      this.monaco.Uri.file(uri)\n    );\n  }\n\n  setModelLanguage(\n    model: editor.ITextModel,\n    mimeTypeOrLanguageId: string\n  ): void {\n    if (this.monaco && model) {\n      this.monaco.editor.setModelLanguage(model, mimeTypeOrLanguageId);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService, TypingsInfo } from './code-editor.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TypescriptDefaultsService {\n  private monaco: any;\n\n  constructor(codeEditorService: CodeEditorService) {\n    codeEditorService.loaded.subscribe(event => {\n      this.setup(event.monaco);\n    });\n    codeEditorService.typingsLoaded.subscribe(typings => {\n      this.updateTypings(typings);\n    });\n  }\n\n  setup(monaco: any): void {\n    if (!monaco) {\n      return;\n    }\n\n    this.monaco = monaco;\n\n    const defaults = monaco.languages.typescript.typescriptDefaults;\n\n    defaults.setCompilerOptions({\n      target: monaco.languages.typescript.ScriptTarget.ES6,\n      module: 'commonjs',\n      noEmit: true,\n      noLib: true,\n      emitDecoratorMetadata: true,\n      experimentalDecorators: true,\n      allowNonTsExtensions: true,\n      declaration: true,\n      lib: ['es2017', 'dom'],\n      baseUrl: '.',\n      paths: {}\n    });\n\n    defaults.setMaximumWorkerIdleTime(-1);\n    defaults.setEagerModelSync(true);\n\n    /*\n    defaults.setDiagnosticsOptions({\n      noSemanticValidation: true,\n      noSyntaxValidation: true\n    });\n    */\n  }\n\n  updateTypings(typings: TypingsInfo) {\n    if (typings) {\n      this.addExtraLibs(typings.files);\n      this.addLibraryPaths(typings.entryPoints);\n    }\n  }\n\n  addExtraLibs(libs: Array<{ path: string; content: string }> = []): void {\n    if (!this.monaco || !libs || libs.length === 0) {\n      return;\n    }\n\n    const defaults = this.monaco.languages.typescript.typescriptDefaults;\n\n    // undocumented API\n    const registeredLibs = defaults.getExtraLibs();\n\n    libs.forEach(lib => {\n      if (!registeredLibs[lib.path]) {\n        // needs performance improvements, recreates its worker each time\n        // defaults.addExtraLib(lib.content, lib.path);\n        // undocumented API\n        defaults._extraLibs[lib.path] = lib.content;\n      }\n    });\n\n    // undocumented API\n    defaults._onDidChange.fire(defaults);\n  }\n\n  addLibraryPaths(paths: { [key: string]: string } = {}): void {\n    if (!this.monaco) {\n      return;\n    }\n\n    const defaults = this.monaco.languages.typescript.typescriptDefaults;\n    const compilerOptions = defaults.getCompilerOptions();\n    compilerOptions.paths = compilerOptions.paths || {};\n\n    Object.keys(paths).forEach(key => {\n      compilerOptions.paths[key] = [paths[key]];\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService, TypingsInfo } from './code-editor.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class JavascriptDefaultsService {\n  private monaco: any;\n\n  constructor(codeEditorService: CodeEditorService) {\n    codeEditorService.loaded.subscribe(event => {\n      this.setup(event.monaco);\n    });\n    codeEditorService.typingsLoaded.subscribe(typings => {\n      this.updateTypings(typings);\n    });\n  }\n\n  setup(monaco: any): void {\n    if (!monaco) {\n      return;\n    }\n\n    this.monaco = monaco;\n\n    const defaults = monaco.languages.typescript.javascriptDefaults;\n\n    defaults.setCompilerOptions({\n      target: monaco.languages.typescript.ScriptTarget.ES6,\n      module: 'commonjs',\n      allowNonTsExtensions: true,\n      baseUrl: '.',\n      paths: {}\n    });\n\n    defaults.setMaximumWorkerIdleTime(-1);\n    defaults.setEagerModelSync(true);\n\n    /*\n    defaults.setDiagnosticsOptions({\n      noSemanticValidation: false,\n      noSyntaxValidation: false\n    });\n    */\n  }\n\n  updateTypings(typings: TypingsInfo) {\n    if (typings) {\n      this.addExtraLibs(typings.files);\n      this.addLibraryPaths(typings.entryPoints);\n    }\n  }\n\n  addExtraLibs(libs: Array<{ path: string; content: string }> = []): void {\n    if (!this.monaco || !libs || libs.length === 0) {\n      return;\n    }\n\n    const defaults = this.monaco.languages.typescript.javascriptDefaults;\n\n    // undocumented API\n    const registeredLibs = defaults.getExtraLibs();\n\n    libs.forEach(lib => {\n      if (!registeredLibs[lib.path]) {\n        // needs performance improvements, recreates its worker each time\n        // defaults.addExtraLib(lib.content, lib.path);\n        // undocumented API\n        defaults._extraLibs[lib.path] = lib.content;\n      }\n    });\n\n    // undocumented API\n    defaults._onDidChange.fire(defaults);\n  }\n\n  addLibraryPaths(paths: { [key: string]: string } = {}): void {\n    if (!this.monaco) {\n      return;\n    }\n\n    const defaults = this.monaco.languages.typescript.javascriptDefaults;\n    const compilerOptions = defaults.getCompilerOptions();\n    compilerOptions.paths = compilerOptions.paths || {};\n\n    Object.keys(paths).forEach(key => {\n      compilerOptions.paths[key] = [paths[key]];\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService } from './code-editor.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class JsonDefaultsService {\n  private monaco: any;\n\n  constructor(codeEditorService: CodeEditorService) {\n    codeEditorService.loaded.subscribe(event => {\n      this.setup(event.monaco);\n    });\n  }\n\n  setup(monaco: any): void {\n    if (!monaco) {\n      return;\n    }\n\n    this.monaco = monaco;\n\n    const defaults = monaco.languages.json.jsonDefaults;\n\n    defaults.setDiagnosticsOptions({\n      validate: true,\n      allowComments: true,\n      schemas: [\n        ...defaults._diagnosticsOptions.schemas,\n        {\n          uri: 'http://myserver/foo-schema.json',\n          // fileMatch: [id],\n          // fileMatch: ['*.json'],\n          schema: {\n            type: 'object',\n            properties: {\n              p1: {\n                enum: ['v1', 'v2']\n              },\n              p2: {\n                $ref: 'http://myserver/bar-schema.json'\n              }\n            }\n          }\n        },\n        {\n          uri: 'http://myserver/bar-schema.json',\n          // fileMatch: [id],\n          // fileMatch: ['*.json'],\n          schema: {\n            type: 'object',\n            properties: {\n              q1: {\n                enum: ['x1', 'x2']\n              }\n            }\n          }\n        }\n      ]\n    });\n  }\n\n  addSchemas(\n    id: string,\n    definitions: Array<{ uri: string; schema: Object }> = []\n  ) {\n    const defaults = this.monaco.languages.json.jsonDefaults;\n    const options = defaults.diagnosticsOptions;\n\n    const schemas: { [key: string]: Object } = {};\n\n    if (options && options.schemas && options.schemas.length > 0) {\n      options.schemas.forEach(schema => {\n        schemas[schema.uri] = schema;\n      });\n    }\n\n    for (const { uri, schema } of definitions) {\n      schemas[uri] = {\n        uri,\n        schema,\n        fileMatch: [id || '*.json']\n      };\n    }\n\n    // console.log(schemas);\n    // console.log(Object.values(schemas));\n\n    options.schemas = Object.values(schemas);\n    defaults.setDiagnosticsOptions(options);\n  }\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  OnChanges,\n  OnDestroy,\n  AfterViewInit,\n  ViewChild,\n  ElementRef,\n  Input,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n  HostListener,\n  inject\n} from '@angular/core';\nimport { CodeEditorService } from '../services/code-editor.service';\nimport { TypescriptDefaultsService } from '../services/typescript-defaults.service';\nimport { JavascriptDefaultsService } from '../services/javascript-defaults.service';\nimport { JsonDefaultsService } from '../services/json-defaults.service';\nimport { CodeModel } from '../models/code.model';\nimport { editor } from 'monaco-editor';\n\nexport interface CodeModelChangedEvent {\n  sender: CodeEditorComponent;\n  value: CodeModel;\n}\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'ngs-code-editor',\n  templateUrl: './code-editor.component.html',\n  styleUrls: ['./code-editor.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  // eslint-disable-next-line\n  host: { class: 'ngs-code-editor' }\n})\nexport class CodeEditorComponent\n  implements OnChanges, OnDestroy, AfterViewInit\n{\n  private _editor: editor.ICodeEditor;\n  private _model: editor.ITextModel;\n  // private _value = '';\n\n  private defaultOptions: editor.IStandaloneEditorConstructionOptions = {\n    lineNumbers: 'on',\n    contextmenu: false,\n    minimap: {\n      enabled: false\n    }\n  };\n\n  /**\n   * The instance of the editor.\n   */\n  get editor(): editor.ICodeEditor {\n    return this._editor;\n  }\n\n  protected set editor(value: editor.ICodeEditor) {\n    this._editor = value;\n  }\n\n  @ViewChild('editor', { static: true })\n  editorContent: ElementRef<HTMLDivElement>;\n\n  @Input()\n  codeModel: CodeModel;\n\n  // @Input()\n  // set value(v: string) {\n  //   if (v !== this._value) {\n  //     this._value = v;\n  //     this.setEditorValue(v);\n  //     this.valueChanged.emit(v);\n  //   }\n  // }\n\n  // get value(): string {\n  //   return this._value;\n  // }\n\n  /**\n   * Editor theme. Defaults to `vs`.\n   *\n   * Allowed values: `vs`, `vs-dark` or `hc-black`.\n   * @memberof CodeEditorComponent\n   */\n  @Input()\n  theme = 'vs';\n\n  /**\n   * Editor options.\n   *\n   * See https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneEditorConstructionOptions.html for more details.\n   *\n   * @memberof CodeEditorComponent\n   */\n  @Input()\n  options: editor.IStandaloneEditorConstructionOptions = {};\n\n  /**\n   * Toggle readonly state of the editor.\n   *\n   * @memberof CodeEditorComponent\n   */\n  @Input()\n  readOnly = false;\n\n  /**\n   * An event emitted when the text content of the model have changed.\n   */\n  @Output()\n  valueChanged = new EventEmitter<string>();\n\n  /**\n   * An event emitted when the code model value is changed.\n   */\n  @Output()\n  codeModelChanged = new EventEmitter<CodeModelChangedEvent>();\n\n  /**\n   * An event emitted when the contents of the underlying editor model have changed.\n   */\n  @Output()\n  modelContentChanged = new EventEmitter<editor.IModelContentChangedEvent>();\n\n  /**\n   * Raised when editor finished loading all its components.\n   */\n  @Output()\n  loaded = new EventEmitter<CodeEditorComponent>();\n\n  protected editorService = inject(CodeEditorService);\n  protected typescriptDefaults = inject(TypescriptDefaultsService);\n  protected javascriptDefaults = inject(JavascriptDefaultsService);\n  protected jsonDefaults = inject(JsonDefaultsService);\n\n  ngOnDestroy() {\n    if (this.editor) {\n      this.editor.dispose();\n      this.editor = null;\n    }\n\n    if (this._model) {\n      this._model.dispose();\n      this._model = null;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.codeModel && !changes.codeModel.firstChange) {\n      this.updateModel(changes.codeModel.currentValue);\n    }\n\n    if (changes.readOnly && !changes.readOnly.firstChange) {\n      if (this.editor) {\n        this.editor.updateOptions({\n          readOnly: changes.readOnly.currentValue\n        });\n      }\n    }\n\n    if (changes.theme && !changes.theme.firstChange) {\n      this.editorService.setTheme(changes.theme.currentValue);\n    }\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    if (this.editor) {\n      this.editor.layout();\n    }\n  }\n\n  async ngAfterViewInit() {\n    this.setupEditor();\n    this.loaded.emit(this);\n  }\n\n  private setupEditor() {\n    const domElement = this.editorContent.nativeElement;\n    const settings = {\n      value: '',\n      language: 'text',\n      uri: `code-${Date.now()}`,\n      ...this.codeModel\n    };\n\n    this._model = this.editorService.createModel(\n      settings.value,\n      settings.language,\n      settings.uri\n    );\n\n    const options = Object.assign({}, this.defaultOptions, this.options, {\n      readOnly: this.readOnly,\n      theme: this.theme,\n      model: this._model\n    });\n\n    this.editor = this.editorService.createEditor(domElement, options);\n\n    this._model.onDidChangeContent((e: editor.IModelContentChangedEvent) => {\n      this.modelContentChanged.emit(e);\n\n      const newValue = this._model.getValue();\n      if (this.codeModel) {\n        this.codeModel.value = newValue;\n      }\n      this.valueChanged.emit(newValue);\n    });\n\n    this.setupDependencies(this.codeModel);\n    this.codeModelChanged.emit({ sender: this, value: this.codeModel });\n  }\n\n  runEditorAction(id: string, args?: unknown) {\n    this.editor.getAction(id)?.run(args);\n  }\n\n  formatDocument() {\n    this.runEditorAction('editor.action.formatDocument');\n  }\n\n  private setupDependencies(model: CodeModel) {\n    if (!model) {\n      return;\n    }\n\n    const { language } = model;\n\n    if (language) {\n      const lang = language.toLowerCase();\n\n      switch (lang) {\n        case 'typescript':\n          if (model.dependencies) {\n            this.editorService.loadTypings(model.dependencies);\n          }\n          break;\n        case 'javascript':\n          if (model.dependencies) {\n            this.editorService.loadTypings(model.dependencies);\n          }\n          break;\n        case 'json':\n          if (model.schemas) {\n            this.jsonDefaults.addSchemas(model.uri, model.schemas);\n          }\n          break;\n        default:\n          break;\n      }\n    }\n  }\n\n  private setEditorValue(value: any): void {\n    // Fix for value change while dispose in process.\n    setTimeout(() => {\n      if (this._model) {\n        this._model.setValue(value);\n      }\n    });\n  }\n\n  private updateModel(model: CodeModel) {\n    if (model) {\n      this.setEditorValue(model.value);\n      this.editorService.setModelLanguage(this._model, model.language);\n      this.setupDependencies(model);\n      this.codeModelChanged.emit({ sender: this, value: model });\n    }\n  }\n}\n","<div id=\"editor\" #editor class=\"monaco-editor editor\"></div>\n","import { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CodeEditorComponent } from './code-editor/code-editor.component';\nimport {\n  CodeEditorService,\n  EDITOR_SETTINGS,\n} from './services/code-editor.service';\nimport { TypescriptDefaultsService } from './services/typescript-defaults.service';\nimport { JavascriptDefaultsService } from './services/javascript-defaults.service';\nimport { CodeEditorSettings } from './editor-settings';\nimport { JsonDefaultsService } from './services/json-defaults.service';\n\nexport function setupEditorService(service: CodeEditorService) {\n  const result = () => service.loadEditor();\n  return result;\n}\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [CodeEditorComponent],\n  exports: [CodeEditorComponent],\n})\nexport class CodeEditorModule {\n  static forRoot(\n    settings?: CodeEditorSettings\n  ): ModuleWithProviders<CodeEditorModule> {\n    return {\n      ngModule: CodeEditorModule,\n      providers: [\n        { provide: EDITOR_SETTINGS, useValue: settings },\n        CodeEditorService,\n        TypescriptDefaultsService,\n        JavascriptDefaultsService,\n        JsonDefaultsService,\n        {\n          provide: APP_INITIALIZER,\n          useFactory: setupEditorService,\n          deps: [CodeEditorService],\n          multi: true,\n        },\n      ],\n    };\n  }\n\n  static forChild(): ModuleWithProviders<CodeEditorModule> {\n    return {\n      ngModule: CodeEditorModule,\n    };\n  }\n}\n","/*\n * Public API Surface of code-editor\n */\n\nexport * from './lib/services/code-editor.service';\nexport * from './lib/services/typescript-defaults.service';\nexport * from './lib/services/javascript-defaults.service';\n\nexport * from './lib/models/code.model';\n\nexport * from './lib/code-editor/code-editor.component';\n\nexport * from './lib/code-editor.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.CodeEditorService"],"mappings":"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"}