@gooddata/sdk-ui-gen-ai 10.16.0-alpha.3 → 10.16.0-alpha.5

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.
Files changed (74) hide show
  1. package/esm/components/GenAIChat.d.ts +3 -3
  2. package/esm/components/GenAIChat.d.ts.map +1 -1
  3. package/esm/components/GenAIChat.js +2 -2
  4. package/esm/components/GenAIChat.js.map +1 -1
  5. package/esm/components/GenAIChatDialog.d.ts +2 -2
  6. package/esm/components/GenAIChatDialog.d.ts.map +1 -1
  7. package/esm/components/GenAIChatDialog.js +10 -2
  8. package/esm/components/GenAIChatDialog.js.map +1 -1
  9. package/esm/components/GenAIChatOverlay.d.ts +4 -2
  10. package/esm/components/GenAIChatOverlay.d.ts.map +1 -1
  11. package/esm/components/GenAIChatOverlay.js +8 -7
  12. package/esm/components/GenAIChatOverlay.js.map +1 -1
  13. package/esm/components/messages/AssistantMessage.d.ts.map +1 -1
  14. package/esm/components/messages/AssistantMessage.js +4 -1
  15. package/esm/components/messages/AssistantMessage.js.map +1 -1
  16. package/esm/hooks/useGenAIStore.d.ts +15 -4
  17. package/esm/hooks/useGenAIStore.d.ts.map +1 -1
  18. package/esm/hooks/useGenAIStore.js +15 -5
  19. package/esm/hooks/useGenAIStore.js.map +1 -1
  20. package/esm/index.d.ts +1 -0
  21. package/esm/index.d.ts.map +1 -1
  22. package/esm/index.js +1 -0
  23. package/esm/index.js.map +1 -1
  24. package/esm/sdk-ui-gen-ai.d.ts +120 -2
  25. package/esm/store/chatWindow/chatWindowSelectors.d.ts +4 -0
  26. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -0
  27. package/esm/store/chatWindow/chatWindowSelectors.js +7 -0
  28. package/esm/store/chatWindow/chatWindowSelectors.js.map +1 -0
  29. package/esm/store/chatWindow/chatWindowSlice.d.ts +19 -0
  30. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -0
  31. package/esm/store/chatWindow/chatWindowSlice.js +22 -0
  32. package/esm/store/chatWindow/chatWindowSlice.js.map +1 -0
  33. package/esm/store/events.d.ts +109 -0
  34. package/esm/store/events.d.ts.map +1 -0
  35. package/esm/store/events.js +57 -0
  36. package/esm/store/events.js.map +1 -0
  37. package/esm/store/index.d.ts +2 -0
  38. package/esm/store/index.d.ts.map +1 -1
  39. package/esm/store/index.js +2 -0
  40. package/esm/store/index.js.map +1 -1
  41. package/esm/store/messages/messagesSelectors.d.ts +1 -0
  42. package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
  43. package/esm/store/messages/messagesSelectors.js +1 -0
  44. package/esm/store/messages/messagesSelectors.js.map +1 -1
  45. package/esm/store/messages/messagesSlice.d.ts +7 -0
  46. package/esm/store/messages/messagesSlice.d.ts.map +1 -1
  47. package/esm/store/messages/messagesSlice.js +15 -2
  48. package/esm/store/messages/messagesSlice.js.map +1 -1
  49. package/esm/store/sideEffects/index.d.ts +1 -1
  50. package/esm/store/sideEffects/index.d.ts.map +1 -1
  51. package/esm/store/sideEffects/index.js +3 -1
  52. package/esm/store/sideEffects/index.js.map +1 -1
  53. package/esm/store/sideEffects/onEvent.d.ts +2 -0
  54. package/esm/store/sideEffects/onEvent.d.ts.map +1 -0
  55. package/esm/store/sideEffects/onEvent.js +92 -0
  56. package/esm/store/sideEffects/onEvent.js.map +1 -0
  57. package/esm/store/sideEffects/onThreadLoad.d.ts +1 -0
  58. package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
  59. package/esm/store/sideEffects/onThreadLoad.js +4 -1
  60. package/esm/store/sideEffects/onThreadLoad.js.map +1 -1
  61. package/esm/store/store.d.ts +15 -4
  62. package/esm/store/store.d.ts.map +1 -1
  63. package/esm/store/store.js +5 -6
  64. package/esm/store/store.js.map +1 -1
  65. package/esm/store/types.d.ts +2 -0
  66. package/esm/store/types.d.ts.map +1 -1
  67. package/esm/store/types.js +1 -0
  68. package/esm/store/types.js.map +1 -1
  69. package/package.json +12 -12
  70. package/styles/css/main.css +7 -3
  71. package/styles/css/main.css.map +1 -1
  72. package/styles/css/messages.css +7 -3
  73. package/styles/css/messages.css.map +1 -1
  74. package/styles/scss/messages.scss +8 -3
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
- import { Message } from "../model.js";
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
- * A conversation history in case you're resuming the chat.
18
+ * Event handlers to subscribe to chat events.
19
19
  */
