diff --git a/packages/editor/src/core/helpers/editor-ref.ts b/packages/editor/src/core/helpers/editor-ref.ts index 958624ee1a7..bc81364af1f 100644 --- a/packages/editor/src/core/helpers/editor-ref.ts +++ b/packages/editor/src/core/helpers/editor-ref.ts @@ -2,25 +2,27 @@ import type { HocuspocusProvider } from "@hocuspocus/provider"; import type { Editor } from "@tiptap/core"; import { DOMSerializer } from "@tiptap/pm/model"; import * as Y from "yjs"; +// plane imports +import { convertHTMLToMarkdown } from "@plane/utils"; // components import { getEditorMenuItems } from "@/components/menus"; // constants import { CORE_EXTENSIONS } from "@/constants/extension"; import { CORE_EDITOR_META } from "@/constants/meta"; // types -import type { EditorRefApi, TEditorCommands } from "@/types"; +import type { EditorRefApi, IEditorProps, TEditorCommands } from "@/types"; // local imports import { getParagraphCount } from "./common"; import { insertContentAtSavedSelection } from "./insert-content-at-cursor-position"; import { scrollSummary, scrollToNodeViaDOMCoordinates } from "./scroll-to-node"; -type TArgs = { +type TArgs = Pick & { editor: Editor | null; provider: HocuspocusProvider | undefined; }; export const getEditorRefHelpers = (args: TArgs): EditorRefApi => { - const { editor, provider } = args; + const { editor, getEditorMetaData, provider } = args; return { blur: () => editor?.commands.blur(), @@ -77,8 +79,15 @@ export const getEditorRefHelpers = (args: TArgs): EditorRefApi => { }), getHeadings: () => (editor ? editor.storage.headingsList?.headings : []), getMarkDown: () => { - const markdownOutput = editor?.storage?.markdown?.getMarkdown?.() ?? ""; - return markdownOutput; + if (!editor) return ""; + const editorHTML = editor.getHTML(); + const metaData = getEditorMetaData(editorHTML); + // convert to markdown + const markdown = convertHTMLToMarkdown({ + description_html: editorHTML, + metaData, + }); + return markdown; }, isAnyDropbarOpen: () => { if (!editor) return false; diff --git a/packages/editor/src/core/hooks/use-editor.ts b/packages/editor/src/core/hooks/use-editor.ts index b0cdb30e0b1..cc3343441fc 100644 --- a/packages/editor/src/core/hooks/use-editor.ts +++ b/packages/editor/src/core/hooks/use-editor.ts @@ -132,7 +132,16 @@ export const useEditor = (props: TEditorHookProps) => { onAssetChange(assets); }, [assetsList?.assets, onAssetChange]); - useImperativeHandle(forwardedRef, () => getEditorRefHelpers({ editor, provider }), [editor, provider]); + useImperativeHandle( + forwardedRef, + () => + getEditorRefHelpers({ + editor, + getEditorMetaData, + provider, + }), + [editor, getEditorMetaData, provider] + ); if (!editor) { return null;