1 | export var bodiedExtension = {
|
2 | inline: false,
|
3 | group: 'block',
|
4 | content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | extension | unsupportedBlock)+',
|
5 | defining: true,
|
6 | selectable: true,
|
7 | isolating: true,
|
8 | attrs: {
|
9 | extensionType: { default: '' },
|
10 | extensionKey: { default: '' },
|
11 | parameters: { default: null },
|
12 | text: { default: null },
|
13 | layout: { default: 'default' },
|
14 | },
|
15 | parseDOM: [
|
16 | {
|
17 | context: 'bodiedExtension//',
|
18 | tag: '[data-node-type="bodied-extension"]',
|
19 | skip: true,
|
20 | },
|
21 | {
|
22 | tag: '[data-node-type="bodied-extension"]',
|
23 | getAttrs: function (domNode) {
|
24 | var dom = domNode;
|
25 | return {
|
26 | extensionType: dom.getAttribute('data-extension-type'),
|
27 | extensionKey: dom.getAttribute('data-extension-key'),
|
28 | text: dom.getAttribute('data-text'),
|
29 | parameters: JSON.parse(dom.getAttribute('data-parameters') || '{}'),
|
30 | layout: dom.getAttribute('data-layout') || 'default',
|
31 | };
|
32 | },
|
33 | },
|
34 | ],
|
35 | toDOM: function (node) {
|
36 | var attrs = {
|
37 | 'data-node-type': 'bodied-extension',
|
38 | 'data-extension-type': node.attrs.extensionType,
|
39 | 'data-extension-key': node.attrs.extensionKey,
|
40 | 'data-text': node.attrs.text,
|
41 | 'data-parameters': JSON.stringify(node.attrs.parameters),
|
42 | 'data-layout': node.attrs.layout,
|
43 | };
|
44 | return ['div', attrs, 0];
|
45 | },
|
46 | };
|
47 |
|
\ | No newline at end of file |