stream-chat-react 10.10.2 → 10.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/browser.full-bundle.js +181 -70
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +5 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/ChannelPreview/ChannelPreview.d.ts +3 -0
  6. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  7. package/dist/components/ChannelPreview/ChannelPreview.js +6 -1
  8. package/dist/components/ChannelPreview/hooks/index.d.ts +1 -0
  9. package/dist/components/ChannelPreview/hooks/index.d.ts.map +1 -1
  10. package/dist/components/ChannelPreview/hooks/index.js +1 -0
  11. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +17 -0
  12. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts.map +1 -0
  13. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +58 -0
  14. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +4 -3
  15. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  16. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +52 -31
  17. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  18. package/dist/components/Message/MessageSimple.js +10 -3
  19. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  20. package/dist/components/Message/hooks/useReactionHandler.js +17 -21
  21. package/dist/components/MessageInput/CooldownTimer.js +1 -1
  22. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  23. package/dist/components/MessageInput/hooks/useCooldownTimer.js +5 -2
  24. package/dist/context/MessageContext.d.ts +3 -1
  25. package/dist/context/MessageContext.d.ts.map +1 -1
  26. package/dist/context/TranslationContext.d.ts +1 -1
  27. package/dist/context/TranslationContext.d.ts.map +1 -1
  28. package/dist/i18n/Streami18n.d.ts +9 -3
  29. package/dist/i18n/Streami18n.d.ts.map +1 -1
  30. package/dist/i18n/Streami18n.js +18 -11
  31. package/dist/index.cjs.js +167 -70
  32. package/dist/index.cjs.js.map +1 -1
  33. package/dist/version.d.ts +1 -1
  34. package/dist/version.js +1 -1
  35. package/package.json +2 -2
@@ -9993,6 +9993,24 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
9993
9993
 
9994
9994
  var relativeTime = relativeTime$1.exports;
9995
9995
 
9996
+ var utc$1 = {exports: {}};
9997
+
9998
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
9999
+ (function (module, exports) {
10000
+ !function(t,i){module.exports=i();}(commonjsGlobal,function(){return function(t,i,e){var s=i.prototype;e.utc=function(t){return new i({date:t,utc:!0,args:arguments})},s.utc=function(t){var i=e(this.toDate(),{locale:this.$L,utc:!0});return t?i.add(this.utcOffset(),"minute"):i},s.local=function(){return e(this.toDate(),{locale:this.$L,utc:!1})};var f=s.parse;s.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),f.call(this,t);};var n=s.init;s.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds();}else n.call(this);};var u=s.utcOffset;s.utcOffset=function(t,i){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?u.call(this):this.$offset;var s=Math.abs(t)<=16?60*t:t,f=this;if(i)return f.$offset=s,f.$u=0===t,f;if(0!==t){var n=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(f=this.local().add(s+n,"minute")).$offset=s,f.$x.$localOffset=n;}else f=this.utc();return f};var o=s.format;s.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return o.call(this,i)},s.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},s.isUTC=function(){return !!this.$u},s.toISOString=function(){return this.toDate().toISOString()},s.toString=function(){return this.toDate().toUTCString()};var r=s.toDate;s.toDate=function(t){return "s"===t&&this.$offset?e(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():r.call(this)};var a=s.diff;s.diff=function(t,i,s){if(t&&this.$u===t.$u)return a.call(this,t,i,s);var f=this.local(),n=e(t).local();return a.call(f,n,i,s)};}});
10001
+ } (utc$1));
10002
+
10003
+ var utc = utc$1.exports;
10004
+
10005
+ var timezone$1 = {exports: {}};
10006
+
10007
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
10008
+ (function (module, exports) {
10009
+ !function(t,e){module.exports=e();}(commonjsGlobal,function(){var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,r){var o,u=r().utcOffset(),a=function(t,n,i){void 0===i&&(i={});var r=new Date(t);return function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",r=t+"|"+i,o=e[r];return o||(o=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[r]=o),o}(n,i).formatToParts(r)},f=function(e,n){for(var i=a(e,n),o=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(o[c]=parseInt(m,10));}var d=o[3],v=24===d?0:d,h=o[0]+"-"+o[1]+"-"+o[2]+" "+v+":"+o[4]+":"+o[5]+":000",l=+e;return (r.utc(h).valueOf()-(l-=l%1e3))/6e4},s=i.prototype;s.tz=function(t,e){void 0===t&&(t=o);var n=this.utcOffset(),i=this.toDate().toLocaleString("en-US",{timeZone:t}),a=Math.round((this.toDate()-new Date(i))/1e3/60),f=r(i).$set("millisecond",this.$ms).utcOffset(u-a,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute");}return f.$x.$timezone=t,f},s.offsetName=function(t){var e=this.$x.$timezone||r.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find(function(t){return "timezonename"===t.type.toLowerCase()});return n&&n.value};var m=s.startOf;s.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return m.call(this,t,e);var n=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return m.call(n,t,e).tz(this.$x.$timezone,!0)},r.tz=function(t,e,n){var i=n&&e,u=n||e||o,a=f(+r(),u);if("string"!=typeof t)return r(t).tz(u);var s=function(t,e,n){var i=t-60*e*1e3,r=f(i,n);if(e===r)return [i,e];var o=f(i-=60*(r-e)*1e3,n);return r===o?[i,r]:[t-60*Math.min(r,o)*1e3,Math.max(r,o)]}(r.utc(t,i).valueOf(),a,u),m=s[0],c=s[1],d=r(m).utcOffset(c);return d.$x.$timezone=u,d},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(t){o=t;};}});
10010
+ } (timezone$1));
10011
+
10012
+ var timezone = timezone$1.exports;
10013
+
9996
10014
  var de$3 = {exports: {}};
