stream-chat-react 13.9.0 → 13.10.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 (75) hide show
  1. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +7 -3
  2. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +8 -3
  3. package/dist/components/Chat/hooks/useChat.js +1 -1
  4. package/dist/components/Dialog/ButtonWithSubmenu.d.ts +2 -2
  5. package/dist/components/Dialog/ButtonWithSubmenu.js +6 -6
  6. package/dist/components/Dialog/DialogAnchor.d.ts +5 -11
  7. package/dist/components/Dialog/DialogAnchor.js +22 -26
  8. package/dist/components/Dialog/DialogPortal.d.ts +2 -1
  9. package/dist/components/Dialog/DialogPortal.js +23 -7
  10. package/dist/components/Dialog/hooks/index.d.ts +1 -0
  11. package/dist/components/Dialog/hooks/useDialog.d.ts +4 -0
  12. package/dist/components/Dialog/hooks/useDialog.js +9 -1
  13. package/dist/components/Dialog/hooks/usePopoverPosition.d.ts +68 -0
  14. package/dist/components/Dialog/hooks/usePopoverPosition.js +54 -0
  15. package/dist/components/Form/Dropdown.d.ts +2 -2
  16. package/dist/components/Message/Message.js +1 -1
  17. package/dist/components/Message/MessageRepliesCountButton.js +3 -1
  18. package/dist/components/Message/MessageStatus.js +6 -2
  19. package/dist/components/Message/renderText/remarkPlugins/index.d.ts +1 -0
  20. package/dist/components/Message/renderText/remarkPlugins/index.js +1 -0
  21. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.d.ts +10 -2
  22. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js +46 -26
  23. package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.d.ts +8 -0
  24. package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.js +11 -0
  25. package/dist/components/Message/types.d.ts +4 -0
  26. package/dist/components/MessageActions/MessageActions.js +4 -4
  27. package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -1
  28. package/dist/components/MessageInput/AttachmentSelector.js +9 -4
  29. package/dist/components/MessageList/MessageList.js +6 -0
  30. package/dist/components/MessageList/VirtualizedMessageList.d.ts +3 -1
  31. package/dist/components/MessageList/VirtualizedMessageList.js +6 -0
  32. package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
  33. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +1 -0
  34. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +7 -2
  35. package/dist/components/MessageList/hooks/useLastDeliveredData.d.ts +1 -0
  36. package/dist/components/MessageList/hooks/useLastDeliveredData.js +24 -11
  37. package/dist/components/MessageList/hooks/useLastOwnMessage.d.ts +5 -0
  38. package/dist/components/MessageList/hooks/useLastOwnMessage.js +4 -0
  39. package/dist/components/MessageList/hooks/useLastReadData.d.ts +1 -0
  40. package/dist/components/MessageList/hooks/useLastReadData.js +20 -10
  41. package/dist/components/MessageList/renderMessages.d.ts +4 -2
  42. package/dist/components/MessageList/renderMessages.js +2 -2
  43. package/dist/components/Modal/GlobalModal.js +2 -2
  44. package/dist/components/Reactions/ReactionSelectorWithButton.js +4 -4
  45. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  46. package/dist/components/Tooltip/Tooltip.js +11 -12
  47. package/dist/context/DialogManagerContext.d.ts +1 -0
  48. package/dist/context/DialogManagerContext.js +1 -0
  49. package/dist/context/MessageContext.d.ts +4 -0
  50. package/dist/css/v2/index.css +1 -1
  51. package/dist/css/v2/index.layout.css +1 -1
  52. package/dist/experimental/MessageActions/MessageActions.js +5 -5
  53. package/dist/experimental/index.browser.cjs +307 -238
  54. package/dist/experimental/index.browser.cjs.map +4 -4
  55. package/dist/experimental/index.node.cjs +307 -238
  56. package/dist/experimental/index.node.cjs.map +4 -4
  57. package/dist/index.browser.cjs +1521 -1338
  58. package/dist/index.browser.cjs.map +4 -4
  59. package/dist/index.node.cjs +1524 -1338
  60. package/dist/index.node.cjs.map +4 -4
  61. package/dist/plugins/Emojis/EmojiPicker.d.ts +9 -4
  62. package/dist/plugins/Emojis/EmojiPicker.js +10 -5
  63. package/dist/plugins/Emojis/index.browser.cjs +89 -29
  64. package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
  65. package/dist/plugins/Emojis/index.node.cjs +89 -29
  66. package/dist/plugins/Emojis/index.node.cjs.map +4 -4
  67. package/dist/scss/v2/Message/Message-layout.scss +4 -0
  68. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +1 -0
  69. package/dist/utils/findReverse.d.ts +1 -0
  70. package/dist/utils/findReverse.js +9 -0
  71. package/package.json +7 -8
  72. package/dist/components/MessageActions/hooks/index.d.ts +0 -1
  73. package/dist/components/MessageActions/hooks/index.js +0 -1
  74. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +0 -18
  75. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +0 -31
@@ -327,7 +327,7 @@ module.exports = __toCommonJS(experimental_exports);
327
327
 
328
328
  // src/experimental/MessageActions/MessageActions.tsx
329
329
  var import_clsx9 = __toESM(require("clsx"));
330
- var import_react42 = __toESM(require("react"));
330
+ var import_react43 = __toESM(require("react"));
331
331
 
332
332
  // src/context/ChannelListContext.tsx
333
333
  var import_react = __toESM(require("react"));
@@ -438,6 +438,14 @@ var useDialog = ({ dialogManagerId, id }) => {
438
438
  );
439
439
  return dialogManager.getOrCreate({ id });
440
440
  };
