react-instantsearch 7.40.0 → 7.42.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.
@@ -16,7 +16,9 @@ var _instantsearchuicomponents = require("instantsearch-ui-components");
16
16
  var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
17
17
  var CarouselUiComponent = (0, _instantsearchuicomponents.createCarouselComponent)({
18
18
  createElement: _react.createElement,
19
- Fragment: _react.Fragment
19
+ Fragment: _react.Fragment,
20
+ useEffect: _react.useEffect,
21
+ useRef: _react.useRef
20
22
  });
21
23
  function Carousel(props) {
22
24
  var _useState = _sliced_to_array._((0, _react.useState)(false), 2), canScrollLeft = _useState[0], setCanScrollLeft = _useState[1];
@@ -3,9 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "EXPERIMENTAL_Autocomplete", {
7
- enumerable: true,
8
- get: function() {
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get Autocomplete () {
14
+ return Autocomplete;
15
+ },
16
+ get EXPERIMENTAL_Autocomplete () {
9
17
  return EXPERIMENTAL_Autocomplete;
10
18
  }
11
19
  });
@@ -18,13 +26,13 @@ var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
18
26
  var _type_of = require("@swc/helpers/_/_type_of");
19
27
  var _instantsearchuicomponents = require("instantsearch-ui-components");
20
28
  var _chat = require("instantsearch.js/cjs/lib/chat");
21
- require("instantsearch.js/cjs/lib/utils");
29
+ var _utils = require("instantsearch.js/cjs/lib/utils");
22
30
  var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
23
31
  var _reactinstantsearchcore = require("react-instantsearch-core");
24
32
  var _AutocompleteSearch = require("../components/AutocompleteSearch");
25
33
  var _Highlight = require("./Highlight");
26
34
  var _ReverseHighlight = require("./ReverseHighlight");
27
- var Autocomplete = (0, _instantsearchuicomponents.createAutocompleteComponent)({
35
+ var AutocompleteUiComponent = (0, _instantsearchuicomponents.createAutocompleteComponent)({
28
36
  createElement: _react.createElement,
29
37
  Fragment: _react.Fragment
30
38
  });
@@ -210,7 +218,7 @@ function getMediaQueryList(mediaQuery) {
210
218
  setIsModalOpen: setIsModalOpen
211
219
  };
212
220
  }
213
- function EXPERIMENTAL_Autocomplete(props) {
221
+ function Autocomplete(props) {
214
222
  var _showRecent_classNames, _showRecent_classNames1, _showRecent_classNames2, _showRecent_classNames3;
215
223
  var indices = 'indices' in props ? props.indices : undefined;
216
224
  var feeds = 'feeds' in props ? props.feeds : undefined;
@@ -243,10 +251,10 @@ function EXPERIMENTAL_Autocomplete(props) {
243
251
  var domId = useAutocompleteId();
244
252
  var instanceKey = domId.replace(/:/g, '');
245
253
  if (isFeedsMode && indices !== undefined) {
246
- throw new Error('EXPERIMENTAL_Autocomplete: `feeds` and `indices` are mutually exclusive.');
254
+ throw new Error('Autocomplete: `feeds` and `indices` are mutually exclusive.');
247
255
  }
248
256
  if (isFeedsMode && !compositionID) {
249
- throw new Error('EXPERIMENTAL_Autocomplete in feeds-mode requires a composition-based <InstantSearch> (compositionID must be set).');
257
+ throw new Error('Autocomplete in feeds-mode requires a composition-based <InstantSearch> (compositionID must be set).');
250
258
  }
251
259
  var isSearchStalled = status === 'stalled';
252
260
  var searchParameters = _object_spread._({
@@ -461,7 +469,7 @@ function EXPERIMENTAL_Autocomplete(props) {
461
469
  }
462
470
  setActivated(true);
463
471
  };
464
- return /*#__PURE__*/ _react.default.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, shellRootProps), {
472
+ return /*#__PURE__*/ _react.default.createElement(AutocompleteUiComponent, _object_spread_props._(_object_spread._({}, shellRootProps), {
465
473
  classNames: classNames
466
474
  }), isDetached ? /*#__PURE__*/ _react.default.createElement(AutocompleteDetachedSearchButton, {
467
475
  query: (_indexUiState_query = indexUiState.query) !== null && _indexUiState_query !== void 0 ? _indexUiState_query : '',
@@ -504,7 +512,7 @@ function EXPERIMENTAL_Autocomplete(props) {
504
512
  }));
505
513
  if (isFeedsMode) {
506
514
  return /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Index, {
507
- EXPERIMENTAL_isolated: true,
515
+ isolated: true,
508
516
  indexName: compositionID,
509
517
  indexId: "ais-autocomplete-".concat(instanceKey)
510
518
  }, /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Configure, searchParameters), /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Feeds, {
@@ -515,7 +523,7 @@ function EXPERIMENTAL_Autocomplete(props) {
515
523
  }), innerAutocomplete);
516
524
  }
517
525
  return /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Index, {
518
- EXPERIMENTAL_isolated: true,
526
+ isolated: true,
519
527
  indexId: "ais-autocomplete-".concat(instanceKey)
520
528
  }, /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Configure, searchParameters), indicesConfig.map(function(index) {
521
529
  return /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Index, {
@@ -525,6 +533,7 @@ function EXPERIMENTAL_Autocomplete(props) {
525
533
  }, /*#__PURE__*/ _react.default.createElement(_reactinstantsearchcore.Configure, index.searchParameters));
526
534
  }), innerAutocomplete);
527
535
  }
536
+ var EXPERIMENTAL_Autocomplete = (0, _utils.deprecate)(Autocomplete, 'EXPERIMENTAL_Autocomplete is no longer experimental. Please use Autocomplete instead.');
528
537
  function InnerAutocomplete(_0) {
529
538
  var indicesConfig = _0.indicesConfig, refineSearchBox = _0.refineSearchBox, isSearchStalled = _0.isSearchStalled, getSearchPageURL = _0.getSearchPageURL, userOnSelect = _0.onSelect, indexUiState = _0.indexUiState, isSearchPage = _0.isSearchPage, PanelComponent = _0.panelComponent, showRecent = _0.showRecent, recentSearchConfig = _0.recentSearchConfig, showQuerySuggestions = _0.showQuerySuggestions, showPromptSuggestions = _0.showPromptSuggestions, chatRenderState = _0.chatRenderState, transformItems = _0.transformItems, placeholder = _0.placeholder, autoFocus = _0.autoFocus, translations = _0.translations, classNames = _0.classNames, aiMode = _0.aiMode, domId = _0.domId, detached = _0.detached, props = _object_without_properties._(_0, [
530
539
  "indicesConfig",
@@ -641,7 +650,7 @@ function InnerAutocomplete(_0) {
641
650
  if (chatRenderState) {
642
651
  if ((0, _chat.openChat)(chatRenderState, {
643
652
  message: item.prompt,
644
- referer: 'prompt-suggestions'
653
+ referer: 'prompt-suggestions-autocomplete'
645
654
  })) {
646
655
  setQuery('');
647
656
  }
@@ -810,7 +819,7 @@ function InnerAutocomplete(_0) {
810
819
  "ref"
811
820
  ]);
812
821
  if (isDetached) {
813
- return /*#__PURE__*/ _react.default.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, rootProps), {
822
+ return /*#__PURE__*/ _react.default.createElement(AutocompleteUiComponent, _object_spread_props._(_object_spread._({}, props, rootProps), {
814
823
  rootRef: rootRef,
815
824
  classNames: classNames
816
825
  }), /*#__PURE__*/ _react.default.createElement(AutocompleteDetachedSearchButton, {
@@ -836,7 +845,7 @@ function InnerAutocomplete(_0) {
836
845
  }, searchBoxContent), panelContent)));
837
846
  }
838
847
  // Normal (non-detached) rendering
839
- return /*#__PURE__*/ _react.default.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, rootProps), {
848
+ return /*#__PURE__*/ _react.default.createElement(AutocompleteUiComponent, _object_spread_props._(_object_spread._({}, props, rootProps), {
840
849
  rootRef: rootRef,
841
850
  classNames: classNames
842
851
  }), searchBoxContent, panelContent);
@@ -52,18 +52,35 @@ var _SearchIndexTool = require("./chat/tools/SearchIndexTool");
52
52
  var ChatUiComponent = (0, _instantsearchuicomponents.createChatComponent)({
53
53
  createElement: _react.createElement,
54
54
  Fragment: _react.Fragment,
55
- memo: _react.memo,
55
+ useMemo: _react.useMemo,
56
56
  useState: _react.useState
57
57
  });
58
58
  function createDefaultTools(itemComponent, getSearchPageURL) {
59
59
  var _obj;
60
60
  return _obj = {}, _define_property._(_obj, _chat.SearchIndexToolType, (0, _SearchIndexTool.createCarouselTool)(true, itemComponent, getSearchPageURL)), _define_property._(_obj, _chat.RecommendToolType, (0, _SearchIndexTool.createCarouselTool)(false, itemComponent, getSearchPageURL)), _define_property._(_obj, _chat.DisplayResultsToolType, (0, _DisplayResultsTool.createDisplayResultsTool)(itemComponent)), _define_property._(_obj, _chat.MemorizeToolType, {}), _define_property._(_obj, _chat.MemorySearchToolType, {}), _define_property._(_obj, _chat.PonderToolType, {}), _obj;
61
61
  }
62
+ function mergeToolOptions(defaultTools, userTools) {
63
+ if (!userTools) {
64
+ return defaultTools;
65
+ }
66
+ var tools = _object_spread._({}, defaultTools, userTools);
67
+ Object.keys(userTools).forEach(function(toolName) {
68
+ var _defaultTools_toolName;
69
+ var userTool = userTools[toolName];
70
+ var defaultStreamInput = (_defaultTools_toolName = defaultTools[toolName]) === null || _defaultTools_toolName === void 0 ? void 0 : _defaultTools_toolName.streamInput;
71
+ if (userTool.layoutComponent !== undefined && userTool.streamInput === undefined && defaultStreamInput !== undefined) {
72
+ tools[toolName] = _object_spread_props._(_object_spread._({}, userTool), {
73
+ streamInput: defaultStreamInput
74
+ });
75
+ }
76
+ });
77
+ return tools;
78
+ }
62
79
  function ChatInner(_0, _1) {
63
80
  var _ref = [
64
81
  _0,
65
82
  _1
66
- ], _ref1 = _to_array._(_ref), _ref2 = _ref1[0], _rest = _ref1.slice(1), userTools = _ref2.tools, headerProps = _ref2.headerProps, messagesProps = _ref2.messagesProps, promptProps = _ref2.promptProps, itemComponent = _ref2.itemComponent, layoutComponent = _ref2.layoutComponent, headerComponent = _ref2.headerComponent, headerTitleIconComponent = _ref2.headerTitleIconComponent, headerCloseIconComponent = _ref2.headerCloseIconComponent, headerMinimizeIconComponent = _ref2.headerMinimizeIconComponent, headerMaximizeIconComponent = _ref2.headerMaximizeIconComponent, loaderComponent = _ref2.loaderComponent, messagesErrorComponent = _ref2.messagesErrorComponent, promptComponent = _ref2.promptComponent, promptHeaderComponent = _ref2.promptHeaderComponent, promptFooterComponent = _ref2.promptFooterComponent, assistantMessageLeadingComponent = _ref2.assistantMessageLeadingComponent, assistantMessageFooterComponent = _ref2.assistantMessageFooterComponent, userMessageLeadingComponent = _ref2.userMessageLeadingComponent, userMessageFooterComponent = _ref2.userMessageFooterComponent, emptyComponent = _ref2.emptyComponent, actionsComponent = _ref2.actionsComponent, suggestionsComponent = _ref2.suggestionsComponent, classNames = _ref2.classNames, _ref_translations = _ref2.translations, translations = _ref_translations === void 0 ? {} : _ref_translations, title = _ref2.title, getSearchPageURL = _ref2.getSearchPageURL, _ref_disableTriggerValidation = _ref2.disableTriggerValidation, disableTriggerValidation = _ref_disableTriggerValidation === void 0 ? false : _ref_disableTriggerValidation, props = _object_without_properties._(_ref2, [
83
+ ], _ref1 = _to_array._(_ref), _ref2 = _ref1[0], _rest = _ref1.slice(1), userTools = _ref2.tools, headerProps = _ref2.headerProps, messagesProps = _ref2.messagesProps, promptProps = _ref2.promptProps, itemComponent = _ref2.itemComponent, layoutComponent = _ref2.layoutComponent, headerComponent = _ref2.headerComponent, headerTitleIconComponent = _ref2.headerTitleIconComponent, headerCloseIconComponent = _ref2.headerCloseIconComponent, headerMinimizeIconComponent = _ref2.headerMinimizeIconComponent, headerMaximizeIconComponent = _ref2.headerMaximizeIconComponent, loaderComponent = _ref2.loaderComponent, messagesErrorComponent = _ref2.messagesErrorComponent, promptComponent = _ref2.promptComponent, promptHeaderComponent = _ref2.promptHeaderComponent, promptFooterComponent = _ref2.promptFooterComponent, assistantMessageLeadingComponent = _ref2.assistantMessageLeadingComponent, assistantMessageFooterComponent = _ref2.assistantMessageFooterComponent, userMessageLeadingComponent = _ref2.userMessageLeadingComponent, userMessageFooterComponent = _ref2.userMessageFooterComponent, emptyComponent = _ref2.emptyComponent, actionsComponent = _ref2.actionsComponent, suggestionsComponent = _ref2.suggestionsComponent, classNames = _ref2.classNames, _ref_translations = _ref2.translations, translations = _ref_translations === void 0 ? {} : _ref_translations, title = _ref2.title, getSearchPageURL = _ref2.getSearchPageURL, _ref_disableTriggerValidation = _ref2.disableTriggerValidation, disableTriggerValidation = _ref_disableTriggerValidation === void 0 ? false : _ref_disableTriggerValidation, showReasoning = _ref2.showReasoning, props = _object_without_properties._(_ref2, [
67
84
  "tools",
68
85
  "headerProps",
69
86
  "messagesProps",
@@ -91,7 +108,8 @@ function ChatInner(_0, _1) {
91
108
  "translations",
92
109
  "title",
93
110
  "getSearchPageURL",
94
- "disableTriggerValidation"
111
+ "disableTriggerValidation",
112
+ "showReasoning"
95
113
  ]), _rest1 = _sliced_to_array._(_rest, 1), ref = _rest1[0];
96
114
  var promptTranslations = translations.prompt, headerTranslations = translations.header, messageTranslations = translations.message, messagesTranslations = translations.messages;
97
115
  var _useInstantSearch = (0, _reactinstantsearchcore.useInstantSearch)(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState;
@@ -103,7 +121,7 @@ function ChatInner(_0, _1) {
103
121
  }), scrollRef = _useStickToBottom1.scrollRef, contentRef = _useStickToBottom1.contentRef, scrollToBottom = _useStickToBottom1.scrollToBottom, isAtBottom = _useStickToBottom1.isAtBottom;
104
122
  var tools = (0, _react.useMemo)(function() {
105
123
  var defaults = createDefaultTools(itemComponent, getSearchPageURL);
106
- return _object_spread._({}, defaults, userTools);
124
+ return mergeToolOptions(defaults, userTools);
107
125
  }, [
108
126
  getSearchPageURL,
109
127
  itemComponent,
@@ -158,6 +176,10 @@ function ChatInner(_0, _1) {
158
176
  status,
159
177
  scrollToBottom
160
178
  ]);
179
+ var _ref3 = messagesProps !== null && messagesProps !== void 0 ? messagesProps : {}, callerAssistantMessageProps = _ref3.assistantMessageProps, callerUserMessageProps = _ref3.userMessageProps, restMessagesProps = _object_without_properties._(_ref3, [
180
+ "assistantMessageProps",
181
+ "userMessageProps"
182
+ ]);
161
183
  return /*#__PURE__*/ _react.default.createElement(ChatUiComponent, {
162
184
  title: title,
163
185
  open: open,
@@ -213,17 +235,18 @@ function ChatInner(_0, _1) {
213
235
  errorComponent: messagesErrorComponent,
214
236
  emptyComponent: emptyComponent,
215
237
  actionsComponent: actionsComponent,
238
+ translations: messagesTranslations,
239
+ messageTranslations: messageTranslations
240
+ }, restMessagesProps), {
216
241
  assistantMessageProps: _object_spread._({
217
242
  leadingComponent: assistantMessageLeadingComponent,
218
- footerComponent: assistantMessageFooterComponent
219
- }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.assistantMessageProps),
243
+ footerComponent: assistantMessageFooterComponent,
244
+ showReasoning: showReasoning
245
+ }, callerAssistantMessageProps),
220
246
  userMessageProps: _object_spread._({
221
247
  leadingComponent: userMessageLeadingComponent,
222
248
  footerComponent: userMessageFooterComponent
223
- }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.userMessageProps),
224
- translations: messagesTranslations,
225
- messageTranslations: messageTranslations
226
- }, messagesProps), {
249
+ }, callerUserMessageProps),
227
250
  error: error
228
251
  }),
229
252
  promptProps: _object_spread._({
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "PromptSuggestions", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return PromptSuggestions;
10
+ }
11
+ });
12
+ var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
+ var _object_spread = require("@swc/helpers/_/_object_spread");
14
+ var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
15
+ var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
16
+ var _instantsearchuicomponents = require("instantsearch-ui-components");
17
+ var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
18
+ var _reactinstantsearchcore = require("react-instantsearch-core");
19
+ var PromptSuggestionsUi = (0, _instantsearchuicomponents.createPromptSuggestionsComponent)({
20
+ createElement: _react.createElement,
21
+ Fragment: _react.Fragment
22
+ });
23
+ function PromptSuggestions(_0) {
24
+ var _0_classNames = _0.classNames, classNames = _0_classNames === void 0 ? {} : _0_classNames, LayoutComponent = _0.layoutComponent, onSuggestionClickOverride = _0.onSuggestionClick, // Connector params — forwarded to the hook, not the UI root.
25
+ agentId = _0.agentId, transport = _0.transport, configurationId = _0.configurationId, transformHits = _0.transformHits, context = _0.context, transformItems = _0.transformItems, props = _object_without_properties._(_0, [
26
+ "classNames",
27
+ "layoutComponent",
28
+ "onSuggestionClick",
29
+ "agentId",
30
+ "transport",
31
+ "configurationId",
32
+ "transformHits",
33
+ "context",
34
+ "transformItems"
35
+ ]);
36
+ var _usePromptSuggestions = (0, _reactinstantsearchcore.usePromptSuggestions)({
37
+ agentId: agentId,
38
+ transport: transport,
39
+ configurationId: configurationId,
40
+ transformHits: transformHits,
41
+ context: context,
42
+ transformItems: transformItems
43
+ }, {
44
+ $$widgetType: 'ais.promptSuggestions'
45
+ }), suggestions = _usePromptSuggestions.suggestions, isLoading = _usePromptSuggestions.isLoading, onSuggestionClick = _usePromptSuggestions.onSuggestionClick, isChatBusy = _usePromptSuggestions.isChatBusy, sendToChat = _usePromptSuggestions.sendToChat;
46
+ var handleClick = onSuggestionClickOverride ? function(prompt) {
47
+ return onSuggestionClickOverride(prompt, {
48
+ sendToChat: sendToChat
49
+ });
50
+ } : onSuggestionClick;
51
+ if (LayoutComponent) {
52
+ return /*#__PURE__*/ _react.default.createElement(LayoutComponent, {
53
+ suggestions: suggestions,
54
+ isLoading: isLoading,
55
+ onSuggestionClick: handleClick,
56
+ isChatBusy: isChatBusy
57
+ });
58
+ }
59
+ return /*#__PURE__*/ _react.default.createElement(PromptSuggestionsUi, _object_spread_props._(_object_spread._({}, props), {
60
+ classNames: classNames,
61
+ suggestions: suggestions,
62
+ isLoading: isLoading,
63
+ onSuggestionClick: handleClick,
64
+ disabled: isChatBusy
65
+ }));
66
+ }
@@ -17,11 +17,43 @@ function createDisplayResultsTool(itemComponent) {
17
17
  var DisplayResultsUIComponent = (0, _instantsearchuicomponents.createDisplayResultsToolComponent)({
18
18
  createElement: _react.createElement,
19
19
  Fragment: _react.Fragment,
20
- useMemo: _react.useMemo
20
+ useEffect: _react.useEffect,
21
+ useMemo: _react.useMemo,
22
+ useRef: _react.useRef
21
23
  });
22
24
  var Button = (0, _instantsearchuicomponents.createButtonComponent)({
23
25
  createElement: _react.createElement
24
26
  });
27
+ var DisplayResultsCarouselHeader = function DisplayResultsCarouselHeader(param) {
28
+ var nbItems = param.nbItems, canScrollLeft = param.canScrollLeft, canScrollRight = param.canScrollRight, scrollLeft = param.scrollLeft, scrollRight = param.scrollRight;
29
+ return /*#__PURE__*/ _react.default.createElement("div", {
30
+ className: "ais-ChatToolDisplayResultsCarouselHeader"
31
+ }, /*#__PURE__*/ _react.default.createElement("div", {
32
+ className: "ais-ChatToolDisplayResultsCarouselHeaderCount"
33
+ }, nbItems, " result", nbItems > 1 ? 's' : ''), /*#__PURE__*/ _react.default.createElement("div", {
34
+ className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButtons"
35
+ }, /*#__PURE__*/ _react.default.createElement(Button, {
36
+ variant: "outline",
37
+ size: "sm",
38
+ iconOnly: true,
39
+ "aria-label": "Previous",
40
+ onClick: scrollLeft,
41
+ disabled: !canScrollLeft,
42
+ className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButton"
43
+ }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronLeftIcon, {
44
+ createElement: _react.createElement
45
+ })), /*#__PURE__*/ _react.default.createElement(Button, {
46
+ variant: "outline",
47
+ size: "sm",
48
+ iconOnly: true,
49
+ "aria-label": "Next",
50
+ onClick: scrollRight,
51
+ disabled: !canScrollRight,
52
+ className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButton"
53
+ }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronRightIcon, {
54
+ createElement: _react.createElement
55
+ }))));
56
+ };
25
57
  var DisplayResultsLayoutComponent = function DisplayResultsLayoutComponent(toolProps) {
26
58
  return /*#__PURE__*/ _react.default.createElement(DisplayResultsUIComponent, {
27
59
  toolProps: toolProps,
@@ -32,39 +64,13 @@ function createDisplayResultsTool(itemComponent) {
32
64
  itemComponent: itemComponent,
33
65
  sendEvent: sendEvent,
34
66
  showNavigation: false,
35
- headerComponent: function headerComponent(param) {
36
- var canScrollLeft = param.canScrollLeft, canScrollRight = param.canScrollRight, scrollLeft = param.scrollLeft, scrollRight = param.scrollRight;
37
- return /*#__PURE__*/ _react.default.createElement("div", {
38
- className: "ais-ChatToolDisplayResultsCarouselHeader"
39
- }, /*#__PURE__*/ _react.default.createElement("div", {
40
- className: "ais-ChatToolDisplayResultsCarouselHeaderCount"
41
- }, items.length, " result", items.length > 1 ? 's' : ''), /*#__PURE__*/ _react.default.createElement("div", {
42
- className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButtons"
43
- }, /*#__PURE__*/ _react.default.createElement(Button, {
44
- variant: "outline",
45
- size: "sm",
46
- iconOnly: true,
47
- onClick: scrollLeft,
48
- disabled: !canScrollLeft,
49
- className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButton"
50
- }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronLeftIcon, {
51
- createElement: _react.createElement
52
- })), /*#__PURE__*/ _react.default.createElement(Button, {
53
- variant: "outline",
54
- size: "sm",
55
- iconOnly: true,
56
- onClick: scrollRight,
57
- disabled: !canScrollRight,
58
- className: "ais-ChatToolDisplayResultsCarouselHeaderScrollButton"
59
- }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronRightIcon, {
60
- createElement: _react.createElement
61
- }))));
62
- }
67
+ headerComponent: DisplayResultsCarouselHeader
63
68
  });
64
69
  }
65
70
  });
