0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-04-29 22:29:57 +00:00

Added dark theme handling

This commit is contained in:
Dan Brown 2022-08-04 14:19:04 +01:00
parent 4757ed9453
commit 9fd7a6abed
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
3 changed files with 45 additions and 2 deletions
resources/js/code

View file

@ -1,18 +1,20 @@
import {getLanguageExtension} from "./languages";
import {getLanguageExtension} from "./languages"
import {Compartment} from "@codemirror/state"
import {EditorView} from "@codemirror/view"
import {oneDark} from "@codemirror/theme-one-dark"
const viewLangCompartments = new WeakMap();
/**
* Create a new editor view.
*
* @param {Object} config
* @param {{parent: Element, doc: String, extensions: Array}} config
* @returns {EditorView}
*/
export function createView(config) {
const langCompartment = new Compartment();
config.extensions.push(langCompartment.of([]));
config.extensions.push(getTheme(config.parent));
const ev = new EditorView(config);
@ -21,6 +23,23 @@ export function createView(config) {
return ev;
}
/**
* Ge the theme extension to use for editor view instance.
* @returns {Extension}
*/
function getTheme(viewParentEl) {
const darkMode = document.documentElement.classList.contains('dark-mode');
const eventData = {
darkMode: darkMode,
theme: null,
};
window.$events.emitPublic(viewParentEl, 'library-cm6::configure-theme', eventData);
return eventData.theme || (darkMode ? oneDark : []);
}
/**
* Set the language mode of an EditorView.
*