Files
BookStack/resources/js/editor/schema.js
Dan Brown 0fb8ba00a5 Attempted adding tricky custom block
Attempted adding callouts, which have the challenge of being shown via
HTML within markdown content. Got stuck on parsing back to the state
from markdown.
2022-01-07 16:37:36 +00:00

36 lines
1022 B
JavaScript

import {Schema} from "prosemirror-model";
import {schema as basicSchema} from "prosemirror-schema-basic";
import {addListNodes} from "prosemirror-schema-list";
const baseNodes = addListNodes(basicSchema.spec.nodes, "paragraph block*", "block");
const nodeCallout = {
attrs: {
type: {default: 'info'},
},
content: "inline*",
group: "block",
defining: true,
parseDOM: [
{tag: 'p.callout.info', attrs: {type: 'info'}},
{tag: 'p.callout.success', attrs: {type: 'success'}},
{tag: 'p.callout.danger', attrs: {type: 'danger'}},
{tag: 'p.callout.warning', attrs: {type: 'warning'}},
{tag: 'p.callout', attrs: {type: 'info'}},
],
toDOM: function(node) {
const type = node.attrs.type || 'info';
return ['p', {class: 'callout ' + type}, 0];
}
};
const customNodes = baseNodes.prepend({
callout: nodeCallout,
});
const schema = new Schema({
nodes: customNodes,
marks: basicSchema.spec.marks
})
export default schema;