stream-chat-react 11.22.0 → 11.23.1

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 (31) hide show
  1. package/README.md +10 -0
  2. package/dist/{Window-b4032c33.js → Window-a963f22a.js} +66 -19
  3. package/dist/browser.full-bundle.js +204 -155
  4. package/dist/browser.full-bundle.js.map +1 -1
  5. package/dist/browser.full-bundle.min.js +3 -3
  6. package/dist/browser.full-bundle.min.js.map +1 -1
  7. package/dist/components/Attachment/components/WaveProgressBar.d.ts +3 -1
  8. package/dist/components/Attachment/components/WaveProgressBar.d.ts.map +1 -1
  9. package/dist/components/Attachment/components/WaveProgressBar.js +48 -10
  10. package/dist/components/Channel/channelState.d.ts.map +1 -1
  11. package/dist/components/Channel/channelState.js +1 -1
  12. package/dist/components/Emojis/index.cjs.js +2 -2
  13. package/dist/components/Message/Timestamp.js +1 -1
  14. package/dist/components/MessageList/MessageList.d.ts +3 -1
  15. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  16. package/dist/components/MessageList/MessageList.js +2 -1
  17. package/dist/components/MessageList/VirtualizedMessageList.d.ts +3 -1
  18. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  19. package/dist/components/MessageList/VirtualizedMessageList.js +3 -3
  20. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  21. package/dist/components/MessageList/VirtualizedMessageListComponents.js +4 -3
  22. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +2 -1
  23. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  24. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -3
  25. package/dist/components/MessageList/utils.d.ts +1 -1
  26. package/dist/components/MessageList/utils.d.ts.map +1 -1
  27. package/dist/components/MessageList/utils.js +16 -6
  28. package/dist/index.cjs.js +14 -12
  29. package/dist/version.d.ts +1 -1
  30. package/dist/version.js +1 -1
  31. package/package.json +1 -1
@@ -10026,142 +10026,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
10026
10026
  return (React__default["default"].createElement("button", { className: 'str-chat__message-attachment-audio-widget--play-button', "data-testid": isPlaying ? 'pause-audio' : 'play-audio', onClick: onClick }, isPlaying ? React__default["default"].createElement(PauseIcon$1, null) : React__default["default"].createElement(PlayTriangleIcon, null)));
10027
10027
  };
10028
10028
 
