diff --git a/src/App.tsx b/src/App.tsx
index fe706920d..d6107a0b9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -9,12 +9,7 @@ import { DebugPanel } from './components/DebugPanel'
import { v4 as uuidv4 } from 'uuid'
import { asyncLexer } from './lang/tokeniser'
import { abstractSyntaxTree } from './lang/abstractSyntaxTree'
-import {
- _executor,
- ProgramMemory,
- ExtrudeGroup,
- SketchGroup,
-} from './lang/executor'
+import { _executor } from './lang/executor'
import CodeMirror from '@uiw/react-codemirror'
import { langs } from '@uiw/codemirror-extensions-langs'
import { linter, lintGutter } from '@codemirror/lint'
@@ -358,7 +353,7 @@ export function App() {
return (
-
-
-
-
-
-
+
+
+
+
+
+ setEditorView(_editorView)}
+ />
+
+
+
+ setEditorView(_editorView)}
+ open={openPanes.includes('variables')}
+ title="Variables"
+ icon={faSquareRootVariable}
/>
-
-
-
+
+
+
+
{debugPanel && (
diff --git a/src/routes/Settings.tsx b/src/routes/Settings.tsx
index e0e7b7a09..84057cbf0 100644
--- a/src/routes/Settings.tsx
+++ b/src/routes/Settings.tsx
@@ -1,6 +1,5 @@
import {
faArrowRotateBack,
- faCheck,
faFolder,
faXmark,
} from '@fortawesome/free-solid-svg-icons'
@@ -8,27 +7,29 @@ import { ActionButton } from '../components/ActionButton'
import { AppHeader } from '../components/AppHeader'
import { open } from '@tauri-apps/api/dialog'
import { baseUnits, useStore } from '../useStore'
-import { useState } from 'react'
+import { useRef } from 'react'
import { toast } from 'react-hot-toast'
import { Toggle } from '../components/Toggle/Toggle'
import { useNavigate } from 'react-router-dom'
+import { useHotkeys } from 'react-hotkeys-hook'
export const Settings = () => {
const navigate = useNavigate()
+ useHotkeys('esc', () => navigate('/'))
const {
- defaultDir: ogDefaultDir,
- setDefaultDir: saveDefaultDir,
- defaultProjectName: ogDefaultProjectName,
- setDefaultProjectName: saveDefaultProjectName,
- defaultUnitSystem: ogDefaultUnitSystem,
- setDefaultUnitSystem: saveDefaultUnitSystem,
- defaultBaseUnit: ogDefaultBaseUnit,
- setDefaultBaseUnit: saveDefaultBaseUnit,
- saveDebugPanel,
- originalDebugPanel,
+ defaultDir,
+ setDefaultDir,
+ defaultProjectName,
+ setDefaultProjectName,
+ defaultUnitSystem,
+ setDefaultUnitSystem,
+ defaultBaseUnit,
+ setDefaultBaseUnit,
+ setDebugPanel,
+ debugPanel,
setOnboardingStatus,
- theme: ogTheme,
- setTheme: saveTheme,
+ theme,
+ setTheme,
} = useStore((s) => ({
defaultDir: s.defaultDir,
setDefaultDir: s.setDefaultDir,
@@ -38,20 +39,13 @@ export const Settings = () => {
setDefaultUnitSystem: s.setDefaultUnitSystem,
defaultBaseUnit: s.defaultBaseUnit,
setDefaultBaseUnit: s.setDefaultBaseUnit,
- saveDebugPanel: s.setDebugPanel,
- originalDebugPanel: s.debugPanel,
+ setDebugPanel: s.setDebugPanel,
+ debugPanel: s.debugPanel,
setOnboardingStatus: s.setOnboardingStatus,
theme: s.theme,
setTheme: s.setTheme,
}))
- const [defaultDir, setDefaultDir] = useState(ogDefaultDir)
- const [defaultProjectName, setDefaultProjectName] =
- useState(ogDefaultProjectName)
- const [defaultUnitSystem, setDefaultUnitSystem] =
- useState(ogDefaultUnitSystem)
- const [defaultBaseUnit, setDefaultBaseUnit] = useState(ogDefaultBaseUnit)
- const [debugPanel, setDebugPanel] = useState(originalDebugPanel)
- const [theme, setTheme] = useState(ogTheme)
+ const ogDefaultProjectName = useRef(defaultProjectName)
async function handleDirectorySelection() {
const newDirectory = await open({
@@ -65,16 +59,6 @@ export const Settings = () => {
}
}
- const handleSaveClick = () => {
- saveDefaultDir(defaultDir)
- saveDefaultProjectName(defaultProjectName)
- saveDefaultUnitSystem(defaultUnitSystem)
- saveDefaultBaseUnit(defaultBaseUnit)
- saveDebugPanel(debugPanel)
- saveTheme(theme)
- toast.success('Settings saved!')
- }
-
return (
<>
@@ -92,7 +76,7 @@ export const Settings = () => {
Close
-
+
>
)
@@ -233,7 +230,7 @@ export function SettingsSection({
children,
}: SettingsSectionProps) {
return (
-