stream-chat-react 10.10.2 → 10.11.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.
@@ -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 }),
@@ -47407,7 +47440,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47407
47440
 
47408
47441
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
47409
47442
 
47410
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.10.2';
47443
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.11.0';
47411
47444
 
47412
47445
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
47413
47446
  var _b, _c;
@@ -48075,7 +48108,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48075
48108
  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
48109
  var useReactionHandler = function (message) {
48077
48110
  var updateMessage = useChannelActionContext('useReactionHandler').updateMessage;
48078
- var channel = useChannelStateContext('useReactionHandler').channel;
48111
+ var _a = useChannelStateContext('useReactionHandler'), channel = _a.channel, channelCapabilities = _a.channelCapabilities;
48079
48112
  var client = useChatContext('useReactionHandler').client;
48080
48113
  var createMessagePreview = React$2.useCallback(function (add, reaction, message) {
48081
48114
  var _a, _b;
@@ -48099,7 +48132,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48099
48132
  ? __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
48133
  return __assign(__assign({}, message), { latest_reactions: newReactions || message.latest_reactions, own_reactions: newOwnReactions, reaction_counts: newReactionCounts, reaction_scores: newReactionCounts });
48101
48134
  }, [client.user, client.userID]);
48102
- var creatReactionPreview = function (type) {
48135
+ var createReactionPreview = function (type) {
48103
48136
  var _a;
48104
48137
  return ({
48105
48138
  message_id: message === null || message === void 0 ? void 0 : message.id,
@@ -48111,33 +48144,32 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48111
48144
  };
48112
48145
  var toggleReaction = lodash_throttle(function (id, type, add) { return __awaiter(void 0, void 0, void 0, function () {
48113
48146
  var newReaction, tempMessage, messageResponse, _a;
48114
- var _b;
48115
- return __generator(this, function (_c) {
48116
- switch (_c.label) {
48147
+ return __generator(this, function (_b) {
48148
+ switch (_b.label) {
48117
48149
  case 0:
48118
- if (!message || ((_b = channel.data) === null || _b === void 0 ? void 0 : _b.frozen))
48150
+ if (!message || !channelCapabilities['send-reaction'])
48119
48151
  return [2 /*return*/];
48120
- newReaction = creatReactionPreview(type);
48152
+ newReaction = createReactionPreview(type);
48121
48153
  tempMessage = createMessagePreview(add, newReaction, message);
48122
- _c.label = 1;
48154
+ _b.label = 1;
48123
48155
  case 1:
48124
- _c.trys.push([1, 6, , 7]);
48156
+ _b.trys.push([1, 6, , 7]);
48125
48157
  updateMessage(tempMessage);
48126
48158
  if (!add) return [3 /*break*/, 3];
48127
48159
  return [4 /*yield*/, channel.sendReaction(id, { type: type })];
48128
48160
  case 2:
48129
- _a = _c.sent();
48161
+ _a = _b.sent();
48130
48162
  return [3 /*break*/, 5];
48131
48163
  case 3: return [4 /*yield*/, channel.deleteReaction(id, type)];
48132
48164
  case 4:
48133
- _a = _c.sent();
48134
- _c.label = 5;
48165
+ _a = _b.sent();
48166
+ _b.label = 5;
48135
48167
  case 5:
48136
48168
  messageResponse = _a;
48137
48169
  updateMessage(messageResponse.message);
48138
48170
  return [3 /*break*/, 7];
48139
48171
  case 6:
48140
- _c.sent();
48172
+ _b.sent();
48141
48173
  // revert to the original message if the API call fails
48142
48174
  updateMessage(message);
48143
48175
  return [3 /*break*/, 7];
@@ -48192,12 +48224,10 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48192
48224
  }); };
48193
48225
  };
48194
48226
  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];
48227
+ var _a = useChannelStateContext('useReactionClick').channelCapabilities, channelCapabilities = _a === void 0 ? {} : _a;
48228
+ var _b = React$2.useState(false), showDetailedReactions = _b[0], setShowDetailedReactions = _b[1];
48198
48229
  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;
48230
+ var isReactionEnabled = channelCapabilities['send-reaction'];
48201
48231
  var messageDeleted = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
48202
48232
  var closeDetailedReactions = React$2.useCallback(function (event) {
48203
48233
  var _a;
@@ -48245,9 +48275,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
48245
48275
  }
48246
48276
  }, [messageDeleted, closeDetailedReactions, messageWrapperRef]);
48247
48277
  var onReactionListClick = function (event) {
48248
- if (event === null || event === void 0 ? void 0 : event.stopPropagation) {
48249
- event.stopPropagation();
48250
- }
48278
+ var _a;
48279
+ (_a = event === null || event === void 0 ? void 0 : event.stopPropagation) === null || _a === void 0 ? void 0 : _a.call(event);
48251
48280
  setShowDetailedReactions(function (prev) { return !prev; });
48252
48281
  };
48253
48282
  return {