]> BookStack Code Mirror - bookstack/blob - resources/js/wysiwyg/filters.js
4dd60063048285f3dbd51ade2d5ca35c90517fce
[bookstack] / resources / js / wysiwyg / filters.js
1 /**
2  * Setup a serializer filter for <br> tags to ensure they're not rendered
3  * within code blocks and that we use newlines there instead.
4  * @param {Editor} editor
5  */
6 function setupBrFilter(editor) {
7     editor.serializer.addNodeFilter('br', nodes => {
8         for (const node of nodes) {
9             if (node.parent && node.parent.name === 'code') {
10                 const newline = window.tinymce.html.Node.create('#text');
11                 newline.value = '\n';
12                 node.replace(newline);
13             }
14         }
15     });
16 }
17
18 /**
19  * Remove accidentally added pointer elements that are within the content.
20  * These could have accidentally been added via getting caught in range
21  * selection within page content.
22  * @param {Editor} editor
23  */
24 function setupPointerFilter(editor) {
25     editor.parser.addNodeFilter('div', nodes => {
26         for (const node of nodes) {
27             if (node.attr('id') === 'pointer' || node.attr('class').includes('pointer')) {
28                 node.remove();
29             }
30         }
31     });
32 }
33
34 /**
35  * Setup global default filters for the given editor instance.
36  * @param {Editor} editor
37  */
38 export function setupFilters(editor) {
39     setupBrFilter(editor);
40     setupPointerFilter(editor);
41 }