{"version":3,"file":"code-editor.vue2.mjs","sources":["../../../../../../packages/components/code-editor/src/code-editor.vue"],"sourcesContent":["<template>\r\n  <div\r\n    id=\"monaco-editor\"\r\n    ref=\"editorRef\"\r\n    :class=\"bem.b()\"\r\n    :style=\"{\r\n      width: props.width,\r\n      height: props.height,\r\n    }\"\r\n  />\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { onBeforeUnmount, onMounted, ref, watch } from 'vue'\r\nimport {\r\n  codeEditorEmits,\r\n  codeEditorProps,\r\n  codeThemeList,\r\n  defaultOptions,\r\n} from './config'\r\n\r\nimport loader from '@monaco-editor/loader'\r\n\r\ndefineOptions({ name: 'LlCodeEditor' })\r\n\r\nconst props = defineProps(codeEditorProps)\r\nconst emits = defineEmits(codeEditorEmits)\r\nconst bem = createNamespace('code-editor')\r\n\r\nlet monaco: any\r\nlet editor: any\r\n\r\nconst editorRef = ref()\r\nconst initMonacoEditor = async () => {\r\n  loader.config({ 'vs/nls': { availableLanguages: { '*': 'zh-cn' } } })\r\n  monaco = await loader.init()\r\n  monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\r\n    noSemanticValidation: true,\r\n    noSyntaxValidation: false,\r\n  })\r\n  monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\r\n    target: monaco.languages.typescript.ScriptTarget.ES2020,\r\n    allowNonTsExtensions: true,\r\n  })\r\n\r\n  editor = monaco.editor.create(editorRef.value, {\r\n    value: props.value,\r\n    language: props.language,\r\n    theme: props.theme,\r\n    ...defaultOptions,\r\n    ...props.options,\r\n    readOnly: props.disabled,\r\n  })\r\n  // 监听值的变化\r\n  editor.onDidChangeModelContent(() => {\r\n    const value = editor.getValue() //给父组件实时返回最新文本\r\n    emits('update:value', value)\r\n    emits('change', value)\r\n  })\r\n  handleChangeTheme(props.theme)\r\n\r\n  emits('editor-mounted', editor)\r\n}\r\nconst handleChangeTheme = async (theme: string) => {\r\n  const find = codeThemeList.find((item) => item.value === theme)\r\n  if (find) {\r\n    const themeData = {\r\n      ...find.data,\r\n    }\r\n    try {\r\n      monaco.editor.defineTheme(theme, themeData)\r\n      monaco.editor.setTheme(theme)\r\n    } catch (error) {\r\n      monaco.editor.setTheme('vs')\r\n    }\r\n  } else {\r\n    monaco.editor.setTheme('vs')\r\n  }\r\n}\r\nwatch(\r\n  () => props.value,\r\n  (newValue) => {\r\n    if (editor) {\r\n      const value = editor.getValue()\r\n      if (newValue !== value) {\r\n        editor.setValue(newValue)\r\n      }\r\n    }\r\n  }\r\n)\r\n\r\nwatch(\r\n  () => props.options,\r\n  (newValue) => {\r\n    editor.updateOptions(newValue)\r\n  },\r\n  { deep: true }\r\n)\r\n\r\nwatch(\r\n  () => props.language,\r\n  (newValue) => {\r\n    monaco.editor.setModelLanguage(editor.getModel()!, newValue)\r\n  }\r\n)\r\n\r\ndefineExpose({\r\n  getEditor() {\r\n    return editor\r\n  },\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  editor.dispose()\r\n})\r\n\r\nonMounted(async () => {\r\n  await initMonacoEditor()\r\n})\r\n</script>\r\n"],"names":["_createElementBlock","_normalizeClass","_unref","_normalizeStyle"],"mappings":"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"}