stream-chat-react 13.1.0 → 13.1.2

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.
@@ -20880,6 +20880,7 @@ __export(src_exports, {
20880
20880
  MicIcon: () => MicIcon,
20881
20881
  Modal: () => Modal,
20882
20882
  ModalGallery: () => ModalGallery,
20883
+ NotificationTranslationTopic: () => NotificationTranslationTopic,
20883
20884
  PauseIcon: () => PauseIcon2,
20884
20885
  PinIcon: () => PinIcon,
20885
20886
  PinIndicator: () => PinIndicator,
@@ -48820,18 +48821,33 @@ var TranslationBuilder = class {
48820
48821
  constructor(i18next) {
48821
48822
  this.i18next = i18next;
48822
48823
  this.topics = /* @__PURE__ */ new Map();
48824
+ // need to keep a registration buffer so that translators can be registered once a topic is registered
48825
+ // what does not happen when Streami18n is instantiated but rather once Streami18n.init() is invoked
48826
+ this.translatorRegistrationsBuffer = {};
48823
48827
  this.registerTopic = (name2, Topic) => {
48824
- const topic = new Topic({ i18next: this.i18next });
48825
- this.topics.set(name2, topic);
48826
- this.i18next.use({
48827
- name: name2,
48828
- process: (value, key, options) => {
48829
- const topic2 = this.topics.get(name2);
48830
- if (!topic2) return value;
48831
- return topic2.translate(value, key, options);
48832
- },
48833
- type: "postProcessor"
48834
- });
48828
+ let topic = this.topics.get(name2);
48829
+ if (!topic) {
48830
+ topic = new Topic({ i18next: this.i18next });
48831
+ this.topics.set(name2, topic);
48832
+ this.i18next.use({
48833
+ name: name2,
48834
+ process: (value, key, options) => {
48835
+ const topic2 = this.topics.get(name2);
48836
+ if (!topic2) return value;
48837
+ return topic2.translate(value, key, options);
48838
+ },
48839
+ type: "postProcessor"
48840
+ });
48841
+ }
48842
+ const additionalTranslatorsToRegister = this.translatorRegistrationsBuffer[name2];
48843
+ if (additionalTranslatorsToRegister) {
48844
+ Object.entries(additionalTranslatorsToRegister).forEach(
48845
+ ([translatorName, translator]) => {
48846
+ topic.setTranslator(translatorName, translator);
48847
+ }
48848
+ );
48849
+ delete this.translatorRegistrationsBuffer[name2];
48850
+ }
48835
48851
  return topic;
48836
48852
  };
48837
48853
  this.disableTopic = (topicName) => {
@@ -48848,13 +48864,25 @@ var TranslationBuilder = class {
48848
48864
  }
48849
48865
  registerTranslators(topicName, translators) {
48850
48866
  const topic = this.getTopic(topicName);
48851
- if (!topic) return;
48867
+ if (!topic) {
48868
+ if (!this.translatorRegistrationsBuffer[topicName])
48869
+ this.translatorRegistrationsBuffer[topicName] = {};
48870
+ Object.entries(translators).forEach(([translatorName, translator]) => {
48871
+ this.translatorRegistrationsBuffer[topicName][translatorName] = translator;
48872
+ });
48873
+ return;
48874
+ }
48852
48875
  Object.entries(translators).forEach(([name2, translator]) => {
48853
48876
  topic.setTranslator(name2, translator);
48854
48877
  });
48855
48878
  }
48856
48879
  removeTranslators(topicName, translators) {
48857
48880
  const topic = this.getTopic(topicName);
48881
+ if (this.translatorRegistrationsBuffer[topicName]) {
48882
+ translators.forEach((translatorName) => {
48883
+ delete this.translatorRegistrationsBuffer[topicName][translatorName];
48884
+ });
48885
+ }
48858
48886
  if (!topic) return;
48859
48887
  translators.forEach((name2) => {
48860
48888
  topic.removeTranslator(name2);
@@ -50130,7 +50158,7 @@ var mousewheelListener2 = (event) => {
50130
50158
  var InfiniteScroll = (props) => {
50131
50159
  const {
50132
50160
  children,
50133
- element: element3 = "div",
50161
+ element: Component2 = "div",
50134
50162
  hasMore,
50135
50163
  hasMoreNewer,
50136
50164
  hasNextPage,
@@ -50152,17 +50180,17 @@ var InfiniteScroll = (props) => {
50152
50180
  const loadPreviousPageFn = loadPreviousPage || loadMore;
50153
50181
  const hasNextPageFlag = hasNextPage || hasMoreNewer;
50154
50182
  const hasPreviousPageFlag = hasPreviousPage || hasMore;
50155
- const scrollComponent = (0, import_react180.useRef)(void 0);
50183
+ const [scrollComponent, setScrollComponent] = (0, import_react180.useState)(null);
50156
50184
  const previousOffset = (0, import_react180.useRef)(void 0);
50157
50185
  const previousReverseOffset = (0, import_react180.useRef)(void 0);
50158
50186
  const scrollListenerRef = (0, import_react180.useRef)(void 0);
50159
50187
  scrollListenerRef.current = () => {
50160
- const element4 = scrollComponent.current;
50161
- if (!element4 || element4.offsetParent === null) {
50188
+ const element3 = scrollComponent;
50189
+ if (!element3 || element3.offsetParent === null) {
50162
50190
  return;
50163
50191
  }
50164
- const parentElement = element4.parentElement;
50165
- const offset = element4.scrollHeight - parentElement.scrollTop - parentElement.clientHeight;
50192
+ const parentElement = element3.parentElement;
50193
+ const offset = element3.scrollHeight - parentElement.scrollTop - parentElement.clientHeight;
50166
50194
  const reverseOffset = parentElement.scrollTop;
50167
50195
  if (listenToScroll) {
50168
50196
  listenToScroll(offset, reverseOffset, threshold);
@@ -50191,7 +50219,7 @@ var InfiniteScroll = (props) => {
50191
50219
  );
50192
50220
  }, []);
50193
50221
  (0, import_react180.useEffect)(() => {
50194
- const scrollElement = scrollComponent.current?.parentNode;
50222
+ const scrollElement = scrollComponent?.parentNode;
50195
50223
  if (!scrollElement) return;
50196
50224
  const scrollListener = () => scrollListenerRef.current?.();
50197
50225
  scrollElement.addEventListener("scroll", scrollListener, useCapture);
@@ -50201,29 +50229,16 @@ var InfiniteScroll = (props) => {
50201
50229
  scrollElement.removeEventListener("scroll", scrollListener, useCapture);
50202
50230
  scrollElement.removeEventListener("resize", scrollListener, useCapture);
50203
50231
  };
50204
- }, [initialLoad, useCapture]);
50232
+ }, [initialLoad, scrollComponent, useCapture]);
50205
50233
  (0, import_react180.useEffect)(() => {
50206
- const scrollElement = scrollComponent.current?.parentNode;
50207
- if (scrollElement) {
50208
- scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
50209
- }
50234
+ const scrollElement = scrollComponent?.parentNode;
50235
+ if (!scrollElement) return;
50236
+ scrollElement.addEventListener("wheel", mousewheelListener2, { passive: false });
50210
50237
  return () => {
50211
- if (scrollElement) {
50212
- scrollElement.removeEventListener("wheel", mousewheelListener2, useCapture);
50213
- }
50238
+ scrollElement.removeEventListener("wheel", mousewheelListener2, useCapture);
50214
50239
  };
50215
- }, [useCapture]);
50216
- const attributes = {
50217
- ...elementProps,
50218
- ref: (element4) => {
50219
- scrollComponent.current = element4;
50220
- }
50221
- };
50222
- const childrenArray = [loader, children];
50223
- if (head) {
50224
- childrenArray.unshift(head);
50225
- }
50226
- return import_react180.default.createElement(element3, attributes, childrenArray);
50240
+ }, [scrollComponent, useCapture]);
50241
+ return /* @__PURE__ */ import_react180.default.createElement(Component2, { ...elementProps, ref: setScrollComponent }, head, loader, children);
50227
50242
  };
50228
50243
 
50229
50244
  // src/components/TypingIndicator/TypingIndicator.tsx
@@ -51471,10 +51486,10 @@ function VirtualizedMessageList(props) {
51471
51486
  );
51472
51487
  }
51473
51488
 
51474
- // src/components/Message/MessageThreadReplyInChannelButtonIndicator.tsx
51489
+ // src/components/Message/MessageIsThreadReplyInChannelButtonIndicator.tsx
51475
51490
  var import_react198 = __toESM(require("react"));
51476
51491
  var import_stream_chat6 = require("stream-chat");
51477
- var MessageThreadReplyInChannelButtonIndicator = () => {
51492
+ var MessageIsThreadReplyInChannelButtonIndicator = () => {
51478
51493
  const { client } = useChatContext();
51479
51494
  const { t } = useTranslationContext();
51480
51495
  const { channel } = useChannelStateContext();
@@ -51495,7 +51510,7 @@ var MessageThreadReplyInChannelButtonIndicator = () => {
51495
51510
  },
51496
51511
  origin: {
51497
51512
  context: { threadReply: message },
51498
- emitter: "MessageThreadReplyInChannelButtonIndicator"
51513
+ emitter: "MessageIsThreadReplyInChannelButtonIndicator"
51499
51514
  }
51500
51515
  });
51501
51516
  });
@@ -51995,7 +52010,7 @@ var MessageSimpleWithContext = (props) => {
51995
52010
  MessageBlocked: MessageBlocked2 = MessageBlocked,
51996
52011
  MessageBouncePrompt: MessageBouncePrompt2 = MessageBouncePrompt,
51997
52012
  MessageDeleted: MessageDeleted2 = MessageDeleted,
51998
- MessageIsThreadReplyInChannelButtonIndicator = MessageThreadReplyInChannelButtonIndicator,
52013
+ MessageIsThreadReplyInChannelButtonIndicator: MessageIsThreadReplyInChannelButtonIndicator2 = MessageIsThreadReplyInChannelButtonIndicator,
51999
52014
  MessageRepliesCountButton: MessageRepliesCountButton2 = MessageRepliesCountButton,
52000
52015
  MessageStatus: MessageStatus2 = MessageStatus,
52001
52016
  MessageTimestamp: MessageTimestamp2 = MessageTimestamp,
@@ -52100,7 +52115,7 @@ var MessageSimpleWithContext = (props) => {
52100
52115
  onClick: handleOpenThread,
52101
52116
  reply_count: message.reply_count
52102
52117
  }
52103
- ), showIsReplyInChannel && /* @__PURE__ */ import_react206.default.createElement(MessageIsThreadReplyInChannelButtonIndicator, null), showMetadata && /* @__PURE__ */ import_react206.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react206.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react206.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react206.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react206.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t("Edited")), isEdited && /* @__PURE__ */ import_react206.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
52118
+ ), showIsReplyInChannel && /* @__PURE__ */ import_react206.default.createElement(MessageIsThreadReplyInChannelButtonIndicator2, null), showMetadata && /* @__PURE__ */ import_react206.default.createElement("div", { className: "str-chat__message-metadata" }, /* @__PURE__ */ import_react206.default.createElement(MessageStatus2, null), !isMyMessage() && !!message.user && /* @__PURE__ */ import_react206.default.createElement("span", { className: "str-chat__message-simple-name" }, message.user.name || message.user.id), /* @__PURE__ */ import_react206.default.createElement(MessageTimestamp2, { customClass: "str-chat__message-simple-timestamp" }), isEdited && /* @__PURE__ */ import_react206.default.createElement("span", { className: "str-chat__mesage-simple-edited" }, t("Edited")), isEdited && /* @__PURE__ */ import_react206.default.createElement(MessageEditedTimestamp, { calendar: true, open: isEditedTimestampOpen }))));
52104
52119
  };
52105
52120
  var MemoizedMessageSimple = import_react206.default.memo(
52106
52121
  MessageSimpleWithContext,
@@ -57356,7 +57371,7 @@ var useChat = ({
57356
57371
  };
57357
57372
  (0, import_react271.useEffect)(() => {
57358
57373
  if (!client) return;
57359
- const version = "13.1.0";
57374
+ const version = "13.1.2";
57360
57375
  const userAgent = client.getUserAgent();
57361
57376
  if (!userAgent.includes("stream-chat-react")) {
57362
57377
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -57726,6 +57741,7 @@ var Window = import_react276.default.memo(UnMemoizedWindow);
57726
57741
  MicIcon,
57727
57742
  Modal,
57728
57743
  ModalGallery,
57744
+ NotificationTranslationTopic,
57729
57745
  PauseIcon,
57730
57746
  PinIcon,
57731
57747
  PinIndicator,