dequoter/frontend/src/main.js
Leon Mika d841acd457
Some checks failed
Build / build (push) Successful in 36s
Release Build / build (push) Has been cancelled
Added dark mode and fixed the icon
2026-05-03 11:31:55 +10:00

50 lines
1.5 KiB
JavaScript

import './style.css';
import './app.css';
import {basicSetup} from "codemirror";
import {EditorView, keymap} from "@codemirror/view";
import {Compartment} from "@codemirror/state";
import {oneDark} from "@codemirror/theme-one-dark";
import {Application} from "@hotwired/stimulus";
import {textProcessor} from "./services.js";
import {multiCursorKeymap, commandPalette} from "./cmplugins.js";
import {indentWithTab} from "@codemirror/commands";
const darkMode = window.matchMedia("(prefers-color-scheme: dark)");
const themeCompartment = new Compartment();
import {StatusController} from "./controllers/status_controller.js";
import {CommandsController} from "./controllers/commands_controller.js";
import {PromptController} from "./controllers/prompt_controller.js";
const view = new EditorView({
parent: document.querySelector("#app .editor-mountpoint"),
doc: "",
extensions: [
basicSetup,
keymap.of([indentWithTab]),
EditorView.lineWrapping,
multiCursorKeymap,
commandPalette,
themeCompartment.of(darkMode.matches ? oneDark : []),
]
})
darkMode.addEventListener("change", (e) => {
view.dispatch({
effects: themeCompartment.reconfigure(e.matches ? oneDark : []),
});
});
window.Stimulus = Application.start()
Stimulus.register("commands", CommandsController);
Stimulus.register("prompt", PromptController);
Stimulus.register("status", StatusController);
textProcessor.setCodeMirrorEditor(view);
textProcessor.loadCurrentBuffer().then(() => textProcessor.startAutoSaver());
view.focus();