{"version":3,"file":"text-editor.vue2.mjs","sources":["../../../../../packages/components/text-editor/src/text-editor.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElTextEditor'\n});\n</script>\n<template>\n  <div\n    :class=\"{\n      [ns.b()]: true,\n      [ns.m('focused')]: focused\n    }\"\n  >\n    <div :class=\"ns.e('toolbar')\" ref=\"toolbarRef\"></div>\n    <div :class=\"ns.e('body')\" ref=\"bodyRef\"></div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, onUnmounted, shallowRef, watch } from 'vue'\nimport {\n  createEditor,\n  createToolbar,\n  type Toolbar,\n  type IDomEditor,\n  IToolbarConfig\n} from '@wangeditor/editor'\nimport { textEditorProps } from './text-editor'\nimport { useFormItem, useNamespace } from '@element-ultra/hooks'\n\n\n\nconst props = defineProps(textEditorProps)\n\nlet emit = defineEmits([\"update:modelValue\", \"change\"])\n\nlet focused = shallowRef(false)\n\nconst ns = useNamespace('text-editor')\n\nconst { formItem } = useFormItem()\n\nconst toolbarRef = shallowRef<HTMLDivElement>()\nconst bodyRef = shallowRef<HTMLDivElement>()\n\nlet editor: IDomEditor | null = null\nlet toolbar: Toolbar | null = null\n\nconst internalVal = shallowRef('')\n\nconst createTextEditor = () => {\n  // 首先销毁之前创建的实例（如果实例已被创建）\n  editor?.destroy()\n  toolbar?.destroy()\n  editor = null\n  toolbar = null\n\n  if (!toolbarRef.value || !bodyRef.value) return\n\n  const { mode, placeholder, modelValue } = props\n\n  editor = createEditor({\n    selector: bodyRef.value,\n    html: modelValue,\n    mode,\n    content: [],\n    config: {\n      MENU_CONF: {\n        async uploadImage(file: File, insert: any) {\n          // 上传, 此处接入我们的分片上传\n          // 上传完成后插入\n          // insert(url, alt, href)\n        }\n      },\n\n      onChange(editor) {\n        const isEmpty = editor.isEmpty()\n        const html = isEmpty ? '' : editor.getHtml()\n        internalVal.value = html\n        emit('update:modelValue',html)\n        emit('change', html)\n      },\n\n      onFocus() {\n        focused.value = true\n      },\n\n      onBlur() {\n        focused.value = false\n      },\n      placeholder\n    }\n  })\n\n  const toolbarConf: Partial<IToolbarConfig> = {}\n  if (props.include) {\n    toolbarConf.toolbarKeys = props.include\n  }\n  if (props.exclude) {\n    toolbarConf.excludeKeys = props.exclude\n  }\n\n  toolbar = createToolbar({\n    editor,\n    selector: toolbarRef.value,\n    mode,\n    config: toolbarConf\n  })\n}\n\nconst destroyTextEditor = () => {\n  editor?.destroy()\n  toolbar?.destroy()\n}\n\n/** 设置值 */\nconst setHtml = (html = '') => {\n  editor?.setHtml(html)\n}\n\n// mode改变后重新创建编辑器\nwatch(() => props.mode, createTextEditor)\n\nwatch([() => props.exclude, () => props.include], ([exclude, include]) => {\n  const config = toolbar?.getConfig()\n\n  if (!config) return\n  if (exclude) {\n    config.excludeKeys = exclude\n  }\n  if (include) {\n    config.toolbarKeys = include\n  }\n})\n\nwatch(\n  () => props.modelValue,\n  v => {\n    formItem?.validate()\n    if (v === internalVal.value) return\n    setHtml(v)\n  }\n)\n\nonMounted(() => {\n  createTextEditor()\n})\n\nonUnmounted(() => {\n  destroyTextEditor()\n})\n</script>\n"],"names":["__MACROS_defineComponent","editor"],"mappings":"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"}