+]);
+
+const defaultThemeSpec = {
+ "&": {
+ color: "#000",
+ },
+ "&.cm-focused": {
+ outline: "none",
+ },
+ ".cm-line": {
+ lineHeight: "1.6",
+ },
+};
+
+/**
+ * Get the theme extension to use for editor view instance.
+ * @returns {Extension[]}
+ */
+export function getTheme(viewParentEl) {
+ const darkMode = document.documentElement.classList.contains('dark-mode');
+ let viewTheme = darkMode ? oneDarkTheme : EditorView.theme(defaultThemeSpec);
+ let highlightStyle = darkMode ? oneDarkHighlightStyle : defaultLightHighlightStyle;
+
+ const eventData = {
+ darkModeActive: darkMode,
+ registerViewTheme(builder) {
+ const spec = builder();
+ if (spec) {
+ viewTheme = EditorView.theme(spec);
+ }
+ },
+ registerHighlightStyle(builder) {
+ const tagStyles = builder(tags) || [];
+ if (tagStyles.length) {
+ highlightStyle = HighlightStyle.define(tagStyles);
+ }
+ }
+ };
+
+ window.$events.emitPublic(viewParentEl, 'library-cm6::configure-theme', eventData);
+
+ return [viewTheme, syntaxHighlighting(highlightStyle)];
+}
\ No newline at end of file