agent-Specialization/static/src/stores/input.ts

116 lines
3.0 KiB
TypeScript

import { defineStore } from 'pinia';
interface InputState {
inputMessage: string;
inputLineCount: number;
inputIsMultiline: boolean;
inputIsFocused: boolean;
quickMenuOpen: boolean;
toolMenuOpen: boolean;
settingsOpen: boolean;
imagePickerOpen: boolean;
selectedImages: string[];
videoPickerOpen: boolean;
selectedVideos: string[];
}
export const useInputStore = defineStore('input', {
state: (): InputState => ({
inputMessage: '',
inputLineCount: 1,
inputIsMultiline: false,
inputIsFocused: false,
quickMenuOpen: false,
toolMenuOpen: false,
settingsOpen: false,
imagePickerOpen: false,
selectedImages: [],
videoPickerOpen: false,
selectedVideos: []
}),
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;
},
setImagePickerOpen(open: boolean) {
this.imagePickerOpen = open;
},
setVideoPickerOpen(open: boolean) {
this.videoPickerOpen = open;
},
setSelectedImages(list: string[]) {
this.selectedImages = list.slice(0, 9);
},
addSelectedImage(path: string) {
if (!path) return;
const next = Array.from(new Set([...this.selectedImages, path]));
this.selectedImages = next.slice(0, 9);
},
removeSelectedImage(path: string) {
this.selectedImages = this.selectedImages.filter(item => item !== path);
},
clearSelectedImages() {
this.selectedImages = [];
},
setSelectedVideos(list: string[]) {
this.selectedVideos = list.slice(0, 1);
},
addSelectedVideo(path: string) {
if (!path) return;
this.selectedVideos = [path];
},
removeSelectedVideo(path: string) {
this.selectedVideos = this.selectedVideos.filter(item => item !== path);
},
clearSelectedVideos() {
this.selectedVideos = [];
}
}
});