quickblox-react-ui-kit 0.1.8 → 0.2.1

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 (112) hide show
  1. package/dist/Data/DefaultConfigurations.d.ts +11 -0
  2. package/dist/Data/Stubs.d.ts +1 -1
  3. package/dist/Data/source/AISource.d.ts +13 -0
  4. package/dist/Domain/entity/MessageEntity.d.ts +1 -1
  5. package/dist/Presentation/Views/Base/BaseViewModel.d.ts +10 -5
  6. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.d.ts +16 -0
  7. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.d.ts +14 -0
  8. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/ErrorMessageIcon.d.ts +11 -0
  9. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.d.ts +23 -0
  10. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.d.ts +15 -0
  11. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.d.ts +10 -0
  12. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.d.ts +10 -0
  13. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.d.ts +10 -0
  14. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.d.ts +2 -0
  15. package/dist/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.d.ts +11 -0
  16. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.d.ts +26 -0
  17. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.d.ts +11 -0
  18. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.d.ts +3 -0
  19. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.d.ts +15 -0
  20. package/dist/Presentation/components/UI/Dialogs/MessagesView/MessagesView.d.ts +5 -1
  21. package/dist/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.d.ts +9 -0
  22. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.d.ts +3 -0
  23. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.d.ts +3 -0
  24. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.d.ts +3 -0
  25. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.d.ts +3 -0
  26. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.d.ts +3 -0
  27. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.d.ts +3 -0
  28. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.d.ts +3 -0
  29. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.d.ts +3 -0
  30. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.d.ts +3 -0
  31. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.d.ts +3 -0
  32. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.d.ts +3 -0
  33. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.d.ts +3 -0
  34. package/dist/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.d.ts +4 -0
  35. package/dist/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.d.ts +4 -0
  36. package/dist/Presentation/components/UI/svgs/Icons/Actions/Tone/index.d.ts +4 -0
  37. package/dist/Presentation/components/UI/svgs/Icons/Media/Translate/index.d.ts +4 -0
  38. package/dist/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.d.ts +9 -0
  39. package/dist/QBconfig.d.ts +22 -0
  40. package/dist/index-ui.d.ts +5 -1
  41. package/dist/index-ui.js +388 -25
  42. package/dist/utils/utils.d.ts +3 -0
  43. package/package.json +1 -1
  44. package/src/App.tsx +12 -18
  45. package/src/Data/DefaultConfigurations.ts +128 -0
  46. package/src/Data/Stubs.ts +15 -15
  47. package/src/Data/mapper/MessageLocalDTOMapper.ts +3 -2
  48. package/src/Data/mapper/MessageRemoteDTOMapper.ts +3 -2
  49. package/src/Data/source/AISource.ts +133 -0
  50. package/src/Data/source/remote/Mapper/MessageDTOMapper.ts +1 -1
  51. package/src/Domain/entity/MessageEntity.ts +1 -1
  52. package/src/Presentation/Views/Base/BaseViewModel.ts +20 -7
  53. package/src/Presentation/Views/Dialogs/Dialogs.tsx +37 -22
  54. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.scss +2 -2
  55. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.tsx +5 -5
  56. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.ts +24 -0
  57. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.scss +55 -0
  58. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.tsx +116 -0
  59. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/ErrorMessageIcon.tsx +98 -0
  60. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.tsx +172 -0
  61. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.ts +21 -0
  62. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.tsx +99 -0
  63. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.tsx +105 -0
  64. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.tsx +106 -0
  65. package/src/Presentation/components/UI/Dialogs/MessagesView/{InputWidget → AIWidgets}/useDefaultVoiceInputWidget.tsx +8 -7
  66. package/src/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.tsx +95 -0
  67. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.scss +84 -0
  68. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.tsx +105 -0
  69. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.scss +50 -0
  70. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.tsx +43 -0
  71. package/src/Presentation/components/UI/Dialogs/MessagesView/HeaderMessages/HeaderMessages.tsx +14 -11
  72. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.scss +39 -0
  73. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.tsx +26 -0
  74. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.scss +394 -0
  75. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.tsx +747 -0
  76. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.scss +88 -4
  77. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.tsx +625 -227
  78. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.scss +7 -0
  79. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.tsx +99 -0
  80. package/src/Presentation/components/UI/Dialogs/MessagesView/useMessagesViewModel.ts +2 -2
  81. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.tsx +7 -0
  82. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.tsx +7 -0
  83. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.tsx +7 -0
  84. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.tsx +7 -0
  85. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.tsx +7 -0
  86. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.tsx +7 -0
  87. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.tsx +7 -0
  88. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.tsx +7 -0
  89. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.tsx +7 -0
  90. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.tsx +20 -0
  91. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.tsx +7 -0
  92. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.tsx +7 -0
  93. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/AssistAnswer.svg +3 -0
  94. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.tsx +93 -0
  95. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/Summarize.svg +6 -0
  96. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.tsx +58 -0
  97. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/Tone.svg +3 -0
  98. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/index.tsx +34 -0
  99. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/Translate.svg +3 -0
  100. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/index.tsx +35 -0
  101. package/src/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +150 -37
  102. package/src/QBconfig.ts +31 -3
  103. package/src/index-ui.ts +9 -0
  104. package/src/utils/utils.ts +39 -0
  105. package/dist/Presentation/components/UI/Dialogs/MessagesView/InputWidget/InputWidget.d.ts +0 -8
  106. package/dist/Presentation/components/UI/Dialogs/MessagesView/InputWidget/UseDefaultTextInputWidget.d.ts +0 -2
  107. package/dist/Presentation/components/UI/Dialogs/MessagesView/InputWidget/useDefaultVoiceInputWidget.d.ts +0 -2
  108. package/src/Presentation/components/UI/Dialogs/MessagesView/InputWidget/InputWidget.ts +0 -15
  109. package/src/Presentation/components/UI/Dialogs/MessagesView/InputWidget/UseDefaultTextInputWidget.tsx +0 -60
  110. /package/dist/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.d.ts +0 -0
  111. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/Send.svg +0 -0
  112. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.tsx +0 -0
