mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-07-16 16:22:44 +00:00
Added wysiwyg filter to handle <br> tags within code blocks
This filters out <br> elements within code blocks and replaces them with newlines. The editor started using <br>'s more harshley after some configuration changes upon upgrading tinymce, in which we standardised on forced br tags to avoid empty elements. For #3327
This commit is contained in:
parent
d23b24b8db
commit
dd7463259a
|
@ -114,6 +114,23 @@ function fetchCustomHeadContent() {
|
||||||
return headContentLines.slice(startLineIndex + 1, endLineIndex).join('\n');
|
return headContentLines.slice(startLineIndex + 1, endLineIndex).join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup a serializer filter for <br> tags to ensure they're not rendered
|
||||||
|
* within code blocks and that we use newlines there instead.
|
||||||
|
* @param {Editor} editor
|
||||||
|
*/
|
||||||
|
function setupBrFilter(editor) {
|
||||||
|
editor.serializer.addNodeFilter('br', function(nodes) {
|
||||||
|
for (const node of nodes) {
|
||||||
|
if (node.parent && node.parent.name === 'code') {
|
||||||
|
const newline = new tinymce.html.Node.create('#text');
|
||||||
|
newline.value = '\n';
|
||||||
|
node.replace(newline);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {WysiwygConfigOptions} options
|
* @param {WysiwygConfigOptions} options
|
||||||
* @return {function(Editor)}
|
* @return {function(Editor)}
|
||||||
|
@ -131,6 +148,10 @@ function getSetupCallback(options) {
|
||||||
window.editor = editor;
|
window.editor = editor;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
editor.on('PreInit', () => {
|
||||||
|
setupBrFilter(editor);
|
||||||
|
});
|
||||||
|
|
||||||
function editorChange() {
|
function editorChange() {
|
||||||
const content = editor.getContent();
|
const content = editor.getContent();
|
||||||
if (options.darkMode) {
|
if (options.darkMode) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user