@stack-spot/ai-chat-widget 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/StackspotAIWidget.d.ts +20 -0
- package/dist/StackspotAIWidget.d.ts.map +1 -1
- package/dist/StackspotAIWidget.js +7 -3
- package/dist/StackspotAIWidget.js.map +1 -1
- package/dist/chat-interceptors/CustomInputs.d.ts +4 -1
- package/dist/chat-interceptors/CustomInputs.d.ts.map +1 -1
- package/dist/chat-interceptors/CustomInputs.js +10 -1
- package/dist/chat-interceptors/CustomInputs.js.map +1 -1
- package/dist/chat-interceptors/quick-command-questions.d.ts +10 -0
- package/dist/chat-interceptors/quick-command-questions.d.ts.map +1 -1
- package/dist/chat-interceptors/quick-command-questions.js +12 -2
- package/dist/chat-interceptors/quick-command-questions.js.map +1 -1
- package/dist/chat-interceptors/quick-commands.d.ts +11 -0
- package/dist/chat-interceptors/quick-commands.d.ts.map +1 -1
- package/dist/chat-interceptors/quick-commands.js +42 -3
- package/dist/chat-interceptors/quick-commands.js.map +1 -1
- package/dist/chat-interceptors/send-message.d.ts +10 -0
- package/dist/chat-interceptors/send-message.d.ts.map +1 -1
- package/dist/chat-interceptors/send-message.js +18 -0
- package/dist/chat-interceptors/send-message.js.map +1 -1
- package/dist/components/Accordion.d.ts +10 -0
- package/dist/components/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion.js +3 -0
- package/dist/components/Accordion.js.map +1 -1
- package/dist/components/AdaptiveTextArea.d.ts +12 -0
- package/dist/components/AdaptiveTextArea.d.ts.map +1 -1
- package/dist/components/AdaptiveTextArea.js +3 -0
- package/dist/components/AdaptiveTextArea.js.map +1 -1
- package/dist/components/AutoFocus.d.ts +17 -0
- package/dist/components/AutoFocus.d.ts.map +1 -1
- package/dist/components/AutoFocus.js +6 -5
- package/dist/components/AutoFocus.js.map +1 -1
- package/dist/components/Fading.d.ts +19 -2
- package/dist/components/Fading.d.ts.map +1 -1
- package/dist/components/Fading.js +6 -4
- package/dist/components/Fading.js.map +1 -1
- package/dist/components/FadingOverflow.d.ts +25 -0
- package/dist/components/FadingOverflow.d.ts.map +1 -1
- package/dist/components/FadingOverflow.js +11 -2
- package/dist/components/FadingOverflow.js.map +1 -1
- package/dist/components/FallbackBoundary/index.d.ts +6 -0
- package/dist/components/FallbackBoundary/index.d.ts.map +1 -1
- package/dist/components/FallbackBoundary/index.js.map +1 -1
- package/dist/components/HistoryList.d.ts +15 -0
- package/dist/components/HistoryList.d.ts.map +1 -1
- package/dist/components/HistoryList.js +3 -1
- package/dist/components/HistoryList.js.map +1 -1
- package/dist/components/IconInput.d.ts +3 -0
- package/dist/components/IconInput.d.ts.map +1 -1
- package/dist/components/IconInput.js +3 -0
- package/dist/components/IconInput.js.map +1 -1
- package/dist/components/OverlayMenu.d.ts +11 -0
- package/dist/components/OverlayMenu.d.ts.map +1 -1
- package/dist/components/OverlayMenu.js +5 -1
- package/dist/components/OverlayMenu.js.map +1 -1
- package/dist/components/ProgressBar.d.ts +22 -0
- package/dist/components/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar.js +5 -0
- package/dist/components/ProgressBar.js.map +1 -1
- package/dist/components/QuickStartButton.d.ts.map +1 -1
- package/dist/components/QuickStartButton.js +3 -0
- package/dist/components/QuickStartButton.js.map +1 -1
- package/dist/components/RightPanelForm.d.ts +3 -0
- package/dist/components/RightPanelForm.d.ts.map +1 -1
- package/dist/components/RightPanelForm.js +3 -0
- package/dist/components/RightPanelForm.js.map +1 -1
- package/dist/components/RightPanelTabs.d.ts +3 -0
- package/dist/components/RightPanelTabs.d.ts.map +1 -1
- package/dist/components/RightPanelTabs.js +3 -0
- package/dist/components/RightPanelTabs.js.map +1 -1
- package/dist/components/TabManager.d.ts +6 -0
- package/dist/components/TabManager.d.ts.map +1 -1
- package/dist/components/TabManager.js +8 -0
- package/dist/components/TabManager.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +23 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +4 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/TooltipAPI.d.ts +16 -0
- package/dist/components/Tooltip/TooltipAPI.d.ts.map +1 -1
- package/dist/components/Tooltip/TooltipAPI.js +17 -0
- package/dist/components/Tooltip/TooltipAPI.js.map +1 -1
- package/dist/components/Tooltip/types.d.ts +13 -0
- package/dist/components/Tooltip/types.d.ts.map +1 -1
- package/dist/components/form/DescribedCheckboxGroup.d.ts +4 -0
- package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -1
- package/dist/components/form/DescribedCheckboxGroup.js +4 -0
- package/dist/components/form/DescribedCheckboxGroup.js.map +1 -1
- package/dist/components/form/DescribedRadioGroup.d.ts +4 -0
- package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -1
- package/dist/components/form/DescribedRadioGroup.js +4 -0
- package/dist/components/form/DescribedRadioGroup.js.map +1 -1
- package/dist/components/form/types.d.ts +34 -0
- package/dist/components/form/types.d.ts.map +1 -1
- package/dist/context/AIWidgetProvider.d.ts +19 -0
- package/dist/context/AIWidgetProvider.d.ts.map +1 -1
- package/dist/context/AIWidgetProvider.js +19 -0
- package/dist/context/AIWidgetProvider.js.map +1 -1
- package/dist/context/hooks.d.ts +56 -0
- package/dist/context/hooks.d.ts.map +1 -1
- package/dist/context/hooks.js +56 -1
- package/dist/context/hooks.js.map +1 -1
- package/dist/features.d.ts +28 -0
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +1 -0
- package/dist/features.js.map +1 -1
- package/dist/right-panel/DefaultPanel.d.ts +3 -0
- package/dist/right-panel/DefaultPanel.d.ts.map +1 -1
- package/dist/right-panel/DefaultPanel.js +4 -3
- package/dist/right-panel/DefaultPanel.js.map +1 -1
- package/dist/right-panel/RightPanel.d.ts +3 -0
- package/dist/right-panel/RightPanel.d.ts.map +1 -1
- package/dist/right-panel/RightPanel.js +3 -0
- package/dist/right-panel/RightPanel.js.map +1 -1
- package/dist/right-panel/RightPanelProvider.d.ts +15 -0
- package/dist/right-panel/RightPanelProvider.d.ts.map +1 -1
- package/dist/right-panel/RightPanelProvider.js.map +1 -1
- package/dist/right-panel/hooks.d.ts +6 -0
- package/dist/right-panel/hooks.d.ts.map +1 -1
- package/dist/right-panel/hooks.js +6 -0
- package/dist/right-panel/hooks.js.map +1 -1
- package/dist/state/ChatEntry.d.ts +58 -2
- package/dist/state/ChatEntry.d.ts.map +1 -1
- package/dist/state/ChatEntry.js +20 -1
- package/dist/state/ChatEntry.js.map +1 -1
- package/dist/state/ChatState.d.ts +73 -8
- package/dist/state/ChatState.d.ts.map +1 -1
- package/dist/state/ChatState.js +24 -7
- package/dist/state/ChatState.js.map +1 -1
- package/dist/state/ChatTabsController.d.ts +31 -0
- package/dist/state/ChatTabsController.d.ts.map +1 -1
- package/dist/state/ChatTabsController.js +31 -0
- package/dist/state/ChatTabsController.js.map +1 -1
- package/dist/state/ObservableState.d.ts +14 -0
- package/dist/state/ObservableState.d.ts.map +1 -1
- package/dist/state/ObservableState.js +14 -0
- package/dist/state/ObservableState.js.map +1 -1
- package/dist/state/WidgetState.d.ts +5 -0
- package/dist/state/WidgetState.d.ts.map +1 -1
- package/dist/state/WidgetState.js +5 -0
- package/dist/state/WidgetState.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/chat.d.ts +13 -0
- package/dist/utils/chat.d.ts.map +1 -1
- package/dist/utils/chat.js +14 -0
- package/dist/utils/chat.js.map +1 -1
- package/dist/utils/date.d.ts +25 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +25 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/download.d.ts +5 -0
- package/dist/utils/download.d.ts.map +1 -1
- package/dist/utils/download.js +5 -0
- package/dist/utils/download.js.map +1 -1
- package/dist/utils/knowledge-source.d.ts +10 -0
- package/dist/utils/knowledge-source.d.ts.map +1 -1
- package/dist/utils/knowledge-source.js +16 -0
- package/dist/utils/knowledge-source.js.map +1 -1
- package/dist/utils/string.d.ts +5 -0
- package/dist/utils/string.d.ts.map +1 -1
- package/dist/utils/string.js +5 -1
- package/dist/utils/string.js.map +1 -1
- package/dist/views/Agents.js +3 -0
- package/dist/views/Agents.js.map +1 -1
- package/dist/views/Chat/AgentInfo.d.ts +3 -0
- package/dist/views/Chat/AgentInfo.d.ts.map +1 -1
- package/dist/views/Chat/AgentInfo.js +3 -0
- package/dist/views/Chat/AgentInfo.js.map +1 -1
- package/dist/views/Chat/ChatMessage.d.ts +17 -2
- package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
- package/dist/views/Chat/ChatMessage.js +6 -32
- package/dist/views/Chat/ChatMessage.js.map +1 -1
- package/dist/views/Chat/ChatMessages.d.ts +3 -0
- package/dist/views/Chat/ChatMessages.d.ts.map +1 -1
- package/dist/views/Chat/ChatMessages.js +3 -0
- package/dist/views/Chat/ChatMessages.js.map +1 -1
- package/dist/views/Chat/chat-scroll.d.ts +1 -1
- package/dist/views/Chat/chat-scroll.js +1 -1
- package/dist/views/Chat/events.d.ts +22 -0
- package/dist/views/Chat/events.d.ts.map +1 -0
- package/dist/views/Chat/events.js +66 -0
- package/dist/views/Chat/events.js.map +1 -0
- package/dist/views/Chat/index.d.ts +6 -0
- package/dist/views/Chat/index.d.ts.map +1 -1
- package/dist/views/Chat/index.js +3 -0
- package/dist/views/Chat/index.js.map +1 -1
- package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +3 -0
- package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +1 -1
- package/dist/views/ChatHistory/ChatHistoryPanel.js +3 -0
- package/dist/views/ChatHistory/ChatHistoryPanel.js.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.d.ts +3 -0
- package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.js +3 -0
- package/dist/views/ChatHistory/HistoryItem.js.map +1 -1
- package/dist/views/ChatHistory/index.d.ts +10 -2
- package/dist/views/ChatHistory/index.d.ts.map +1 -1
- package/dist/views/ChatHistory/index.js +3 -0
- package/dist/views/ChatHistory/index.js.map +1 -1
- package/dist/views/ChatHistory/utils.d.ts +14 -0
- package/dist/views/ChatHistory/utils.d.ts.map +1 -1
- package/dist/views/ChatHistory/utils.js +14 -0
- package/dist/views/ChatHistory/utils.js.map +1 -1
- package/dist/views/ChatTabSelection.d.ts +3 -0
- package/dist/views/ChatTabSelection.d.ts.map +1 -1
- package/dist/views/ChatTabSelection.js +3 -0
- package/dist/views/ChatTabSelection.js.map +1 -1
- package/dist/views/Editor.d.ts +3 -0
- package/dist/views/Editor.d.ts.map +1 -1
- package/dist/views/Editor.js +4 -0
- package/dist/views/Editor.js.map +1 -1
- package/dist/views/Home.d.ts +8 -0
- package/dist/views/Home.d.ts.map +1 -1
- package/dist/views/Home.js +5 -0
- package/dist/views/Home.js.map +1 -1
- package/dist/views/KSDocument.d.ts +3 -0
- package/dist/views/KSDocument.d.ts.map +1 -1
- package/dist/views/KSDocument.js +3 -0
- package/dist/views/KSDocument.js.map +1 -1
- package/dist/views/KnowledgeSources.js +3 -0
- package/dist/views/KnowledgeSources.js.map +1 -1
- package/dist/views/MessageInput/ButtonGroup.d.ts +22 -0
- package/dist/views/MessageInput/ButtonGroup.d.ts.map +1 -1
- package/dist/views/MessageInput/ButtonGroup.js +4 -0
- package/dist/views/MessageInput/ButtonGroup.js.map +1 -1
- package/dist/views/MessageInput/InfoBar.d.ts +7 -0
- package/dist/views/MessageInput/InfoBar.d.ts.map +1 -1
- package/dist/views/MessageInput/InfoBar.js +7 -0
- package/dist/views/MessageInput/InfoBar.js.map +1 -1
- package/dist/views/MessageInput/QuickCommandSelector.d.ts +7 -0
- package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +1 -1
- package/dist/views/MessageInput/QuickCommandSelector.js +4 -0
- package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -1
- package/dist/views/MessageInput/index.d.ts +8 -0
- package/dist/views/MessageInput/index.d.ts.map +1 -1
- package/dist/views/MessageInput/index.js +5 -0
- package/dist/views/MessageInput/index.js.map +1 -1
- package/dist/views/MinimizedHeader.d.ts +4 -0
- package/dist/views/MinimizedHeader.d.ts.map +1 -1
- package/dist/views/MinimizedHeader.js +4 -0
- package/dist/views/MinimizedHeader.js.map +1 -1
- package/dist/views/Stacks.d.ts +3 -0
- package/dist/views/Stacks.d.ts.map +1 -1
- package/dist/views/Stacks.js +3 -0
- package/dist/views/Stacks.js.map +1 -1
- package/dist/views/Workspaces.d.ts +3 -0
- package/dist/views/Workspaces.d.ts.map +1 -1
- package/dist/views/Workspaces.js +3 -0
- package/dist/views/Workspaces.js.map +1 -1
- package/package.json +6 -6
- package/src/StackspotAIWidget.tsx +23 -2
- package/src/chat-interceptors/CustomInputs.ts +14 -1
- package/src/chat-interceptors/quick-command-questions.ts +12 -2
- package/src/chat-interceptors/quick-commands.ts +42 -3
- package/src/chat-interceptors/send-message.ts +18 -0
- package/src/components/Accordion.tsx +10 -0
- package/src/components/AdaptiveTextArea.tsx +12 -0
- package/src/components/AutoFocus.tsx +19 -5
- package/src/components/Fading.tsx +25 -5
- package/src/components/FadingOverflow.tsx +31 -3
- package/src/components/FallbackBoundary/index.tsx +6 -0
- package/src/components/HistoryList.tsx +15 -1
- package/src/components/IconInput.tsx +3 -0
- package/src/components/OverlayMenu.tsx +17 -1
- package/src/components/ProgressBar.tsx +23 -0
- package/src/components/QuickStartButton.tsx +3 -0
- package/src/components/RightPanelForm.tsx +3 -0
- package/src/components/RightPanelTabs.tsx +3 -0
- package/src/components/TabManager.tsx +8 -0
- package/src/components/Tooltip/Tooltip.tsx +23 -0
- package/src/components/Tooltip/TooltipAPI.ts +17 -0
- package/src/components/Tooltip/types.ts +13 -0
- package/src/components/form/DescribedCheckboxGroup.tsx +4 -0
- package/src/components/form/DescribedRadioGroup.tsx +4 -0
- package/src/components/form/types.ts +34 -0
- package/src/context/AIWidgetProvider.tsx +19 -0
- package/src/context/hooks.ts +56 -1
- package/src/features.ts +29 -0
- package/src/right-panel/DefaultPanel.tsx +12 -13
- package/src/right-panel/RightPanel.tsx +3 -0
- package/src/right-panel/RightPanelProvider.tsx +15 -0
- package/src/right-panel/hooks.tsx +6 -0
- package/src/state/ChatEntry.ts +60 -2
- package/src/state/ChatState.ts +74 -9
- package/src/state/ChatTabsController.ts +31 -0
- package/src/state/ObservableState.ts +14 -0
- package/src/state/WidgetState.ts +5 -0
- package/src/types.ts +10 -0
- package/src/utils/chat.ts +14 -0
- package/src/utils/date.ts +25 -1
- package/src/utils/download.ts +5 -0
- package/src/utils/knowledge-source.ts +16 -0
- package/src/utils/string.ts +5 -1
- package/src/views/Agents.tsx +3 -0
- package/src/views/Chat/AgentInfo.tsx +3 -0
- package/src/views/Chat/ChatMessage.tsx +21 -32
- package/src/views/Chat/ChatMessages.tsx +3 -0
- package/src/views/Chat/chat-scroll.ts +1 -1
- package/src/views/Chat/events.ts +69 -0
- package/src/views/Chat/index.tsx +6 -0
- package/src/views/ChatHistory/ChatHistoryPanel.tsx +3 -0
- package/src/views/ChatHistory/HistoryItem.tsx +3 -0
- package/src/views/ChatHistory/index.tsx +11 -1
- package/src/views/ChatHistory/utils.ts +14 -0
- package/src/views/ChatTabSelection.tsx +3 -0
- package/src/views/Editor.tsx +4 -0
- package/src/views/Home.tsx +8 -0
- package/src/views/KSDocument.tsx +3 -0
- package/src/views/KnowledgeSources.tsx +3 -0
- package/src/views/MessageInput/ButtonGroup.tsx +22 -0
- package/src/views/MessageInput/InfoBar.tsx +7 -0
- package/src/views/MessageInput/QuickCommandSelector.tsx +7 -0
- package/src/views/MessageInput/index.tsx +8 -0
- package/src/views/MinimizedHeader.tsx +4 -0
- package/src/views/Stacks.tsx +3 -0
- package/src/views/Workspaces.tsx +3 -0
package/dist/features.d.ts
CHANGED
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
export interface MessageInputFeatures {
|
|
2
|
+
/**
|
|
3
|
+
* Enables stack selection.
|
|
4
|
+
* @default true
|
|
5
|
+
*/
|
|
2
6
|
stack?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Enables workspace selection.
|
|
9
|
+
* @default true
|
|
10
|
+
*/
|
|
3
11
|
workspace?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Enables knowledge source selection.
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
4
16
|
knowledgeSource?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Enables agent selection.
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
5
21
|
agent?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Enables quick commands.
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
6
26
|
quickCommands?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Enables the editor.
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
7
31
|
editor?: boolean;
|
|
8
32
|
}
|
|
9
33
|
export interface AIWidgetFeatures extends MessageInputFeatures {
|
|
34
|
+
/**
|
|
35
|
+
* Enables the chat history.
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
10
38
|
chatHistory?: boolean;
|
|
11
39
|
}
|
|
12
40
|
export declare const defaultFeatures: AIWidgetFeatures;
|
package/dist/features.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,gBAQ7B,CAAA"}
|
package/dist/features.js
CHANGED
package/dist/features.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;CACpB,CAAA"}
|
|
@@ -4,6 +4,9 @@ interface Props extends WithChildren {
|
|
|
4
4
|
description: React.ReactNode;
|
|
5
5
|
onClose: () => void;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Default layout for a right panel.
|
|
9
|
+
*/
|
|
7
10
|
export declare const DefaultPanel: ({ description, onClose, title, children }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
8
11
|
export {};
|
|
9
12
|
//# sourceMappingURL=DefaultPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,UAAU,KAAM,SAAQ,YAAY;IAClC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA+BD;;GAEG;AACH,eAAO,MAAM,YAAY,8CAA+C,KAAK,4CAiB5E,CAAA"}
|
|
@@ -4,8 +4,6 @@ import { Times } from '@citric/icons';
|
|
|
4
4
|
import { IconButton } from '@citric/ui';
|
|
5
5
|
import { useTranslate } from '@stack-spot/portal-translate';
|
|
6
6
|
import { styled } from 'styled-components';
|
|
7
|
-
import { AutoFocus } from '../components/AutoFocus.js';
|
|
8
|
-
import { panelAnimationTime } from './constants.js';
|
|
9
7
|
const PanelBox = styled.div `
|
|
10
8
|
padding: 25px;
|
|
11
9
|
display: flex;
|
|
@@ -34,9 +32,12 @@ const PanelBox = styled.div `
|
|
|
34
32
|
overflow: auto;
|
|
35
33
|
}
|
|
36
34
|
`;
|
|
35
|
+
/**
|
|
36
|
+
* Default layout for a right panel.
|
|
37
|
+
*/
|
|
37
38
|
export const DefaultPanel = ({ description, onClose, title, children }) => {
|
|
38
39
|
const t = useTranslate(dictionary);
|
|
39
|
-
return (_jsxs(PanelBox, { children: [
|
|
40
|
+
return (_jsxs(PanelBox, { children: [_jsxs("header", { children: [_jsxs("div", { className: "title", children: [typeof title === 'string' ? _jsx(Text, { appearance: "h5", children: title }) : title, typeof description === 'string' ? _jsx(Text, { colorScheme: "light.700", children: description }) : description] }), _jsx(IconButton, { title: t.close, "aria-label": t.close, onClick: onClose, children: _jsx(Times, {}) })] }), _jsx("article", { children: children })] }));
|
|
40
41
|
};
|
|
41
42
|
const dictionary = {
|
|
42
43
|
en: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPanel.js","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"DefaultPanel.js","sourceRoot":"","sources":["../../src/right-panel/DefaultPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1B,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/E,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAElC,OAAO,CACL,MAAC,QAAQ,eACP,6BACE,eAAK,SAAS,EAAC,OAAO,aACnB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,UAAU,EAAC,IAAI,YAAE,KAAK,GAAQ,CAAC,CAAC,CAAC,KAAK,EACxE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,WAAW,EAAC,WAAW,YAAE,WAAW,GAAQ,CAAC,CAAC,CAAC,WAAW,IAC/F,EACN,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,gBAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,YAC/D,KAAC,KAAK,KAAG,GACE,IACN,EACT,4BAAU,QAAQ,GAAW,IACpB,CACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,OAAO;KACf;IACD,EAAE,EAAE;QACF,KAAK,EAAE,QAAQ;KAChB;CACmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,iCAGtB,CAAA"}
|
|
1
|
+
{"version":3,"file":"RightPanel.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,UAAU,iCAGtB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","sourceRoot":"","sources":["../../src/right-panel/RightPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
interface ContextValue {
|
|
2
|
+
/**
|
|
3
|
+
* The current content of the right panel.
|
|
4
|
+
*/
|
|
2
5
|
content?: React.ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Sets the current content of the right panel.
|
|
8
|
+
*/
|
|
3
9
|
setContent?: (content: React.ReactNode) => void;
|
|
10
|
+
/**
|
|
11
|
+
* A reference to the right panel HTML Element.
|
|
12
|
+
*/
|
|
4
13
|
panel?: React.RefObject<HTMLDivElement>;
|
|
14
|
+
/**
|
|
15
|
+
* A reference to the chat window at the left of the right panel.
|
|
16
|
+
*/
|
|
5
17
|
chatWindow?: React.RefObject<HTMLDivElement>;
|
|
18
|
+
/**
|
|
19
|
+
* A function to run when the right panel is closed for the next time.
|
|
20
|
+
*/
|
|
6
21
|
onCloseNext: React.MutableRefObject<(() => void) | undefined>;
|
|
7
22
|
}
|
|
8
23
|
export declare const RightPanelContext: import("react").Context<ContextValue>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanelProvider.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,iBAAiB,uCAAuE,CAAA;AAErG,eAAO,MAAM,kBAAkB,oCACI,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAM5G,CAAA"}
|
|
1
|
+
{"version":3,"file":"RightPanelProvider.d.ts","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,iBAAiB,uCAAuE,CAAA;AAErG,eAAO,MAAM,kBAAkB,oCACI,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAM5G,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanelProvider.js","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"RightPanelProvider.js","sourceRoot":"","sources":["../../src/right-panel/RightPanelProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAyBhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAe,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAErG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAA8E,EAC3G,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAmB,CAAA;IACzD,MAAM,WAAW,GAAG,MAAM,EAA4B,CAAA;IACtD,MAAM,KAAK,GAAG,OAAO,CAAe,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;IAClI,OAAO,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA8B,CAAA;AAC1F,CAAC,CAAA"}
|
|
@@ -3,7 +3,13 @@ interface RightPanelOptions {
|
|
|
3
3
|
description: React.ReactNode;
|
|
4
4
|
onClose?: () => void;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* @returns teh current content of the right panel
|
|
8
|
+
*/
|
|
6
9
|
export declare function useRightPanelContent(): import("react").ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Opens, closes or checks the visibility of the right panel.
|
|
12
|
+
*/
|
|
7
13
|
export declare function useRightPanel(): {
|
|
8
14
|
open: (content: React.ReactNode, options?: RightPanelOptions) => void;
|
|
9
15
|
close: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,oBAAoB,8BAGnC;AAED,wBAAgB,aAAa;oBAOF,KAAK,CAAC,SAAS,YAAY,iBAAiB;;;EAwBtE"}
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,8BAGnC;AAED;;GAEG;AACH,wBAAgB,aAAa;oBAOF,KAAK,CAAC,SAAS,YAAY,iBAAiB;;;EAwBtE"}
|
|
@@ -3,10 +3,16 @@ import { useContext, useMemo } from 'react';
|
|
|
3
3
|
import { DefaultPanel } from './DefaultPanel.js';
|
|
4
4
|
import { RightPanelContext } from './RightPanelProvider.js';
|
|
5
5
|
import { panelAnimationTime } from './constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* @returns teh current content of the right panel
|
|
8
|
+
*/
|
|
6
9
|
export function useRightPanelContent() {
|
|
7
10
|
const { content } = useContext(RightPanelContext);
|
|
8
11
|
return content;
|
|
9
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Opens, closes or checks the visibility of the right panel.
|
|
15
|
+
*/
|
|
10
16
|
export function useRightPanel() {
|
|
11
17
|
const ctx = useContext(RightPanelContext);
|
|
12
18
|
const { panel, chatWindow, setContent } = ctx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAQhD,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACjD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAE7C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAEhE,SAAS,IAAI,CAAC,OAAwB,EAAE,OAA2B;YACjE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,OAAK,OAAO,EAAE,OAAO,EAAE,KAAK,YAAG,OAAO,GAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;QAC5C,CAAC;QAED,SAAS,KAAK;YACZ,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAA;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACxB,CAAC;QAED,SAAS,MAAM;YACb,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAChC,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/right-panel/hooks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAQhD;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACjD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAE7C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAEhE,SAAS,IAAI,CAAC,OAAwB,EAAE,OAA2B;YACjE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,YAAY,OAAK,OAAO,EAAE,OAAO,EAAE,KAAK,YAAG,OAAO,GAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACnG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAA;QAC5C,CAAC;QAED,SAAS,KAAK;YACZ,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU;gBAAE,OAAM;YAClE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAA;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACxB,CAAC;QAED,SAAS,MAAM;YACb,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAChC,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { ColorPaletteName } from '@stack-spot/portal-theme';
|
|
2
2
|
import { LabeledWithImage } from './types.js';
|
|
3
3
|
export interface SerializableAction {
|
|
4
|
+
/**
|
|
5
|
+
* The text for the button or anchor.
|
|
6
|
+
*/
|
|
4
7
|
title: string;
|
|
8
|
+
/**
|
|
9
|
+
* Links open new tabs with urls, while commands send text commands in the chat as if they were written by the user.
|
|
10
|
+
*/
|
|
5
11
|
type: 'link' | 'command';
|
|
6
12
|
/**
|
|
7
|
-
* The URL if the action is a link
|
|
13
|
+
* The URL if the action is a link. The content of the user message otherwise.
|
|
8
14
|
*/
|
|
9
15
|
exec: string;
|
|
10
16
|
}
|
|
@@ -21,35 +27,85 @@ export interface KnowledgeSource {
|
|
|
21
27
|
documentId: string;
|
|
22
28
|
}
|
|
23
29
|
export interface TextChatEntry {
|
|
30
|
+
/**
|
|
31
|
+
* "text" for simple unformatted paragraphs. "md" for markdown.
|
|
32
|
+
*/
|
|
24
33
|
type: 'text' | 'md';
|
|
34
|
+
/**
|
|
35
|
+
* If the message was typed by the AI agent (bot), the user or the system (not currently in use).
|
|
36
|
+
*/
|
|
25
37
|
agentType: 'bot' | 'user' | 'system';
|
|
38
|
+
/**
|
|
39
|
+
* A set of buttons to go after the message.
|
|
40
|
+
*/
|
|
26
41
|
actions?: ChatAction[];
|
|
42
|
+
/**
|
|
43
|
+
* The content of the message.
|
|
44
|
+
*/
|
|
27
45
|
content: string;
|
|
46
|
+
/**
|
|
47
|
+
* The knowledge sources used to create the message.
|
|
48
|
+
*/
|
|
28
49
|
knowledgeSources?: KnowledgeSource[];
|
|
50
|
+
/**
|
|
51
|
+
* The date and time of the message. ISO string.
|
|
52
|
+
*/
|
|
29
53
|
updated?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The agent who wrote the message. Undefined for the default agent or if the agentType is "user".
|
|
56
|
+
*/
|
|
30
57
|
agent?: LabeledWithImage;
|
|
58
|
+
/**
|
|
59
|
+
* The unique identifier of the message.
|
|
60
|
+
*/
|
|
31
61
|
messageId?: string;
|
|
62
|
+
/**
|
|
63
|
+
* If this is set, only an error message is rendered.
|
|
64
|
+
*/
|
|
32
65
|
error?: string;
|
|
66
|
+
/**
|
|
67
|
+
* A series of badges to display before the content.
|
|
68
|
+
*/
|
|
33
69
|
badges?: {
|
|
34
70
|
color?: ColorPaletteName;
|
|
35
71
|
label: string;
|
|
36
72
|
}[];
|
|
73
|
+
/**
|
|
74
|
+
* Whether or not to show this chat entry as a card.
|
|
75
|
+
*/
|
|
37
76
|
card?: boolean;
|
|
38
77
|
}
|
|
39
78
|
type ChatEntryListener = (value: TextChatEntry) => void;
|
|
79
|
+
/**
|
|
80
|
+
* A message (entry) in the chat.
|
|
81
|
+
*/
|
|
40
82
|
export declare class ChatEntry {
|
|
41
83
|
readonly id: number;
|
|
42
84
|
private value;
|
|
43
85
|
private listeners;
|
|
44
86
|
/**
|
|
45
87
|
* @param value the value of the entry.
|
|
46
|
-
* @param isStreamed whether or not this entry is streamed. Defaults to false.
|
|
47
88
|
*/
|
|
48
89
|
constructor(value: TextChatEntry);
|
|
90
|
+
/**
|
|
91
|
+
* Utility function to create a user entry.
|
|
92
|
+
* @param content the message's content.
|
|
93
|
+
* @param isMd whether or not this should be rendered as markdown.
|
|
94
|
+
* @returns a new ChatEntry.
|
|
95
|
+
*/
|
|
49
96
|
static createUserEntry(content: string, isMd?: boolean): ChatEntry;
|
|
97
|
+
/**
|
|
98
|
+
* Utility function to create a streamed entry from the AI agent.
|
|
99
|
+
* @returns a new ChatEntry.
|
|
100
|
+
*/
|
|
50
101
|
static createStreamedBotEntry(): ChatEntry;
|
|
51
102
|
setValue(value: TextChatEntry): void;
|
|
52
103
|
getValue(): TextChatEntry;
|
|
104
|
+
/**
|
|
105
|
+
* Watches the value of this ChatEntry.
|
|
106
|
+
* @param listener a function to call whenever the value changes.
|
|
107
|
+
* @returns a function that removes the listener.
|
|
108
|
+
*/
|
|
53
109
|
onChange(listener: ChatEntryListener): () => void;
|
|
54
110
|
}
|
|
55
111
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatEntry.d.ts","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatEntry.d.ts","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAMvD;;GAEG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAA0B;IAE3C;;OAEG;gBACS,KAAK,EAAE,aAAa;IAKhC;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,UAAQ;IASpD;;;OAGG;IACH,MAAM,CAAC,sBAAsB;IAI7B,QAAQ,CAAC,KAAK,EAAE,aAAa;IAK7B,QAAQ;IAIR;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;CAMrC"}
|
package/dist/state/ChatEntry.js
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import { pull } from 'lodash';
|
|
2
|
+
// this id is unique for each message and used for rendering. The `messageId`, which comes from the backend, is not always available and,
|
|
3
|
+
// therefore, can't be used for this purpose.
|
|
2
4
|
let nextId = 0;
|
|
5
|
+
/**
|
|
6
|
+
* A message (entry) in the chat.
|
|
7
|
+
*/
|
|
3
8
|
export class ChatEntry {
|
|
4
9
|
id;
|
|
5
10
|
value;
|
|
6
11
|
listeners = [];
|
|
7
12
|
/**
|
|
8
13
|
* @param value the value of the entry.
|
|
9
|
-
* @param isStreamed whether or not this entry is streamed. Defaults to false.
|
|
10
14
|
*/
|
|
11
15
|
constructor(value) {
|
|
12
16
|
this.id = nextId++;
|
|
13
17
|
this.value = value;
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Utility function to create a user entry.
|
|
21
|
+
* @param content the message's content.
|
|
22
|
+
* @param isMd whether or not this should be rendered as markdown.
|
|
23
|
+
* @returns a new ChatEntry.
|
|
24
|
+
*/
|
|
15
25
|
static createUserEntry(content, isMd = false) {
|
|
16
26
|
return new ChatEntry({
|
|
17
27
|
agentType: 'user',
|
|
@@ -20,6 +30,10 @@ export class ChatEntry {
|
|
|
20
30
|
updated: new Date().toISOString(),
|
|
21
31
|
});
|
|
22
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Utility function to create a streamed entry from the AI agent.
|
|
35
|
+
* @returns a new ChatEntry.
|
|
36
|
+
*/
|
|
23
37
|
static createStreamedBotEntry() {
|
|
24
38
|
return new ChatEntry({ agentType: 'bot', type: 'md', content: '' });
|
|
25
39
|
}
|
|
@@ -30,6 +44,11 @@ export class ChatEntry {
|
|
|
30
44
|
getValue() {
|
|
31
45
|
return this.value;
|
|
32
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Watches the value of this ChatEntry.
|
|
49
|
+
* @param listener a function to call whenever the value changes.
|
|
50
|
+
* @returns a function that removes the listener.
|
|
51
|
+
*/
|
|
33
52
|
onChange(listener) {
|
|
34
53
|
this.listeners.push(listener);
|
|
35
54
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatEntry.js","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatEntry.js","sourceRoot":"","sources":["../../src/state/ChatEntry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAiF7B,0IAA0I;AAC1I,6CAA6C;AAC7C,IAAI,MAAM,GAAG,CAAC,CAAA;AAEd;;GAEG;AACH,MAAM,OAAO,SAAS;IACX,EAAE,CAAQ;IACX,KAAK,CAAe;IACpB,SAAS,GAAwB,EAAE,CAAA;IAE3C;;OAEG;IACH,YAAY,KAAoB;QAC9B,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAClD,OAAO,IAAI,SAAS,CAAC;YACnB,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAC1B,OAAO;YACP,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,QAAQ,CAAC,KAAoB;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -2,14 +2,35 @@ import { ChatEntry } from './ChatEntry.js';
|
|
|
2
2
|
import { ObservableState } from './ObservableState.js';
|
|
3
3
|
import { Labeled, LabeledWithImage } from './types.js';
|
|
4
4
|
export interface ChatProperties {
|
|
5
|
+
/**
|
|
6
|
+
* The name of the chat.
|
|
7
|
+
*/
|
|
5
8
|
label: string;
|
|
9
|
+
/**
|
|
10
|
+
* The current AI agent.
|
|
11
|
+
*/
|
|
6
12
|
agent?: LabeledWithImage & {
|
|
7
13
|
builtIn: boolean;
|
|
8
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* The current workspace.
|
|
17
|
+
*/
|
|
9
18
|
workspace?: Labeled;
|
|
19
|
+
/**
|
|
20
|
+
* The current stack.
|
|
21
|
+
*/
|
|
10
22
|
stack?: Labeled;
|
|
23
|
+
/**
|
|
24
|
+
* The current knowledge sources.
|
|
25
|
+
*/
|
|
11
26
|
knowledgeSources?: Labeled[];
|
|
27
|
+
/**
|
|
28
|
+
* Whether or not the chat is in a loading state.
|
|
29
|
+
*/
|
|
12
30
|
isLoading?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* The value of the next message. This is the value of the text typed in the textarea below the chat.
|
|
33
|
+
*/
|
|
13
34
|
nextMessage?: string;
|
|
14
35
|
/**
|
|
15
36
|
* The current code in the editor.
|
|
@@ -20,39 +41,83 @@ export interface ChatProperties {
|
|
|
20
41
|
*/
|
|
21
42
|
codeLanguage?: string;
|
|
22
43
|
/**
|
|
23
|
-
* The current selection in the editor
|
|
44
|
+
* The current selection in the editor.
|
|
24
45
|
*/
|
|
25
46
|
codeSelection?: string;
|
|
26
47
|
}
|
|
27
48
|
type ChatMessagesListener = (chat: ChatEntry[]) => void;
|
|
28
49
|
export type MessageInterceptor = (entry: ChatEntry, chat: ChatState, signal: AbortSignal) => boolean | undefined | void | Promise<boolean | undefined | void>;
|
|
29
50
|
interface Options {
|
|
51
|
+
/**
|
|
52
|
+
* The unique identifier for this chat (conversationId).
|
|
53
|
+
*/
|
|
30
54
|
id: string;
|
|
55
|
+
/**
|
|
56
|
+
* The initial value for the state of this chat.
|
|
57
|
+
*/
|
|
31
58
|
initial: ChatProperties;
|
|
59
|
+
/**
|
|
60
|
+
* The interceptors to use for the messages pushed to this chat.
|
|
61
|
+
*
|
|
62
|
+
* The interceptors are run whenever a new message (chat entry) is added to the chat. They're always run in the order of the array and if
|
|
63
|
+
* any returns a promise, the promise is awaited before running the next.
|
|
64
|
+
*
|
|
65
|
+
* If an interceptor returns false or resolves to false (if a promise), the execution is interrupted, i.e. the next interceptors are not
|
|
66
|
+
* run.
|
|
67
|
+
*
|
|
68
|
+
* An interceptor receives three parameters:
|
|
69
|
+
* 1. the chat entry added;
|
|
70
|
+
* 2. the chat state;
|
|
71
|
+
* 3. an AbortSignal that can be aborted by calling `abort()` on the ChatState. Once the signal is aborted, the interceptor must abort all
|
|
72
|
+
* of its operations.
|
|
73
|
+
*
|
|
74
|
+
* Attention: when multiple messages are added at once, only the last goes through the interceptors. Furthermore, messages created by the
|
|
75
|
+
* constructor don't go through the interceptors, only messages added via `pushMessage` do.
|
|
76
|
+
*/
|
|
32
77
|
interceptors?: MessageInterceptor[];
|
|
78
|
+
/**
|
|
79
|
+
* The content of this chat, i.e. its messages.
|
|
80
|
+
*/
|
|
33
81
|
entries?: ChatEntry[];
|
|
34
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* A chat. Each chat tab is a different ChatState.
|
|
85
|
+
*/
|
|
35
86
|
export declare class ChatState extends ObservableState<ChatProperties> {
|
|
36
87
|
readonly id: string;
|
|
37
88
|
private entries;
|
|
38
89
|
private messagesListeners;
|
|
39
90
|
private readonly interceptors;
|
|
91
|
+
/**
|
|
92
|
+
* A memory space (map) to be used by interceptors.
|
|
93
|
+
*/
|
|
40
94
|
interceptorMemory: Map<string, any>;
|
|
41
|
-
private abortions;
|
|
42
95
|
/**
|
|
43
|
-
*
|
|
44
|
-
* @param initial the initial state.
|
|
45
|
-
* @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
|
|
46
|
-
* returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
|
|
47
|
-
* interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
|
|
48
|
-
* do.
|
|
96
|
+
* Abort signals currently active.
|
|
49
97
|
*/
|
|
98
|
+
private abortions;
|
|
50
99
|
constructor({ id, initial, entries, interceptors }: Options);
|
|
51
100
|
private runMessagesListeners;
|
|
52
101
|
private runInterceptors;
|
|
102
|
+
/**
|
|
103
|
+
* Adds one or more messages to the chat. Messages are appended to the end of the chat.
|
|
104
|
+
* @param entries the messages to add.
|
|
105
|
+
*/
|
|
53
106
|
pushMessage(...entries: ChatEntry[]): void;
|
|
107
|
+
/**
|
|
108
|
+
* Removes one or more messages from the end of the chat.
|
|
109
|
+
* @param quantity the number of messages to remove. Defaults to 1.
|
|
110
|
+
*/
|
|
54
111
|
popMessage(quantity?: number): void;
|
|
112
|
+
/**
|
|
113
|
+
* @returns the current list of messages.
|
|
114
|
+
*/
|
|
55
115
|
getMessages(): ChatEntry[];
|
|
116
|
+
/**
|
|
117
|
+
* Watches this chat for changes in the list of messages.
|
|
118
|
+
* @param listener the function to call whenever the list of messages changes.
|
|
119
|
+
* @returns a function that removes the listener.
|
|
120
|
+
*/
|
|
56
121
|
onChangeMessages(listener: ChatMessagesListener): () => void;
|
|
57
122
|
/**
|
|
58
123
|
* Aborts all currently running chat interceptors.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatState.d.ts","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,gBAAgB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KACnD,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;AAErE,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,iBAAiB,mBAAyB;IAC1C,OAAO,CAAC,SAAS,CAAwB;
|
|
1
|
+
{"version":3,"file":"ChatState.d.ts","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KACnD,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;AAErE,UAAU,OAAO;IACf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD;;OAEG;IACH,iBAAiB,mBAAyB;IAC1C;;OAEG;IACH,OAAO,CAAC,SAAS,CAAwB;gBAE7B,EAAE,EAAE,EAAE,OAAO,EAAE,OAAY,EAAE,YAAiB,EAAE,EAAE,OAAO;IAOrE,OAAO,CAAC,oBAAoB;YAId,eAAe;IAe7B;;;OAGG;IACH,WAAW,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE;IAOnC;;;OAGG;IACH,UAAU,CAAC,QAAQ,SAAI;IAKvB;;OAEG;IACH,WAAW;IAIX;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB;IAO/C;;OAEG;IACH,KAAK;IAKL;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM;CAUhC"}
|
package/dist/state/ChatState.js
CHANGED
|
@@ -2,21 +2,22 @@ import { dropRight, last, pull } from 'lodash';
|
|
|
2
2
|
import { ulid } from 'ulid';
|
|
3
3
|
import { AbortedError } from '../AbortedError.js';
|
|
4
4
|
import { ObservableState } from './ObservableState.js';
|
|
5
|
+
/**
|
|
6
|
+
* A chat. Each chat tab is a different ChatState.
|
|
7
|
+
*/
|
|
5
8
|
export class ChatState extends ObservableState {
|
|
6
9
|
id;
|
|
7
10
|
entries;
|
|
8
11
|
messagesListeners = [];
|
|
9
12
|
interceptors;
|
|
13
|
+
/**
|
|
14
|
+
* A memory space (map) to be used by interceptors.
|
|
15
|
+
*/
|
|
10
16
|
interceptorMemory = new Map();
|
|
11
|
-
abortions = [];
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
14
|
-
* @param initial the initial state.
|
|
15
|
-
* @param interceptors a list of interceptors to run whenever a new message (entry) is added to the chat. If an interception function
|
|
16
|
-
* returns false, the next interceptors are not run. Attention: when multiple messages are added at once, only the last goes through the
|
|
17
|
-
* interceptors. Furthermore, messages created by the constructor don't go through the interceptors, only messages added via `pushMessage`
|
|
18
|
-
* do.
|
|
18
|
+
* Abort signals currently active.
|
|
19
19
|
*/
|
|
20
|
+
abortions = [];
|
|
20
21
|
constructor({ id, initial, entries = [], interceptors = [] }) {
|
|
21
22
|
super(initial);
|
|
22
23
|
this.id = id;
|
|
@@ -42,6 +43,10 @@ export class ChatState extends ObservableState {
|
|
|
42
43
|
}
|
|
43
44
|
pull(this.abortions, abort);
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Adds one or more messages to the chat. Messages are appended to the end of the chat.
|
|
48
|
+
* @param entries the messages to add.
|
|
49
|
+
*/
|
|
45
50
|
pushMessage(...entries) {
|
|
46
51
|
if (!entries.length)
|
|
47
52
|
return;
|
|
@@ -49,13 +54,25 @@ export class ChatState extends ObservableState {
|
|
|
49
54
|
this.runMessagesListeners();
|
|
50
55
|
this.runInterceptors(last(entries));
|
|
51
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Removes one or more messages from the end of the chat.
|
|
59
|
+
* @param quantity the number of messages to remove. Defaults to 1.
|
|
60
|
+
*/
|
|
52
61
|
popMessage(quantity = 1) {
|
|
53
62
|
this.entries = dropRight(this.entries, quantity);
|
|
54
63
|
this.runMessagesListeners();
|
|
55
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* @returns the current list of messages.
|
|
67
|
+
*/
|
|
56
68
|
getMessages() {
|
|
57
69
|
return this.entries;
|
|
58
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Watches this chat for changes in the list of messages.
|
|
73
|
+
* @param listener the function to call whenever the list of messages changes.
|
|
74
|
+
* @returns a function that removes the listener.
|
|
75
|
+
*/
|
|
59
76
|
onChangeMessages(listener) {
|
|
60
77
|
this.messagesListeners.push(listener);
|
|
61
78
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatState.js","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatState.js","sourceRoot":"","sources":["../../src/state/ChatState.ts"],"names":[],"mappings":"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"}
|