@gooddata/sdk-ui-gen-ai 10.16.0-alpha.4 → 10.16.0-alpha.7
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/NOTICE +6 -6
- package/esm/components/GenAIChat.d.ts +3 -3
- package/esm/components/GenAIChat.d.ts.map +1 -1
- package/esm/components/GenAIChat.js +2 -2
- package/esm/components/GenAIChat.js.map +1 -1
- package/esm/components/GenAIChatDialog.d.ts +2 -2
- package/esm/components/GenAIChatDialog.d.ts.map +1 -1
- package/esm/components/GenAIChatDialog.js +10 -2
- package/esm/components/GenAIChatDialog.js.map +1 -1
- package/esm/components/GenAIChatOverlay.d.ts +4 -2
- package/esm/components/GenAIChatOverlay.d.ts.map +1 -1
- package/esm/components/GenAIChatOverlay.js +8 -7
- package/esm/components/GenAIChatOverlay.js.map +1 -1
- package/esm/components/messages/AssistantMessage.d.ts.map +1 -1
- package/esm/components/messages/AssistantMessage.js +4 -1
- package/esm/components/messages/AssistantMessage.js.map +1 -1
- package/esm/hooks/useGenAIStore.d.ts +15 -4
- package/esm/hooks/useGenAIStore.d.ts.map +1 -1
- package/esm/hooks/useGenAIStore.js +15 -5
- package/esm/hooks/useGenAIStore.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/sdk-ui-gen-ai.d.ts +120 -2
- package/esm/store/chatWindow/chatWindowSelectors.d.ts +4 -0
- package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -0
- package/esm/store/chatWindow/chatWindowSelectors.js +7 -0
- package/esm/store/chatWindow/chatWindowSelectors.js.map +1 -0
- package/esm/store/chatWindow/chatWindowSlice.d.ts +19 -0
- package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -0
- package/esm/store/chatWindow/chatWindowSlice.js +22 -0
- package/esm/store/chatWindow/chatWindowSlice.js.map +1 -0
- package/esm/store/events.d.ts +109 -0
- package/esm/store/events.d.ts.map +1 -0
- package/esm/store/events.js +57 -0
- package/esm/store/events.js.map +1 -0
- package/esm/store/index.d.ts +2 -0
- package/esm/store/index.d.ts.map +1 -1
- package/esm/store/index.js +2 -0
- package/esm/store/index.js.map +1 -1
- package/esm/store/messages/messagesSelectors.d.ts +1 -0
- package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
- package/esm/store/messages/messagesSelectors.js +1 -0
- package/esm/store/messages/messagesSelectors.js.map +1 -1
- package/esm/store/messages/messagesSlice.d.ts +7 -0
- package/esm/store/messages/messagesSlice.d.ts.map +1 -1
- package/esm/store/messages/messagesSlice.js +15 -2
- package/esm/store/messages/messagesSlice.js.map +1 -1
- package/esm/store/sideEffects/index.d.ts +1 -1
- package/esm/store/sideEffects/index.d.ts.map +1 -1
- package/esm/store/sideEffects/index.js +3 -1
- package/esm/store/sideEffects/index.js.map +1 -1
- package/esm/store/sideEffects/onEvent.d.ts +2 -0
- package/esm/store/sideEffects/onEvent.d.ts.map +1 -0
- package/esm/store/sideEffects/onEvent.js +92 -0
- package/esm/store/sideEffects/onEvent.js.map +1 -0
- package/esm/store/sideEffects/onThreadLoad.d.ts +1 -0
- package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
- package/esm/store/sideEffects/onThreadLoad.js +4 -1
- package/esm/store/sideEffects/onThreadLoad.js.map +1 -1
- package/esm/store/store.d.ts +15 -4
- package/esm/store/store.d.ts.map +1 -1
- package/esm/store/store.js +5 -6
- package/esm/store/store.js.map +1 -1
- package/esm/store/types.d.ts +2 -0
- package/esm/store/types.d.ts.map +1 -1
- package/esm/store/types.js +1 -0
- package/esm/store/types.js.map +1 -1
- package/package.json +12 -12
- package/styles/css/main.css +7 -3
- package/styles/css/main.css.map +1 -1
- package/styles/css/messages.css +7 -3
- package/styles/css/messages.css.map +1 -1
- package/styles/scss/messages.scss +8 -3
package/NOTICE
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
|
|
9
9
|
|
|
10
|
-
Date generated: 2024-11-
|
|
10
|
+
Date generated: 2024-11-18
|
|
11
11
|
|
|
12
|
-
Revision ID:
|
|
12
|
+
Revision ID: 845ec7436a84b54ffd8202da0d7b3e541d4bb5a8
|
|
13
13
|
|
|
14
14
|
================================================================================
|
|
15
15
|
================================================================================
|
|
@@ -170,7 +170,7 @@ Revision ID: cd08ae0ca9de334a320f4c2153889ab5a8b8dd4e
|
|
|
170
170
|
- @formatjs/intl-listformat (7.5.3) [MIT]
|
|
171
171
|
- @formatjs/intl-localematcher (0.5.2) [MIT]
|
|
172
172
|
- @formatjs/ts-transformer (3.13.9) [MIT]
|
|
173
|
-
- @gooddata/number-formatter (1.0.
|
|
173
|
+
- @gooddata/number-formatter (1.0.6) [MIT]
|
|
174
174
|
- @html-validate/stylish (4.2.0) [MIT]
|
|
175
175
|
- @isaacs/cliui (8.0.2) [ISC]
|
|
176
176
|
- @jest/schemas (29.6.3) [MIT]
|
|
@@ -6533,9 +6533,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
6533
6533
|
|
|
6534
6534
|
|
|
6535
6535
|
--------------------------------------------------------------------------------
|
|
6536
|
-
Package Title: @gooddata/number-formatter (1.0.
|
|
6536
|
+
Package Title: @gooddata/number-formatter (1.0.6)
|
|
6537
6537
|
|
|
6538
|
-
Package Locator: npm+@gooddata/number-formatter$1.0.
|
|
6538
|
+
Package Locator: npm+@gooddata/number-formatter$1.0.6
|
|
6539
6539
|
|
|
6540
6540
|
Package Depth: Direct
|
|
6541
6541
|
--------------------------------------------------------------------------------
|
|
@@ -71198,4 +71198,4 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
|
71198
71198
|
--------------------------------------------------------------------------------
|
|
71199
71199
|
--------------------------------------------------------------------------------
|
|
71200
71200
|
|
|
71201
|
-
Report Generated by FOSSA on 2024-11-
|
|
71201
|
+
Report Generated by FOSSA on 2024-11-18
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
3
|
-
import {
|
|
3
|
+
import { ChatEventHandler } from "../store/events.js";
|
|
4
4
|
/**
|
|
5
5
|
* Properties for the GenAIChat component.
|
|
6
6
|
* @alpha
|
|
@@ -15,9 +15,9 @@ export interface GenAIChatProps {
|
|
|
15
15
|
*/
|
|
16
16
|
workspace?: string;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Event handlers to subscribe to chat events.
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
eventHandlers?: ChatEventHandler[];
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* UI component that renders the Gen AI chat.
|
|
@@ -1 +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;
|
|
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;AAM/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAgB9C,CAAC"}
|
|
@@ -9,10 +9,10 @@ import { BackendProvider, useBackendStrict, useWorkspaceStrict, WorkspaceProvide
|
|
|
9
9
|
* UI component that renders the Gen AI chat.
|
|
10
10
|
* @alpha
|
|
11
11
|
*/
|
|
12
|
-
export const GenAIChat = ({ backend, workspace,
|
|
12
|
+
export const GenAIChat = ({ backend, workspace, eventHandlers }) => {
|
|
13
13
|
const effectiveBackend = useBackendStrict(backend);
|
|
14
14
|
const effectiveWorkspace = useWorkspaceStrict(workspace);
|
|
15
|
-
const genAIStore = useGenAIStore(effectiveBackend, effectiveWorkspace,
|
|
15
|
+
const genAIStore = useGenAIStore(effectiveBackend, effectiveWorkspace, eventHandlers);
|
|
16
16
|
return (React.createElement(IntlWrapper, null,
|
|
17
17
|
React.createElement(StoreProvider, { store: genAIStore },
|
|
18
18
|
React.createElement(BackendProvider, { backend: effectiveBackend },
|
|
@@ -1 +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;
|
|
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;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAsB5G;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE;IACzF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAEtF,OAAO,CACH,oBAAC,WAAW;QACR,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU;YAC5B,oBAAC,eAAe,IAAC,OAAO,EAAE,gBAAgB;gBACtC,oBAAC,iBAAiB,IAAC,SAAS,EAAE,kBAAkB;oBAC5C,oBAAC,gBAAgB,OAAG,CACJ,CACN,CACN,CACN,CACjB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
3
|
-
import {
|
|
3
|
+
import { ChatEventHandler } from "../store/events.js";
|
|
4
4
|
export type GenAIChatDialogProps = {
|
|
5
5
|
backend?: IAnalyticalBackend;
|
|
6
6
|
workspace?: string;
|
|
7
|
-
history?: Message[];
|
|
8
7
|
isOpen: boolean;
|
|
9
8
|
onClose: () => void;
|
|
9
|
+
eventHandlers?: ChatEventHandler[];
|
|
10
10
|
};
|
|
11
11
|
export declare const GenAIChatDialog: React.FC<GenAIChatDialogProps>;
|
|
12
12
|
//# sourceMappingURL=GenAIChatDialog.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiC1D,CAAC"}
|
|
@@ -5,10 +5,18 @@ import { useGenAIStore } from "../hooks/useGenAIStore.js";
|
|
|
5
5
|
import { IntlWrapper } from "../localization/IntlWrapper.js";
|
|
6
6
|
import { GenAIChatOverlay } from "./GenAIChatOverlay.js";
|
|
7
7
|
import { BackendProvider, useBackendStrict, useWorkspaceStrict, WorkspaceProvider } from "@gooddata/sdk-ui";
|
|
8
|
-
|
|
8
|
+
import { isOpenSelector, setOpenAction } from "../store/index.js";
|
|
9
|
+
export const GenAIChatDialog = ({ backend, workspace, isOpen, onClose, eventHandlers, }) => {
|
|
9
10
|
const effectiveBackend = useBackendStrict(backend);
|
|
10
11
|
const effectiveWorkspace = useWorkspaceStrict(workspace);
|
|
11
|
-
const genAIStore = useGenAIStore(effectiveBackend, effectiveWorkspace,
|
|
12
|
+
const genAIStore = useGenAIStore(effectiveBackend, effectiveWorkspace, eventHandlers);
|
|
13
|
+
React.useEffect(() => {
|
|
14
|
+
// Save the open state into the store
|
|
15
|
+
const storeIsOpen = isOpenSelector(genAIStore.getState());
|
|
16
|
+
if (storeIsOpen !== isOpen) {
|
|
17
|
+
genAIStore.dispatch(setOpenAction({ isOpen }));
|
|
18
|
+
}
|
|
19
|
+
}, [genAIStore, isOpen]);
|
|
12
20
|
if (!isOpen)
|
|
13
21
|
return null;
|
|
14
22
|
return (React.createElement(IntlWrapper, null,
|
|
@@ -1 +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;
|
|
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;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE5G,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlE,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC5D,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,aAAa,GAChB,EAAE,EAAE;IACD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAEtF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,qCAAqC;QACrC,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACH,oBAAC,WAAW;QACR,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU;YAC5B,oBAAC,eAAe,IAAC,OAAO,EAAE,gBAAgB;gBACtC,oBAAC,iBAAiB,IAAC,SAAS,EAAE,kBAAkB;oBAC5C,oBAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,GAAI,CACtB,CACN,CACN,CACN,CACjB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { clearThreadAction } from "../store/index.js";
|
|
2
|
+
import { clearThreadAction, setFullscreenAction } from "../store/index.js";
|
|
3
3
|
import { WrappedComponentProps } from "react-intl";
|
|
4
4
|
type GenAIChatOverlayOwnProps = {
|
|
5
5
|
onClose: () => void;
|
|
6
6
|
};
|
|
7
7
|
type GenAIChatOverlayStateProps = {
|
|
8
8
|
hasMessages: boolean;
|
|
9
|
+
isFullscreen: boolean;
|
|
9
10
|
};
|
|
10
11
|
type GenAIChatOverlayDispatchProps = {
|
|
11
12
|
clearThread: typeof clearThreadAction;
|
|
13
|
+
setFullscreen: typeof setFullscreenAction;
|
|
12
14
|
};
|
|
13
15
|
export type GenAIChatOverlayProps = GenAIChatOverlayOwnProps & GenAIChatOverlayStateProps & GenAIChatOverlayDispatchProps;
|
|
14
16
|
export declare const GenAIChatOverlay: import("react-redux").ConnectedComponent<React.FC<import("react-intl").WithIntlProps<GenAIChatOverlayOwnProps & GenAIChatOverlayStateProps & GenAIChatOverlayDispatchProps & WrappedComponentProps>> & {
|
|
15
17
|
WrappedComponent: React.ComponentType<GenAIChatOverlayOwnProps & GenAIChatOverlayStateProps & GenAIChatOverlayDispatchProps & WrappedComponentProps>;
|
|
16
18
|
}, import("react-redux").Omit<Omit<GenAIChatOverlayOwnProps & GenAIChatOverlayStateProps & GenAIChatOverlayDispatchProps & WrappedComponentProps, "intl"> & {
|
|
17
19
|
forwardedRef?: React.Ref<any> | undefined;
|
|
18
|
-
}, "clearThread" | "hasMessages">>;
|
|
20
|
+
}, "isFullscreen" | "clearThread" | "hasMessages" | "setFullscreen">>;
|
|
19
21
|
export {};
|
|
20
22
|
//# sourceMappingURL=GenAIChatOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EACH,iBAAiB,EAIjB,mBAAmB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAc,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/D,KAAK,wBAAwB,GAAG;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACjC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IACtC,aAAa,EAAE,OAAO,mBAAmB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GACxD,0BAA0B,GAC1B,6BAA6B,CAAC;AAwElC,eAAO,MAAM,gBAAgB;;;;qEAGW,CAAC"}
|
|
@@ -2,34 +2,35 @@
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { GenAIChatWrapper } from "./GenAIChatWrapper.js";
|
|
4
4
|
import { Icon, Overlay } from "@gooddata/sdk-ui-kit";
|
|
5
|
-
import { clearThreadAction, hasMessagesSelector } from "../store/index.js";
|
|
5
|
+
import { clearThreadAction, hasMessagesSelector, isFullscreenSelector, setFullscreenAction, } from "../store/index.js";
|
|
6
6
|
import cx from "classnames";
|
|
7
7
|
import { HeaderIcon } from "./HeaderIcon.js";
|
|
8
8
|
import { connect } from "react-redux";
|
|
9
9
|
import { injectIntl } from "react-intl";
|
|
10
|
-
const GenAIChatOverlayComponent = ({ onClose, hasMessages, clearThread, intl, }) => {
|
|
11
|
-
const
|
|
12
|
-
const isModal = isFullScreen;
|
|
10
|
+
const GenAIChatOverlayComponent = ({ onClose, hasMessages, clearThread, intl, isFullscreen, setFullscreen, }) => {
|
|
11
|
+
const isModal = isFullscreen;
|
|
13
12
|
const classNames = cx("gd-gen-ai-chat__window", {
|
|
14
|
-
"gd-gen-ai-chat__window--fullscreen":
|
|
13
|
+
"gd-gen-ai-chat__window--fullscreen": isFullscreen,
|
|
15
14
|
});
|
|
16
15
|
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 },
|
|
17
16
|
React.createElement("div", { className: classNames },
|
|
18
17
|
React.createElement("div", { className: "gd-gen-ai-chat__window__header" },
|
|
19
18
|
React.createElement(HeaderIcon, { Icon: Icon.Undo, className: "gd-gen-ai-chat__window__header__icon--reset", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.reset-tooltip" }), onClick: () => clearThread(), disabled: !hasMessages }),
|
|
20
19
|
React.createElement("div", { className: "gd-gen-ai-chat__window__header__gap" }),
|
|
21
|
-
React.createElement(HeaderIcon, { Icon:
|
|
20
|
+
React.createElement(HeaderIcon, { Icon: isFullscreen ? Icon.Contract : Icon.Expand, className: "gd-gen-ai-chat__window__header__icon--fullscreen", tooltip: isFullscreen
|
|
22
21
|
? intl.formatMessage({ id: "gd.gen-ai.header.contract-tooltip" })
|
|
23
|
-
: intl.formatMessage({ id: "gd.gen-ai.header.expand-tooltip" }), onClick: () =>
|
|
22
|
+
: intl.formatMessage({ id: "gd.gen-ai.header.expand-tooltip" }), onClick: () => setFullscreen({ isFullscreen: !isFullscreen }) }),
|
|
24
23
|
React.createElement("div", { className: "gd-gen-ai-chat__window__header__divider" }),
|
|
25
24
|
React.createElement(HeaderIcon, { Icon: Icon.Close, className: "gd-gen-ai-chat__window__header__icon--close", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.close-tooltip" }), onClick: onClose })),
|
|
26
25
|
React.createElement(GenAIChatWrapper, null))));
|
|
27
26
|
};
|
|
28
27
|
const mapStateToProps = (state) => ({
|
|
29
28
|
hasMessages: hasMessagesSelector(state),
|
|
29
|
+
isFullscreen: isFullscreenSelector(state),
|
|
30
30
|
});
|
|
31
31
|
const mapDispatchToProps = {
|
|
32
32
|
clearThread: clearThreadAction,
|
|
33
|
+
setFullscreen: setFullscreenAction,
|
|
33
34
|
};
|
|
34
35
|
export const GenAIChatOverlay = connect(mapStateToProps, mapDispatchToProps)(injectIntl(GenAIChatOverlayComponent));
|
|
35
36
|
//# sourceMappingURL=GenAIChatOverlay.js.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.js","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAA6B,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,OAAO,eAAe,CAAC;CAC3C,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantMessage.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAA6B,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,OAAO,eAAe,CAAC;CAC3C,CAAC;AA+EF,eAAO,MAAM,yBAAyB;;;;sBAGM,CAAC"}
|
|
@@ -16,7 +16,10 @@ const AssistantMessageComponentCore = ({ message, setUserFeedback, intl, }) => {
|
|
|
16
16
|
React.createElement(AgentIcon, { loading: !message.complete, error: hasError, cancelled: message.cancelled, "aria-label": intl.formatMessage(labelMessage) }),
|
|
17
17
|
React.createElement("div", { className: "gd-gen-ai-chat__messages__message__contents_wrap" },
|
|
18
18
|
React.createElement(MessageContents, { useMarkdown: true, content: message.content, isComplete: Boolean(message.complete || message.cancelled), isCancelled: message.cancelled }),
|
|
19
|
-
React.createElement("div", { className:
|
|
19
|
+
React.createElement("div", { className: cx({
|
|
20
|
+
"gd-gen-ai-chat__messages__feedback": true,
|
|
21
|
+
"gd-gen-ai-chat__messages__feedback--assigned": message.feedback !== "NONE",
|
|
22
|
+
}) },
|
|
20
23
|
React.createElement("button", { className: cx({
|
|
21
24
|
"gd-gen-ai-chat__messages__feedback__button": true,
|
|
22
25
|
"gd-gen-ai-chat__messages__feedback__button--positive": message.feedback === "POSITIVE",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessage.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessage.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAoB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAyB,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAOvD,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAEvE,MAAM,6BAA6B,GAA4D,CAAC,EAC5F,OAAO,EACP,eAAe,EACf,IAAI,GACP,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,EAAE,CACjB,mCAAmC,EACnC,8CAA8C,EAC9C,OAAO,CAAC,SAAS,IAAI,8CAA8C,CACtE,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEvD,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU;QACtB,oBAAC,SAAS,IACN,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,EAC1B,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,OAAO,CAAC,SAAS,gBAChB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAC9C;QACF,6BAAK,SAAS,EAAC,kDAAkD;YAC7D,oBAAC,eAAe,IACZ,WAAW,QACX,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,EAC1D,WAAW,EAAE,OAAO,CAAC,SAAS,GAChC;YACF,
|
|
1
|
+
{"version":3,"file":"AssistantMessage.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
2
|
-
import {
|
|
3
|
-
export declare const useGenAIStore: (backend: IAnalyticalBackend, workspace: string,
|
|
2
|
+
import { ChatEventHandler, EventDispatcher } from "../store/events.js";
|
|
3
|
+
export declare const useGenAIStore: (backend: IAnalyticalBackend, workspace: string, eventHandlers?: ChatEventHandler[]) => import("@reduxjs/toolkit/dist/configureStore.js").ToolkitStore<{
|
|
4
4
|
messages: {
|
|
5
5
|
verbose: boolean;
|
|
6
|
-
messages: Record<string, Message>;
|
|
6
|
+
messages: Record<string, import("../model.js").Message>;
|
|
7
7
|
messageOrder: string[];
|
|
8
8
|
globalError?: string | undefined;
|
|
9
9
|
asyncProcess?: "loading" | "clearing" | "evaluating" | undefined;
|
|
10
|
+
threadId?: string | undefined;
|
|
11
|
+
};
|
|
12
|
+
chatWindow: {
|
|
13
|
+
isOpen: boolean;
|
|
14
|
+
isFullscreen: boolean;
|
|
10
15
|
};
|
|
11
16
|
}, import("@reduxjs/toolkit").AnyAction, import("@reduxjs/toolkit").MiddlewareArray<[import("redux-saga").SagaMiddleware<{
|
|
12
17
|
backend: IAnalyticalBackend;
|
|
13
18
|
workspace: string;
|
|
19
|
+
eventDispatcher: EventDispatcher;
|
|
14
20
|
}>, import("@reduxjs/toolkit").ThunkMiddleware<{
|
|
15
21
|
messages: {
|
|
16
22
|
verbose: boolean;
|
|
17
|
-
messages: Record<string, Message>;
|
|
23
|
+
messages: Record<string, import("../model.js").Message>;
|
|
18
24
|
messageOrder: string[];
|
|
19
25
|
globalError?: string | undefined;
|
|
20
26
|
asyncProcess?: "loading" | "clearing" | "evaluating" | undefined;
|
|
27
|
+
threadId?: string | undefined;
|
|
28
|
+
};
|
|
29
|
+
chatWindow: {
|
|
30
|
+
isOpen: boolean;
|
|
31
|
+
isFullscreen: boolean;
|
|
21
32
|
};
|
|
22
33
|
}, import("@reduxjs/toolkit").AnyAction>]>>;
|
|
23
34
|
//# sourceMappingURL=useGenAIStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGenAIStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useGenAIStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useGenAIStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useGenAIStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEvE,eAAO,MAAM,aAAa,YACb,kBAAkB,aAChB,MAAM,kBACD,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAoBrC,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
// (C) 2024 GoodData Corporation
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { getStore } from "../store/index.js";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { EventDispatcher } from "../store/events.js";
|
|
5
|
+
export const useGenAIStore = (backend, workspace, eventHandlers) => {
|
|
6
|
+
// Instantiate EventDispatcher. It's a designed to hold a reference to the handlers, so that
|
|
7
|
+
// we don't update the context every time a new array of handlers is passed.
|
|
8
|
+
// Similar to how React handles event listeners.
|
|
9
|
+
const eventDispatcher = React.useMemo(() => new EventDispatcher(), []);
|
|
6
10
|
// Initialize new Redux Store for each instance of GenAI Chat
|
|
7
11
|
// It OK to discard the store when backend or workspace changes
|
|
8
|
-
|
|
9
|
-
return getStore(backend, workspace,
|
|
10
|
-
}, [backend, workspace]);
|
|
12
|
+
const store = React.useMemo(() => {
|
|
13
|
+
return getStore(backend, workspace, eventDispatcher);
|
|
14
|
+
}, [backend, workspace, eventDispatcher]);
|
|
15
|
+
React.useEffect(() => {
|
|
16
|
+
if (eventHandlers) {
|
|
17
|
+
eventDispatcher.setHandlers(eventHandlers);
|
|
18
|
+
}
|
|
19
|
+
}, [eventHandlers, eventDispatcher]);
|
|
20
|
+
return store;
|
|
11
21
|
};
|
|
12
22
|
//# sourceMappingURL=useGenAIStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGenAIStore.js","sourceRoot":"","sources":["../../src/hooks/useGenAIStore.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useGenAIStore.js","sourceRoot":"","sources":["../../src/hooks/useGenAIStore.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAoB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,OAA2B,EAC3B,SAAiB,EACjB,aAAkC,EACpC,EAAE;IACA,4FAA4F;IAC5F,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,6DAA6D;IAC7D,+DAA+D;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IAE1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,aAAa,EAAE,CAAC;YAChB,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
|
package/esm/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@
|
|
|
6
6
|
export type { GenAIChatProps } from "./components/GenAIChat.js";
|
|
7
7
|
export { GenAIChat } from "./components/GenAIChat.js";
|
|
8
8
|
export type { Message, BaseMessage, UserMessage, AssistantMessage, Contents, TextContents, SearchContents, RoutingContents, VisualizationContents, ErrorContents, } from "./model.js";
|
|
9
|
+
export { type ChatEventHandler, type BaseEvent, type ChatAssistantMessageEvent, type ChatUserMessageEvent, type ChatClosedEvent, type ChatOpenedEvent, type ChatResetEvent, type ChatFeedbackEvent, type ChatEvent, isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, } from "./store/events.js";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,YAAY,EACR,OAAO,EACP,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,aAAa,GAChB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,YAAY,EACR,OAAO,EACP,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,aAAa,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,mBAAmB,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
// (C) 2024 GoodData Corporation
|
|
2
2
|
export { GenAIChat } from "./components/GenAIChat.js";
|
|
3
|
+
export { isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, } from "./store/events.js";
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAShC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAShC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAatD,OAAO,EAUH,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,mBAAmB,CAAC"}
|
package/esm/sdk-ui-gen-ai.d.ts
CHANGED
|
@@ -19,6 +19,14 @@ export declare type AssistantMessage = BaseMessage & {
|
|
|
19
19
|
feedback: GenAIChatInteractionUserFeedback;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* A common event definition for the Chat component.
|
|
24
|
+
* @alpha
|
|
25
|
+
*/
|
|
26
|
+
export declare type BaseEvent = {
|
|
27
|
+
threadId?: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
22
30
|
/**
|
|
23
31
|
* @alpha
|
|
24
32
|
*/
|
|
@@ -49,6 +57,80 @@ export declare type BaseMessage = {
|
|
|
49
57
|
content: Contents[];
|
|
50
58
|
};
|
|
51
59
|
|
|
60
|
+
/**
|
|
61
|
+
* A chat assistant message event.
|
|
62
|
+
* @alpha
|
|
63
|
+
*/
|
|
64
|
+
export declare type ChatAssistantMessageEvent = BaseEvent & {
|
|
65
|
+
type: "chatAssistantMessage";
|
|
66
|
+
interactionId?: number;
|
|
67
|
+
useCase: string;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A chat window closed event.
|
|
72
|
+
* @alpha
|
|
73
|
+
*/
|
|
74
|
+
export declare type ChatClosedEvent = BaseEvent & {
|
|
75
|
+
type: "chatClosed";
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* A union type for all chat events.
|
|
80
|
+
* @alpha
|
|
81
|
+
*/
|
|
82
|
+
export declare type ChatEvent = ChatOpenedEvent | ChatClosedEvent | ChatResetEvent | ChatUserMessageEvent | ChatAssistantMessageEvent | ChatFeedbackEvent;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* An event handler for the Chat component.
|
|
86
|
+
* @alpha
|
|
87
|
+
*/
|
|
88
|
+
export declare interface ChatEventHandler<TEvent extends ChatEvent = any> {
|
|
89
|
+
/**
|
|
90
|
+
* A guard for a specific event type.
|
|
91
|
+
*/
|
|
92
|
+
eval: (event: ChatEvent) => event is TEvent;
|
|
93
|
+
/**
|
|
94
|
+
* Event handler.
|
|
95
|
+
*/
|
|
96
|
+
handler: (event: TEvent) => void;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* A chat feedback event.
|
|
101
|
+
* @alpha
|
|
102
|
+
*/
|
|
103
|
+
export declare type ChatFeedbackEvent = BaseEvent & {
|
|
104
|
+
type: "chatFeedback";
|
|
105
|
+
interactionId?: number;
|
|
106
|
+
feedback: "POSITIVE" | "NEGATIVE" | "NONE";
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* A chat window opened event.
|
|
111
|
+
* @alpha
|
|
112
|
+
*/
|
|
113
|
+
export declare type ChatOpenedEvent = BaseEvent & {
|
|
114
|
+
type: "chatOpened";
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* A chat conversation clearing event.
|
|
119
|
+
* @alpha
|
|
120
|
+
*/
|
|
121
|
+
export declare type ChatResetEvent = BaseEvent & {
|
|
122
|
+
type: "chatReset";
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* A chat user message event.
|
|
127
|
+
* @alpha
|
|
128
|
+
*/
|
|
129
|
+
export declare type ChatUserMessageEvent = BaseEvent & {
|
|
130
|
+
type: "chatUserMessage";
|
|
131
|
+
question: string;
|
|
132
|
+
};
|
|
133
|
+
|
|
52
134
|
/**
|
|
53
135
|
* @alpha
|
|
54
136
|
*/
|
|
@@ -82,11 +164,47 @@ export declare interface GenAIChatProps {
|
|
|
82
164
|
*/
|
|
83
165
|
workspace?: string;
|
|
84
166
|
/**
|
|
85
|
-
*
|
|
167
|
+
* Event handlers to subscribe to chat events.
|
|
86
168
|
*/
|
|
87
|
-
|
|
169
|
+
eventHandlers?: ChatEventHandler[];
|
|
88
170
|
}
|
|
89
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Type guard for the ChatAssistantMessageEvent.
|
|
174
|
+
* @alpha
|
|
175
|
+
*/
|
|
176
|
+
export declare const isChatAssistantMessageEvent: (event: ChatEvent) => event is ChatAssistantMessageEvent;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Type guard for the ChatClosedEvent.
|
|
180
|
+
* @alpha
|
|
181
|
+
*/
|
|
182
|
+
export declare const isChatClosedEvent: (event: ChatEvent) => event is ChatClosedEvent;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Type guard for the ChatFeedbackEvent.
|
|
186
|
+
* @alpha
|
|
187
|
+
*/
|
|
188
|
+
export declare const isChatFeedbackEvent: (event: ChatEvent) => event is ChatFeedbackEvent;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Type guard for the ChatOpenedEvent.
|
|
192
|
+
* @alpha
|
|
193
|
+
*/
|
|
194
|
+
export declare const isChatOpenedEvent: (event: ChatEvent) => event is ChatOpenedEvent;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Type guard for the ChatResetEvent.
|
|
198
|
+
* @alpha
|
|
199
|
+
*/
|
|
200
|
+
export declare const isChatResetEvent: (event: ChatEvent) => event is ChatResetEvent;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Type guard for the ChatUserMessageEvent.
|
|
204
|
+
* @alpha
|
|
205
|
+
*/
|
|
206
|
+
export declare const isChatUserMessageEvent: (event: ChatEvent) => event is ChatUserMessageEvent;
|
|
207
|
+
|
|
90
208
|
/**
|
|
91
209
|
* All messages that can be stored in history.
|
|
92
210
|
* @alpha
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatWindowSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSelectors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGxD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import { createSelector } from "@reduxjs/toolkit";
|
|
3
|
+
import { chatWindowSliceName } from "./chatWindowSlice.js";
|
|
4
|
+
const chatWindowSliceSelector = (state) => state[chatWindowSliceName];
|
|
5
|
+
export const isOpenSelector = createSelector(chatWindowSliceSelector, (state) => state.isOpen);
|
|
6
|
+
export const isFullscreenSelector = createSelector(chatWindowSliceSelector, (state) => state.isFullscreen);
|
|
7
|
+
//# sourceMappingURL=chatWindowSelectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatWindowSelectors.js","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSelectors.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,uBAAuB,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,cAAc,GAAkC,cAAc,CACvE,uBAAuB,EACvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAkC,cAAc,CAC7E,uBAAuB,EACvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAChC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type ChatWindowSliceState = {
|
|
2
|
+
/**
|
|
3
|
+
* Defines if the chat window is open.
|
|
4
|
+
*/
|
|
5
|
+
isOpen: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Defines if the chat window is in fullscreen mode.
|
|
8
|
+
*/
|
|
9
|
+
isFullscreen: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const chatWindowSliceName = "chatWindow";
|
|
12
|
+
export declare const chatWindowSliceReducer: import("@reduxjs/toolkit").Reducer<ChatWindowSliceState>;
|
|
13
|
+
export declare const setOpenAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
14
|
+
isOpen: boolean;
|
|
15
|
+
}, "chatWindow/setOpenAction">, setFullscreenAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
16
|
+
isFullscreen: boolean;
|
|
17
|
+
}, "chatWindow/setFullscreenAction">;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=chatWindowSlice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatWindowSlice.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAuBhD,eAAO,MAAM,sBAAsB,0DAA0B,CAAC;AAC9D,eAAO,MAAQ,aAAa;YAboD,OAAO;gCAazD,mBAAmB;kBARwB,OAAO;oCAQH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import { createSlice } from "@reduxjs/toolkit";
|
|
3
|
+
export const chatWindowSliceName = "chatWindow";
|
|
4
|
+
const initialState = {
|
|
5
|
+
isOpen: false,
|
|
6
|
+
isFullscreen: false,
|
|
7
|
+
};
|
|
8
|
+
const chatWindowSlice = createSlice({
|
|
9
|
+
name: chatWindowSliceName,
|
|
10
|
+
initialState,
|
|
11
|
+
reducers: {
|
|
12
|
+
setOpenAction: (state, { payload: { isOpen } }) => {
|
|
13
|
+
state.isOpen = isOpen;
|
|
14
|
+
},
|
|
15
|
+
setFullscreenAction: (state, { payload: { isFullscreen } }) => {
|
|
16
|
+
state.isFullscreen = isFullscreen;
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
export const chatWindowSliceReducer = chatWindowSlice.reducer;
|
|
21
|
+
export const { setOpenAction, setFullscreenAction } = chatWindowSlice.actions;
|
|
22
|
+
//# sourceMappingURL=chatWindowSlice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatWindowSlice.js","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAa9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD,MAAM,YAAY,GAAyB;IACvC,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,eAAe,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,mBAAmB;IACzB,YAAY;IACZ,QAAQ,EAAE;QACN,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAsC,EAAE,EAAE;YAClF,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,mBAAmB,EAAE,CACjB,KAAK,EACL,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAA4C,EACzE,EAAE;YACA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QACtC,CAAC;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,OAAO,CAAC;AAC9D,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC"}
|