{"version":3,"file":"alauda-code-editor.mjs","sources":["../../../../libs/code-editor/src/ng-monaco-editor/monaco-editor-config.ts","../../../../libs/code-editor/src/ng-monaco-editor/monaco-provider.service.ts","../../../../libs/code-editor/src/ng-monaco-editor/code-colorize.directive.ts","../../../../libs/code-editor/src/ng-monaco-editor/helpers.ts","../../../../libs/code-editor/src/ng-monaco-editor/monaco-common-editor.component.ts","../../../../libs/code-editor/src/ng-monaco-editor/monaco-diff-editor.component.ts","../../../../libs/code-editor/src/ng-monaco-editor/monaco-editor.component.html","../../../../libs/code-editor/src/ng-monaco-editor/monaco-editor.component.ts","../../../../libs/code-editor/src/ng-monaco-editor/monaco-editor.module.ts","../../../../libs/code-editor/src/ng-monaco-editor/typings.ts","../../../../libs/code-editor/src/alauda-code-editor/code-editor-intl.service.ts","../../../../libs/code-editor/src/alauda-code-editor/monaco-provider.service.ts","../../../../libs/code-editor/src/alauda-code-editor/theme-label/component.ts","../../../../libs/code-editor/src/alauda-code-editor/theme-label/component.html","../../../../libs/code-editor/src/alauda-code-editor/utils.ts","../../../../libs/code-editor/src/alauda-code-editor/code-editor.component.ts","../../../../libs/code-editor/src/alauda-code-editor/code-editor.component.html","../../../../libs/code-editor/src/alauda-code-editor/code-editor.module.ts","../../../../libs/code-editor/src/alauda-code-editor/monaco-language.service.ts","../../../../libs/code-editor/src/code-editor-configs.ts","../../../../libs/code-editor/src/alauda-code-editor.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { editor } from 'monaco-editor';\n\nimport type { Monaco } from './typings';\n\n/**\n * All common option fields for monaco are merged together for ease of config.\n */\nexport type MonacoEditorOptions = editor.IStandaloneEditorConstructionOptions;\n\nexport type MonacoEditor = editor.IStandaloneCodeEditor;\n\n/**\n * Configuration over monaco editor.\n */\n@Injectable({ providedIn: 'root' })\nexport class MonacoEditorConfig {\n  /**\n   * The base URL to monaco editor library assets via AMD (RequireJS).\n   *\n   * e.g., assets/monaco-editor/min\n   */\n  baseUrl?: string;\n\n  /**\n   * Use webpack dynamic import function to load monaco assets.\n   *\n   * e.g., () => import('monaco-editor')\n   */\n  dynamicImport?: () => Promise<Monaco>;\n\n  /**\n   * Default options when creating editors\n   */\n  defaultOptions?: MonacoEditorOptions;\n\n  /**\n   * The interval for re-layout the editors. Default is 100 (ms).\n   * If set to 0, then the editor will never do auto-relayout.\n   */\n  autoLayoutInterval?: number;\n}\n","import { Injectable, inject } from '@angular/core';\nimport type { editor } from 'monaco-editor';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MonacoEditorConfig } from './monaco-editor-config';\nimport type { MonacoEditorOptions } from './monaco-editor-config';\nimport type { Monaco } from './typings';\n\nexport interface Require {\n  <T>(deps: string[], callback: (result: T) => void): void;\n  config(options: {\n    baseUrl: string;\n    paths: {\n      [key: string]: string;\n    };\n  }): void;\n}\n\n/**\n * Provider for monaco editor.\n */\n@Injectable({ providedIn: 'root' })\nexport class MonacoProviderService {\n  private _theme = 'vs';\n\n  private _monaco?: Monaco;\n  private _loadingPromise?: Promise<Monaco>;\n\n  private readonly theme$$ = new BehaviorSubject<string>(this._theme);\n\n  theme$ = this.theme$$.asObservable();\n\n  /**\n   * Returns all available themes\n   */\n  get themes() {\n    return ['vs', 'vs-dark'];\n  }\n\n  /**\n   * Return the current theme\n   */\n  get theme() {\n    return this._theme;\n  }\n\n  /**\n   * Expose global monaco object\n   */\n  get monaco() {\n    return (this._monaco || window.monaco)!;\n  }\n\n  /**\n   * Expose global amd require function/object\n   */\n  get require(): Require | undefined {\n    return window.require as unknown as Require;\n  }\n\n  private readonly monacoEditorConfig = inject(MonacoEditorConfig);\n\n  async initMonaco() {\n    return this._loadingPromise || (this._loadingPromise = this.loadMonaco());\n  }\n\n  /**\n   * Load additional monaco-editor modules.\n   */\n  loadModule<T>(deps: string[]) {\n    return new Promise<T>(resolve => this.require!(deps, resolve));\n  }\n\n  toggleTheme() {\n    this.changeTheme(this.themes.find(theme => theme !== this.theme)!);\n  }\n\n  changeTheme(theme: string) {\n    this.assertMonaco();\n\n    this._theme = theme;\n    this.monaco.editor.setTheme(theme);\n    this.theme$$.next(this.theme);\n  }\n\n  getEditorOptions(options?: MonacoEditorOptions): MonacoEditorOptions {\n    return {\n      ...this.monacoEditorConfig.defaultOptions,\n      theme: this.theme,\n      ...options,\n    };\n  }\n\n  /**\n   * Create a code-editor at the given dom element.\n   */\n  create(domElement: HTMLElement, options?: MonacoEditorOptions) {\n    this.assertMonaco();\n\n    return this.monaco.editor.create(\n      domElement,\n      this.getEditorOptions(options),\n    );\n  }\n\n  createDiffEditor(\n    domElement: HTMLElement,\n    options?: editor.IDiffEditorConstructionOptions,\n  ) {\n    this.assertMonaco();\n\n    return this.monaco.editor.createDiffEditor(domElement, {\n      renderSideBySide: false,\n      // You can optionally disable resizing by passing in the option.\n      enableSplitViewResizing: false,\n      ...this.getEditorOptions(options),\n    });\n  }\n\n  /**\n   * Colorize an arbitrary element:\n   */\n  colorizeElement(\n    domElement: HTMLElement,\n    options?: editor.IColorizerElementOptions,\n  ) {\n    this.assertMonaco();\n\n    return this.monaco.editor.colorizeElement(domElement, {\n      theme: this.theme,\n      ...options,\n    });\n  }\n\n  /**\n   * Let the monaco-editor returns language information for the given alias.\n   */\n  getLanguageExtensionPoint(alias: string) {\n    this.assertMonaco();\n\n    return this.monaco.languages\n      .getLanguages()\n      .find(({ aliases, id }) => aliases?.includes(alias) || id === alias);\n  }\n\n  /**\n   * Currently monaco-editor is loaded via its own loader and it is RequireJs (amd) spec:\n   */\n  protected configAmdLoader(baseUrl: string) {\n    return new Promise<void>((resolve, reject) => {\n      if (this.monaco && this.require) {\n        return resolve();\n      }\n\n      const loaderScript = document.createElement('script');\n      loaderScript.type = 'text/javascript';\n      loaderScript.src = [this.monacoEditorConfig.baseUrl, 'vs/loader.js']\n        .filter(_ => !!_)\n        .join('/');\n      loaderScript.addEventListener('load', () => {\n        this.require!.config({\n          baseUrl,\n          paths: { vs: 'vs' },\n        });\n        resolve();\n      });\n      loaderScript.addEventListener('error', reject);\n      document.body.append(loaderScript);\n    });\n  }\n\n  private assertMonaco() {\n    if (!this.monaco) {\n      throw new Error(\n        '`monaco` has not been initialized, please call `initMonaco()` first',\n      );\n    }\n  }\n\n  private async loadMonaco() {\n    if (this.monacoEditorConfig.dynamicImport) {\n      return this.monacoEditorConfig\n        .dynamicImport()\n        .then(monaco => (this._monaco = monaco));\n    }\n\n    if (this.monacoEditorConfig.baseUrl != null) {\n      await this.configAmdLoader(this.monacoEditorConfig.baseUrl);\n      return this.loadModule<Monaco>(['vs/editor/editor.main']).then(\n        monaco => (this._monaco = monaco),\n      );\n    }\n\n    if (window.monaco) {\n      return window.monaco;\n    }\n\n    // Fallback for apps that did not wire MonacoEditorConfig.dynamicImport.\n    // This keeps runtime working even when only the package is installed.\n    const monaco = await import('monaco-editor');\n    this._monaco = monaco;\n    window.monaco = monaco;\n    return monaco;\n  }\n}\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport type { AfterContentChecked, OnDestroy, OnInit } from '@angular/core';\n\nimport { MonacoProviderService } from './monaco-provider.service';\n\n/**\n * Colorize a section of code with Monaco Editor.\n */\n@Directive({\n  selector: '[ngCodeColorize]',\n  standalone: true,\n})\nexport class CodeColorizeDirective\n  implements OnInit, AfterContentChecked, OnDestroy\n{\n  @Input()\n  ngCodeColorize!: string;\n\n  @Input()\n  ngCodeColorizeOptions?: { theme: string };\n\n  private originalDisplay!: string;\n  private lastContent!: string;\n\n  private destroyed = false;\n\n  private readonly element = inject(ElementRef<HTMLElement>);\n  private readonly monacoProvider = inject(MonacoProviderService);\n\n  ngOnInit() {\n    const el = this.element.nativeElement;\n    this.originalDisplay = el.style.display;\n    el.style.display = 'none';\n  }\n\n  ngAfterContentChecked() {\n    const el = this.element.nativeElement;\n    if (this.lastContent === el.innerHTML) {\n      return;\n    }\n    this.lastContent = el.innerHTML;\n    this.doColorize();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed = true;\n  }\n\n  private async doColorize() {\n    if (this.destroyed) {\n      return;\n    }\n    const el = this.element.nativeElement;\n    const siblingEl = el.nextElementSibling as HTMLElement;\n    const useSiblingEl = siblingEl?.dataset['ngCodeColorizeCloned'];\n    const nextEl = useSiblingEl\n      ? siblingEl\n      : (el.cloneNode(true) as HTMLElement);\n    if (useSiblingEl) {\n      nextEl.innerHTML = el.innerHTML;\n      nextEl.className = nextEl.className\n        .split(' ')\n        .filter(_ => _ !== 'vs')\n        .join('')\n        .trim();\n    } else {\n      nextEl.style.display = this.originalDisplay;\n      nextEl.dataset['ngCodeColorizeCloned'] = 'true';\n      el.parentNode!.insertBefore(nextEl, el.nextSibling);\n    }\n    // Monaco editor use data-lang to identify the language.\n    // Monaco editor use data-lang to identify the language.\n    nextEl.dataset['lang'] = this.ngCodeColorize;\n    await this.monacoProvider.initMonaco();\n    await this.monacoProvider.colorizeElement(\n      nextEl,\n      this.ngCodeColorizeOptions,\n    );\n  }\n}\n","import { Observable } from 'rxjs';\n\nexport const observeResizeOn = <T extends Element>(\n  target: T,\n  options?: ResizeObserverOptions,\n) =>\n  new Observable<T>(observer => {\n    const resizeObserver = new ResizeObserver(entries => {\n      for (const entry of entries) {\n        observer.next(entry.target as T);\n      }\n    });\n    resizeObserver.observe(target, options);\n    return () => {\n      resizeObserver.unobserve(target);\n      resizeObserver.disconnect();\n    };\n  });\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport type {\n  AfterViewInit,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { debounce, isEqual } from 'lodash-es';\nimport type { IDisposable, editor } from 'monaco-editor';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { observeResizeOn } from './helpers';\nimport type { MonacoEditor, MonacoEditorOptions } from './monaco-editor-config';\nimport { MonacoEditorConfig } from './monaco-editor-config';\nimport { MonacoProviderService } from './monaco-provider.service';\n\nconst DEFAULT_RELAYOUT_INTERVAL = 100;\n\n/**\n * Wraps powerful Monaco Editor for simplicity use in Angular.\n */\n@Directive()\nexport abstract class MonacoCommonEditorComponent\n  implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n  /**\n   * Raw Monaco editor options\n   */\n  @Input()\n  options!: MonacoEditorOptions;\n\n  /**\n   * The URI which will be assigned to monaco-editor's model.\n   * See monaco.Uri\n   */\n  @Input()\n  modelUri?: string;\n\n  /**\n   * Events emitted when monaco editor changed.\n   */\n  @Output()\n  editorChange = new EventEmitter<MonacoEditor>();\n\n  /**\n   * Events emitted when monaco editor blurs.\n   */\n  @Output()\n  editorBlur = new EventEmitter<void>();\n\n  /**\n   * A helper ID to let the user to see the embedded monaco editor ID.\n   *\n   * E.g., you could use the following to get the embedded value of the editor.\n   *     monaco.editor\n   *      .getModels()\n   *      .find(\n   *        model =>\n   *          model.id ===\n   *          document.querySelector('[model-id]').attributes[\n   *            'model-id'\n   *          ].value,\n   *      )\n   *      .getValue();\n   */\n  @HostBinding('attr.model-id')\n  modelId!: string;\n\n  @ViewChild('monacoContainer', { static: true })\n  protected monacoContainer!: ElementRef;\n\n  @ViewChild('monacoAnchor', { static: true })\n  protected monacoAnchor!: ElementRef<HTMLElement>;\n\n  private _rootEditor?:\n    | editor.IStandaloneCodeEditor\n    | editor.IStandaloneDiffEditor\n    | null;\n\n  // for MonacoDiffEditorComponent usage\n  protected get rootEditor() {\n    return this._rootEditor ?? this.editor;\n  }\n\n  protected set rootEditor(editor) {\n    this._rootEditor = editor;\n  }\n\n  protected editor?: MonacoEditor | null;\n  protected model?: editor.ITextModel | null;\n\n  private _monacoLoaded = false;\n\n  // used in html\n  get monacoLoaded() {\n    return this._monacoLoaded;\n  }\n\n  private _destroyed = false;\n\n  get destroyed() {\n    return this._destroyed;\n  }\n\n  protected destroy$$ = new Subject<void>();\n\n  protected get value() {\n    return this._value;\n  }\n\n  private _value = '';\n  private _prevOptions?: MonacoEditorOptions;\n  private _disposables: IDisposable[] = [];\n\n  abstract createEditor(): MonacoEditor;\n\n  protected monacoEditorConfig = inject(MonacoEditorConfig);\n  protected monacoProvider = inject(MonacoProviderService);\n  protected cdr = inject(ChangeDetectorRef);\n\n  ngOnInit() {\n    this.resetEditor();\n  }\n\n  ngAfterViewInit(): void {\n    const layoutInterval =\n      this.monacoEditorConfig.autoLayoutInterval ?? DEFAULT_RELAYOUT_INTERVAL;\n\n    if (layoutInterval) {\n      observeResizeOn(this.monacoContainer.nativeElement)\n        .pipe(takeUntil(this.destroy$$))\n        .subscribe(\n          debounce(() => {\n            if (this.editor) {\n              this.editor.layout();\n            }\n          }, layoutInterval),\n        );\n    }\n  }\n\n  ngOnChanges({ modelUri, options }: SimpleChanges): void {\n    if (modelUri && !modelUri.isFirstChange()) {\n      // If modelUri is changed, we need to recreate the editor to reflect the change.\n      this.resetEditor();\n    }\n\n    if (options) {\n      const currOptions = options.currentValue as editor.IEditorOptions;\n      // We should reset the editor when options change.\n      if (this._prevOptions && !isEqual(this._prevOptions, currOptions)) {\n        this.rootEditor!.updateOptions(currOptions);\n      }\n      this._prevOptions = currOptions;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.dispose();\n\n    this._destroyed = true;\n  }\n\n  dispose() {\n    this.rootEditor?.dispose();\n    if (this.model && !this.model.isDisposed()) {\n      this.model.dispose();\n    }\n    this._disposables.forEach(disposable => disposable.dispose());\n    this.rootEditor = this.editor = null;\n    this.model = null;\n    this._disposables = [];\n  }\n\n  // Following are APIs required by ControlValueAccessor\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange = (_: string) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched = () => {};\n\n  writeValue(value: string): void {\n    this._value = value || '';\n    // Fix for value change while dispose in process.\n    if (this.editor) {\n      this.model!.setValue(this._value);\n    }\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  createModel(value: string, uri?: string): editor.ITextModel {\n    const { monaco } = this.monacoProvider;\n    const modelUri = uri ? monaco.Uri.parse(uri) : undefined;\n    const model = modelUri && monaco.editor.getModel(modelUri);\n    model?.dispose();\n    return monaco.editor.createModel(value, this.options.language, modelUri);\n  }\n\n  private async resetEditor() {\n    if (this.monacoLoaded) {\n      this.dispose();\n    } else {\n      await this.monacoProvider.initMonaco();\n      this._monacoLoaded = true;\n    }\n\n    if (!this.destroyed) {\n      this.editor = this.createEditor();\n      this.listenModelChanges();\n      this.editorChange.emit(this.editor);\n      this.modelId = this.model!.id;\n      this.cdr.markForCheck();\n    }\n  }\n\n  private listenModelChanges(): void {\n    const editor = this.editor!;\n    const model = this.model!;\n    this._disposables = [\n      model.onDidChangeContent(() => {\n        const value = model.getValue();\n        if (this._value === value) {\n          return;\n        }\n        this.onChange(value);\n        this._value = value;\n        this.cdr.markForCheck();\n      }),\n      editor.onDidChangeModel(() => {\n        this.cdr.markForCheck();\n      }),\n      editor.onDidBlurEditorWidget(() => {\n        this.onTouched();\n        this.editorBlur.emit();\n      }),\n    ];\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport type { OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { editor } from 'monaco-editor';\n\nimport { MonacoCommonEditorComponent } from './monaco-common-editor.component';\nimport type { MonacoEditor } from './monaco-editor-config';\n\n/**\n * Wraps powerful Monaco Editor for simplicity usage in Angular.\n */\n@Component({\n  selector: 'ng-monaco-diff-editor',\n  templateUrl: './monaco-editor.component.html',\n  styleUrls: ['./monaco-editor.component.scss'],\n  standalone: true,\n  imports: [CommonModule],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MonacoDiffEditorComponent),\n      multi: true,\n    },\n  ],\n})\nexport class MonacoDiffEditorComponent\n  extends MonacoCommonEditorComponent\n  implements OnChanges, OnDestroy\n{\n  @Input()\n  originalValue!: string;\n\n  protected originalModel!: editor.ITextModel;\n\n  createEditor(): MonacoEditor {\n    this.originalModel = this.createModel(this.originalValue);\n    this.model = this.createModel(this.value, this.modelUri);\n\n    const editor = this.monacoProvider.createDiffEditor(\n      this.monacoAnchor.nativeElement,\n      this.options,\n    );\n\n    this.rootEditor = editor;\n\n    editor.setModel({\n      original: this.originalModel,\n      modified: this.model,\n    });\n\n    return editor.getModifiedEditor();\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    super.ngOnChanges(changes);\n    if (changes['originalValue']) {\n      this.originalModel?.setValue(\n        changes['originalValue'].currentValue as string,\n      );\n    }\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this.originalModel?.dispose();\n  }\n}\n","<div\n  class=\"ng-monaco-editor-container\"\n  #monacoContainer\n>\n  <!-- Show a spinner if monaco-editor library is not yet ready -->\n\n  @if (!monacoLoaded) {\n    <div class=\"ng-monaco-editor-spinner\">\n      <div class=\"ng-monaco-editor-spinner__double-bounce1\"></div>\n      <div class=\"ng-monaco-editor-spinner__double-bounce2\"></div>\n    </div>\n  }\n\n  <div\n    class=\"ng-monaco-editor-container__monaco-anchor\"\n    #monacoAnchor\n  ></div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { MonacoCommonEditorComponent } from './monaco-common-editor.component';\nimport type { MonacoEditor } from './monaco-editor-config';\n\n/**\n * Wraps Monaco Editor for simplicity use in Angular.\n */\n@Component({\n  selector: 'ng-monaco-editor',\n  templateUrl: './monaco-editor.component.html',\n  styleUrls: ['./monaco-editor.component.scss'],\n  standalone: true,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MonacoEditorComponent),\n      multi: true,\n    },\n  ],\n})\nexport class MonacoEditorComponent extends MonacoCommonEditorComponent {\n  createEditor(): MonacoEditor {\n    this.model = this.createModel(this.value, this.modelUri);\n    return this.monacoProvider.create(this.monacoAnchor.nativeElement, {\n      ...this.options,\n      model: this.model,\n    });\n  }\n}\n","import {\n  EnvironmentProviders,\n  Optional,\n  SkipSelf,\n  makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { MonacoEditorConfig } from './monaco-editor-config';\nimport { MonacoProviderService } from './monaco-provider.service';\n\nexport function MonacoProviderFactory(parent: MonacoProviderService) {\n  return parent || new MonacoProviderService();\n}\n\nexport const MONACO_PROVIDER = {\n  // If there is already an MonacoProviderService available, use that. Otherwise, provide a new one.\n  provide: MonacoProviderService,\n  deps: [\n    [new Optional(), new SkipSelf(), MonacoProviderService],\n    MonacoEditorConfig,\n  ],\n  useFactory: MonacoProviderFactory,\n};\n\nexport function provideMonacoEditor(\n  config: MonacoEditorConfig = {},\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    MONACO_PROVIDER,\n    {\n      provide: MonacoEditorConfig,\n      useValue: config,\n    },\n  ]);\n}\n","/// <reference path=\"../global.d.ts\" />\n\nexport type Monaco = typeof import('monaco-editor');\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { of } from 'rxjs';\n\nexport const CODE_EDITOR_DEFAULT_LABELS = {\n  copyLabel: '复制',\n\n  copiedLabel: '已复制',\n\n  readonlyLabel: '只读',\n\n  readwriteLabel: '读写',\n\n  clearLabel: '清空',\n\n  recoverLabel: '恢复',\n\n  findLabel: '查找',\n\n  formatLabel: '格式化',\n\n  foldLabel: '折叠',\n\n  exportLabel: '导出',\n\n  importLabel: '导入',\n\n  lightThemeLabel: '日间',\n\n  darkThemeLabel: '夜间',\n\n  autoThemeLabel: '自动',\n\n  showDiffLabel: '显示更新',\n\n  previewLabel: '预览',\n\n  fullscreenLabel: '全屏',\n\n  exitFullscreenLabel: '退出全屏',\n};\n\n/**\n * Texts to render on the code editor.\n */\n@Injectable()\nexport class CodeEditorIntl {\n  labels$ = of(CODE_EDITOR_DEFAULT_LABELS);\n\n  // 针对某个语言翻译成面向用户的标签.\n  // 比如: yaml -> YAML, jenkinsfile -> Jenkinsfile.\n  getLanguageLabel(lang: string) {\n    return ('' + lang).toUpperCase();\n  }\n}\n\nexport function codeEditorIntlProviderFactory(parentIntl: CodeEditorIntl) {\n  return parentIntl || new CodeEditorIntl();\n}\n\n/** @docs-private */\nexport const CODE_EDITOR_INTL_INTL_PROVIDER = {\n  // If there is already an CodeEditorIntl available, use that. Otherwise, provide a new one.\n  provide: CodeEditorIntl,\n  deps: [[new Optional(), new SkipSelf(), CodeEditorIntl]],\n  useFactory: codeEditorIntlProviderFactory,\n};\n","import { ThemeMode } from '@alauda/ui';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged } from 'rxjs';\n\nimport { MonacoProviderService } from '../ng-monaco-editor/public-api';\n\nexport const CODE_EDITOR_THEME_KEY = 'code-editor-theme';\nexport const CODE_EDITOR_THEME_MODE_KEY = 'code-editor-theme-mode';\n\n/**\n * Provider for monaco editor.\n * Do not use `providedIn: 'root'` to avoid forcing the loading of Monaco in projects where the editor is not needed.\n */\n@Injectable()\nexport class AlaudaMonacoProviderService extends MonacoProviderService {\n  private _inited?: boolean;\n\n  readonly themeMode$$ = new BehaviorSubject<ThemeMode>(\n    this.getCacheThemeMode(),\n  );\n\n  themeMode$ = this.themeMode$$.asObservable().pipe(distinctUntilChanged());\n\n  get themeMode() {\n    return this.themeMode$$.value;\n  }\n\n  /**\n   * Returns all available themes\n   */\n  override get themes(): string[] {\n    return ['light', 'dark'];\n  }\n\n  get themeModes(): ThemeMode[] {\n    return ['system', 'light', 'dark'];\n  }\n\n  override changeTheme(theme: string) {\n    super.changeTheme(theme);\n    localStorage.setItem(CODE_EDITOR_THEME_KEY, theme);\n  }\n\n  override async initMonaco() {\n    const monaco = await super.initMonaco();\n    this.initTheme();\n    return monaco;\n  }\n\n  private initTheme() {\n    if (this._inited) {\n      return;\n    }\n    this._inited = true;\n    this.defineThemes();\n    const originalTheme = this.getCacheTheme();\n    const originalThemeMode = this.getCacheThemeMode();\n    if (originalThemeMode) {\n      this.changeThemeMode(originalThemeMode);\n      if (originalThemeMode === 'system' && originalTheme) {\n        this.changeTheme(originalTheme);\n      }\n    }\n  }\n\n  private defineThemes() {\n    this.monaco.editor.defineTheme('light', {\n      base: 'vs',\n      inherit: true,\n      rules: [],\n      colors: {\n        'editor.background': '#ffffff',\n        'editorCursor.foreground': '#526FFF',\n      },\n    });\n\n    this.monaco.editor.defineTheme('dark', {\n      base: 'vs-dark',\n      inherit: true,\n      rules: [\n        {\n          token: 'comment',\n          foreground: '5c636f',\n          fontStyle: 'italic',\n        },\n        {\n          token: 'type',\n          foreground: 'DE6D77',\n        },\n        {\n          token: 'string',\n          foreground: '99C27C',\n        },\n      ],\n      colors: {\n        'editor.foreground': '#ffffff',\n        'editor.background': '#242733',\n      },\n    });\n  }\n\n  changeThemeMode(mode: ThemeMode = 'system', theme?: string) {\n    const targetMode = this.themeModes.includes(mode)\n      ? mode\n      : this.themeModes[0];\n    this.themeMode$$.next(targetMode);\n\n    this.setCacheThemeMode(targetMode);\n    if (targetMode !== 'system') {\n      this.changeTheme(targetMode);\n    } else if (theme) {\n      this.changeTheme(theme);\n    }\n  }\n\n  getCacheThemeMode() {\n    return localStorage.getItem(CODE_EDITOR_THEME_MODE_KEY) as ThemeMode;\n  }\n\n  setCacheThemeMode(mode: ThemeMode) {\n    return localStorage.setItem(CODE_EDITOR_THEME_MODE_KEY, mode);\n  }\n\n  getCacheTheme() {\n    return localStorage.getItem(CODE_EDITOR_THEME_KEY);\n  }\n\n  setCacheTheme(theme: string) {\n    return localStorage.setItem(CODE_EDITOR_THEME_KEY, theme);\n  }\n}\n","import {\n  DROPDOWN_MODULE,\n  IconComponent,\n  TOOLTIP_MODULE,\n  ThemeMode,\n} from '@alauda/ui';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport { CodeEditorIntl } from '../code-editor-intl.service';\nimport { AlaudaMonacoProviderService } from '../monaco-provider.service';\n\nexport interface ThemeConfig {\n  icon: string;\n  themeMode: ThemeMode;\n  label: Observable<string>;\n}\n\n@Component({\n  selector: 'aui-code-editor-theme-label',\n  templateUrl: 'component.html',\n  styleUrls: ['component.scss'],\n  standalone: true,\n  imports: [DROPDOWN_MODULE, IconComponent, TOOLTIP_MODULE, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeEditorThemeLabelComponent {\n  [x: string]: any;\n\n  monacoProvider = inject(AlaudaMonacoProviderService);\n  codeEditorIntl = inject(CodeEditorIntl);\n\n  themes: ThemeConfig[] = [\n    {\n      icon: 'computer',\n      themeMode: 'system',\n      label: this.codeEditorIntl.labels$.pipe(\n        map(labels => labels.autoThemeLabel),\n      ),\n    },\n    {\n      icon: 'sun',\n      themeMode: 'light',\n      label: this.codeEditorIntl.labels$.pipe(\n        map(labels => labels.lightThemeLabel),\n      ),\n    },\n    {\n      icon: 'moon',\n      themeMode: 'dark',\n      label: this.codeEditorIntl.labels$.pipe(\n        map(labels => labels.darkThemeLabel),\n      ),\n    },\n  ];\n\n  get themeConfig() {\n    return (\n      this.themes.find(t => t.themeMode === this.monacoProvider.themeMode) ||\n      this.themes[0]\n    );\n  }\n}\n","<div\n  [auiDropdown]=\"menu\"\n  auiDropdownTrigger=\"click\"\n  [auiDropdownClass]=\"'aui-code-editor--' + themeConfig.themeMode\"\n>\n  <div class=\"aui-code-editor-toolbar__control-button\">\n    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n      <aui-icon\n        [icon]=\"themeConfig.icon\"\n        [auiTooltip]=\"themeConfig.label | async\"\n      ></aui-icon>\n    </div>\n  </div>\n\n  <ng-template #menu>\n    <aui-menu>\n      @for (theme of themes; track $index) {\n        <aui-menu-item\n          class=\"code-editor-theme-dropdown-menu\"\n          [class.active]=\"themeConfig.themeMode === theme.themeMode\"\n          (click)=\"monacoProvider.changeThemeMode(theme.themeMode)\"\n        >\n          <div class=\"aui-code-editor-toolbar__control-button\">\n            <div class=\"aui-code-editor-toolbar__control-button-icon\">\n              <aui-icon [icon]=\"theme.icon\"></aui-icon>\n            </div>\n            {{ theme.label | async }}\n          </div>\n        </aui-menu-item>\n      }\n    </aui-menu>\n  </ng-template>\n</div>\n","export const saveAs = (data: Blob | File | string, filename: string) => {\n  const anchor = document.createElement('a');\n  anchor.href = typeof data === 'string' ? data : URL.createObjectURL(data);\n  anchor.download = filename;\n  anchor.rel = 'noopener';\n  anchor.click();\n  anchor.remove();\n};\n","import {\n  CHECKBOX_MODULE,\n  DIALOG_MODULE,\n  DialogRef,\n  DialogService,\n  DialogSize,\n  IconComponent,\n  TOOLTIP_MODULE,\n} from '@alauda/ui';\nimport { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  forwardRef,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormsModule,\n  ReactiveFormsModule,\n  UntypedFormControl,\n  NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { marked } from 'marked';\nimport type { editor } from 'monaco-editor';\nimport { Subscription } from 'rxjs';\n\nimport {\n  MonacoDiffEditorComponent,\n  MonacoEditor,\n  MonacoEditorComponent,\n} from '../ng-monaco-editor/public-api';\n\nimport { CodeEditorIntl } from './code-editor-intl.service';\nimport { AlaudaMonacoProviderService } from './monaco-provider.service';\nimport { CodeEditorThemeLabelComponent } from './theme-label/component';\nimport { saveAs } from './utils';\n\nexport interface CodeEditorActionsConfig {\n  diffMode?: boolean;\n  recover?: boolean;\n  clear?: boolean;\n  find?: boolean;\n  copy?: boolean;\n  theme?: boolean;\n  fullscreen?: boolean;\n  export?: boolean;\n  import?: boolean;\n}\n\nconst DEFAULT_ACTIONS_CONFIG: CodeEditorActionsConfig = {\n  diffMode: true,\n  recover: true,\n  clear: true,\n  find: true,\n  copy: true,\n  theme: true,\n  fullscreen: true,\n  export: true,\n  import: true,\n};\n\n/**\n * Code editor.\n */\n@Component({\n  selector: 'aui-code-editor',\n  templateUrl: './code-editor.component.html',\n  styleUrls: ['./code-editor.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MonacoEditorComponent,\n    MonacoDiffEditorComponent,\n    CodeEditorThemeLabelComponent,\n    CHECKBOX_MODULE,\n    IconComponent,\n    TOOLTIP_MODULE,\n    DIALOG_MODULE,\n  ],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CodeEditorComponent),\n      multi: true,\n    },\n  ],\n})\nexport class CodeEditorComponent implements ControlValueAccessor, OnDestroy {\n  monacoProvider = inject(AlaudaMonacoProviderService);\n  cdr = inject(ChangeDetectorRef);\n  codeEditorIntl = inject(CodeEditorIntl);\n  dialog = inject(DialogService);\n\n  private editor?: MonacoEditor;\n  protected _options = {};\n  protected _actionsConfig: CodeEditorActionsConfig = DEFAULT_ACTIONS_CONFIG;\n  protected _originalValue = '';\n  protected _diffMode = false;\n  protected _previewMode = false;\n  protected _modelUri?: string;\n  protected _editorChange = new EventEmitter<MonacoEditor>();\n\n  protected _controlSubscription = Subscription.EMPTY;\n\n  // FormControl to be bound to the template.\n  // The source and fullscreen editor shares the same formControl.\n  protected _valueControl = new UntypedFormControl('');\n\n  /**\n   * Raw Monaco editor options\n   */\n  @Input()\n  get options(): editor.IStandaloneEditorConstructionOptions {\n    return this._options;\n  }\n\n  set options(options: editor.IStandaloneEditorConstructionOptions) {\n    this._options = options;\n  }\n\n  @Input() plain = false;\n  @Input() showLanguageLabel = true;\n\n  /**\n   * Value input. Optionally, you could access the model via ControlValueAccessor\n   * like ngModel.\n   */\n  @Input()\n  set value(value: string) {\n    this.writeValue(value);\n  }\n\n  get value() {\n    return this.valueControl.value;\n  }\n\n  /**\n   * The original value to recover\n   */\n  @Input()\n  get originalValue() {\n    return this._originalValue;\n  }\n\n  set originalValue(originalValue: string) {\n    this._originalValue = originalValue;\n  }\n\n  /**\n   * Configure action buttons display. All actions are enabled by default.\n   */\n  @Input()\n  get actionsConfig() {\n    return this._actionsConfig;\n  }\n\n  set actionsConfig(actionsConfig: CodeEditorActionsConfig) {\n    this._actionsConfig = { ...DEFAULT_ACTIONS_CONFIG, ...actionsConfig };\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * Should show as diff mode or not\n   */\n  @Input()\n  get previewMode(): boolean {\n    return this._previewMode;\n  }\n\n  set previewMode(previewMode: boolean) {\n    this._previewMode = previewMode;\n  }\n\n  get showPreview() {\n    return this.options.language === 'markdown';\n  }\n\n  /**\n   * Should show as diff mode or not\n   */\n  @Input()\n  get diffMode(): boolean {\n    return this._diffMode;\n  }\n\n  set diffMode(diffMode: boolean) {\n    this._diffMode = diffMode;\n  }\n\n  /**\n   * The URI which will be assigned to monaco-editor's model.\n   */\n  @Input()\n  get modelUri(): string {\n    return this._modelUri!;\n  }\n\n  set modelUri(modelUri: string) {\n    this._modelUri = modelUri;\n  }\n\n  /**\n   * The FormControl object is shared between this form and its source.\n   */\n  get valueControl(): UntypedFormControl {\n    return this._valueControl;\n  }\n\n  /**\n   * Events emitted when monaco editor changed.\n   * User may want to use this to have advanced tunings on the editor.\n   */\n  @Output()\n  get editorChange(): EventEmitter<MonacoEditor> {\n    return this._editorChange;\n  }\n\n  @Output()\n  editorBlur = new EventEmitter<void>();\n\n  /**\n   * The fullscreen dialog.\n   */\n  fullscreenDialog?: DialogRef<CodeEditorComponent>;\n\n  @ViewChild('fileUploadInput', { static: false })\n  fileUploadInputElementRef!: ElementRef<HTMLInputElement>;\n\n  @ViewChild('viewTemplate', { static: true })\n  viewTemplateRef!: TemplateRef<any>;\n\n  get langId() {\n    const model = this.editor?.getModel();\n    return (\n      model?.getLanguageId?.() ??\n      // @ts-expect-error -- compatibility with older monaco-editor\n\n      (model?.getModeId?.() as string)\n    );\n  }\n\n  get markdownDisplay() {\n    if (this.valueControl.value) {\n      return marked.parse(this.valueControl.value as string);\n    }\n    return this.valueControl.value;\n  }\n\n  constructor() {\n    // Handle input changes by user\n    this._controlSubscription = this.valueControl.valueChanges.subscribe(\n      value => this.onValueChange(value as string),\n    );\n  }\n\n  onMonacoEditorChanged(editor: MonacoEditor) {\n    this.editor = editor;\n    this.editorChange.emit(editor);\n  }\n\n  onClearClicked() {\n    this.valueControl.setValue('');\n  }\n\n  onExportClicked() {\n    const lang = this.monacoProvider.getLanguageExtensionPoint(\n      this.options.language!,\n    );\n\n    const fileExtension = lang?.extensions?.[0] ?? '.txt';\n    const mimeType = lang?.mimetypes?.[0] ?? 'text/plain';\n\n    const blob = new Blob([this.value], { type: mimeType + ';charset=utf-8' });\n\n    saveAs(blob, new Date().toISOString() + fileExtension);\n  }\n\n  onImportFileChanged(_event: Event) {\n    const reader = new FileReader();\n    const el = this.fileUploadInputElementRef.nativeElement;\n\n    // TODO: handle possible errors?\n    reader.onloadend = () => {\n      this.valueControl.setValue(reader.result!.toString());\n      el.value = '';\n    };\n\n    reader.readAsText(el.files![0]);\n  }\n\n  onRecoverClicked() {\n    this.valueControl.setValue(this.originalValue);\n  }\n\n  onFindClicked() {\n    return this.checkActionAndRun('actions.find');\n  }\n\n  canFullscreen() {\n    return !!this.dialog && this.actionsConfig.fullscreen;\n  }\n\n  onFoldAllClicked() {\n    return this.checkActionAndRun('editor.foldAll');\n  }\n\n  getLanguageExtensions() {\n    if (this.editor) {\n      const lang = this.monacoProvider.getLanguageExtensionPoint(\n        this.options.language!,\n      );\n      if (lang) {\n        return lang.extensions;\n      }\n    }\n    return null;\n  }\n\n  getInputFileAccepts() {\n    const extensions = this.getLanguageExtensions();\n    return extensions?.join(', ');\n  }\n\n  private checkActionAndRun(actionName: string) {\n    const action = this.getEditorAction(actionName);\n    return action?.run();\n  }\n\n  private getEditorAction(actionName: string) {\n    return this.editor?.getAction(actionName);\n  }\n\n  onCopyClicked() {\n    navigator.clipboard.writeText(this.value);\n  }\n\n  // Following are APIs required by ControlValueAccessor\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onCvaChange = (_: string) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onCvaTouched = () => {};\n\n  onTouched() {\n    this.editorBlur.emit();\n    this.onCvaTouched();\n  }\n\n  writeValue(value: string): void {\n    if (this._valueControl.value === value) {\n      return;\n    }\n    this._valueControl.setValue(value, { emitEvent: false });\n\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(fn: (val: string) => void): void {\n    this.onCvaChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onCvaTouched = fn;\n  }\n\n  toggleFullscreen() {\n    if (this.fullscreenDialog) {\n      this.fullscreenDialog.close();\n      this.fullscreenDialog = undefined;\n      this.cdr.markForCheck();\n    } else {\n      this.fullscreenDialog = this.dialog.open(this.viewTemplateRef, {\n        size: DialogSize.Fullscreen,\n        data: true,\n      });\n      this.fullscreenDialog.afterClosed().subscribe(() => {\n        this.fullscreenDialog = undefined;\n      });\n      this.cdr.markForCheck();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.fullscreenDialog) {\n      this.fullscreenDialog.close();\n    }\n    this._controlSubscription.unsubscribe();\n  }\n\n  /**\n   * Handles user input events:\n   */\n  private onValueChange(value: string) {\n    this.onCvaChange(value);\n\n    this.cdr.markForCheck();\n  }\n}\n","<ng-template\n  #viewTemplate\n  let-inFullscreen\n>\n  @if (inFullscreen ? true : !fullscreenDialog) {\n    <div\n      class=\"aui-code-editor\"\n      [ngClass]=\"'aui-code-editor--' + (monacoProvider.theme$ | async)\"\n    >\n      @if (codeEditorIntl.labels$ | async; as codeEditorIntlLabels) {\n        @if (!plain) {\n          <div class=\"aui-code-editor-toolbar\">\n            @if (showLanguageLabel) {\n              @if (langId) {\n                <div class=\"aui-code-editor-toolbar__language\">\n                  {{ codeEditorIntl.getLanguageLabel(langId) }} ({{\n                    options.readOnly\n                      ? codeEditorIntlLabels.readonlyLabel\n                      : codeEditorIntlLabels.readwriteLabel\n                  }})\n                </div>\n              }\n              @if (previewMode) {\n                <div class=\"aui-code-editor-toolbar__language\">\n                  {{ codeEditorIntl.getLanguageLabel(options.language!) }} ({{\n                    codeEditorIntlLabels.previewLabel\n                  }})\n                </div>\n              }\n            }\n\n            <div class=\"aui-code-editor-toolbar-actions\">\n              <div class=\"aui-code-editor-toolbar-actions__left\">\n                @if (showPreview) {\n                  <aui-checkbox\n                    [disabled]=\"diffMode\"\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    [class.aui-code-editor-toolbar__control-button--active]=\"\n                      previewMode\n                    \"\n                    [(ngModel)]=\"previewMode\"\n                  >\n                    {{ codeEditorIntlLabels.previewLabel }}\n                  </aui-checkbox>\n                }\n\n                @if (actionsConfig.diffMode && !this.previewMode) {\n                  <aui-checkbox\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    [class.aui-code-editor-toolbar__control-button--active]=\"\n                      diffMode\n                    \"\n                    [(ngModel)]=\"diffMode\"\n                  >\n                    {{ codeEditorIntlLabels.showDiffLabel }}\n                  </aui-checkbox>\n                }\n\n                <ng-content select=\"[auiCodeEditorToolbarLeft]\"></ng-content>\n              </div>\n\n              <div class=\"aui-code-editor-toolbar-actions__spacer\"></div>\n\n              <div class=\"aui-code-editor-toolbar-actions__right\">\n                <ng-content select=\"[auiCodeEditorToolbarRight]\"></ng-content>\n\n                @if (\n                  !options.readOnly && !previewMode && actionsConfig.import\n                ) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"fileUploadInput.click()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"file_import\"\n                        [auiTooltip]=\"codeEditorIntlLabels.importLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (actionsConfig.export && value) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"onExportClicked()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"file_export\"\n                        [auiTooltip]=\"codeEditorIntlLabels.exportLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (\n                  !options.readOnly && !previewMode && actionsConfig.recover\n                ) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"onRecoverClicked()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"prod:rollback\"\n                        [auiTooltip]=\"codeEditorIntlLabels.recoverLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (\n                  !options.readOnly &&\n                  !previewMode &&\n                  actionsConfig.clear &&\n                  value\n                ) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"onClearClicked()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"xmark_circle\"\n                        [auiTooltip]=\"codeEditorIntlLabels.clearLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (actionsConfig.find && value && !previewMode) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"onFindClicked()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"magnifier\"\n                        [auiTooltip]=\"codeEditorIntlLabels.findLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (actionsConfig.copy && value) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    [auiTooltip]=\"codeEditorIntlLabels.copiedLabel\"\n                    auiTooltipTrigger=\"click\"\n                    (click)=\"onCopyClicked()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      <aui-icon\n                        icon=\"copy\"\n                        [auiTooltip]=\"codeEditorIntlLabels.copyLabel\"\n                      ></aui-icon>\n                    </div>\n                  </div>\n                }\n\n                @if (actionsConfig.theme) {\n                  <aui-code-editor-theme-label></aui-code-editor-theme-label>\n                }\n\n                @if (canFullscreen()) {\n                  <div\n                    class=\"aui-code-editor-toolbar__control-button\"\n                    (click)=\"toggleFullscreen()\"\n                  >\n                    <div class=\"aui-code-editor-toolbar__control-button-icon\">\n                      @if (!inFullscreen) {\n                        <aui-icon\n                          icon=\"expand\"\n                          [auiTooltip]=\"codeEditorIntlLabels.fullscreenLabel\"\n                        ></aui-icon>\n                      }\n\n                      @if (inFullscreen) {\n                        <aui-icon\n                          icon=\"compress\"\n                          [auiTooltip]=\"\n                            codeEditorIntlLabels.exitFullscreenLabel\n                          \"\n                        ></aui-icon>\n                      }\n                    </div>\n                  </div>\n                }\n\n                <ng-content\n                  select=\"[auiCodeEditorToolbarRightSide]\"\n                ></ng-content>\n              </div>\n            </div>\n          </div>\n        }\n      }\n\n      <!-- If the screen is showing in fullscreen mode, we should hide the parent editor -->\n      <ng-container>\n        @if (diffMode) {\n          <ng-monaco-diff-editor\n            class=\"aui-code-editor-monaco-editor\"\n            (editorChange)=\"onMonacoEditorChanged($event)\"\n            (blur)=\"onTouched()\"\n            [originalValue]=\"originalValue\"\n            [options]=\"options\"\n            [modelUri]=\"modelUri\"\n            [formControl]=\"valueControl\"\n          >\n          </ng-monaco-diff-editor>\n        }\n\n        @if (!diffMode && !previewMode) {\n          <ng-monaco-editor\n            class=\"aui-code-editor-monaco-editor\"\n            (editorChange)=\"onMonacoEditorChanged($event)\"\n            (blur)=\"onTouched()\"\n            [options]=\"options\"\n            [modelUri]=\"modelUri\"\n            [formControl]=\"valueControl\"\n          >\n          </ng-monaco-editor>\n        }\n\n        @if (previewMode) {\n          <div\n            [innerHTML]=\"markdownDisplay\"\n            class=\"aui-code-editor-monaco-editor markdown-body\"\n            [ngClass]=\"'aui-code-editor--' + (monacoProvider.theme$ | async)\"\n          ></div>\n        }\n      </ng-container>\n    </div>\n  }\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"viewTemplate\"></ng-container>\n\n<input\n  #fileUploadInput\n  hidden\n  (change)=\"onImportFileChanged($event)\"\n  [attr.accept]=\"getInputFileAccepts()\"\n  type=\"file\"\n  name=\"files[]\"\n/>\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n  MonacoEditorConfig,\n  MonacoProviderService,\n} from '../ng-monaco-editor/public-api';\n\nimport { CODE_EDITOR_INTL_INTL_PROVIDER } from './code-editor-intl.service';\nimport { AlaudaMonacoProviderService } from './monaco-provider.service';\n\nexport function provideCodeEditor(\n  config: MonacoEditorConfig = {},\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    CODE_EDITOR_INTL_INTL_PROVIDER,\n    AlaudaMonacoProviderService,\n    {\n      provide: MonacoProviderService,\n      useExisting: AlaudaMonacoProviderService,\n    },\n    {\n      provide: MonacoEditorConfig,\n      useValue: config,\n    },\n  ]);\n}\n","import { Injectable, inject } from '@angular/core';\nimport { uniq } from 'lodash-es';\nimport {\n  MonacoYamlOptions,\n  SchemasSettings,\n  configureMonacoYaml,\n} from 'monaco-yaml';\n\nimport { MonacoProviderService } from '../ng-monaco-editor/public-api';\n@Injectable({\n  providedIn: 'root',\n})\nexport class MonacoLanguageService {\n  private yamlSchemaService?: YamlSchemaService;\n  private readonly loader = inject(MonacoProviderService);\n\n  getYamlSchemaService(): YamlSchemaService {\n    if (!this.yamlSchemaService) {\n      this.yamlSchemaService = new YamlSchemaService(this.loader);\n    }\n    return this.yamlSchemaService;\n  }\n}\n\nexport class YamlSchemaService {\n  private loader: MonacoProviderService;\n  private options: MonacoYamlOptions = { schemas: [], isKubernetes: true };\n  private controller?: {\n    dispose: () => void;\n    update: (options: object) => void;\n  };\n\n  constructor(loader: MonacoProviderService) {\n    this.loader = loader;\n  }\n\n  async addSchema(\n    schema: SchemasSettings,\n    strategy: 'merge' | 'replace' = 'merge',\n  ) {\n    const options = this.options || {};\n    let { schemas = [], ...rest } = options;\n\n    const old = schemas.find(item => item.uri === schema.uri);\n\n    if (old) {\n      schema = {\n        ...schema,\n        fileMatch: uniq(\n          strategy === 'replace'\n            ? schema.fileMatch\n            : [...(old.fileMatch ?? []), ...(schema.fileMatch ?? [])],\n        ),\n      };\n\n      schemas = schemas.filter(item => item !== old);\n    }\n\n    this.options = {\n      ...rest,\n      schemas: schemas.concat(schema),\n    };\n\n    const controller = await this.ensureConfigured();\n    controller.update(this.options as object);\n  }\n\n  async deleteSchema(uri: string) {\n    const options = this.options || {};\n    const { schemas, ...rest } = options;\n\n    this.options = {\n      ...rest,\n      schemas: schemas?.filter(item => item.uri !== uri),\n    };\n\n    const controller = await this.ensureConfigured();\n    controller.update(this.options as object);\n  }\n\n  private async ensureConfigured() {\n    if (this.controller) {\n      return this.controller;\n    }\n    const monaco = await this.loader.initMonaco();\n    this.controller = configureMonacoYaml(monaco, this.options as object);\n    return this.controller;\n  }\n}\n","/**\n * @packageDocumentation\n * @module code\n */\n\nimport type { editor } from 'monaco-editor';\n\nimport { CodeEditorActionsConfig } from './alauda-code-editor/public-api';\n\nexport type IEditorConstructionOptions = editor.IEditorConstructionOptions & {\n  language?: string;\n  tabSize?: number;\n};\n\nconst commonActions: CodeEditorActionsConfig = {\n  copy: true,\n  find: true,\n  export: true,\n};\n\nexport const createActions: CodeEditorActionsConfig = {\n  diffMode: false,\n  clear: true,\n  recover: false,\n  import: true,\n  ...commonActions,\n};\n\nexport const viewActions: CodeEditorActionsConfig = {\n  diffMode: false,\n  clear: false,\n  recover: false,\n  import: false,\n  ...commonActions,\n};\n\nexport const updateActions: CodeEditorActionsConfig = {\n  diffMode: true, // if true, you should also set 'originalValue' attribute, eg: <aui-code-editor [originalValue]=\"originalFile\"></aui-code-editor>\n  clear: true,\n  recover: true,\n  import: true,\n  ...commonActions,\n};\n\nexport const logsActions: CodeEditorActionsConfig = {\n  ...viewActions,\n  theme: true,\n};\n\nexport const commonOptions: IEditorConstructionOptions = {\n  folding: true,\n  minimap: { enabled: false },\n  wordWrap: 'on',\n  tabSize: 2,\n  scrollbar: {\n    alwaysConsumeMouseWheel: false,\n  },\n};\n\nexport const readonlyOptions: IEditorConstructionOptions = {\n  ...commonOptions,\n  readOnly: true,\n};\n\nexport const yamlReadOptions: IEditorConstructionOptions = {\n  language: 'yaml',\n  ...readonlyOptions,\n};\n\nexport const yamlWriteOptions: IEditorConstructionOptions = {\n  language: 'yaml',\n  ...commonOptions,\n};\n\nexport const textWriteOptions: IEditorConstructionOptions = {\n  language: 'text',\n  ...commonOptions,\n};\n\nexport const yamlWriteMinimapOptions: IEditorConstructionOptions = {\n  language: 'yaml',\n  ...commonOptions,\n  minimap: { enabled: true },\n};\n\nexport const yamlReadMinimapOptions: IEditorConstructionOptions = {\n  language: 'yaml',\n  ...readonlyOptions,\n  minimap: { enabled: true },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}