10029
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var resampleWaveformData = function (waveformData, amplitudesCount) {
10030
- return waveformData.length === amplitudesCount
10031
- ? waveformData
10032
- : waveformData.length > amplitudesCount
10033
- ? downSample(waveformData, amplitudesCount)
10034
- : upSample(waveformData, amplitudesCount);
10035
- };
10036
- /**
10037
- * The downSample function uses the Largest-Triangle-Three-Buckets (LTTB) algorithm.
10038
- * See the thesis Downsampling Time Series for Visual Representation by Sveinn Steinarsson for more (https://skemman.is/bitstream/1946/15343/3/SS_MSthesis.pdf)
10039
- * @param data
10040
- * @param targetOutputSize
10041
- */
10042
- function downSample(data, targetOutputSize) {
10043
- if (data.length <= targetOutputSize || targetOutputSize === 0) {
10044
- return data;
10045
- }
10046
- if (targetOutputSize === 1)
10047
- return [mean(data)];
10048
- var result = [];
10049
- // bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output
10050
- var bucketSize = (data.length - 2) / (targetOutputSize - 2);
10051
- var lastSelectedPointIndex = 0;
10052
- result.push(data[lastSelectedPointIndex]); // Always add the first point
10053
- var maxAreaPoint, maxArea, triangleArea;
10054
- for (var bucketIndex = 1; bucketIndex < targetOutputSize - 1; bucketIndex++) {
10055
- var previousBucketRefPoint = data[lastSelectedPointIndex];
10056
- var nextBucketMean = getNextBucketMean(data, bucketIndex, bucketSize);
10057
- var currentBucketStartIndex = Math.floor((bucketIndex - 1) * bucketSize) + 1;
10058
- var nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1;
10059
- var countUnitsBetweenAtoC = 1 + nextBucketStartIndex - currentBucketStartIndex;
10060
- maxArea = triangleArea = -1;
10061
- for (var currentPointIndex = currentBucketStartIndex; currentPointIndex < nextBucketStartIndex; currentPointIndex++) {
10062
- var countUnitsBetweenAtoB = Math.abs(currentPointIndex - currentBucketStartIndex) + 1;
10063
- var countUnitsBetweenBtoC = countUnitsBetweenAtoC - countUnitsBetweenAtoB;
10064
- var currentPointValue = data[currentPointIndex];
10065
- triangleArea = triangleAreaHeron(triangleBase(Math.abs(previousBucketRefPoint - currentPointValue), countUnitsBetweenAtoB), triangleBase(Math.abs(currentPointValue - nextBucketMean), countUnitsBetweenBtoC), triangleBase(Math.abs(previousBucketRefPoint - nextBucketMean), countUnitsBetweenAtoC));
10066
- if (triangleArea > maxArea) {
10067
- maxArea = triangleArea;
10068
- maxAreaPoint = data[currentPointIndex];
10069
- lastSelectedPointIndex = currentPointIndex;
10070
- }
10071
- }
10072
- if (typeof maxAreaPoint !== 'undefined')
10073
- result.push(maxAreaPoint);
10074
- }
10075
- result.push(data[data.length - 1]); // Always add the last point
10076
- return result;
10077
- }
10078
- var triangleAreaHeron = function (a, b, c) {
10079
- var s = (a + b + c) / 2;
10080
- return Math.sqrt(s * (s - a) * (s - b) * (s - c));
10081
- };
10082
- var triangleBase = function (a, b) { return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); };
10083
- var mean = function (values) { return values.reduce(function (acc, value) { return acc + value; }, 0) / values.length; };
10084
- var getNextBucketMean = function (data, currentBucketIndex, bucketSize) {
10085
- var nextBucketStartIndex = Math.floor(currentBucketIndex * bucketSize) + 1;
10086
- var nextNextBucketStartIndex = Math.floor((currentBucketIndex + 1) * bucketSize) + 1;
10087
- nextNextBucketStartIndex =
10088
- nextNextBucketStartIndex < data.length ? nextNextBucketStartIndex : data.length;
10089
- return mean(data.slice(nextBucketStartIndex, nextNextBucketStartIndex));
10090
- };
10091
- var upSample = function (values, targetSize) {
10092
- if (!values.length) {
10093
- console.warn('Cannot extend empty array of amplitudes.');
10094
- return values;
10095
- }
10096
- if (values.length > targetSize) {
10097
- console.warn('Requested to extend the waveformData that is longer than the target list size');
10098
- return values;
10099
- }
10100
- if (targetSize === values.length)
10101
- return values;
10102
- // eslint-disable-next-line prefer-const
10103
- var _a = divMod(targetSize, values.length), bucketSize = _a[0], remainder = _a[1];
10104
- var result = [];
10105
- for (var i = 0; i < values.length; i++) {
10106
- var extra = remainder && remainder-- ? 1 : 0;
10107
- result.push.apply(result, Array(bucketSize + extra).fill(values[i]));
10108
- }
10109
- return result;
10110
- };
10111
-
10112
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var WaveProgressBar = function (_a) {
10113
- var _b = _a.amplitudesCount, amplitudesCount = _b === void 0 ? 40 : _b, _c = _a.progress, progress = _c === void 0 ? 0 : _c, seek = _a.seek, waveformData = _a.waveformData;
10114
- var _d = React$2.useState(null), progressIndicator = _d[0], setProgressIndicator = _d[1];
10115
- var isDragging = React$2.useRef(false);
10116
- var rootRef = React$2.useRef(null);
10117
- var handleDragStart = function (e) {
10118
- e.preventDefault();
10119
- if (!progressIndicator)
10120
- return;
10121
- isDragging.current = true;
10122
- progressIndicator.style.cursor = 'grabbing';
10123
- };
10124
- var handleDrag = function (e) {
10125
- if (!isDragging.current)
10126
- return;
10127
- // Due to throttling of seek, it is necessary to create a copy (snapshot) of the event.
10128
- // Otherwise, the event would be nullified at the point when the throttled function is executed.
10129
- seek(__assign({}, e));
10130
- };
10131
- var handleDragStop = React$2.useCallback(function () {
10132
- if (!progressIndicator)
10133
- return;
10134
- isDragging.current = false;
10135
- progressIndicator.style.removeProperty('cursor');
10136
- }, [progressIndicator]);
10137
- var resampledWaveformData = React$2.useMemo(function () { return resampleWaveformData(waveformData, amplitudesCount); }, [
10138
- amplitudesCount,
10139
- waveformData,
10140
- ]);
10141
- React$2.useEffect(function () {
10142
- document.addEventListener('pointerup', handleDragStop);
10143
- return function () {
10144
- document.removeEventListener('pointerup', handleDragStop);
10145
- };
10146
- }, [handleDragStop]);
10147
- if (!waveformData.length)
10148
- return null;
10149
- return (React__default["default"].createElement("div", { className: 'str-chat__wave-progress-bar__track', "data-testid": 'wave-progress-bar-track', onClick: seek, onPointerDown: handleDragStart, onPointerMove: handleDrag, onPointerUp: handleDragStop, ref: rootRef, role: 'progressbar' },
10150
- resampledWaveformData.map(function (amplitude, i) {
10151
- var _a;
10152
- return (React__default["default"].createElement("div", { className: clsx('str-chat__wave-progress-bar__amplitude-bar', (_a = {},
10153
- _a['str-chat__wave-progress-bar__amplitude-bar--active'] = progress > (i / resampledWaveformData.length) * 100,
10154
- _a)), "data-testid": 'amplitude-bar', key: "amplitude-".concat(i), style: {
10155
- '--str-chat__wave-progress-bar__amplitude-bar-height': amplitude
10156
- ? amplitude * 100 + '%'
10157
- : '0%',
10158
- } }));
10159
- }),
10160
- React__default["default"].createElement("div", { className: 'str-chat__wave-progress-bar__progress-indicator', "data-testid": 'wave-progress-bar-progress-indicator', ref: setProgressIndicator, style: { left: "".concat(progress < 0 ? 0 : progress > 100 ? 100 : progress, "%") } })));
10161
- };
10162
-
10163
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
10164
-
10165
10029
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};/**
10166
10030
  * lodash (Custom Build) <https://lodash.com/>
10167
10031
  * Build: `lodash modularize exports="npm" -o ./`
@@ -10602,6 +10466,179 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
10602
10466
 
10603
10467
  var lodash_throttle = throttle;
10604
10468
 
10469
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var resampleWaveformData = function (waveformData, amplitudesCount) {
10470
+ return waveformData.length === amplitudesCount
10471
+ ? waveformData
10472
+ : waveformData.length > amplitudesCount
10473
+ ? downSample(waveformData, amplitudesCount)
10474
+ : upSample(waveformData, amplitudesCount);
10475
+ };
10476
+ /**
10477
+ * The downSample function uses the Largest-Triangle-Three-Buckets (LTTB) algorithm.
10478
+ * See the thesis Downsampling Time Series for Visual Representation by Sveinn Steinarsson for more (https://skemman.is/bitstream/1946/15343/3/SS_MSthesis.pdf)
10479
+ * @param data
10480
+ * @param targetOutputSize
10481
+ */
10482
+ function downSample(data, targetOutputSize) {
10483
+ if (data.length <= targetOutputSize || targetOutputSize === 0) {
10484
+ return data;
10485
+ }
10486
+ if (targetOutputSize === 1)
10487
+ return [mean(data)];
10488
+ var result = [];
10489
+ // bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output
10490
+ var bucketSize = (data.length - 2) / (targetOutputSize - 2);
10491
+ var lastSelectedPointIndex = 0;
10492
+ result.push(data[lastSelectedPointIndex]); // Always add the first point
10493
+ var maxAreaPoint, maxArea, triangleArea;
10494
+ for (var bucketIndex = 1; bucketIndex < targetOutputSize - 1; bucketIndex++) {
10495
+ var previousBucketRefPoint = data[lastSelectedPointIndex];
10496
+ var nextBucketMean = getNextBucketMean(data, bucketIndex, bucketSize);
10497
+ var currentBucketStartIndex = Math.floor((bucketIndex - 1) * bucketSize) + 1;
10498
+ var nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1;
10499
+ var countUnitsBetweenAtoC = 1 + nextBucketStartIndex - currentBucketStartIndex;
10500
+ maxArea = triangleArea = -1;
10501
+ for (var currentPointIndex = currentBucketStartIndex; currentPointIndex < nextBucketStartIndex; currentPointIndex++) {
10502
+ var countUnitsBetweenAtoB = Math.abs(currentPointIndex - currentBucketStartIndex) + 1;
10503
+ var countUnitsBetweenBtoC = countUnitsBetweenAtoC - countUnitsBetweenAtoB;
10504
+ var currentPointValue = data[currentPointIndex];
10505
+ triangleArea = triangleAreaHeron(triangleBase(Math.abs(previousBucketRefPoint - currentPointValue), countUnitsBetweenAtoB), triangleBase(Math.abs(currentPointValue - nextBucketMean), countUnitsBetweenBtoC), triangleBase(Math.abs(previousBucketRefPoint - nextBucketMean), countUnitsBetweenAtoC));
10506
+ if (triangleArea > maxArea) {
10507
+ maxArea = triangleArea;
10508
+ maxAreaPoint = data[currentPointIndex];
10509
+ lastSelectedPointIndex = currentPointIndex;
10510
+ }
10511
+ }
10512
+ if (typeof maxAreaPoint !== 'undefined')
10513
+ result.push(maxAreaPoint);
10514
+ }
10515
+ result.push(data[data.length - 1]); // Always add the last point
10516
+ return result;
10517
+ }
10518
+ var triangleAreaHeron = function (a, b, c) {
10519
+ var s = (a + b + c) / 2;
10520
+ return Math.sqrt(s * (s - a) * (s - b) * (s - c));
10521
+ };
10522
+ var triangleBase = function (a, b) { return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); };
10523
+ var mean = function (values) { return values.reduce(function (acc, value) { return acc + value; }, 0) / values.length; };
10524
+ var getNextBucketMean = function (data, currentBucketIndex, bucketSize) {
10525
+ var nextBucketStartIndex = Math.floor(currentBucketIndex * bucketSize) + 1;
10526
+ var nextNextBucketStartIndex = Math.floor((currentBucketIndex + 1) * bucketSize) + 1;
10527
+ nextNextBucketStartIndex =
10528
+ nextNextBucketStartIndex < data.length ? nextNextBucketStartIndex : data.length;
10529
+ return mean(data.slice(nextBucketStartIndex, nextNextBucketStartIndex));
10530
+ };
10531
+ var upSample = function (values, targetSize) {
10532
+ if (!values.length) {
10533
+ console.warn('Cannot extend empty array of amplitudes.');
10534
+ return values;
10535
+ }
10536
+ if (values.length > targetSize) {
10537
+ console.warn('Requested to extend the waveformData that is longer than the target list size');
10538
+ return values;
10539
+ }
10540
+ if (targetSize === values.length)
10541
+ return values;
10542
+ // eslint-disable-next-line prefer-const
10543
+ var _a = divMod(targetSize, values.length), bucketSize = _a[0], remainder = _a[1];
10544
+ var result = [];
10545
+ for (var i = 0; i < values.length; i++) {
10546
+ var extra = remainder && remainder-- ? 1 : 0;
10547
+ result.push.apply(result, Array(bucketSize + extra).fill(values[i]));
10548
+ }
10549
+ return result;
10550
+ };
10551
+
10552
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var WaveProgressBar = function (_a) {
10553
+ var _b = _a.amplitudesCount, amplitudesCount = _b === void 0 ? 40 : _b, _c = _a.progress, progress = _c === void 0 ? 0 : _c, _d = _a.relativeAmplitudeBarWidth, relativeAmplitudeBarWidth = _d === void 0 ? 2 : _d, _e = _a.relativeAmplitudeGap, relativeAmplitudeGap = _e === void 0 ? 1 : _e, seek = _a.seek, waveformData = _a.waveformData;
10554
+ var _f = React$2.useState(null), progressIndicator = _f[0], setProgressIndicator = _f[1];
10555
+ var isDragging = React$2.useRef(false);
10556
+ var _g = React$2.useState(null), root = _g[0], setRoot = _g[1];
10557
+ var _h = React$2.useState(), trackAxisX = _h[0], setTrackAxisX = _h[1];
10558
+ var lastRootWidth = React$2.useRef();
10559
+ var handleDragStart = function (e) {
10560
+ e.preventDefault();
10561
+ if (!progressIndicator)
10562
+ return;
10563
+ isDragging.current = true;
10564
+ progressIndicator.style.cursor = 'grabbing';
10565
+ };
10566
+ var handleDrag = function (e) {
10567
+ if (!isDragging.current)
10568
+ return;
10569
+ // Due to throttling of seek, it is necessary to create a copy (snapshot) of the event.
10570
+ // Otherwise, the event would be nullified at the point when the throttled function is executed.
10571
+ seek(__assign({}, e));
10572
+ };
10573
+ var handleDragStop = React$2.useCallback(function () {
10574
+ if (!progressIndicator)
10575
+ return;
10576
+ isDragging.current = false;
10577
+ progressIndicator.style.removeProperty('cursor');
10578
+ }, [progressIndicator]);
10579
+ var getTrackAxisX = React$2.useMemo(function () {
10580
+ return lodash_throttle(function (rootWidth) {
10581
+ if (rootWidth === lastRootWidth.current)
10582
+ return;
10583
+ lastRootWidth.current = rootWidth;
10584
+ var possibleAmpCount = Math.floor(rootWidth / (relativeAmplitudeGap + relativeAmplitudeBarWidth));
10585
+ var tooManyAmplitudesToRender = possibleAmpCount < amplitudesCount;
10586
+ var barCount = tooManyAmplitudesToRender ? possibleAmpCount : amplitudesCount;
10587
+ var amplitudeBarWidthToGapRatio = relativeAmplitudeBarWidth / (relativeAmplitudeBarWidth + relativeAmplitudeGap);
10588
+ var barWidth = barCount && (rootWidth / barCount) * amplitudeBarWidthToGapRatio;
10589
+ setTrackAxisX({
10590
+ barCount: barCount,
10591
+ barWidth: barWidth,
10592
+ gap: barWidth * (relativeAmplitudeGap / relativeAmplitudeBarWidth),
10593
+ });
10594
+ }, 1);
10595
+ }, [relativeAmplitudeBarWidth, relativeAmplitudeGap, amplitudesCount]);
10596
+ var resampledWaveformData = React$2.useMemo(function () { return (trackAxisX ? resampleWaveformData(waveformData, trackAxisX.barCount) : []); }, [trackAxisX, waveformData]);
10597
+ React$2.useEffect(function () {
10598
+ document.addEventListener('pointerup', handleDragStop);
10599
+ return function () {
10600
+ document.removeEventListener('pointerup', handleDragStop);
10601
+ };
10602
+ }, [handleDragStop]);
10603
+ React$2.useEffect(function () {
10604
+ if (!root || typeof ResizeObserver === 'undefined')
10605
+ return;
10606
+ var observer = new ResizeObserver(function (_a) {
10607
+ var entry = _a[0];
10608
+ getTrackAxisX(entry.contentRect.width);
10609
+ });
10610
+ observer.observe(root);
10611
+ return function () {
10612
+ observer.disconnect();
10613
+ };
10614
+ }, [getTrackAxisX, root]);
10615
+ React$2.useLayoutEffect(function () {
10616
+ if (!root)
10617
+ return;
10618
+ var rootWidth = root.getBoundingClientRect().width;
10619
+ getTrackAxisX(rootWidth);
10620
+ }, [getTrackAxisX, root]);
10621
+ if (!waveformData.length || (trackAxisX === null || trackAxisX === void 0 ? void 0 : trackAxisX.barCount) === 0)
10622
+ return null;
10623
+ return (React__default["default"].createElement("div", { className: 'str-chat__wave-progress-bar__track', "data-testid": 'wave-progress-bar-track', onClick: seek, onPointerDown: handleDragStart, onPointerMove: handleDrag, onPointerUp: handleDragStop, ref: setRoot, role: 'progressbar', style: {
10624
+ '--str-chat__voice-recording-amplitude-bar-gap-width': (trackAxisX === null || trackAxisX === void 0 ? void 0 : trackAxisX.gap) + 'px',
10625
+ } },
10626
+ resampledWaveformData.map(function (amplitude, i) {
10627
+ var _a;
10628
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__wave-progress-bar__amplitude-bar', (_a = {},
10629
+ _a['str-chat__wave-progress-bar__amplitude-bar--active'] = progress > (i / resampledWaveformData.length) * 100,
10630
+ _a)), "data-testid": 'amplitude-bar', key: "amplitude-".concat(i), style: {
10631
+ '--str-chat__voice-recording-amplitude-bar-width': (trackAxisX === null || trackAxisX === void 0 ? void 0 : trackAxisX.barWidth) + 'px',
10632
+ '--str-chat__wave-progress-bar__amplitude-bar-height': amplitude
10633
+ ? amplitude * 100 + '%'
10634
+ : '0%',
10635
+ } }));
10636
+ }),
10637
+ React__default["default"].createElement("div", { className: 'str-chat__wave-progress-bar__progress-indicator', "data-testid": 'wave-progress-bar-progress-indicator', ref: setProgressIndicator, style: { left: "".concat(progress < 0 ? 0 : progress > 100 ? 100 : progress, "%") } })));
10638
+ };
10639
+
10640
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
10641
+
10605
10642
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var isSeekable = function (audioElement) {
10606
10643
  return !(audioElement.duration === Infinity || isNaN(audioElement.duration));
10607
10644
  };
