{"version":3,"file":"rich-text-editor.vue2.mjs","sources":["../../../../../../packages/components/rich-text-editor/src/rich-text-editor.vue"],"sourcesContent":["<template>\r\n  <div :class=\"bem.b()\">\r\n    <a-spin :spinning=\"loading\">\r\n      <div :class=\"bem.e('container')\">\r\n        <Toolbar\r\n          :class=\"bem.e('toolbar-container')\"\r\n          :editor=\"editorRef\"\r\n          :default-config=\"props.toolbarConfig\"\r\n          :mode=\"props.mode\"\r\n        />\r\n        <!--  -->\r\n        <Editor\r\n          :model-value=\"innerValue\"\r\n          :class=\"bem.e('editor-container')\"\r\n          :default-config=\"editorConfig\"\r\n          :mode=\"props.mode\"\r\n          @update:model-value=\"onEditorUpdate\"\r\n          @on-created=\"handleCreated\"\r\n          @on-change=\"handleChange\"\r\n          @on-destroyed=\"handleDestroyed\"\r\n          @on-focus=\"handleFocus\"\r\n          @on-blur=\"handleBlur\"\r\n          @custom-alert=\"customAlert\"\r\n        />\r\n      </div>\r\n    </a-spin>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { onBeforeUnmount, ref, shallowRef, computed, watch } from 'vue'\r\nimport { Editor, Toolbar } from '@wangeditor/editor-for-vue'\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport {\r\n  richTextEditorProps,\r\n  richTextEditorEmits,\r\n  FALLBACK_IMAGE,\r\n  type InsertPicType,\r\n  type InsertVidType,\r\n  type ImageElement,\r\n} from './rich-text-editor'\r\n\r\nimport '@wangeditor/editor/dist/css/style.css' // 引入 css\r\n\r\nimport type { IDomEditor } from '@wangeditor/editor'\r\n\r\n//@ts-ignore\r\ndefineOptions({ name: 'LlRichTextEditor' })\r\n\r\nconst bem = createNamespace('rich-text-editor')\r\n\r\nconst props = defineProps(richTextEditorProps)\r\n\r\nconst emits = defineEmits(richTextEditorEmits)\r\n\r\nconst editorRef = shallowRef()\r\n\r\n// const innerValue = computed(() => props.value)\r\nconst innerValue = ref(props.value)\r\n\r\nconst loading = ref<boolean>(props.loading)\r\n\r\nconst allImages = ref<any>([])\r\n\r\nconst editorConfig = computed(() => {\r\n  return {\r\n    MENU_CONF: {\r\n      uploadImage: {\r\n        async onBeforeUpload(file: File) {\r\n          if (props.onBeforeUploadImage) {\r\n            const res = await props.onBeforeUploadImage(file)\r\n            return res ? file : false\r\n          }\r\n          return file\r\n        },\r\n\r\n        async customUpload(file: File, insertFn: InsertPicType) {\r\n          loading.value = true\r\n          //图片上传接口调用\r\n          try {\r\n            const res = await props.customUploadImage(file)\r\n            insertFn(res)\r\n            loading.value = false\r\n          } catch (error) {\r\n            editorRef.value.alert('错误信息', props.uploadImageError)\r\n            loading.value = false\r\n          }\r\n        },\r\n        base64LimitSize: 5 * 1024,\r\n      },\r\n      insertImage: {\r\n        async onInsertedImage(imageNode: ImageElement | null) {\r\n          allImages.value.push(imageNode)\r\n        },\r\n      },\r\n      uploadVideo: {\r\n        async customUpload(file: File, insertFn: InsertVidType) {\r\n          if (props.customUploadVideo) {\r\n            loading.value = true\r\n            //图片上传接口调用\r\n            try {\r\n              const res = await props.customUploadVideo(file)\r\n              insertFn(res, FALLBACK_IMAGE)\r\n              loading.value = false\r\n            } catch (error) {\r\n              editorRef.value.alert('错误信息', props.uploadImageError)\r\n              loading.value = false\r\n            }\r\n          }\r\n        },\r\n      },\r\n    },\r\n    ...props.editorConfig,\r\n  }\r\n})\r\n\r\nconst handleCreated = (editor: IDomEditor) => {\r\n  editorRef.value = editor\r\n  allImages.value = editor.getElemsByType('image')\r\n  // 编辑器创建完成后立即应用 disabled / loading 状态\r\n  if (props.disabled || loading.value) {\r\n    editor.disable()\r\n  } else {\r\n    editor.enable()\r\n  }\r\n  emits('created', editor)\r\n}\r\n\r\nconst onEditorUpdate = (value: string) => {\r\n  innerValue.value = value\r\n  emits('update:value', value)\r\n}\r\n\r\nconst handleChange = (editor: IDomEditor) => {\r\n  // innerValue.value = editor.getHtml()\r\n  emits('change', editor)\r\n  // emits('update:value', innerValue.value)\r\n}\r\nconst handleDestroyed = (editor: IDomEditor) => {\r\n  emits('destroyed', editor)\r\n}\r\nconst handleFocus = (editor: IDomEditor) => {\r\n  emits('focus', editor)\r\n}\r\nconst handleBlur = (editor: IDomEditor) => {\r\n  emits('blur', editor)\r\n}\r\nconst customAlert = (info, type) => {\r\n  emits('alert', [info, type])\r\n}\r\n\r\nconst getEditorImage = () => {\r\n  const editor = editorRef.value\r\n  if (editor == null) return\r\n  return {\r\n    allImages: allImages.value,\r\n    currentImages: editor.getElemsByType('image'),\r\n  }\r\n}\r\n\r\n// 组件销毁时，也及时销毁编辑器\r\nonBeforeUnmount(() => {\r\n  const editor = editorRef.value\r\n  if (editor == null) return\r\n  editor.destroy()\r\n})\r\n\r\nwatch(\r\n  () => props.loading,\r\n  (val: boolean) => {\r\n    loading.value = val\r\n  },\r\n)\r\n\r\nwatch(\r\n  () => props.value,\r\n  (newValue) => {\r\n    if (newValue !== innerValue.value) {\r\n      innerValue.value = newValue\r\n    }\r\n  },\r\n  { deep: true },\r\n)\r\n\r\nwatch(\r\n  () => [props.disabled, loading.value],\r\n  ([disabled, isLoading]) => {\r\n    const editor = editorRef.value\r\n    if (editor == null) return\r\n    disabled || isLoading ? editor.disable() : editor.enable()\r\n  },\r\n)\r\n\r\ndefineExpose({\r\n  editorRef,\r\n  getEditorImage,\r\n})\r\n</script>\r\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createVNode","_createElementVNode","_createCommentVNode"],"mappings":"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"}