stream-chat-react 10.0.0-theming-v2.3 → 10.0.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 (57) hide show
  1. package/dist/browser.full-bundle.js +216 -202
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +3 -3
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
  6. package/dist/components/Attachment/AttachmentActions.js +1 -1
  7. package/dist/components/Attachment/AttachmentContainer.js +2 -2
  8. package/dist/components/Channel/Channel.d.ts.map +1 -1
  9. package/dist/components/Channel/Channel.js +6 -1
  10. package/dist/components/ChannelList/ChannelList.d.ts +3 -9
  11. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  12. package/dist/components/ChannelList/ChannelList.js +24 -26
  13. package/dist/components/ChannelSearch/ChannelSearch.d.ts +6 -3
  14. package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
  15. package/dist/components/ChannelSearch/ChannelSearch.js +19 -2
  16. package/dist/components/ChannelSearch/SearchBar.js +1 -1
  17. package/dist/components/ChannelSearch/SearchInput.d.ts +3 -1
  18. package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
  19. package/dist/components/ChannelSearch/SearchInput.js +2 -2
  20. package/dist/components/ChannelSearch/SearchResults.js +1 -2
  21. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +9 -7
  22. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  23. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +23 -29
  24. package/dist/components/MessageActions/MessageActionsBox.js +1 -1
  25. package/dist/components/MessageInput/CooldownTimer.d.ts +7 -0
  26. package/dist/components/MessageInput/CooldownTimer.d.ts.map +1 -0
  27. package/dist/components/MessageInput/CooldownTimer.js +17 -0
  28. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  29. package/dist/components/MessageInput/MessageInputFlat.js +1 -1
  30. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  31. package/dist/components/MessageInput/MessageInputSmall.js +1 -1
  32. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +0 -5
  33. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  34. package/dist/components/MessageInput/hooks/useCooldownTimer.js +1 -17
  35. package/dist/components/MessageInput/index.d.ts +1 -0
  36. package/dist/components/MessageInput/index.d.ts.map +1 -1
  37. package/dist/components/MessageInput/index.js +1 -0
  38. package/dist/context/ChannelStateContext.d.ts +1 -1
  39. package/dist/context/ComponentContext.d.ts +1 -1
  40. package/dist/context/ComponentContext.d.ts.map +1 -1
  41. package/dist/css/index.css +1 -1
  42. package/dist/css/index.css.map +1 -1
  43. package/dist/css/v2/index.css +1 -1
  44. package/dist/css/v2/index.css.map +1 -1
  45. package/dist/css/v2/index.layout.css +1 -1
  46. package/dist/css/v2/index.layout.css.map +1 -1
  47. package/dist/index.cjs.js +214 -200
  48. package/dist/index.cjs.js.map +1 -1
  49. package/dist/scss/Attachment.scss +45 -2
  50. package/dist/scss/Gallery.scss +12 -6
  51. package/dist/scss/Message.scss +2 -1
  52. package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +72 -46
  53. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +2 -0
  54. package/dist/version.d.ts +1 -1
  55. package/dist/version.d.ts.map +1 -1
  56. package/dist/version.js +1 -1
  57. package/package.json +4 -4
@@ -5585,7 +5585,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
5585
5585
  var handleActionClick = function (event, name, value) { return actionHandler === null || actionHandler === void 0 ? void 0 : actionHandler(name, value, event); };
5586
5586
  return (React__default["default"].createElement("div", { className: 'str-chat__message-attachment-actions' },
5587
5587
  React__default["default"].createElement("div", { className: 'str-chat__message-attachment-actions-form' },
5588
- React__default["default"].createElement("span", { key: 0 }, text),
5588
+ React__default["default"].createElement("span", null, text),
5589
5589
  actions.map(function (action) { return (React__default["default"].createElement("button", { className: "str-chat__message-attachment-actions-button str-chat__message-attachment-actions-button--".concat(action.style), "data-testid": "".concat(action.name), "data-value": action.value, key: "".concat(id, "-").concat(action.value), onClick: function (event) { return handleActionClick(event, action.name, action.value); } }, action.text)); }))));
5590
5590
  };
