diff --git a/src/routes/(editor).tsx b/src/routes/(editor).tsx
index e28ad96..69d7f98 100644
--- a/src/routes/(editor).tsx
+++ b/src/routes/(editor).tsx
@@ -1,10 +1,9 @@
import { Link, Title } from "@solidjs/meta";
-import { createEffect, createMemo, createSignal, ParentProps, Show } from "solid-js";
+import { Component, createMemo, createSignal, ErrorBoundary, ParentProps, Show } from "solid-js";
import { BsTranslate } from "solid-icons/bs";
import { FilesProvider } from "~/features/file";
import { CommandPalette, CommandPaletteApi, Menu, MenuProvider } from "~/features/menu";
-import { isServer } from "solid-js/web";
-import { A, createAsync } from "@solidjs/router";
+import { A, createAsync, useBeforeLeave } from "@solidjs/router";
import { createCommand, Modifier } from "~/features/command";
import { ColorScheme, ColorSchemePicker, getColorScheme } from "~/components/colorschemepicker";
import css from "./editor.module.css";
@@ -20,13 +19,24 @@ export default function Editor(props: ParentProps) {
[ColorScheme.Dark]: '#333',
}[ColorScheme[storedColorScheme()]]));
- const supported = isServer || typeof window.showDirectoryPicker === 'function';
const commands = [
createCommand('open command palette', () => {
commandPalette()?.show();
}, { key: 'p', modifier: Modifier.Control | Modifier.Shift }),
];
+ const transition = (done: () => void) => {
+ if (!document.startViewTransition) { return done() }
+
+ const transition = document.startViewTransition(done)
+ }
+
+ useBeforeLeave((e) => {
+ e.preventDefault()
+
+ transition(() => { e.retry(true) })
+ });
+
return