@@ -1,5 +1,4 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- // import { Configuration, OpenAIApi } from 'openai';
3
2
  import useQbInitializedDataContext from '../../providers/QuickBloxUIKitProvider/useQbInitializedDataContext';
4
3
  import { DialogEntity } from '../../../../Domain/entity/DialogEntity';
5
4
  import { DialogsViewModel } from '../../../Views/Dialogs/DialogViewModel';
@@ -17,23 +16,40 @@ import { Pagination } from '../../../../Domain/repository/Pagination';
17
16
  // import { DialogEventInfo } from '../../../../Domain/entity/DialogEventInfo';
18
17
  import UiKitTheme from '../../../assets/UiKitTheme';
19
18
  import BaseViewModel from '../../../Views/Base/BaseViewModel';
20
- // import { InputWidget } from '../../UI/Dialogs/MessagesView/InputWidget/InputWidget';
21
- // import useDefaultTextInputWidget from '../../UI/Dialogs/MessagesView/InputWidget/UseDefaultTextInputWidget';
22
- // import useDefaultVoiceInputWidget from '../../UI/Dialogs/MessagesView/InputWidget/useDefaultVoiceInputWidget';
23
- // import UseDefaultIncomingMessageWidget from '../../UI/Dialogs/MessagesView/InputWidget/UseDefaultIncomingMessageWidget';
24
- // import CompanyLogo from '../TestStage/CompanyLogo/CompanyLogo';
19
+ import { AIMessageWidget } from '../../UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget';
20
+ import { QBConfig } from '../../../../QBconfig';
21
+ import UseDefaultAIAssistAnswerWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget';
22
+ import UseDefaultAITranslateWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget';
23
+ import UseDefaultAIRephraseMessageWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget';
24
+ import {
25
+ DefaultConfigurations,
26
+ ProxyConfig,
27
+ } from '../../../../Data/DefaultConfigurations';
28
+
29
+ type AIWidgetPlaceHolder = {
30
+ enabled: boolean;
31
+ default: boolean;
32
+ AIWidget?: AIMessageWidget;
33
+ };
25
34
 
