1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2024-10-30 07:32:39 +01:00

Removed jquery usage from wysiwyg editor JS

This commit is contained in:
Dan Brown 2019-06-07 19:21:38 +01:00
parent fdd34a74ed
commit b532ed0f86
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9

View File

@ -168,23 +168,24 @@ function codePlugin() {
}); });
} }
function codeMirrorContainerToPre($codeMirrorContainer) { function codeMirrorContainerToPre(codeMirrorContainer) {
let textArea = $codeMirrorContainer[0].querySelector('textarea'); const textArea = codeMirrorContainer.querySelector('textarea');
let code = textArea.textContent; const code = textArea.textContent;
let lang = $codeMirrorContainer[0].getAttribute('data-lang'); const lang = codeMirrorContainer.getAttribute('data-lang');
$codeMirrorContainer.removeAttr('contentEditable'); codeMirrorContainer.removeAttribute('contentEditable');
let $pre = $('<pre></pre>'); const pre = document.createElement('pre');
$pre.append($('<code></code>').each((index, elem) => { const codeElem = document.createElement('code');
// Needs to be textContent since innerText produces BR:s codeElem.classList.add(`language-${lang}`);
elem.textContent = code; codeElem.textContent = code;
}).attr('class', `language-${lang}`)); pre.appendChild(codeElem);
$codeMirrorContainer.replaceWith($pre);
codeMirrorContainer.parentElement.replaceChild(pre, codeMirrorContainer);
} }
window.tinymce.PluginManager.add('codeeditor', function(editor, url) { window.tinymce.PluginManager.add('codeeditor', function(editor, url) {
let $ = editor.$; const $ = editor.$;
editor.addButton('codeeditor', { editor.addButton('codeeditor', {
text: 'Code block', text: 'Code block',
@ -198,10 +199,8 @@ function codePlugin() {
// Convert // Convert
editor.on('PreProcess', function (e) { editor.on('PreProcess', function (e) {
$('div.CodeMirrorContainer', e.node). $('div.CodeMirrorContainer', e.node).each((index, elem) => {
each((index, elem) => { codeMirrorContainerToPre(elem);
let $elem = $(elem);
codeMirrorContainerToPre($elem);
}); });
}); });
@ -217,10 +216,10 @@ function codePlugin() {
$('.CodeMirrorContainer').filter((index ,elem) => { $('.CodeMirrorContainer').filter((index ,elem) => {
return typeof elem.querySelector('.CodeMirror').CodeMirror === 'undefined'; return typeof elem.querySelector('.CodeMirror').CodeMirror === 'undefined';
}).each((index, elem) => { }).each((index, elem) => {
codeMirrorContainerToPre($(elem)); codeMirrorContainerToPre(elem);
}); });
let codeSamples = $('body > pre').filter((index, elem) => { const codeSamples = $('body > pre').filter((index, elem) => {
return elem.contentEditable !== "false"; return elem.contentEditable !== "false";
}); });
@ -341,7 +340,7 @@ function drawIoPlugin() {
}); });
editor.on('SetContent', function () { editor.on('SetContent', function () {
let drawings = editor.$('body > div[drawio-diagram]'); const drawings = editor.$('body > div[drawio-diagram]');
if (!drawings.length) return; if (!drawings.length) return;
editor.undoManager.transact(function () { editor.undoManager.transact(function () {
@ -472,9 +471,10 @@ class WysiwygEditor {
if (type === 'file') { if (type === 'file') {
window.EntitySelectorPopup.show(function(entity) { window.EntitySelectorPopup.show(function(entity) {
let originalField = win.document.getElementById(field_name); const originalField = win.document.getElementById(field_name);
originalField.value = entity.link; originalField.value = entity.link;
$(originalField).closest('.mce-form').find('input').eq(2).val(entity.name); const mceForm = originalField.closest('.mce-form');
mceForm.querySelectorAll('input')[2].value = entity.name;
}); });
} }