mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-02-22 09:02:04 +00:00
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { EditorView, showPanel, type Panel } from "@codemirror/view";
|
|
import { parsedChordsField } from "./parsed-chords-plugin";
|
|
import { mount, unmount } from "svelte";
|
|
import ChangesPanel from "./ChangesPanel.svelte";
|
|
|
|
function changesPanelFunc(view: EditorView): Panel {
|
|
let dom = document.createElement("div");
|
|
dom.style.display = "contents";
|
|
let viewState = $state.raw(view);
|
|
let parsed = $state.raw(view.state.field(parsedChordsField));
|
|
let component: {};
|
|
return {
|
|
dom,
|
|
mount() {
|
|
component = mount(ChangesPanel, {
|
|
target: dom,
|
|
props: {
|
|
get parsed() {
|
|
return parsed;
|
|
},
|
|
get view() {
|
|
return viewState;
|
|
},
|
|
},
|
|
});
|
|
},
|
|
update: (update) => {
|
|
if (
|
|
update.startState.field(parsedChordsField) !==
|
|
update.state.field(parsedChordsField)
|
|
) {
|
|
console.log("update changes panel");
|
|
parsed = update.state.field(parsedChordsField);
|
|
}
|
|
},
|
|
destroy() {
|
|
unmount(component);
|
|
},
|
|
};
|
|
}
|
|
|
|
export function changesPanel() {
|
|
return showPanel.of(changesPanelFunc);
|
|
}
|