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.
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +8 -3
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Dialog/ButtonWithSubmenu.d.ts +2 -2
- package/dist/components/Dialog/ButtonWithSubmenu.js +6 -6
- package/dist/components/Dialog/DialogAnchor.d.ts +5 -11
- package/dist/components/Dialog/DialogAnchor.js +22 -26
- package/dist/components/Dialog/DialogPortal.d.ts +2 -1
- package/dist/components/Dialog/DialogPortal.js +23 -7
- package/dist/components/Dialog/hooks/index.d.ts +1 -0
- package/dist/components/Dialog/hooks/useDialog.d.ts +4 -0
- package/dist/components/Dialog/hooks/useDialog.js +9 -1
- package/dist/components/Dialog/hooks/usePopoverPosition.d.ts +68 -0
- package/dist/components/Dialog/hooks/usePopoverPosition.js +54 -0
- package/dist/components/Form/Dropdown.d.ts +2 -2
- package/dist/components/Message/MessageRepliesCountButton.js +3 -1
- package/dist/components/Message/renderText/remarkPlugins/index.d.ts +1 -0
- package/dist/components/Message/renderText/remarkPlugins/index.js +1 -0
- package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.d.ts +10 -2
- package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js +46 -26
- package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.d.ts +8 -0
- package/dist/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.js +11 -0
- package/dist/components/MessageActions/MessageActions.js +4 -4
- package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -1
- package/dist/components/MessageInput/AttachmentSelector.js +9 -4
- package/dist/components/MessageList/hooks/useLastDeliveredData.js +5 -2
- package/dist/components/Modal/GlobalModal.js +2 -2
- package/dist/components/Reactions/ReactionSelectorWithButton.js +4 -4
- package/dist/components/Tooltip/Tooltip.d.ts +2 -2
- package/dist/components/Tooltip/Tooltip.js +11 -12
- package/dist/context/DialogManagerContext.d.ts +1 -0
- package/dist/context/DialogManagerContext.js +1 -0
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/experimental/MessageActions/MessageActions.js +5 -5
- package/dist/experimental/index.browser.cjs +307 -238
- package/dist/experimental/index.browser.cjs.map +4 -4
- package/dist/experimental/index.node.cjs +307 -238
- package/dist/experimental/index.node.cjs.map +4 -4
- package/dist/index.browser.cjs +1415 -1307
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +1418 -1307
- package/dist/index.node.cjs.map +4 -4
- package/dist/plugins/Emojis/EmojiPicker.d.ts +9 -4
- package/dist/plugins/Emojis/EmojiPicker.js +10 -5
- package/dist/plugins/Emojis/index.browser.cjs +89 -29
- package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
- package/dist/plugins/Emojis/index.node.cjs +89 -29
- package/dist/plugins/Emojis/index.node.cjs.map +4 -4
- package/dist/scss/v2/Message/Message-layout.scss +4 -0
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +1 -0
- package/package.json +7 -8
- package/dist/components/MessageActions/hooks/index.d.ts +0 -1
- package/dist/components/MessageActions/hooks/index.js +0 -1
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +0 -18
- 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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
995
|
+
var import_react34 = require("react");
|
|
986
996
|
|
|
987
997
|
// src/components/ChannelPreview/utils.tsx
|
|
988
|
-
var
|
|
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
|
|
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
|
|
10660
|
+
var import_react22 = __toESM(require("react"));
|
|
10651
10661
|
var import_focus = require("@react-aria/focus");
|
|
10652
|
-
|
|
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,
|
|
10660
|
-
const {
|
|
10661
|
-
|
|
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,
|
|
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 {
|
|
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,
|
|
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__ */
|
|
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
|
|
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,
|
|
10752
|
-
const [dialogContainer, setDialogContainer] = (0,
|
|
10753
|
-
const keepSubmenuOpen = (0,
|
|
10754
|
-
const dialogCloseTimeout = (0,
|
|
10755
|
-
const dialogId = (0,
|
|
10756
|
-
const dialog =
|
|
10757
|
-
const dialogIsOpen = useDialogIsOpen(dialogId);
|
|
10758
|
-
const {
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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
|
|
10910
|
+
style: styles,
|
|
10849
10911
|
tabIndex: -1,
|
|
10850
10912
|
...submenuContainerProps
|
|
10851
10913
|
},
|
|
10852
|
-
/* @__PURE__ */
|
|
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
|
|
10920
|
+
var import_react26 = __toESM(require("react"));
|
|
10859
10921
|
|
|
10860
10922
|
// src/components/MessageActions/RemindMeSubmenu.tsx
|
|
10861
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
10908
|
-
var ActionsIcon = ({ className = "" }) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
10958
|
-
return /* @__PURE__ */
|
|
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
|
|
14142
|
+
var import_react31 = __toESM(require("react"));
|
|
14081
14143
|
|
|
14082
14144
|
// src/components/Reactions/ReactionSelector.tsx
|
|
14083
|
-
var
|
|
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
|
|
14149
|
+
var import_react29 = __toESM(require("react"));
|
|
14088
14150
|
|
|
14089
14151
|
// src/components/Reactions/StreamEmoji.tsx
|
|
14090
|
-
var
|
|
14152
|
+
var import_react28 = __toESM(require("react"));
|
|
14091
14153
|
|
|
14092
14154
|
// src/components/Reactions/SpriteImage.tsx
|
|
14093
|
-
var
|
|
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,
|
|
14129
|
-
(0,
|
|
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__ */
|
|
14134
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14263
|
+
Component: () => /* @__PURE__ */ import_react29.default.createElement(StreamEmoji, { fallback: "\u2764\uFE0F", type: "love" }),
|
|
14202
14264
|
name: "Heart"
|
|
14203
14265
|
},
|
|
14204
|
-
{ type: "sad", Component: () => /* @__PURE__ */
|
|
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__ */
|
|
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,
|
|
14242
|
-
const [tooltipPositions, setTooltipPositions] = (0,
|
|
14243
|
-
const rootRef = (0,
|
|
14244
|
-
const targetRef = (0,
|
|
14245
|
-
const tooltipRef = (0,
|
|
14246
|
-
const showTooltip = (0,
|
|
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,
|
|
14315
|
+
const hideTooltip = (0, import_react30.useCallback)(() => {
|
|
14254
14316
|
setTooltipReactionType(null);
|
|
14255
14317
|
setTooltipPositions(null);
|
|
14256
14318
|
}, []);
|
|
14257
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14301
|
-
getUsersPerReactionType(tooltipReactionType)?.map((user, i, users) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
14403
|
+
) : /* @__PURE__ */ import_react30.default.createElement("div", { className: "latest-user-not-found" })
|
|
14342
14404
|
),
|
|
14343
|
-
/* @__PURE__ */
|
|
14344
|
-
Boolean(count) && detailedView && /* @__PURE__ */
|
|
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 =
|
|
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,
|
|
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 =
|
|
14364
|
-
const dialogIsOpen = useDialogIsOpen(dialogId);
|
|
14365
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
14374
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
14410
|
-
const childRef = (0,
|
|
14411
|
-
const scrollListener = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
14629
|
+
const [displayTitle, setDisplayTitle] = (0, import_react34.useState)(
|
|
14567
14630
|
() => overrideTitle || getDisplayTitle(channel, client.user)
|
|
14568
14631
|
);
|
|
14569
|
-
const [displayImage, setDisplayImage] = (0,
|
|
14632
|
+
const [displayImage, setDisplayImage] = (0, import_react34.useState)(
|
|
14570
14633
|
() => overrideImage || getDisplayImage(channel, client.user)
|
|
14571
14634
|
);
|
|
14572
|
-
const [groupChannelDisplayInfo, setGroupDisplayChannelInfo] = (0,
|
|
14573
|
-
(0,
|
|
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
|
|
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,
|
|
14603
|
-
const isOwnMessage = (0,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
14742
|
+
const [latestMessagePreview, setLatestMessagePreview] = (0, import_react36.useState)(
|
|
14678
14743
|
() => getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
|
|
14679
14744
|
);
|
|
14680
|
-
const [unread, setUnread] = (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,
|
|
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,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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
|
|
14777
|
-
var LegacyThreadContext =
|
|
14778
|
-
var useLegacyThreadContext = () => (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
14919
|
+
const [queriesInProgress, setQueriesInProgress] = (0, import_react39.useState)([]);
|
|
14855
14920
|
const { sources } = useStateStore(
|
|
14856
14921
|
searchController.state,
|
|
14857
14922
|
searchControllerStateSelector
|
|
14858
14923
|
);
|
|
14859
|
-
(0,
|
|
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
|
|
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,
|
|
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
|
|
14925
|
-
var useSplitMessageActionSet = (messageActionSet) => (0,
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
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 =
|
|
15114
|
-
const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId);
|
|
15115
|
-
const reactionSelectorDialogIsOpen = useDialogIsOpen(
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15137
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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
|
|
15247
|
+
var import_react45 = __toESM(require("react"));
|
|
15179
15248
|
|
|
15180
15249
|
// src/experimental/Search/SearchContext.tsx
|
|
15181
|
-
var
|
|
15182
|
-
var SearchContext = (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__ */
|
|
15255
|
+
}) => /* @__PURE__ */ import_react44.default.createElement(SearchContext.Provider, { value }, children);
|
|
15187
15256
|
var useSearchContext = () => {
|
|
15188
|
-
const contextValue = (0,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
15227
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15330
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
|
|
15262
15331
|
)
|
|
15263
|
-
), isActive ? /* @__PURE__ */
|
|
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
|
|
15349
|
+
var import_react55 = __toESM(require("react"));
|
|
15281
15350
|
|
|
15282
15351
|
// src/experimental/Search/SearchResults/SearchSourceResults.tsx
|
|
15283
|
-
var
|
|
15352
|
+
var import_react52 = __toESM(require("react"));
|
|
15284
15353
|
|
|
15285
15354
|
// src/experimental/Search/SearchResults/SearchSourceResultList.tsx
|
|
15286
|
-
var
|
|
15355
|
+
var import_react50 = __toESM(require("react"));
|
|
15287
15356
|
|
|
15288
15357
|
// src/experimental/Search/SearchResults/SearchResultItem.tsx
|
|
15289
|
-
var
|
|
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,
|
|
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__ */
|
|
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,
|
|
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,
|
|
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,
|
|
15403
|
+
const getLatestMessagePreview2 = (0, import_react46.useCallback)(() => item.text, [item]);
|
|
15335
15404
|
if (!channel) return;
|
|
15336
|
-
return /* @__PURE__ */
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
15456
|
+
var import_react49 = __toESM(require("react"));
|
|
15388
15457
|
|
|
15389
15458
|
// src/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.tsx
|
|
15390
|
-
var
|
|
15459
|
+
var import_react48 = __toESM(require("react"));
|
|
15391
15460
|
|
|
15392
15461
|
// src/experimental/Search/SearchSourceResultsContext.tsx
|
|
15393
|
-
var
|
|
15394
|
-
var SearchSourceResultsContext = (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__ */
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
15558
|
+
var import_react51 = __toESM(require("react"));
|
|
15490
15559
|
var SearchSourceResultsEmpty = () => {
|
|
15491
15560
|
const { t } = useTranslationContext();
|
|
15492
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
15521
|
-
items?.length || isLoading ? /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
15645
|
+
var import_react54 = __toESM(require("react"));
|
|
15577
15646
|
var SearchResultsPresearch = () => {
|
|
15578
15647
|
const { t } = useTranslationContext();
|
|
15579
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
15634
|
-
/* @__PURE__ */
|
|
15702
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchBar2, null),
|
|
15703
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchResults2, null)
|
|
15635
15704
|
)
|
|
15636
15705
|
);
|
|
15637
15706
|
};
|