I have a custom schema with specific nodes and marks, and I’d like to add lists to it. My nodes look like:
const nodes = {
doc: {
content: 'block+'
},
paragraph: {
content: 'inline*',
group: 'block',
parseDOM: [{tag: 'p'}],
toDOM() {
return ['p', 0];
}
},
text: {
group: 'inline'
},
hard_break: {
inline: true,
group: 'inline',
selectable: false,
parseDOM: [{tag: 'br'}],
toDOM() {
return ['br']
}
},
[…]
and my marks are also pretty basic, with several of my own additions:
const marks = {
link: {
attrs: {
href: {},
title: {default: null}
},
inclusive: false,
parseDOM: [
{
tag: 'a[href]',
getAttrs(dom) {
return {
href: dom.getAttribute('href'),
title: dom.getAttribute('title')
};
}
}
],
toDOM(node) {
return ['a', node.attrs];
}
},
// :: MarkSpec An emphasis mark. Rendered as an `<em>` element.
// Has parse rules that also match `<i>` and `font-style: italic`.
em: {
parseDOM: [{tag: 'i'}, {tag: 'em'}, {style: 'font-style=italic'}],
toDOM() {
return ['em'];
}
},
[…]
As there already is prosemirror-schema-list I tried to add that package and issue
import { addListNodes } from 'prosemirror-schema-list';
[…]
const schema = new Schema({nodes: addListNodes(nodes, "paragraph block*", "block"), marks: marks});
However, now the browser complains
Uncaught TypeError: nodes.append is not a function at addListNodes
Indeed there is a nodes.append
in addListNodes
, but I can’t find where it is implemented.