@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.
Files changed (75) hide show
  1. package/NOTICE +6 -6
  2. package/esm/components/GenAIChat.d.ts +3 -3
  3. package/esm/components/GenAIChat.d.ts.map +1 -1
  4. package/esm/components/GenAIChat.js +2 -2
  5. package/esm/components/GenAIChat.js.map +1 -1
  6. package/esm/components/GenAIChatDialog.d.ts +2 -2
  7. package/esm/components/GenAIChatDialog.d.ts.map +1 -1
  8. package/esm/components/GenAIChatDialog.js +10 -2
  9. package/esm/components/GenAIChatDialog.js.map +1 -1
  10. package/esm/components/GenAIChatOverlay.d.ts +4 -2
  11. package/esm/components/GenAIChatOverlay.d.ts.map +1 -1
  12. package/esm/components/GenAIChatOverlay.js +8 -7
  13. package/esm/components/GenAIChatOverlay.js.map +1 -1
  14. package/esm/components/messages/AssistantMessage.d.ts.map +1 -1
  15. package/esm/components/messages/AssistantMessage.js +4 -1
  16. package/esm/components/messages/AssistantMessage.js.map +1 -1
  17. package/esm/hooks/useGenAIStore.d.ts +15 -4
  18. package/esm/hooks/useGenAIStore.d.ts.map +1 -1
  19. package/esm/hooks/useGenAIStore.js +15 -5
  20. package/esm/hooks/useGenAIStore.js.map +1 -1
  21. package/esm/index.d.ts +1 -0
  22. package/esm/index.d.ts.map +1 -1
  23. package/esm/index.js +1 -0
  24. package/esm/index.js.map +1 -1
  25. package/esm/sdk-ui-gen-ai.d.ts +120 -2
  26. package/esm/store/chatWindow/chatWindowSelectors.d.ts +4 -0
  27. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -0
  28. package/esm/store/chatWindow/chatWindowSelectors.js +7 -0
  29. package/esm/store/chatWindow/chatWindowSelectors.js.map +1 -0
  30. package/esm/store/chatWindow/chatWindowSlice.d.ts +19 -0
  31. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -0
  32. package/esm/store/chatWindow/chatWindowSlice.js +22 -0
  33. package/esm/store/chatWindow/chatWindowSlice.js.map +1 -0
  34. package/esm/store/events.d.ts +109 -0
  35. package/esm/store/events.d.ts.map +1 -0
  36. package/esm/store/events.js +57 -0
  37. package/esm/store/events.js.map +1 -0
  38. package/esm/store/index.d.ts +2 -0
  39. package/esm/store/index.d.ts.map +1 -1
  40. package/esm/store/index.js +2 -0
  41. package/esm/store/index.js.map +1 -1
  42. package/esm/store/messages/messagesSelectors.d.ts +1 -0
  43. package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
  44. package/esm/store/messages/messagesSelectors.js +1 -0
  45. package/esm/store/messages/messagesSelectors.js.map +1 -1
  46. package/esm/store/messages/messagesSlice.d.ts +7 -0
  47. package/esm/store/messages/messagesSlice.d.ts.map +1 -1
  48. package/esm/store/messages/messagesSlice.js +15 -2
  49. package/esm/store/messages/messagesSlice.js.map +1 -1
  50. package/esm/store/sideEffects/index.d.ts +1 -1
  51. package/esm/store/sideEffects/index.d.ts.map +1 -1
  52. package/esm/store/sideEffects/index.js +3 -1
  53. package/esm/store/sideEffects/index.js.map +1 -1
  54. package/esm/store/sideEffects/onEvent.d.ts +2 -0
  55. package/esm/store/sideEffects/onEvent.d.ts.map +1 -0
  56. package/esm/store/sideEffects/onEvent.js +92 -0
  57. package/esm/store/sideEffects/onEvent.js.map +1 -0
  58. package/esm/store/sideEffects/onThreadLoad.d.ts +1 -0
  59. package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
  60. package/esm/store/sideEffects/onThreadLoad.js +4 -1
  61. package/esm/store/sideEffects/onThreadLoad.js.map +1 -1
  62. package/esm/store/store.d.ts +15 -4
  63. package/esm/store/store.d.ts.map +1 -1
  64. package/esm/store/store.js +5 -6
  65. package/esm/store/store.js.map +1 -1
  66. package/esm/store/types.d.ts +2 -0
  67. package/esm/store/types.d.ts.map +1 -1
  68. package/esm/store/types.js +1 -0
  69. package/esm/store/types.js.map +1 -1
  70. package/package.json +12 -12
  71. package/styles/css/main.css +7 -3
  72. package/styles/css/main.css.map +1 -1
  73. package/styles/css/messages.css +7 -3
  74. package/styles/css/messages.css.map +1 -1
  75. 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-11
10
+ Date generated: 2024-11-18
11
11
 
12
- Revision ID: cd08ae0ca9de334a320f4c2153889ab5a8b8dd4e
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.5) [MIT]
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.5)
6536
+ Package Title: @gooddata/number-formatter (1.0.6)
6537
6537
 
6538
- Package Locator: npm+@gooddata/number-formatter$1.0.5
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-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 { 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"}