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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| 'use client'
|
| import type { ReactNode } from 'react'
| import { createContext, useContext } from 'use-context-selector'
| import type { ChatProps } from './index'
|
| export type ChatContextValue = Pick<ChatProps, 'config'
| | 'isResponding'
| | 'chatList'
| | 'showPromptLog'
| | 'questionIcon'
| | 'answerIcon'
| | 'onSend'
| | 'onRegenerate'
| | 'onAnnotationEdited'
| | 'onAnnotationAdded'
| | 'onAnnotationRemoved'
| | 'onFeedback'
| >
|
| const ChatContext = createContext<ChatContextValue>({
| chatList: [],
| })
|
| type ChatContextProviderProps = {
| children: ReactNode
| } & ChatContextValue
|
| export const ChatContextProvider = ({
| children,
| config,
| isResponding,
| chatList,
| showPromptLog,
| questionIcon,
| answerIcon,
| onSend,
| onRegenerate,
| onAnnotationEdited,
| onAnnotationAdded,
| onAnnotationRemoved,
| onFeedback,
| }: ChatContextProviderProps) => {
| return (
| <ChatContext.Provider value={{
| config,
| isResponding,
| chatList: chatList || [],
| showPromptLog,
| questionIcon,
| answerIcon,
| onSend,
| onRegenerate,
| onAnnotationEdited,
| onAnnotationAdded,
| onAnnotationRemoved,
| onFeedback,
| }}>
| {children}
| </ChatContext.Provider>
| )
| }
|
| export const useChatContext = () => useContext(ChatContext)
|
| export default ChatContext
|
|