@gooddata/sdk-ui-gen-ai 10.12.0-alpha.3
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/LICENSE +7 -0
- package/NOTICE +69049 -0
- package/README.md +27 -0
- package/esm/components/EmptyState.d.ts +3 -0
- package/esm/components/EmptyState.d.ts.map +1 -0
- package/esm/components/EmptyState.js +40 -0
- package/esm/components/EmptyState.js.map +1 -0
- package/esm/components/GenAIChat.d.ts +27 -0
- package/esm/components/GenAIChat.d.ts.map +1 -0
- package/esm/components/GenAIChat.js +17 -0
- package/esm/components/GenAIChat.js.map +1 -0
- package/esm/components/GenAIChatDialog.d.ts +12 -0
- package/esm/components/GenAIChatDialog.d.ts.map +1 -0
- package/esm/components/GenAIChatDialog.js +15 -0
- package/esm/components/GenAIChatDialog.js.map +1 -0
- package/esm/components/GenAIChatOverlay.d.ts +6 -0
- package/esm/components/GenAIChatOverlay.d.ts.map +1 -0
- package/esm/components/GenAIChatOverlay.js +30 -0
- package/esm/components/GenAIChatOverlay.js.map +1 -0
- package/esm/components/GenAIChatWrapper.d.ts +7 -0
- package/esm/components/GenAIChatWrapper.d.ts.map +1 -0
- package/esm/components/GenAIChatWrapper.js +16 -0
- package/esm/components/GenAIChatWrapper.js.map +1 -0
- package/esm/components/HeaderIcon.d.ts +12 -0
- package/esm/components/HeaderIcon.d.ts.map +1 -0
- package/esm/components/HeaderIcon.js +11 -0
- package/esm/components/HeaderIcon.js.map +1 -0
- package/esm/components/Input.d.ts +5 -0
- package/esm/components/Input.d.ts.map +1 -0
- package/esm/components/Input.js +50 -0
- package/esm/components/Input.js.map +1 -0
- package/esm/components/Messages.d.ts +3 -0
- package/esm/components/Messages.d.ts.map +1 -0
- package/esm/components/Messages.js +49 -0
- package/esm/components/Messages.js.map +1 -0
- package/esm/components/SendIcon.d.ts +7 -0
- package/esm/components/SendIcon.d.ts.map +1 -0
- package/esm/components/SendIcon.js +10 -0
- package/esm/components/SendIcon.js.map +1 -0
- package/esm/components/messages/AgentIcon.d.ts +8 -0
- package/esm/components/messages/AgentIcon.d.ts.map +1 -0
- package/esm/components/messages/AgentIcon.js +32 -0
- package/esm/components/messages/AgentIcon.js.map +1 -0
- package/esm/components/messages/AgentState.d.ts +3 -0
- package/esm/components/messages/AgentState.d.ts.map +1 -0
- package/esm/components/messages/AgentState.js +10 -0
- package/esm/components/messages/AgentState.js.map +1 -0
- package/esm/components/messages/AssistantErrorMessage.d.ts +8 -0
- package/esm/components/messages/AssistantErrorMessage.d.ts.map +1 -0
- package/esm/components/messages/AssistantErrorMessage.js +10 -0
- package/esm/components/messages/AssistantErrorMessage.js.map +1 -0
- package/esm/components/messages/AssistantSearchCreateMessage.d.ts +8 -0
- package/esm/components/messages/AssistantSearchCreateMessage.d.ts.map +1 -0
- package/esm/components/messages/AssistantSearchCreateMessage.js +14 -0
- package/esm/components/messages/AssistantSearchCreateMessage.js.map +1 -0
- package/esm/components/messages/AssistantTextMessage.d.ts +8 -0
- package/esm/components/messages/AssistantTextMessage.d.ts.map +1 -0
- package/esm/components/messages/AssistantTextMessage.js +10 -0
- package/esm/components/messages/AssistantTextMessage.js.map +1 -0
- package/esm/components/messages/SystemMessage.d.ts +8 -0
- package/esm/components/messages/SystemMessage.d.ts.map +1 -0
- package/esm/components/messages/SystemMessage.js +7 -0
- package/esm/components/messages/SystemMessage.js.map +1 -0
- package/esm/components/messages/UserMessage.d.ts +8 -0
- package/esm/components/messages/UserMessage.d.ts.map +1 -0
- package/esm/components/messages/UserMessage.js +8 -0
- package/esm/components/messages/UserMessage.js.map +1 -0
- package/esm/components/messages/Visualization.d.ts +8 -0
- package/esm/components/messages/Visualization.d.ts.map +1 -0
- package/esm/components/messages/Visualization.js +12 -0
- package/esm/components/messages/Visualization.js.map +1 -0
- package/esm/components/messages/index.d.ts +4 -0
- package/esm/components/messages/index.d.ts.map +1 -0
- package/esm/components/messages/index.js +5 -0
- package/esm/components/messages/index.js.map +1 -0
- package/esm/components/messages/useExecution.d.ts +3 -0
- package/esm/components/messages/useExecution.d.ts.map +1 -0
- package/esm/components/messages/useExecution.js +29 -0
- package/esm/components/messages/useExecution.js.map +1 -0
- package/esm/hooks/useGenAIStore.d.ts +25 -0
- package/esm/hooks/useGenAIStore.d.ts.map +1 -0
- package/esm/hooks/useGenAIStore.js +15 -0
- package/esm/hooks/useGenAIStore.js.map +1 -0
- package/esm/index.d.ts +9 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -0
- package/esm/internal.d.ts +3 -0
- package/esm/internal.d.ts.map +1 -0
- package/esm/internal.js +3 -0
- package/esm/internal.js.map +1 -0
- package/esm/localization/IntlWrapper.d.ts +13 -0
- package/esm/localization/IntlWrapper.d.ts.map +1 -0
- package/esm/localization/IntlWrapper.js +13 -0
- package/esm/localization/IntlWrapper.js.map +1 -0
- package/esm/localization/bundles/de-DE.json +1 -0
- package/esm/localization/bundles/en-AU.json +1 -0
- package/esm/localization/bundles/en-GB.json +1 -0
- package/esm/localization/bundles/en-US.json +1 -0
- package/esm/localization/bundles/es-419.json +1 -0
- package/esm/localization/bundles/es-ES.json +1 -0
- package/esm/localization/bundles/fi-FI.json +1 -0
- package/esm/localization/bundles/fr-CA.json +1 -0
- package/esm/localization/bundles/fr-FR.json +1 -0
- package/esm/localization/bundles/it-IT.json +1 -0
- package/esm/localization/bundles/ja-JP.json +1 -0
- package/esm/localization/bundles/nl-NL.json +1 -0
- package/esm/localization/bundles/pt-BR.json +1 -0
- package/esm/localization/bundles/pt-PT.json +1 -0
- package/esm/localization/bundles/ru-RU.json +1 -0
- package/esm/localization/bundles/zh-HK.json +1 -0
- package/esm/localization/bundles/zh-Hans.json +1 -0
- package/esm/localization/bundles/zh-Hant.json +1 -0
- package/esm/localization/translations.d.ts +4 -0
- package/esm/localization/translations.d.ts.map +1 -0
- package/esm/localization/translations.js +41 -0
- package/esm/localization/translations.js.map +1 -0
- package/esm/model.d.ts +73 -0
- package/esm/model.d.ts.map +1 -0
- package/esm/model.js +43 -0
- package/esm/model.js.map +1 -0
- package/esm/sdk-ui-gen-ai.d.ts +100 -0
- package/esm/store/agent/agentSelectors.d.ts +3 -0
- package/esm/store/agent/agentSelectors.d.ts.map +1 -0
- package/esm/store/agent/agentSelectors.js +6 -0
- package/esm/store/agent/agentSelectors.js.map +1 -0
- package/esm/store/agent/agentSlice.d.ts +8 -0
- package/esm/store/agent/agentSlice.d.ts.map +1 -0
- package/esm/store/agent/agentSlice.js +21 -0
- package/esm/store/agent/agentSlice.js.map +1 -0
- package/esm/store/index.d.ts +7 -0
- package/esm/store/index.d.ts.map +1 -0
- package/esm/store/index.js +7 -0
- package/esm/store/index.js.map +1 -0
- package/esm/store/messages/messagesSelectors.d.ts +8 -0
- package/esm/store/messages/messagesSelectors.d.ts.map +1 -0
- package/esm/store/messages/messagesSelectors.js +17 -0
- package/esm/store/messages/messagesSelectors.js.map +1 -0
- package/esm/store/messages/messagesSlice.d.ts +12 -0
- package/esm/store/messages/messagesSlice.d.ts.map +1 -0
- package/esm/store/messages/messagesSlice.js +36 -0
- package/esm/store/messages/messagesSlice.js.map +1 -0
- package/esm/store/sideEffects/converters/evalToMessage.d.ts +7 -0
- package/esm/store/sideEffects/converters/evalToMessage.d.ts.map +1 -0
- package/esm/store/sideEffects/converters/evalToMessage.js +14 -0
- package/esm/store/sideEffects/converters/evalToMessage.js.map +1 -0
- package/esm/store/sideEffects/converters/messagesToHistory.d.ts +4 -0
- package/esm/store/sideEffects/converters/messagesToHistory.d.ts.map +1 -0
- package/esm/store/sideEffects/converters/messagesToHistory.js +71 -0
- package/esm/store/sideEffects/converters/messagesToHistory.js.map +1 -0
- package/esm/store/sideEffects/index.d.ts +6 -0
- package/esm/store/sideEffects/index.d.ts.map +1 -0
- package/esm/store/sideEffects/index.js +15 -0
- package/esm/store/sideEffects/index.js.map +1 -0
- package/esm/store/sideEffects/onNewMessage.d.ts +9 -0
- package/esm/store/sideEffects/onNewMessage.d.ts.map +1 -0
- package/esm/store/sideEffects/onNewMessage.js +71 -0
- package/esm/store/sideEffects/onNewMessage.js.map +1 -0
- package/esm/store/sideEffects/onVerboseStore.d.ts +6 -0
- package/esm/store/sideEffects/onVerboseStore.d.ts.map +1 -0
- package/esm/store/sideEffects/onVerboseStore.js +18 -0
- package/esm/store/sideEffects/onVerboseStore.js.map +1 -0
- package/esm/store/sideEffects/utils.d.ts +2 -0
- package/esm/store/sideEffects/utils.d.ts.map +1 -0
- package/esm/store/sideEffects/utils.js +12 -0
- package/esm/store/sideEffects/utils.js.map +1 -0
- package/esm/store/store.d.ts +26 -0
- package/esm/store/store.d.ts.map +1 -0
- package/esm/store/store.js +36 -0
- package/esm/store/store.js.map +1 -0
- package/esm/store/types.d.ts +7 -0
- package/esm/store/types.d.ts.map +1 -0
- package/esm/store/types.js +4 -0
- package/esm/store/types.js.map +1 -0
- package/esm/tsdoc-metadata.json +11 -0
- package/package.json +127 -0
- package/styles/css/agentIcon.css +92 -0
- package/styles/css/agentIcon.css.map +1 -0
- package/styles/css/agentState.css +29 -0
- package/styles/css/agentState.css.map +1 -0
- package/styles/css/input.css +152 -0
- package/styles/css/input.css.map +1 -0
- package/styles/css/main.css +456 -0
- package/styles/css/main.css.map +1 -0
- package/styles/css/messages.css +94 -0
- package/styles/css/messages.css.map +1 -0
- package/styles/css/variables.css +3 -0
- package/styles/css/variables.css.map +1 -0
- package/styles/css/window.css +100 -0
- package/styles/css/window.css.map +1 -0
- package/styles/scss/agentIcon.scss +122 -0
- package/styles/scss/agentState.scss +31 -0
- package/styles/scss/input.scss +107 -0
- package/styles/scss/main.scss +26 -0
- package/styles/scss/messages.scss +111 -0
- package/styles/scss/variables.scss +4 -0
- package/styles/scss/window.scss +122 -0
package/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Gooddata GenAI SDK
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/@gooddata/sdk-ui-gen-ai)
|
|
4
|
+
[](https://npmcharts.com/compare/@gooddata/sdk-ui-gen-ai?minimal=true)
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
This package is a part of the [GoodData.UI SDK](https://sdk.gooddata.com/gooddata-ui/docs/about_gooddataui.html).
|
|
8
|
+
To learn more, check [the source monorepo](https://github.com/gooddata/gooddata-ui-sdk).
|
|
9
|
+
|
|
10
|
+
This package provides a set of React-based UI components and hooks for GenAI chatbot and other AI-based functionality.
|
|
11
|
+
|
|
12
|
+
Example usage:
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
import { GenAIChat } from "@gooddata/sdk-ui-gen-ai";
|
|
16
|
+
import "@gooddata/sdk-ui-gen-ai/styles/css/main.css";
|
|
17
|
+
|
|
18
|
+
const App = () => {
|
|
19
|
+
return <GenAIChat workspaceId="your-workspace-id" backend={tigerBackend} />;
|
|
20
|
+
};
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## License
|
|
24
|
+
|
|
25
|
+
(C) 2017-2022 GoodData Corporation
|
|
26
|
+
|
|
27
|
+
This project is under commercial license. See [LICENSE](https://github.com/gooddata/gooddata-ui-sdk/blob/master/libs/sdk-ui-all/LICENSE).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgC1B,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAyB9B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Button, Typography } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
import { useDispatch } from "react-redux";
|
|
5
|
+
import { makeAssistantTextMessage, makeUserMessage } from "../model.js";
|
|
6
|
+
import { setMessages } from "../store/index.js";
|
|
7
|
+
const quickOptions = [
|
|
8
|
+
{
|
|
9
|
+
title: "Search for a dashboard or visualization",
|
|
10
|
+
question: "Search for a dashboard or visualization",
|
|
11
|
+
answer: "Sure thing, what kind of dashboard or visualization would you like to see?",
|
|
12
|
+
icon: "gd-icon-magnifier",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: "Create a new visualization",
|
|
16
|
+
question: "Create a new visualization",
|
|
17
|
+
answer: "Sure thing, what kind of visualization would you like to create?",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: "Answer business question",
|
|
21
|
+
question: "Answer business question",
|
|
22
|
+
answer: "Sure thing, what business question would you like to answer?",
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
export const EmptyState = () => {
|
|
26
|
+
const dispatch = useDispatch();
|
|
27
|
+
const withClickValue = (option) => ({
|
|
28
|
+
onClick: () => {
|
|
29
|
+
dispatch(setMessages([makeUserMessage(option.question), makeAssistantTextMessage(option.answer)]));
|
|
30
|
+
},
|
|
31
|
+
value: option.title,
|
|
32
|
+
variant: "secondary",
|
|
33
|
+
iconLeft: option.icon,
|
|
34
|
+
});
|
|
35
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__messages__empty" },
|
|
36
|
+
React.createElement(Typography, { tagName: "h1", className: "gd-gen-ai-chat__messages__empty__h1--accent" }, "Hi there,"),
|
|
37
|
+
React.createElement(Typography, { tagName: "h1" }, "How can I help you?"),
|
|
38
|
+
quickOptions.map((option) => (React.createElement(Button, { key: option.title, ...withClickValue(option) })))));
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAgB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,MAAM,YAAY,GAAG;IACjB;QACI,KAAK,EAAE,yCAAyC;QAChD,QAAQ,EAAE,yCAAyC;QACnD,MAAM,EAAE,4EAA4E;QACpF,IAAI,EAAE,mBAAmB;KAC5B;IACD;QACI,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,kEAAkE;KAC7E;IACD;QACI,KAAK,EAAE,0BAA0B;QACjC,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,8DAA8D;KACzE;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAa,GAAG,EAAE;IACrC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,cAAc,GAAG,CAAC,MAAmB,EAAgB,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,GAAG,EAAE;YACV,QAAQ,CACJ,WAAW,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3F,CAAC;QACN,CAAC;QACD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,WAAoB;QAC7B,QAAQ,EAAE,MAAM,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,OAAO,CACH,6BAAK,SAAS,EAAC,iCAAiC;QAC5C,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,6CAA6C,gBAEnE;QACb,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,0BAAiC;QACxD,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC1B,oBAAC,MAAM,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK,KAAM,cAAc,CAAC,MAAM,CAAC,GAAI,CAC5D,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
3
|
+
import { Message } from "../model.js";
|
|
4
|
+
/**
|
|
5
|
+
* Properties for the GenAIChat component.
|
|
6
|
+
* @alpha
|
|
7
|
+
*/
|
|
8
|
+
export interface GenAIChatProps {
|
|
9
|
+
/**
|
|
10
|
+
* Analytical backend to use for server communication.
|
|
11
|
+
*/
|
|
12
|
+
backend?: IAnalyticalBackend;
|
|
13
|
+
/**
|
|
14
|
+
* The workspace ID the user is working with.
|
|
15
|
+
*/
|
|
16
|
+
workspace?: string;
|
|
17
|
+
/**
|
|
18
|
+
* A conversation history in case you're resuming the chat.
|
|
19
|
+
*/
|
|
20
|
+
history?: Message[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* UI component that renders the Gen AI chat.
|
|
24
|
+
* @alpha
|
|
25
|
+
*/
|
|
26
|
+
export declare const GenAIChat: React.FC<GenAIChatProps>;
|
|
27
|
+
//# sourceMappingURL=GenAIChat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChat.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChat.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAU9C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Provider as StoreProvider } from "react-redux";
|
|
4
|
+
import { useGenAIStore } from "../hooks/useGenAIStore.js";
|
|
5
|
+
import { IntlWrapper } from "../localization/IntlWrapper.js";
|
|
6
|
+
import { GenAIChatWrapper } from "./GenAIChatWrapper.js";
|
|
7
|
+
/**
|
|
8
|
+
* UI component that renders the Gen AI chat.
|
|
9
|
+
* @alpha
|
|
10
|
+
*/
|
|
11
|
+
export const GenAIChat = ({ backend, workspace, history }) => {
|
|
12
|
+
const genAIStore = useGenAIStore(backend, workspace, history);
|
|
13
|
+
return (React.createElement(IntlWrapper, null,
|
|
14
|
+
React.createElement(StoreProvider, { store: genAIStore },
|
|
15
|
+
React.createElement(GenAIChatWrapper, null))));
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=GenAIChat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChat.js","sourceRoot":"","sources":["../../src/components/GenAIChat.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAqBzD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;IACnF,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO,CACH,oBAAC,WAAW;QACR,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU;YAC5B,oBAAC,gBAAgB,OAAG,CACR,CACN,CACjB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
3
|
+
import { Message } from "../model.js";
|
|
4
|
+
export type GenAIChatDialogProps = {
|
|
5
|
+
backend?: IAnalyticalBackend;
|
|
6
|
+
workspace?: string;
|
|
7
|
+
history?: Message[];
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
};
|
|
11
|
+
export declare const GenAIChatDialog: React.FC<GenAIChatDialogProps>;
|
|
12
|
+
//# sourceMappingURL=GenAIChatDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatDialog.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAkB1D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Provider as StoreProvider } from "react-redux";
|
|
4
|
+
import { useGenAIStore } from "../hooks/useGenAIStore.js";
|
|
5
|
+
import { IntlWrapper } from "../localization/IntlWrapper.js";
|
|
6
|
+
import { GenAIChatOverlay } from "./GenAIChatOverlay.js";
|
|
7
|
+
export const GenAIChatDialog = ({ backend, workspace, history, isOpen, onClose, }) => {
|
|
8
|
+
const genAIStore = useGenAIStore(backend, workspace, history);
|
|
9
|
+
if (!isOpen)
|
|
10
|
+
return null;
|
|
11
|
+
return (React.createElement(IntlWrapper, null,
|
|
12
|
+
React.createElement(StoreProvider, { store: genAIStore },
|
|
13
|
+
React.createElement(GenAIChatOverlay, { onClose: onClose }))));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=GenAIChatDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatDialog.js","sourceRoot":"","sources":["../../src/components/GenAIChatDialog.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAUzD,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC5D,OAAO,EACP,SAAS,EACT,OAAO,EACP,MAAM,EACN,OAAO,GACV,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACH,oBAAC,WAAW;QACR,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU;YAC5B,oBAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,GAAI,CAC1B,CACN,CACjB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAuD5D,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { GenAIChatWrapper } from "./GenAIChatWrapper.js";
|
|
4
|
+
import { Icon, Overlay } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import { clearMessagesAction, hasMessagesSelector } from "../store/index.js";
|
|
6
|
+
import cx from "classnames";
|
|
7
|
+
import { HeaderIcon } from "./HeaderIcon.js";
|
|
8
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
9
|
+
export const GenAIChatOverlay = ({ onClose }) => {
|
|
10
|
+
const [isFullScreen, setIsFullScreen] = React.useState(false);
|
|
11
|
+
const dispatch = useDispatch();
|
|
12
|
+
const hasMessages = useSelector(hasMessagesSelector);
|
|
13
|
+
const isModal = isFullScreen;
|
|
14
|
+
const reset = () => {
|
|
15
|
+
dispatch(clearMessagesAction());
|
|
16
|
+
};
|
|
17
|
+
const classNames = cx("gd-gen-ai-chat__window", {
|
|
18
|
+
"gd-gen-ai-chat__window--fullscreen": isFullScreen,
|
|
19
|
+
});
|
|
20
|
+
return (React.createElement(Overlay, { isModal: isModal, positionType: "fixed", alignPoints: [{ align: isModal ? "cc cc" : "br br" }], closeOnEscape: true, closeOnParentScroll: false, closeOnOutsideClick: false, closeOnMouseDrag: false, zIndex: 6000, onClose: onClose },
|
|
21
|
+
React.createElement("div", { className: classNames },
|
|
22
|
+
React.createElement("div", { className: "gd-gen-ai-chat__window__header" },
|
|
23
|
+
React.createElement(HeaderIcon, { Icon: Icon.Undo, className: "gd-gen-ai-chat__window__header__icon--reset", tooltip: "Reset", onClick: reset, disabled: !hasMessages }),
|
|
24
|
+
React.createElement("div", { className: "gd-gen-ai-chat__window__header__gap" }),
|
|
25
|
+
React.createElement(HeaderIcon, { Icon: isFullScreen ? Icon.Contract : Icon.Expand, className: "gd-gen-ai-chat__window__header__icon--fullscreen", tooltip: isFullScreen ? "Contract" : "Expand", onClick: () => setIsFullScreen(!isFullScreen) }),
|
|
26
|
+
React.createElement("div", { className: "gd-gen-ai-chat__window__header__divider" }),
|
|
27
|
+
React.createElement(HeaderIcon, { Icon: Icon.Close, className: "gd-gen-ai-chat__window__header__icon--close", tooltip: "Close", onClick: onClose })),
|
|
28
|
+
React.createElement(GenAIChatWrapper, null))));
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=GenAIChatOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.js","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMvD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,YAAY,CAAC;IAE7B,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,CAAC,wBAAwB,EAAE;QAC5C,oCAAoC,EAAE,YAAY;KACrD,CAAC,CAAC;IAEH,OAAO,CACH,oBAAC,OAAO,IACJ,OAAO,EAAE,OAAO,EAChB,YAAY,EAAC,OAAO,EACpB,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EACrD,aAAa,EAAE,IAAI,EACnB,mBAAmB,EAAE,KAAK,EAC1B,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,KAAK,EACvB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,OAAO;QAEhB,6BAAK,SAAS,EAAE,UAAU;YACtB,6BAAK,SAAS,EAAC,gCAAgC;gBAC3C,oBAAC,UAAU,IACP,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,CAAC,WAAW,GACxB;gBACF,6BAAK,SAAS,EAAC,qCAAqC,GAAO;gBAC3D,oBAAC,UAAU,IACP,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAChD,SAAS,EAAC,kDAAkD,EAC5D,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAC/C;gBACF,6BAAK,SAAS,EAAC,yCAAyC,GAAO;gBAC/D,oBAAC,UAAU,IACP,IAAI,EAAE,IAAI,CAAC,KAAK,EAChB,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,OAAO,GAClB,CACA;YACN,oBAAC,gBAAgB,OAAG,CAClB,CACA,CACb,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatWrapper.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAUpC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Input } from "./Input.js";
|
|
4
|
+
import { Messages } from "./Messages.js";
|
|
5
|
+
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
6
|
+
/**
|
|
7
|
+
* UI component that renders the Gen AI chat.
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const GenAIChatWrapper = () => {
|
|
11
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat" },
|
|
12
|
+
React.createElement(Messages, null),
|
|
13
|
+
React.createElement(Input, null),
|
|
14
|
+
React.createElement(Typography, { tagName: "p", className: "gd-gen-ai-chat__disclaimer" }, "We do not accept any liability for the generated information as it may not be accurate")));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=GenAIChatWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatWrapper.js","sourceRoot":"","sources":["../../src/components/GenAIChatWrapper.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC3C,OAAO,CACH,6BAAK,SAAS,EAAC,gBAAgB;QAC3B,oBAAC,QAAQ,OAAG;QACZ,oBAAC,KAAK,OAAG;QACT,oBAAC,UAAU,IAAC,OAAO,EAAC,GAAG,EAAC,SAAS,EAAC,4BAA4B,6FAEjD,CACX,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IIconProps } from "@gooddata/sdk-ui-kit";
|
|
3
|
+
type HeaderIconProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
tooltip?: string;
|
|
6
|
+
Icon: React.FC<IIconProps>;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const HeaderIcon: React.FC<HeaderIconProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=HeaderIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderIcon.d.ts","sourceRoot":"","sources":["../../src/components/HeaderIcon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,KAAK,eAAe,GAAG;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAchD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
export const HeaderIcon = ({ className, tooltip, Icon, onClick, disabled }) => {
|
|
5
|
+
const classes = cx("gd-gen-ai-chat__window__header__icon", className, {
|
|
6
|
+
"gd-gen-ai-chat__window__header__icon--disabled": disabled,
|
|
7
|
+
});
|
|
8
|
+
return (React.createElement("div", { className: classes, "data-gd-tooltip": disabled ? undefined : tooltip, onClick: disabled ? undefined : onClick },
|
|
9
|
+
React.createElement(Icon, null)));
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=HeaderIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderIcon.js","sourceRoot":"","sources":["../../src/components/HeaderIcon.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAU5B,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrG,MAAM,OAAO,GAAG,EAAE,CAAC,sCAAsC,EAAE,SAAS,EAAE;QAClE,gDAAgD,EAAE,QAAQ;KAC7D,CAAC,CAAC;IAEH,OAAO,CACH,6BACI,SAAS,EAAE,OAAO,qBACD,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC/C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAEvC,oBAAC,IAAI,OAAG,CACN,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,KAAK,UAAU,GAAG,EAEjB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAmDtC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import DefaultTextArea from "react-textarea-autosize";
|
|
4
|
+
import { defaultImport } from "default-import";
|
|
5
|
+
import DefaultNativeListener from "react-native-listener";
|
|
6
|
+
import cx from "classnames";
|
|
7
|
+
import { SendIcon } from "./SendIcon.js";
|
|
8
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
9
|
+
import { makeUserMessage } from "../model.js";
|
|
10
|
+
import { agentLoadingSelector, newMessageAction } from "../store/index.js";
|
|
11
|
+
// There are known compatibility issues between CommonJS (CJS) and ECMAScript modules (ESM).
|
|
12
|
+
// In ESM, default exports of CJS modules are wrapped in default properties instead of being exposed directly.
|
|
13
|
+
// https://github.com/microsoft/TypeScript/issues/52086#issuecomment-1385978414
|
|
14
|
+
const TextareaAutosize = defaultImport(DefaultTextArea);
|
|
15
|
+
const NativeListener = defaultImport(DefaultNativeListener);
|
|
16
|
+
export const Input = () => {
|
|
17
|
+
const [value, setValue] = React.useState("");
|
|
18
|
+
const dispatch = useDispatch();
|
|
19
|
+
const disabled = useSelector(agentLoadingSelector);
|
|
20
|
+
const textareaRef = React.useRef(null);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
// Autofocus the textarea when the chat is not disabled and the user is not focusing on another element
|
|
23
|
+
// Important, given the disabled states changes depending on the agent's loading state
|
|
24
|
+
// And it's loosing focus after the loading state changes
|
|
25
|
+
if (!disabled && document.activeElement === document.body) {
|
|
26
|
+
textareaRef.current?.focus();
|
|
27
|
+
}
|
|
28
|
+
}, [disabled]);
|
|
29
|
+
const handleSubmit = () => {
|
|
30
|
+
dispatch(newMessageAction(makeUserMessage(value)));
|
|
31
|
+
setValue("");
|
|
32
|
+
};
|
|
33
|
+
const handleKeyDown = (e) => {
|
|
34
|
+
if (e.key === "Enter" && !e.shiftKey && !disabled && value) {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
handleSubmit();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const handleChange = (e) => {
|
|
40
|
+
setValue(e.target.value);
|
|
41
|
+
};
|
|
42
|
+
const buttonClasses = cx("gd-gen-ai-chat__input__send_button", {
|
|
43
|
+
"gd-gen-ai-chat__input__send_button--disabled": disabled || !value,
|
|
44
|
+
});
|
|
45
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__input" },
|
|
46
|
+
React.createElement(TextareaAutosize, { ref: textareaRef, className: "gd-gen-ai-chat__input__textarea", placeholder: "Ask here\u2026", value: value, onChange: handleChange, onKeyDown: handleKeyDown, disabled: disabled }),
|
|
47
|
+
React.createElement(NativeListener, { onClick: handleSubmit },
|
|
48
|
+
React.createElement(SendIcon, { className: buttonClasses }))));
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,qBAAqB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,4FAA4F;AAC5F,8GAA8G;AAC9G,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAM5D,MAAM,CAAC,MAAM,KAAK,GAAyB,GAAG,EAAE;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAsB,IAAI,CAAC,CAAC;IAE5D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,uGAAuG;QACvG,sFAAsF;QACtF,yDAAyD;QACzD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxD,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAA2C,EAAE,EAAE;QAClE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;YACzD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;QACnB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,CAAyC,EAAE,EAAE;QAC/D,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,EAAE,CAAC,oCAAoC,EAAE;QAC3D,8CAA8C,EAAE,QAAQ,IAAI,CAAC,KAAK;KACrE,CAAC,CAAC;IAEH,OAAO,CACH,6BAAK,SAAS,EAAC,uBAAuB;QAClC,oBAAC,gBAAgB,IACb,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,iCAAiC,EAC3C,WAAW,EAAC,gBAAW,EACvB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,GACpB;QACF,oBAAC,cAAc,IAAC,OAAO,EAAE,YAAY;YACjC,oBAAC,QAAQ,IAAC,SAAS,EAAE,aAAa,GAAI,CACzB,CACf,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Messages.d.ts","sourceRoot":"","sources":["../../src/components/Messages.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,eAAO,MAAM,QAAQ,yBA6CpB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { useSelector } from "react-redux";
|
|
4
|
+
import { agentLoadingSelector, visibleMessagesSelector } from "../store/index.js";
|
|
5
|
+
import { AssistantTextMessageComponent, SystemMessageComponent, UserMessageComponent, } from "./messages/index.js";
|
|
6
|
+
import { AgentState } from "./messages/AgentState.js";
|
|
7
|
+
import { isAssistantErrorMessage, isAssistantSearchCreateMessage, isAssistantTextMessage, isSystemMessage, isUserMessage, } from "../model.js";
|
|
8
|
+
import { EmptyState } from "./EmptyState.js";
|
|
9
|
+
import { AssistantErrorMessageComponent } from "./messages/AssistantErrorMessage.js";
|
|
10
|
+
import { AssistantSearchCreateMessageComponent } from "./messages/AssistantSearchCreateMessage.js";
|
|
11
|
+
export const Messages = () => {
|
|
12
|
+
const messages = useSelector(visibleMessagesSelector);
|
|
13
|
+
const loading = useSelector(agentLoadingSelector);
|
|
14
|
+
const scrollRef = React.useRef(null);
|
|
15
|
+
const lastMessage = messages[messages.length - 1];
|
|
16
|
+
React.useLayoutEffect(() => {
|
|
17
|
+
// If either last message or loading state changes, scroll to the bottom
|
|
18
|
+
scrollRef.current?.scrollTo({
|
|
19
|
+
top: scrollRef.current?.scrollHeight,
|
|
20
|
+
behavior: "smooth",
|
|
21
|
+
});
|
|
22
|
+
}, [lastMessage, loading]);
|
|
23
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__messages", ref: scrollRef },
|
|
24
|
+
React.createElement("div", { className: "gd-gen-ai-chat__messages__scroll" },
|
|
25
|
+
!messages.length ? React.createElement(EmptyState, null) : null,
|
|
26
|
+
messages.map((message) => {
|
|
27
|
+
if (isAssistantTextMessage(message)) {
|
|
28
|
+
return React.createElement(AssistantTextMessageComponent, { key: message.id, message: message });
|
|
29
|
+
}
|
|
30
|
+
if (isAssistantErrorMessage(message)) {
|
|
31
|
+
return React.createElement(AssistantErrorMessageComponent, { key: message.id, message: message });
|
|
32
|
+
}
|
|
33
|
+
if (isAssistantSearchCreateMessage(message)) {
|
|
34
|
+
return React.createElement(AssistantSearchCreateMessageComponent, { key: message.id, message: message });
|
|
35
|
+
}
|
|
36
|
+
if (isUserMessage(message)) {
|
|
37
|
+
return React.createElement(UserMessageComponent, { key: message.id, message: message });
|
|
38
|
+
}
|
|
39
|
+
if (isSystemMessage(message)) {
|
|
40
|
+
return React.createElement(SystemMessageComponent, { key: message.id, message: message });
|
|
41
|
+
}
|
|
42
|
+
return assertNever(message);
|
|
43
|
+
}),
|
|
44
|
+
loading ? React.createElement(AgentState, null) : null)));
|
|
45
|
+
};
|
|
46
|
+
const assertNever = (value) => {
|
|
47
|
+
throw new Error(`Unhandled message role: ${value}`);
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=Messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Messages.js","sourceRoot":"","sources":["../../src/components/Messages.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACH,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EACf,aAAa,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AAEnG,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,wEAAwE;QACxE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;YACxB,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,YAAY;YACpC,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,OAAO,CACH,6BAAK,SAAS,EAAC,0BAA0B,EAAC,GAAG,EAAE,SAAS;QACpD,6BAAK,SAAS,EAAC,kCAAkC;YAC5C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAC,UAAU,OAAG,CAAC,CAAC,CAAC,IAAI;YACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,OAAO,oBAAC,6BAA6B,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;gBAChF,CAAC;gBAED,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,OAAO,oBAAC,8BAA8B,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;gBACjF,CAAC;gBAED,IAAI,8BAA8B,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,OAAO,oBAAC,qCAAqC,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;gBACxF,CAAC;gBAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzB,OAAO,oBAAC,oBAAoB,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;gBACvE,CAAC;gBAED,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,OAAO,oBAAC,sBAAsB,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;gBACzE,CAAC;gBAED,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,oBAAC,UAAU,OAAG,CAAC,CAAC,CAAC,IAAI,CAC9B,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAY,EAAS,EAAE;IACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SendIcon.d.ts","sourceRoot":"","sources":["../../src/components/SendIcon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAgBzC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const SendIcon = ({ color = "#6D7680", className, width = 17, height = 15 }) => {
|
|
7
|
+
return (React.createElement("svg", { className: className, width: width, height: height, viewBox: "0 0 17 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
8
|
+
React.createElement("path", { d: "M15.8672 0.703125C15.9245 0.755208 15.9635 0.817708 15.9844 0.890625C16.0052 0.963542 16.0052 1.03646 15.9844 1.10938L11.9844 14.7109C11.9635 14.7786 11.9271 14.8385 11.875 14.8906C11.8281 14.9375 11.7708 14.9688 11.7031 14.9844C11.6823 14.9896 11.6641 14.9948 11.6484 15C11.6328 15 11.6172 15 11.6016 15C11.5495 15 11.4974 14.9896 11.4453 14.9688C11.3984 14.9479 11.3568 14.9193 11.3203 14.8828L7.71875 11.3281L5.50781 14.0547C5.47135 14.1016 5.42448 14.138 5.36719 14.1641C5.3151 14.1901 5.26042 14.2031 5.20312 14.2031C5.17708 14.2031 5.15365 14.2005 5.13281 14.1953C5.11198 14.1901 5.08854 14.1849 5.0625 14.1797C4.98438 14.1484 4.91927 14.099 4.86719 14.0312C4.82031 13.9635 4.79688 13.8854 4.79688 13.7969V9.28906L0.273438 7.78125C0.195312 7.75521 0.130208 7.70833 0.078125 7.64062C0.03125 7.57292 0.00520833 7.4974 0 7.41406C-0.00520833 7.33073 0.015625 7.25521 0.0625 7.1875C0.109375 7.11458 0.169271 7.0625 0.242188 7.03125L15.4453 0.632812C15.5182 0.601562 15.5911 0.59375 15.6641 0.609375C15.7422 0.619792 15.8099 0.651042 15.8672 0.703125ZM12.9062 2.57031L1.53125 7.35938L5.125 8.55469L12.9062 2.57031ZM5.60156 9.19531V12.6719L7.375 10.4844L13.1328 3.40625L5.60156 9.19531ZM11.4062 13.8438L14.6562 2.79688L8.22656 10.7109L11.4062 13.8438Z", fill: color })));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=SendIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SendIcon.js","sourceRoot":"","sources":["../../src/components/SendIcon.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAyB,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE;IACxG,OAAO,CACH,6BACI,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;QAElC,8BACI,CAAC,EAAC,ouCAAouC,EACtuC,IAAI,EAAE,KAAK,GACb,CACA,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentIcon.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentIcon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,KAAK,mBAAmB,GAAG;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAiEnD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
let INSTANCE_COUNTER = 0;
|
|
5
|
+
export const AgentIcon = ({ loading = false, error = false }) => {
|
|
6
|
+
// A precaution in case there are multiple instances of the component on the same page
|
|
7
|
+
// In-line SVGs must obey the unique ID rule as any other HTML element
|
|
8
|
+
const instanceId = React.useMemo(() => INSTANCE_COUNTER++, []);
|
|
9
|
+
const className = cx("gd-gen-ai-chat__agent_icon", {
|
|
10
|
+
"gd-gen-ai-chat__agent_icon--loading": loading,
|
|
11
|
+
"gd-gen-ai-chat__agent_icon--appear": !loading,
|
|
12
|
+
"gd-gen-ai-chat__agent_icon--error": error,
|
|
13
|
+
});
|
|
14
|
+
return (React.createElement("svg", { className: className, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
15
|
+
React.createElement("g", { clipPath: `url(#clip_mask_${instanceId})` },
|
|
16
|
+
loading ? (React.createElement("g", { className: "gd-gen-ai-chat__agent_icon__circle" },
|
|
17
|
+
React.createElement("path", { d: "M 0 -16 A 16 16 0 0 1 0 16", stroke: `url(#first_half_${instanceId})` }),
|
|
18
|
+
React.createElement("path", { d: "M 0 16 A 16 16 0 0 1 0 -16", stroke: `url(#second_half_${instanceId})` }))) : (React.createElement("circle", { cx: "16", cy: "16", r: "16", className: "gd-gen-ai-chat__agent_icon__background" })),
|
|
19
|
+
React.createElement("path", { className: "gd-gen-ai-chat__agent_icon__star", d: "M16.2317 7.76912C16.2737 7.51389 16.6407 7.5139 16.6827 7.76913L17.1108 10.368C17.493 12.6883 19.3116 14.507 21.632 14.8892L24.2308 15.3172C24.4861 15.3593 24.4861 15.7263 24.2308 15.7683L21.632 16.1964C19.3116 16.5786 17.493 18.3972 17.1108 20.7176L16.6827 23.3164C16.6407 23.5716 16.2737 23.5716 16.2317 23.3164L15.8036 20.7176C15.4214 18.3972 13.6027 16.5786 11.2824 16.1964L8.68355 15.7683C8.42832 15.7263 8.42832 15.3593 8.68355 15.3172L11.2824 14.8892C13.6027 14.507 15.4214 12.6883 15.8036 10.368L16.2317 7.76912Z" }),
|
|
20
|
+
React.createElement("path", { className: "gd-gen-ai-chat__agent_icon__star gd-gen-ai-chat__agent_icon__star--flickr", d: "M9.87936 20.2796C9.91251 20.0783 10.2019 20.0783 10.235 20.2796C10.3606 21.0419 10.9581 21.6394 11.7204 21.765C11.9217 21.7981 11.9217 22.0875 11.7204 22.1206C10.9581 22.2462 10.3606 22.8437 10.235 23.606C10.2019 23.8073 9.91251 23.8073 9.87936 23.606C9.75379 22.8437 9.15629 22.2462 8.39396 22.1206C8.19271 22.0875 8.19271 21.7981 8.39396 21.765C9.15629 21.6394 9.75379 21.0419 9.87936 20.2796Z" }),
|
|
21
|
+
React.createElement("path", { className: "gd-gen-ai-chat__agent_icon__star gd-gen-ai-chat__agent_icon__star--flickr gd-gen-ai-chat__agent_icon__star--flickr--delay", d: "M22.6793 7.47953C22.7124 7.27828 23.0018 7.27828 23.0349 7.47953C23.1605 8.24186 23.758 8.83936 24.5203 8.96493C24.7216 8.99808 24.7216 9.28744 24.5203 9.32059C23.758 9.44616 23.1605 10.0437 23.0349 10.806C23.0018 11.0072 22.7124 11.0072 22.6793 10.806C22.5537 10.0437 21.9562 9.44616 21.1939 9.32059C20.9926 9.28744 20.9926 8.99808 21.1939 8.96493C21.9562 8.83936 22.5537 8.24186 22.6793 7.47953Z" })),
|
|
22
|
+
React.createElement("defs", null,
|
|
23
|
+
React.createElement("linearGradient", { id: `first_half_${instanceId}`, gradientUnits: "objectBoundingBox", x1: "0", y1: "1", x2: "0", y2: "0" },
|
|
24
|
+
React.createElement("stop", { offset: "0%", className: "gd-gen-ai-chat__agent_icon__grad--from" }),
|
|
25
|
+
React.createElement("stop", { offset: "100%", className: "gd-gen-ai-chat__agent_icon__grad--mid" })),
|
|
26
|
+
React.createElement("linearGradient", { className: "gd-gen-ai-chat__agent_icon__grad2", id: `second_half_${instanceId}`, gradientUnits: "objectBoundingBox", x1: "0", y1: "0", x2: "0", y2: "1" },
|
|
27
|
+
React.createElement("stop", { offset: "0%", className: "gd-gen-ai-chat__agent_icon__grad--mid" }),
|
|
28
|
+
React.createElement("stop", { offset: "100%", className: "gd-gen-ai-chat__agent_icon__grad--to" })),
|
|
29
|
+
React.createElement("clipPath", { id: `clip_mask_${instanceId}` },
|
|
30
|
+
React.createElement("rect", { width: "32", height: "32", rx: "16" })))));
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=AgentIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentIcon.js","sourceRoot":"","sources":["../../../src/components/messages/AgentIcon.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAOzB,MAAM,CAAC,MAAM,SAAS,GAAkC,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,EAAE;IAC3F,sFAAsF;IACtF,sEAAsE;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,EAAE,CAAC,4BAA4B,EAAE;QAC/C,qCAAqC,EAAE,OAAO;QAC9C,oCAAoC,EAAE,CAAC,OAAO;QAC9C,mCAAmC,EAAE,KAAK;KAC7C,CAAC,CAAC;IAEH,OAAO,CACH,6BAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;QACzF,2BAAG,QAAQ,EAAE,kBAAkB,UAAU,GAAG;YACvC,OAAO,CAAC,CAAC,CAAC,CACP,2BAAG,SAAS,EAAC,oCAAoC;gBAC7C,8BAAM,CAAC,EAAC,4BAA4B,EAAC,MAAM,EAAE,mBAAmB,UAAU,GAAG,GAAI;gBACjF,8BAAM,CAAC,EAAC,4BAA4B,EAAC,MAAM,EAAE,oBAAoB,UAAU,GAAG,GAAI,CAClF,CACP,CAAC,CAAC,CAAC,CACA,gCAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,SAAS,EAAC,wCAAwC,GAAG,CACvF;YACD,8BACI,SAAS,EAAC,kCAAkC,EAC5C,CAAC,EAAC,0gBAA0gB,GAC9gB;YACF,8BACI,SAAS,EAAC,2EAA2E,EACrF,CAAC,EAAC,6YAA6Y,GACjZ;YACF,8BACI,SAAS,EAAC,2HAA2H,EACrI,CAAC,EAAC,+YAA+Y,GACnZ,CACF;QACJ;YACI,wCACI,EAAE,EAAE,cAAc,UAAU,EAAE,EAC9B,aAAa,EAAC,mBAAmB,EACjC,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG;gBAEN,8BAAM,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,wCAAwC,GAAG;gBACvE,8BAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,uCAAuC,GAAG,CAC3D;YACjB,wCACI,SAAS,EAAC,mCAAmC,EAC7C,EAAE,EAAE,eAAe,UAAU,EAAE,EAC/B,aAAa,EAAC,mBAAmB,EACjC,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG;gBAEN,8BAAM,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,uCAAuC,GAAG;gBACtE,8BAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,sCAAsC,GAAG,CAC1D;YACjB,kCAAU,EAAE,EAAE,aAAa,UAAU,EAAE;gBACnC,8BAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,CAChC,CACR,CACL,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentState.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentState.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAS9B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { AgentIcon } from "./AgentIcon.js";
|
|
4
|
+
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
export const AgentState = () => {
|
|
6
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__agent_state" },
|
|
7
|
+
React.createElement(AgentIcon, { loading: true }),
|
|
8
|
+
React.createElement(Typography, { className: "gd-gen-ai-chat__agent_state__status", tagName: "p" }, "Analyzing\u2026")));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=AgentState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentState.js","sourceRoot":"","sources":["../../../src/components/messages/AgentState.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GAAa,GAAG,EAAE;IACrC,OAAO,CACH,6BAAK,SAAS,EAAC,6BAA6B;QACxC,oBAAC,SAAS,IAAC,OAAO,SAAG;QACrB,oBAAC,UAAU,IAAC,SAAS,EAAC,qCAAqC,EAAC,OAAO,EAAC,GAAG,sBAE1D,CACX,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AssistantErrorMessage } from "../../model.js";
|
|
3
|
+
type AssistantErrorMessageProps = {
|
|
4
|
+
message: AssistantErrorMessage;
|
|
5
|
+
};
|
|
6
|
+
export declare const AssistantErrorMessageComponent: React.FC<AssistantErrorMessageProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=AssistantErrorMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantErrorMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantErrorMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,KAAK,0BAA0B,GAAG;IAC9B,OAAO,EAAE,qBAAqB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAS/E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { AgentIcon } from "./AgentIcon.js";
|
|
4
|
+
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
export const AssistantErrorMessageComponent = ({ message }) => {
|
|
6
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__messages__message gd-gen-ai-chat__messages__message--assistant gd-gen-ai-chat__messages__message--error" },
|
|
7
|
+
React.createElement(AgentIcon, { error: true }),
|
|
8
|
+
React.createElement(Typography, { tagName: "p", className: "gd-gen-ai-chat__messages__contents" }, message.content)));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=AssistantErrorMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantErrorMessage.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantErrorMessage.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMlD,MAAM,CAAC,MAAM,8BAA8B,GAAyC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAChG,OAAO,CACH,6BAAK,SAAS,EAAC,yHAAyH;QACpI,oBAAC,SAAS,IAAC,KAAK,SAAG;QACnB,oBAAC,UAAU,IAAC,OAAO,EAAC,GAAG,EAAC,SAAS,EAAC,oCAAoC,IACjE,OAAO,CAAC,OAAO,CACP,CACX,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AssistantSearchCreateMessage } from "../../model.js";
|
|
3
|
+
type AssistantSearchCreateMessageProps = {
|
|
4
|
+
message: AssistantSearchCreateMessage;
|
|
5
|
+
};
|
|
6
|
+
export declare const AssistantSearchCreateMessageComponent: React.FC<AssistantSearchCreateMessageProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=AssistantSearchCreateMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantSearchCreateMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantSearchCreateMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAK9D,KAAK,iCAAiC,GAAG;IACrC,OAAO,EAAE,4BAA4B,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,qCAAqC,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAsB7F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { AgentIcon } from "./AgentIcon.js";
|
|
4
|
+
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import { Visualization } from "./Visualization.js";
|
|
6
|
+
export const AssistantSearchCreateMessageComponent = ({ message, }) => {
|
|
7
|
+
const firstVisualization = message.content.createdVisualizations?.objects?.[0];
|
|
8
|
+
return (React.createElement("div", { className: "gd-gen-ai-chat__messages__message gd-gen-ai-chat__messages__message--assistant" },
|
|
9
|
+
React.createElement(AgentIcon, null),
|
|
10
|
+
React.createElement("div", { className: "gd-gen-ai-chat__messages__contents" },
|
|
11
|
+
message.content.createdVisualizations?.reasoning ? (React.createElement(Typography, { tagName: "p" }, message.content.createdVisualizations.reasoning)) : null,
|
|
12
|
+
firstVisualization ? React.createElement(Visualization, { definition: firstVisualization }) : null)));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=AssistantSearchCreateMessage.js.map
|