20
- history?: Message[];
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;AAI/D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC;;;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,CAgB9C,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, history }) => {
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, history);
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;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAqB5G;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;IACnF,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,OAAO,CAAC,CAAC;IAEhF,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
+ {"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 { Message } from "../model.js";
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;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,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,CAwB1D,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
- export const GenAIChatDialog = ({ backend, workspace, history, isOpen, onClose, }) => {
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, history);
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;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAU5G,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC5D,OAAO,EACP,SAAS,EACT,OAAO,EACP,MAAM,EACN,OAAO,GACV,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,OAAO,CAAC,CAAC;IAEhF,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
+ {"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,EAAE,iBAAiB,EAAkC,MAAM,mBAAmB,CAAC;AAItF,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;CACxB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACjC,WAAW,EAAE,OAAO,iBAAiB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GACxD,0BAA0B,GAC1B,6BAA6B,CAAC;AAsElC,eAAO,MAAM,gBAAgB;;;;kCAGW,CAAC"}
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 [isFullScreen, setIsFullScreen] = React.useState(false);
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": isFullScreen,
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: isFullScreen ? Icon.Contract : Icon.Expand, className: "gd-gen-ai-chat__window__header__icon--fullscreen", tooltip: isFullScreen
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: () => setIsFullScreen(!isFullScreen) }),
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":"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"}
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;AA0EF,eAAO,MAAM,yBAAyB;;;;sBAGM,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: "gd-gen-ai-chat__messages__feedback" },
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,6BAAK,SAAS,EAAC,oCAAoC;gBAC/C,gCACI,SAAS,EAAE,EAAE,CAAC;wBACV,4CAA4C,EAAE,IAAI;wBAClD,sDAAsD,EAClD,OAAO,CAAC,QAAQ,KAAK,UAAU;qBACtC,CAAC,EACF,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CACV,eAAe,CAAC;wBACZ,kBAAkB,EAAE,OAAO,CAAC,OAAO;wBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;qBAClE,CAAC;oBAGN,oBAAC,IAAI,CAAC,QAAQ,OAAG,CACZ;gBACT,gCACI,SAAS,EAAE,EAAE,CAAC;wBACV,4CAA4C,EAAE,IAAI;wBAClD,sDAAsD,EAClD,OAAO,CAAC,QAAQ,KAAK,UAAU;qBACtC,CAAC,EACF,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CACV,eAAe,CAAC;wBACZ,kBAAkB,EAAE,OAAO,CAAC,OAAO;wBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;qBAClE,CAAC;oBAGN,oBAAC,IAAI,CAAC,UAAU,OAAG,CACd,CACP,CACJ,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACvB,eAAe;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC5C,IAAI,EACJ,kBAAkB,CACrB,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC,CAAC"}
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 { Message } from "../model.js";
3
- export declare const useGenAIStore: (backend: IAnalyticalBackend, workspace: string, history?: Message[]) => import("@reduxjs/toolkit/dist/configureStore.js").ToolkitStore<{
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,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,eAAO,MAAM,aAAa,YAAa,kBAAkB,aAAa,MAAM,YAAY,OAAO,EAAE;;;;;;;;;;;;;;;;;;;2CAQhG,CAAC"}
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
- export const useGenAIStore = (backend, workspace, history) => {
5
- const initialHistory = React.useRef(history ?? []);
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
- return React.useMemo(() => {
9
- return getStore(backend, workspace, initialHistory.current);
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;AAI7C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA2B,EAAE,SAAiB,EAAE,OAAmB,EAAE,EAAE;IACjG,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAY,OAAO,IAAI,EAAE,CAAC,CAAC;IAE9D,6DAA6D;IAC7D,+DAA+D;IAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtB,OAAO,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7B,CAAC,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
@@ -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"}
@@ -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
- * A conversation history in case you're resuming the chat.
167
+ * Event handlers to subscribe to chat events.
86
168
  */
87
- history?: Message[];
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,4 @@
1
+ import { RootState } from "../types.js";
2
+ export declare const isOpenSelector: (state: RootState) => boolean;
3
+ export declare const isFullscreenSelector: (state: RootState) => boolean;
4
+ //# sourceMappingURL=chatWindowSelectors.d.ts.map
@@ -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"}