X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ee40adf11aa114d39594a549f52629f8c16357eb..refs/pull/5400/head:/resources/js/code/index.mjs diff --git a/resources/js/code/index.mjs b/resources/js/code/index.mjs index ab31e3f74..a2850c06b 100644 --- a/resources/js/code/index.mjs +++ b/resources/js/code/index.mjs @@ -1,6 +1,6 @@ import {EditorView, keymap} from '@codemirror/view'; -import {copyTextToClipboard} from '../services/clipboard'; +import {copyTextToClipboard} from '../services/clipboard.ts'; import {viewerExtensions, editorExtensions} from './setups'; import {createView} from './views'; import {SimpleEditorInterface} from './simple-editor-interface'; @@ -38,6 +38,23 @@ function addCopyIcon(editorView) { }); } +/** + * @param {HTMLElement} codeElem + * @returns {String} + */ +function getDirectionFromCodeBlock(codeElem) { + let dir = ''; + const innerCodeElem = codeElem.querySelector('code'); + + if (innerCodeElem && innerCodeElem.hasAttribute('dir')) { + dir = innerCodeElem.getAttribute('dir'); + } else if (codeElem.hasAttribute('dir')) { + dir = codeElem.getAttribute('dir'); + } + + return dir; +} + /** * Add code highlighting to a single element. * @param {HTMLElement} elem @@ -48,16 +65,14 @@ function highlightElem(elem) { const content = elem.textContent.trimEnd(); let langName = ''; - let innerCodeDirection = ''; if (innerCodeElem !== null) { langName = innerCodeElem.className.replace('language-', ''); - innerCodeDirection = innerCodeElem.getAttribute('dir'); } const wrapper = document.createElement('div'); elem.parentNode.insertBefore(wrapper, elem); - const direction = innerCodeDirection || elem.getAttribute('dir') || ''; + const direction = getDirectionFromCodeBlock(elem); if (direction) { wrapper.setAttribute('dir', direction); }