instantsearch-ui-components 0.11.2 → 0.12.0

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 (77) hide show
  1. package/dist/cjs/components/Button.js +29 -0
  2. package/dist/cjs/components/Carousel.js +26 -6
  3. package/dist/cjs/components/autocomplete/Autocomplete.js +23 -0
  4. package/dist/cjs/components/autocomplete/AutocompleteIndex.js +39 -0
  5. package/dist/cjs/components/autocomplete/AutocompletePanel.js +25 -0
  6. package/dist/cjs/components/autocomplete/AutocompleteSuggestion.js +20 -0
  7. package/dist/cjs/components/autocomplete/index.js +49 -0
  8. package/dist/cjs/components/chat/Chat.js +79 -0
  9. package/dist/cjs/components/chat/ChatHeader.js +89 -0
  10. package/dist/cjs/components/chat/ChatMessage.js +138 -0
  11. package/dist/cjs/components/chat/ChatMessageError.js +57 -0
  12. package/dist/cjs/components/chat/ChatMessageLoader.js +47 -0
  13. package/dist/cjs/components/chat/ChatMessages.js +192 -0
  14. package/dist/cjs/components/chat/ChatPrompt.js +179 -0
  15. package/dist/cjs/components/chat/ChatToggleButton.js +46 -0
  16. package/dist/cjs/components/chat/icons.js +375 -0
  17. package/dist/cjs/components/chat/types.js +1 -0
  18. package/dist/cjs/components/index.js +132 -0
  19. package/dist/cjs/lib/index.js +22 -0
  20. package/dist/cjs/lib/stickToBottom.js +481 -0
  21. package/dist/cjs/lib/utils/find.js +15 -0
  22. package/dist/cjs/lib/utils/index.js +27 -0
  23. package/dist/cjs/lib/utils/startsWith.js +9 -0
  24. package/dist/cjs/version.js +1 -1
  25. package/dist/cjs/warn.js +40 -0
  26. package/dist/es/components/Button.d.ts +38 -0
  27. package/dist/es/components/Button.js +22 -0
  28. package/dist/es/components/Carousel.d.ts +11 -0
  29. package/dist/es/components/Carousel.js +26 -6
  30. package/dist/es/components/autocomplete/Autocomplete.d.ts +13 -0
  31. package/dist/es/components/autocomplete/Autocomplete.js +16 -0
  32. package/dist/es/components/autocomplete/AutocompleteIndex.d.ts +31 -0
  33. package/dist/es/components/autocomplete/AutocompleteIndex.js +32 -0
  34. package/dist/es/components/autocomplete/AutocompletePanel.d.ts +17 -0
  35. package/dist/es/components/autocomplete/AutocompletePanel.js +18 -0
  36. package/dist/es/components/autocomplete/AutocompleteSuggestion.d.ts +16 -0
  37. package/dist/es/components/autocomplete/AutocompleteSuggestion.js +14 -0
  38. package/dist/es/components/autocomplete/index.d.ts +4 -0
  39. package/dist/es/components/autocomplete/index.js +4 -0
  40. package/dist/es/components/chat/Chat.d.ts +42 -0
  41. package/dist/es/components/chat/Chat.js +72 -0
  42. package/dist/es/components/chat/ChatHeader.d.ts +99 -0
  43. package/dist/es/components/chat/ChatHeader.js +82 -0
  44. package/dist/es/components/chat/ChatMessage.d.ts +124 -0
  45. package/dist/es/components/chat/ChatMessage.js +131 -0
  46. package/dist/es/components/chat/ChatMessageError.d.ts +27 -0
  47. package/dist/es/components/chat/ChatMessageError.js +50 -0
  48. package/dist/es/components/chat/ChatMessageLoader.d.ts +15 -0
  49. package/dist/es/components/chat/ChatMessageLoader.js +40 -0
  50. package/dist/es/components/chat/ChatMessages.d.ts +139 -0
  51. package/dist/es/components/chat/ChatMessages.js +185 -0
  52. package/dist/es/components/chat/ChatPrompt.d.ts +119 -0
  53. package/dist/es/components/chat/ChatPrompt.js +172 -0
  54. package/dist/es/components/chat/ChatToggleButton.d.ts +29 -0
  55. package/dist/es/components/chat/ChatToggleButton.js +39 -0
  56. package/dist/es/components/chat/icons.d.ts +22 -0
  57. package/dist/es/components/chat/icons.js +355 -0
  58. package/dist/es/components/chat/types.d.ts +29 -0
  59. package/dist/es/components/chat/types.js +1 -0
  60. package/dist/es/components/index.d.ts +12 -0
  61. package/dist/es/components/index.js +12 -0
  62. package/dist/es/lib/index.d.ts +2 -0
  63. package/dist/es/lib/index.js +3 -1
  64. package/dist/es/lib/stickToBottom.d.ts +114 -0
  65. package/dist/es/lib/stickToBottom.js +474 -0
  66. package/dist/es/lib/utils/find.d.ts +1 -0
  67. package/dist/es/lib/utils/find.js +9 -0
  68. package/dist/es/lib/utils/index.d.ts +2 -0
  69. package/dist/es/lib/utils/index.js +2 -0
  70. package/dist/es/lib/utils/startsWith.d.ts +1 -0
  71. package/dist/es/lib/utils/startsWith.js +3 -0
  72. package/dist/es/types/Renderer.d.ts +1 -1
  73. package/dist/es/version.d.ts +1 -1
  74. package/dist/es/version.js +1 -1
  75. package/dist/es/warn.d.ts +10 -0
  76. package/dist/es/warn.js +33 -0
  77. package/package.json +7 -3
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatMessageLoaderComponent = createChatMessageLoaderComponent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _icons = require("./icons");
12
+ var _excluded = ["translations"];
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function createChatMessageLoaderComponent(_ref) {
16
+ var createElement = _ref.createElement;
17
+ return function ChatMessageLoader(_ref2) {
18
+ var userTranslations = _ref2.translations,
19
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
20
+ var translations = _objectSpread({
21
+ loaderText: 'Thinking...'
22
+ }, userTranslations);
23
+ return createElement("article", (0, _extends2.default)({
24
+ className: "ais-ChatMessageLoader ais-ChatMessage ais-ChatMessage--left ais-ChatMessage--subtle"
25
+ }, props), createElement("div", {
26
+ className: "ais-ChatMessage-container"
27
+ }, createElement("div", {
28
+ className: "ais-ChatMessage-leading"
29
+ }, createElement("div", {
30
+ className: "ais-ChatMessageLoader-spinner"
31
+ }, createElement(_icons.LoadingSpinnerIconComponent, {
32
+ createElement: createElement
33
+ }))), createElement("div", {
34
+ className: "ais-ChatMessage-content"
35
+ }, createElement("div", {
36
+ className: "ais-ChatMessage-message"
37
+ }, translations.loaderText && createElement("div", {
38
+ className: "ais-ChatMessageLoader-text"
39
+ }, translations.loaderText), createElement("div", {
40
+ className: "ais-ChatMessageLoader-skeletonWrapper"
41
+ }, createElement("div", {
42
+ className: "ais-ChatMessageLoader-skeletonItem"
43
+ }), createElement("div", {
44
+ className: "ais-ChatMessageLoader-skeletonItem"
45
+ }))))));
46
+ };
47
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatMessagesComponent = createChatMessagesComponent;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _lib = require("../../lib");
13
+ var _Button = require("../Button");
14
+ var _ChatMessage = require("./ChatMessage");
15
+ var _ChatMessageError = require("./ChatMessageError");
16
+ var _ChatMessageLoader = require("./ChatMessageLoader");
17
+ var _icons = require("./icons");
18
+ var _excluded = ["classNames", "messages", "messageComponent", "loaderComponent", "errorComponent", "actionsComponent", "tools", "indexUiState", "setIndexUiState", "status", "hideScrollToBottom", "onReload", "onClose", "translations", "userMessageProps", "assistantMessageProps", "isClearing", "onClearTransitionEnd", "isScrollAtBottom", "scrollRef", "contentRef", "onScrollToBottom"];
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var getTextContent = function getTextContent(message) {
22
+ return message.parts.map(function (part) {
23
+ return 'text' in part ? part.text : '';
24
+ }).join('');
25
+ };
26
+ var hasTextContent = function hasTextContent(message) {
27
+ return getTextContent(message).trim() !== '';
28
+ };
29
+ var copyToClipboard = function copyToClipboard(message) {
30
+ navigator.clipboard.writeText(getTextContent(message));
31
+ };
32
+ function createDefaultMessageComponent(_ref) {
33
+ var createElement = _ref.createElement,
34
+ Fragment = _ref.Fragment;
35
+ var ChatMessage = (0, _ChatMessage.createChatMessageComponent)({
36
+ createElement: createElement,
37
+ Fragment: Fragment
38
+ });
39
+ return function DefaultMessage(_ref2) {
40
+ var message = _ref2.message,
41
+ userMessageProps = _ref2.userMessageProps,
42
+ assistantMessageProps = _ref2.assistantMessageProps,
43
+ tools = _ref2.tools,
44
+ indexUiState = _ref2.indexUiState,
45
+ setIndexUiState = _ref2.setIndexUiState,
46
+ onReload = _ref2.onReload,
47
+ onClose = _ref2.onClose,
48
+ translations = _ref2.translations,
49
+ actionsComponent = _ref2.actionsComponent;
50
+ var defaultAssistantActions = [].concat((0, _toConsumableArray2.default)(hasTextContent(message) ? [{
51
+ title: translations.copyToClipboardLabel,
52
+ icon: function icon() {
53
+ return createElement(_icons.CopyIconComponent, {
54
+ createElement: createElement
55
+ });
56
+ },
57
+ onClick: copyToClipboard
58
+ }] : []), [{
59
+ title: translations.regenerateLabel,
60
+ icon: function icon() {
61
+ return createElement(_icons.ReloadIconComponent, {
62
+ createElement: createElement
63
+ });
64
+ },
65
+ onClick: function onClick(m) {
66
+ return onReload(m.id);
67
+ }
68
+ }]);
69
+ var messageProps = message.role === 'user' ? userMessageProps : assistantMessageProps;
70
+ var defaultActions = message.role === 'user' ? undefined : defaultAssistantActions;
71
+ return createElement(ChatMessage, (0, _extends2.default)({
72
+ side: message.role === 'user' ? 'right' : 'left',
73
+ variant: message.role === 'user' ? 'neutral' : 'subtle',
74
+ message: message,
75
+ tools: tools,
76
+ indexUiState: indexUiState,
77
+ setIndexUiState: setIndexUiState,
78
+ onClose: onClose,
79
+ actions: defaultActions,
80
+ actionsComponent: actionsComponent,
81
+ "data-role": message.role
82
+ }, messageProps));
83
+ };
84
+ }
85
+ function createChatMessagesComponent(_ref3) {
86
+ var createElement = _ref3.createElement,
87
+ Fragment = _ref3.Fragment;
88
+ var Button = (0, _Button.createButtonComponent)({
89
+ createElement: createElement
90
+ });
91
+ var DefaultMessageComponent = createDefaultMessageComponent({
92
+ createElement: createElement,
93
+ Fragment: Fragment
94
+ });
95
+ var DefaultLoaderComponent = (0, _ChatMessageLoader.createChatMessageLoaderComponent)({
96
+ createElement: createElement
97
+ });
98
+ var DefaultErrorComponent = (0, _ChatMessageError.createChatMessageErrorComponent)({
99
+ createElement: createElement
100
+ });
101
+ return function ChatMessages(userProps) {
102
+ var _userProps$classNames = userProps.classNames,
103
+ classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames,
104
+ _userProps$messages = userProps.messages,
105
+ messages = _userProps$messages === void 0 ? [] : _userProps$messages,
106
+ MessageComponent = userProps.messageComponent,
107
+ LoaderComponent = userProps.loaderComponent,
108
+ ErrorComponent = userProps.errorComponent,
109
+ ActionsComponent = userProps.actionsComponent,
110
+ tools = userProps.tools,
111
+ indexUiState = userProps.indexUiState,
112
+ setIndexUiState = userProps.setIndexUiState,
113
+ _userProps$status = userProps.status,
114
+ status = _userProps$status === void 0 ? 'ready' : _userProps$status,
115
+ _userProps$hideScroll = userProps.hideScrollToBottom,
116
+ hideScrollToBottom = _userProps$hideScroll === void 0 ? false : _userProps$hideScroll,
117
+ onReload = userProps.onReload,
118
+ onClose = userProps.onClose,
119
+ userTranslations = userProps.translations,
120
+ userMessageProps = userProps.userMessageProps,
121
+ assistantMessageProps = userProps.assistantMessageProps,
122
+ _userProps$isClearing = userProps.isClearing,
123
+ isClearing = _userProps$isClearing === void 0 ? false : _userProps$isClearing,
124
+ onClearTransitionEnd = userProps.onClearTransitionEnd,
125
+ isScrollAtBottom = userProps.isScrollAtBottom,
126
+ scrollRef = userProps.scrollRef,
127
+ contentRef = userProps.contentRef,
128
+ onScrollToBottom = userProps.onScrollToBottom,
129
+ props = (0, _objectWithoutProperties2.default)(userProps, _excluded);
130
+ var translations = _objectSpread({
131
+ scrollToBottomLabel: 'Scroll to bottom',
132
+ copyToClipboardLabel: 'Copy to clipboard',
133
+ regenerateLabel: 'Regenerate'
134
+ }, userTranslations);
135
+ var cssClasses = {
136
+ root: (0, _lib.cx)('ais-ChatMessages', classNames.root),
137
+ scroll: (0, _lib.cx)('ais-ChatMessages-scroll ais-Scrollbar', classNames.scroll),
138
+ content: (0, _lib.cx)('ais-ChatMessages-content', classNames.content),
139
+ scrollToBottom: (0, _lib.cx)('ais-ChatMessages-scrollToBottom', classNames.scrollToBottom),
140
+ scrollToBottomHidden: (0, _lib.cx)('ais-ChatMessages-scrollToBottom--hidden', classNames.scrollToBottomHidden)
141
+ };
142
+ var DefaultMessage = MessageComponent || DefaultMessageComponent;
143
+ var DefaultLoader = LoaderComponent || DefaultLoaderComponent;
144
+ var DefaultError = ErrorComponent || DefaultErrorComponent;
145
+ return createElement("div", (0, _extends2.default)({}, props, {
146
+ className: (0, _lib.cx)(cssClasses.root, props.className),
147
+ role: "log",
148
+ "aria-live": "polite"
149
+ }), createElement("div", {
150
+ className: (0, _lib.cx)(cssClasses.scroll),
151
+ ref: scrollRef
152
+ }, createElement("div", {
153
+ className: (0, _lib.cx)(cssClasses.content, isClearing && 'ais-ChatMessages-content--clearing'),
154
+ ref: contentRef,
155
+ onTransitionEnd: function onTransitionEnd(e) {
156
+ if (e.target === e.currentTarget && e.propertyName === 'opacity' && isClearing) {
157
+ onClearTransitionEnd === null || onClearTransitionEnd === void 0 ? void 0 : onClearTransitionEnd();
158
+ }
159
+ }
160
+ }, messages.map(function (message) {
161
+ return createElement(DefaultMessage, {
162
+ key: message.id,
163
+ message: message,
164
+ userMessageProps: userMessageProps,
165
+ assistantMessageProps: assistantMessageProps,
166
+ tools: tools,
167
+ indexUiState: indexUiState,
168
+ setIndexUiState: setIndexUiState,
169
+ onReload: onReload,
170
+ actionsComponent: ActionsComponent,
171
+ onClose: onClose,
172
+ translations: translations
173
+ });
174
+ }), status === 'submitted' && createElement(DefaultLoader, {
175
+ translations: {
176
+ loaderText: translations.loaderText
177
+ }
178
+ }), status === 'error' && createElement(DefaultError, {
179
+ onReload: onReload
180
+ }))), createElement(Button, {
181
+ variant: "outline",
182
+ size: "sm",
183
+ iconOnly: true,
184
+ className: (0, _lib.cx)(cssClasses.scrollToBottom, (hideScrollToBottom || isScrollAtBottom) && cssClasses.scrollToBottomHidden),
185
+ onClick: onScrollToBottom,
186
+ "aria-label": translations.scrollToBottomLabel,
187
+ tabIndex: isScrollAtBottom ? -1 : 0
188
+ }, createElement(_icons.ChevronDownIconComponent, {
189
+ createElement: createElement
190
+ })));
191
+ };
192
+ }
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatPromptComponent = createChatPromptComponent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _lib = require("../../lib");
12
+ var _Button = require("../Button");
13
+ var _icons = require("./icons");
14
+ var _excluded = ["classNames", "headerComponent", "footerComponent", "value", "placeholder", "status", "disabled", "maxRows", "autoFocus", "translations", "onInput", "onSubmit", "onKeyDown", "onStop", "promptRef"];
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function createChatPromptComponent(_ref) {
18
+ var createElement = _ref.createElement;
19
+ var Button = (0, _Button.createButtonComponent)({
20
+ createElement: createElement
21
+ });
22
+ var textAreaElement = null;
23
+ var lineHeight = 0;
24
+ var padding = 0;
25
+ var adjustHeight = function adjustHeight() {
26
+ if (!textAreaElement) return;
27
+ textAreaElement.style.height = 'auto';
28
+ var fullHeight = textAreaElement.scrollHeight;
29
+ if (textAreaElement.getAttribute('data-max-rows')) {
30
+ var maxRows = parseInt(textAreaElement.getAttribute('data-max-rows') || '0', 10);
31
+ if (maxRows > 0) {
32
+ var maxHeight = maxRows * lineHeight + padding;
33
+ textAreaElement.style.overflowY = fullHeight > maxHeight ? 'auto' : 'hidden';
34
+ textAreaElement.style.height = "".concat(Math.min(fullHeight, maxHeight), "px");
35
+ return;
36
+ }
37
+ }
38
+ textAreaElement.style.overflowY = 'hidden';
39
+ textAreaElement.style.height = "".concat(fullHeight, "px");
40
+ };
41
+ var setTextAreaRef = function setTextAreaRef(element, promptRef) {
42
+ textAreaElement = element;
43
+ if (promptRef) {
44
+ promptRef.current = element;
45
+ }
46
+ if (element) {
47
+ var styles = getComputedStyle(element);
48
+ lineHeight = parseFloat(styles.lineHeight);
49
+ var pt = parseFloat(styles.paddingTop);
50
+ var pb = parseFloat(styles.paddingBottom);
51
+ padding = pt + pb;
52
+ adjustHeight();
53
+ }
54
+ };
55
+ return function ChatPrompt(userProps) {
56
+ var _userProps$classNames = userProps.classNames,
57
+ classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames,
58
+ HeaderComponent = userProps.headerComponent,
59
+ FooterComponent = userProps.footerComponent,
60
+ value = userProps.value,
61
+ placeholder = userProps.placeholder,
62
+ _userProps$status = userProps.status,
63
+ status = _userProps$status === void 0 ? 'ready' : _userProps$status,
64
+ _userProps$disabled = userProps.disabled,
65
+ disabled = _userProps$disabled === void 0 ? false : _userProps$disabled,
66
+ _userProps$maxRows = userProps.maxRows,
67
+ maxRows = _userProps$maxRows === void 0 ? 5 : _userProps$maxRows,
68
+ _userProps$autoFocus = userProps.autoFocus,
69
+ autoFocus = _userProps$autoFocus === void 0 ? true : _userProps$autoFocus,
70
+ userTranslations = userProps.translations,
71
+ _onInput = userProps.onInput,
72
+ _onSubmit = userProps.onSubmit,
73
+ _onKeyDown = userProps.onKeyDown,
74
+ onStop = userProps.onStop,
75
+ promptRef = userProps.promptRef,
76
+ props = (0, _objectWithoutProperties2.default)(userProps, _excluded);
77
+ var translations = _objectSpread({
78
+ textareaLabel: 'Type your message...',
79
+ textareaPlaceholder: 'Type your message...',
80
+ emptyMessageTooltip: 'Message is empty',
81
+ stopResponseTooltip: 'Stop response',
82
+ sendMessageTooltip: 'Send message',
83
+ disclaimer: 'AI can make mistakes. Verify responses.'
84
+ }, userTranslations);
85
+ var cssClasses = {
86
+ root: (0, _lib.cx)('ais-ChatPrompt', classNames.root),
87
+ header: (0, _lib.cx)('ais-ChatPrompt-header', classNames.header),
88
+ body: (0, _lib.cx)('ais-ChatPrompt-body', classNames.body),
89
+ textarea: (0, _lib.cx)('ais-ChatPrompt-textarea ais-Scrollbar', disabled && 'ais-ChatPrompt-textarea--disabled', classNames.textarea),
90
+ actions: (0, _lib.cx)('ais-ChatPrompt-actions', classNames.actions, disabled && 'ais-ChatPrompt-actions--disabled'),
91
+ submit: (0, _lib.cx)('ais-ChatPrompt-submit', classNames.submit),
92
+ footer: (0, _lib.cx)('ais-ChatPrompt-footer', classNames.footer)
93
+ };
94
+ var hasValue = typeof value === 'string' ? value.trim() !== '' : Boolean(value);
95
+ var canStop = status === 'submitted' || status === 'streaming';
96
+ var buttonDisabled = !hasValue && !canStop || disabled;
97
+ var submitIcon = canStop ? createElement(_icons.StopIconComponent, {
98
+ createElement: createElement
99
+ }) : createElement(_icons.ArrowUpIconComponent, {
100
+ createElement: createElement
101
+ });
102
+ return createElement("form", {
103
+ className: (0, _lib.cx)(cssClasses.root, props.className),
104
+ onSubmit: function onSubmit(event) {
105
+ event.preventDefault();
106
+ if (canStop) {
107
+ onStop === null || onStop === void 0 ? void 0 : onStop();
108
+ return;
109
+ }
110
+ if (!hasValue) {
111
+ return;
112
+ }
113
+ _onSubmit === null || _onSubmit === void 0 ? void 0 : _onSubmit(event);
114
+ }
115
+ }, HeaderComponent && createElement("div", {
116
+ className: (0, _lib.cx)(cssClasses.header)
117
+ }, createElement(HeaderComponent, null)), createElement("div", {
118
+ className: (0, _lib.cx)(cssClasses.body),
119
+ onClick: function onClick(e) {
120
+ var _textAreaElement;
121
+ if (e.target === textAreaElement) return;
122
+ (_textAreaElement = textAreaElement) === null || _textAreaElement === void 0 ? void 0 : _textAreaElement.focus();
123
+ }
124
+ }, createElement("textarea", (0, _extends2.default)({}, props, {
125
+ ref: function ref(element) {
126
+ return setTextAreaRef(element, promptRef);
127
+ },
128
+ "data-max-rows": maxRows,
129
+ className: (0, _lib.cx)(cssClasses.textarea),
130
+ value: value,
131
+ placeholder: placeholder || translations.textareaPlaceholder,
132
+ "aria-label": translations.textareaLabel,
133
+ disabled: disabled,
134
+ autoFocus: autoFocus,
135
+ onInput: function onInput(event) {
136
+ adjustHeight();
137
+ _onInput === null || _onInput === void 0 ? void 0 : _onInput(event);
138
+ },
139
+ onKeyDown: function onKeyDown(event) {
140
+ _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(event);
141
+ if (event.key === 'Enter' && !event.shiftKey) {
142
+ event.preventDefault();
143
+ if (canStop) {
144
+ onStop === null || onStop === void 0 ? void 0 : onStop();
145
+ return;
146
+ }
147
+ if (!hasValue) {
148
+ return;
149
+ }
150
+ _onSubmit === null || _onSubmit === void 0 ? void 0 : _onSubmit(event);
151
+ }
152
+ if (event.key === 'Escape') {
153
+ if (event.currentTarget && event.currentTarget.blur) {
154
+ event.currentTarget.blur();
155
+ }
156
+ }
157
+ }
158
+ })), createElement("div", {
159
+ className: (0, _lib.cx)(cssClasses.actions)
160
+ }, createElement(Button, {
161
+ type: "submit",
162
+ variant: "primary",
163
+ size: "sm",
164
+ iconOnly: true,
165
+ className: (0, _lib.cx)(cssClasses.submit),
166
+ disabled: buttonDisabled,
167
+ "aria-label": function () {
168
+ if (buttonDisabled) return translations.emptyMessageTooltip;
169
+ if (canStop) return translations.stopResponseTooltip;
170
+ return translations.sendMessageTooltip;
171
+ }(),
172
+ "data-status": status
173
+ }, submitIcon))), createElement("div", {
174
+ className: (0, _lib.cx)(cssClasses.footer)
175
+ }, FooterComponent ? createElement(FooterComponent, null) : createElement("div", {
176
+ className: "ais-ChatPrompt-disclaimer"
177
+ }, translations.disclaimer)));
178
+ };
179
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatToggleButtonComponent = createChatToggleButtonComponent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _cx = require("../../lib/cx");
11
+ var _Button = require("../Button");
12
+ var _icons = require("./icons");
13
+ var _excluded = ["open", "onClick", "toggleIconComponent", "classNames", "className"];
14
+ function createChatToggleButtonComponent(_ref) {
15
+ var createElement = _ref.createElement;
16
+ var Button = (0, _Button.createButtonComponent)({
17
+ createElement: createElement
18
+ });
19
+ return function ChatToggleButton(_ref2) {
20
+ var open = _ref2.open,
21
+ onClick = _ref2.onClick,
22
+ ToggleIconComponent = _ref2.toggleIconComponent,
23
+ _ref2$classNames = _ref2.classNames,
24
+ classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames,
25
+ className = _ref2.className,
26
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
27
+ var defaultIcon = open ? createElement(_icons.ChevronUpIconComponent, {
28
+ createElement: createElement,
29
+ width: 28,
30
+ height: 28
31
+ }) : createElement(_icons.SparklesIconComponent, {
32
+ createElement: createElement,
33
+ width: 28,
34
+ height: 28
35
+ });
36
+ return createElement(Button, (0, _extends2.default)({
37
+ variant: "primary",
38
+ size: "md",
39
+ iconOnly: true,
40
+ className: (0, _cx.cx)('ais-ChatToggleButton', open && 'ais-ChatToggleButton--open', classNames.root, className),
41
+ onClick: onClick
42
+ }, props), ToggleIconComponent ? createElement(ToggleIconComponent, {
43
+ isOpen: open
44
+ }) : defaultIcon);
45
+ };
46
+ }