26
35
  type QuickBloxUIKitDesktopLayoutProps = {
27
36
  theme?: UiKitTheme;
28
- // InputWidgetToLeftPlaceHolder?: InputWidget;
29
- // InputWidgetToRightPlaceHolder?: InputWidget;
30
- // IncomingMessageWidgetToRightPlaceHolder?: InputWidget;
37
+ AIRephrase?: AIWidgetPlaceHolder;
38
+ AITranslate?: AIWidgetPlaceHolder;
39
+ AIAssist?: AIWidgetPlaceHolder;
31
40
  };
32
41
 
33
42
  const QuickBloxUIKitDesktopLayout: React.FC<
34
43
  QuickBloxUIKitDesktopLayoutProps
35
44
  // eslint-disable-next-line @typescript-eslint/no-unused-vars,react/function-component-definition
36
- > = ({ theme = undefined }: QuickBloxUIKitDesktopLayoutProps) => {
45
+ > = ({
46
+ theme = undefined,
47
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
+ AITranslate = undefined,
49
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
50
+ AIRephrase = undefined,
51
+ AIAssist = undefined,
52
+ }: QuickBloxUIKitDesktopLayoutProps) => {
37
53
  console.log('create QuickBloxUIKitDesktopLayout');
38
54
  const [selectedDialog, setSelectedDialog] =
39
55
  React.useState<BaseViewModel<DialogEntity>>();
@@ -46,32 +62,131 @@ const QuickBloxUIKitDesktopLayout: React.FC<
46
62
  currentContext.storage.REMOTE_DATA_SOURCE.authInformation?.userName;
47
63
  const userId =
48
64
  currentContext.storage.REMOTE_DATA_SOURCE.authInformation?.userId;
65
+ const sessionToken =
66
+ currentContext.storage.REMOTE_DATA_SOURCE.authInformation?.sessionToken;
49
67
 
50
68
  const dialogsViewModel: DialogsViewModel =
51
69
  useDialogsViewModel(currentContext);
52
70
 
53
- // let defaultLeftPlaceHolderInputWidget = InputWidgetToLeftPlaceHolder; // useDefaultTextInputWidget();
54
- //
55
- // if (!defaultLeftPlaceHolderInputWidget) {
56
- // defaultLeftPlaceHolderInputWidget = useDefaultTextInputWidget();
57
- // }
58
- // const defaultRightPlaceHolderInputWidget =
59
- // InputWidgetToRightPlaceHolder || useDefaultVoiceInputWidget();
60
- // let defaultIncomingMessageWidget = IncomingMessageWidgetToRightPlaceHolder;
61
- //
62
- // if (!defaultIncomingMessageWidget) {
63
- // const apiKey = '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'; // Замените на ваш реальный ключ API
64
- //
65
- // const openAIConfiguration = new Configuration({
66
- // apiKey,
67
- // });
68
- //
69
- // const openAIApi = new OpenAIApi(openAIConfiguration);
70
- //
71
- // defaultIncomingMessageWidget = UseDefaultIncomingMessageWidget({
72
- // openAIApi,
73
- // });
74
- // }
71
+ let defaultAIEditMessageWidget = AIRephrase?.AIWidget; // useDefaultTextInputWidget();
72
+ let defaultAITranslateWidget = AITranslate?.AIWidget;
73
+ let defaultAIAnswerToMessageWidget = AIAssist?.AIWidget;
74
+
75
+ const getAIAssistAnswer = (): void => {
76
+ if (AIAssist?.enabled && !AIAssist?.default) {
77
+ defaultAIAnswerToMessageWidget = AIAssist.AIWidget;
78
+ } else if (
79
+ AIAssist?.enabled ||
80
+ QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault
81
+ ) {
82
+ if (
83
+ !QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault ||
84
+ (AIAssist && !AIAssist?.default)
85
+ ) {
86
+ defaultAIAnswerToMessageWidget = undefined;
87
+ } else {
88
+ const { apiKey } = QBConfig.configAIApi.AIAnswerAssistWidgetConfig;
89
+ let token = '';
90
+
91
+ if (apiKey) {
92
+ token = apiKey;
93
+ } else {
94
+ token =
95
+ QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig
96
+ .sessionToken ||
97
+ sessionToken ||
98
+ '';
99
+ }
100
+ const proxyConfig: ProxyConfig =
101
+ QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig ||
102
+ DefaultConfigurations.getDefaultProxyConfig();
103
+
104
+ defaultAIAnswerToMessageWidget = UseDefaultAIAssistAnswerWidget({
105
+ ...proxyConfig,
106
+ sessionToken: token,
107
+ apiKey,
108
+ });
109
+ }
110
+ }
111
+ };
112
+ const getAITranslate = (): void => {
113
+ if (AITranslate?.enabled && !AITranslate?.default) {
114
+ defaultAITranslateWidget = AITranslate.AIWidget;
115
+ } else if (
116
+ AITranslate?.enabled ||
117
+ QBConfig.configAIApi.AITranslateWidgetConfig.useDefault
118
+ ) {
119
+ if (
120
+ !QBConfig.configAIApi.AITranslateWidgetConfig.useDefault ||
121
+ (AITranslate && !AITranslate?.default)
122
+ ) {
123
+ defaultAITranslateWidget = undefined;
124
+ } else {
125
+ const { apiKey } = QBConfig.configAIApi.AITranslateWidgetConfig;
126
+ let token = '';
127
+
128
+ if (apiKey) {
129
+ token = apiKey;
130
+ } else {
131
+ token =
132
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig
133
+ .sessionToken ||
134
+ sessionToken ||
135
+ '';
136
+ }
137
+ const proxyConfig: ProxyConfig =
138
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig ||
139
+ DefaultConfigurations.getDefaultProxyConfig();
140
+
141
+ defaultAITranslateWidget = UseDefaultAITranslateWidget({
142
+ ...proxyConfig,
143
+ sessionToken: token,
144
+ apiKey,
145
+ });
146
+ }
147
+ }
148
+ };
149
+ const getAIRephrase = (): void => {
150
+ if (AIRephrase?.enabled && !AIRephrase?.default) {
151
+ defaultAIEditMessageWidget = AIRephrase.AIWidget;
152
+ } else if (
153
+ AIRephrase?.enabled ||
154
+ QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault
155
+ ) {
156
+ if (
157
+ !QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault ||
158
+ (AIRephrase && !AIRephrase?.default)
159
+ ) {
160
+ defaultAIEditMessageWidget = undefined;
161
+ } else {
162
+ const { apiKey } = QBConfig.configAIApi.AIRephraseWidgetConfig;
163
+ let token = '';
164
+
165
+ if (apiKey) {
166
+ token = apiKey;
167
+ } else {
168
+ token =
169
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig
170
+ .sessionToken ||
171
+ sessionToken ||
172
+ '';
173
+ }
174
+ const proxyConfig: ProxyConfig =
175
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig ||
176
+ DefaultConfigurations.getDefaultProxyConfig();
177
+
178
+ defaultAIEditMessageWidget = UseDefaultAIRephraseMessageWidget({
179
+ ...proxyConfig,
180
+ sessionToken: token,
181
+ apiKey,
182
+ });
183
+ }
184
+ }
185
+ };
186
+
187
+ getAITranslate();
188
+ getAIRephrase();
189
+ getAIAssistAnswer();
75
190
 
76
191
  const selectDialogActions = (item: BaseViewModel<DialogEntity>): void => {
77
192
  if (!dialogsViewModel.loading) {
@@ -235,11 +350,9 @@ const QuickBloxUIKitDesktopLayout: React.FC<
235
350
  maxWidthToResize={
236
351
  selectedDialog && needDialogInformation ? undefined : '1040px'
237
352
  }
238
- // InputWidgetToLeftPlaceHolder={defaultLeftPlaceHolderInputWidget}
239
- // InputWidgetToRightPlaceHolder={defaultRightPlaceHolderInputWidget}
240
- // IncomingMessageWidgetToRightPlaceHolder={
241
- // defaultIncomingMessageWidget
242
- // }
353
+ AIRephrase={defaultAIEditMessageWidget}
354
+ AITranslate={defaultAITranslateWidget}
355
+ AIAssist={defaultAIAnswerToMessageWidget}
243
356
  theme={theme}
244
357
  /> // 1 Get Messages + 1 Get User by Id
245
358
  ) : (
package/src/QBconfig.ts CHANGED
@@ -11,10 +11,38 @@ export const QBConfig = {
11
11
  apiKey: '',
12
12
  useDefault: true,
13
13
  proxyConfig: {
14
- // https://api.openai.com/v1/chat/completions'
15
14
  api: 'v1/chat/completions',
16
- servername: 'https://myproxy.com',
17
- port: '4032',
15
+ servername: 'http://localhost',
16
+ port: '3001',
17
+ sessionToken: '',
18
+ },
19
+ },
20
+ AITranslateWidgetConfig: {
21
+ apiKey: '',
22
+ useDefault: true,
23
+ defaultLanguage: 'English',
24
+ languages: [
25
+ 'English',
26
+ 'Spanish',
27
+ 'French',
28
+ 'Portuguese',
29
+ 'German',
30
+ 'Ukrainian',
31
+ ],
32
+ proxyConfig: {
33
+ api: 'v1/chat/completions',
34
+ servername: 'http://localhost',
35
+ port: '3001',
36
+ sessionToken: '',
37
+ },
38
+ },
39
+ AIRephraseWidgetConfig: {
40
+ apiKey: '',
41
+ useDefault: true,
42
+ proxyConfig: {
43
+ api: 'v1/chat/completions',
44
+ servername: 'http://localhost',
45
+ port: '3001',
18
46
  sessionToken: '',
19
47
  },
20
48
  },
package/src/index-ui.ts CHANGED
@@ -33,6 +33,10 @@ import QuickBloxUIKitDesktopLayout from './Presentation/components/layouts/Deskt
33
33
  import DefaultTheme from './Presentation/assets/DefaultThemes/DefaultTheme';
34
34
  import UiKitTheme from './Presentation/assets/UiKitTheme';
35
35
  import useQbUIKitDataContext from './Presentation/components/providers/QuickBloxUIKitProvider/useQbUIKitDataContext';
36
+ import { AIMessageWidget } from './Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget';
37
+ import { AISource, IChatMessage } from './Data/source/AISource';
38
+ import AIWidgetIcon from './Presentation/components/UI/svgs/Icons/AIWidgets/AIWidget';
39
+ import ErrorMessageIcon from './Presentation/components/UI/Dialogs/MessagesView/AIWidgets/ErrorMessageIcon';
36
40
 
37
41
  export {
38
42
  MainButton,
@@ -65,4 +69,9 @@ export {
65
69
  QuickBloxUIKitDesktopLayout,
66
70
  DefaultTheme,
67
71
  type UiKitTheme,
72
+ type AIMessageWidget,
73
+ AISource,
74
+ type IChatMessage,
75
+ AIWidgetIcon,
76
+ ErrorMessageIcon,
68
77
  };
@@ -0,0 +1,39 @@
1
+ // import { encode } from 'gpt-3-encoder';
2
+
3
+ export const completeSentence = (text?: string) =>
4
+ text?.replace(/([^.!?;]+)[^.!?;]*$/, ' ...') || '';
5
+
6
+ // export const tokenCounter = (text?: string) => (text ? encode(text).length : 0);
7
+
8
+ export const tokenCounter = (text?: string) => (text ? text.length / 4 : 0);
9
+
10
+ export const loopToLimitTokens = <T>(
11
+ limit: number,
12
+ data: T[],
13
+ getValue: (item: T) => string = (item) =>
14
+ typeof item === 'string' ? item : String(item),
15
+ tokens = 0,
16
+ ): T[] => {
17
+ if (!data.length) {
18
+ return [];
19
+ }
20
+
21
+ const [firstItem, ...lastItems] = data;
22
+
23
+ const itemValue = getValue(firstItem);
24
+ const itemTokens = tokenCounter(itemValue);
25
+ const amountTokens = tokens + itemTokens;
26
+
27
+ if (amountTokens <= limit) {
28
+ const nextData = loopToLimitTokens(
29
+ limit,
30
+ lastItems,
31
+ getValue,
32
+ amountTokens,
33
+ );
34
+
35
+ return itemTokens === 0 ? nextData : [firstItem, ...nextData];
36
+ }
37
+
38
+ return [];
39
+ };
@@ -1,8 +0,0 @@
1
- import { FunctionTypeFileToToVoid, FunctionTypeJSXElement, FunctionTypeStringToVoid } from '../../../../../Views/Base/BaseViewModel';
2
- export interface InputWidget {
3
- renderWidget: FunctionTypeJSXElement;
4
- textToWidget: FunctionTypeStringToVoid;
5
- fileToWidget: FunctionTypeFileToToVoid;
6
- textToInput: string | undefined;
7
- fileToInput: File | undefined;
8
- }
@@ -1,2 +0,0 @@
1
- import { InputWidget } from './InputWidget';
2
- export default function useDefaultTextInputWidget(): InputWidget;
@@ -1,2 +0,0 @@
1
- import { InputWidget } from './InputWidget';
2
- export default function useDefaultVoiceInputWidget(): InputWidget;
@@ -1,15 +0,0 @@
1
- import {
2
- FunctionTypeFileToToVoid,
3
- FunctionTypeJSXElement,
4
- FunctionTypeStringToVoid,
5
- } from '../../../../../Views/Base/BaseViewModel';
6
-
7
- export interface InputWidget {
8
- renderWidget: FunctionTypeJSXElement;
9
- textToWidget: FunctionTypeStringToVoid;
10
- fileToWidget: FunctionTypeFileToToVoid;
11
- textToInput: string | undefined;
12
- fileToInput: File | undefined;
13
- }
14
-
15
-
@@ -1,60 +0,0 @@
1
- import { useState } from 'react';
2
- import { InputWidget } from './InputWidget';
3
-
4
- export default function useDefaultTextInputWidget(): InputWidget {
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function
6
- const fileToWidget = (file: File): void => {};
7
-
8
- const renderWidget = (): JSX.Element => {
9
- // return <SendIcon width="21" height="18" applyZoom color="red" />;
10
- return (
11
- <div
12
- style={{
13
- width: '21',
14
- height: '18',
15
- color: 'red',
16
- fontSize: '9px',
17
- fontStyle: 'bold',
18
- fontWeight: '900',
19
- border: '2px solid red',
20
- }}
21
- >
22
- T2V
23
- </div>
24
- );
25
- };
26
-
27
- async function getData(textToSend: string): Promise<string> {
28
- const response = await fetch(
29
- `https://func270519800.azurewebsites.net/api/TranslateTextToEng?text=${textToSend}`,
30
- );
31
-
32
- console.log('getData: response: ', response);
33
- const data = await response.text();
34
-
35
- console.log(
36
- 'getData have response: ',
37
- JSON.stringify(data.replaceAll('\n\n', '')),
38
- );
39
-
40
- return data.replaceAll('\n\n', '');
41
- }
42
-
43
- const [textFromWidgetToInput, setTextFromWidgetToInput] = useState('');
44
- const textToWidget = (value: string): void => {
45
- if (value && value.length > 0) {
46
- // eslint-disable-next-line promise/catch-or-return,promise/always-return
47
- getData(value).then((data) => {
48
- setTextFromWidgetToInput(data);
49
- });
50
- }
51
- };
52
-
53
- return {
54
- fileToInput: undefined,
55
- textToInput: textFromWidgetToInput,
56
- fileToWidget,
57
- renderWidget,
58
- textToWidget,
59
- };
60
- }