diff --git a/astro.config.mjs b/astro.config.mjs index d06b8e7..9b0fdb2 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -8,6 +8,10 @@ export default defineConfig({ integrations: [preact()], output: 'server', + devToolbar: { + enabled: false, + }, + adapter: node({ mode: 'standalone', }), diff --git a/public/screenshot-1.png b/public/screenshot-1.png new file mode 100644 index 0000000..417e34c Binary files /dev/null and b/public/screenshot-1.png differ diff --git a/src/client/components/Ide.jsx b/src/client/components/Ide.jsx index 3d773ca..5ef7c3e 100644 --- a/src/client/components/Ide.jsx +++ b/src/client/components/Ide.jsx @@ -3,10 +3,10 @@ import clsx from 'clsx' import { TreeView } from '@/client/components/TreeView.jsx' import { Editor } from '@/client/components/Editor.jsx' -import { useEffect } from 'preact/hooks' +import { useEffect, useRef } from 'preact/hooks' import { Terminal } from './Terminal.jsx' -import { clamp, fetchJson, stripPrefix } from '@/client/utils.js' +import { clamp, fetchJson, stripPrefix, useClickOutside } from '@/client/utils.js' export const Ide = ({}) => { const ws = useSignal(null) @@ -42,10 +42,20 @@ export const Ide = ({}) => { return tabs.value[activeTab.value].content }) + const runCompoundButtonOpen = useSignal(false) + + const runCompoundPopupRef = useRef(null) + + useClickOutside(runCompoundPopupRef, () => { + runCompoundButtonOpen.value = false + }) + return (
@@ -156,20 +172,28 @@ export const Ide = ({}) => { > Run - + { + e.stopPropagation() + runCompoundButtonOpen.value = !runCompoundButtonOpen.value + }} + > keyboard_arrow_down
- @@ -184,7 +208,7 @@ export const Ide = ({}) => {