Gui scafolding toolbar, log console, axis for sketching

This commit is contained in:
Kurt Hutten IrevDev
2022-11-27 14:06:33 +11:00
parent 022788b2a3
commit 6f24e75f92
6 changed files with 284 additions and 41 deletions

View File

@ -3,6 +3,23 @@ import { addLineHighlight, EditorView } from './editor/highlightextension'
export type Range = [number, number]
type GuiModes =
| {
mode: 'default'
}
| {
mode: 'sketch'
sketchMode: 'points'
axis: 'xy' | 'xz' | 'yz'
}
| {
mode: 'sketch'
sketchMode: 'selectFace'
}
| {
mode: 'codeError'
}
interface StoreState {
editorView: EditorView | null
setEditorView: (editorView: EditorView) => void
@ -10,6 +27,13 @@ interface StoreState {
setHighlightRange: (range: Range) => void
selectionRange: [number, number]
setSelectionRange: (range: Range) => void
guiMode: GuiModes
lastGuiMode: GuiModes
setGuiMode: (guiMode: GuiModes) => void
removeError: () => void
logs: string[]
addLog: (log: string) => void
resetLogs: () => void
}
export const useStore = create<StoreState>()((set, get) => ({
@ -29,4 +53,25 @@ export const useStore = create<StoreState>()((set, get) => ({
setSelectionRange: (selectionRange) => {
set({ selectionRange })
},
guiMode: { mode: 'default' },
lastGuiMode: { mode: 'default' },
setGuiMode: (guiMode) => {
const lastGuiMode = get().guiMode
set({ guiMode })
set({ lastGuiMode })
},
removeError: () => {
const lastGuiMode = get().lastGuiMode
const currentGuiMode = get().guiMode
if (currentGuiMode.mode === 'codeError') {
set({ guiMode: lastGuiMode })
}
},
logs: [],
addLog: (log) => {
set((state) => ({ logs: [...state.logs, log] }))
},
resetLogs: () => {
set({ logs: [] })
},
}))