vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 3.5 kB
Source Map (JSON)
{"version":3,"file":"plugin.mjs","sources":["../../../../../../../package/components/msg-editor/src/paragraph/plugin.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @description editor 插件,重写 editor API\n * @author wangfupeng\n */\n\nimport {\n SlateEditor as Editor,\n SlateElement,\n SlateTransforms,\n SlateNode,\n SlateText\n} from \"@wangeditor/editor\";\nimport type { IDomEditor } from \"@wangeditor/core\";\n\nfunction deleteHandler(newEditor: IDomEditor): boolean {\n const [nodeEntry] = Editor.nodes(newEditor, {\n match: (n) => newEditor.children[0] === n, // editor 第一个节点\n mode: \"highest\" // 最高层级\n });\n if (nodeEntry == null) return false;\n\n const n = nodeEntry[0];\n if (!SlateElement.isElement(n)) return false;\n if (n.type === \"paragraph\") return false; // 命中了 paragraph ,则不再继续判断\n if (SlateNode.string(n) !== \"\") return false; // 未删除全部内容,则不再继续判断\n\n const { children = [] } = n;\n if (!SlateText.isText(children[0])) return false; // n.children 不是 text (如 table),则不再继续判断\n\n // 至此,就命中了一个(非 paragraph)+(children 都是 text)+(内容为空)的顶级 node ,如 header blockQuote 等\n // 然后,将其却换为 paragraph\n SlateTransforms.setNodes(newEditor, {\n type: \"paragraph\"\n });\n return true;\n}\n\nfunction withParagraph<T extends IDomEditor>(editor: T): T {\n const { deleteBackward, deleteForward } = editor;\n const newEditor = editor;\n\n // 删除非 p 的文本 elem(如 header blockQuote 等),删除没有内容时,切换为 p\n newEditor.deleteBackward = (unit) => {\n const res = deleteHandler(newEditor);\n if (res) return; // 命中结果,则 return\n\n // 执行默认的删除\n deleteBackward(unit);\n };\n newEditor.deleteForward = (unit) => {\n const res = deleteHandler(newEditor);\n if (res) return; // 命中结果,则 return\n\n // 执行默认的删除\n deleteForward(unit);\n };\n\n // 返回 editor ,重要!\n return newEditor;\n}\n\nexport default withParagraph;\n"],"names":["Editor","n"],"mappings":";;AAeA,SAAS,cAAc,SAAgC,EAAA;AACrD,EAAA,MAAM,CAAC,SAAS,CAAI,GAAAA,WAAA,CAAO,MAAM,SAAW,EAAA;AAAA,IAC1C,OAAO,CAACC,EAAAA,KAAM,SAAU,CAAA,QAAA,CAAS,CAAC,CAAMA,KAAAA,EAAAA;AAAA;AAAA,IACxC,IAAM,EAAA,SAAA;AAAA;AAAA,GACP,CAAA,CAAA;AACD,EAAA,IAAI,SAAa,IAAA,IAAA;AAAM,IAAO,OAAA,KAAA,CAAA;AAE9B,EAAM,MAAA,CAAA,GAAI,UAAU,CAAC,CAAA,CAAA;AACrB,EAAI,IAAA,CAAC,YAAa,CAAA,SAAA,CAAU,CAAC,CAAA;AAAG,IAAO,OAAA,KAAA,CAAA;AACvC,EAAA,IAAI,EAAE,IAAS,KAAA,WAAA;AAAa,IAAO,OAAA,KAAA,CAAA;AACnC,EAAI,IAAA,SAAA,CAAU,MAAO,CAAA,CAAC,CAAM,KAAA,EAAA;AAAI,IAAO,OAAA,KAAA,CAAA;AAEvC,EAAA,MAAM,EAAE,QAAA,GAAW,EAAC,EAAM,GAAA,CAAA,CAAA;AAC1B,EAAA,IAAI,CAAC,SAAA,CAAU,MAAO,CAAA,QAAA,CAAS,CAAC,CAAC,CAAA;AAAG,IAAO,OAAA,KAAA,CAAA;AAI3C,EAAA,eAAA,CAAgB,SAAS,SAAW,EAAA;AAAA,IAClC,IAAM,EAAA,WAAA;AAAA,GACP,CAAA,CAAA;AACD,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,SAAS,cAAoC,MAAc,EAAA;AACzD,EAAM,MAAA,EAAE,cAAgB,EAAA,aAAA,EAAkB,GAAA,MAAA,CAAA;AAC1C,EAAA,MAAM,SAAY,GAAA,MAAA,CAAA;AAGlB,EAAU,SAAA,CAAA,cAAA,GAAiB,CAAC,IAAS,KAAA;AACnC,IAAM,MAAA,GAAA,GAAM,cAAc,SAAS,CAAA,CAAA;AACnC,IAAI,IAAA,GAAA;AAAK,MAAA,OAAA;AAGT,IAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AAAA,GACrB,CAAA;AACA,EAAU,SAAA,CAAA,aAAA,GAAgB,CAAC,IAAS,KAAA;AAClC,IAAM,MAAA,GAAA,GAAM,cAAc,SAAS,CAAA,CAAA;AACnC,IAAI,IAAA,GAAA;AAAK,MAAA,OAAA;AAGT,IAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA,GACpB,CAAA;AAGA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}