diff --git a/src/public/app/services/library_loader.js b/src/public/app/services/library_loader.js index f5299ae33..a7aa4af62 100644 --- a/src/public/app/services/library_loader.js +++ b/src/public/app/services/library_loader.js @@ -1,5 +1,6 @@ import mimeTypesService from "./mime_types.js"; import optionsService from "./options.js"; +import { getStylesheetUrl } from "./syntax_highlight.js"; const CKEDITOR = {"js": ["libraries/ckeditor/ckeditor.js"]}; @@ -176,12 +177,7 @@ function loadHighlightingTheme(theme) { $("head").append(highlightingThemeEl); } - let url; - const defaultPrefix = "default:"; - if (theme.startsWith(defaultPrefix)) { - url = `${window.glob.assetPath}/node_modules/@highlightjs/cdn-assets/styles/${theme.substr(defaultPrefix.length)}.min.css`; - } - + const url = getStylesheetUrl(theme); if (url) { highlightingThemeEl.attr("href", url); } diff --git a/src/public/app/services/syntax_highlight.js b/src/public/app/services/syntax_highlight.js index 224198fa2..a921fe35c 100644 --- a/src/public/app/services/syntax_highlight.js +++ b/src/public/app/services/syntax_highlight.js @@ -2,6 +2,19 @@ import library_loader from "./library_loader.js"; import mime_types from "./mime_types.js"; import options from "./options.js"; +export function getStylesheetUrl(theme) { + if (!theme) { + return null; + } + + const defaultPrefix = "default:"; + if (theme.startsWith(defaultPrefix)) { + return `${window.glob.assetPath}/node_modules/@highlightjs/cdn-assets/styles/${theme.substr(defaultPrefix.length)}.min.css`; + } + + return null; +} + /** * Identifies all the code blocks (as `pre code`) under the specified hierarchy and uses the highlight.js library to obtain the highlighted text which is then applied on to the code blocks. * diff --git a/src/public/app/widgets/note_detail.js b/src/public/app/widgets/note_detail.js index 19544b7cb..f294b18ed 100644 --- a/src/public/app/widgets/note_detail.js +++ b/src/public/app/widgets/note_detail.js @@ -30,6 +30,7 @@ import ContentWidgetTypeWidget from "./type_widgets/content_widget.js"; import AttachmentListTypeWidget from "./type_widgets/attachment_list.js"; import AttachmentDetailTypeWidget from "./type_widgets/attachment_detail.js"; import MindMapWidget from "./type_widgets/mind_map.js"; +import { getStylesheetUrl, isSyntaxHighlightEnabled } from "../services/syntax_highlight.js"; const TPL = `