{"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;;;;"}