xref: /plugin/diagrams/script/prosemirror.js (revision 3d6886fdda1da3668e853a389b1500cbdfc63619)
1jQuery(document).on('PROSEMIRROR_API_INITIALIZED', () => {
2    // define diagrams schema
3    window.Prosemirror.pluginSchemas.push((nodes, marks) => {
4        nodes = nodes.addToEnd('diagrams', {
5            inline: true,
6            selectable: true,
7            attrs: {
8                url: {},
9                id: {},
10                type: {default: 'mediafile'},
11                title: {default: null},
12                width: {default: null},
13                height: {default: null},
14                align: {default: ''}
15            },
16            group: "inline",
17            draggable: false,
18            toDOM: function toDOM(node) {
19                let alignclass = node.attrs.align;
20                if (alignclass.length !== 0) {
21                    alignclass = ` media${alignclass}`;
22                }
23
24                return [
25                    'img',
26                    {
27                        class: 'media diagrams-svg' + alignclass,
28                        title: node.attrs.title,
29                        src: node.attrs.url,
30                        'data-id': node.attrs.id,
31                        'data-type': node.attrs.type,
32                        //width: width,
33                        //height: height,
34                    }
35                ]
36            }
37        });
38        return {nodes, marks};
39    });
40
41    // extend plugin menu
42    const AbstractMenuItemDispatcher = window.Prosemirror.classes.AbstractMenuItemDispatcher;
43    const MenuItem = window.Prosemirror.classes.MenuItem;
44    const KeyValueForm = window.Prosemirror.classes.KeyValueForm;
45    const AbstractNodeView = window.AbstractNodeView; // FIXME this should be moved to the prosemirror.classes namespace
46
47    /* DOKUWIKI:include script/DiagramsForm.js */
48    /* DOKUWIKI:include script/DiagramsView.js */
49    /* DOKUWIKI:include script/DiagramsMenuItemDispatcher.js */
50
51
52    window.Prosemirror.pluginNodeViews.diagrams = function diagrams(node, outerview, getPos) {
53        return new DiagramsView(node, outerview, getPos);
54    };
55
56    window.Prosemirror.pluginMenuItemDispatchers.push(DiagramsMenuItemDispatcher);
57});
58