9997
10015
 
9998
10016
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
@@ -10080,6 +10098,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
10080
10098
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var defaultNS = 'translation';
10081
10099
  var defaultLng = 'en';
10082
10100
  dayjs_minExports.extend(updateLocale);
10101
+ dayjs_minExports.extend(utc);
10102
+ dayjs_minExports.extend(timezone);
10083
10103
  dayjs_minExports.updateLocale('de', {
10084
10104
  calendar: {
10085
10105
  lastDay: '[gestern um] LT',
@@ -10248,6 +10268,9 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
10248
10268
  var isDayJs = function (dateTimeParser) {
10249
10269
  return dateTimeParser.extend !== undefined;
10250
10270
  };
10271
+ var supportsTz = function (dateTimeParser) {
10272
+ return dateTimeParser.tz !== undefined;
10273
+ };
10251
10274
  /**
10252
10275
  * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.
10253
10276
  * Instance of this class should be provided to Chat component to handle translations.
@@ -10491,6 +10514,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
10491
10514
  this.logger = finalOptions.logger;
10492
10515
  this.currentLanguage = finalOptions.language;
10493
10516
  this.DateTimeParser = finalOptions.DateTimeParser;
10517
+ this.timezone = finalOptions.timezone;
10494
10518
  try {
10495
10519
  if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {
10496
10520
  this.DateTimeParser.extend(localizedFormat);
@@ -10540,19 +10564,18 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
10540
10564
  "register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)");
10541
10565
  }
10542
10566
  this.tDateTimeParser = function (timestamp) {
10543
- if (finalOptions.disableDateTimeTranslations || !_this.localeExists(_this.currentLanguage)) {
10544
- /**
10545
- * TS needs to know which is being called to accept the chain call
10546
- */
10547
- if (isDayJs(_this.DateTimeParser)) {
10548
- return _this.DateTimeParser(timestamp).locale(defaultLng);
10549
- }
10550
- return _this.DateTimeParser(timestamp).locale(defaultLng);
10551
- }
10567
+ var language = finalOptions.disableDateTimeTranslations || !_this.localeExists(_this.currentLanguage)
10568
+ ? defaultLng
10569
+ : _this.currentLanguage;
10552
10570
  if (isDayJs(_this.DateTimeParser)) {
10553
- return _this.DateTimeParser(timestamp).locale(_this.currentLanguage);
10571
+ return supportsTz(_this.DateTimeParser)
10572
+ ? _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language)
10573
+ : _this.DateTimeParser(timestamp).locale(language);
10574
+ }
10575
+ if (supportsTz(_this.DateTimeParser) && _this.timezone) {
10576
+ return _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language);
10554
10577
  }
10555
- return _this.DateTimeParser(timestamp).locale(_this.currentLanguage);
10578
+ return _this.DateTimeParser(timestamp).locale(language);
10556
10579
  };
10557
10580
  }