441
+ var useDialogOnNearestManager = ({ id }) => {
442
+ const { dialogManager } = useNearestDialogManagerContext() ?? {};
443
+ const dialog = useDialog({ dialogManagerId: dialogManager?.id, id });
444
+ return {
445
+ dialog,
446
+ dialogManager
447
+ };
448
+ };
441
449
  var useDialogIsOpen = (id, dialogManagerId) => {
442
450
  const { dialogManager } = useDialogManager({ dialogManagerId });
443
451
  const dialogIsOpenSelector = (0, import_react6.useCallback)(
@@ -468,10 +476,11 @@ var Portal = ({
468
476
  // src/components/Dialog/DialogPortal.tsx
469
477
  var DialogPortalEntry = ({
470
478
  children,
471
- dialogId
479
+ dialogId,
480
+ dialogManagerId
472
481
  }) => {
473
- const { dialogManager } = useDialogManager({ dialogId });
474
- const dialogIsOpen = useDialogIsOpen(dialogId, dialogManager.id);
482
+ const { dialogManager } = useDialogManager({ dialogId, dialogManagerId });
483
+ const dialogIsOpen = useDialogIsOpen(dialogId, dialogManagerId);
475
484
  const getPortalDestination = (0, import_react8.useCallback)(
476
485
  () => document.querySelector(`div[data-str-chat__portal-id="${dialogManager.id}"]`),
477
486
  [dialogManager.id]
@@ -558,6 +567,7 @@ var useDialogManager = ({
558
567
  }
559
568
  return dialogManagerContext;
560
569
  };
570
+ var useNearestDialogManagerContext = () => (0, import_react9.useContext)(DialogManagerProviderContext);
561
571
 
562
572
  // src/context/MessageContext.tsx
563
573
  var import_react10 = __toESM(require("react"));
@@ -603,7 +613,7 @@ var useTranslationContext = (componentName) => {
603
613
  };
604
614
 
605
615
  // src/components/MessageInput/hooks/useMessageComposer.ts
606
- var import_react37 = require("react");
616
+ var import_react38 = require("react");
607
617
  var import_stream_chat2 = require("stream-chat");
608
618
 
609
619
  // src/components/Threads/ThreadContext.tsx
@@ -773,7 +783,7 @@ var Avatar = (props) => {
773
783
 
774
784
  // src/components/ChannelPreview/ChannelPreview.tsx
775
785
  var import_lodash2 = __toESM(require("lodash.throttle"));
776
- var import_react35 = __toESM(require("react"));
786
+ var import_react36 = __toESM(require("react"));
777
787
 
778
788
  // src/components/ChannelPreview/ChannelPreviewMessenger.tsx
779
789
  var import_react18 = __toESM(require("react"));
@@ -982,10 +992,10 @@ var useIsChannelMuted = (channel) => {
982
992
  };
983
993
 
984
994
  // src/components/ChannelPreview/hooks/useChannelPreviewInfo.ts
985
- var import_react33 = require("react");
995
+ var import_react34 = require("react");
986
996
 
987
997
  // src/components/ChannelPreview/utils.tsx
988
- var import_react32 = __toESM(require("react"));
998
+ var import_react33 = __toESM(require("react"));
989
999
 
990
1000
  // node_modules/devlop/lib/default.js
991
1001
  function ok() {
@@ -10643,57 +10653,111 @@ var useMessageReminder = (messageId) => {
10643
10653
 
10644
10654
  // src/components/Dialog/ButtonWithSubmenu.tsx
10645
10655
  var import_clsx5 = __toESM(require("clsx"));
10646
- var import_react22 = __toESM(require("react"));
10656
+ var import_react23 = __toESM(require("react"));
10647
10657
 
10648
10658
  // src/components/Dialog/DialogAnchor.tsx
10649
10659
  var import_clsx4 = __toESM(require("clsx"));
10650
- var import_react21 = __toESM(require("react"));
10660
+ var import_react22 = __toESM(require("react"));
10651
10661
  var import_focus = require("@react-aria/focus");
10652
- var import_react_popper = require("react-popper");
10662
+
10663
+ // src/components/Dialog/hooks/usePopoverPosition.ts
10664
+ var import_react21 = require("@floating-ui/react");
10665
+ var hasResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;
10666
+ function autoMiddlewareFor(p) {
10667
+ if (!String(p).startsWith("auto")) return null;
10668
+ const alignment = p === "auto-start" ? "start" : p === "auto-end" ? "end" : void 0;
10669
+ return (0, import_react21.autoPlacement)({ alignment });
10670
+ }
10671
+ function toOffsetMw(opt) {
10672
+ if (opt == null) return null;
10673
+ if (Array.isArray(opt)) {
10674
+ const [crossAxis, mainAxis] = opt;
10675
+ return (0, import_react21.offset)({ crossAxis, mainAxis });
10676
+ }
10677
+ if (typeof opt === "number") return (0, import_react21.offset)(opt);
10678
+ return (0, import_react21.offset)(opt);
10679
+ }
10680
+ function usePopoverPosition({
10681
+ allowFlip = true,
10682
+ allowShift = true,
10683
+ autoUpdateOptions,
10684
+ fitAvailableSpace = false,
10685
+ freeze = false,
10686
+ offset,
10687
+ placement = "bottom-start"
10688
+ }) {
10689
+ const autoMw = autoMiddlewareFor(placement);
10690
+ const offsetMiddleware = toOffsetMw(offset);
10691
+ const isSidePlacement = placement.startsWith("left") || placement.startsWith("right");
10692
+ const middleware = [
10693
+ // offset first (mirrors common Popper setups)
10694
+ ...offsetMiddleware ? [offsetMiddleware] : [],
10695
+ // choose between autoPlacement (Popper's "auto*") OR flip()
10696
+ // only allow flip when not explicitly 'left*' or 'right*'
10697
+ ...autoMw ? [autoMw] : allowFlip && !isSidePlacement ? [(0, import_react21.flip)()] : [],
10698
+ // viewport collision adjustments
10699
+ ...allowShift ? [(0, import_react21.shift)({ padding: 8 })] : [],
10700
+ // optional size constraining
10701
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
10702
+ ...fitAvailableSpace ? [(0, import_react21.size)({ apply: () => {
10703
+ } })] : []
10704
+ ];
10705
+ const seedPlacement = String(placement).startsWith("auto") ? "bottom" : placement;
10706
+ return (0, import_react21.useFloating)({
10707
+ middleware,
10708
+ placement: seedPlacement,
10709
+ strategy: "fixed",
10710
+ whileElementsMounted: freeze ? void 0 : (reference, floating, update) => (0, import_react21.autoUpdate)(reference, floating, update, {
10711
+ ancestorResize: true,
10712
+ ancestorScroll: true,
10713
+ animationFrame: false,
10714
+ elementResize: hasResizeObserver,
10715
+ ...autoUpdateOptions
10716
+ })
10717
+ });
10718
+ }
10719
+
10720
+ // src/components/Dialog/DialogAnchor.tsx
10653
10721
  function useDialogAnchor({
10654
10722
  allowFlip,
10655
10723
  open,
10656
10724
  placement,
10657
10725
  referenceElement
10658
10726
  }) {
10659
- const [popperElement, setPopperElement] = (0, import_react21.useState)(null);
10660
- const { attributes, styles, update } = (0, import_react_popper.usePopper)(referenceElement, popperElement, {
10661
- modifiers: [
10662
- {
10663
- enabled: !!allowFlip,
10664
- // Prevent flipping
10665
- name: "flip"
10666
- },
10667
- {
10668
- name: "eventListeners",
10669
- options: {
10670
- // It's not safe to update popper position on resize and scroll, since popper's
10671
- // reference element might not be visible at the time.
10672
- resize: false,
10673
- scroll: false
10674
- }
10675
- }
10676
- ],
10727
+ const [popperElement, setPopperElement] = (0, import_react22.useState)(null);
10728
+ const { refs, strategy, update, x, y } = usePopoverPosition({
10729
+ allowFlip,
10730
+ freeze: true,
10677
10731
  placement
10678
10732
  });
10679
- (0, import_react21.useEffect)(() => {
10733
+ (0, import_react22.useEffect)(() => {
10734
+ refs.setReference(referenceElement);
10735
+ }, [referenceElement, refs]);
10736
+ (0, import_react22.useEffect)(() => {
10737
+ refs.setFloating(popperElement);
10738
+ }, [popperElement, refs]);
10739
+ (0, import_react22.useEffect)(() => {
10680
10740
  if (open && popperElement) {
10681
10741
  update?.();
10682
10742
  }
10683
- }, [open, popperElement, update]);
10743
+ }, [open, placement, popperElement, update]);
10684
10744
  if (popperElement && !open) {
10685
10745
  setPopperElement(null);
10686
10746
  }
10687
10747
  return {
10688
- attributes,
10689
10748
  setPopperElement,
10690
- styles
10749
+ styles: {
10750
+ left: x ?? 0,
10751
+ position: strategy,
10752
+ top: y ?? 0
10753
+ }
10691
10754
  };
10692
10755
  }
10693
10756
  var DialogAnchor = ({
10694
10757
  allowFlip = true,
10695
10758
  children,
10696
10759
  className,
10760
+ dialogManagerId,
10697
10761
  focus = true,
10698
10762
  id,
10699
10763
  placement = "auto",
@@ -10702,15 +10766,15 @@ var DialogAnchor = ({
10702
10766
  trapFocus,
10703
10767
  ...restDivProps
10704
10768
  }) => {
10705
- const dialog = useDialog({ id });
10706
- const open = useDialogIsOpen(id);
10707
- const { attributes, setPopperElement, styles } = useDialogAnchor({
10769
+ const dialog = useDialog({ dialogManagerId, id });
10770
+ const open = useDialogIsOpen(id, dialogManagerId);
10771
+ const { setPopperElement, styles } = useDialogAnchor({
10708
10772
  allowFlip,
10709
10773
  open,
10710
10774
  placement,
10711
10775
  referenceElement
10712
10776
  });
10713
- (0, import_react21.useEffect)(() => {
10777
+ (0, import_react22.useEffect)(() => {
10714
10778
  if (!open) return;
10715
10779
  const hideOnEscape = (event) => {
10716
10780
  if (event.key !== "Escape") return;
@@ -10724,15 +10788,14 @@ var DialogAnchor = ({
10724
10788
  if (!open) {
10725
10789
  return null;
10726
10790
  }
10727
- return /* @__PURE__ */ import_react21.default.createElement(DialogPortalEntry, { dialogId: id }, /* @__PURE__ */ import_react21.default.createElement(import_focus.FocusScope, { autoFocus: focus, contain: trapFocus, restoreFocus: true }, /* @__PURE__ */ import_react21.default.createElement(
10791
+ return /* @__PURE__ */ import_react22.default.createElement(DialogPortalEntry, { dialogId: id, dialogManagerId }, /* @__PURE__ */ import_react22.default.createElement(import_focus.FocusScope, { autoFocus: focus, contain: trapFocus, restoreFocus: true }, /* @__PURE__ */ import_react22.default.createElement(
10728
10792
  "div",
10729
10793
  {
10730
10794
  ...restDivProps,
10731
- ...attributes.popper,
10732
10795
  className: (0, import_clsx4.default)("str-chat__dialog-contents", className),
10733
10796
  "data-testid": "str-chat__dialog-contents",
10734
10797
  ref: setPopperElement,
10735
- style: styles.popper,
10798
+ style: styles,
10736
10799
  tabIndex: typeof tabIndex !== "undefined" ? tabIndex : 0
10737
10800
  },
10738
10801
  children
@@ -10748,26 +10811,26 @@ var ButtonWithSubmenu = ({
10748
10811
  submenuContainerProps,
10749
10812
  ...buttonProps
10750
10813
  }) => {
10751
- const buttonRef = (0, import_react22.useRef)(null);
10752
- const [dialogContainer, setDialogContainer] = (0, import_react22.useState)(null);
10753
- const keepSubmenuOpen = (0, import_react22.useRef)(false);
10754
- const dialogCloseTimeout = (0, import_react22.useRef)(null);
10755
- const dialogId = (0, import_react22.useMemo)(() => `submenu-${Math.random().toString(36).slice(2)}`, []);
10756
- const dialog = useDialog({ id: dialogId });
10757
- const dialogIsOpen = useDialogIsOpen(dialogId);
10758
- const { attributes, setPopperElement, styles } = useDialogAnchor({
10814
+ const buttonRef = (0, import_react23.useRef)(null);
10815
+ const [dialogContainer, setDialogContainer] = (0, import_react23.useState)(null);
10816
+ const keepSubmenuOpen = (0, import_react23.useRef)(false);
10817
+ const dialogCloseTimeout = (0, import_react23.useRef)(null);
10818
+ const dialogId = (0, import_react23.useMemo)(() => `submenu-${Math.random().toString(36).slice(2)}`, []);
10819
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dialogId });
10820
+ const dialogIsOpen = useDialogIsOpen(dialogId, dialogManager?.id);
10821
+ const { setPopperElement, styles } = useDialogAnchor({
10759
10822
  open: dialogIsOpen,
10760
10823
  placement,
10761
10824
  referenceElement: buttonRef.current
10762
10825
  });
10763
- const closeDialogLazily = (0, import_react22.useCallback)(() => {
10826
+ const closeDialogLazily = (0, import_react23.useCallback)(() => {
10764
10827
  if (dialogCloseTimeout.current) clearTimeout(dialogCloseTimeout.current);
10765
10828
  dialogCloseTimeout.current = setTimeout(() => {
10766
10829
  if (keepSubmenuOpen.current) return;
10767
10830
  dialog.close();
10768
10831
  }, 100);
10769
10832
  }, [dialog]);
10770
- const handleClose = (0, import_react22.useCallback)(
10833
+ const handleClose = (0, import_react23.useCallback)(
10771
10834
  (event) => {
10772
10835
  const parentButton = buttonRef.current;
10773
10836
  if (!dialogIsOpen || !parentButton) return;
@@ -10782,7 +10845,7 @@ var ButtonWithSubmenu = ({
10782
10845
  dialog.open();
10783
10846
  keepSubmenuOpen.current = true;
10784
10847
  };
10785
- (0, import_react22.useEffect)(() => {
10848
+ (0, import_react23.useEffect)(() => {
10786
10849
  const parentButton = buttonRef.current;
10787
10850
  if (!dialogIsOpen || !parentButton) return;
10788
10851
  const hideOnEscape = (event) => {
@@ -10795,7 +10858,7 @@ var ButtonWithSubmenu = ({
10795
10858
  document.removeEventListener("keyup", hideOnEscape, { capture: true });
10796
10859
  };
10797
10860
  }, [dialogIsOpen, handleClose]);
10798
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
10861
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
10799
10862
  "button",
10800
10863
  {
10801
10864
  "aria-selected": "false",
@@ -10821,10 +10884,9 @@ var ButtonWithSubmenu = ({
10821
10884
  ...buttonProps
10822
10885
  },
10823
10886
  children
10824
- ), dialogIsOpen && /* @__PURE__ */ import_react22.default.createElement(
10887
+ ), dialogIsOpen && /* @__PURE__ */ import_react23.default.createElement(
10825
10888
  "div",
10826
10889
  {
10827
- ...attributes.popper,
10828
10890
  onBlur: (event) => {
10829
10891
  const isBlurredDescendant = event.relatedTarget instanceof Node && dialogContainer?.contains(event.relatedTarget);
10830
10892
  if (isBlurredDescendant) return;
@@ -10845,26 +10907,26 @@ var ButtonWithSubmenu = ({
10845
10907
  setPopperElement(element3);
10846
10908
  setDialogContainer(element3);
10847
10909
  },
10848
- style: styles.popper,
10910
+ style: styles,
10849
10911
  tabIndex: -1,
10850
10912
  ...submenuContainerProps
10851
10913
  },
10852
- /* @__PURE__ */ import_react22.default.createElement(Submenu, null)
10914
+ /* @__PURE__ */ import_react23.default.createElement(Submenu, null)
10853
10915
  ));
10854
10916
  };
10855
10917
 
10856
10918
  // src/components/MessageActions/MessageActions.tsx
10857
10919
  var import_clsx6 = __toESM(require("clsx"));
10858
- var import_react25 = __toESM(require("react"));
10920
+ var import_react26 = __toESM(require("react"));
10859
10921
 
10860
10922
  // src/components/MessageActions/RemindMeSubmenu.tsx
10861
- var import_react23 = __toESM(require("react"));
10923
+ var import_react24 = __toESM(require("react"));
10862
10924
  var RemindMeActionButton = ({
10863
10925
  className,
10864
10926
  isMine
10865
10927
  }) => {
10866
10928
  const { t } = useTranslationContext();
10867
- return /* @__PURE__ */ import_react23.default.createElement(
10929
+ return /* @__PURE__ */ import_react24.default.createElement(
10868
10930
  ButtonWithSubmenu,
10869
10931
  {
10870
10932
  "aria-selected": "false",
@@ -10879,14 +10941,14 @@ var RemindMeSubmenu = () => {
10879
10941
  const { t } = useTranslationContext();
10880
10942
  const { client } = useChatContext();
10881
10943
  const { message } = useMessageContext();
10882
- return /* @__PURE__ */ import_react23.default.createElement(
10944
+ return /* @__PURE__ */ import_react24.default.createElement(
10883
10945
  "div",
10884
10946
  {
10885
10947
  "aria-label": t("aria/Remind Me Options"),
10886
10948
  className: "str-chat__message-actions-box__submenu",
10887
10949
  role: "listbox"
10888
10950
  },
10889
- client.reminders.scheduledOffsetsMs.map((offsetMs) => /* @__PURE__ */ import_react23.default.createElement(
10951
+ client.reminders.scheduledOffsetsMs.map((offsetMs) => /* @__PURE__ */ import_react24.default.createElement(
10890
10952
  "button",
10891
10953
  {
10892
10954
  className: "str-chat__message-actions-list-item-button",
@@ -10904,8 +10966,8 @@ var RemindMeSubmenu = () => {
10904
10966
  };
10905
10967
 
10906
10968
  // src/components/Message/icons.tsx
10907
- var import_react24 = __toESM(require("react"));
10908
- var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default.createElement(
10969
+ var import_react25 = __toESM(require("react"));
10970
+ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react25.default.createElement(
10909
10971
  "svg",
10910
10972
  {
10911
10973
  className,
@@ -10914,7 +10976,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default
10914
10976
  width: "11",
10915
10977
  xmlns: "http://www.w3.org/2000/svg"
10916
10978
  },
10917
- /* @__PURE__ */ import_react24.default.createElement(
10979
+ /* @__PURE__ */ import_react25.default.createElement(
10918
10980
  "path",
10919
10981
  {
10920
10982
  d: "M1.5 3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm4 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z",
@@ -10922,7 +10984,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default
10922
10984
  }
10923
10985
  )
10924
10986
  );
10925
- var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default.createElement(
10987
+ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react25.default.createElement(
10926
10988
  "svg",
10927
10989
  {
10928
10990
  className,
@@ -10931,9 +10993,9 @@ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.defaul
10931
10993
  width: "12",
10932
10994
  xmlns: "http://www.w3.org/2000/svg"
10933
10995
  },
10934
- /* @__PURE__ */ import_react24.default.createElement("g", { clipRule: "evenodd", fillRule: "evenodd" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M6 1.2C3.3 1.2 1.2 3.3 1.2 6c0 2.7 2.1 4.8 4.8 4.8 2.7 0 4.8-2.1 4.8-4.8 0-2.7-2.1-4.8-4.8-4.8zM0 6c0-3.3 2.7-6 6-6s6 2.7 6 6-2.7 6-6 6-6-2.7-6-6z" }), /* @__PURE__ */ import_react24.default.createElement("path", { d: "M5.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM8.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM3.3 6.7c.3-.2.6-.1.8.1.3.4.8.9 1.5 1 .6.2 1.4.1 2.4-1 .2-.2.6-.3.8 0 .2.2.3.6 0 .8-1.1 1.3-2.4 1.7-3.5 1.5-1-.2-1.8-.9-2.2-1.5-.2-.3-.1-.7.2-.9z" }))
10996
+ /* @__PURE__ */ import_react25.default.createElement("g", { clipRule: "evenodd", fillRule: "evenodd" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M6 1.2C3.3 1.2 1.2 3.3 1.2 6c0 2.7 2.1 4.8 4.8 4.8 2.7 0 4.8-2.1 4.8-4.8 0-2.7-2.1-4.8-4.8-4.8zM0 6c0-3.3 2.7-6 6-6s6 2.7 6 6-2.7 6-6 6-6-2.7-6-6z" }), /* @__PURE__ */ import_react25.default.createElement("path", { d: "M5.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM8.4 4.5c0 .5-.4.9-.9.9s-.9-.4-.9-.9.4-.9.9-.9.9.4.9.9zM3.3 6.7c.3-.2.6-.1.8.1.3.4.8.9 1.5 1 .6.2 1.4.1 2.4-1 .2-.2.6-.3.8 0 .2.2.3.6 0 .8-1.1 1.3-2.4 1.7-3.5 1.5-1-.2-1.8-.9-2.2-1.5-.2-.3-.1-.7.2-.9z" }))
10935
10997
  );
10936
- var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default.createElement("svg", { className, height: "10", width: "14", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react24.default.createElement(
10998
+ var ThreadIcon = ({ className = "" }) => /* @__PURE__ */ import_react25.default.createElement("svg", { className, height: "10", width: "14", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react25.default.createElement(
10937
10999
  "path",
10938
11000
  {
10939
11001
  d: "M8.516 3c4.78 0 4.972 6.5 4.972 6.5-1.6-2.906-2.847-3.184-4.972-3.184v2.872L3.772 4.994 8.516.5V3zM.484 5l4.5-4.237v1.78L2.416 5l2.568 2.125v1.828L.484 5z",
@@ -10954,8 +11016,8 @@ var MessageActionsWrapper = (props) => {
10954
11016
  "data-testid": "message-actions",
10955
11017
  onClick: toggleOpen
10956
11018
  };
10957
- if (inline) return /* @__PURE__ */ import_react25.default.createElement("span", { ...wrapperProps }, children);
10958
- return /* @__PURE__ */ import_react25.default.createElement("div", { ...wrapperProps }, children);
11019
+ if (inline) return /* @__PURE__ */ import_react26.default.createElement("span", { ...wrapperProps }, children);
11020
+ return /* @__PURE__ */ import_react26.default.createElement("div", { ...wrapperProps }, children);
10959
11021
  };
10960
11022
 
10961
11023
  // src/components/Message/renderText/remarkPlugins/htmlToTextPlugin.ts
@@ -14077,20 +14139,20 @@ function remarkGfm(options) {
14077
14139
  }
14078
14140
 
14079
14141
  // src/components/Reactions/ReactionSelectorWithButton.tsx
14080
- var import_react30 = __toESM(require("react"));
14142
+ var import_react31 = __toESM(require("react"));
14081
14143
 
14082
14144
  // src/components/Reactions/ReactionSelector.tsx
14083
- var import_react29 = __toESM(require("react"));
14145
+ var import_react30 = __toESM(require("react"));
14084
14146
  var import_clsx7 = __toESM(require("clsx"));
14085
14147
 
14086
14148
  // src/components/Reactions/reactionOptions.tsx
14087
- var import_react28 = __toESM(require("react"));
14149
+ var import_react29 = __toESM(require("react"));
14088
14150
 
14089
14151
  // src/components/Reactions/StreamEmoji.tsx
14090
- var import_react27 = __toESM(require("react"));
14152
+ var import_react28 = __toESM(require("react"));
14091
14153
 
14092
14154
  // src/components/Reactions/SpriteImage.tsx
14093
- var import_react26 = __toESM(require("react"));
14155
+ var import_react27 = __toESM(require("react"));
14094
14156
 
14095
14157
  // src/components/Reactions/utils/utils.ts
14096
14158
  var isMutableRef = (ref) => {
@@ -14125,13 +14187,13 @@ var SpriteImage = ({
14125
14187
  style,
14126
14188
  width
14127
14189
  }) => {
14128
- const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react26.useState)([0, 0]);
14129
- (0, import_react26.useEffect)(() => {
14190
+ const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react27.useState)([0, 0]);
14191
+ (0, import_react27.useEffect)(() => {
14130
14192
  getImageDimensions(spriteUrl).then(setSpriteDimensions).catch(console.error);
14131
14193
  }, [spriteUrl]);
14132
14194
  const [x, y] = position3;
14133
- if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, fallback);
14134
- return /* @__PURE__ */ import_react26.default.createElement(
14195
+ if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, fallback);
14196
+ return /* @__PURE__ */ import_react27.default.createElement(
14135
14197
  "div",
14136
14198
  {
14137
14199
  "data-testid": "sprite-image",
@@ -14169,7 +14231,7 @@ var StreamEmoji = ({
14169
14231
  type
14170
14232
  }) => {
14171
14233
  const position3 = StreamSpriteEmojiPositions[type];
14172
- return /* @__PURE__ */ import_react27.default.createElement(
14234
+ return /* @__PURE__ */ import_react28.default.createElement(
14173
14235
  SpriteImage,
14174
14236
  {
14175
14237
  columns: 2,
@@ -14188,23 +14250,23 @@ var StreamEmoji = ({
14188
14250
  var defaultReactionOptions = [
14189
14251
  {
14190
14252
  type: "haha",
14191
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }),
14253
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }),
14192
14254
  name: "Joy"
14193
14255
  },
14194
14256
  {
14195
14257
  type: "like",
14196
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }),
14258
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }),
14197
14259
  name: "Thumbs up"
14198
14260
  },
14199
14261
  {
14200
14262
  type: "love",
14201
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }),
14263
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }),
14202
14264
  name: "Heart"
14203
14265
  },
14204
- { type: "sad", Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
14266
+ { type: "sad", Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
14205
14267
  {
14206
14268
  type: "wow",
14207
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }),
14269
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }),
14208
14270
  name: "Astonished"
14209
14271
  }
14210
14272
  ];
@@ -14238,23 +14300,23 @@ var UnMemoizedReactionSelector = (props) => {
14238
14300
  const latestReactions = propLatestReactions || message?.latest_reactions || [];
14239
14301
  const ownReactions = propOwnReactions || message?.own_reactions || [];
14240
14302
  const reactionGroups = propReactionGroups || message?.reaction_groups || {};
14241
- const [tooltipReactionType, setTooltipReactionType] = (0, import_react29.useState)(null);
14242
- const [tooltipPositions, setTooltipPositions] = (0, import_react29.useState)(null);
14243
- const rootRef = (0, import_react29.useRef)(null);
14244
- const targetRef = (0, import_react29.useRef)(null);
14245
- const tooltipRef = (0, import_react29.useRef)(null);
14246
- const showTooltip = (0, import_react29.useCallback)(
14303
+ const [tooltipReactionType, setTooltipReactionType] = (0, import_react30.useState)(null);
14304
+ const [tooltipPositions, setTooltipPositions] = (0, import_react30.useState)(null);
14305
+ const rootRef = (0, import_react30.useRef)(null);
14306
+ const targetRef = (0, import_react30.useRef)(null);
14307
+ const tooltipRef = (0, import_react30.useRef)(null);
14308
+ const showTooltip = (0, import_react30.useCallback)(
14247
14309
  (event, reactionType) => {
14248
14310
  targetRef.current = event.currentTarget;
14249
14311
  setTooltipReactionType(reactionType);
14250
14312
  },
14251
14313
  []
14252
14314
  );
14253
- const hideTooltip = (0, import_react29.useCallback)(() => {
14315
+ const hideTooltip = (0, import_react30.useCallback)(() => {
14254
14316
  setTooltipReactionType(null);
14255
14317
  setTooltipPositions(null);
14256
14318
  }, []);
14257
- (0, import_react29.useEffect)(() => {
14319
+ (0, import_react30.useEffect)(() => {
14258
14320
  if (!tooltipReactionType || !rootRef.current) return;
14259
14321
  const tooltip = tooltipRef.current?.getBoundingClientRect();
14260
14322
  const target = targetRef.current?.getBoundingClientRect();
@@ -14275,7 +14337,7 @@ var UnMemoizedReactionSelector = (props) => {
14275
14337
  }).filter(Boolean);
14276
14338
  const iHaveReactedWithReaction = (reactionType) => ownReactions.find((reaction) => reaction.type === reactionType);
14277
14339
  const getLatestUserForReactionType = (type) => latestReactions.find((reaction) => reaction.type === type && !!reaction.user)?.user || void 0;
14278
- return /* @__PURE__ */ import_react29.default.createElement(
14340
+ return /* @__PURE__ */ import_react30.default.createElement(
14279
14341
  "div",
14280
14342
  {
14281
14343
  className: (0, import_clsx7.default)(
@@ -14287,7 +14349,7 @@ var UnMemoizedReactionSelector = (props) => {
14287
14349
  "data-testid": "reaction-selector",
14288
14350
  ref: rootRef
14289
14351
  },
14290
- !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react29.default.createElement(
14352
+ !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react30.default.createElement(
14291
14353
  "div",
14292
14354
  {
14293
14355
  className: "str-chat__reaction-selector-tooltip",
@@ -14297,13 +14359,13 @@ var UnMemoizedReactionSelector = (props) => {
14297
14359
  visibility: tooltipPositions ? "visible" : "hidden"
14298
14360
  }
14299
14361
  },
14300
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
14301
- getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */ import_react29.default.createElement("span", { className: "latest-user-username", key: `key-${i}-${user}` }, `${user}${i < users.length - 1 ? ", " : ""}`))
14362
+ /* @__PURE__ */ import_react30.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
14363
+ getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */ import_react30.default.createElement("span", { className: "latest-user-username", key: `key-${i}-${user}` }, `${user}${i < users.length - 1 ? ", " : ""}`))
14302
14364
  ),
14303
- /* @__PURE__ */ import_react29.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
14365
+ /* @__PURE__ */ import_react30.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
14304
14366
  const latestUser = getLatestUserForReactionType(reactionType);
14305
14367
  const count = reactionGroups[reactionType]?.count ?? 0;
14306
- return /* @__PURE__ */ import_react29.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react29.default.createElement(
14368
+ return /* @__PURE__ */ import_react30.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react30.default.createElement(
14307
14369
  "button",
14308
14370
  {
14309
14371
  "aria-label": `Select Reaction: ${reactionName || reactionType}`,
@@ -14322,7 +14384,7 @@ var UnMemoizedReactionSelector = (props) => {
14322
14384
  }
14323
14385
  }
14324
14386
  },
14325
- !!count && detailedView && /* @__PURE__ */ import_react29.default.createElement(
14387
+ !!count && detailedView && /* @__PURE__ */ import_react30.default.createElement(
14326
14388
  "div",
14327
14389
  {
14328
14390
  className: "latest-user str-chat__message-reactions-last-user",
@@ -14330,7 +14392,7 @@ var UnMemoizedReactionSelector = (props) => {
14330
14392
  onMouseEnter: (e) => showTooltip(e, reactionType),
14331
14393
  onMouseLeave: hideTooltip
14332
14394
  },
14333
- latestUser ? /* @__PURE__ */ import_react29.default.createElement(
14395
+ latestUser ? /* @__PURE__ */ import_react30.default.createElement(
14334
14396
  Avatar2,
14335
14397
  {
14336
14398
  image: latestUser.image,
@@ -14338,15 +14400,15 @@ var UnMemoizedReactionSelector = (props) => {
14338
14400
  size: 20,
14339
14401
  user: latestUser
14340
14402
  }
14341
- ) : /* @__PURE__ */ import_react29.default.createElement("div", { className: "latest-user-not-found" })
14403
+ ) : /* @__PURE__ */ import_react30.default.createElement("div", { className: "latest-user-not-found" })
14342
14404
  ),
14343
- /* @__PURE__ */ import_react29.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react29.default.createElement(Component, null)),
14344
- Boolean(count) && detailedView && /* @__PURE__ */ import_react29.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
14405
+ /* @__PURE__ */ import_react30.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react30.default.createElement(Component, null)),
14406
+ Boolean(count) && detailedView && /* @__PURE__ */ import_react30.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
14345
14407
  ));
14346
14408
  }))
14347
14409
  );
14348
14410
  };
14349
- var ReactionSelector = import_react29.default.memo(
14411
+ var ReactionSelector = import_react30.default.memo(
14350
14412
  UnMemoizedReactionSelector
14351
14413
  );
14352
14414
 
@@ -14357,21 +14419,22 @@ var ReactionSelectorWithButton = ({
14357
14419
  const { t } = useTranslationContext("ReactionSelectorWithButton");
14358
14420
  const { isMyMessage, message, threadList } = useMessageContext("MessageOptions");
14359
14421
  const { ReactionSelector: ReactionSelector2 = ReactionSelector } = useComponentContext("MessageOptions");
14360
- const buttonRef = (0, import_react30.useRef)(null);
14422
+ const buttonRef = (0, import_react31.useRef)(null);
14361
14423
  const dialogIdNamespace = threadList ? "-thread-" : "";
14362
14424
  const dialogId = `reaction-selector${dialogIdNamespace}--${message.id}`;
14363
- const dialog = useDialog({ id: dialogId });
14364
- const dialogIsOpen = useDialogIsOpen(dialogId);
14365
- return /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, /* @__PURE__ */ import_react30.default.createElement(
14425
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dialogId });
14426
+ const dialogIsOpen = useDialogIsOpen(dialogId, dialogManager?.id);
14427
+ return /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(
14366
14428
  DialogAnchor,
14367
14429
  {
14430
+ dialogManagerId: dialogManager?.id,
14368
14431
  id: dialogId,
14369
14432
  placement: isMyMessage() ? "top-end" : "top-start",
14370
14433
  referenceElement: buttonRef.current,
14371
14434
  trapFocus: true
14372
14435
  },
14373
- /* @__PURE__ */ import_react30.default.createElement(ReactionSelector2, null)
14374
- ), /* @__PURE__ */ import_react30.default.createElement(
14436
+ /* @__PURE__ */ import_react31.default.createElement(ReactionSelector2, null)
14437
+ ), /* @__PURE__ */ import_react31.default.createElement(
14375
14438
  "button",
14376
14439
  {
14377
14440
  "aria-expanded": dialogIsOpen,
@@ -14381,14 +14444,14 @@ var ReactionSelectorWithButton = ({
14381
14444
  onClick: () => dialog?.toggle(),
14382
14445
  ref: buttonRef
14383
14446
  },
14384
- /* @__PURE__ */ import_react30.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
14447
+ /* @__PURE__ */ import_react31.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
14385
14448
  ));
14386
14449
  };
14387
14450
 
14388
14451
  // src/components/InfiniteScrollPaginator/InfiniteScrollPaginator.tsx
14389
14452
  var import_clsx8 = __toESM(require("clsx"));
14390
14453
  var import_lodash = __toESM(require("lodash.debounce"));
14391
- var import_react31 = __toESM(require("react"));
14454
+ var import_react32 = __toESM(require("react"));
14392
14455
  var mousewheelListener = (event) => {
14393
14456
  if (event instanceof WheelEvent && event.deltaY === 1) {
14394
14457
  event.preventDefault();
@@ -14406,9 +14469,9 @@ var InfiniteScrollPaginator = (props) => {
14406
14469
  useCapture = false,
14407
14470
  ...componentProps
14408
14471
  } = props;
14409
- const rootRef = (0, import_react31.useRef)(null);
14410
- const childRef = (0, import_react31.useRef)(null);
14411
- const scrollListener = (0, import_react31.useMemo)(
14472
+ const rootRef = (0, import_react32.useRef)(null);
14473
+ const childRef = (0, import_react32.useRef)(null);
14474
+ const scrollListener = (0, import_react32.useMemo)(
14412
14475
  () => (0, import_lodash.default)(() => {
14413
14476
  const root4 = rootRef.current;
14414
14477
  const child = childRef.current;
@@ -14435,7 +14498,7 @@ var InfiniteScrollPaginator = (props) => {
14435
14498
  threshold
14436
14499
  ]
14437
14500
  );
14438
- (0, import_react31.useEffect)(() => {
14501
+ (0, import_react32.useEffect)(() => {
14439
14502
  const scrollElement = rootRef.current;
14440
14503
  if (!scrollElement) return;
14441
14504
  scrollElement.addEventListener("scroll", scrollListener, useCapture);
@@ -14443,7 +14506,7 @@ var InfiniteScrollPaginator = (props) => {
14443
14506
  scrollElement.removeEventListener("scroll", scrollListener, useCapture);
14444
14507
  };
14445
14508
  }, [scrollListener, useCapture]);
14446
- (0, import_react31.useEffect)(() => {
14509
+ (0, import_react32.useEffect)(() => {
14447
14510
  const root4 = rootRef.current;
14448
14511
  if (!root4 || typeof ResizeObserver === "undefined" || !scrollListener) return;
14449
14512
  const observer = new ResizeObserver(scrollListener);
@@ -14452,7 +14515,7 @@ var InfiniteScrollPaginator = (props) => {
14452
14515
  observer.disconnect();
14453
14516
  };
14454
14517
  }, [scrollListener]);
14455
- (0, import_react31.useEffect)(() => {
14518
+ (0, import_react32.useEffect)(() => {
14456
14519
  const root4 = rootRef.current;
14457
14520
  if (root4) {
14458
14521
  root4.addEventListener("wheel", mousewheelListener, { passive: false });
@@ -14463,14 +14526,14 @@ var InfiniteScrollPaginator = (props) => {
14463
14526
  }
14464
14527
  };
14465
14528
  }, [useCapture]);
14466
- return /* @__PURE__ */ import_react31.default.createElement(
14529
+ return /* @__PURE__ */ import_react32.default.createElement(
14467
14530
  "div",
14468
14531
  {
14469
14532
  ...componentProps,
14470
14533
  className: (0, import_clsx8.default)("str-chat__infinite-scroll-paginator", className),
14471
14534
  ref: rootRef
14472
14535
  },
14473
- /* @__PURE__ */ import_react31.default.createElement("div", { className: "str-chat__infinite-scroll-paginator__content", ref: childRef }, children)
14536
+ /* @__PURE__ */ import_react32.default.createElement("div", { className: "str-chat__infinite-scroll-paginator__content", ref: childRef }, children)
14474
14537
  );
14475
14538
  };
14476
14539
 
@@ -14481,7 +14544,7 @@ var remarkPlugins = [
14481
14544
  plusPlusToEmphasis,
14482
14545
  imageToLink
14483
14546
  ];
14484
- var renderPreviewText = (text8) => /* @__PURE__ */ import_react32.default.createElement(Markdown, { remarkPlugins, skipHtml: true }, text8);
14547
+ var renderPreviewText = (text8) => /* @__PURE__ */ import_react33.default.createElement(Markdown, { remarkPlugins, skipHtml: true }, text8);
14485
14548
  var getLatestPollVote = (latestVotesByOption) => {
14486
14549
  let latestVote;
14487
14550
  for (const optionVotes of Object.values(latestVotesByOption)) {
@@ -14563,14 +14626,14 @@ var getDisplayImage = (channel, currentUser) => getChannelDisplayInfo("image", c
14563
14626
  var useChannelPreviewInfo = (props) => {
14564
14627
  const { channel, overrideImage, overrideTitle } = props;
14565
14628
  const { client } = useChatContext("useChannelPreviewInfo");
14566
- const [displayTitle, setDisplayTitle] = (0, import_react33.useState)(
14629
+ const [displayTitle, setDisplayTitle] = (0, import_react34.useState)(
14567
14630
  () => overrideTitle || getDisplayTitle(channel, client.user)
14568
14631
  );
14569
- const [displayImage, setDisplayImage] = (0, import_react33.useState)(
14632
+ const [displayImage, setDisplayImage] = (0, import_react34.useState)(
14570
14633
  () => overrideImage || getDisplayImage(channel, client.user)
14571
14634
  );
14572
- const [groupChannelDisplayInfo, setGroupDisplayChannelInfo] = (0, import_react33.useState)(() => getGroupChannelDisplayInfo(channel));
14573
- (0, import_react33.useEffect)(() => {
14635
+ const [groupChannelDisplayInfo, setGroupDisplayChannelInfo] = (0, import_react34.useState)(() => getGroupChannelDisplayInfo(channel));
14636
+ (0, import_react34.useEffect)(() => {
14574
14637
  if (overrideTitle && overrideImage) return;
14575
14638
  const updateInfo = () => {
14576
14639
  if (!overrideTitle) setDisplayTitle(getDisplayTitle(channel, client.user));
@@ -14593,18 +14656,18 @@ var useChannelPreviewInfo = (props) => {
14593
14656
  };
14594
14657
 
14595
14658
  // src/components/ChannelPreview/hooks/useMessageDeliveryStatus.ts
14596
- var import_react34 = require("react");
14659
+ var import_react35 = require("react");
14597
14660
  var useMessageDeliveryStatus = ({
14598
14661
  channel,
14599
14662
  lastMessage
14600
14663
  }) => {
14601
14664
  const { client } = useChatContext();
14602
- const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react34.useState)();
14603
- const isOwnMessage = (0, import_react34.useCallback)(
14665
+ const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react35.useState)();
14666
+ const isOwnMessage = (0, import_react35.useCallback)(
14604
14667
  (message) => client.user && message && message.user?.id === client.user.id,
14605
14668
  [client]
14606
14669
  );
14607
- (0, import_react34.useEffect)(() => {
14670
+ (0, import_react35.useEffect)(() => {
14608
14671
  if (!lastMessage) {
14609
14672
  setMessageDeliveryStatus(void 0);
14610
14673
  }
@@ -14614,11 +14677,13 @@ var useMessageDeliveryStatus = ({
14614
14677
  msgId: lastMessage.id,
14615
14678
  timestampMs: lastMessage.created_at.getTime()
14616
14679
  };
14680
+ const readersForMessage = channel.messageReceiptsTracker.readersForMessage(msgRef);
14681
+ const deliveredForMessage = channel.messageReceiptsTracker.deliveredForMessage(msgRef);
14617
14682
  setMessageDeliveryStatus(
14618
- channel.messageReceiptsTracker.readersForMessage(msgRef).length > 0 ? "read" /* READ */ : channel.messageReceiptsTracker.deliveredForMessage(msgRef).length > 0 ? "delivered" /* DELIVERED */ : "sent" /* SENT */
14683
+ readersForMessage.length > 1 || readersForMessage.length === 1 && readersForMessage[0].id !== client.user?.id ? "read" /* READ */ : deliveredForMessage.length > 1 || deliveredForMessage.length === 1 && deliveredForMessage[0].id !== client.user?.id ? "delivered" /* DELIVERED */ : "sent" /* SENT */
14619
14684
  );
14620
- }, [channel, isOwnMessage, lastMessage]);
14621
- (0, import_react34.useEffect)(() => {
14685
+ }, [channel, client, isOwnMessage, lastMessage]);
14686
+ (0, import_react35.useEffect)(() => {
14622
14687
  const handleMessageNew = (event) => {
14623
14688
  if (!isOwnMessage(event.message)) {
14624
14689
  return setMessageDeliveryStatus(void 0);
@@ -14630,7 +14695,7 @@ var useMessageDeliveryStatus = ({
14630
14695
  channel.off("message.new", handleMessageNew);
14631
14696
  };
14632
14697
  }, [channel, isOwnMessage]);
14633
- (0, import_react34.useEffect)(() => {
14698
+ (0, import_react35.useEffect)(() => {
14634
14699
  if (!isOwnMessage(lastMessage)) return;
14635
14700
  const handleMessageDelivered = (event) => {
14636
14701
  if (event.user?.id !== client.user?.id && lastMessage && lastMessage.id === event.last_delivered_message_id)
@@ -14671,20 +14736,20 @@ var ChannelPreview = (props) => {
14671
14736
  const { displayImage, displayTitle, groupChannelDisplayInfo } = useChannelPreviewInfo({
14672
14737
  channel
14673
14738
  });
14674
- const [lastMessage, setLastMessage] = (0, import_react35.useState)(
14739
+ const [lastMessage, setLastMessage] = (0, import_react36.useState)(
14675
14740
  channel.state.messages[channel.state.messages.length - 1]
14676
14741
  );
14677
- const [latestMessagePreview, setLatestMessagePreview] = (0, import_react35.useState)(
14742
+ const [latestMessagePreview, setLatestMessagePreview] = (0, import_react36.useState)(
14678
14743
  () => getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
14679
14744
  );
14680
- const [unread, setUnread] = (0, import_react35.useState)(0);
14745
+ const [unread, setUnread] = (0, import_react36.useState)(0);
14681
14746
  const { messageDeliveryStatus } = useMessageDeliveryStatus({
14682
14747
  channel,
14683
14748
  lastMessage
14684
14749
  });
14685
14750
  const isActive = typeof active === "undefined" ? activeChannel?.cid === channel.cid : active;
14686
14751
  const { muted } = useIsChannelMuted(channel);
14687
- (0, import_react35.useEffect)(() => {
14752
+ (0, import_react36.useEffect)(() => {
14688
14753
  const handleEvent = (event) => {
14689
14754
  if (!event.cid) return setUnread(0);
14690
14755
  if (channel.cid === event.cid) setUnread(0);
@@ -14692,7 +14757,7 @@ var ChannelPreview = (props) => {
14692
14757
  client.on("notification.mark_read", handleEvent);
14693
14758
  return () => client.off("notification.mark_read", handleEvent);
14694
14759
  }, [channel, client]);
14695
- (0, import_react35.useEffect)(() => {
14760
+ (0, import_react36.useEffect)(() => {
14696
14761
  const handleEvent = (event) => {
14697
14762
  if (channel.cid !== event.cid) return;
14698
14763
  if (event.user?.id !== client.user?.id) return;
@@ -14703,7 +14768,7 @@ var ChannelPreview = (props) => {
14703
14768
  channel.off("notification.mark_unread", handleEvent);
14704
14769
  };
14705
14770
  }, [channel, client]);
14706
- const refreshUnreadCount = (0, import_react35.useMemo)(
14771
+ const refreshUnreadCount = (0, import_react36.useMemo)(
14707
14772
  () => (0, import_lodash2.default)(() => {
14708
14773
  if (muted) {
14709
14774
  setUnread(0);
@@ -14713,7 +14778,7 @@ var ChannelPreview = (props) => {
14713
14778
  }, 400),
14714
14779
  [channel, muted]
14715
14780
  );
14716
- (0, import_react35.useEffect)(() => {
14781
+ (0, import_react36.useEffect)(() => {
14717
14782
  refreshUnreadCount();
14718
14783
  setLatestMessagePreview(
14719
14784
  getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
@@ -14754,7 +14819,7 @@ var ChannelPreview = (props) => {
14754
14819
  isMessageAIGenerated
14755
14820
  ]);
14756
14821
  if (!Preview) return null;
14757
- return /* @__PURE__ */ import_react35.default.createElement(
14822
+ return /* @__PURE__ */ import_react36.default.createElement(
14758
14823
  Preview,
14759
14824
  {
14760
14825
  ...props,
@@ -14773,9 +14838,9 @@ var ChannelPreview = (props) => {
14773
14838
  };
14774
14839
 
14775
14840
  // src/components/Thread/LegacyThreadContext.ts
14776
- var import_react36 = __toESM(require("react"));
14777
- var LegacyThreadContext = import_react36.default.createContext({ legacyThread: void 0 });
14778
- var useLegacyThreadContext = () => (0, import_react36.useContext)(LegacyThreadContext);
14841
+ var import_react37 = __toESM(require("react"));
14842
+ var LegacyThreadContext = import_react37.default.createContext({ legacyThread: void 0 });
14843
+ var useLegacyThreadContext = () => (0, import_react37.useContext)(LegacyThreadContext);
14779
14844
 
14780
14845
  // src/components/MessageInput/hooks/useMessageComposer.ts
14781
14846
  var queueCache = new import_stream_chat2.FixedSizeQueueCache(64);
@@ -14785,15 +14850,15 @@ var useMessageComposer = () => {
14785
14850
  const { editing, message: editedMessage } = useMessageContext();
14786
14851
  const { legacyThread: parentMessage } = useLegacyThreadContext();
14787
14852
  const threadInstance = useThreadContext();
14788
- const cachedEditedMessage = (0, import_react37.useMemo)(() => {
14853
+ const cachedEditedMessage = (0, import_react38.useMemo)(() => {
14789
14854
  if (!editedMessage) return void 0;
14790
14855
  return editedMessage;
14791
14856
  }, [editedMessage?.id]);
14792
- const cachedParentMessage = (0, import_react37.useMemo)(() => {
14857
+ const cachedParentMessage = (0, import_react38.useMemo)(() => {
14793
14858
  if (!parentMessage) return void 0;
14794
14859
  return parentMessage;
14795
14860
  }, [parentMessage?.id]);
14796
- const messageComposer = (0, import_react37.useMemo)(() => {
14861
+ const messageComposer = (0, import_react38.useMemo)(() => {
14797
14862
  if (editing && cachedEditedMessage) {
14798
14863
  const tag = import_stream_chat2.MessageComposer.constructTag(cachedEditedMessage);
14799
14864
  const cachedComposer = queueCache.get(tag);
@@ -14836,7 +14901,7 @@ var useMessageComposer = () => {
14836
14901
  ) && !queueCache.peek(messageComposer.tag)) {
14837
14902
  queueCache.add(messageComposer.tag, messageComposer);
14838
14903
  }
14839
- (0, import_react37.useEffect)(() => {
14904
+ (0, import_react38.useEffect)(() => {
14840
14905
  const unsubscribe = messageComposer.registerSubscriptions();
14841
14906
  return () => {
14842
14907
  unsubscribe();
@@ -14846,17 +14911,17 @@ var useMessageComposer = () => {
14846
14911
  };
14847
14912
 
14848
14913
  // src/experimental/Search/hooks/useSearchQueriesInProgress.ts
14849
- var import_react38 = require("react");
14914
+ var import_react39 = require("react");
14850
14915
  var searchControllerStateSelector = (value) => ({
14851
14916
  sources: value.sources
14852
14917
  });
14853
14918
  var useSearchQueriesInProgress = (searchController) => {
14854
- const [queriesInProgress, setQueriesInProgress] = (0, import_react38.useState)([]);
14919
+ const [queriesInProgress, setQueriesInProgress] = (0, import_react39.useState)([]);
14855
14920
  const { sources } = useStateStore(
14856
14921
  searchController.state,
14857
14922
  searchControllerStateSelector
14858
14923
  );
14859
- (0, import_react38.useEffect)(() => {
14924
+ (0, import_react39.useEffect)(() => {
14860
14925
  const subscriptions = sources.map(
14861
14926
  (source) => source.state.subscribeWithSelector(
14862
14927
  (value) => ({ isLoading: value.isLoading }),
@@ -14876,7 +14941,7 @@ var useSearchQueriesInProgress = (searchController) => {
14876
14941
  };
14877
14942
 
14878
14943
  // src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
14879
- var import_react39 = require("react");
14944
+ var import_react40 = require("react");
14880
14945
  var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
14881
14946
  const { initialMessage: isInitialMessage, message } = useMessageContext();
14882
14947
  const {
@@ -14890,7 +14955,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
14890
14955
  canReply
14891
14956
  } = useUserRole(message);
14892
14957
  const isMessageThreadReply = typeof message.parent_id === "string";
14893
- return (0, import_react39.useMemo)(() => {
14958
+ return (0, import_react40.useMemo)(() => {
14894
14959
  if (disable2) return messageActionSet;
14895
14960
  if (isInitialMessage || // not sure whether this thing even works anymore
14896
14961
  !message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
@@ -14921,8 +14986,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
14921
14986
  };
14922
14987
 
14923
14988
  // src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
14924
- var import_react40 = require("react");
14925
- var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)(() => {
14989
+ var import_react41 = require("react");
14990
+ var useSplitMessageActionSet = (messageActionSet) => (0, import_react41.useMemo)(() => {
14926
14991
  const quickActionSet = [];
14927
14992
  const dropdownActionSet = [];
14928
14993
  for (const action of messageActionSet) {
@@ -14933,7 +14998,7 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)
14933
14998
  }, [messageActionSet]);
14934
14999
 
14935
15000
  // src/experimental/MessageActions/defaults.tsx
14936
- var import_react41 = __toESM(require("react"));
15001
+ var import_react42 = __toESM(require("react"));
14937
15002
  var msgActionsBoxButtonClassName = "str-chat__message-actions-list-item-button";
14938
15003
  var DefaultDropdownActionButton = ({
14939
15004
  "aria-selected": ariaSelected = "false",
@@ -14941,7 +15006,7 @@ var DefaultDropdownActionButton = ({
14941
15006
  className = msgActionsBoxButtonClassName,
14942
15007
  role = "option",
14943
15008
  ...rest
14944
- }) => /* @__PURE__ */ import_react41.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
15009
+ }) => /* @__PURE__ */ import_react42.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
14945
15010
  var DefaultMessageActionComponents = {
14946
15011
  dropdown: {
14947
15012
  Quote() {
@@ -14956,42 +15021,42 @@ var DefaultMessageActionComponents = {
14956
15021
  textarea.focus();
14957
15022
  }
14958
15023
  };
14959
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
15024
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
14960
15025
  },
14961
15026
  Pin() {
14962
15027
  const { handlePin, message } = useMessageContext();
14963
15028
  const { t } = useTranslationContext();
14964
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
15029
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
14965
15030
  },
14966
15031
  MarkUnread() {
14967
15032
  const { handleMarkUnread } = useMessageContext();
14968
15033
  const { t } = useTranslationContext();
14969
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
15034
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
14970
15035
  },
14971
15036
  Flag() {
14972
15037
  const { handleFlag } = useMessageContext();
14973
15038
  const { t } = useTranslationContext();
14974
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
15039
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
14975
15040
  },
14976
15041
  Mute() {
14977
15042
  const { handleMute, message } = useMessageContext();
14978
15043
  const { mutes } = useChatContext();
14979
15044
  const { t } = useTranslationContext();
14980
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
15045
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
14981
15046
  },
14982
15047
  Edit() {
14983
15048
  const { handleEdit } = useMessageContext();
14984
15049
  const { t } = useTranslationContext();
14985
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
15050
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
14986
15051
  },
14987
15052
  Delete() {
14988
15053
  const { handleDelete: handleDelete2 } = useMessageContext();
14989
15054
  const { t } = useTranslationContext();
14990
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
15055
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
14991
15056
  },
14992
15057
  RemindMe() {
14993
15058
  const { isMyMessage } = useMessageContext();
14994
- return /* @__PURE__ */ import_react41.default.createElement(
15059
+ return /* @__PURE__ */ import_react42.default.createElement(
14995
15060
  RemindMeActionButton,
14996
15061
  {
14997
15062
  className: msgActionsBoxButtonClassName,
@@ -15004,7 +15069,7 @@ var DefaultMessageActionComponents = {
15004
15069
  const { message } = useMessageContext();
15005
15070
  const { t } = useTranslationContext();
15006
15071
  const reminder = useMessageReminder(message.id);
15007
- return /* @__PURE__ */ import_react41.default.createElement(
15072
+ return /* @__PURE__ */ import_react42.default.createElement(
15008
15073
  DefaultDropdownActionButton,
15009
15074
  {
15010
15075
  onClick: () => reminder ? client.reminders.deleteReminder(reminder.id) : client.reminders.createReminder({ messageId: message.id })
@@ -15015,12 +15080,12 @@ var DefaultMessageActionComponents = {
15015
15080
  },
15016
15081
  quick: {
15017
15082
  React() {
15018
- return /* @__PURE__ */ import_react41.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
15083
+ return /* @__PURE__ */ import_react42.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
15019
15084
  },
15020
15085
  Reply() {
15021
15086
  const { handleOpenThread } = useMessageContext();
15022
15087
  const { t } = useTranslationContext();
15023
- return /* @__PURE__ */ import_react41.default.createElement(
15088
+ return /* @__PURE__ */ import_react42.default.createElement(
15024
15089
  "button",
15025
15090
  {
15026
15091
  "aria-label": t("aria/Open Thread"),
@@ -15028,7 +15093,7 @@ var DefaultMessageActionComponents = {
15028
15093
  "data-testid": "thread-action",
15029
15094
  onClick: handleOpenThread
15030
15095
  },
15031
- /* @__PURE__ */ import_react41.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
15096
+ /* @__PURE__ */ import_react42.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
15032
15097
  );
15033
15098
  }
15034
15099
  }
@@ -15100,7 +15165,7 @@ var MessageActions = ({
15100
15165
  const { theme } = useChatContext();
15101
15166
  const { isMyMessage, message } = useMessageContext();
15102
15167
  const { t } = useTranslationContext();
15103
- const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react42.useState)(null);
15168
+ const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react43.useState)(null);
15104
15169
  const filteredMessageActionSet = useBaseMessageActionSetFilter(
15105
15170
  messageActionSet,
15106
15171
  disableBaseMessageActionSetFilter
@@ -15110,20 +15175,23 @@ var MessageActions = ({
15110
15175
  );
15111
15176
  const dropdownDialogId = `message-actions--${message.id}`;
15112
15177
  const reactionSelectorDialogId = `reaction-selector--${message.id}`;
15113
- const dialog = useDialog({ id: dropdownDialogId });
15114
- const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId);
15115
- const reactionSelectorDialogIsOpen = useDialogIsOpen(reactionSelectorDialogId);
15178
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dropdownDialogId });
15179
+ const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId, dialogManager?.id);
15180
+ const reactionSelectorDialogIsOpen = useDialogIsOpen(
15181
+ reactionSelectorDialogId,
15182
+ dialogManager?.id
15183
+ );
15116
15184
  if (dropdownActionSet.length + quickActionSet.length === 0) {
15117
15185
  return null;
15118
15186
  }
15119
- return /* @__PURE__ */ import_react42.default.createElement(
15187
+ return /* @__PURE__ */ import_react43.default.createElement(
15120
15188
  "div",
15121
15189
  {
15122
15190
  className: (0, import_clsx9.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
15123
15191
  "str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
15124
15192
  })
15125
15193
  },
15126
- dropdownActionSet.length > 0 && /* @__PURE__ */ import_react42.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react42.default.createElement(
15194
+ dropdownActionSet.length > 0 && /* @__PURE__ */ import_react43.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react43.default.createElement(
15127
15195
  "button",
15128
15196
  {
15129
15197
  "aria-expanded": dropdownDialogIsOpen,
@@ -15133,31 +15201,32 @@ var MessageActions = ({
15133
15201
  "data-testid": "message-actions-toggle-button",
15134
15202
  ref: setActionsBoxButtonElement
15135
15203
  },
15136
- /* @__PURE__ */ import_react42.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
15137
- ), /* @__PURE__ */ import_react42.default.createElement(
15204
+ /* @__PURE__ */ import_react43.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
15205
+ ), /* @__PURE__ */ import_react43.default.createElement(
15138
15206
  DialogAnchor,
15139
15207
  {
15208
+ dialogManagerId: dialogManager?.id,
15140
15209
  id: dropdownDialogId,
15141
15210
  placement: isMyMessage() ? "top-end" : "top-start",
15142
15211
  referenceElement: actionsBoxButtonElement,
15143
15212
  tabIndex: -1,
15144
15213
  trapFocus: true
15145
15214
  },
15146
- /* @__PURE__ */ import_react42.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react42.default.createElement(DropdownActionComponent, { key: type })))
15215
+ /* @__PURE__ */ import_react43.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(DropdownActionComponent, { key: type })))
15147
15216
  )),
15148
- quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react42.default.createElement(QuickActionComponent, { key: type }))
15217
+ quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(QuickActionComponent, { key: type }))
15149
15218
  );
15150
15219
  };
15151
15220
  var DropdownBox = ({ children, open }) => {
15152
15221
  const { t } = useTranslationContext();
15153
- return /* @__PURE__ */ import_react42.default.createElement(
15222
+ return /* @__PURE__ */ import_react43.default.createElement(
15154
15223
  "div",
15155
15224
  {
15156
15225
  className: (0, import_clsx9.default)("str-chat__message-actions-box", {
15157
15226
  "str-chat__message-actions-box--open": open
15158
15227
  })
15159
15228
  },
15160
- /* @__PURE__ */ import_react42.default.createElement(
15229
+ /* @__PURE__ */ import_react43.default.createElement(
15161
15230
  "div",
15162
15231
  {
15163
15232
  "aria-label": t("aria/Message Options"),
@@ -15171,21 +15240,21 @@ var DropdownBox = ({ children, open }) => {
15171
15240
 
15172
15241
  // src/experimental/Search/Search.tsx
15173
15242
  var import_clsx12 = __toESM(require("clsx"));
15174
- var import_react55 = __toESM(require("react"));
15243
+ var import_react56 = __toESM(require("react"));
15175
15244
 
15176
15245
  // src/experimental/Search/SearchBar/SearchBar.tsx
15177
15246
  var import_clsx10 = __toESM(require("clsx"));
15178
- var import_react44 = __toESM(require("react"));
15247
+ var import_react45 = __toESM(require("react"));
15179
15248
 
15180
15249
  // src/experimental/Search/SearchContext.tsx
15181
- var import_react43 = __toESM(require("react"));
15182
- var SearchContext = (0, import_react43.createContext)(void 0);
15250
+ var import_react44 = __toESM(require("react"));
15251
+ var SearchContext = (0, import_react44.createContext)(void 0);
15183
15252
  var SearchContextProvider = ({
15184
15253
  children,
15185
15254
  value
15186
- }) => /* @__PURE__ */ import_react43.default.createElement(SearchContext.Provider, { value }, children);
15255
+ }) => /* @__PURE__ */ import_react44.default.createElement(SearchContext.Provider, { value }, children);
15187
15256
  var useSearchContext = () => {
15188
- const contextValue = (0, import_react43.useContext)(SearchContext);
15257
+ const contextValue = (0, import_react44.useContext)(SearchContext);
15189
15258
  return contextValue;
15190
15259
  };
15191
15260
 
@@ -15198,12 +15267,12 @@ var SearchBar = () => {
15198
15267
  const { t } = useTranslationContext();
15199
15268
  const { disabled, exitSearchOnInputBlur, placeholder, searchController } = useSearchContext();
15200
15269
  const queriesInProgress = useSearchQueriesInProgress(searchController);
15201
- const [input, setInput] = (0, import_react44.useState)(null);
15270
+ const [input, setInput] = (0, import_react45.useState)(null);
15202
15271
  const { isActive, searchQuery } = useStateStore(
15203
15272
  searchController.state,
15204
15273
  searchControllerStateSelector2
15205
15274
  );
15206
- (0, import_react44.useEffect)(() => {
15275
+ (0, import_react45.useEffect)(() => {
15207
15276
  if (!input) return;
15208
15277
  const handleKeyDown = (event) => {
15209
15278
  if (event.key === "Escape") {
@@ -15216,15 +15285,15 @@ var SearchBar = () => {
15216
15285
  document.removeEventListener("keydown", handleKeyDown);
15217
15286
  };
15218
15287
  }, [searchController, input]);
15219
- return /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react44.default.createElement(
15288
+ return /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react45.default.createElement(
15220
15289
  "div",
15221
15290
  {
15222
15291
  className: (0, import_clsx10.default)("str-chat__search-input--wrapper", {
15223
15292
  "str-chat__search-input--wrapper-active": isActive
15224
15293
  })
15225
15294
  },
15226
- /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-input--icon" }),
15227
- /* @__PURE__ */ import_react44.default.createElement(
15295
+ /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--icon" }),
15296
+ /* @__PURE__ */ import_react45.default.createElement(
15228
15297
  "input",
15229
15298
  {
15230
15299
  className: "str-chat__search-input",
@@ -15247,7 +15316,7 @@ var SearchBar = () => {
15247
15316
  value: searchQuery
15248
15317
  }
15249
15318
  ),
15250
- searchQuery && /* @__PURE__ */ import_react44.default.createElement(
15319
+ searchQuery && /* @__PURE__ */ import_react45.default.createElement(
15251
15320
  "button",
15252
15321
  {
15253
15322
  className: "str-chat__search-input--clear-button",
@@ -15258,9 +15327,9 @@ var SearchBar = () => {
15258
15327
  input?.focus();
15259
15328
  }
15260
15329
  },
15261
- /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
15330
+ /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
15262
15331
  )
15263
- ), isActive ? /* @__PURE__ */ import_react44.default.createElement(
15332
+ ), isActive ? /* @__PURE__ */ import_react45.default.createElement(
15264
15333
  "button",
15265
15334
  {
15266
15335
  className: (0, import_clsx10.default)(
@@ -15277,25 +15346,25 @@ var SearchBar = () => {
15277
15346
  };
15278
15347
 
15279
15348
  // src/experimental/Search/SearchResults/SearchResults.tsx
15280
- var import_react54 = __toESM(require("react"));
15349
+ var import_react55 = __toESM(require("react"));
15281
15350
 
15282
15351
  // src/experimental/Search/SearchResults/SearchSourceResults.tsx
15283
- var import_react51 = __toESM(require("react"));
15352
+ var import_react52 = __toESM(require("react"));
15284
15353
 
15285
15354
  // src/experimental/Search/SearchResults/SearchSourceResultList.tsx
15286
- var import_react49 = __toESM(require("react"));
15355
+ var import_react50 = __toESM(require("react"));
15287
15356
 
15288
15357
  // src/experimental/Search/SearchResults/SearchResultItem.tsx
15289
- var import_react45 = __toESM(require("react"));
15358
+ var import_react46 = __toESM(require("react"));
15290
15359
  var import_lodash3 = __toESM(require("lodash.uniqby"));
15291
15360
  var ChannelSearchResultItem = ({ item }) => {
15292
15361
  const { setActiveChannel } = useChatContext();
15293
15362
  const { setChannels } = useChannelListContext();
15294
- const onSelect = (0, import_react45.useCallback)(() => {
15363
+ const onSelect = (0, import_react46.useCallback)(() => {
15295
15364
  setActiveChannel(item);
15296
15365
  setChannels?.((channels) => (0, import_lodash3.default)([item, ...channels], "cid"));
15297
15366
  }, [item, setActiveChannel, setChannels]);
15298
- return /* @__PURE__ */ import_react45.default.createElement(
15367
+ return /* @__PURE__ */ import_react46.default.createElement(
15299
15368
  ChannelPreview,
15300
15369
  {
15301
15370
  channel: item,
@@ -15314,13 +15383,13 @@ var MessageSearchResultItem = ({
15314
15383
  setActiveChannel
15315
15384
  } = useChatContext();
15316
15385
  const { setChannels } = useChannelListContext();
15317
- const channel = (0, import_react45.useMemo)(() => {
15386
+ const channel = (0, import_react46.useMemo)(() => {
15318
15387
  const { channel: channelData } = item;
15319
15388
  const type = channelData?.type ?? "unknown";
15320
15389
  const id = channelData?.id ?? "unknown";
15321
15390
  return client.channel(type, id);
15322
15391
  }, [client, item]);
15323
- const onSelect = (0, import_react45.useCallback)(async () => {
15392
+ const onSelect = (0, import_react46.useCallback)(async () => {
15324
15393
  if (!channel) return;
15325
15394
  await channel.state.loadMessageIntoState(
15326
15395
  item.id,
@@ -15331,9 +15400,9 @@ var MessageSearchResultItem = ({
15331
15400
  setActiveChannel(channel);
15332
15401
  setChannels?.((channels) => (0, import_lodash3.default)([channel, ...channels], "cid"));
15333
15402
  }, [channel, item, searchController, setActiveChannel, setChannels]);
15334
- const getLatestMessagePreview2 = (0, import_react45.useCallback)(() => item.text, [item]);
15403
+ const getLatestMessagePreview2 = (0, import_react46.useCallback)(() => item.text, [item]);
15335
15404
  if (!channel) return;
15336
- return /* @__PURE__ */ import_react45.default.createElement(
15405
+ return /* @__PURE__ */ import_react46.default.createElement(
15337
15406
  ChannelPreview,
15338
15407
  {
15339
15408
  active: channel.cid === activeChannel?.cid && item.id === searchController._internalState.getLatestValue().focusedMessage?.id,
@@ -15348,7 +15417,7 @@ var UserSearchResultItem = ({ item }) => {
15348
15417
  const { client, setActiveChannel } = useChatContext();
15349
15418
  const { setChannels } = useChannelListContext();
15350
15419
  const { directMessagingChannelType } = useSearchContext();
15351
- const onClick = (0, import_react45.useCallback)(() => {
15420
+ const onClick = (0, import_react46.useCallback)(() => {
15352
15421
  const newChannel = client.channel(directMessagingChannelType, {
15353
15422
  members: [client.userID, item.id]
15354
15423
  });
@@ -15356,7 +15425,7 @@ var UserSearchResultItem = ({ item }) => {
15356
15425
  setActiveChannel(newChannel);
15357
15426
  setChannels?.((channels) => (0, import_lodash3.default)([newChannel, ...channels], "cid"));
15358
15427
  }, [client, item, setActiveChannel, setChannels, directMessagingChannelType]);
15359
- return /* @__PURE__ */ import_react45.default.createElement(
15428
+ return /* @__PURE__ */ import_react46.default.createElement(
15360
15429
  "button",
15361
15430
  {
15362
15431
  "aria-label": `Select User Channel: ${item.name || ""}`,
@@ -15365,7 +15434,7 @@ var UserSearchResultItem = ({ item }) => {
15365
15434
  onClick,
15366
15435
  role: "option"
15367
15436
  },
15368
- /* @__PURE__ */ import_react45.default.createElement(
15437
+ /* @__PURE__ */ import_react46.default.createElement(
15369
15438
  Avatar,
15370
15439
  {
15371
15440
  className: "str-chat__avatar--channel-preview",
@@ -15374,7 +15443,7 @@ var UserSearchResultItem = ({ item }) => {
15374
15443
  user: item
15375
15444
  }
15376
15445
  ),
15377
- /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
15446
+ /* @__PURE__ */ import_react46.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
15378
15447
  );
15379
15448
  };
15380
15449
  var DefaultSearchResultItems = {
@@ -15384,18 +15453,18 @@ var DefaultSearchResultItems = {
15384
15453
  };
15385
15454
 
15386
15455
  // src/experimental/Search/SearchResults/SearchSourceResultListFooter.tsx
15387
- var import_react48 = __toESM(require("react"));
15456
+ var import_react49 = __toESM(require("react"));
15388
15457
 
15389
15458
  // src/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.tsx
15390
- var import_react47 = __toESM(require("react"));
15459
+ var import_react48 = __toESM(require("react"));
15391
15460
 
15392
15461
  // src/experimental/Search/SearchSourceResultsContext.tsx
15393
- var import_react46 = __toESM(require("react"));
15394
- var SearchSourceResultsContext = (0, import_react46.createContext)(void 0);
15462
+ var import_react47 = __toESM(require("react"));
15463
+ var SearchSourceResultsContext = (0, import_react47.createContext)(void 0);
15395
15464
  var SearchSourceResultsContextProvider = ({
15396
15465
  children,
15397
15466
  value
15398
- }) => /* @__PURE__ */ import_react46.default.createElement(
15467
+ }) => /* @__PURE__ */ import_react47.default.createElement(
15399
15468
  SearchSourceResultsContext.Provider,
15400
15469
  {
15401
15470
  value
@@ -15403,7 +15472,7 @@ var SearchSourceResultsContextProvider = ({
15403
15472
  children
15404
15473
  );
15405
15474
  var useSearchSourceResultsContext = () => {
15406
- const contextValue = (0, import_react46.useContext)(SearchSourceResultsContext);
15475
+ const contextValue = (0, import_react47.useContext)(SearchSourceResultsContext);
15407
15476
  return contextValue;
15408
15477
  };
15409
15478
 
@@ -15411,7 +15480,7 @@ var useSearchSourceResultsContext = () => {
15411
15480
  var SearchSourceResultsLoadingIndicator = () => {
15412
15481
  const { t } = useTranslationContext();
15413
15482
  const { searchSource } = useSearchSourceResultsContext();
15414
- return /* @__PURE__ */ import_react47.default.createElement(
15483
+ return /* @__PURE__ */ import_react48.default.createElement(
15415
15484
  "div",
15416
15485
  {
15417
15486
  className: "str-chat__search-source-results__loading-indicator",
@@ -15436,13 +15505,13 @@ var SearchSourceResultListFooter = () => {
15436
15505
  searchSource.state,
15437
15506
  searchSourceStateSelector
15438
15507
  );
15439
- return /* @__PURE__ */ import_react48.default.createElement(
15508
+ return /* @__PURE__ */ import_react49.default.createElement(
15440
15509
  "div",
15441
15510
  {
15442
15511
  className: "str-chat__search-source-result-list__footer",
15443
15512
  "data-testid": "search-footer"
15444
15513
  },
15445
- isLoading ? /* @__PURE__ */ import_react48.default.createElement(SearchSourceResultsLoadingIndicator2, null) : !hasNext ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "str-chat__search-source-results---empty" }, t("All results loaded")) : null
15514
+ isLoading ? /* @__PURE__ */ import_react49.default.createElement(SearchSourceResultsLoadingIndicator2, null) : !hasNext ? /* @__PURE__ */ import_react49.default.createElement("div", { className: "str-chat__search-source-results---empty" }, t("All results loaded")) : null
15446
15515
  );
15447
15516
  };
15448
15517
 
@@ -15460,36 +15529,36 @@ var SearchSourceResultList = ({
15460
15529
  const { items } = useStateStore(searchSource.state, searchSourceStateSelector2);
15461
15530
  const SearchResultItem = SearchResultItems[searchSource.type];
15462
15531
  if (!SearchResultItem) return null;
15463
- return /* @__PURE__ */ import_react49.default.createElement(
15532
+ return /* @__PURE__ */ import_react50.default.createElement(
15464
15533
  "div",
15465
15534
  {
15466
15535
  className: "str-chat__search-source-result-list",
15467
15536
  "data-testid": "search-source-result-list"
15468
15537
  },
15469
- /* @__PURE__ */ import_react49.default.createElement(
15538
+ /* @__PURE__ */ import_react50.default.createElement(
15470
15539
  InfiniteScrollPaginator,
15471
15540
  {
15472
15541
  loadNextDebounceMs: loadMoreDebounceMs,
15473
15542
  loadNextOnScrollToBottom: searchSource.search,
15474
15543
  threshold: loadMoreThresholdPx
15475
15544
  },
15476
- items?.map((item, i) => /* @__PURE__ */ import_react49.default.createElement(
15545
+ items?.map((item, i) => /* @__PURE__ */ import_react50.default.createElement(
15477
15546
  SearchResultItem,
15478
15547
  {
15479
15548
  item,
15480
15549
  key: `source-search-result-${searchSource.type}-${i}`
15481
15550
  }
15482
15551
  )),
15483
- /* @__PURE__ */ import_react49.default.createElement(SearchSourceResultListFooter2, null)
15552
+ /* @__PURE__ */ import_react50.default.createElement(SearchSourceResultListFooter2, null)
15484
15553
  )
15485
15554
  );
15486
15555
  };
15487
15556
 
15488
15557
  // src/experimental/Search/SearchResults/SearchSourceResultsEmpty.tsx
15489
- var import_react50 = __toESM(require("react"));
15558
+ var import_react51 = __toESM(require("react"));
15490
15559
  var SearchSourceResultsEmpty = () => {
15491
15560
  const { t } = useTranslationContext();
15492
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
15561
+ return /* @__PURE__ */ import_react51.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
15493
15562
  };
15494
15563
 
15495
15564
  // src/experimental/Search/SearchResults/SearchSourceResultsHeader.tsx
@@ -15511,20 +15580,20 @@ var SearchSourceResults = ({ searchSource }) => {
15511
15580
  searchSourceStateSelector3
15512
15581
  );
15513
15582
  if (!items && !isLoading) return null;
15514
- return /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react51.default.createElement(
15583
+ return /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react52.default.createElement(
15515
15584
  "div",
15516
15585
  {
15517
15586
  className: "str-chat__search-source-results",
15518
15587
  "data-testid": "search-source-results"
15519
15588
  },
15520
- /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsHeader2, null),
15521
- items?.length || isLoading ? /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultList2, null) : /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsEmpty2, null)
15589
+ /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsHeader2, null),
15590
+ items?.length || isLoading ? /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultList2, null) : /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsEmpty2, null)
15522
15591
  ));
15523
15592
  };
15524
15593
 
15525
15594
  // src/experimental/Search/SearchResults/SearchResultsHeader.tsx
15526
15595
  var import_clsx11 = __toESM(require("clsx"));
15527
- var import_react52 = __toESM(require("react"));
15596
+ var import_react53 = __toESM(require("react"));
15528
15597
  var searchSourceStateSelector4 = (nextValue) => ({
15529
15598
  isActive: nextValue.isActive
15530
15599
  });
@@ -15533,7 +15602,7 @@ var SearchSourceFilterButton = ({ source }) => {
15533
15602
  const { searchController } = useSearchContext();
15534
15603
  const { isActive } = useStateStore(source.state, searchSourceStateSelector4);
15535
15604
  const label = `search-results-header-filter-source-button-label--${source.type}`;
15536
- return /* @__PURE__ */ import_react52.default.createElement(
15605
+ return /* @__PURE__ */ import_react53.default.createElement(
15537
15606
  "button",
15538
15607
  {
15539
15608
  "aria-label": t("aria/Search results header filter button"),
@@ -15556,13 +15625,13 @@ var SearchSourceFilterButton = ({ source }) => {
15556
15625
  };
15557
15626
  var SearchResultsHeader = () => {
15558
15627
  const { searchController } = useSearchContext();
15559
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "str-chat__search-results-header", "data-testid": "search-results-header" }, /* @__PURE__ */ import_react52.default.createElement(
15628
+ return /* @__PURE__ */ import_react53.default.createElement("div", { className: "str-chat__search-results-header", "data-testid": "search-results-header" }, /* @__PURE__ */ import_react53.default.createElement(
15560
15629
  "div",
15561
15630
  {
15562
15631
  className: "str-chat__search-results-header__filter-source-buttons",
15563
15632
  "data-testid": "filter-source-buttons"
15564
15633
  },
15565
- searchController.sources.map((source) => /* @__PURE__ */ import_react52.default.createElement(
15634
+ searchController.sources.map((source) => /* @__PURE__ */ import_react53.default.createElement(
15566
15635
  SearchSourceFilterButton,
15567
15636
  {
15568
15637
  key: `search-source-filter-button-${source.type}`,
@@ -15573,10 +15642,10 @@ var SearchResultsHeader = () => {
15573
15642
  };
15574
15643
 
15575
15644
  // src/experimental/Search/SearchResults/SearchResultsPresearch.tsx
15576
- var import_react53 = __toESM(require("react"));
15645
+ var import_react54 = __toESM(require("react"));
15577
15646
  var SearchResultsPresearch = () => {
15578
15647
  const { t } = useTranslationContext();
15579
- return /* @__PURE__ */ import_react53.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
15648
+ return /* @__PURE__ */ import_react54.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
15580
15649
  };
15581
15650
 
15582
15651
  // src/experimental/Search/SearchResults/SearchResults.tsx
@@ -15597,7 +15666,7 @@ var SearchResults = () => {
15597
15666
  searchController.state,
15598
15667
  searchControllerStateSelector3
15599
15668
  );
15600
- return !isActive ? null : /* @__PURE__ */ import_react54.default.createElement("div", { "aria-label": t("aria/Search results"), className: "str-chat__search-results" }, /* @__PURE__ */ import_react54.default.createElement(SearchResultsHeader2, null), !searchQuery ? /* @__PURE__ */ import_react54.default.createElement(SearchResultsPresearch2, { activeSources }) : activeSources.map((source) => /* @__PURE__ */ import_react54.default.createElement(SearchSourceResults2, { key: source.type, searchSource: source })));
15669
+ return !isActive ? null : /* @__PURE__ */ import_react55.default.createElement("div", { "aria-label": t("aria/Search results"), className: "str-chat__search-results" }, /* @__PURE__ */ import_react55.default.createElement(SearchResultsHeader2, null), !searchQuery ? /* @__PURE__ */ import_react55.default.createElement(SearchResultsPresearch2, { activeSources }) : activeSources.map((source) => /* @__PURE__ */ import_react55.default.createElement(SearchSourceResults2, { key: source.type, searchSource: source })));
15601
15670
  };
15602
15671
 
15603
15672
  // src/experimental/Search/Search.tsx
@@ -15611,7 +15680,7 @@ var Search = ({
15611
15680
  const { SearchBar: SearchBar2 = SearchBar, SearchResults: SearchResults2 = SearchResults } = useComponentContext();
15612
15681
  const { searchController } = useChatContext();
15613
15682
  const { isActive } = useStateStore(searchController.state, searchControllerStateSelector4);
15614
- return /* @__PURE__ */ import_react55.default.createElement(
15683
+ return /* @__PURE__ */ import_react56.default.createElement(
15615
15684
  SearchContextProvider,
15616
15685
  {
15617
15686
  value: {
@@ -15622,7 +15691,7 @@ var Search = ({
15622
15691
  searchController
15623
15692
  }
15624
15693
  },
15625
- /* @__PURE__ */ import_react55.default.createElement(
15694
+ /* @__PURE__ */ import_react56.default.createElement(
15626
15695
  "div",
15627
15696
  {
15628
15697
  className: (0, import_clsx12.default)("str-chat__search", {
@@ -15630,8 +15699,8 @@ var Search = ({
15630
15699
  }),
15631
15700
  "data-testid": "search"
15632
15701
  },
15633
- /* @__PURE__ */ import_react55.default.createElement(SearchBar2, null),
15634
- /* @__PURE__ */ import_react55.default.createElement(SearchResults2, null)
15702
+ /* @__PURE__ */ import_react56.default.createElement(SearchBar2, null),
15703
+ /* @__PURE__ */ import_react56.default.createElement(SearchResults2, null)
15635
15704
  )
15636
15705
  );
15637
15706
  };