instantsearch-ui-components 0.11.2 → 0.13.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 (86) 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 +44 -0
  5. package/dist/cjs/components/autocomplete/AutocompletePanel.js +25 -0
  6. package/dist/cjs/components/autocomplete/AutocompleteSearch.js +70 -0
  7. package/dist/cjs/components/autocomplete/AutocompleteSuggestion.js +20 -0
  8. package/dist/cjs/components/autocomplete/createAutocompletePropGetters.js +222 -0
  9. package/dist/cjs/components/autocomplete/icons.js +56 -0
  10. package/dist/cjs/components/autocomplete/index.js +71 -0
  11. package/dist/cjs/components/chat/Chat.js +79 -0
  12. package/dist/cjs/components/chat/ChatHeader.js +89 -0
  13. package/dist/cjs/components/chat/ChatMessage.js +138 -0
  14. package/dist/cjs/components/chat/ChatMessageError.js +57 -0
  15. package/dist/cjs/components/chat/ChatMessageLoader.js +47 -0
  16. package/dist/cjs/components/chat/ChatMessages.js +192 -0
  17. package/dist/cjs/components/chat/ChatPrompt.js +179 -0
  18. package/dist/cjs/components/chat/ChatToggleButton.js +46 -0
  19. package/dist/cjs/components/chat/icons.js +375 -0
  20. package/dist/cjs/components/chat/types.js +1 -0
  21. package/dist/cjs/components/index.js +132 -0
  22. package/dist/cjs/lib/index.js +22 -0
  23. package/dist/cjs/lib/stickToBottom.js +481 -0
  24. package/dist/cjs/lib/utils/find.js +15 -0
  25. package/dist/cjs/lib/utils/index.js +27 -0
  26. package/dist/cjs/lib/utils/startsWith.js +9 -0
  27. package/dist/cjs/version.js +1 -1
  28. package/dist/cjs/warn.js +40 -0
  29. package/dist/es/components/Button.d.ts +38 -0
  30. package/dist/es/components/Button.js +22 -0
  31. package/dist/es/components/Carousel.d.ts +11 -0
  32. package/dist/es/components/Carousel.js +26 -6
  33. package/dist/es/components/autocomplete/Autocomplete.d.ts +13 -0
  34. package/dist/es/components/autocomplete/Autocomplete.js +16 -0
  35. package/dist/es/components/autocomplete/AutocompleteIndex.d.ts +38 -0
  36. package/dist/es/components/autocomplete/AutocompleteIndex.js +37 -0
  37. package/dist/es/components/autocomplete/AutocompletePanel.d.ts +17 -0
  38. package/dist/es/components/autocomplete/AutocompletePanel.js +18 -0
  39. package/dist/es/components/autocomplete/AutocompleteSearch.d.ts +8 -0
  40. package/dist/es/components/autocomplete/AutocompleteSearch.js +63 -0
  41. package/dist/es/components/autocomplete/AutocompleteSuggestion.d.ts +16 -0
  42. package/dist/es/components/autocomplete/AutocompleteSuggestion.js +14 -0
  43. package/dist/es/components/autocomplete/createAutocompletePropGetters.d.ts +49 -0
  44. package/dist/es/components/autocomplete/createAutocompletePropGetters.js +215 -0
  45. package/dist/es/components/autocomplete/icons.d.ts +7 -0
  46. package/dist/es/components/autocomplete/icons.js +48 -0
  47. package/dist/es/components/autocomplete/index.d.ts +6 -0
  48. package/dist/es/components/autocomplete/index.js +6 -0
  49. package/dist/es/components/chat/Chat.d.ts +42 -0
  50. package/dist/es/components/chat/Chat.js +72 -0
  51. package/dist/es/components/chat/ChatHeader.d.ts +99 -0
  52. package/dist/es/components/chat/ChatHeader.js +82 -0
  53. package/dist/es/components/chat/ChatMessage.d.ts +124 -0
  54. package/dist/es/components/chat/ChatMessage.js +131 -0
  55. package/dist/es/components/chat/ChatMessageError.d.ts +27 -0
  56. package/dist/es/components/chat/ChatMessageError.js +50 -0
  57. package/dist/es/components/chat/ChatMessageLoader.d.ts +15 -0
  58. package/dist/es/components/chat/ChatMessageLoader.js +40 -0
  59. package/dist/es/components/chat/ChatMessages.d.ts +139 -0
  60. package/dist/es/components/chat/ChatMessages.js +185 -0
  61. package/dist/es/components/chat/ChatPrompt.d.ts +119 -0
  62. package/dist/es/components/chat/ChatPrompt.js +172 -0
  63. package/dist/es/components/chat/ChatToggleButton.d.ts +29 -0
  64. package/dist/es/components/chat/ChatToggleButton.js +39 -0
  65. package/dist/es/components/chat/icons.d.ts +22 -0
  66. package/dist/es/components/chat/icons.js +355 -0
  67. package/dist/es/components/chat/types.d.ts +29 -0
  68. package/dist/es/components/chat/types.js +1 -0
  69. package/dist/es/components/index.d.ts +12 -0
  70. package/dist/es/components/index.js +12 -0
  71. package/dist/es/lib/index.d.ts +2 -0
  72. package/dist/es/lib/index.js +3 -1
  73. package/dist/es/lib/stickToBottom.d.ts +114 -0
  74. package/dist/es/lib/stickToBottom.js +474 -0
  75. package/dist/es/lib/utils/find.d.ts +1 -0
  76. package/dist/es/lib/utils/find.js +9 -0
  77. package/dist/es/lib/utils/index.d.ts +2 -0
  78. package/dist/es/lib/utils/index.js +2 -0
  79. package/dist/es/lib/utils/startsWith.d.ts +1 -0
  80. package/dist/es/lib/utils/startsWith.js +3 -0
  81. package/dist/es/types/Renderer.d.ts +1 -1
  82. package/dist/es/version.d.ts +1 -1
  83. package/dist/es/version.js +1 -1
  84. package/dist/es/warn.d.ts +10 -0
  85. package/dist/es/warn.js +33 -0
  86. package/package.json +7 -3
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatComponent = createChatComponent;
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 _ChatHeader = require("./ChatHeader");
13
+ var _ChatMessages = require("./ChatMessages");
14
+ var _ChatPrompt = require("./ChatPrompt");
15
+ var _ChatToggleButton = require("./ChatToggleButton");
16
+ var _excluded = ["open", "maximized", "headerProps", "toggleButtonProps", "messagesProps", "promptProps", "headerComponent", "promptComponent", "toggleButtonComponent", "classNames", "className"];
17
+ 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; }
18
+ 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; }
19
+ function createChatComponent(_ref) {
20
+ var createElement = _ref.createElement,
21
+ Fragment = _ref.Fragment;
22
+ var ChatToggleButton = (0, _ChatToggleButton.createChatToggleButtonComponent)({
23
+ createElement: createElement,
24
+ Fragment: Fragment
25
+ });
26
+ var ChatHeader = (0, _ChatHeader.createChatHeaderComponent)({
27
+ createElement: createElement,
28
+ Fragment: Fragment
29
+ });
30
+ var ChatMessages = (0, _ChatMessages.createChatMessagesComponent)({
31
+ createElement: createElement,
32
+ Fragment: Fragment
33
+ });
34
+ var ChatPrompt = (0, _ChatPrompt.createChatPromptComponent)({
35
+ createElement: createElement,
36
+ Fragment: Fragment
37
+ });
38
+ return function Chat(_ref2) {
39
+ var open = _ref2.open,
40
+ _ref2$maximized = _ref2.maximized,
41
+ maximized = _ref2$maximized === void 0 ? false : _ref2$maximized,
42
+ headerProps = _ref2.headerProps,
43
+ toggleButtonProps = _ref2.toggleButtonProps,
44
+ messagesProps = _ref2.messagesProps,
45
+ _ref2$promptProps = _ref2.promptProps,
46
+ promptProps = _ref2$promptProps === void 0 ? {} : _ref2$promptProps,
47
+ HeaderComponent = _ref2.headerComponent,
48
+ PromptComponent = _ref2.promptComponent,
49
+ ToggleButtonComponent = _ref2.toggleButtonComponent,
50
+ _ref2$classNames = _ref2.classNames,
51
+ classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames,
52
+ className = _ref2.className,
53
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
54
+ return createElement("div", (0, _extends2.default)({}, props, {
55
+ className: (0, _lib.cx)('ais-Chat', maximized && 'ais-Chat--maximized', classNames.root, className)
56
+ }), createElement("div", {
57
+ className: (0, _lib.cx)('ais-Chat-container', open && 'ais-Chat-container--open', maximized && 'ais-Chat-container--maximized', classNames.container)
58
+ }, createElement(HeaderComponent || ChatHeader, _objectSpread(_objectSpread({}, headerProps), {}, {
59
+ classNames: classNames.header,
60
+ maximized: maximized
61
+ })), createElement(ChatMessages, (0, _extends2.default)({}, messagesProps, {
62
+ classNames: classNames.messages
63
+ })), createElement(PromptComponent || ChatPrompt, _objectSpread(_objectSpread({}, promptProps), {}, {
64
+ classNames: classNames.prompt
65
+ }))), createElement("div", {
66
+ className: "ais-Chat-toggleButtonWrapper"
67
+ }, createElement(ToggleButtonComponent || ChatToggleButton, _objectSpread(_objectSpread({}, toggleButtonProps), {}, {
68
+ classNames: classNames.toggleButton,
69
+ onClick: function onClick() {
70
+ var _toggleButtonProps$on;
71
+ (_toggleButtonProps$on = toggleButtonProps.onClick) === null || _toggleButtonProps$on === void 0 ? void 0 : _toggleButtonProps$on.call(toggleButtonProps);
72
+ if (!open) {
73
+ var _promptProps$promptRe, _promptProps$promptRe2;
74
+ (_promptProps$promptRe = promptProps.promptRef) === null || _promptProps$promptRe === void 0 ? void 0 : (_promptProps$promptRe2 = _promptProps$promptRe.current) === null || _promptProps$promptRe2 === void 0 ? void 0 : _promptProps$promptRe2.focus();
75
+ }
76
+ }
77
+ }))));
78
+ };
79
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatHeaderComponent = createChatHeaderComponent;
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 = ["maximized", "onToggleMaximize", "onClose", "onClear", "canClear", "closeIconComponent", "minimizeIconComponent", "maximizeIconComponent", "titleIconComponent", "classNames", "translations"];
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 createChatHeaderComponent(_ref) {
18
+ var createElement = _ref.createElement;
19
+ var Button = (0, _Button.createButtonComponent)({
20
+ createElement: createElement
21
+ });
22
+ return function ChatHeader(_ref2) {
23
+ var _ref2$maximized = _ref2.maximized,
24
+ maximized = _ref2$maximized === void 0 ? false : _ref2$maximized,
25
+ onToggleMaximize = _ref2.onToggleMaximize,
26
+ onClose = _ref2.onClose,
27
+ onClear = _ref2.onClear,
28
+ _ref2$canClear = _ref2.canClear,
29
+ canClear = _ref2$canClear === void 0 ? false : _ref2$canClear,
30
+ CloseIconComponent = _ref2.closeIconComponent,
31
+ MinimizeIconComponent = _ref2.minimizeIconComponent,
32
+ MaximizeIconComponent = _ref2.maximizeIconComponent,
33
+ TitleIconComponent = _ref2.titleIconComponent,
34
+ _ref2$classNames = _ref2.classNames,
35
+ classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames,
36
+ userTranslations = _ref2.translations,
37
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
38
+ var translations = _objectSpread({
39
+ title: 'Chat',
40
+ minimizeLabel: 'Minimize chat',
41
+ maximizeLabel: 'Maximize chat',
42
+ closeLabel: 'Close chat',
43
+ clearLabel: 'Clear'
44
+ }, userTranslations);
45
+ var defaultMaximizeIcon = maximized ? createElement(_icons.MinimizeIconComponent, {
46
+ createElement: createElement
47
+ }) : createElement(_icons.MaximizeIconComponent, {
48
+ createElement: createElement
49
+ });
50
+ return createElement("div", (0, _extends2.default)({
51
+ className: (0, _lib.cx)('ais-ChatHeader', classNames.root, props.className)
52
+ }, props), createElement("span", {
53
+ className: (0, _lib.cx)('ais-ChatHeader-title', classNames.title)
54
+ }, createElement("span", {
55
+ className: (0, _lib.cx)('ais-ChatHeader-titleIcon', classNames.titleIcon)
56
+ }, TitleIconComponent ? createElement(TitleIconComponent, null) : createElement(_icons.SparklesIconComponent, {
57
+ createElement: createElement,
58
+ width: 20,
59
+ height: 20
60
+ })), translations.title), createElement("div", {
61
+ className: (0, _lib.cx)('ais-ChatHeader-actions')
62
+ }, onClear && createElement(Button, {
63
+ variant: "ghost",
64
+ size: "sm",
65
+ className: (0, _lib.cx)('ais-ChatHeader-clear', classNames.clear),
66
+ onClick: onClear,
67
+ disabled: !canClear
68
+ }, translations.clearLabel), createElement(Button, {
69
+ variant: "ghost",
70
+ size: "sm",
71
+ iconOnly: true,
72
+ className: (0, _lib.cx)('ais-ChatHeader-maximize', classNames.maximize),
73
+ onClick: onToggleMaximize,
74
+ "aria-label": maximized ? translations.minimizeLabel : translations.maximizeLabel
75
+ }, MaximizeIconComponent ? createElement(MaximizeIconComponent, {
76
+ maximized: maximized
77
+ }) : defaultMaximizeIcon), createElement(Button, {
78
+ variant: "ghost",
79
+ size: "sm",
80
+ iconOnly: true,
81
+ className: (0, _lib.cx)('ais-ChatHeader-close', classNames.close),
82
+ onClick: onClose,
83
+ "aria-label": translations.closeLabel,
84
+ title: translations.closeLabel
85
+ }, CloseIconComponent ? createElement(CloseIconComponent, null) : createElement(_icons.CloseIconComponent, {
86
+ createElement: createElement
87
+ }))));
88
+ };
89
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatMessageComponent = createChatMessageComponent;
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 _markdownToJsx = require("markdown-to-jsx");
12
+ var _lib = require("../../lib");
13
+ var _Button = require("../Button");
14
+ var _icons = require("./icons");
15
+ var _excluded = ["classNames", "message", "side", "variant", "actions", "autoHideActions", "leadingComponent", "actionsComponent", "footerComponent", "tools", "indexUiState", "setIndexUiState", "onClose", "translations"];
16
+ 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; }
17
+ 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; }
18
+ function createChatMessageComponent(_ref) {
19
+ var createElement = _ref.createElement;
20
+ var Button = (0, _Button.createButtonComponent)({
21
+ createElement: createElement
22
+ });
23
+ return function ChatMessage(userProps) {
24
+ var _userProps$classNames = userProps.classNames,
25
+ classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames,
26
+ message = userProps.message,
27
+ _userProps$side = userProps.side,
28
+ side = _userProps$side === void 0 ? 'left' : _userProps$side,
29
+ _userProps$variant = userProps.variant,
30
+ variant = _userProps$variant === void 0 ? 'subtle' : _userProps$variant,
31
+ _userProps$actions = userProps.actions,
32
+ actions = _userProps$actions === void 0 ? [] : _userProps$actions,
33
+ _userProps$autoHideAc = userProps.autoHideActions,
34
+ autoHideActions = _userProps$autoHideAc === void 0 ? false : _userProps$autoHideAc,
35
+ LeadingComponent = userProps.leadingComponent,
36
+ ActionsComponent = userProps.actionsComponent,
37
+ FooterComponent = userProps.footerComponent,
38
+ _userProps$tools = userProps.tools,
39
+ tools = _userProps$tools === void 0 ? {} : _userProps$tools,
40
+ indexUiState = userProps.indexUiState,
41
+ setIndexUiState = userProps.setIndexUiState,
42
+ onClose = userProps.onClose,
43
+ userTranslations = userProps.translations,
44
+ props = (0, _objectWithoutProperties2.default)(userProps, _excluded);
45
+ var translations = _objectSpread({
46
+ messageLabel: 'Message',
47
+ actionsLabel: 'Message actions'
48
+ }, userTranslations);
49
+ var hasLeading = Boolean(LeadingComponent);
50
+ var hasActions = Boolean(actions.length > 0 || ActionsComponent);
51
+ var cssClasses = {
52
+ root: (0, _lib.cx)('ais-ChatMessage', "ais-ChatMessage--".concat(side), "ais-ChatMessage--".concat(variant), autoHideActions && 'ais-ChatMessage--auto-hide-actions', classNames.root),
53
+ container: (0, _lib.cx)('ais-ChatMessage-container', classNames.container),
54
+ leading: (0, _lib.cx)('ais-ChatMessage-leading', classNames.leading),
55
+ content: (0, _lib.cx)('ais-ChatMessage-content', classNames.content),
56
+ message: (0, _lib.cx)('ais-ChatMessage-message', classNames.message),
57
+ actions: (0, _lib.cx)('ais-ChatMessage-actions', classNames.actions),
58
+ footer: (0, _lib.cx)('ais-ChatMessage-footer', classNames.footer)
59
+ };
60
+ function renderMessagePart(part, index) {
61
+ if (part.type === 'step-start') {
62
+ return null;
63
+ }
64
+ if (part.type === 'text') {
65
+ var markdown = (0, _markdownToJsx.compiler)(part.text, {
66
+ createElement: createElement,
67
+ disableParsingRawHTML: true
68
+ });
69
+ return createElement("span", {
70
+ key: "".concat(message.id, "-").concat(index)
71
+ }, markdown);
72
+ }
73
+ if ((0, _lib.startsWith)(part.type, 'tool-')) {
74
+ var toolName = part.type.replace('tool-', '');
75
+ var tool = tools[toolName];
76
+ if (tool) {
77
+ var ToolLayoutComponent = tool.layoutComponent;
78
+ var toolMessage = part;
79
+ var boundAddToolResult = function boundAddToolResult(params) {
80
+ var _tool$addToolResult;
81
+ return (_tool$addToolResult = tool.addToolResult) === null || _tool$addToolResult === void 0 ? void 0 : _tool$addToolResult.call(tool, {
82
+ output: params.output,
83
+ tool: part.type,
84
+ toolCallId: toolMessage.toolCallId
85
+ });
86
+ };
87
+ return createElement("div", {
88
+ key: "".concat(message.id, "-").concat(index),
89
+ className: "ais-ChatMessage-tool"
90
+ }, createElement(ToolLayoutComponent, {
91
+ message: toolMessage,
92
+ indexUiState: indexUiState,
93
+ setIndexUiState: setIndexUiState,
94
+ addToolResult: boundAddToolResult,
95
+ onClose: onClose
96
+ }));
97
+ }
98
+ }
99
+ return null;
100
+ }
101
+ return createElement("article", (0, _extends2.default)({}, props, {
102
+ className: (0, _lib.cx)(cssClasses.root, props.className),
103
+ "aria-label": translations.messageLabel
104
+ }), createElement("div", {
105
+ className: (0, _lib.cx)(cssClasses.container)
106
+ }, hasLeading && createElement("div", {
107
+ className: (0, _lib.cx)(cssClasses.leading)
108
+ }, LeadingComponent && createElement(LeadingComponent, null)), createElement("div", {
109
+ className: (0, _lib.cx)(cssClasses.content)
110
+ }, createElement("div", {
111
+ className: (0, _lib.cx)(cssClasses.message)
112
+ }, message.parts.map(renderMessagePart)), hasActions && createElement("div", {
113
+ className: (0, _lib.cx)(cssClasses.actions),
114
+ "aria-label": translations.actionsLabel
115
+ }, ActionsComponent ? createElement(ActionsComponent, {
116
+ actions: actions,
117
+ message: message
118
+ }) : actions.map(function (action, index) {
119
+ return createElement(Button, {
120
+ key: index,
121
+ variant: "ghost",
122
+ size: "sm",
123
+ iconOnly: true,
124
+ className: "ais-ChatMessage-action",
125
+ disabled: action.disabled,
126
+ "aria-label": action.title,
127
+ onClick: function onClick() {
128
+ var _action$onClick;
129
+ return (_action$onClick = action.onClick) === null || _action$onClick === void 0 ? void 0 : _action$onClick.call(action, message);
130
+ }
131
+ }, action.icon ? createElement(action.icon, null) : createElement(_icons.MenuIconComponent, {
132
+ createElement: createElement
133
+ }));
134
+ })), FooterComponent && createElement("div", {
135
+ className: (0, _lib.cx)(cssClasses.footer)
136
+ }, createElement(FooterComponent, null)))));
137
+ };
138
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createChatMessageErrorComponent = createChatMessageErrorComponent;
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 _Button = require("../Button");
12
+ var _icons = require("./icons");
13
+ var _excluded = ["onReload", "actions", "translations"];
14
+ 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; }
15
+ 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; }
16
+ function createChatMessageErrorComponent(_ref) {
17
+ var createElement = _ref.createElement;
18
+ var Button = (0, _Button.createButtonComponent)({
19
+ createElement: createElement
20
+ });
21
+ return function ChatMessageError(_ref2) {
22
+ var onReload = _ref2.onReload,
23
+ actions = _ref2.actions,
24
+ userTranslations = _ref2.translations,
25
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
26
+ var translations = _objectSpread({
27
+ errorMessage: 'Sorry, we are not able to generate a response at the moment. Please retry or contact support.',
28
+ retryText: 'Retry'
29
+ }, userTranslations);
30
+ return createElement("article", (0, _extends2.default)({
31
+ className: "ais-ChatMessageError ais-ChatMessage ais-ChatMessage--left ais-ChatMessage--subtle"
32
+ }, props), createElement("div", {
33
+ className: "ais-ChatMessage-container"
34
+ }, createElement("div", {
35
+ className: "ais-ChatMessage-content"
36
+ }, createElement("div", {
37
+ className: "ais-ChatMessage-message"
38
+ }, translations.errorMessage), (actions || onReload) && createElement("div", {
39
+ className: "ais-ChatMessage-actions"
40
+ }, actions ? actions.map(function (action, index) {
41
+ return createElement(Button, (0, _extends2.default)({
42
+ key: index,
43
+ variant: "ghost",
44
+ className: "ais-ChatMessage-action"
45
+ }, action), action.children);
46
+ }) : createElement(Button, {
47
+ variant: "primary",
48
+ size: "md",
49
+ className: "ais-ChatMessage-errorAction",
50
+ onClick: function onClick() {
51
+ return onReload === null || onReload === void 0 ? void 0 : onReload();
52
+ }
53
+ }, createElement(_icons.ReloadIconComponent, {
54
+ createElement: createElement
55
+ }), translations.retryText)))));
56
+ };
57
+ }
@@ -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
+ }