5591
5591
  /**
@@ -13531,7 +13531,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
13531
13531
  var actionHandler = _a.actionHandler, attachment = _a.attachment, _c = _a.AttachmentActions, AttachmentActions$1 = _c === void 0 ? AttachmentActions : _c;
13532
13532
  if (!((_b = attachment.actions) === null || _b === void 0 ? void 0 : _b.length))
13533
13533
  return null;
13534
- return (React__default["default"].createElement(AttachmentActions$1, __assign$8({}, attachment, { actionHandler: function (event, name, value) { return actionHandler === null || actionHandler === void 0 ? void 0 : actionHandler(event, name, value); }, actions: attachment.actions, id: attachment.id || '', text: attachment.text || '' })));
13534
+ return (React__default["default"].createElement(AttachmentActions$1, __assign$8({}, attachment, { actionHandler: actionHandler, actions: attachment.actions, id: attachment.id || '', text: attachment.text || '' })));
13535
13535
  };
13536
13536
  var GalleryContainer = function (_a) {
13537
13537
  var attachment = _a.attachment, _b = _a.Gallery, Gallery$1 = _b === void 0 ? Gallery : _b;
@@ -13555,7 +13555,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
13555
13555
  var componentType = 'card';
13556
13556
  if (attachment.actions && attachment.actions.length) {
13557
13557
  return (React__default["default"].createElement(AttachmentWithinContainer, { attachment: attachment, componentType: componentType },
13558
- React__default["default"].createElement("div", { className: 'str-chat__attachment', key: "key-image-".concat(attachment.id) },
13558
+ React__default["default"].createElement("div", { className: 'str-chat__attachment' },
13559
13559
  React__default["default"].createElement(Card, __assign$8({}, attachment)),
13560
13560
  React__default["default"].createElement(AttachmentActionsContainer, __assign$8({}, props)))));
13561
13561
  }
@@ -40891,7 +40891,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
40891
40891
  var customActionsArray = Object.keys(customMessageActions);
40892
40892
  return (React__default["default"].createElement(React__default["default"].Fragment, null, customActionsArray.map(function (customAction) {
40893
40893
  var customHandler = customMessageActions[customAction];
40894
- return (React__default["default"].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', key: customAction, onClick: function (event) { return customHandler(message, event); }, role: 'option' }, customAction));
40894
+ return (React__default["default"].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item str-chat__message-actions-list-item-button', key: customAction, onClick: function (event) { return customHandler(message, event); }, role: 'option' }, customAction));
40895
40895
  })));
40896
40896
  };
40897
40897
  var UnMemoizedMessageActionsBox = function (props) {
@@ -45385,46 +45385,6 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
45385
45385
 
45386
45386
  function noop$1() {}
45387
45387
 
45388
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var CooldownTimer = function (_a) {
45389
- var cooldownInterval = _a.cooldownInterval, setCooldownRemaining = _a.setCooldownRemaining;
45390
- var _b = React.useState(cooldownInterval), seconds = _b[0], setSeconds = _b[1];
45391
- React.useEffect(function () {
45392
- var countdownInterval = setInterval(function () {
45393
- if (seconds > 0) {
45394
- setSeconds(seconds - 1);
45395
- }
45396
- else {
45397
- setCooldownRemaining(0);
45398
- }
45399
- }, 1000);
45400
- return function () { return clearInterval(countdownInterval); };
45401
- });
45402
- return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
45403
- };
45404
- var useCooldownTimer = function () {
45405
- var latestMessageDatesByChannels = useChatContext('useCooldownTimer').latestMessageDatesByChannels;
45406
- var channel = useChannelStateContext('useCooldownTimer').channel;
45407
- var _a = (channel.data ||
45408
- {}), cooldownInterval = _a.cooldown, own_capabilities = _a.own_capabilities;
45409
- var _b = React.useState(), cooldownRemaining = _b[0], setCooldownRemaining = _b[1];
45410
- var skipCooldown = !(own_capabilities === null || own_capabilities === void 0 ? void 0 : own_capabilities.includes('slow-mode'));
45411
- React.useEffect(function () {
45412
- var latestMessageDate = latestMessageDatesByChannels[channel.cid];
45413
- if (!cooldownInterval || !latestMessageDate) {
45414
- return;
45415
- }
45416
- var remainingCooldown = Math.round(cooldownInterval - (new Date().getTime() - latestMessageDate.getTime()) / 1000);
45417
- if (remainingCooldown > 0 && !skipCooldown) {
45418
- setCooldownRemaining(remainingCooldown);
45419
- }
45420
- }, [channel.id, cooldownInterval, latestMessageDatesByChannels[channel.cid]]);
45421
- return {
45422
- cooldownInterval: cooldownInterval || 0,
45423
- cooldownRemaining: cooldownRemaining,
45424
- setCooldownRemaining: setCooldownRemaining,
45425
- };
45426
- };
45427
-
45428
45388
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var QuotedMessagePreviewHeader = function () {
45429
45389
  var setQuotedMessage = useChannelActionContext('QuotedMessagePreview').setQuotedMessage;
45430
45390
  var t = useTranslationContext('QuotedMessagePreview').t;
@@ -45525,6 +45485,23 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
45525
45485
  state.uploading && React__default["default"].createElement(LoadingIndicatorIcon, { size: 17 }))));
45526
45486
  };
45527
45487
 
45488
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var CooldownTimer = function (_a) {
45489
+ var cooldownInterval = _a.cooldownInterval, setCooldownRemaining = _a.setCooldownRemaining;
45490
+ var _b = React.useState(cooldownInterval), seconds = _b[0], setSeconds = _b[1];
45491
+ React.useEffect(function () {
45492
+ var countdownInterval = setInterval(function () {
45493
+ if (seconds > 0) {
45494
+ setSeconds(seconds - 1);
45495
+ }
45496
+ else {
45497
+ setCooldownRemaining(0);
45498
+ }
45499
+ }, 1000);
45500
+ return function () { return clearInterval(countdownInterval); };
45501
+ });
45502
+ return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
45503
+ };
45504
+
45528
45505
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageInputFlat = function () {
45529
45506
  var quotedMessage = useChannelStateContext('MessageInputFlat').quotedMessage;
45530
45507
  var setQuotedMessage = useChannelActionContext('MessageInputFlat').setQuotedMessage;
@@ -45677,6 +45654,30 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
45677
45654
  React__default["default"].createElement("button", { className: 'str-chat__edit-message-send', type: 'submit' }, t('Send'))))))));
45678
45655
  };
45679
45656
 
45657
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useCooldownTimer = function () {
45658
+ var latestMessageDatesByChannels = useChatContext('useCooldownTimer').latestMessageDatesByChannels;
45659
+ var channel = useChannelStateContext('useCooldownTimer').channel;
45660
+ var _a = (channel.data ||
45661
+ {}), cooldownInterval = _a.cooldown, own_capabilities = _a.own_capabilities;
45662
+ var _b = React.useState(), cooldownRemaining = _b[0], setCooldownRemaining = _b[1];
45663
+ var skipCooldown = !(own_capabilities === null || own_capabilities === void 0 ? void 0 : own_capabilities.includes('slow-mode'));
45664
+ React.useEffect(function () {
45665
+ var latestMessageDate = latestMessageDatesByChannels[channel.cid];
45666
+ if (!cooldownInterval || !latestMessageDate) {
45667
+ return;
45668
+ }
45669
+ var remainingCooldown = Math.round(cooldownInterval - (new Date().getTime() - latestMessageDate.getTime()) / 1000);
45670
+ if (remainingCooldown > 0 && !skipCooldown) {
45671
+ setCooldownRemaining(remainingCooldown);
45672
+ }
45673
+ }, [channel.id, cooldownInterval, latestMessageDatesByChannels[channel.cid]]);
45674
+ return {
45675
+ cooldownInterval: cooldownInterval || 0,
45676
+ cooldownRemaining: cooldownRemaining,
45677
+ setCooldownRemaining: setCooldownRemaining,
45678
+ };
45679
+ };
45680
+
45680
45681
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useEmojiIndex = function () {
45681
45682
  var _a = useEmojiContext('useEmojiIndex'), emojiConfig = _a.emojiConfig, EmojiIndex = _a.EmojiIndex;
45682
45683
  var emojiData = (emojiConfig || {}).emojiData;
@@ -47512,6 +47513,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
47512
47513
  });
47513
47514
  });
47514
47515
  };
47516
+ var clearHighlightedMessageTimeoutId = React.useRef(null);
47515
47517
  var jumpToMessage = function (messageId, messageLimit) {
47516
47518
  if (messageLimit === void 0) { messageLimit = 100; }
47517
47519
  return __awaiter$3(void 0, void 0, void 0, function () {
@@ -47531,7 +47533,11 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
47531
47533
  highlightedMessageId: messageId,
47532
47534
  type: 'jumpToMessageFinished',
47533
47535
  });
47534
- setTimeout(function () {
47536
+ if (clearHighlightedMessageTimeoutId.current) {
47537
+ clearTimeout(clearHighlightedMessageTimeoutId.current);
47538
+ }
47539
+ clearHighlightedMessageTimeoutId.current = setTimeout(function () {
47540
+ clearHighlightedMessageTimeoutId.current = null;
47535
47541
  dispatch({ type: 'clearHighlightedMessage' });
47536
47542
  }, 500);
47537
47543
  return [2 /*return*/];