@@ -48313,7 +48350,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
48313
48350
  }
48314
48351
  case 'openThread': {
48315
48352
  var channel = action.channel, message = action.message;
48316
- return __assign(__assign({}, state), { thread: message, threadMessages: message.id ? __assign({}, channel.state.threads)[message.id] || [] : [], threadSuppressAutoscroll: false });
48353
+ return __assign(__assign({}, state), { thread: message, threadHasMore: true, threadMessages: message.id ? __assign({}, channel.state.threads)[message.id] || [] : [], threadSuppressAutoscroll: false });
48317
48354
  }
48318
48355
  case 'setError': {
48319
48356
  var error = action.error;
@@ -51365,7 +51402,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
51365
51402
  messageCreatedAt: normalizedTimestamp,
51366
51403
  t: t,
51367
51404
  tDateTimeParser: tDateTimeParser,
51368
- timestampTranslationKey: 'timestamp/Timestamp',
51405
+ timestampTranslationKey: 'timestamp/MessageTimestamp',
51369
51406
  });
51370
51407
  }, [calendar, calendarFormats, format, formatDate, normalizedTimestamp, t, tDateTimeParser]);
51371
51408
  if (!when) {
@@ -58581,7 +58618,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
58581
58618
  }
58582
58619
  return newMessages;
