FEATURE: add html-block rich editor extension

This commit is contained in:
Renato Atilio
2025-02-04 17:32:22 -03:00
parent 0e61565b2b
commit e6073220aa
2 changed files with 37 additions and 1 deletions

View File

@@ -0,0 +1,35 @@
/** @type {RichEditorExtension} */
const extension = {
nodeSpec: {
html_block: {
attrs: { params: { default: "html" } },
group: "block",
content: "text*",
code: true,
defining: true,
marks: "",
isolating: true,
selectable: true,
draggable: true,
parseDOM: [{ tag: "pre.html-block", preserveWhitespace: "full" }],
toDOM() {
return ["pre", { class: "html-block" }, ["code", 0]];
},
},
},
parse: {
html_block: (state, token) => {
state.openNode(state.schema.nodes.html_block);
state.addText(token.content.trim());
state.closeNode();
},
},
serializeNode: {
html_block: (state, node) => {
state.renderContent(node);
state.write("\n\n");
},
},
};
export default extension;

View File

@@ -1,4 +1,5 @@
import { registerRichEditorExtension } from "discourse/lib/composer/rich-editor-extensions";
import htmlBlock from "./html-block";
/**
* List of default extensions
@@ -6,6 +7,6 @@ import { registerRichEditorExtension } from "discourse/lib/composer/rich-editor-
*
* @type {RichEditorExtension[]}
*/
const defaultExtensions = [];
const defaultExtensions = [htmlBlock];
defaultExtensions.forEach(registerRichEditorExtension);