stream-chat-react 13.9.0 → 13.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +8 -3
  2. package/dist/components/Chat/hooks/useChat.js +1 -1
  3. package/dist/components/Dialog/ButtonWithSubmenu.d.ts +2 -2
  4. package/dist/components/Dialog/ButtonWithSubmenu.js +6 -6
  5. package/dist/components/Dialog/DialogAnchor.d.ts +5 -11
  6. package/dist/components/Dialog/DialogAnchor.js +22 -26
  7. package/dist/components/Dialog/DialogPortal.d.ts +2 -1
  8. package/dist/components/Dialog/DialogPortal.js +23 -7
  9. package/dist/components/Dialog/hooks/index.d.ts +1 -0
  10. package/dist/components/Dialog/hooks/useDialog.d.ts +4 -0
  11. package/dist/components/Dialog/hooks/useDialog.js +9 -1
  12. package/dist/components/Dialog/hooks/usePopoverPosition.d.ts +68 -0
  13. package/dist/components/Dialog/hooks/usePopoverPosition.js +54 -0
  14. package/dist/components/Form/Dropdown.d.ts +2 -2
  15. package/dist/components/Message/MessageRepliesCountButton.js +3 -1
  16. package/dist/components/Message/renderText/remarkPlugins/index.d.ts +1 -0
  17. package/dist/components/Message/renderText/remarkPlugins/index.js +1 -0
  18. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.d.ts +10 -2
  19. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js +46 -26
  20. package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.d.ts +8 -0
  21. package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.js +11 -0
  22. package/dist/components/MessageActions/MessageActions.js +4 -4
  23. package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -1
  24. package/dist/components/MessageInput/AttachmentSelector.js +9 -4
  25. package/dist/components/MessageList/hooks/useLastDeliveredData.js +5 -2
  26. package/dist/components/Modal/GlobalModal.js +2 -2
  27. package/dist/components/Reactions/ReactionSelectorWithButton.js +4 -4
  28. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  29. package/dist/components/Tooltip/Tooltip.js +11 -12
  30. package/dist/context/DialogManagerContext.d.ts +1 -0
  31. package/dist/context/DialogManagerContext.js +1 -0
  32. package/dist/css/v2/index.css +1 -1
  33. package/dist/css/v2/index.layout.css +1 -1
  34. package/dist/experimental/MessageActions/MessageActions.js +5 -5
  35. package/dist/experimental/index.browser.cjs +307 -238
  36. package/dist/experimental/index.browser.cjs.map +4 -4
  37. package/dist/experimental/index.node.cjs +307 -238
  38. package/dist/experimental/index.node.cjs.map +4 -4
  39. package/dist/index.browser.cjs +1415 -1307
  40. package/dist/index.browser.cjs.map +4 -4
  41. package/dist/index.node.cjs +1418 -1307
  42. package/dist/index.node.cjs.map +4 -4
  43. package/dist/plugins/Emojis/EmojiPicker.d.ts +9 -4
  44. package/dist/plugins/Emojis/EmojiPicker.js +10 -5
  45. package/dist/plugins/Emojis/index.browser.cjs +89 -29
  46. package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
  47. package/dist/plugins/Emojis/index.node.cjs +89 -29
  48. package/dist/plugins/Emojis/index.node.cjs.map +4 -4
  49. package/dist/scss/v2/Message/Message-layout.scss +4 -0
  50. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +1 -0
  51. package/package.json +7 -8
  52. package/dist/components/MessageActions/hooks/index.d.ts +0 -1
  53. package/dist/components/MessageActions/hooks/index.js +0 -1
  54. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +0 -18
  55. 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() {
@@ -12513,57 +12523,111 @@ var useMessageReminder = (messageId) => {
12513
12523
 
12514
12524
  // src/components/Dialog/ButtonWithSubmenu.tsx
12515
12525
  var import_clsx5 = __toESM(require("clsx"));
12516
- var import_react22 = __toESM(require("react"));
12526
+ var import_react23 = __toESM(require("react"));
12517
12527
 
12518
12528
  // src/components/Dialog/DialogAnchor.tsx
12519
12529
  var import_clsx4 = __toESM(require("clsx"));
12520
- var import_react21 = __toESM(require("react"));
12530
+ var import_react22 = __toESM(require("react"));
12521
12531
  var import_focus = require("@react-aria/focus");
12522
- var import_react_popper = require("react-popper");
12532
+
12533
+ // src/components/Dialog/hooks/usePopoverPosition.ts
12534
+ var import_react21 = require("@floating-ui/react");
12535
+ var hasResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;
12536
+ function autoMiddlewareFor(p) {
12537
+ if (!String(p).startsWith("auto")) return null;
12538
+ const alignment = p === "auto-start" ? "start" : p === "auto-end" ? "end" : void 0;
12539
+ return (0, import_react21.autoPlacement)({ alignment });
12540
+ }
12541
+ function toOffsetMw(opt) {
12542
+ if (opt == null) return null;
12543
+ if (Array.isArray(opt)) {
12544
+ const [crossAxis, mainAxis] = opt;
12545
+ return (0, import_react21.offset)({ crossAxis, mainAxis });
12546
+ }
12547
+ if (typeof opt === "number") return (0, import_react21.offset)(opt);
12548
+ return (0, import_react21.offset)(opt);
12549
+ }
12550
+ function usePopoverPosition({
12551
+ allowFlip = true,
12552
+ allowShift = true,
12553
+ autoUpdateOptions,
12554
+ fitAvailableSpace = false,
12555
+ freeze = false,
12556
+ offset,
12557
+ placement = "bottom-start"
12558
+ }) {
12559
+ const autoMw = autoMiddlewareFor(placement);
12560
+ const offsetMiddleware = toOffsetMw(offset);
12561
+ const isSidePlacement = placement.startsWith("left") || placement.startsWith("right");
12562
+ const middleware = [
12563
+ // offset first (mirrors common Popper setups)
12564
+ ...offsetMiddleware ? [offsetMiddleware] : [],
12565
+ // choose between autoPlacement (Popper's "auto*") OR flip()
12566
+ // only allow flip when not explicitly 'left*' or 'right*'
12567
+ ...autoMw ? [autoMw] : allowFlip && !isSidePlacement ? [(0, import_react21.flip)()] : [],
12568
+ // viewport collision adjustments
12569
+ ...allowShift ? [(0, import_react21.shift)({ padding: 8 })] : [],
12570
+ // optional size constraining
12571
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
12572
+ ...fitAvailableSpace ? [(0, import_react21.size)({ apply: () => {
12573
+ } })] : []
12574
+ ];
12575
+ const seedPlacement = String(placement).startsWith("auto") ? "bottom" : placement;
12576
+ return (0, import_react21.useFloating)({
12577
+ middleware,
12578
+ placement: seedPlacement,
12579
+ strategy: "fixed",
12580
+ whileElementsMounted: freeze ? void 0 : (reference, floating, update) => (0, import_react21.autoUpdate)(reference, floating, update, {
12581
+ ancestorResize: true,
12582
+ ancestorScroll: true,
12583
+ animationFrame: false,
12584
+ elementResize: hasResizeObserver,
12585
+ ...autoUpdateOptions
12586
+ })
12587
+ });
12588
+ }
12589
+
12590
+ // src/components/Dialog/DialogAnchor.tsx
12523
12591
  function useDialogAnchor({
12524
12592
  allowFlip,
12525
12593
  open,
12526
12594
  placement,
12527
12595
  referenceElement
12528
12596
  }) {
12529
- const [popperElement, setPopperElement] = (0, import_react21.useState)(null);
12530
- const { attributes, styles, update } = (0, import_react_popper.usePopper)(referenceElement, popperElement, {
12531
- modifiers: [
12532
- {
12533
- enabled: !!allowFlip,
12534
- // Prevent flipping
12535
- name: "flip"
12536
- },
12537
- {
12538
- name: "eventListeners",
12539
- options: {
12540
- // It's not safe to update popper position on resize and scroll, since popper's
12541
- // reference element might not be visible at the time.
12542
- resize: false,
12543
- scroll: false
12544
- }
12545
- }
12546
- ],
12597
+ const [popperElement, setPopperElement] = (0, import_react22.useState)(null);
12598
+ const { refs, strategy, update, x, y } = usePopoverPosition({
12599
+ allowFlip,
12600
+ freeze: true,
12547
12601
  placement
12548
12602
  });
12549
- (0, import_react21.useEffect)(() => {
12603
+ (0, import_react22.useEffect)(() => {
12604
+ refs.setReference(referenceElement);
12605
+ }, [referenceElement, refs]);
12606
+ (0, import_react22.useEffect)(() => {
12607
+ refs.setFloating(popperElement);
12608
+ }, [popperElement, refs]);
12609
+ (0, import_react22.useEffect)(() => {
12550
12610
  if (open && popperElement) {
12551
12611
  update?.();
12552
12612
  }
12553
- }, [open, popperElement, update]);
12613
+ }, [open, placement, popperElement, update]);
12554
12614
  if (popperElement && !open) {
12555
12615
  setPopperElement(null);
12556
12616
  }
12557
12617
  return {
12558
- attributes,
12559
12618
  setPopperElement,
12560
- styles
12619
+ styles: {
12620
+ left: x ?? 0,
12621
+ position: strategy,
12622
+ top: y ?? 0
12623
+ }
12561
12624
  };
12562
12625
  }
12563
12626
  var DialogAnchor = ({
12564
12627
  allowFlip = true,
12565
12628
  children,
12566
12629
  className,
12630
+ dialogManagerId,
12567
12631
  focus = true,
12568
12632
  id,
12569
12633
  placement = "auto",
@@ -12572,15 +12636,15 @@ var DialogAnchor = ({
12572
12636
  trapFocus,
12573
12637
  ...restDivProps
12574
12638
  }) => {
12575
- const dialog = useDialog({ id });
12576
- const open = useDialogIsOpen(id);
12577
- const { attributes, setPopperElement, styles } = useDialogAnchor({
12639
+ const dialog = useDialog({ dialogManagerId, id });
12640
+ const open = useDialogIsOpen(id, dialogManagerId);
12641
+ const { setPopperElement, styles } = useDialogAnchor({
12578
12642
  allowFlip,
12579
12643
  open,
12580
12644
  placement,
12581
12645
  referenceElement
12582
12646
  });
12583
- (0, import_react21.useEffect)(() => {
12647
+ (0, import_react22.useEffect)(() => {
12584
12648
  if (!open) return;
12585
12649
  const hideOnEscape = (event) => {
12586
12650
  if (event.key !== "Escape") return;
@@ -12594,15 +12658,14 @@ var DialogAnchor = ({
12594
12658
  if (!open) {
12595
12659
  return null;
12596
12660
  }
12597
- 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(
12661
+ 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(
12598
12662
  "div",
12599
12663
  {
12600
12664
  ...restDivProps,
12601
- ...attributes.popper,
12602
12665
  className: (0, import_clsx4.default)("str-chat__dialog-contents", className),
12603
12666
  "data-testid": "str-chat__dialog-contents",
12604
12667
  ref: setPopperElement,
12605
- style: styles.popper,
12668
+ style: styles,
12606
12669
  tabIndex: typeof tabIndex !== "undefined" ? tabIndex : 0
12607
12670
  },
12608
12671
  children
@@ -12618,26 +12681,26 @@ var ButtonWithSubmenu = ({
12618
12681
  submenuContainerProps,
12619
12682
  ...buttonProps
12620
12683
  }) => {
12621
- const buttonRef = (0, import_react22.useRef)(null);
12622
- const [dialogContainer, setDialogContainer] = (0, import_react22.useState)(null);
12623
- const keepSubmenuOpen = (0, import_react22.useRef)(false);
12624
- const dialogCloseTimeout = (0, import_react22.useRef)(null);
12625
- const dialogId = (0, import_react22.useMemo)(() => `submenu-${Math.random().toString(36).slice(2)}`, []);
12626
- const dialog = useDialog({ id: dialogId });
12627
- const dialogIsOpen = useDialogIsOpen(dialogId);
12628
- const { attributes, setPopperElement, styles } = useDialogAnchor({
12684
+ const buttonRef = (0, import_react23.useRef)(null);
12685
+ const [dialogContainer, setDialogContainer] = (0, import_react23.useState)(null);
12686
+ const keepSubmenuOpen = (0, import_react23.useRef)(false);
12687
+ const dialogCloseTimeout = (0, import_react23.useRef)(null);
12688
+ const dialogId = (0, import_react23.useMemo)(() => `submenu-${Math.random().toString(36).slice(2)}`, []);
12689
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dialogId });
12690
+ const dialogIsOpen = useDialogIsOpen(dialogId, dialogManager?.id);
12691
+ const { setPopperElement, styles } = useDialogAnchor({
12629
12692
  open: dialogIsOpen,
12630
12693
  placement,
12631
12694
  referenceElement: buttonRef.current
12632
12695
  });
12633
- const closeDialogLazily = (0, import_react22.useCallback)(() => {
12696
+ const closeDialogLazily = (0, import_react23.useCallback)(() => {
12634
12697
  if (dialogCloseTimeout.current) clearTimeout(dialogCloseTimeout.current);
12635
12698
  dialogCloseTimeout.current = setTimeout(() => {
12636
12699
  if (keepSubmenuOpen.current) return;
12637
12700
  dialog.close();
12638
12701
  }, 100);
12639
12702
  }, [dialog]);
12640
- const handleClose = (0, import_react22.useCallback)(
12703
+ const handleClose = (0, import_react23.useCallback)(
12641
12704
  (event) => {
12642
12705
  const parentButton = buttonRef.current;
12643
12706
  if (!dialogIsOpen || !parentButton) return;
@@ -12652,7 +12715,7 @@ var ButtonWithSubmenu = ({
12652
12715
  dialog.open();
12653
12716
  keepSubmenuOpen.current = true;
12654
12717
  };
12655
- (0, import_react22.useEffect)(() => {
12718
+ (0, import_react23.useEffect)(() => {
12656
12719
  const parentButton = buttonRef.current;
12657
12720
  if (!dialogIsOpen || !parentButton) return;
12658
12721
  const hideOnEscape = (event) => {
@@ -12665,7 +12728,7 @@ var ButtonWithSubmenu = ({
12665
12728
  document.removeEventListener("keyup", hideOnEscape, { capture: true });
12666
12729
  };
12667
12730
  }, [dialogIsOpen, handleClose]);
12668
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
12731
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
12669
12732
  "button",
12670
12733
  {
12671
12734
  "aria-selected": "false",
@@ -12691,10 +12754,9 @@ var ButtonWithSubmenu = ({
12691
12754
  ...buttonProps
12692
12755
  },
12693
12756
  children
12694
- ), dialogIsOpen && /* @__PURE__ */ import_react22.default.createElement(
12757
+ ), dialogIsOpen && /* @__PURE__ */ import_react23.default.createElement(
12695
12758
  "div",
12696
12759
  {
12697
- ...attributes.popper,
12698
12760
  onBlur: (event) => {
12699
12761
  const isBlurredDescendant = event.relatedTarget instanceof Node && dialogContainer?.contains(event.relatedTarget);
12700
12762
  if (isBlurredDescendant) return;
@@ -12715,26 +12777,26 @@ var ButtonWithSubmenu = ({
12715
12777
  setPopperElement(element2);
12716
12778
  setDialogContainer(element2);
12717
12779
  },
12718
- style: styles.popper,
12780
+ style: styles,
12719
12781
  tabIndex: -1,
12720
12782
  ...submenuContainerProps
12721
12783
  },
12722
- /* @__PURE__ */ import_react22.default.createElement(Submenu, null)
12784
+ /* @__PURE__ */ import_react23.default.createElement(Submenu, null)
12723
12785
  ));
12724
12786
  };
12725
12787
 
12726
12788
  // src/components/MessageActions/MessageActions.tsx
12727
12789
  var import_clsx6 = __toESM(require("clsx"));
12728
- var import_react25 = __toESM(require("react"));
12790
+ var import_react26 = __toESM(require("react"));
12729
12791
 
12730
12792
  // src/components/MessageActions/RemindMeSubmenu.tsx
12731
- var import_react23 = __toESM(require("react"));
12793
+ var import_react24 = __toESM(require("react"));
12732
12794
  var RemindMeActionButton = ({
12733
12795
  className,
12734
12796
  isMine
12735
12797
  }) => {
12736
12798
  const { t } = useTranslationContext();
12737
- return /* @__PURE__ */ import_react23.default.createElement(
12799
+ return /* @__PURE__ */ import_react24.default.createElement(
12738
12800
  ButtonWithSubmenu,
12739
12801
  {
12740
12802
  "aria-selected": "false",
@@ -12749,14 +12811,14 @@ var RemindMeSubmenu = () => {
12749
12811
  const { t } = useTranslationContext();
12750
12812
  const { client } = useChatContext();
12751
12813
  const { message } = useMessageContext();
12752
- return /* @__PURE__ */ import_react23.default.createElement(
12814
+ return /* @__PURE__ */ import_react24.default.createElement(
12753
12815
  "div",
12754
12816
  {
12755
12817
  "aria-label": t("aria/Remind Me Options"),
12756
12818
  className: "str-chat__message-actions-box__submenu",
12757
12819
  role: "listbox"
12758
12820
  },
12759
- client.reminders.scheduledOffsetsMs.map((offsetMs) => /* @__PURE__ */ import_react23.default.createElement(
12821
+ client.reminders.scheduledOffsetsMs.map((offsetMs) => /* @__PURE__ */ import_react24.default.createElement(
12760
12822
  "button",
12761
12823
  {
12762
12824
  className: "str-chat__message-actions-list-item-button",
@@ -12774,8 +12836,8 @@ var RemindMeSubmenu = () => {
12774
12836
  };
12775
12837
 
12776
12838
  // src/components/Message/icons.tsx
12777
- var import_react24 = __toESM(require("react"));
12778
- var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default.createElement(
12839
+ var import_react25 = __toESM(require("react"));
12840
+ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react25.default.createElement(
12779
12841
  "svg",
12780
12842
  {
12781
12843
  className,
@@ -12784,7 +12846,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default
12784
12846
  width: "11",
12785
12847
  xmlns: "http://www.w3.org/2000/svg"
12786
12848
  },
12787
- /* @__PURE__ */ import_react24.default.createElement(
12849
+ /* @__PURE__ */ import_react25.default.createElement(
12788
12850
  "path",
12789
12851
  {
12790
12852
  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",
@@ -12792,7 +12854,7 @@ var ActionsIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default
12792
12854
  }
12793
12855
  )
12794
12856
  );
12795
- var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.default.createElement(
12857
+ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react25.default.createElement(
12796
12858
  "svg",
12797
12859
  {
12798
12860
  className,
@@ -12801,9 +12863,9 @@ var ReactionIcon = ({ className = "" }) => /* @__PURE__ */ import_react24.defaul
12801
12863
  width: "12",
12802
12864
  xmlns: "http://www.w3.org/2000/svg"
12803
12865
  },
12804
- /* @__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" }))
12866
+ /* @__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" }))
12805
12867
  );
12806
- 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(
12868
+ 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(
12807
12869
  "path",
12808
12870
  {
12809
12871
  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",
@@ -12824,8 +12886,8 @@ var MessageActionsWrapper = (props) => {
12824
12886
  "data-testid": "message-actions",
12825
12887
  onClick: toggleOpen
12826
12888
  };
12827
- if (inline) return /* @__PURE__ */ import_react25.default.createElement("span", { ...wrapperProps }, children);
12828
- return /* @__PURE__ */ import_react25.default.createElement("div", { ...wrapperProps }, children);
12889
+ if (inline) return /* @__PURE__ */ import_react26.default.createElement("span", { ...wrapperProps }, children);
12890
+ return /* @__PURE__ */ import_react26.default.createElement("div", { ...wrapperProps }, children);
12829
12891
  };
12830
12892
 
12831
12893
  // src/components/Message/renderText/remarkPlugins/htmlToTextPlugin.ts
@@ -15947,20 +16009,20 @@ function remarkGfm(options) {
15947
16009
  }
15948
16010
 
15949
16011
  // src/components/Reactions/ReactionSelectorWithButton.tsx
15950
- var import_react30 = __toESM(require("react"));
16012
+ var import_react31 = __toESM(require("react"));
15951
16013
 
15952
16014
  // src/components/Reactions/ReactionSelector.tsx
15953
- var import_react29 = __toESM(require("react"));
16015
+ var import_react30 = __toESM(require("react"));
15954
16016
  var import_clsx7 = __toESM(require("clsx"));
15955
16017
 
15956
16018
  // src/components/Reactions/reactionOptions.tsx
15957
- var import_react28 = __toESM(require("react"));
16019
+ var import_react29 = __toESM(require("react"));
15958
16020
 
15959
16021
  // src/components/Reactions/StreamEmoji.tsx
15960
- var import_react27 = __toESM(require("react"));
16022
+ var import_react28 = __toESM(require("react"));
15961
16023
 
15962
16024
  // src/components/Reactions/SpriteImage.tsx
15963
- var import_react26 = __toESM(require("react"));
16025
+ var import_react27 = __toESM(require("react"));
15964
16026
 
15965
16027
  // src/components/Reactions/utils/utils.ts
15966
16028
  var isMutableRef = (ref) => {
@@ -15995,13 +16057,13 @@ var SpriteImage = ({
15995
16057
  style,
15996
16058
  width
15997
16059
  }) => {
15998
- const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react26.useState)([0, 0]);
15999
- (0, import_react26.useEffect)(() => {
16060
+ const [[spriteWidth, spriteHeight], setSpriteDimensions] = (0, import_react27.useState)([0, 0]);
16061
+ (0, import_react27.useEffect)(() => {
16000
16062
  getImageDimensions(spriteUrl).then(setSpriteDimensions).catch(console.error);
16001
16063
  }, [spriteUrl]);
16002
16064
  const [x, y] = position3;
16003
- if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, fallback);
16004
- return /* @__PURE__ */ import_react26.default.createElement(
16065
+ if (!spriteHeight || !spriteWidth) return /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, fallback);
16066
+ return /* @__PURE__ */ import_react27.default.createElement(
16005
16067
  "div",
16006
16068
  {
16007
16069
  "data-testid": "sprite-image",
@@ -16039,7 +16101,7 @@ var StreamEmoji = ({
16039
16101
  type
16040
16102
  }) => {
16041
16103
  const position3 = StreamSpriteEmojiPositions[type];
16042
- return /* @__PURE__ */ import_react27.default.createElement(
16104
+ return /* @__PURE__ */ import_react28.default.createElement(
16043
16105
  SpriteImage,
16044
16106
  {
16045
16107
  columns: 2,
@@ -16058,23 +16120,23 @@ var StreamEmoji = ({
16058
16120
  var defaultReactionOptions = [
16059
16121
  {
16060
16122
  type: "haha",
16061
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }),
16123
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F602}", type: "haha" }),
16062
16124
  name: "Joy"
16063
16125
  },
16064
16126
  {
16065
16127
  type: "like",
16066
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }),
16128
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F44D}", type: "like" }),
16067
16129
  name: "Thumbs up"
16068
16130
  },
16069
16131
  {
16070
16132
  type: "love",
16071
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }),
16133
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }),
16072
16134
  name: "Heart"
16073
16135
  },
16074
- { type: "sad", Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
16136
+ { type: "sad", Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F614}", type: "sad" }), name: "Sad" },
16075
16137
  {
16076
16138
  type: "wow",
16077
- Component: () => /* @__PURE__ */ import_react28.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }),
16139
+ Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u{1F632}", type: "wow" }),
16078
16140
  name: "Astonished"
16079
16141
  }
16080
16142
  ];
@@ -16108,23 +16170,23 @@ var UnMemoizedReactionSelector = (props) => {
16108
16170
  const latestReactions = propLatestReactions || message?.latest_reactions || [];
16109
16171
  const ownReactions = propOwnReactions || message?.own_reactions || [];
16110
16172
  const reactionGroups = propReactionGroups || message?.reaction_groups || {};
16111
- const [tooltipReactionType, setTooltipReactionType] = (0, import_react29.useState)(null);
16112
- const [tooltipPositions, setTooltipPositions] = (0, import_react29.useState)(null);
16113
- const rootRef = (0, import_react29.useRef)(null);
16114
- const targetRef = (0, import_react29.useRef)(null);
16115
- const tooltipRef = (0, import_react29.useRef)(null);
16116
- const showTooltip = (0, import_react29.useCallback)(
16173
+ const [tooltipReactionType, setTooltipReactionType] = (0, import_react30.useState)(null);
16174
+ const [tooltipPositions, setTooltipPositions] = (0, import_react30.useState)(null);
16175
+ const rootRef = (0, import_react30.useRef)(null);
16176
+ const targetRef = (0, import_react30.useRef)(null);
16177
+ const tooltipRef = (0, import_react30.useRef)(null);
16178
+ const showTooltip = (0, import_react30.useCallback)(
16117
16179
  (event, reactionType) => {
16118
16180
  targetRef.current = event.currentTarget;
16119
16181
  setTooltipReactionType(reactionType);
16120
16182
  },
16121
16183
  []
16122
16184
  );
16123
- const hideTooltip = (0, import_react29.useCallback)(() => {
16185
+ const hideTooltip = (0, import_react30.useCallback)(() => {
16124
16186
  setTooltipReactionType(null);
16125
16187
  setTooltipPositions(null);
16126
16188
  }, []);
16127
- (0, import_react29.useEffect)(() => {
16189
+ (0, import_react30.useEffect)(() => {
16128
16190
  if (!tooltipReactionType || !rootRef.current) return;
16129
16191
  const tooltip = tooltipRef.current?.getBoundingClientRect();
16130
16192
  const target = targetRef.current?.getBoundingClientRect();
@@ -16145,7 +16207,7 @@ var UnMemoizedReactionSelector = (props) => {
16145
16207
  }).filter(Boolean);
16146
16208
  const iHaveReactedWithReaction = (reactionType) => ownReactions.find((reaction) => reaction.type === reactionType);
16147
16209
  const getLatestUserForReactionType = (type) => latestReactions.find((reaction) => reaction.type === type && !!reaction.user)?.user || void 0;
16148
- return /* @__PURE__ */ import_react29.default.createElement(
16210
+ return /* @__PURE__ */ import_react30.default.createElement(
16149
16211
  "div",
16150
16212
  {
16151
16213
  className: (0, import_clsx7.default)(
@@ -16157,7 +16219,7 @@ var UnMemoizedReactionSelector = (props) => {
16157
16219
  "data-testid": "reaction-selector",
16158
16220
  ref: rootRef
16159
16221
  },
16160
- !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react29.default.createElement(
16222
+ !!tooltipReactionType && detailedView && /* @__PURE__ */ import_react30.default.createElement(
16161
16223
  "div",
16162
16224
  {
16163
16225
  className: "str-chat__reaction-selector-tooltip",
@@ -16167,13 +16229,13 @@ var UnMemoizedReactionSelector = (props) => {
16167
16229
  visibility: tooltipPositions ? "visible" : "hidden"
16168
16230
  }
16169
16231
  },
16170
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
16171
- 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 ? ", " : ""}`))
16232
+ /* @__PURE__ */ import_react30.default.createElement("div", { className: "arrow", style: { left: tooltipPositions?.arrow } }),
16233
+ 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 ? ", " : ""}`))
16172
16234
  ),
16173
- /* @__PURE__ */ import_react29.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
16235
+ /* @__PURE__ */ import_react30.default.createElement("ul", { className: "str-chat__message-reactions-list str-chat__message-reactions-options" }, reactionOptions.map(({ Component, name: reactionName, type: reactionType }) => {
16174
16236
  const latestUser = getLatestUserForReactionType(reactionType);
16175
16237
  const count = reactionGroups[reactionType]?.count ?? 0;
16176
- return /* @__PURE__ */ import_react29.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react29.default.createElement(
16238
+ return /* @__PURE__ */ import_react30.default.createElement("li", { key: reactionType }, /* @__PURE__ */ import_react30.default.createElement(
16177
16239
  "button",
16178
16240
  {
16179
16241
  "aria-label": `Select Reaction: ${reactionName || reactionType}`,
@@ -16192,7 +16254,7 @@ var UnMemoizedReactionSelector = (props) => {
16192
16254
  }
16193
16255
  }
16194
16256
  },
16195
- !!count && detailedView && /* @__PURE__ */ import_react29.default.createElement(
16257
+ !!count && detailedView && /* @__PURE__ */ import_react30.default.createElement(
16196
16258
  "div",
16197
16259
  {
16198
16260
  className: "latest-user str-chat__message-reactions-last-user",
@@ -16200,7 +16262,7 @@ var UnMemoizedReactionSelector = (props) => {
16200
16262
  onMouseEnter: (e) => showTooltip(e, reactionType),
16201
16263
  onMouseLeave: hideTooltip
16202
16264
  },
16203
- latestUser ? /* @__PURE__ */ import_react29.default.createElement(
16265
+ latestUser ? /* @__PURE__ */ import_react30.default.createElement(
16204
16266
  Avatar2,
16205
16267
  {
16206
16268
  image: latestUser.image,
@@ -16208,15 +16270,15 @@ var UnMemoizedReactionSelector = (props) => {
16208
16270
  size: 20,
16209
16271
  user: latestUser
16210
16272
  }
16211
- ) : /* @__PURE__ */ import_react29.default.createElement("div", { className: "latest-user-not-found" })
16273
+ ) : /* @__PURE__ */ import_react30.default.createElement("div", { className: "latest-user-not-found" })
16212
16274
  ),
16213
- /* @__PURE__ */ import_react29.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react29.default.createElement(Component, null)),
16214
- Boolean(count) && detailedView && /* @__PURE__ */ import_react29.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
16275
+ /* @__PURE__ */ import_react30.default.createElement("span", { className: "str-chat__message-reaction-emoji" }, /* @__PURE__ */ import_react30.default.createElement(Component, null)),
16276
+ Boolean(count) && detailedView && /* @__PURE__ */ import_react30.default.createElement("span", { className: "str-chat__message-reactions-list-item__count" }, count || "")
16215
16277
  ));
16216
16278
  }))
16217
16279
  );
16218
16280
  };
16219
- var ReactionSelector = import_react29.default.memo(
16281
+ var ReactionSelector = import_react30.default.memo(
16220
16282
  UnMemoizedReactionSelector
16221
16283
  );
16222
16284
 
@@ -16227,21 +16289,22 @@ var ReactionSelectorWithButton = ({
16227
16289
  const { t } = useTranslationContext("ReactionSelectorWithButton");
16228
16290
  const { isMyMessage, message, threadList } = useMessageContext("MessageOptions");
16229
16291
  const { ReactionSelector: ReactionSelector2 = ReactionSelector } = useComponentContext("MessageOptions");
16230
- const buttonRef = (0, import_react30.useRef)(null);
16292
+ const buttonRef = (0, import_react31.useRef)(null);
16231
16293
  const dialogIdNamespace = threadList ? "-thread-" : "";
16232
16294
  const dialogId = `reaction-selector${dialogIdNamespace}--${message.id}`;
16233
- const dialog = useDialog({ id: dialogId });
16234
- const dialogIsOpen = useDialogIsOpen(dialogId);
16235
- return /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, /* @__PURE__ */ import_react30.default.createElement(
16295
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dialogId });
16296
+ const dialogIsOpen = useDialogIsOpen(dialogId, dialogManager?.id);
16297
+ return /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(
16236
16298
  DialogAnchor,
16237
16299
  {
16300
+ dialogManagerId: dialogManager?.id,
16238
16301
  id: dialogId,
16239
16302
  placement: isMyMessage() ? "top-end" : "top-start",
16240
16303
  referenceElement: buttonRef.current,
16241
16304
  trapFocus: true
16242
16305
  },
16243
- /* @__PURE__ */ import_react30.default.createElement(ReactionSelector2, null)
16244
- ), /* @__PURE__ */ import_react30.default.createElement(
16306
+ /* @__PURE__ */ import_react31.default.createElement(ReactionSelector2, null)
16307
+ ), /* @__PURE__ */ import_react31.default.createElement(
16245
16308
  "button",
16246
16309
  {
16247
16310
  "aria-expanded": dialogIsOpen,
@@ -16251,14 +16314,14 @@ var ReactionSelectorWithButton = ({
16251
16314
  onClick: () => dialog?.toggle(),
16252
16315
  ref: buttonRef
16253
16316
  },
16254
- /* @__PURE__ */ import_react30.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
16317
+ /* @__PURE__ */ import_react31.default.createElement(ReactionIcon2, { className: "str-chat__message-action-icon" })
16255
16318
  ));
16256
16319
  };
16257
16320
 
16258
16321
  // src/components/InfiniteScrollPaginator/InfiniteScrollPaginator.tsx
16259
16322
  var import_clsx8 = __toESM(require("clsx"));
16260
16323
  var import_lodash = __toESM(require("lodash.debounce"));
16261
- var import_react31 = __toESM(require("react"));
16324
+ var import_react32 = __toESM(require("react"));
16262
16325
  var mousewheelListener = (event) => {
16263
16326
  if (event instanceof WheelEvent && event.deltaY === 1) {
16264
16327
  event.preventDefault();
@@ -16276,9 +16339,9 @@ var InfiniteScrollPaginator = (props) => {
16276
16339
  useCapture = false,
16277
16340
  ...componentProps
16278
16341
  } = props;
16279
- const rootRef = (0, import_react31.useRef)(null);
16280
- const childRef = (0, import_react31.useRef)(null);
16281
- const scrollListener = (0, import_react31.useMemo)(
16342
+ const rootRef = (0, import_react32.useRef)(null);
16343
+ const childRef = (0, import_react32.useRef)(null);
16344
+ const scrollListener = (0, import_react32.useMemo)(
16282
16345
  () => (0, import_lodash.default)(() => {
16283
16346
  const root4 = rootRef.current;
16284
16347
  const child = childRef.current;
@@ -16305,7 +16368,7 @@ var InfiniteScrollPaginator = (props) => {
16305
16368
  threshold
16306
16369
  ]
16307
16370
  );
16308
- (0, import_react31.useEffect)(() => {
16371
+ (0, import_react32.useEffect)(() => {
16309
16372
  const scrollElement = rootRef.current;
16310
16373
  if (!scrollElement) return;
16311
16374
  scrollElement.addEventListener("scroll", scrollListener, useCapture);
@@ -16313,7 +16376,7 @@ var InfiniteScrollPaginator = (props) => {
16313
16376
  scrollElement.removeEventListener("scroll", scrollListener, useCapture);
16314
16377
  };
16315
16378
  }, [scrollListener, useCapture]);
16316
- (0, import_react31.useEffect)(() => {
16379
+ (0, import_react32.useEffect)(() => {
16317
16380
  const root4 = rootRef.current;
16318
16381
  if (!root4 || typeof ResizeObserver === "undefined" || !scrollListener) return;
16319
16382
  const observer = new ResizeObserver(scrollListener);
@@ -16322,7 +16385,7 @@ var InfiniteScrollPaginator = (props) => {
16322
16385
  observer.disconnect();
16323
16386
  };
16324
16387
  }, [scrollListener]);
16325
- (0, import_react31.useEffect)(() => {
16388
+ (0, import_react32.useEffect)(() => {
16326
16389
  const root4 = rootRef.current;
16327
16390
  if (root4) {
16328
16391
  root4.addEventListener("wheel", mousewheelListener, { passive: false });
@@ -16333,14 +16396,14 @@ var InfiniteScrollPaginator = (props) => {
16333
16396
  }
16334
16397
  };
16335
16398
  }, [useCapture]);
16336
- return /* @__PURE__ */ import_react31.default.createElement(
16399
+ return /* @__PURE__ */ import_react32.default.createElement(
16337
16400
  "div",
16338
16401
  {
16339
16402
  ...componentProps,
16340
16403
  className: (0, import_clsx8.default)("str-chat__infinite-scroll-paginator", className),
16341
16404
  ref: rootRef
16342
16405
  },
16343
- /* @__PURE__ */ import_react31.default.createElement("div", { className: "str-chat__infinite-scroll-paginator__content", ref: childRef }, children)
16406
+ /* @__PURE__ */ import_react32.default.createElement("div", { className: "str-chat__infinite-scroll-paginator__content", ref: childRef }, children)
16344
16407
  );
16345
16408
  };
16346
16409
 
@@ -16351,7 +16414,7 @@ var remarkPlugins = [
16351
16414
  plusPlusToEmphasis,
16352
16415
  imageToLink
16353
16416
  ];
16354
- var renderPreviewText = (text8) => /* @__PURE__ */ import_react32.default.createElement(Markdown, { remarkPlugins, skipHtml: true }, text8);
16417
+ var renderPreviewText = (text8) => /* @__PURE__ */ import_react33.default.createElement(Markdown, { remarkPlugins, skipHtml: true }, text8);
16355
16418
  var getLatestPollVote = (latestVotesByOption) => {
16356
16419
  let latestVote;
16357
16420
  for (const optionVotes of Object.values(latestVotesByOption)) {
@@ -16433,14 +16496,14 @@ var getDisplayImage = (channel, currentUser) => getChannelDisplayInfo("image", c
16433
16496
  var useChannelPreviewInfo = (props) => {
16434
16497
  const { channel, overrideImage, overrideTitle } = props;
16435
16498
  const { client } = useChatContext("useChannelPreviewInfo");
16436
- const [displayTitle, setDisplayTitle] = (0, import_react33.useState)(
16499
+ const [displayTitle, setDisplayTitle] = (0, import_react34.useState)(
16437
16500
  () => overrideTitle || getDisplayTitle(channel, client.user)
16438
16501
  );
16439
- const [displayImage, setDisplayImage] = (0, import_react33.useState)(
16502
+ const [displayImage, setDisplayImage] = (0, import_react34.useState)(
16440
16503
  () => overrideImage || getDisplayImage(channel, client.user)
16441
16504
  );
16442
- const [groupChannelDisplayInfo, setGroupDisplayChannelInfo] = (0, import_react33.useState)(() => getGroupChannelDisplayInfo(channel));
16443
- (0, import_react33.useEffect)(() => {
16505
+ const [groupChannelDisplayInfo, setGroupDisplayChannelInfo] = (0, import_react34.useState)(() => getGroupChannelDisplayInfo(channel));
16506
+ (0, import_react34.useEffect)(() => {
16444
16507
  if (overrideTitle && overrideImage) return;
16445
16508
  const updateInfo = () => {
16446
16509
  if (!overrideTitle) setDisplayTitle(getDisplayTitle(channel, client.user));
@@ -16463,18 +16526,18 @@ var useChannelPreviewInfo = (props) => {
16463
16526
  };
16464
16527
 
16465
16528
  // src/components/ChannelPreview/hooks/useMessageDeliveryStatus.ts
16466
- var import_react34 = require("react");
16529
+ var import_react35 = require("react");
16467
16530
  var useMessageDeliveryStatus = ({
16468
16531
  channel,
16469
16532
  lastMessage
16470
16533
  }) => {
16471
16534
  const { client } = useChatContext();
16472
- const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react34.useState)();
16473
- const isOwnMessage = (0, import_react34.useCallback)(
16535
+ const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react35.useState)();
16536
+ const isOwnMessage = (0, import_react35.useCallback)(
16474
16537
  (message) => client.user && message && message.user?.id === client.user.id,
16475
16538
  [client]
16476
16539
  );
16477
- (0, import_react34.useEffect)(() => {
16540
+ (0, import_react35.useEffect)(() => {
16478
16541
  if (!lastMessage) {
16479
16542
  setMessageDeliveryStatus(void 0);
16480
16543
  }
@@ -16484,11 +16547,13 @@ var useMessageDeliveryStatus = ({
16484
16547
  msgId: lastMessage.id,
16485
16548
  timestampMs: lastMessage.created_at.getTime()
16486
16549
  };
16550
+ const readersForMessage = channel.messageReceiptsTracker.readersForMessage(msgRef);
16551
+ const deliveredForMessage = channel.messageReceiptsTracker.deliveredForMessage(msgRef);
16487
16552
  setMessageDeliveryStatus(
16488
- channel.messageReceiptsTracker.readersForMessage(msgRef).length > 0 ? "read" /* READ */ : channel.messageReceiptsTracker.deliveredForMessage(msgRef).length > 0 ? "delivered" /* DELIVERED */ : "sent" /* SENT */
16553
+ 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 */
16489
16554
  );
16490
- }, [channel, isOwnMessage, lastMessage]);
16491
- (0, import_react34.useEffect)(() => {
16555
+ }, [channel, client, isOwnMessage, lastMessage]);
16556
+ (0, import_react35.useEffect)(() => {
16492
16557
  const handleMessageNew = (event) => {
16493
16558
  if (!isOwnMessage(event.message)) {
16494
16559
  return setMessageDeliveryStatus(void 0);
@@ -16500,7 +16565,7 @@ var useMessageDeliveryStatus = ({
16500
16565
  channel.off("message.new", handleMessageNew);
16501
16566
  };
16502
16567
  }, [channel, isOwnMessage]);
16503
- (0, import_react34.useEffect)(() => {
16568
+ (0, import_react35.useEffect)(() => {
16504
16569
  if (!isOwnMessage(lastMessage)) return;
16505
16570
  const handleMessageDelivered = (event) => {
16506
16571
  if (event.user?.id !== client.user?.id && lastMessage && lastMessage.id === event.last_delivered_message_id)
@@ -16541,20 +16606,20 @@ var ChannelPreview = (props) => {
16541
16606
  const { displayImage, displayTitle, groupChannelDisplayInfo } = useChannelPreviewInfo({
16542
16607
  channel
16543
16608
  });
16544
- const [lastMessage, setLastMessage] = (0, import_react35.useState)(
16609
+ const [lastMessage, setLastMessage] = (0, import_react36.useState)(
16545
16610
  channel.state.messages[channel.state.messages.length - 1]
16546
16611
  );
16547
- const [latestMessagePreview, setLatestMessagePreview] = (0, import_react35.useState)(
16612
+ const [latestMessagePreview, setLatestMessagePreview] = (0, import_react36.useState)(
16548
16613
  () => getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
16549
16614
  );
16550
- const [unread, setUnread] = (0, import_react35.useState)(0);
16615
+ const [unread, setUnread] = (0, import_react36.useState)(0);
16551
16616
  const { messageDeliveryStatus } = useMessageDeliveryStatus({
16552
16617
  channel,
16553
16618
  lastMessage
16554
16619
  });
16555
16620
  const isActive = typeof active === "undefined" ? activeChannel?.cid === channel.cid : active;
16556
16621
  const { muted } = useIsChannelMuted(channel);
16557
- (0, import_react35.useEffect)(() => {
16622
+ (0, import_react36.useEffect)(() => {
16558
16623
  const handleEvent = (event) => {
16559
16624
  if (!event.cid) return setUnread(0);
16560
16625
  if (channel.cid === event.cid) setUnread(0);
@@ -16562,7 +16627,7 @@ var ChannelPreview = (props) => {
16562
16627
  client.on("notification.mark_read", handleEvent);
16563
16628
  return () => client.off("notification.mark_read", handleEvent);
16564
16629
  }, [channel, client]);
16565
- (0, import_react35.useEffect)(() => {
16630
+ (0, import_react36.useEffect)(() => {
16566
16631
  const handleEvent = (event) => {
16567
16632
  if (channel.cid !== event.cid) return;
16568
16633
  if (event.user?.id !== client.user?.id) return;
@@ -16573,7 +16638,7 @@ var ChannelPreview = (props) => {
16573
16638
  channel.off("notification.mark_unread", handleEvent);
16574
16639
  };
16575
16640
  }, [channel, client]);
16576
- const refreshUnreadCount = (0, import_react35.useMemo)(
16641
+ const refreshUnreadCount = (0, import_react36.useMemo)(
16577
16642
  () => (0, import_lodash2.default)(() => {
16578
16643
  if (muted) {
16579
16644
  setUnread(0);
@@ -16583,7 +16648,7 @@ var ChannelPreview = (props) => {
16583
16648
  }, 400),
16584
16649
  [channel, muted]
16585
16650
  );
16586
- (0, import_react35.useEffect)(() => {
16651
+ (0, import_react36.useEffect)(() => {
16587
16652
  refreshUnreadCount();
16588
16653
  setLatestMessagePreview(
16589
16654
  getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
@@ -16624,7 +16689,7 @@ var ChannelPreview = (props) => {
16624
16689
  isMessageAIGenerated
16625
16690
  ]);
16626
16691
  if (!Preview) return null;
16627
- return /* @__PURE__ */ import_react35.default.createElement(
16692
+ return /* @__PURE__ */ import_react36.default.createElement(
16628
16693
  Preview,
16629
16694
  {
16630
16695
  ...props,
@@ -16643,9 +16708,9 @@ var ChannelPreview = (props) => {
16643
16708
  };
16644
16709
 
16645
16710
  // src/components/Thread/LegacyThreadContext.ts
16646
- var import_react36 = __toESM(require("react"));
16647
- var LegacyThreadContext = import_react36.default.createContext({ legacyThread: void 0 });
16648
- var useLegacyThreadContext = () => (0, import_react36.useContext)(LegacyThreadContext);
16711
+ var import_react37 = __toESM(require("react"));
16712
+ var LegacyThreadContext = import_react37.default.createContext({ legacyThread: void 0 });
16713
+ var useLegacyThreadContext = () => (0, import_react37.useContext)(LegacyThreadContext);
16649
16714
 
16650
16715
  // src/components/MessageInput/hooks/useMessageComposer.ts
16651
16716
  var queueCache = new import_stream_chat2.FixedSizeQueueCache(64);
@@ -16655,15 +16720,15 @@ var useMessageComposer = () => {
16655
16720
  const { editing, message: editedMessage } = useMessageContext();
16656
16721
  const { legacyThread: parentMessage } = useLegacyThreadContext();
16657
16722
  const threadInstance = useThreadContext();
16658
- const cachedEditedMessage = (0, import_react37.useMemo)(() => {
16723
+ const cachedEditedMessage = (0, import_react38.useMemo)(() => {
16659
16724
  if (!editedMessage) return void 0;
16660
16725
  return editedMessage;
16661
16726
  }, [editedMessage?.id]);
16662
- const cachedParentMessage = (0, import_react37.useMemo)(() => {
16727
+ const cachedParentMessage = (0, import_react38.useMemo)(() => {
16663
16728
  if (!parentMessage) return void 0;
16664
16729
  return parentMessage;
16665
16730
  }, [parentMessage?.id]);
16666
- const messageComposer = (0, import_react37.useMemo)(() => {
16731
+ const messageComposer = (0, import_react38.useMemo)(() => {
16667
16732
  if (editing && cachedEditedMessage) {
16668
16733
  const tag = import_stream_chat2.MessageComposer.constructTag(cachedEditedMessage);
16669
16734
  const cachedComposer = queueCache.get(tag);
@@ -16706,7 +16771,7 @@ var useMessageComposer = () => {
16706
16771
  ) && !queueCache.peek(messageComposer.tag)) {
16707
16772
  queueCache.add(messageComposer.tag, messageComposer);
16708
16773
  }
16709
- (0, import_react37.useEffect)(() => {
16774
+ (0, import_react38.useEffect)(() => {
16710
16775
  const unsubscribe = messageComposer.registerSubscriptions();
16711
16776
  return () => {
16712
16777
  unsubscribe();
@@ -16716,17 +16781,17 @@ var useMessageComposer = () => {
16716
16781
  };
16717
16782
 
16718
16783
  // src/experimental/Search/hooks/useSearchQueriesInProgress.ts
16719
- var import_react38 = require("react");
16784
+ var import_react39 = require("react");
16720
16785
  var searchControllerStateSelector = (value) => ({
16721
16786
  sources: value.sources
16722
16787
  });
16723
16788
  var useSearchQueriesInProgress = (searchController) => {
16724
- const [queriesInProgress, setQueriesInProgress] = (0, import_react38.useState)([]);
16789
+ const [queriesInProgress, setQueriesInProgress] = (0, import_react39.useState)([]);
16725
16790
  const { sources } = useStateStore(
16726
16791
  searchController.state,
16727
16792
  searchControllerStateSelector
16728
16793
  );
16729
- (0, import_react38.useEffect)(() => {
16794
+ (0, import_react39.useEffect)(() => {
16730
16795
  const subscriptions = sources.map(
16731
16796
  (source) => source.state.subscribeWithSelector(
16732
16797
  (value) => ({ isLoading: value.isLoading }),
@@ -16746,7 +16811,7 @@ var useSearchQueriesInProgress = (searchController) => {
16746
16811
  };
16747
16812
 
16748
16813
  // src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
16749
- var import_react39 = require("react");
16814
+ var import_react40 = require("react");
16750
16815
  var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
16751
16816
  const { initialMessage: isInitialMessage, message } = useMessageContext();
16752
16817
  const {
@@ -16760,7 +16825,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
16760
16825
  canReply
16761
16826
  } = useUserRole(message);
16762
16827
  const isMessageThreadReply = typeof message.parent_id === "string";
16763
- return (0, import_react39.useMemo)(() => {
16828
+ return (0, import_react40.useMemo)(() => {
16764
16829
  if (disable2) return messageActionSet;
16765
16830
  if (isInitialMessage || // not sure whether this thing even works anymore
16766
16831
  !message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
@@ -16791,8 +16856,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
16791
16856
  };
16792
16857
 
16793
16858
  // src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
16794
- var import_react40 = require("react");
16795
- var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)(() => {
16859
+ var import_react41 = require("react");
16860
+ var useSplitMessageActionSet = (messageActionSet) => (0, import_react41.useMemo)(() => {
16796
16861
  const quickActionSet = [];
16797
16862
  const dropdownActionSet = [];
16798
16863
  for (const action of messageActionSet) {
@@ -16803,7 +16868,7 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)
16803
16868
  }, [messageActionSet]);
16804
16869
 
16805
16870
  // src/experimental/MessageActions/defaults.tsx
16806
- var import_react41 = __toESM(require("react"));
16871
+ var import_react42 = __toESM(require("react"));
16807
16872
  var msgActionsBoxButtonClassName = "str-chat__message-actions-list-item-button";
16808
16873
  var DefaultDropdownActionButton = ({
16809
16874
  "aria-selected": ariaSelected = "false",
@@ -16811,7 +16876,7 @@ var DefaultDropdownActionButton = ({
16811
16876
  className = msgActionsBoxButtonClassName,
16812
16877
  role = "option",
16813
16878
  ...rest
16814
- }) => /* @__PURE__ */ import_react41.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
16879
+ }) => /* @__PURE__ */ import_react42.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
16815
16880
  var DefaultMessageActionComponents = {
16816
16881
  dropdown: {
16817
16882
  Quote() {
@@ -16826,42 +16891,42 @@ var DefaultMessageActionComponents = {
16826
16891
  textarea.focus();
16827
16892
  }
16828
16893
  };
16829
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
16894
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
16830
16895
  },
16831
16896
  Pin() {
16832
16897
  const { handlePin, message } = useMessageContext();
16833
16898
  const { t } = useTranslationContext();
16834
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
16899
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
16835
16900
  },
16836
16901
  MarkUnread() {
16837
16902
  const { handleMarkUnread } = useMessageContext();
16838
16903
  const { t } = useTranslationContext();
16839
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
16904
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
16840
16905
  },
16841
16906
  Flag() {
16842
16907
  const { handleFlag } = useMessageContext();
16843
16908
  const { t } = useTranslationContext();
16844
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
16909
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
16845
16910
  },
16846
16911
  Mute() {
16847
16912
  const { handleMute, message } = useMessageContext();
16848
16913
  const { mutes } = useChatContext();
16849
16914
  const { t } = useTranslationContext();
16850
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
16915
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
16851
16916
  },
16852
16917
  Edit() {
16853
16918
  const { handleEdit } = useMessageContext();
16854
16919
  const { t } = useTranslationContext();
16855
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
16920
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
16856
16921
  },
16857
16922
  Delete() {
16858
16923
  const { handleDelete: handleDelete2 } = useMessageContext();
16859
16924
  const { t } = useTranslationContext();
16860
- return /* @__PURE__ */ import_react41.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
16925
+ return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
16861
16926
  },
16862
16927
  RemindMe() {
16863
16928
  const { isMyMessage } = useMessageContext();
16864
- return /* @__PURE__ */ import_react41.default.createElement(
16929
+ return /* @__PURE__ */ import_react42.default.createElement(
16865
16930
  RemindMeActionButton,
16866
16931
  {
16867
16932
  className: msgActionsBoxButtonClassName,
@@ -16874,7 +16939,7 @@ var DefaultMessageActionComponents = {
16874
16939
  const { message } = useMessageContext();
16875
16940
  const { t } = useTranslationContext();
16876
16941
  const reminder = useMessageReminder(message.id);
16877
- return /* @__PURE__ */ import_react41.default.createElement(
16942
+ return /* @__PURE__ */ import_react42.default.createElement(
16878
16943
  DefaultDropdownActionButton,
16879
16944
  {
16880
16945
  onClick: () => reminder ? client.reminders.deleteReminder(reminder.id) : client.reminders.createReminder({ messageId: message.id })
@@ -16885,12 +16950,12 @@ var DefaultMessageActionComponents = {
16885
16950
  },
16886
16951
  quick: {
16887
16952
  React() {
16888
- return /* @__PURE__ */ import_react41.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
16953
+ return /* @__PURE__ */ import_react42.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
16889
16954
  },
16890
16955
  Reply() {
16891
16956
  const { handleOpenThread } = useMessageContext();
16892
16957
  const { t } = useTranslationContext();
16893
- return /* @__PURE__ */ import_react41.default.createElement(
16958
+ return /* @__PURE__ */ import_react42.default.createElement(
16894
16959
  "button",
16895
16960
  {
16896
16961
  "aria-label": t("aria/Open Thread"),
@@ -16898,7 +16963,7 @@ var DefaultMessageActionComponents = {
16898
16963
  "data-testid": "thread-action",
16899
16964
  onClick: handleOpenThread
16900
16965
  },
16901
- /* @__PURE__ */ import_react41.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
16966
+ /* @__PURE__ */ import_react42.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
16902
16967
  );
16903
16968
  }
16904
16969
  }
@@ -16970,7 +17035,7 @@ var MessageActions = ({
16970
17035
  const { theme } = useChatContext();
16971
17036
  const { isMyMessage, message } = useMessageContext();
16972
17037
  const { t } = useTranslationContext();
16973
- const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react42.useState)(null);
17038
+ const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react43.useState)(null);
16974
17039
  const filteredMessageActionSet = useBaseMessageActionSetFilter(
16975
17040
  messageActionSet,
16976
17041
  disableBaseMessageActionSetFilter
@@ -16980,20 +17045,23 @@ var MessageActions = ({
16980
17045
  );
16981
17046
  const dropdownDialogId = `message-actions--${message.id}`;
16982
17047
  const reactionSelectorDialogId = `reaction-selector--${message.id}`;
16983
- const dialog = useDialog({ id: dropdownDialogId });
16984
- const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId);
16985
- const reactionSelectorDialogIsOpen = useDialogIsOpen(reactionSelectorDialogId);
17048
+ const { dialog, dialogManager } = useDialogOnNearestManager({ id: dropdownDialogId });
17049
+ const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId, dialogManager?.id);
17050
+ const reactionSelectorDialogIsOpen = useDialogIsOpen(
17051
+ reactionSelectorDialogId,
17052
+ dialogManager?.id
17053
+ );
16986
17054
  if (dropdownActionSet.length + quickActionSet.length === 0) {
16987
17055
  return null;
16988
17056
  }
16989
- return /* @__PURE__ */ import_react42.default.createElement(
17057
+ return /* @__PURE__ */ import_react43.default.createElement(
16990
17058
  "div",
16991
17059
  {
16992
17060
  className: (0, import_clsx9.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
16993
17061
  "str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
16994
17062
  })
16995
17063
  },
16996
- dropdownActionSet.length > 0 && /* @__PURE__ */ import_react42.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react42.default.createElement(
17064
+ dropdownActionSet.length > 0 && /* @__PURE__ */ import_react43.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react43.default.createElement(
16997
17065
  "button",
16998
17066
  {
16999
17067
  "aria-expanded": dropdownDialogIsOpen,
@@ -17003,31 +17071,32 @@ var MessageActions = ({
17003
17071
  "data-testid": "message-actions-toggle-button",
17004
17072
  ref: setActionsBoxButtonElement
17005
17073
  },
17006
- /* @__PURE__ */ import_react42.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
17007
- ), /* @__PURE__ */ import_react42.default.createElement(
17074
+ /* @__PURE__ */ import_react43.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
17075
+ ), /* @__PURE__ */ import_react43.default.createElement(
17008
17076
  DialogAnchor,
17009
17077
  {
17078
+ dialogManagerId: dialogManager?.id,
17010
17079
  id: dropdownDialogId,
17011
17080
  placement: isMyMessage() ? "top-end" : "top-start",
17012
17081
  referenceElement: actionsBoxButtonElement,
17013
17082
  tabIndex: -1,
17014
17083
  trapFocus: true
17015
17084
  },
17016
- /* @__PURE__ */ import_react42.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react42.default.createElement(DropdownActionComponent, { key: type })))
17085
+ /* @__PURE__ */ import_react43.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(DropdownActionComponent, { key: type })))
17017
17086
  )),
17018
- quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react42.default.createElement(QuickActionComponent, { key: type }))
17087
+ quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(QuickActionComponent, { key: type }))
17019
17088
  );
17020
17089
  };
17021
17090
  var DropdownBox = ({ children, open }) => {
17022
17091
  const { t } = useTranslationContext();
17023
- return /* @__PURE__ */ import_react42.default.createElement(
17092
+ return /* @__PURE__ */ import_react43.default.createElement(
17024
17093
  "div",
17025
17094
  {
17026
17095
  className: (0, import_clsx9.default)("str-chat__message-actions-box", {
17027
17096
  "str-chat__message-actions-box--open": open
17028
17097
  })
17029
17098
  },
17030
- /* @__PURE__ */ import_react42.default.createElement(
17099
+ /* @__PURE__ */ import_react43.default.createElement(
17031
17100
  "div",
17032
17101
  {
17033
17102
  "aria-label": t("aria/Message Options"),
@@ -17041,21 +17110,21 @@ var DropdownBox = ({ children, open }) => {
17041
17110
 
17042
17111
  // src/experimental/Search/Search.tsx
17043
17112
  var import_clsx12 = __toESM(require("clsx"));
17044
- var import_react55 = __toESM(require("react"));
17113
+ var import_react56 = __toESM(require("react"));
17045
17114
 
17046
17115
  // src/experimental/Search/SearchBar/SearchBar.tsx
17047
17116
  var import_clsx10 = __toESM(require("clsx"));
17048
- var import_react44 = __toESM(require("react"));
17117
+ var import_react45 = __toESM(require("react"));
17049
17118
 
17050
17119
  // src/experimental/Search/SearchContext.tsx
17051
- var import_react43 = __toESM(require("react"));
17052
- var SearchContext = (0, import_react43.createContext)(void 0);
17120
+ var import_react44 = __toESM(require("react"));
17121
+ var SearchContext = (0, import_react44.createContext)(void 0);
17053
17122
  var SearchContextProvider = ({
17054
17123
  children,
17055
17124
  value
17056
- }) => /* @__PURE__ */ import_react43.default.createElement(SearchContext.Provider, { value }, children);
17125
+ }) => /* @__PURE__ */ import_react44.default.createElement(SearchContext.Provider, { value }, children);
17057
17126
  var useSearchContext = () => {
17058
- const contextValue = (0, import_react43.useContext)(SearchContext);
17127
+ const contextValue = (0, import_react44.useContext)(SearchContext);
17059
17128
  return contextValue;
17060
17129
  };
17061
17130
 
@@ -17068,12 +17137,12 @@ var SearchBar = () => {
17068
17137
  const { t } = useTranslationContext();
17069
17138
  const { disabled, exitSearchOnInputBlur, placeholder, searchController } = useSearchContext();
17070
17139
  const queriesInProgress = useSearchQueriesInProgress(searchController);
17071
- const [input, setInput] = (0, import_react44.useState)(null);
17140
+ const [input, setInput] = (0, import_react45.useState)(null);
17072
17141
  const { isActive, searchQuery } = useStateStore(
17073
17142
  searchController.state,
17074
17143
  searchControllerStateSelector2
17075
17144
  );
17076
- (0, import_react44.useEffect)(() => {
17145
+ (0, import_react45.useEffect)(() => {
17077
17146
  if (!input) return;
17078
17147
  const handleKeyDown = (event) => {
17079
17148
  if (event.key === "Escape") {
@@ -17086,15 +17155,15 @@ var SearchBar = () => {
17086
17155
  document.removeEventListener("keydown", handleKeyDown);
17087
17156
  };
17088
17157
  }, [searchController, input]);
17089
- return /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react44.default.createElement(
17158
+ return /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react45.default.createElement(
17090
17159
  "div",
17091
17160
  {
17092
17161
  className: (0, import_clsx10.default)("str-chat__search-input--wrapper", {
17093
17162
  "str-chat__search-input--wrapper-active": isActive
17094
17163
  })
17095
17164
  },
17096
- /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-input--icon" }),
17097
- /* @__PURE__ */ import_react44.default.createElement(
17165
+ /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--icon" }),
17166
+ /* @__PURE__ */ import_react45.default.createElement(
17098
17167
  "input",
17099
17168
  {
17100
17169
  className: "str-chat__search-input",
@@ -17117,7 +17186,7 @@ var SearchBar = () => {
17117
17186
  value: searchQuery
17118
17187
  }
17119
17188
  ),
17120
- searchQuery && /* @__PURE__ */ import_react44.default.createElement(
17189
+ searchQuery && /* @__PURE__ */ import_react45.default.createElement(
17121
17190
  "button",
17122
17191
  {
17123
17192
  className: "str-chat__search-input--clear-button",
@@ -17128,9 +17197,9 @@ var SearchBar = () => {
17128
17197
  input?.focus();
17129
17198
  }
17130
17199
  },
17131
- /* @__PURE__ */ import_react44.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
17200
+ /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
17132
17201
  )
17133
- ), isActive ? /* @__PURE__ */ import_react44.default.createElement(
17202
+ ), isActive ? /* @__PURE__ */ import_react45.default.createElement(
17134
17203
  "button",
17135
17204
  {
17136
17205
  className: (0, import_clsx10.default)(
@@ -17147,25 +17216,25 @@ var SearchBar = () => {
17147
17216
  };
17148
17217
 
17149
17218
  // src/experimental/Search/SearchResults/SearchResults.tsx
17150
- var import_react54 = __toESM(require("react"));
17219
+ var import_react55 = __toESM(require("react"));
17151
17220
 
17152
17221
  // src/experimental/Search/SearchResults/SearchSourceResults.tsx
17153
- var import_react51 = __toESM(require("react"));
17222
+ var import_react52 = __toESM(require("react"));
17154
17223
 
17155
17224
  // src/experimental/Search/SearchResults/SearchSourceResultList.tsx
17156
- var import_react49 = __toESM(require("react"));
17225
+ var import_react50 = __toESM(require("react"));
17157
17226
 
17158
17227
  // src/experimental/Search/SearchResults/SearchResultItem.tsx
17159
- var import_react45 = __toESM(require("react"));
17228
+ var import_react46 = __toESM(require("react"));
17160
17229
  var import_lodash3 = __toESM(require("lodash.uniqby"));
17161
17230
  var ChannelSearchResultItem = ({ item }) => {
17162
17231
  const { setActiveChannel } = useChatContext();
17163
17232
  const { setChannels } = useChannelListContext();
17164
- const onSelect = (0, import_react45.useCallback)(() => {
17233
+ const onSelect = (0, import_react46.useCallback)(() => {
17165
17234
  setActiveChannel(item);
17166
17235
  setChannels?.((channels) => (0, import_lodash3.default)([item, ...channels], "cid"));
17167
17236
  }, [item, setActiveChannel, setChannels]);
17168
- return /* @__PURE__ */ import_react45.default.createElement(
17237
+ return /* @__PURE__ */ import_react46.default.createElement(
17169
17238
  ChannelPreview,
17170
17239
  {
17171
17240
  channel: item,
@@ -17184,13 +17253,13 @@ var MessageSearchResultItem = ({
17184
17253
  setActiveChannel
17185
17254
  } = useChatContext();
17186
17255
  const { setChannels } = useChannelListContext();
17187
- const channel = (0, import_react45.useMemo)(() => {
17256
+ const channel = (0, import_react46.useMemo)(() => {
17188
17257
  const { channel: channelData } = item;
17189
17258
  const type = channelData?.type ?? "unknown";
17190
17259
  const id = channelData?.id ?? "unknown";
17191
17260
  return client.channel(type, id);
17192
17261
  }, [client, item]);
17193
- const onSelect = (0, import_react45.useCallback)(async () => {
17262
+ const onSelect = (0, import_react46.useCallback)(async () => {
17194
17263
  if (!channel) return;
17195
17264
  await channel.state.loadMessageIntoState(
17196
17265
  item.id,
@@ -17201,9 +17270,9 @@ var MessageSearchResultItem = ({
17201
17270
  setActiveChannel(channel);
17202
17271
  setChannels?.((channels) => (0, import_lodash3.default)([channel, ...channels], "cid"));
17203
17272
  }, [channel, item, searchController, setActiveChannel, setChannels]);
17204
- const getLatestMessagePreview2 = (0, import_react45.useCallback)(() => item.text, [item]);
17273
+ const getLatestMessagePreview2 = (0, import_react46.useCallback)(() => item.text, [item]);
17205
17274
  if (!channel) return;
17206
- return /* @__PURE__ */ import_react45.default.createElement(
17275
+ return /* @__PURE__ */ import_react46.default.createElement(
17207
17276
  ChannelPreview,
17208
17277
  {
17209
17278
  active: channel.cid === activeChannel?.cid && item.id === searchController._internalState.getLatestValue().focusedMessage?.id,
@@ -17218,7 +17287,7 @@ var UserSearchResultItem = ({ item }) => {
17218
17287
  const { client, setActiveChannel } = useChatContext();
17219
17288
  const { setChannels } = useChannelListContext();
17220
17289
  const { directMessagingChannelType } = useSearchContext();
17221
- const onClick = (0, import_react45.useCallback)(() => {
17290
+ const onClick = (0, import_react46.useCallback)(() => {
17222
17291
  const newChannel = client.channel(directMessagingChannelType, {
17223
17292
  members: [client.userID, item.id]
17224
17293
  });
@@ -17226,7 +17295,7 @@ var UserSearchResultItem = ({ item }) => {
17226
17295
  setActiveChannel(newChannel);
17227
17296
  setChannels?.((channels) => (0, import_lodash3.default)([newChannel, ...channels], "cid"));
17228
17297
  }, [client, item, setActiveChannel, setChannels, directMessagingChannelType]);
17229
- return /* @__PURE__ */ import_react45.default.createElement(
17298
+ return /* @__PURE__ */ import_react46.default.createElement(
17230
17299
  "button",
17231
17300
  {
17232
17301
  "aria-label": `Select User Channel: ${item.name || ""}`,
@@ -17235,7 +17304,7 @@ var UserSearchResultItem = ({ item }) => {
17235
17304
  onClick,
17236
17305
  role: "option"
17237
17306
  },
17238
- /* @__PURE__ */ import_react45.default.createElement(
17307
+ /* @__PURE__ */ import_react46.default.createElement(
17239
17308
  Avatar,
17240
17309
  {
17241
17310
  className: "str-chat__avatar--channel-preview",
@@ -17244,7 +17313,7 @@ var UserSearchResultItem = ({ item }) => {
17244
17313
  user: item
17245
17314
  }
17246
17315
  ),
17247
- /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
17316
+ /* @__PURE__ */ import_react46.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
17248
17317
  );
17249
17318
  };
17250
17319
  var DefaultSearchResultItems = {
@@ -17254,18 +17323,18 @@ var DefaultSearchResultItems = {
17254
17323
  };
17255
17324
 
17256
17325
  // src/experimental/Search/SearchResults/SearchSourceResultListFooter.tsx
17257
- var import_react48 = __toESM(require("react"));
17326
+ var import_react49 = __toESM(require("react"));
17258
17327
 
17259
17328
  // src/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.tsx
17260
- var import_react47 = __toESM(require("react"));
17329
+ var import_react48 = __toESM(require("react"));
17261
17330
 
17262
17331
  // src/experimental/Search/SearchSourceResultsContext.tsx
17263
- var import_react46 = __toESM(require("react"));
17264
- var SearchSourceResultsContext = (0, import_react46.createContext)(void 0);
17332
+ var import_react47 = __toESM(require("react"));
17333
+ var SearchSourceResultsContext = (0, import_react47.createContext)(void 0);
17265
17334
  var SearchSourceResultsContextProvider = ({
17266
17335
  children,
17267
17336
  value
17268
- }) => /* @__PURE__ */ import_react46.default.createElement(
17337
+ }) => /* @__PURE__ */ import_react47.default.createElement(
17269
17338
  SearchSourceResultsContext.Provider,
17270
17339
  {
17271
17340
  value
@@ -17273,7 +17342,7 @@ var SearchSourceResultsContextProvider = ({
17273
17342
  children
17274
17343
  );
17275
17344
  var useSearchSourceResultsContext = () => {
17276
- const contextValue = (0, import_react46.useContext)(SearchSourceResultsContext);
17345
+ const contextValue = (0, import_react47.useContext)(SearchSourceResultsContext);
17277
17346
  return contextValue;
17278
17347
  };
17279
17348
 
@@ -17281,7 +17350,7 @@ var useSearchSourceResultsContext = () => {
17281
17350
  var SearchSourceResultsLoadingIndicator = () => {
17282
17351
  const { t } = useTranslationContext();
17283
17352
  const { searchSource } = useSearchSourceResultsContext();
17284
- return /* @__PURE__ */ import_react47.default.createElement(
17353
+ return /* @__PURE__ */ import_react48.default.createElement(
17285
17354
  "div",
17286
17355
  {
17287
17356
  className: "str-chat__search-source-results__loading-indicator",
@@ -17306,13 +17375,13 @@ var SearchSourceResultListFooter = () => {
17306
17375
  searchSource.state,
17307
17376
  searchSourceStateSelector
17308
17377
  );
17309
- return /* @__PURE__ */ import_react48.default.createElement(
17378
+ return /* @__PURE__ */ import_react49.default.createElement(
17310
17379
  "div",
17311
17380
  {
17312
17381
  className: "str-chat__search-source-result-list__footer",
17313
17382
  "data-testid": "search-footer"
17314
17383
  },
17315
- 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
17384
+ 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
17316
17385
  );
17317
17386
  };
17318
17387
 
@@ -17330,36 +17399,36 @@ var SearchSourceResultList = ({
17330
17399
  const { items } = useStateStore(searchSource.state, searchSourceStateSelector2);
17331
17400
  const SearchResultItem = SearchResultItems[searchSource.type];
17332
17401
  if (!SearchResultItem) return null;
17333
- return /* @__PURE__ */ import_react49.default.createElement(
17402
+ return /* @__PURE__ */ import_react50.default.createElement(
17334
17403
  "div",
17335
17404
  {
17336
17405
  className: "str-chat__search-source-result-list",
17337
17406
  "data-testid": "search-source-result-list"
17338
17407
  },
17339
- /* @__PURE__ */ import_react49.default.createElement(
17408
+ /* @__PURE__ */ import_react50.default.createElement(
17340
17409
  InfiniteScrollPaginator,
17341
17410
  {
17342
17411
  loadNextDebounceMs: loadMoreDebounceMs,
17343
17412
  loadNextOnScrollToBottom: searchSource.search,
17344
17413
  threshold: loadMoreThresholdPx
17345
17414
  },
17346
- items?.map((item, i) => /* @__PURE__ */ import_react49.default.createElement(
17415
+ items?.map((item, i) => /* @__PURE__ */ import_react50.default.createElement(
17347
17416
  SearchResultItem,
17348
17417
  {
17349
17418
  item,
17350
17419
  key: `source-search-result-${searchSource.type}-${i}`
17351
17420
  }
17352
17421
  )),
17353
- /* @__PURE__ */ import_react49.default.createElement(SearchSourceResultListFooter2, null)
17422
+ /* @__PURE__ */ import_react50.default.createElement(SearchSourceResultListFooter2, null)
17354
17423
  )
17355
17424
  );
17356
17425
  };
17357
17426
 
17358
17427
  // src/experimental/Search/SearchResults/SearchSourceResultsEmpty.tsx
17359
- var import_react50 = __toESM(require("react"));
17428
+ var import_react51 = __toESM(require("react"));
17360
17429
  var SearchSourceResultsEmpty = () => {
17361
17430
  const { t } = useTranslationContext();
17362
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
17431
+ return /* @__PURE__ */ import_react51.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
17363
17432
  };
17364
17433
 
17365
17434
  // src/experimental/Search/SearchResults/SearchSourceResultsHeader.tsx
@@ -17381,20 +17450,20 @@ var SearchSourceResults = ({ searchSource }) => {
17381
17450
  searchSourceStateSelector3
17382
17451
  );
17383
17452
  if (!items && !isLoading) return null;
17384
- return /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react51.default.createElement(
17453
+ return /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react52.default.createElement(
17385
17454
  "div",
17386
17455
  {
17387
17456
  className: "str-chat__search-source-results",
17388
17457
  "data-testid": "search-source-results"
17389
17458
  },
17390
- /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsHeader2, null),
17391
- items?.length || isLoading ? /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultList2, null) : /* @__PURE__ */ import_react51.default.createElement(SearchSourceResultsEmpty2, null)
17459
+ /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsHeader2, null),
17460
+ items?.length || isLoading ? /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultList2, null) : /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsEmpty2, null)
17392
17461
  ));
17393
17462
  };
17394
17463
 
17395
17464
  // src/experimental/Search/SearchResults/SearchResultsHeader.tsx
17396
17465
  var import_clsx11 = __toESM(require("clsx"));
17397
- var import_react52 = __toESM(require("react"));
17466
+ var import_react53 = __toESM(require("react"));
17398
17467
  var searchSourceStateSelector4 = (nextValue) => ({
17399
17468
  isActive: nextValue.isActive
17400
17469
  });
@@ -17403,7 +17472,7 @@ var SearchSourceFilterButton = ({ source }) => {
17403
17472
  const { searchController } = useSearchContext();
17404
17473
  const { isActive } = useStateStore(source.state, searchSourceStateSelector4);
17405
17474
  const label = `search-results-header-filter-source-button-label--${source.type}`;
17406
- return /* @__PURE__ */ import_react52.default.createElement(
17475
+ return /* @__PURE__ */ import_react53.default.createElement(
17407
17476
  "button",
17408
17477
  {
17409
17478
  "aria-label": t("aria/Search results header filter button"),
@@ -17426,13 +17495,13 @@ var SearchSourceFilterButton = ({ source }) => {
17426
17495
  };
17427
17496
  var SearchResultsHeader = () => {
17428
17497
  const { searchController } = useSearchContext();
17429
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "str-chat__search-results-header", "data-testid": "search-results-header" }, /* @__PURE__ */ import_react52.default.createElement(
17498
+ return /* @__PURE__ */ import_react53.default.createElement("div", { className: "str-chat__search-results-header", "data-testid": "search-results-header" }, /* @__PURE__ */ import_react53.default.createElement(
17430
17499
  "div",
17431
17500
  {
17432
17501
  className: "str-chat__search-results-header__filter-source-buttons",
17433
17502
  "data-testid": "filter-source-buttons"
17434
17503
  },
17435
- searchController.sources.map((source) => /* @__PURE__ */ import_react52.default.createElement(
17504
+ searchController.sources.map((source) => /* @__PURE__ */ import_react53.default.createElement(
17436
17505
  SearchSourceFilterButton,
17437
17506
  {
17438
17507
  key: `search-source-filter-button-${source.type}`,
@@ -17443,10 +17512,10 @@ var SearchResultsHeader = () => {
17443
17512
  };
17444
17513
 
17445
17514
  // src/experimental/Search/SearchResults/SearchResultsPresearch.tsx
17446
- var import_react53 = __toESM(require("react"));
17515
+ var import_react54 = __toESM(require("react"));
17447
17516
  var SearchResultsPresearch = () => {
17448
17517
  const { t } = useTranslationContext();
17449
- return /* @__PURE__ */ import_react53.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
17518
+ return /* @__PURE__ */ import_react54.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
17450
17519
  };
17451
17520
 
17452
17521
  // src/experimental/Search/SearchResults/SearchResults.tsx
@@ -17467,7 +17536,7 @@ var SearchResults = () => {
17467
17536
  searchController.state,
17468
17537
  searchControllerStateSelector3
17469
17538
  );
17470
- 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 })));
17539
+ 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 })));
17471
17540
  };
17472
17541
 
17473
17542
  // src/experimental/Search/Search.tsx
@@ -17481,7 +17550,7 @@ var Search = ({
17481
17550
  const { SearchBar: SearchBar2 = SearchBar, SearchResults: SearchResults2 = SearchResults } = useComponentContext();
17482
17551
  const { searchController } = useChatContext();
17483
17552
  const { isActive } = useStateStore(searchController.state, searchControllerStateSelector4);
17484
- return /* @__PURE__ */ import_react55.default.createElement(
17553
+ return /* @__PURE__ */ import_react56.default.createElement(
17485
17554
  SearchContextProvider,
17486
17555
  {
17487
17556
  value: {
@@ -17492,7 +17561,7 @@ var Search = ({
17492
17561
  searchController
17493
17562
  }
17494
17563
  },
17495
- /* @__PURE__ */ import_react55.default.createElement(
17564
+ /* @__PURE__ */ import_react56.default.createElement(
17496
17565
  "div",
17497
17566
  {
17498
17567
  className: (0, import_clsx12.default)("str-chat__search", {
@@ -17500,8 +17569,8 @@ var Search = ({
17500
17569
  }),
17501
17570
  "data-testid": "search"
17502
17571
  },
17503
- /* @__PURE__ */ import_react55.default.createElement(SearchBar2, null),
17504
- /* @__PURE__ */ import_react55.default.createElement(SearchResults2, null)
17572
+ /* @__PURE__ */ import_react56.default.createElement(SearchBar2, null),
17573
+ /* @__PURE__ */ import_react56.default.createElement(SearchResults2, null)
17505
17574
  )
17506
17575
  );
17507
17576
  };