58583
58620
  };
58584
- var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByUser) {
58621
+ var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByUser, maxTimeBetweenGroupedMessages) {
58585
58622
  var _a, _b, _c, _d, _e, _f, _g;
58586
58623
  if (message.customType === CUSTOM_MESSAGE_TYPE.date)
58587
58624
  return '';
@@ -58593,22 +58630,32 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
58593
58630
  previousMessage.customType === CUSTOM_MESSAGE_TYPE.intro ||
58594
58631
  previousMessage.customType === CUSTOM_MESSAGE_TYPE.date ||
58595
58632
  previousMessage.type === 'system' ||
58633
+ previousMessage.type === 'error' ||
58596
58634
  ((_b = previousMessage.attachments) === null || _b === void 0 ? void 0 : _b.length) !== 0 ||
58597
58635
  ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_d = previousMessage.user) === null || _d === void 0 ? void 0 : _d.id) ||
58598
- previousMessage.type === 'error' ||
58599
58636
  previousMessage.deleted_at ||
58600
58637
  (message.reaction_groups && Object.keys(message.reaction_groups).length > 0) ||
58601
- isMessageEdited(previousMessage);
58638
+ isMessageEdited(previousMessage) ||
58639
+ (maxTimeBetweenGroupedMessages !== undefined &&
58640
+ previousMessage.created_at &&
58641
+ message.created_at &&
58642
+ new Date(message.created_at).getTime() - new Date(previousMessage.created_at).getTime() >
58643
+ maxTimeBetweenGroupedMessages);
58602
58644
  var isBottomMessage = !nextMessage ||