@@ -48441,151 +48447,34 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48441
48447
  return (React__default["default"].createElement(Preview, __assign$8({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
48442
48448
  };
48443
48449
 
48444
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var SearchInput = function (props) {
48445
- var inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query;
48446
- var t = useTranslationContext('SearchInput').t;
48447
- return (React__default["default"].createElement("input", { className: 'str-chat__channel-search-input', "data-testid": 'search-input', onChange: onSearch, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
48448
- };
48449
-
48450
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MenuIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'menu-icon', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
48451
- React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M3 8V6H21V8H3ZM3 13H21V11H3V13ZM3 18H21V16H3V18Z', fill: 'black', fillRule: 'evenodd' }))); };
48452
- var ReturnIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'return-icon', fill: 'none', height: '20', viewBox: '0 0 22 22', width: '20', xmlns: 'http://www.w3.org/2000/svg' },
48453
- React__default["default"].createElement("path", { d: 'M21.6668 9.66666V12.3333H5.6529L12.9932 19.6736L11.1076 21.5592L0.54834 11L11.1076 0.440765L12.9932 2.32638L5.6529 9.66666H21.6668Z', fill: '#080707' }))); };
48454
- var XIcon = function () { return (React__default["default"].createElement("svg", { fill: 'none', height: '14', viewBox: '0 0 14 14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
48455
- React__default["default"].createElement("path", { d: 'M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z', fill: '#747881' }))); };
48456
- var SearchIcon = function (_a) {
48457
- var className = _a.className;
48458
- return (React__default["default"].createElement("svg", { className: className, fill: 'none', height: '18', viewBox: '0 0 18 18', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
48459
- React__default["default"].createElement("path", { d: 'M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z', fill: '#747881' })));
48460
- };
48461
-
48462
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
48463
-
48464
48450
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var isChannel = function (output) { return output.cid != null; };
48465
48451
 
48466
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var DefaultSearchEmpty = function () {
48467
- var t = useTranslationContext('SearchResults').t;
48468
- return (React__default["default"].createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' },
48469
- React__default["default"].createElement(SearchIcon, null),
48470
- t('No results found')));
48471
- };
48472
- var DefaultSearchResultsHeader = function (_a) {
48473
- var results = _a.results;
48474
- var t = useTranslationContext('SearchResultsHeader').t;
48475
- return (React__default["default"].createElement("div", { className: 'str-chat__channel-search-results-header', "data-testid": 'channel-search-results-header' }, t('searchResultsCount', {
48476
- count: results.length,
48477
- })));
48478
- };
48479
- var DefaultSearchResultsList = function (props) {
48480
- var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
48481
- return (React__default["default"].createElement(React__default["default"].Fragment, null, results.map(function (result, index) { return (React__default["default"].createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
48482
- };
48483
- var DefaultSearchResultItem = function (props) {
48484
- var _a, _b;
48485
- var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
48486
- var focused = focusedUser === index;
48487
- var themeVersion = useChatContext().themeVersion;
48488
- var className = clsx('str-chat__channel-search-result', focused && 'str-chat__channel-search-result--focused focused');
48489
- if (isChannel(result)) {
48490
- var channel_1 = result;
48491
- return themeVersion === '2' ? (React__default["default"].createElement(ChannelPreview, { channel: channel_1, className: className, onSelect: function () { return selectResult(channel_1); } })) : (React__default["default"].createElement("button", { "aria-label": "Select Channel: ".concat(((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: className, "data-testid": 'channel-search-result-channel', onClick: function () { return selectResult(channel_1); }, role: 'option' },
48492
- React__default["default"].createElement("div", { className: 'result-hashtag' }, "#"),
48493
- React__default["default"].createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
48494
- }
48495
- else {
48496
- return (React__default["default"].createElement("button", { "aria-label": "Select User Channel: ".concat(result.name || ''), className: className, "data-testid": 'channel-search-result-user', onClick: function () { return selectResult(result); }, role: 'option' },
48497
- React__default["default"].createElement(Avatar, { image: result.image, name: result.name || result.id, size: themeVersion === '2' ? 40 : undefined, user: result }),
48498
- React__default["default"].createElement("div", { className: 'str-chat__channel-search-result--display-name' }, result.name || result.id)));
48499
- }
48500
- };
48501
- var ResultsContainer = function (_a) {
48502
- var children = _a.children, popupResults = _a.popupResults;
48503
- var containerStyle = popupResults ? 'popup' : 'inline';
48504
- return (React__default["default"].createElement("div", { "aria-label": 'Channel search results', className: "str-chat__channel-search-container str-chat__channel-search-result-list ".concat(containerStyle) }, children));
48505
- };
48506
- var SearchResults = function (props) {
48507
- var popupResults = props.popupResults, results = props.results, searching = props.searching, _a = props.SearchEmpty, SearchEmpty = _a === void 0 ? DefaultSearchEmpty : _a, _b = props.SearchResultsHeader, SearchResultsHeader = _b === void 0 ? DefaultSearchResultsHeader : _b, SearchLoading = props.SearchLoading, _c = props.SearchResultItem, SearchResultItem = _c === void 0 ? DefaultSearchResultItem : _c, _d = props.SearchResultsList, SearchResultsList = _d === void 0 ? DefaultSearchResultsList : _d, selectResult = props.selectResult;
48508
- var t = useTranslationContext('SearchResults').t;
48509
- var _e = React.useState(), focusedResult = _e[0], setFocusedResult = _e[1];
48510
- var handleKeyDown = React.useCallback(function (event) {
48511
- if (event.key === 'ArrowUp') {
48512
- setFocusedResult(function (prevFocused) {
48513
- if (prevFocused === undefined)
48514
- return 0;
48515
- return prevFocused === 0 ? results.length - 1 : prevFocused - 1;
48516
- });
48517
- }
48518
- if (event.key === 'ArrowDown') {
48519
- setFocusedResult(function (prevFocused) {
48520
- if (prevFocused === undefined)
48521
- return 0;
48522
- return prevFocused === results.length - 1 ? 0 : prevFocused + 1;
48523
- });
48524
- }
48525
- if (event.key === 'Enter') {
48526
- event.preventDefault();
48527
- if (focusedResult !== undefined) {
48528
- selectResult(results[focusedResult]);
48529
- return setFocusedResult(undefined);
48530
- }
48531
- }
48532
- }, [focusedResult]);
48533
- React.useEffect(function () {
48534
- document.addEventListener('keydown', handleKeyDown, false);
48535
- return function () { return document.removeEventListener('keydown', handleKeyDown); };
48536
- }, [handleKeyDown]);
48537
- if (searching) {
48538
- return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults }, SearchLoading ? (React__default["default"].createElement(SearchLoading, null)) : (React__default["default"].createElement("div", { className: 'str-chat__channel-search-container-searching', "data-testid": 'search-in-progress-indicator' }, t('Searching...')))));
48539
- }
48540
- if (!results.length) {
48541
- return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults },
48542
- React__default["default"].createElement(SearchEmpty, null)));
48543
- }
48544
- return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults },
48545
- React__default["default"].createElement(SearchResultsHeader, { results: results }),
48546
- React__default["default"].createElement(SearchResultsList, { focusedUser: focusedResult, results: results, SearchResultItem: SearchResultItem, selectResult: selectResult })));
48547
- };
48548
-
48549
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedChannelSearch = function (props) {
48550
- var clearState = props.clearState, SearchResultsList = props.SearchResultsList, inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, _a = props.popupResults, popupResults = _a === void 0 ? false : _a, query = props.query, results = props.results, SearchEmpty = props.SearchEmpty, searching = props.searching, _b = props.SearchInput, SearchInput$1 = _b === void 0 ? SearchInput : _b, SearchLoading = props.SearchLoading, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader, selectResult = props.selectResult;
48551
- return (React__default["default"].createElement("div", { className: 'str-chat__channel-search', "data-testid": 'channel-search' },
48552
- React__default["default"].createElement(SearchInput$1, { clearState: clearState, inputRef: inputRef, onSearch: onSearch, placeholder: placeholder, query: query }),
48553
- query && (React__default["default"].createElement(SearchResults, { popupResults: popupResults, results: results, SearchEmpty: SearchEmpty, searching: searching, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, SearchResultsList: SearchResultsList, selectResult: selectResult }))));
48554
- };
48555
- /**
48556
- * The ChannelSearch component makes a query users call and displays the results in a list.
48557
- * Clicking on a list item will navigate you into a channel with the selected user. It can be used
48558
- * on its own or added to the ChannelList component by setting the `showChannelSearch` prop to true.
48559
- */
48560
- var ChannelSearch = React__default["default"].memo(UnMemoizedChannelSearch);
48561
-
48562
48452
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChannelSearch = function (_a) {
48563
- var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.enabled, enabled = _d === void 0 ? false : _d, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels = _e === void 0 ? false : _e, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
48453
+ var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels = _e === void 0 ? false : _e, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
48564
48454
  var _f = useChatContext('useChannelSearch'), client = _f.client, navOpen = _f.navOpen, setActiveChannel = _f.setActiveChannel, themeVersion = _f.themeVersion;
48565
48455
  var _g = React.useState(false), inputIsFocused = _g[0], setInputIsFocused = _g[1];
48566
48456
  var _h = React.useState(''), query = _h[0], setQuery = _h[1];
48567
48457
  var _j = React.useState([]), results = _j[0], setResults = _j[1];
48568
- var _k = React.useState(false), resultsOpen = _k[0], setResultsOpen = _k[1];
48569
- var _l = React.useState(false), searching = _l[0], setSearching = _l[1];
48458
+ var _k = React.useState(false), searching = _k[0], setSearching = _k[1];
48570
48459
  var inputRef = React.useRef(null);
48571
48460
  var searchBarRef = React.useRef(null);
48572
- var clearState = function () {
48461
+ var clearState = React.useCallback(function () {
48573
48462
  setQuery('');
48574
48463
  setResults([]);
48575
- setResultsOpen(false);
48576
48464
  setSearching(false);
48577
- };
48578
- var activateSearch = function () {
48465
+ }, []);
48466
+ var activateSearch = React.useCallback(function () {
48579
48467
  setInputIsFocused(true);
48580
- };
48581
- var exitSearch = function () {
48468
+ }, []);
48469
+ var exitSearch = React.useCallback(function () {
48582
48470
  var _a;
48583
48471
  setInputIsFocused(false);
48584
48472
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
48585
48473
  clearState();
48586
- };
48474
+ onSearchExit === null || onSearchExit === void 0 ? void 0 : onSearchExit();
48475
+ }, [clearState, onSearchExit]);
48587
48476
  React.useEffect(function () {
48588
- if (!enabled)
48477
+ if (disabled)
48589
48478
  return;
48590
48479
  var clickListener = function (event) {
48591
48480
  var _a, _b;
@@ -48596,17 +48485,15 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48596
48485
  : (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);
48597
48486
  if (isInputClick)
48598
48487
  return;
48599
- if ((navOpen && inputIsFocused) ||
48600
- (resultsOpen && clearSearchOnClickOutside) ||
48601
- (inputIsFocused && !query)) {
48488
+ if ((inputIsFocused && (!query || navOpen)) || clearSearchOnClickOutside) {
48602
48489
  exitSearch();
48603
48490
  }
48604
48491
  };
48605
48492
  document.addEventListener('click', clickListener);
48606
48493
  return function () { return document.removeEventListener('click', clickListener); };
48607
- }, [enabled, inputIsFocused, resultsOpen]);
48494
+ }, [disabled, inputIsFocused]);
48608
48495
  React.useEffect(function () {
48609
- if (!(inputRef.current && enabled))
48496
+ if (!inputRef.current || disabled)
48610
48497
  return;
48611
48498
  var handleKeyDown = function (event) {
48612
48499
  if (event.key === 'Escape')
@@ -48618,7 +48505,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48618
48505
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeyDown);
48619
48506
  };
48620
48507
  }, []);
48621
- var selectResult = function (result) { return __awaiter$3(void 0, void 0, void 0, function () {
48508
+ var selectResult = React.useCallback(function (result) { return __awaiter$3(void 0, void 0, void 0, function () {
48622
48509
  var selectedChannel, newChannel;
48623
48510
  return __generator$3(this, function (_a) {
48624
48511
  switch (_a.label) {
@@ -48629,7 +48516,6 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48629
48516
  return [4 /*yield*/, onSelectResult({
48630
48517
  setQuery: setQuery,
48631
48518
  setResults: setResults,
48632
- setResultsOpen: setResultsOpen,
48633
48519
  setSearching: setSearching,
48634
48520
  }, result)];
48635
48521
  case 1:
@@ -48651,13 +48537,13 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48651
48537
  case 5:
48652
48538
  setChannels(function (channels) { return lodash_uniqby(__spreadArray$1([selectedChannel], channels, true), 'cid'); });
48653
48539
  if (clearSearchOnClickOutside) {
48654
- clearState();
48540
+ exitSearch();
48655
48541
  }
48656
48542
  return [2 /*return*/];
48657
48543
  }
48658
48544
  });
48659
- }); };
48660
- var getChannels = function (text) { return __awaiter$3(void 0, void 0, void 0, function () {
48545
+ }); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult]);
48546
+ var getChannels = React.useCallback(function (text) { return __awaiter$3(void 0, void 0, void 0, function () {
48661
48547
  var userResponse, channelResponse, _a, channels, users_1, users, error_1;
48662
48548
  var _b, _c, _d, _e, _f, _g;
48663
48549
  return __generator$3(this, function (_h) {
@@ -48678,14 +48564,12 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48678
48564
  case 3:
48679
48565
  _a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
48680
48566
  setResults(__spreadArray$1(__spreadArray$1([], channels, true), users_1, true));
48681
- setResultsOpen(true);
48682
48567
  setSearching(false);
48683
48568
  return [2 /*return*/];
48684
48569
  case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
48685
48570
  case 5:
48686
48571
  users = (_h.sent()).users;
48687
48572
  setResults(users);
48688
- setResultsOpen(true);
48689
48573
  return [3 /*break*/, 7];
48690
48574
  case 6:
48691
48575
  error_1 = _h.sent();
@@ -48697,17 +48581,16 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48697
48581
  return [2 /*return*/];
48698
48582
  }
48699
48583
  });
48700
- }); };
48584
+ }); }, [client, searching]);
48701
48585
  var getChannelsThrottled = lodash_throttle(getChannels, 200);
48702
- var onSearch = function (event) {
48586
+ var onSearch = React.useCallback(function (event) {
48703
48587
  event.preventDefault();
48704
- if (!enabled)
48588
+ if (disabled)
48705
48589
  return;
48706
48590
  if (searchFunction) {
48707
48591
  searchFunction({
48708
48592
  setQuery: setQuery,
48709
48593
  setResults: setResults,
48710
- setResultsOpen: setResultsOpen,
48711
48594
  setSearching: setSearching,
48712
48595
  }, event);
48713
48596
  }
@@ -48715,7 +48598,8 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48715
48598
  setQuery(event.target.value);
48716
48599
  getChannelsThrottled(event.target.value);
48717
48600
  }
48718
- };
48601
+ onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
48602
+ }, [disabled, getChannelsThrottled, searchFunction]);
48719
48603
  return {
48720
48604
  activateSearch: activateSearch,
48721
48605
  clearState: clearState,
@@ -48731,6 +48615,24 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48731
48615
  };
48732
48616
  };