10558
10581
  /**
@@ -42937,7 +42960,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
42937
42960
  }, 1000);
42938
42961
  return function () { return clearInterval(countdownInterval); };
42939
42962
  });
42940
- return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
42963
+ return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds));
42941
42964
  };
42942
42965
 
42943
42966
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useCommandTrigger = function () {
@@ -43653,9 +43676,12 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
43653
43676
  }, [messages, (_a = client.user) === null || _a === void 0 ? void 0 : _a.id, latestMessageDatesByChannels, channel.cid]);
43654
43677
  React$2.useEffect(function () {
43655
43678
  var timeSinceOwnLastMessage = ownLatestMessageDate
43656
- ? (new Date().getTime() - ownLatestMessageDate.getTime()) / 1000
43679
+ ? // prevent negative values
43680
+ Math.max(0, (new Date().getTime() - ownLatestMessageDate.getTime()) / 1000)
43657
43681
  : undefined;
43658
- setCooldownRemaining(!skipCooldown && timeSinceOwnLastMessage && cooldownInterval > timeSinceOwnLastMessage
43682
+ setCooldownRemaining(!skipCooldown &&
43683
+ typeof timeSinceOwnLastMessage !== 'undefined' &&
43684
+ cooldownInterval > timeSinceOwnLastMessage
43659
43685
  ? Math.round(cooldownInterval - timeSinceOwnLastMessage)
43660
43686
  : 0);
43661
43687
  }, [cooldownInterval, ownLatestMessageDate, skipCooldown]);
@@ -45098,6 +45124,13 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
45098
45124
  if (message.deleted_at || message.type === 'deleted') {
45099
45125
  return React__default["default"].createElement(MessageDeleted$1, { message: message });
45100
45126
  }
45127
+ /** FIXME: isReactionEnabled should be removed with next major version and a proper centralized permissions logic should be put in place
45128
+ * With the current permissions implementation it would be sth like:
45129
+ * const messageActions = getMessageActions();
45130
+ * const canReact = messageActions.includes(MESSAGE_ACTIONS.react);
45131
+ */
45132
+ var canReact = isReactionEnabled;
45133
+ var canShowReactions = hasReactions;
45101
45134
  var showMetadata = !groupedByUser || endOfGroup;
45102
45135
  var showReplyCountButton = !threadList && !!message.reply_count;
45103
45136
  var allowRetry = message.status === 'failed' && message.errorStatusCode !== 403;
@@ -45107,7 +45140,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
45107
45140
  'pinned-message': message.pinned,
45108
45141
  'str-chat__message--has-attachment': hasAttachment,
45109
45142
  'str-chat__message--highlighted': highlighted,
45110
- 'str-chat__message--with-reactions str-chat__message-with-thread-link': hasReactions && isReactionEnabled,
45143
+ 'str-chat__message--with-reactions str-chat__message-with-thread-link': canShowReactions,
45111
45144
  'str-chat__message-send-can-be-retried': (message === null || message === void 0 ? void 0 : message.status) === 'failed' && (message === null || message === void 0 ? void 0 : message.errorStatusCode) !== 403,
45112
45145
  'str-chat__virtual-message__wrapper--end': endOfGroup,
45113
45146
  'str-chat__virtual-message__wrapper--first': firstOfGroup,
@@ -45124,8 +45157,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
45124
45157
  }), "data-testid": 'message-inner', onClick: allowRetry ? function () { return handleRetry(message); } : undefined, onKeyUp: allowRetry ? function () { return handleRetry(message); } : undefined },
45125
45158
  React__default["default"].createElement(MessageOptions$1, null),
45126
45159
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-host' },
45127
- hasReactions && isReactionEnabled && React__default["default"].createElement(ReactionsList$1, { reverse: true }),
45128
- showDetailedReactions && isReactionEnabled && (React__default["default"].createElement(ReactionSelector$1, { ref: reactionSelectorRef }))),
45160
+ canShowReactions && React__default["default"].createElement(ReactionsList$1, { reverse: true }),
45161
+ showDetailedReactions && canReact && React__default["default"].createElement(ReactionSelector$1, { ref: reactionSelectorRef })),
45129
45162
  React__default["default"].createElement("div", { className: 'str-chat__message-bubble' },
45130
45163
  ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.length) && !message.quoted_message ? (React__default["default"].createElement(Attachment, { actionHandler: handleAction, attachments: message.attachments })) : null,
