Co-authored-by: fisker <172584+fisker@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { reactive, watch } from "vue";
|
|
import * as storage from "./storage.js";
|
|
|
|
export default {
|
|
name: "EditorState",
|
|
setup(_, { slots }) {
|
|
const stateToggler = (property) => () => {
|
|
state[property] = !state[property];
|
|
};
|
|
const state = reactive({
|
|
showSidebar: window.innerWidth > window.innerHeight,
|
|
showAst: false,
|
|
showPreprocessedAst: false,
|
|
showDoc: false,
|
|
showComments: false,
|
|
showSecondFormat: false,
|
|
showInput: true,
|
|
showOutput: true,
|
|
rethrowEmbedErrors: false,
|
|
toggleSidebar: stateToggler("showSidebar"),
|
|
toggleAst: stateToggler("showAst"),
|
|
togglePreprocessedAst: stateToggler("showPreprocessedAst"),
|
|
toggleDoc: stateToggler("showDoc"),
|
|
toggleComments: stateToggler("showComments"),
|
|
toggleSecondFormat: stateToggler("showSecondFormat"),
|
|
toggleInput: stateToggler("showInput"),
|
|
toggleOutput: stateToggler("showOutput"),
|
|
toggleEmbedErrors: stateToggler("rethrowEmbedErrors"),
|
|
...storage.get("editor_state"),
|
|
});
|
|
|
|
const render = () => slots.default(state);
|
|
|
|
watch(
|
|
() => state,
|
|
() => {
|
|
storage.set("editor_state", state);
|
|
},
|
|
{ deep: true },
|
|
);
|
|
return render;
|
|
},
|
|
};
|