48733
48617
 
48618
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MenuIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'menu-icon', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
48619
+ React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M3 8V6H21V8H3ZM3 13H21V11H3V13ZM3 18H21V16H3V18Z', fill: 'black', fillRule: 'evenodd' }))); };
48620
+ var ReturnIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'return-icon', fill: 'none', height: '20', viewBox: '0 0 22 22', width: '20', xmlns: 'http://www.w3.org/2000/svg' },
48621
+ React__default["default"].createElement("path", { d: 'M21.6668 9.66666V12.3333H5.6529L12.9932 19.6736L11.1076 21.5592L0.54834 11L11.1076 0.440765L12.9932 2.32638L5.6529 9.66666H21.6668Z', fill: '#080707' }))); };
48622
+ var XIcon = function () { return (React__default["default"].createElement("svg", { fill: 'none', height: '14', viewBox: '0 0 14 14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
48623
+ React__default["default"].createElement("path", { d: 'M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z', fill: '#747881' }))); };
48624
+ var SearchIcon = function (_a) {
48625
+ var className = _a.className;
48626
+ return (React__default["default"].createElement("svg", { className: className, fill: 'none', height: '18', viewBox: '0 0 18 18', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
48627
+ React__default["default"].createElement("path", { d: 'M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z', fill: '#747881' })));
48628
+ };
48629
+
48630
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var SearchInput = function (props) {
48631
+ var disabled = props.disabled, inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query;
48632
+ var t = useTranslationContext('SearchInput').t;
48633
+ return (React__default["default"].createElement("input", { className: 'str-chat__channel-search-input', "data-testid": 'search-input', disabled: disabled, onChange: onSearch, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
48634
+ };
48635
+
48734
48636
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var SearchBarButton = function (_a) {
48735
48637
  var children = _a.children, className = _a.className, onClick = _a.onClick;
48736
48638
  return (React__default["default"].createElement("button", { className: clsx('str-chat__channel-search-bar-button', className), "data-testid": 'search-bar-button', onClick: onClick }, children));
@@ -48782,7 +48684,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48782
48684
  }, []);
48783
48685
  var handleClearClick = React.useCallback(function () {
48784
48686
  var _a;
48785
- inputProps.clearState();
48687
+ exitSearch();
48786
48688
  (_a = inputProps.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
48787
48689
  }, []);
48788
48690
  return (React__default["default"].createElement("div", { className: 'str-chat__channel-search-bar', "data-testid": 'search-bar', ref: searchBarRef },
@@ -48799,6 +48701,106 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48799
48701
  React__default["default"].createElement(AppMenu, null)))));
48800
48702
  };
48801
48703
 
48704
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
48705
+
48706
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var DefaultSearchEmpty = function () {
48707
+ var t = useTranslationContext('SearchResults').t;
48708
+ return (React__default["default"].createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' },
48709
+ React__default["default"].createElement(SearchIcon, null),
48710
+ t('No results found')));
48711
+ };
48712
+ var DefaultSearchResultsHeader = function (_a) {
48713
+ var results = _a.results;
48714
+ var t = useTranslationContext('SearchResultsHeader').t;
48715
+ return (React__default["default"].createElement("div", { className: 'str-chat__channel-search-results-header', "data-testid": 'channel-search-results-header' }, t('searchResultsCount', {
48716
+ count: results.length,
48717
+ })));
48718
+ };
48719
+ var DefaultSearchResultsList = function (props) {
48720
+ var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
48721
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, results.map(function (result, index) { return (React__default["default"].createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
48722
+ };
48723
+ var DefaultSearchResultItem = function (props) {
48724
+ var _a, _b;
48725
+ var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
48726
+ var focused = focusedUser === index;
48727
+ var themeVersion = useChatContext().themeVersion;
48728
+ var className = clsx('str-chat__channel-search-result', focused && 'str-chat__channel-search-result--focused focused');
48729
+ if (isChannel(result)) {
48730
+ var channel_1 = result;
48731
+ return themeVersion === '2' ? (React__default["default"].createElement(ChannelPreview, { channel: channel_1, className: className, onSelect: function () { return selectResult(channel_1); } })) : (React__default["default"].createElement("button", { "aria-label": "Select Channel: ".concat(((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: className, "data-testid": 'channel-search-result-channel', onClick: function () { return selectResult(channel_1); }, role: 'option' },
48732
+ React__default["default"].createElement("div", { className: 'result-hashtag' }, "#"),
48733
+ React__default["default"].createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
48734
+ }
48735
+ else {
48736
+ return (React__default["default"].createElement("button", { "aria-label": "Select User Channel: ".concat(result.name || ''), className: className, "data-testid": 'channel-search-result-user', onClick: function () { return selectResult(result); }, role: 'option' },
48737
+ React__default["default"].createElement(Avatar, { image: result.image, name: result.name || result.id, size: themeVersion === '2' ? 40 : undefined, user: result }),
48738
+ React__default["default"].createElement("div", { className: 'str-chat__channel-search-result--display-name' }, result.name || result.id)));
48739
+ }
48740
+ };
48741
+ var ResultsContainer = function (_a) {
48742
+ var children = _a.children, popupResults = _a.popupResults;
48743
+ return (React__default["default"].createElement("div", { "aria-label": 'Channel search results', className: clsx("str-chat__channel-search-container str-chat__channel-search-result-list", popupResults ? 'popup' : 'inline') }, children));
48744
+ };
48745
+ var SearchResults = function (props) {
48746
+ var popupResults = props.popupResults, results = props.results, searching = props.searching, _a = props.SearchEmpty, SearchEmpty = _a === void 0 ? DefaultSearchEmpty : _a, _b = props.SearchResultsHeader, SearchResultsHeader = _b === void 0 ? DefaultSearchResultsHeader : _b, SearchLoading = props.SearchLoading, _c = props.SearchResultItem, SearchResultItem = _c === void 0 ? DefaultSearchResultItem : _c, _d = props.SearchResultsList, SearchResultsList = _d === void 0 ? DefaultSearchResultsList : _d, selectResult = props.selectResult;
48747
+ var t = useTranslationContext('SearchResults').t;
48748
+ var _e = React.useState(), focusedResult = _e[0], setFocusedResult = _e[1];
48749
+ var handleKeyDown = React.useCallback(function (event) {
48750
+ if (event.key === 'ArrowUp') {
48751
+ setFocusedResult(function (prevFocused) {
48752
+ if (prevFocused === undefined)
48753
+ return 0;
48754
+ return prevFocused === 0 ? results.length - 1 : prevFocused - 1;
48755
+ });
48756
+ }
48757
+ if (event.key === 'ArrowDown') {
48758
+ setFocusedResult(function (prevFocused) {
48759
+ if (prevFocused === undefined)
48760
+ return 0;
48761
+ return prevFocused === results.length - 1 ? 0 : prevFocused + 1;
48762
+ });
48763
+ }
48764
+ if (event.key === 'Enter') {
48765
+ event.preventDefault();
48766
+ if (focusedResult !== undefined) {
48767
+ selectResult(results[focusedResult]);
48768
+ return setFocusedResult(undefined);
48769
+ }
48770
+ }
48771
+ }, [focusedResult]);
48772
+ React.useEffect(function () {
48773
+ document.addEventListener('keydown', handleKeyDown, false);
48774
+ return function () { return document.removeEventListener('keydown', handleKeyDown); };
48775
+ }, [handleKeyDown]);
48776
+ if (searching) {
48777
+ return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults }, SearchLoading ? (React__default["default"].createElement(SearchLoading, null)) : (React__default["default"].createElement("div", { className: 'str-chat__channel-search-container-searching', "data-testid": 'search-in-progress-indicator' }, t('Searching...')))));
48778
+ }
48779
+ if (!results.length) {
48780
+ return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults },
48781
+ React__default["default"].createElement(SearchEmpty, null)));
48782
+ }
48783
+ return (React__default["default"].createElement(ResultsContainer, { popupResults: popupResults },
48784
+ React__default["default"].createElement(SearchResultsHeader, { results: results }),
48785
+ React__default["default"].createElement(SearchResultsList, { focusedUser: focusedResult, results: results, SearchResultItem: SearchResultItem, selectResult: selectResult })));
48786
+ };
48787
+
48788
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var UnMemoizedChannelSearch = function (props) {
48789
+ var AppMenu = props.AppMenu, ClearInputIcon = props.ClearInputIcon, ExitSearchIcon = props.ExitSearchIcon, MenuIcon = props.MenuIcon, placeholder = props.placeholder, _a = props.popupResults, popupResults = _a === void 0 ? false : _a, _b = props.SearchBar, SearchBar$1 = _b === void 0 ? SearchBar : _b, SearchEmpty = props.SearchEmpty, _c = props.SearchInput, SearchInput$1 = _c === void 0 ? SearchInput : _c, SearchLoading = props.SearchLoading, SearchInputIcon = props.SearchInputIcon, SearchResultItem = props.SearchResultItem, SearchResultsList = props.SearchResultsList, SearchResultsHeader = props.SearchResultsHeader, channelSearchParams = __rest$4(props, ["AppMenu", "ClearInputIcon", "ExitSearchIcon", "MenuIcon", "placeholder", "popupResults", "SearchBar", "SearchEmpty", "SearchInput", "SearchLoading", "SearchInputIcon", "SearchResultItem", "SearchResultsList", "SearchResultsHeader"]);
48790
+ var themeVersion = useChatContext('ChannelSearch').themeVersion;
48791
+ var _d = useChannelSearch(channelSearchParams), activateSearch = _d.activateSearch, clearState = _d.clearState, exitSearch = _d.exitSearch, inputIsFocused = _d.inputIsFocused, inputRef = _d.inputRef, onSearch = _d.onSearch, query = _d.query, results = _d.results, searchBarRef = _d.searchBarRef, searching = _d.searching, selectResult = _d.selectResult;
48792
+ var showSearchBarV2 = themeVersion === '2';
48793
+ return (React__default["default"].createElement("div", { className: 'str-chat__channel-search', "data-testid": 'channel-search' },
48794
+ showSearchBarV2 ? (React__default["default"].createElement(SearchBar$1, { activateSearch: activateSearch, AppMenu: AppMenu, ClearInputIcon: ClearInputIcon, clearState: clearState, disabled: channelSearchParams.disabled, exitSearch: exitSearch, ExitSearchIcon: ExitSearchIcon, inputIsFocused: inputIsFocused, inputRef: inputRef, MenuIcon: MenuIcon, onSearch: onSearch, placeholder: placeholder, query: query, searchBarRef: searchBarRef, SearchInput: SearchInput$1, SearchInputIcon: SearchInputIcon })) : (React__default["default"].createElement(SearchInput$1, { clearState: clearState, disabled: channelSearchParams.disabled, inputRef: inputRef, onSearch: onSearch, placeholder: placeholder, query: query })),
48795
+ query && (React__default["default"].createElement(SearchResults, { popupResults: popupResults, results: results, SearchEmpty: SearchEmpty, searching: searching, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, SearchResultsList: SearchResultsList, selectResult: selectResult }))));
48796
+ };
48797
+ /**
48798
+ * The ChannelSearch component makes a query users call and displays the results in a list.
48799
+ * Clicking on a list item will navigate you into a channel with the selected user. It can be used
48800
+ * on its own or added to the ChannelList component by setting the `showChannelSearch` prop to true.
48801
+ */
48802
+ var ChannelSearch = React__default["default"].memo(UnMemoizedChannelSearch);
48803
+
48802
48804
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var ChatBubble = function () { return (React__default["default"].createElement("svg", { "data-testid": 'chat-bubble', fill: 'none', height: '96', viewBox: '0 0 136 136', width: '96', xmlns: 'http://www.w3.org/2000/svg' },
48803
48805
  React__default["default"].createElement("path", { d: 'M106 24.5H30C24.775 24.5 20.5 28.775 20.5 34V119.5L39.5 100.5H106C111.225 100.5 115.5 96.225 115.5 91V34C115.5 28.775 111.225 24.5 106 24.5ZM106 91H39.5L30 100.5V34H106V91Z', fill: '#B4B7BB' }))); };
48804
48806
 
@@ -48847,11 +48849,11 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48847
48849
  var DEFAULT_OPTIONS = {};
48848
48850
  var DEFAULT_SORT = {};
48849
48851
  var UnMemoizedChannelList = function (props) {
48850
- var additionalChannelSearchProps = props.additionalChannelSearchProps, _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, allowNewMessagesFromUnfilteredChannels = props.allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn = props.channelRenderFilterFn, _b = props.ChannelSearch, ChannelSearch$1 = _b === void 0 ? ChannelSearch : _b, customActiveChannel = props.customActiveChannel, _c = props.EmptyStateIndicator, EmptyStateIndicator$1 = _c === void 0 ? EmptyStateIndicator : _c, filters = props.filters, _d = props.LoadingErrorIndicator, LoadingErrorIndicator = _d === void 0 ? ChatDown : _d, _e = props.LoadingIndicator, LoadingIndicator = _e === void 0 ? LoadingChannels : _e, _f = props.List, List = _f === void 0 ? ChannelListMessenger : _f, lockChannelOrder = props.lockChannelOrder, onAddedToChannel = props.onAddedToChannel, onChannelDeleted = props.onChannelDeleted, onChannelHidden = props.onChannelHidden, onChannelTruncated = props.onChannelTruncated, onChannelUpdated = props.onChannelUpdated, onChannelVisible = props.onChannelVisible, onMessageNew = props.onMessageNew, onRemovedFromChannel = props.onRemovedFromChannel, options = props.options, _g = props.Paginator, Paginator = _g === void 0 ? LoadMorePaginator : _g, Preview = props.Preview, renderChannels = props.renderChannels, _h = props.SearchBar, SearchBar$1 = _h === void 0 ? SearchBar : _h, _j = props.sendChannelsToList, sendChannelsToList = _j === void 0 ? false : _j, _k = props.setActiveChannelOnMount, setActiveChannelOnMount = _k === void 0 ? true : _k, _l = props.showChannelSearch, showChannelSearch = _l === void 0 ? false : _l, _m = props.sort, sort = _m === void 0 ? DEFAULT_SORT : _m, _o = props.watchers, watchers = _o === void 0 ? {} : _o;
48851
- var _p = additionalChannelSearchProps || {}, AppMenu = _p.AppMenu, ClearInputIcon = _p.ClearInputIcon, ExitSearchIcon = _p.ExitSearchIcon, MenuIcon = _p.MenuIcon, placeholder = _p.placeholder, popupResults = _p.popupResults, SearchEmpty = _p.SearchEmpty, SearchInput = _p.SearchInput, SearchInputIcon = _p.SearchInputIcon, SearchLoading = _p.SearchLoading, SearchResultItem = _p.SearchResultItem, SearchResultsHeader = _p.SearchResultsHeader, SearchResultsList = _p.SearchResultsList, channelSearchParams = __rest$4(_p, ["AppMenu", "ClearInputIcon", "ExitSearchIcon", "MenuIcon", "placeholder", "popupResults", "SearchEmpty", "SearchInput", "SearchInputIcon", "SearchLoading", "SearchResultItem", "SearchResultsHeader", "SearchResultsList"]);
48852
- var _q = useChatContext('ChannelList'), channel = _q.channel, channelsQueryState = _q.channelsQueryState, client = _q.client, closeMobileNav = _q.closeMobileNav, customClasses = _q.customClasses, _r = _q.navOpen, navOpen = _r === void 0 ? false : _r, setActiveChannel = _q.setActiveChannel, theme = _q.theme, themeVersion = _q.themeVersion, useImageFlagEmojisOnWindows = _q.useImageFlagEmojisOnWindows;
48852
+ var additionalChannelSearchProps = props.additionalChannelSearchProps, _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, allowNewMessagesFromUnfilteredChannels = props.allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn = props.channelRenderFilterFn, _b = props.ChannelSearch, ChannelSearch$1 = _b === void 0 ? ChannelSearch : _b, customActiveChannel = props.customActiveChannel, _c = props.EmptyStateIndicator, EmptyStateIndicator$1 = _c === void 0 ? EmptyStateIndicator : _c, filters = props.filters, _d = props.LoadingErrorIndicator, LoadingErrorIndicator = _d === void 0 ? ChatDown : _d, _e = props.LoadingIndicator, LoadingIndicator = _e === void 0 ? LoadingChannels : _e, _f = props.List, List = _f === void 0 ? ChannelListMessenger : _f, lockChannelOrder = props.lockChannelOrder, onAddedToChannel = props.onAddedToChannel, onChannelDeleted = props.onChannelDeleted, onChannelHidden = props.onChannelHidden, onChannelTruncated = props.onChannelTruncated, onChannelUpdated = props.onChannelUpdated, onChannelVisible = props.onChannelVisible, onMessageNew = props.onMessageNew, onRemovedFromChannel = props.onRemovedFromChannel, options = props.options, _g = props.Paginator, Paginator = _g === void 0 ? LoadMorePaginator : _g, Preview = props.Preview, renderChannels = props.renderChannels, _h = props.sendChannelsToList, sendChannelsToList = _h === void 0 ? false : _h, _j = props.setActiveChannelOnMount, setActiveChannelOnMount = _j === void 0 ? true : _j, _k = props.showChannelSearch, showChannelSearch = _k === void 0 ? false : _k, _l = props.sort, sort = _l === void 0 ? DEFAULT_SORT : _l, _m = props.watchers, watchers = _m === void 0 ? {} : _m;
48853
+ var _o = useChatContext('ChannelList'), channel = _o.channel, channelsQueryState = _o.channelsQueryState, client = _o.client, closeMobileNav = _o.closeMobileNav, customClasses = _o.customClasses, _p = _o.navOpen, navOpen = _p === void 0 ? false : _p, setActiveChannel = _o.setActiveChannel, theme = _o.theme, useImageFlagEmojisOnWindows = _o.useImageFlagEmojisOnWindows;
48853
48854
  var channelListRef = React.useRef(null);
48854
- var _s = React.useState(0), channelUpdateCount = _s[0], setChannelUpdateCount = _s[1];
48855
+ var _q = React.useState(0), channelUpdateCount = _q[0], setChannelUpdateCount = _q[1];
48856
+ var _r = React.useState(false), searchActive = _r[0], setSearchActive = _r[1];
48855
48857
  /**
48856
48858
  * Set a channel with id {customActiveChannel} as active and move it to the top of the list.
48857
48859
  * If customActiveChannel prop is absent, then set the first channel in list as active channel.
@@ -48896,9 +48898,22 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48896
48898
  * force a re-render. Incrementing this dummy variable ensures the channel previews update.
48897
48899
  */
48898
48900
  var forceUpdate = function () { return setChannelUpdateCount(function (count) { return count + 1; }); };
48899
- var _t = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler), channels = _t.channels, hasNextPage = _t.hasNextPage, loadNextPage = _t.loadNextPage, setChannels = _t.setChannels;
48900
- var channelSearchController = useChannelSearch(__assign$8({ enabled: showChannelSearch, setChannels: setChannels }, channelSearchParams));
48901
- var activateSearch = channelSearchController.activateSearch, clearState = channelSearchController.clearState, exitSearch = channelSearchController.exitSearch, inputIsFocused = channelSearchController.inputIsFocused, inputRef = channelSearchController.inputRef, onSearch = channelSearchController.onSearch, query = channelSearchController.query, results = channelSearchController.results, searchBarRef = channelSearchController.searchBarRef, searching = channelSearchController.searching, selectResult = channelSearchController.selectResult;
48901
+ var onSearch = React.useCallback(function (event) {
48902
+ var _a;
48903
+ if (!event.target.value) {
48904
+ setSearchActive(false);
48905
+ }
48906
+ else {
48907
+ setSearchActive(true);
48908
+ }
48909
+ (_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearch) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps, event);
48910
+ }, []);
48911
+ var onSearchExit = React.useCallback(function () {
48912
+ var _a;
48913
+ setSearchActive(false);
48914
+ (_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearchExit) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps);
48915
+ }, []);
48916
+ var _s = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler), channels = _s.channels, hasNextPage = _s.hasNextPage, loadNextPage = _s.loadNextPage, setChannels = _s.setChannels;
48902
48917
  var loadedChannels = channelRenderFilterFn ? channelRenderFilterFn(channels) : channels;