45131
45164
  React__default["default"].createElement(MessageText, { message: message, renderText: renderText }),
@@ -46801,6 +46834,63 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46801
46834
  return muted;
46802
46835
  };
46803
46836
 
46837
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};exports.MessageDeliveryStatus = void 0;
46838
+ (function (MessageDeliveryStatus) {
46839
+ MessageDeliveryStatus["DELIVERED"] = "delivered";
46840
+ MessageDeliveryStatus["READ"] = "read";
46841
+ })(exports.MessageDeliveryStatus || (exports.MessageDeliveryStatus = {}));
46842
+ var useMessageDeliveryStatus = function (_a) {
46843
+ var channel = _a.channel, lastMessage = _a.lastMessage;
46844
+ var client = useChatContext().client;
46845
+ var _b = React$2.useState(), messageDeliveryStatus = _b[0], setMessageDeliveryStatus = _b[1];
46846
+ var isOwnMessage = React$2.useCallback(function (message) { var _a; return client.user && ((_a = message === null || message === void 0 ? void 0 : message.user) === null || _a === void 0 ? void 0 : _a.id) === client.user.id; }, [client]);
46847
+ React$2.useEffect(function () {
46848
+ var lastMessageIsOwn = isOwnMessage(lastMessage);
46849
+ if (!(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.created_at) || !lastMessageIsOwn)
46850
+ return;
46851
+ var lastMessageCreatedAtDate = typeof lastMessage.created_at === 'string'
46852
+ ? new Date(lastMessage.created_at)
46853
+ : lastMessage.created_at;
46854
+ var channelReadByOthersAfterLastMessageUpdate = Object.values(channel.state.read).some(function (_a) {
46855
+ var channelLastMarkedReadDate = _a.last_read, user = _a.user;
46856
+ var ignoreOwnReadStatus = client.user && user.id !== client.user.id;
46857
+ return ignoreOwnReadStatus && lastMessageCreatedAtDate < channelLastMarkedReadDate;
46858
+ });
46859
+ setMessageDeliveryStatus(channelReadByOthersAfterLastMessageUpdate
46860
+ ? exports.MessageDeliveryStatus.READ
46861
+ : exports.MessageDeliveryStatus.DELIVERED);
46862
+ }, [channel.state.read, client, isOwnMessage, lastMessage]);
46863
+ React$2.useEffect(function () {
46864
+ var handleMessageNew = function (event) {
46865
+ // the last message is not mine, so do not show the delivery status
46866
+ if (!isOwnMessage(event.message)) {
46867
+ return setMessageDeliveryStatus(undefined);
46868
+ }
46869
+ return setMessageDeliveryStatus(exports.MessageDeliveryStatus.DELIVERED);
46870
+ };
46871
+ channel.on('message.new', handleMessageNew);
46872
+ return function () {
46873
+ channel.off('message.new', handleMessageNew);
46874
+ };
46875
+ }, [channel, client, isOwnMessage]);
46876
+ React$2.useEffect(function () {
46877
+ if (!isOwnMessage(lastMessage))
46878
+ return;
46879
+ var handleMarkRead = function (event) {
46880
+ var _a, _b;
46881
+ if (((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
46882
+ setMessageDeliveryStatus(exports.MessageDeliveryStatus.READ);
46883
+ };
46884
+ channel.on('message.read', handleMarkRead);
46885
+ return function () {
46886
+ channel.off('message.read', handleMarkRead);
46887
+ };
46888
+ }, [channel, client, lastMessage, isOwnMessage]);
46889
+ return {
46890
+ messageDeliveryStatus: messageDeliveryStatus,
46891
+ };
46892
+ };
46893
+
46804
46894
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var ChannelPreview = function (props) {
46805
46895
  var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
46806
46896
  var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
@@ -46808,6 +46898,10 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46808
46898
  var _d = useChannelPreviewInfo({ channel: channel }), displayImage = _d.displayImage, displayTitle = _d.displayTitle;
46809
46899
  var _e = React$2.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _e[0], setLastMessage = _e[1];
46810
46900
  var _f = React$2.useState(0), unread = _f[0], setUnread = _f[1];
46901
+ var messageDeliveryStatus = useMessageDeliveryStatus({
46902
+ channel: channel,
46903
+ lastMessage: lastMessage,
46904
+ }).messageDeliveryStatus;
46811
46905
  var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
46812
46906
  var muted = useIsChannelMuted(channel).muted;
46813
46907
  React$2.useEffect(function () {
@@ -46847,24 +46941,29 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46847
46941
  if (!Preview)
46848
46942
  return null;
46849
46943
  var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
46850
- return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
46944
+ return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, messageDeliveryStatus: messageDeliveryStatus, setActiveChannel: setActiveChannel, unread: unread })));
46851
46945
  };
46852
46946
 
46853
46947
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var isChannel = function (output) { return output.cid != null; };
46854
46948
 
46855
46949
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChannelSearch = function (_a) {
46856
- 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;
46857
- var _f = useChatContext('useChannelSearch'), client = _f.client, setActiveChannel = _f.setActiveChannel, themeVersion = _f.themeVersion;
46858
- var _g = React$2.useState(false), inputIsFocused = _g[0], setInputIsFocused = _g[1];
46859
- var _h = React$2.useState(''), query = _h[0], setQuery = _h[1];
46860
- var _j = React$2.useState([]), results = _j[0], setResults = _j[1];
46861
- var _k = React$2.useState(false), searching = _k[0], setSearching = _k[1];
46950
+ 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.searchDebounceIntervalMs, searchDebounceIntervalMs = _e === void 0 ? 300 : _e, _f = _a.searchForChannels, searchForChannels = _f === void 0 ? false : _f, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
46951
+ var _g = useChatContext('useChannelSearch'), client = _g.client, setActiveChannel = _g.setActiveChannel, themeVersion = _g.themeVersion;
46952
+ var _h = React$2.useState(false), inputIsFocused = _h[0], setInputIsFocused = _h[1];
46953
+ var _j = React$2.useState(''), query = _j[0], setQuery = _j[1];
46954
+ var _k = React$2.useState([]), results = _k[0], setResults = _k[1];
46955
+ var _l = React$2.useState(false), searching = _l[0], setSearching = _l[1];
46956
+ var searchQueryPromiseInProgress = React$2.useRef();
46957
+ var shouldIgnoreQueryResults = React$2.useRef(false);
46862
46958
  var inputRef = React$2.useRef(null);
46863
46959
  var searchBarRef = React$2.useRef(null);
46864
46960
  var clearState = React$2.useCallback(function () {
46865
46961
  setQuery('');
46866
46962
  setResults([]);
46867
46963
  setSearching(false);
46964
+ if (searchQueryPromiseInProgress.current) {
46965
+ shouldIgnoreQueryResults.current = true;
46966
+ }
46868
46967
  }, []);
46869
46968
  var activateSearch = React$2.useCallback(function () {
46870
46969
  setInputIsFocused(true);
@@ -46947,45 +47046,56 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46947
47046
  });
46948
47047
  }); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
