]> BookStack Code Mirror - bookstack/blobdiff - resources/js/code/index.mjs
Opensearch: Fixed XML declaration when php short tags enabled
[bookstack] / resources / js / code / index.mjs
index ada4529db5454fa448e4263a9665a470272a4c03..a2850c06b23f366375bd59b08aae0317ac93edcb 100644 (file)
@@ -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
@@ -55,6 +72,11 @@ function highlightElem(elem) {
     const wrapper = document.createElement('div');
     elem.parentNode.insertBefore(wrapper, elem);
 
+    const direction = getDirectionFromCodeBlock(elem);
+    if (direction) {
+        wrapper.setAttribute('dir', direction);
+    }
+
     const ev = createView('content-code-block', {
         parent: wrapper,
         doc: content,