48903
48918
  useMobileNavigation(channelListRef, navOpen, closeMobileNav);
48904
48919
  useMessageNewListener(setChannels, lockChannelOrder, allowNewMessagesFromUnfilteredChannels);
@@ -48943,12 +48958,11 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48943
48958
  'str-chat--windows-flags': useImageFlagEmojisOnWindows && navigator.userAgent.match(/Win/),
48944
48959
  'str-chat-channel-list--open': navOpen,
48945
48960
  });
48946
- var showSearchV2 = themeVersion === '2' && !popupResults;
48961
+ var showChannelList = !searchActive || (additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.popupResults);
48947
48962
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
48948
48963
  React__default["default"].createElement("div", { className: className, ref: channelListRef },
48949
- showChannelSearch &&
48950
- (showSearchV2 ? (React__default["default"].createElement(SearchBar$1, { activateSearch: activateSearch, AppMenu: AppMenu, ClearInputIcon: ClearInputIcon, clearState: clearState, exitSearch: exitSearch, ExitSearchIcon: ExitSearchIcon, inputIsFocused: inputIsFocused, inputRef: inputRef, MenuIcon: MenuIcon, onSearch: onSearch, placeholder: placeholder, query: query, searchBarRef: searchBarRef, SearchInputIcon: SearchInputIcon })) : (React__default["default"].createElement(ChannelSearch$1, __assign$8({ placeholder: placeholder, popupResults: popupResults, SearchEmpty: SearchEmpty, SearchInput: SearchInput, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, SearchResultsList: SearchResultsList }, channelSearchController)))),
48951
- query && showSearchV2 ? (React__default["default"].createElement(SearchResults, { results: results, SearchEmpty: SearchEmpty, searching: searching, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, SearchResultsList: SearchResultsList, selectResult: selectResult })) : (React__default["default"].createElement(List, { error: channelsQueryState.error, loadedChannels: sendChannelsToList ? loadedChannels : undefined, loading: channelsQueryState.queryInProgress === 'reload', LoadingErrorIndicator: LoadingErrorIndicator, LoadingIndicator: LoadingIndicator, setChannels: setChannels }, !(loadedChannels === null || loadedChannels === void 0 ? void 0 : loadedChannels.length) ? (React__default["default"].createElement(EmptyStateIndicator$1, { listType: 'channel' })) : (React__default["default"].createElement(Paginator, { hasNextPage: hasNextPage, loadNextPage: loadNextPage, refreshing: channelsQueryState.queryInProgress === 'load-more' }, renderChannels
48964
+ showChannelSearch && (React__default["default"].createElement(ChannelSearch$1, __assign$8({ onSearch: onSearch, onSearchExit: onSearchExit, setChannels: setChannels }, additionalChannelSearchProps))),
48965
+ showChannelList && (React__default["default"].createElement(List, { error: channelsQueryState.error, loadedChannels: sendChannelsToList ? loadedChannels : undefined, loading: channelsQueryState.queryInProgress === 'reload', LoadingErrorIndicator: LoadingErrorIndicator, LoadingIndicator: LoadingIndicator, setChannels: setChannels }, !(loadedChannels === null || loadedChannels === void 0 ? void 0 : loadedChannels.length) ? (React__default["default"].createElement(EmptyStateIndicator$1, { listType: 'channel' })) : (React__default["default"].createElement(Paginator, { hasNextPage: hasNextPage, loadNextPage: loadNextPage, refreshing: channelsQueryState.queryInProgress === 'load-more' }, renderChannels
48952
48966
  ? renderChannels(loadedChannels, renderChannel)
48953
48967
  : loadedChannels.map(function (channel) { return renderChannel(channel); }))))))));
48954
48968
  };
@@ -48963,7 +48977,7 @@ var StreamChatReact = (function (exports, React, streamChat, ReactDOM) {
48963
48977
 
48964
48978
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
48965
48979
 
48966
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '10.0.0-theming-v2.3';
48980
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version = '10.0.0';
48967
48981
 
48968
48982
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
48969
48983
  var _b, _c;