75 lines
1.7 KiB
TypeScript
75 lines
1.7 KiB
TypeScript
import { defineStore } from 'pinia';
|
|
|
|
interface InputState {
|
|
inputMessage: string;
|
|
inputLineCount: number;
|
|
inputIsMultiline: boolean;
|
|
inputIsFocused: boolean;
|
|
quickMenuOpen: boolean;
|
|
toolMenuOpen: boolean;
|
|
settingsOpen: boolean;
|
|
}
|
|
|
|
export const useInputStore = defineStore('input', {
|
|
state: (): InputState => ({
|
|
inputMessage: '',
|
|
inputLineCount: 1,
|
|
inputIsMultiline: false,
|
|
inputIsFocused: false,
|
|
quickMenuOpen: false,
|
|
toolMenuOpen: false,
|
|
settingsOpen: false
|
|
}),
|
|
actions: {
|
|
setInputMessage(value: string) {
|
|
this.inputMessage = value;
|
|
},
|
|
clearInputMessage() {
|
|
this.inputMessage = '';
|
|
},
|
|
setInputLineCount(count: number) {
|
|
this.inputLineCount = count;
|
|
},
|
|
setInputMultiline(multiline: boolean) {
|
|
this.inputIsMultiline = multiline;
|
|
},
|
|
setInputFocused(focused: boolean) {
|
|
this.inputIsFocused = focused;
|
|
},
|
|
openQuickMenu() {
|
|
this.quickMenuOpen = true;
|
|
},
|
|
setQuickMenuOpen(open: boolean) {
|
|
this.quickMenuOpen = open;
|
|
if (!open) {
|
|
this.toolMenuOpen = false;
|
|
this.settingsOpen = false;
|
|
}
|
|
},
|
|
toggleQuickMenu() {
|
|
const next = !this.quickMenuOpen;
|
|
this.setQuickMenuOpen(next);
|
|
return next;
|
|
},
|
|
closeMenus() {
|
|
this.quickMenuOpen = false;
|
|
this.toolMenuOpen = false;
|
|
this.settingsOpen = false;
|
|
},
|
|
toggleToolMenu() {
|
|
this.toolMenuOpen = !this.toolMenuOpen;
|
|
return this.toolMenuOpen;
|
|
},
|
|
setToolMenuOpen(open: boolean) {
|
|
this.toolMenuOpen = open;
|
|
},
|
|
toggleSettingsMenu() {
|
|
this.settingsOpen = !this.settingsOpen;
|
|
return this.settingsOpen;
|
|
},
|
|
setSettingsOpen(open: boolean) {
|
|
this.settingsOpen = open;
|
|
}
|
|
}
|
|
});
|