58645
+ nextMessage.customType === CUSTOM_MESSAGE_TYPE.intro ||
58603
58646
  nextMessage.customType === CUSTOM_MESSAGE_TYPE.date ||
58604
58647
  nextMessage.type === 'system' ||
58605
- nextMessage.customType === CUSTOM_MESSAGE_TYPE.intro ||
58648
+ nextMessage.type === 'error' ||
58606
58649
  ((_e = nextMessage.attachments) === null || _e === void 0 ? void 0 : _e.length) !== 0 ||
58607
58650
  ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_g = nextMessage.user) === null || _g === void 0 ? void 0 : _g.id) ||
58608
- nextMessage.type === 'error' ||
58609
58651
  nextMessage.deleted_at ||
58610
58652
  (nextMessage.reaction_groups && Object.keys(nextMessage.reaction_groups).length > 0) ||
58611
- isMessageEdited(message);
58653
+ isMessageEdited(message) ||
58654
+ (maxTimeBetweenGroupedMessages !== undefined &&
58655
+ nextMessage.created_at &&
58656
+ message.created_at &&
58657
+ new Date(nextMessage.created_at).getTime() - new Date(message.created_at).getTime() >
58658
+ maxTimeBetweenGroupedMessages);
58612
58659
  if (!isTopMessage && !isBottomMessage) {
58613
58660
  if (message.deleted_at || message.type === 'error')
58614
58661
  return 'single';
@@ -58640,7 +58687,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
58640
58687
  }