46949
47048
  var getChannels = React$2.useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
46950
- var userResponse, channelResponse, _a, channels, users_1, users, error_1;
47049
+ var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
46951
47050
  var _b, _c, _d, _e, _f, _g;
46952
47051
  return __generator(this, function (_h) {
46953
47052
  switch (_h.label) {
46954
47053
  case 0:
46955
- if (!text || searching)
46956
- return [2 /*return*/];
46957
- setSearching(true);
47054
+ results = [];
46958
47055
  _h.label = 1;
46959
47056
  case 1:
46960
47057
  _h.trys.push([1, 6, , 7]);
46961
- return [4 /*yield*/, client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options))];
47058
+ userQueryPromise = client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options));
47059
+ if (!!searchForChannels) return [3 /*break*/, 3];
47060
+ searchQueryPromiseInProgress.current = userQueryPromise;
47061
+ return [4 /*yield*/, searchQueryPromiseInProgress.current];
46962
47062
  case 2:
46963
- userResponse = _h.sent();
46964
- if (!searchForChannels) return [3 /*break*/, 4];
46965
- channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
46966
- return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
46967
- case 3:
46968
- _a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
46969
- setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
46970
- setSearching(false);
46971
- return [2 /*return*/];
46972
- case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
46973
- case 5:
46974
47063
  users = (_h.sent()).users;
