diff --git a/src/public/app/layouts/desktop_layout.ts b/src/public/app/layouts/desktop_layout.ts index 945be3e5e..859f9dc04 100644 --- a/src/public/app/layouts/desktop_layout.ts +++ b/src/public/app/layouts/desktop_layout.ts @@ -89,6 +89,7 @@ import ContextualHelpButton from "../widgets/floating_buttons/help_button.js"; import CloseZenButton from "../widgets/close_zen_button.js"; import type { AppContext } from "./../components/app_context.js"; import type { WidgetsByParent } from "../services/bundle.js"; +import SwitchSplitOrientationButton from "../widgets/floating_buttons/switch_layout_button.js"; export default class DesktopLayout { @@ -202,6 +203,7 @@ export default class DesktopLayout { .child(new WatchedFileUpdateStatusWidget()) .child( new FloatingButtons() + .child(new SwitchSplitOrientationButton()) .child(new EditButton()) .child(new ShowTocWidgetButton()) .child(new ShowHighlightsListWidgetButton()) diff --git a/src/public/app/widgets/floating_buttons/switch_layout_button.ts b/src/public/app/widgets/floating_buttons/switch_layout_button.ts new file mode 100644 index 000000000..6dc2cfde2 --- /dev/null +++ b/src/public/app/widgets/floating_buttons/switch_layout_button.ts @@ -0,0 +1,38 @@ +import options from "../../services/options.js"; +import NoteContextAwareWidget from "../note_context_aware_widget.js"; + +const TPL = ` + +`; + +export default class SwitchSplitOrientationButton extends NoteContextAwareWidget { + isEnabled() { + return super.isEnabled() + && ["mermaid"].includes(this.note?.type ?? "") + && this.note?.isContentAvailable() + && this.noteContext?.viewScope?.viewMode === "default"; + } + + doRender(): void { + super.doRender(); + + this.$widget = $(TPL); + this.$widget.on("click", () => { + const currentOrientation = options.get("splitEditorOrientation"); + options.save("splitEditorOrientation", toggleOrientation(currentOrientation)); + }); + this.contentSized(); + } +} + +function toggleOrientation(orientation: string) { + if (orientation === "horizontal") { + return "vertical"; + } else { + return "horizontal"; + } +} diff --git a/src/public/app/widgets/type_widgets/abstract_split_type_widget.ts b/src/public/app/widgets/type_widgets/abstract_split_type_widget.ts index aad7d89ee..01be1cc26 100644 --- a/src/public/app/widgets/type_widgets/abstract_split_type_widget.ts +++ b/src/public/app/widgets/type_widgets/abstract_split_type_widget.ts @@ -4,9 +4,11 @@ import EditableCodeTypeWidget from "./editable_code.js"; import TypeWidget from "./type_widget.js"; import Split from "split.js"; import { DEFAULT_GUTTER_SIZE } from "../../services/resizer.js"; +import options from "../../services/options.js"; +import type SwitchSplitOrientationButton from "../floating_buttons/switch_layout_button.js"; const TPL = `\ -