instantsearch-ui-components 0.11.1 → 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.
- package/dist/cjs/components/Button.js +29 -0
- package/dist/cjs/components/Carousel.js +26 -6
- package/dist/cjs/components/autocomplete/Autocomplete.js +23 -0
- package/dist/cjs/components/autocomplete/AutocompleteIndex.js +39 -0
- package/dist/cjs/components/autocomplete/AutocompletePanel.js +25 -0
- package/dist/cjs/components/autocomplete/AutocompleteSuggestion.js +20 -0
- package/dist/cjs/components/autocomplete/index.js +49 -0
- package/dist/cjs/components/chat/Chat.js +79 -0
- package/dist/cjs/components/chat/ChatHeader.js +89 -0
- package/dist/cjs/components/chat/ChatMessage.js +138 -0
- package/dist/cjs/components/chat/ChatMessageError.js +57 -0
- package/dist/cjs/components/chat/ChatMessageLoader.js +47 -0
- package/dist/cjs/components/chat/ChatMessages.js +192 -0
- package/dist/cjs/components/chat/ChatPrompt.js +179 -0
- package/dist/cjs/components/chat/ChatToggleButton.js +46 -0
- package/dist/cjs/components/chat/icons.js +375 -0
- package/dist/cjs/components/chat/types.js +1 -0
- package/dist/cjs/components/index.js +132 -0
- package/dist/cjs/lib/index.js +22 -0
- package/dist/cjs/lib/stickToBottom.js +481 -0
- package/dist/cjs/lib/utils/find.js +15 -0
- package/dist/cjs/lib/utils/index.js +27 -0
- package/dist/cjs/lib/utils/startsWith.js +9 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/warn.js +40 -0
- package/dist/es/components/Button.d.ts +38 -0
- package/dist/es/components/Button.js +22 -0
- package/dist/es/components/Carousel.d.ts +11 -0
- package/dist/es/components/Carousel.js +26 -6
- package/dist/es/components/autocomplete/Autocomplete.d.ts +13 -0
- package/dist/es/components/autocomplete/Autocomplete.js +16 -0
- package/dist/es/components/autocomplete/AutocompleteIndex.d.ts +31 -0
- package/dist/es/components/autocomplete/AutocompleteIndex.js +32 -0
- package/dist/es/components/autocomplete/AutocompletePanel.d.ts +17 -0
- package/dist/es/components/autocomplete/AutocompletePanel.js +18 -0
- package/dist/es/components/autocomplete/AutocompleteSuggestion.d.ts +16 -0
- package/dist/es/components/autocomplete/AutocompleteSuggestion.js +14 -0
- package/dist/es/components/autocomplete/index.d.ts +4 -0
- package/dist/es/components/autocomplete/index.js +4 -0
- package/dist/es/components/chat/Chat.d.ts +42 -0
- package/dist/es/components/chat/Chat.js +72 -0
- package/dist/es/components/chat/ChatHeader.d.ts +99 -0
- package/dist/es/components/chat/ChatHeader.js +82 -0
- package/dist/es/components/chat/ChatMessage.d.ts +124 -0
- package/dist/es/components/chat/ChatMessage.js +131 -0
- package/dist/es/components/chat/ChatMessageError.d.ts +27 -0
- package/dist/es/components/chat/ChatMessageError.js +50 -0
- package/dist/es/components/chat/ChatMessageLoader.d.ts +15 -0
- package/dist/es/components/chat/ChatMessageLoader.js +40 -0
- package/dist/es/components/chat/ChatMessages.d.ts +139 -0
- package/dist/es/components/chat/ChatMessages.js +185 -0
- package/dist/es/components/chat/ChatPrompt.d.ts +119 -0
- package/dist/es/components/chat/ChatPrompt.js +172 -0
- package/dist/es/components/chat/ChatToggleButton.d.ts +29 -0
- package/dist/es/components/chat/ChatToggleButton.js +39 -0
- package/dist/es/components/chat/icons.d.ts +22 -0
- package/dist/es/components/chat/icons.js +355 -0
- package/dist/es/components/chat/types.d.ts +29 -0
- package/dist/es/components/chat/types.js +1 -0
- package/dist/es/components/index.d.ts +12 -0
- package/dist/es/components/index.js +12 -0
- package/dist/es/lib/index.d.ts +2 -0
- package/dist/es/lib/index.js +3 -1
- package/dist/es/lib/stickToBottom.d.ts +114 -0
- package/dist/es/lib/stickToBottom.js +474 -0
- package/dist/es/lib/utils/find.d.ts +1 -0
- package/dist/es/lib/utils/find.js +9 -0
- package/dist/es/lib/utils/index.d.ts +2 -0
- package/dist/es/lib/utils/index.js +2 -0
- package/dist/es/lib/utils/startsWith.d.ts +1 -0
- package/dist/es/lib/utils/startsWith.js +3 -0
- package/dist/es/types/Renderer.d.ts +1 -1
- package/dist/es/version.d.ts +1 -1
- package/dist/es/version.js +1 -1
- package/dist/es/warn.d.ts +10 -0
- package/dist/es/warn.js +33 -0
- 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
|
+
}
|