UNPKG

vue-admin-core

Version:
1 lines 9.5 kB
{"version":3,"file":"Editor.mjs","sources":["../../../../../../package/components/rich-text/src/Editor.tsx"],"sourcesContent":["import {\n PropType,\n defineComponent,\n h,\n onMounted,\n onUnmounted,\n ref,\n shallowRef,\n toRaw,\n watch,\n watchEffect\n} from \"vue\";\nimport { IDomEditor, SlateDescendant, IEditorConfig, createEditor } from \"@wangeditor/editor\";\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from \"element-plus\";\nimport { getPrefixCls } from \"@vue-admin-core/utils/const\";\nconst prefixCls = getPrefixCls(\"editor\");\n\nexport default defineComponent({\n name: \"RickTextToolbar\",\n props: {\n /** 编辑器模式 */\n mode: {\n type: String,\n default: \"default\"\n },\n /** 编辑器默认内容 */\n defaultContent: {\n type: Array as PropType<SlateDescendant[]>,\n default: () => []\n },\n defaultHtml: {\n type: String,\n default: \"\"\n },\n /** 编辑器默认配置 */\n defaultConfig: {\n type: Object as PropType<IEditorConfig>,\n default: () => ({})\n },\n /* 自定义 v-model */\n modelValue: {\n type: String,\n default: \"\"\n },\n /** 是否禁用 */\n disabled: {\n type: Boolean\n },\n readOnly: {\n type: Boolean\n },\n placeholder: {\n type: String\n }\n },\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n \"created\",\n \"destroyed\",\n \"created\",\n \"maxLength\",\n \"focus\",\n \"blur\",\n \"customAlert\",\n \"customPaste\"\n ],\n setup(props, context) {\n const box = ref(null); // 编辑器容器\n\n const editorRef = shallowRef<null | IDomEditor>(null); // editor 实例,必须用 shallowRef\n const editor = ref();\n\n const curValue = ref(\"\"); // 记录 editor 当前 html 内容\n\n /**\n * 初始化编辑器\n */\n const initEditor = () => {\n if (!box.value) return;\n // 获取原始数据,解除响应式特性\n const defaultContent = toRaw(props.defaultContent);\n\n editor.value = createEditor({\n selector: box.value! as Element,\n mode: props.mode,\n content: defaultContent || [],\n html: props.defaultHtml || props.modelValue || \"\",\n config: {\n ...props.defaultConfig,\n placeholder: props.placeholder,\n readOnly: props.disabled || props.readOnly,\n onCreated(editor) {\n editorRef.value = editor; // 记录 editor 实例\n context.emit(\"created\", editor);\n },\n onChange(editor) {\n const editorHtml = editor.getHtml();\n curValue.value = editorHtml; // 记录当前内容\n context.emit(\"update:modelValue\", editorHtml); // 触发 v-model 值变化\n context.emit(\"change\", editor);\n },\n onDestroyed(editor) {\n context.emit(\"destroyed\", editor);\n },\n onMaxLength(editor) {\n context.emit(\"maxLength\", editor);\n },\n onFocus(editor) {\n context.emit(\"focus\", editor);\n },\n onBlur(editor) {\n context.emit(\"blur\", editor);\n },\n customAlert(info, type) {\n context.emit(\"customAlert\", info, type);\n },\n customPaste: (editor, event): any => {\n let res;\n context.emit(\"customPaste\", editor, event, (val: boolean) => {\n res = val;\n });\n return res;\n }\n }\n });\n };\n\n /**\n * 设置 HTML\n * @param newHtml new html\n */\n function setHtml(newHtml: string) {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.setHtml(newHtml);\n }\n\n /**\n * 元素挂在后初始化编辑器\n */\n onMounted(() => {\n initEditor();\n });\n\n onUnmounted(() => {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.destroy();\n });\n\n /**\n * 监听 v-model 值变化\n */\n watch(\n () => props.modelValue,\n (newVal: any) => {\n if (newVal === curValue.value) return; // 和当前内容一样,则忽略\n\n // 重新设置 HTML\n setHtml(newVal);\n }\n );\n watchEffect(() => {\n if (!editor.value) return;\n if (props.disabled || props.readOnly) {\n editor.value.disable();\n } else {\n editor.value.enable();\n }\n });\n return () =>\n h(\"div\", {\n ref: box,\n class: [prefixCls, { \"is-disabled\": props.disabled }]\n });\n }\n});\n"],"names":["prefixCls","getPrefixCls","defineComponent","name","props","mode","type","String","default","defaultContent","Array","defaultHtml","defaultConfig","Object","modelValue","disabled","Boolean","readOnly","placeholder","emits","UPDATE_MODEL_EVENT","CHANGE_EVENT","setup","context","box","ref","editorRef","shallowRef","editor","curValue","initEditor","value","toRaw","createEditor","selector","content","html","config","onCreated","emit","onChange","editorHtml","getHtml","onDestroyed","onMaxLength","onFocus","onBlur","customAlert","info","customPaste","event","res","val","setHtml","newHtml","onMounted","onUnmounted","destroy","watch","newVal","watchEffect","disable","enable","h","class"],"mappings":"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"}