58641
58688
 
58642
58689
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useEnrichedMessages = function (args) {
58643
- var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser, reviewProcessedMessage = args.reviewProcessedMessage;
58690
+ var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, maxTimeBetweenGroupedMessages = args.maxTimeBetweenGroupedMessages, messages = args.messages, noGroupByUser = args.noGroupByUser, reviewProcessedMessage = args.reviewProcessedMessage;
58644
58691
  var client = useChatContext('useEnrichedMessages').client;
58645
58692
  var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent;
58646
58693
  var lastRead = React$2.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
@@ -58662,14 +58709,14 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
58662
58709
  var groupStylesFn = groupStyles || getGroupStyles;
58663
58710
  var messageGroupStyles = React$2.useMemo(function () {
58664
58711
  return messagesWithDates.reduce(function (acc, message, i) {
58665
- var style = groupStylesFn(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser);
58712
+ var style = groupStylesFn(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser, maxTimeBetweenGroupedMessages);
58666
58713
  if (style)
58667
58714
  acc[message.id] = style;
58668
58715
  return acc;
58669
58716
  }, {});
58670
58717
  },
58671
58718
  // eslint-disable-next-line react-hooks/exhaustive-deps
58672
- [messagesWithDates, noGroupByUser]);
58719
+ [maxTimeBetweenGroupedMessages, messagesWithDates, noGroupByUser]);
58673
58720
  return { messageGroupStyles: messageGroupStyles, messages: messagesWithDates };