46975
- setResults(users);
46976
- return [3 /*break*/, 7];
47064
+ results = users;
47065
+ return [3 /*break*/, 5];
47066
+ case 3:
47067
+ channelQueryPromise = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
47068
+ searchQueryPromiseInProgress.current = Promise.all([
47069
+ channelQueryPromise,
47070
+ userQueryPromise,
47071
+ ]);
47072
+ return [4 /*yield*/, searchQueryPromiseInProgress.current];
47073
+ case 4:
47074
+ _a = _h.sent(), channels = _a[0], users = _a[1].users;
47075
+ results = __spreadArray(__spreadArray([], channels, true), users, true);
47076
+ _h.label = 5;
47077
+ case 5: return [3 /*break*/, 7];
46977
47078
  case 6:
46978
47079
  error_1 = _h.sent();
46979
- clearState();
46980
47080
  console.error(error_1);
46981
47081
  return [3 /*break*/, 7];
46982
47082
  case 7:
46983
47083
  setSearching(false);
47084
+ if (!shouldIgnoreQueryResults.current) {
47085
+ setResults(results);
47086
+ }
47087
+ else {
47088
+ shouldIgnoreQueryResults.current = false;
47089
+ }
47090
+ searchQueryPromiseInProgress.current = undefined;
46984
47091
  return [2 /*return*/];
46985
47092
  }
46986
47093
  });
46987
- }); }, [client, searching, searchForChannels]);
46988
- var getChannelsThrottled = lodash_throttle(getChannels, 200);
47094
+ }); }, [client, searchForChannels, searchQueryParams]);
47095
+ var scheduleGetChannels = React$2.useCallback(lodash_debounce(getChannels, searchDebounceIntervalMs), [
47096
+ getChannels,
47097
+ searchDebounceIntervalMs,
47098
+ ]);
46989
47099
  var onSearch = React$2.useCallback(function (event) {
46990
47100
  event.preventDefault();
46991
47101
  if (disabled)
@@ -46997,12 +47107,17 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46997
47107
  setSearching: setSearching,
46998
47108
  }, event);
46999
47109
  }
