Gui scafolding toolbar, log console, axis for sketching
This commit is contained in:
@ -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: [] })
|
||||
},
|
||||
}))
|
||||
|
Reference in New Issue
Block a user