58674
58721
  };
58675
58722
 
@@ -59398,7 +59445,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
59398
59445
 
59399
59446
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageListWithContext = function (props) {
59400
59447
  var _a;
59401
- var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = __rest(_f, ["threshold"]), _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
59448
+ var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = __rest(_f, ["threshold"]), maxTimeBetweenGroupedMessages = props.maxTimeBetweenGroupedMessages, _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
59402
59449
  _m = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
59403
59450
  returnAllReadData = _m === void 0 ? false : _m, _o = props.threadList, threadList = _o === void 0 ? false : _o, _p = props.unsafeHTML, unsafeHTML = _p === void 0 ? false : _p, headerPosition = props.headerPosition, read = props.read, _q = props.renderMessages, renderMessages = _q === void 0 ? defaultRenderMessages : _q, reviewProcessedMessage = props.reviewProcessedMessage, _r = props.messageLimit, messageLimit = _r === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _r, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _s = props.hasMoreNewer, hasMoreNewer = _s === void 0 ? false : _s, reactionDetailsSort = props.reactionDetailsSort, showUnreadNotificationAlways = props.showUnreadNotificationAlways, sortReactionDetails = props.sortReactionDetails, sortReactions = props.sortReactions, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _t = props.jumpToLatestMessage, jumpToLatestMessage = _t === void 0 ? function () { return Promise.resolve(); } : _t;
59404
59451
  var _u = React__default["default"].useState(null), listElement = _u[0], setListElement = _u[1];
@@ -59431,6 +59478,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
59431
59478
  headerPosition: headerPosition,
59432
59479
  hideDeletedMessages: hideDeletedMessages,
59433
59480
  hideNewMessageSeparator: hideNewMessageSeparator,
59481
+ maxTimeBetweenGroupedMessages: maxTimeBetweenGroupedMessages,
59434
59482
  messages: messages,
59435
59483
  noGroupByUser: noGroupByUser,
59436
59484
  reviewProcessedMessage: reviewProcessedMessage,
@@ -61076,8 +61124,8 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61076
61124
  return TypingIndicator ? React__default["default"].createElement(TypingIndicator, { avatarSize: 24 }) : null;
61077
61125
  };