47000
- else {
47110
+ else if (event.target.value) {
47111
+ setSearching(true);
47001
47112
  setQuery(event.target.value);
47002
- getChannelsThrottled(event.target.value);
47113
+ scheduleGetChannels(event.target.value);
47114
+ }
47115
+ else if (!event.target.value) {
47116
+ clearState();
47117
+ scheduleGetChannels.cancel();
47003
47118
  }
47004
47119
  onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
47005
- }, [disabled, getChannelsThrottled, onSearchCallback, searchFunction]);
47120
+ }, [clearState, disabled, scheduleGetChannels, onSearchCallback, searchFunction]);
47006
47121
  return {
47007
47122
  activateSearch: activateSearch,
47008
47123
  clearState: clearState,
@@ -47407,7 +47522,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47407
47522
 
47408
47523
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
47409
47524
 
47410
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.10.2';
47525
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.12.0';
47411
47526
 
47412
47527
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
47413
47528
  var _b, _c;
@@ -48075,7 +48190,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48075
48190
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var reactionHandlerWarning = "Reaction handler was called, but it is missing one of its required arguments.\nMake sure the ChannelAction and ChannelState contexts are properly set and the hook is initialized with a valid message.";
48076
48191
  var useReactionHandler = function (message) {
48077
48192
  var updateMessage = useChannelActionContext('useReactionHandler').updateMessage;
48078
- var channel = useChannelStateContext('useReactionHandler').channel;
48193
+ var _a = useChannelStateContext('useReactionHandler'), channel = _a.channel, channelCapabilities = _a.channelCapabilities;
48079
48194
  var client = useChatContext('useReactionHandler').client;
48080
48195
  var createMessagePreview = React$2.useCallback(function (add, reaction, message) {
48081
48196
  var _a, _b;
@@ -48099,7 +48214,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48099
48214
  ? __spreadArray([reaction], ((message === null || message === void 0 ? void 0 : message.own_reactions) || []), true) : (_b = message === null || message === void 0 ? void 0 : message.own_reactions) === null || _b === void 0 ? void 0 : _b.filter(function (item) { return item.type !== reaction.type; });
48100
48215
  return __assign(__assign({}, message), { latest_reactions: newReactions || message.latest_reactions, own_reactions: newOwnReactions, reaction_counts: newReactionCounts, reaction_scores: newReactionCounts });
48101
48216
  }, [client.user, client.userID]);
48102
- var creatReactionPreview = function (type) {
48217
+ var createReactionPreview = function (type) {
48103
48218
  var _a;
48104
48219
  return ({
48105
48220
  message_id: message === null || message === void 0 ? void 0 : message.id,
@@ -48111,33 +48226,32 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48111
48226
  };
48112
48227
  var toggleReaction = lodash_throttle(function (id, type, add) { return __awaiter(void 0, void 0, void 0, function () {
48113
48228
  var newReaction, tempMessage, messageResponse, _a;
48114
- var _b;
48115
- return __generator(this, function (_c) {
48116
- switch (_c.label) {
48229
+ return __generator(this, function (_b) {
48230
+ switch (_b.label) {
48117
48231
  case 0:
48118
- if (!message || ((_b = channel.data) === null || _b === void 0 ? void 0 : _b.frozen))
48232
+ if (!message || !channelCapabilities['send-reaction'])
48119
48233
  return [2 /*return*/];
48120
- newReaction = creatReactionPreview(type);
48234
+ newReaction = createReactionPreview(type);
48121
48235
  tempMessage = createMessagePreview(add, newReaction, message);
48122
- _c.label = 1;
48236
+ _b.label = 1;
48123
48237
  case 1:
48124
- _c.trys.push([1, 6, , 7]);
48238
+ _b.trys.push([1, 6, , 7]);
48125
48239
  updateMessage(tempMessage);
48126
48240
  if (!add) return [3 /*break*/, 3];
48127
48241
  return [4 /*yield*/, channel.sendReaction(id, { type: type })];
48128
48242
  case 2:
48129
- _a = _c.sent();
48243
+ _a = _b.sent();
48130
48244
  return [3 /*break*/, 5];
48131
48245
  case 3: return [4 /*yield*/, channel.deleteReaction(id, type)];
48132
48246
  case 4:
48133
- _a = _c.sent();
48134
- _c.label = 5;
48247
+ _a = _b.sent();
48248
+ _b.label = 5;
48135
48249
  case 5:
48136
48250
  messageResponse = _a;
48137
48251
  updateMessage(messageResponse.message);
48138
48252
  return [3 /*break*/, 7];
48139
48253
  case 6:
48140
- _c.sent();
48254
+ _b.sent();
48141
48255
  // revert to the original message if the API call fails
48142
48256
  updateMessage(message);
48143
48257
  return [3 /*break*/, 7];
@@ -48192,12 +48306,10 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48192
48306
  }); };
48193
48307
  };
48194
48308
  var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef, closeReactionSelectorOnClick) {
48195
- var _a;
48196
- var _b = useChannelStateContext('useReactionClick'), channel = _b.channel, _c = _b.channelCapabilities, channelCapabilities = _c === void 0 ? {} : _c, channelConfig = _b.channelConfig;
48197
- var _d = React$2.useState(false), showDetailedReactions = _d[0], setShowDetailedReactions = _d[1];
48309
+ var _a = useChannelStateContext('useReactionClick').channelCapabilities, channelCapabilities = _a === void 0 ? {} : _a;
48310
+ var _b = React$2.useState(false), showDetailedReactions = _b[0], setShowDetailedReactions = _b[1];
48198
48311
  var hasListener = React$2.useRef(false);
48199
- var isFrozen = !!((_a = channel.data) === null || _a === void 0 ? void 0 : _a.frozen);
48200
- var isReactionEnabled = ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction']) || isFrozen;
48312
+ var isReactionEnabled = channelCapabilities['send-reaction'];
48201
48313
  var messageDeleted = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
48202
48314
  var closeDetailedReactions = React$2.useCallback(function (event) {
48203
48315
  var _a;
@@ -48245,9 +48357,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48245
48357
  }
48246
48358
  }, [messageDeleted, closeDetailedReactions, messageWrapperRef]);
48247
48359
  var onReactionListClick = function (event) {
48248
- if (event === null || event === void 0 ? void 0 : event.stopPropagation) {
48249
- event.stopPropagation();
48250
- }
48360
+ var _a;
48361
+ (_a = event === null || event === void 0 ? void 0 : event.stopPropagation) === null || _a === void 0 ? void 0 : _a.call(event);
48251
48362
  setShowDetailedReactions(function (prev) { return !prev; });
48252
48363
  };
48253
48364
  return {