import { Link, Meta, Title } from "@solidjs/meta"; import { Component, createMemo, createSignal, ErrorBoundary, ParentProps, Show } from "solid-js"; import { FilesProvider } from "~/features/file"; import { Menu, MenuProvider } from "~/features/menu"; import { A, RouteDefinition, useBeforeLeave } from "@solidjs/router"; import { CommandPalette, CommandPaletteApi, createCommand, Modifier } from "~/features/command"; import { ColorScheme, ColorSchemePicker, getState, useTheme } from "~/components/colorschemepicker"; import { getRequestEvent } from "solid-js/web"; import { HttpHeader } from "@solidjs/start"; import { FaSolidPalette } from "solid-icons/fa"; import css from "./editor.module.css"; import { LocalePicker } from "~/features/i18n"; const event = getRequestEvent(); export const route: RouteDefinition = { preload: () => { return getState(); }, }; export default function Editor(props: ParentProps) { const theme = useTheme(); const themeMenuId = createUniqueId(); const [commandPalette, setCommandPalette] = createSignal(); const colorScheme = createMemo(() => (theme.colorScheme === ColorScheme.Auto ? event?.request.headers.get('Sec-CH-Prefers-Color-Scheme') : theme.colorScheme) ?? 'light dark'); const lightness = createMemo(() => colorScheme() === ColorScheme.Light ? .9 : .2); const commands = [ createCommand('shell.command.openCommandPalette', () => { 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 Calque
}> {props.children}
} const ErrorComp: Component<{ error: Error }> = (props) => { return
{props.error.message} { cause => <>{cause().description} } {props.error.stack} Return to start
; }; let keyCounter = 0; const createUniqueId = () => `key-${keyCounter++}`;