61078
61126
  var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
61079
- var _a, _b, _c, _d, _e, _f, _g;
61080
- var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, formatDate = virtuosoContext.formatDate, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, reactionDetailsSort = virtuosoContext.reactionDetailsSort, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
61127
+ var _a, _b, _c, _d, _e, _f, _g, _h;
61128
+ var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, formatDate = virtuosoContext.formatDate, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, messageGroupStyles = virtuosoContext.messageGroupStyles, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, reactionDetailsSort = virtuosoContext.reactionDetailsSort, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _j = virtuosoContext.unreadMessageCount, unreadMessageCount = _j === void 0 ? 0 : _j, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
61081
61129
  var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
61082
61130
  if (customMessageRenderer) {
61083
61131
  return customMessageRenderer(messageList, streamMessageIndex);
@@ -61096,6 +61144,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61096
61144
  ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
61097
61145
  var maybePrevMessage = messageList[streamMessageIndex - 1];
61098
61146
  var maybeNextMessage = messageList[streamMessageIndex + 1];
61147
+ // FIXME: firstOfGroup & endOfGroup should be derived from groupStyles which apply a more complex logic
61099
61148
  var firstOfGroup = shouldGroupByUser &&
61100
61149
  (((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_d = maybePrevMessage === null || maybePrevMessage === void 0 ? void 0 : maybePrevMessage.user) === null || _d === void 0 ? void 0 : _d.id) ||
61101
61150
  (maybePrevMessage && isMessageEdited(maybePrevMessage)));
@@ -61118,7 +61167,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61118
61167
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
61119
61168
  showUnreadSeparatorAbove && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
61120
61169
  React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
61121
- React__default["default"].createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, formatDate: formatDate, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
61170
+ React__default["default"].createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, formatDate: formatDate, groupedByUser: groupedByUser, groupStyles: [(_h = messageGroupStyles[message.id]) !== null && _h !== void 0 ? _h : ''], lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
61122
61171
  showUnreadSeparatorBelow && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
61123
61172
  React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
61124
61173
  };
@@ -61154,7 +61203,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61154
61203
  }
61155
61204
  var VirtualizedMessageListWithContext = function (props) {
61156
61205
  var _a, _b;
61157
- var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, formatDate = props.formatDate, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
61206
+ var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, formatDate = props.formatDate, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, maxTimeBetweenGroupedMessages = props.maxTimeBetweenGroupedMessages, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
61158
61207
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
61159
61208
  _h = props.overscan,
61160
61209
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
@@ -61217,7 +61266,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61217
61266
  var groupStylesFn = groupStyles || getGroupStyles;
61218
61267
  var messageGroupStyles = React$2.useMemo(function () {
61219
61268
  return processedMessages.reduce(function (acc, message, i) {
61220
- var style = groupStylesFn(message, processedMessages[i - 1], processedMessages[i + 1], !shouldGroupByUser);
61269
+ var style = groupStylesFn(message, processedMessages[i - 1], processedMessages[i + 1], !shouldGroupByUser, maxTimeBetweenGroupedMessages);
61221
61270
  if (style)
61222
61271
  acc[message.id] = style;
61223
61272
  return acc;
@@ -61225,7 +61274,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
61225
61274
  },
61226
61275
  // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage
61227
61276
  // eslint-disable-next-line react-hooks/exhaustive-deps
61228
- [processedMessages.length, shouldGroupByUser, groupStylesFn]);
61277
+ [maxTimeBetweenGroupedMessages, processedMessages.length, shouldGroupByUser, groupStylesFn]);
61229
61278
  var _y = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _y.atBottom, isMessageListScrolledToBottom = _y.isMessageListScrolledToBottom, newMessagesNotification = _y.newMessagesNotification, setIsMessageListScrolledToBottom = _y.setIsMessageListScrolledToBottom, setNewMessagesNotification = _y.setNewMessagesNotification;
61230
61279
  useMarkRead({
61231
61280
  isMessageListScrolledToBottom: isMessageListScrolledToBottom,
@@ -63864,7 +63913,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
63864
63913
 
63865
63914
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
63866
63915
 
63867
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.22.0';
63916
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.23.1';
63868
63917
 
63869
63918
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
63870
63919
  var _b, _c;