forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat-state.ts
More file actions
42 lines (38 loc) · 1.26 KB
/
Copy pathchat-state.ts
File metadata and controls
42 lines (38 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import {
inject,
Injectable,
Signal,
signal,
WritableSignal,
} from "@angular/core";
import type { Attachment } from "@copilotkit/shared";
import type { Suggestion } from "@copilotkit/core";
@Injectable()
export abstract class ChatState {
abstract readonly inputValue: WritableSignal<string>;
readonly attachments = signal<Attachment[]>([]);
readonly attachmentsEnabled: Signal<boolean> = signal(false);
readonly attachmentsUploading: Signal<boolean> = signal(false);
readonly dragOver = signal(false);
readonly suggestions = signal<Suggestion[]>([]);
readonly suggestionsLoading = signal(false);
readonly isTranscribing = signal(false);
abstract submitInput(value: string): void;
abstract changeInput(value: string): void;
selectSuggestion(_suggestion: Suggestion, _index: number): void {}
finishTranscription(_audioBlob: Blob): void | Promise<void> {}
addFile(): void {}
removeAttachment(_id: string): void {}
handleDragOver(_event: DragEvent): void {}
handleDragLeave(_event: DragEvent): void {}
handleDrop(_event: DragEvent): void {}
}
export function injectChatState(): ChatState {
try {
return inject(ChatState);
} catch {
throw new Error(
"ChatState not found. A parent component must provide ChatState.",
);
}
}