66
71
  };
67
72
  return {
68
- layoutComponent: DisplayResultsLayoutComponent
73
+ layoutComponent: DisplayResultsLayoutComponent,
74
+ streamInput: true
69
75
  };
70
76
  }
@@ -10,98 +10,27 @@ Object.defineProperty(exports, "createCarouselTool", {
10
10
  }
11
11
  });
12
12
  var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
- var _object_spread = require("@swc/helpers/_/_object_spread");
14
13
  var _instantsearchuicomponents = require("instantsearch-ui-components");
15
- var _utils = require("instantsearch.js/cjs/lib/utils");
16
14
  var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
17
- var _components = require("../../../components");
18
15
  function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
19
- var Button = (0, _instantsearchuicomponents.createButtonComponent)({
20
- createElement: _react.createElement
16
+ var SearchLayoutUIComponent = (0, _instantsearchuicomponents.createCarouselToolComponent)({
17
+ createElement: _react.createElement,
18
+ Fragment: _react.Fragment,
19
+ useEffect: _react.useEffect,
20
+ useMemo: _react.useMemo,
21
+ useRef: _react.useRef,
22
+ useState: _react.useState
21
23
  });
22
- function SearchLayoutComponent(param) {
23
- var message = param.message, applyFilters = param.applyFilters, onClose = param.onClose, sendEvent = param.sendEvent;
24
- var _ref;
25
- var _output_hits;
26
- var input = message === null || message === void 0 ? void 0 : message.input;
27
- var output = message === null || message === void 0 ? void 0 : message.output;
28
- var hitsWithAbsolutePosition = (0, _utils.addAbsolutePosition)((output === null || output === void 0 ? void 0 : output.hits) || [], 0, ((_ref = input === null || input === void 0 ? void 0 : input.number_of_results) !== null && _ref !== void 0 ? _ref : output === null || output === void 0 ? void 0 : (_output_hits = output.hits) === null || _output_hits === void 0 ? void 0 : _output_hits.length) || 5);
29
- var items = (0, _utils.addQueryID)(hitsWithAbsolutePosition, output === null || output === void 0 ? void 0 : output.queryID);
30
- var MemoedHeaderComponent = _react.default.useMemo(function() {
31
- return function(props) {
32
- return /*#__PURE__*/ _react.default.createElement(HeaderComponent, _object_spread._({
33
- nbHits: output === null || output === void 0 ? void 0 : output.nbHits,
34
- input: input,
35
- hitsPerPage: items.length,
36
- onClose: onClose,
37
- applyFilters: applyFilters
38
- }, props));
39
- };
40
- }, [
41
- items.length,
42
- input,
43
- output === null || output === void 0 ? void 0 : output.nbHits,
44
- applyFilters,
45
- onClose
46
- ]);
47
- return /*#__PURE__*/ _react.default.createElement(_components.Carousel, {
48
- items: items,
24
+ var SearchLayoutComponent = function SearchLayoutComponent(toolProps) {
25
+ return /*#__PURE__*/ _react.default.createElement(SearchLayoutUIComponent, {
26
+ getSearchPageURL: getSearchPageURL,
27
+ headerProps: {
28
+ showViewAll: showViewAll
29
+ },
49
30
  itemComponent: itemComponent,
50
- sendEvent: sendEvent,
51
- showNavigation: false,
52
- headerComponent: MemoedHeaderComponent
31
+ toolProps: toolProps
53
32
  });
54
- }
55
- function HeaderComponent(param) {
56
- var canScrollLeft = param.canScrollLeft, canScrollRight = param.canScrollRight, scrollLeft = param.scrollLeft, scrollRight = param.scrollRight, nbHits = param.nbHits, input = param.input, hitsPerPage = param.hitsPerPage, applyFilters = param.applyFilters, onClose = param.onClose;
57
- if ((hitsPerPage !== null && hitsPerPage !== void 0 ? hitsPerPage : 0) < 1) {
58
- return null;
59
- }
60
- return /*#__PURE__*/ _react.default.createElement("div", {
61
- className: "ais-ChatToolSearchIndexCarouselHeader"
62
- }, /*#__PURE__*/ _react.default.createElement("div", {
63
- className: "ais-ChatToolSearchIndexCarouselHeaderResults"
64
- }, nbHits && /*#__PURE__*/ _react.default.createElement("div", {
65
- className: "ais-ChatToolSearchIndexCarouselHeaderCount"
66
- }, hitsPerPage !== null && hitsPerPage !== void 0 ? hitsPerPage : 0, " of ", nbHits.toLocaleString(), " result", nbHits > 1 ? 's' : ''), showViewAll && /*#__PURE__*/ _react.default.createElement(Button, {
67
- variant: "ghost",
68
- size: "sm",
69
- onClick: function onClick() {
70
- if (!input || !applyFilters) return;
71
- var params = applyFilters({
72
- query: input.query,
73
- facetFilters: (0, _instantsearchuicomponents.getFacetFiltersFromToolInput)(input)
74
- });
75
- if (getSearchPageURL && new URL(getSearchPageURL(params)).pathname !== window.location.pathname) {
76
- window.location.href = getSearchPageURL(params);
77
- }
78
- onClose();
79
- },
80
- className: "ais-ChatToolSearchIndexCarouselHeaderViewAll"
81
- }, "View all", /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ArrowRightIcon, {
82
- createElement: _react.createElement
83
- }))), (hitsPerPage !== null && hitsPerPage !== void 0 ? hitsPerPage : 0) > 2 && /*#__PURE__*/ _react.default.createElement("div", {
84
- className: "ais-ChatToolSearchIndexCarouselHeaderScrollButtons"
85
- }, /*#__PURE__*/ _react.default.createElement(Button, {
86
- variant: "outline",
87
- size: "sm",
88
- iconOnly: true,
89
- onClick: scrollLeft,
90
- disabled: !canScrollLeft,
91
- className: "ais-ChatToolSearchIndexCarouselHeaderScrollButton"
92
- }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronLeftIcon, {
93
- createElement: _react.createElement
94
- })), /*#__PURE__*/ _react.default.createElement(Button, {
95
- variant: "outline",
96
- size: "sm",
97
- iconOnly: true,
98
- onClick: scrollRight,
99
- disabled: !canScrollRight,
100
- className: "ais-ChatToolSearchIndexCarouselHeaderScrollButton"
101
- }, /*#__PURE__*/ _react.default.createElement(_instantsearchuicomponents.ChevronRightIcon, {
102
- createElement: _react.createElement
103
- }))));
104
- }
33
+ };
105
34
  return {
106
35
  layoutComponent: SearchLayoutComponent
107
36
  };
@@ -7,6 +7,7 @@ var _export_star = require("@swc/helpers/_/_export_star");
7
7
  _export_star._(require("./Autocomplete"), exports);
8
8
  _export_star._(require("./Breadcrumb"), exports);
9
9
  _export_star._(require("./Chat"), exports);
10
+ _export_star._(require("./PromptSuggestions"), exports);
10
11
  _export_star._(require("./ChatTrigger"), exports);
11
12
  _export_star._(require("./ClearRefinements"), exports);
12
13
  _export_star._(require("./CurrentRefinements"), exports);
@@ -1,11 +1,13 @@
1
1
  import { _ as _$1 } from '@swc/helpers/esm/_object_spread.js';
2
2
  import { _ } from '@swc/helpers/esm/_sliced_to_array.js';
3
3
  import { createCarouselComponent, generateCarouselId } from 'instantsearch-ui-components';
4
- import React, { createElement, Fragment, useState, useRef } from 'react';
4
+ import React, { createElement, Fragment, useEffect, useRef, useState } from 'react';
5
5
 
6
6
  var CarouselUiComponent = createCarouselComponent({
7
7
  createElement: createElement,
8
- Fragment: Fragment
8
+ Fragment: Fragment,
9
+ useEffect: useEffect,
10
+ useRef: useRef
9
11
  });
10
12
  function Carousel(props) {
11
13
  var _useState = _(useState(false), 2), canScrollLeft = _useState[0], setCanScrollLeft = _useState[1];
package/dist/es/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  export * from 'react-instantsearch-core';
2
2
  export { useStickToBottom } from './lib/useStickToBottom.js';
3
- export { EXPERIMENTAL_Autocomplete } from './widgets/Autocomplete.js';
3
+ export { Autocomplete, EXPERIMENTAL_Autocomplete } from './widgets/Autocomplete.js';
4
4
  export { Breadcrumb } from './widgets/Breadcrumb.js';
5
5
  export { DisplayResultsToolType, MemorizeToolType, MemorySearchToolType, PonderToolType, RecommendToolType, SearchIndexToolType } from 'instantsearch.js/es/lib/chat/index.js';
6
6
  export { Chat, createDefaultTools } from './widgets/Chat.js';
7
+ export { PromptSuggestions } from './widgets/PromptSuggestions.js';
7
8
  export { ChatTrigger } from './widgets/ChatTrigger.js';
8
9
  export { ClearRefinements } from './widgets/ClearRefinements.js';
9
10
  export { CurrentRefinements } from './widgets/CurrentRefinements.js';
@@ -142,5 +142,7 @@ export type AutocompleteFeedsProps<TItem extends BaseHit> = AutocompleteCommonPr
142
142
  showPromptSuggestions?: FeedsShowPromptSuggestionsConfig;
143
143
  };
144
144
  export type AutocompleteProps<TItem extends BaseHit> = AutocompleteIndicesProps<TItem> | AutocompleteFeedsProps<TItem>;
145
- export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>(props: AutocompleteProps<TItem>): React.JSX.Element;
145
+ export declare function Autocomplete<TItem extends BaseHit = BaseHit>(props: AutocompleteProps<TItem>): React.JSX.Element;
146
+ /** @deprecated use Autocomplete instead */
147
+ export declare const EXPERIMENTAL_Autocomplete: typeof Autocomplete;
146
148
  export {};