stream-chat-react 13.8.1 → 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/Channel/Channel.d.ts +2 -2
- package/dist/components/Channel/Channel.js +3 -3
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +1 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +31 -14
- 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/Message.js +1 -1
- package/dist/components/Message/MessageRepliesCountButton.js +3 -1
- package/dist/components/Message/MessageStatus.d.ts +1 -0
- package/dist/components/Message/MessageStatus.js +22 -12
- package/dist/components/Message/hooks/useDeleteHandler.js +2 -2
- package/dist/components/Message/icons.d.ts +1 -0
- package/dist/components/Message/icons.js +6 -2
- 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/Message/types.d.ts +2 -0
- package/dist/components/Message/utils.d.ts +4 -1
- package/dist/components/Message/utils.js +9 -0
- package/dist/components/MessageActions/MessageActions.js +4 -4
- package/dist/components/MessageActions/MessageActionsBox.js +3 -1
- package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -1
- package/dist/components/MessageInput/AttachmentSelector.js +9 -4
- package/dist/components/MessageList/MessageList.js +2 -2
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -0
- package/dist/components/MessageList/VirtualizedMessageList.js +10 -4
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -2
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +13 -5
- package/dist/components/MessageList/hooks/useLastDeliveredData.d.ts +8 -0
- package/dist/components/MessageList/hooks/useLastDeliveredData.js +16 -0
- package/dist/components/MessageList/hooks/useLastReadData.d.ts +3 -8
- package/dist/components/MessageList/hooks/useLastReadData.js +10 -7
- package/dist/components/MessageList/renderMessages.d.ts +5 -4
- package/dist/components/MessageList/renderMessages.js +2 -2
- package/dist/components/MessageList/utils.d.ts +1 -5
- package/dist/components/MessageList/utils.js +0 -30
- 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/ChannelActionContext.d.ts +2 -2
- package/dist/context/DialogManagerContext.d.ts +1 -0
- package/dist/context/DialogManagerContext.js +1 -0
- package/dist/context/MessageContext.d.ts +5 -3
- 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 +324 -249
- package/dist/experimental/index.browser.cjs.map +4 -4
- package/dist/experimental/index.node.cjs +324 -249
- package/dist/experimental/index.node.cjs.map +4 -4
- package/dist/i18n/Streami18n.d.ts +2 -0
- package/dist/i18n/de.json +2 -0
- package/dist/i18n/en.json +2 -0
- package/dist/i18n/es.json +2 -0
- package/dist/i18n/fr.json +2 -0
- package/dist/i18n/hi.json +2 -0
- package/dist/i18n/it.json +2 -0
- package/dist/i18n/ja.json +2 -0
- package/dist/i18n/ko.json +2 -0
- package/dist/i18n/nl.json +2 -0
- package/dist/i18n/pt.json +2 -0
- package/dist/i18n/ru.json +2 -0
- package/dist/i18n/tr.json +2 -0
- package/dist/index.browser.cjs +1587 -1380
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +1592 -1381
- 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/Dialog/Dialog-layout.scss +12 -3
- package/dist/scss/v2/Icon/Icon-layout.scss +6 -0
- package/dist/scss/v2/Icon/Icon-theme.scss +4 -0
- package/dist/scss/v2/Message/Message-layout.scss +34 -3
- package/dist/scss/v2/Message/Message-theme.scss +9 -0
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +1 -0
- package/dist/scss/v2/MessageInput/MessageInput-layout.scss +8 -0
- package/dist/scss/v2/MessageInput/MessageInput-theme.scss +2 -1
- package/dist/scss/v2/Poll/Poll-layout.scss +29 -7
- 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,54 +14656,62 @@ 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,
|
|
14604
|
-
(message) => client.user && message
|
|
14665
|
+
const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react35.useState)();
|
|
14666
|
+
const isOwnMessage = (0, import_react35.useCallback)(
|
|
14667
|
+
(message) => client.user && message && message.user?.id === client.user.id,
|
|
14605
14668
|
[client]
|
|
14606
14669
|
);
|
|
14607
|
-
(0,
|
|
14670
|
+
(0, import_react35.useEffect)(() => {
|
|
14671
|
+
if (!lastMessage) {
|
|
14672
|
+
setMessageDeliveryStatus(void 0);
|
|
14673
|
+
}
|
|
14608
14674
|
const lastMessageIsOwn = isOwnMessage(lastMessage);
|
|
14609
14675
|
if (!lastMessage?.created_at || !lastMessageIsOwn) return;
|
|
14610
|
-
const
|
|
14611
|
-
|
|
14612
|
-
|
|
14613
|
-
|
|
14614
|
-
|
|
14615
|
-
|
|
14616
|
-
});
|
|
14676
|
+
const msgRef = {
|
|
14677
|
+
msgId: lastMessage.id,
|
|
14678
|
+
timestampMs: lastMessage.created_at.getTime()
|
|
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
|
|
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);
|
|
14625
14690
|
}
|
|
14626
|
-
return setMessageDeliveryStatus("
|
|
14691
|
+
return setMessageDeliveryStatus("sent" /* SENT */);
|
|
14627
14692
|
};
|
|
14628
14693
|
channel.on("message.new", handleMessageNew);
|
|
14629
14694
|
return () => {
|
|
14630
14695
|
channel.off("message.new", handleMessageNew);
|
|
14631
14696
|
};
|
|
14632
|
-
}, [channel,
|
|
14633
|
-
(0,
|
|
14697
|
+
}, [channel, isOwnMessage]);
|
|
14698
|
+
(0, import_react35.useEffect)(() => {
|
|
14634
14699
|
if (!isOwnMessage(lastMessage)) return;
|
|
14700
|
+
const handleMessageDelivered = (event) => {
|
|
14701
|
+
if (event.user?.id !== client.user?.id && lastMessage && lastMessage.id === event.last_delivered_message_id)
|
|
14702
|
+
setMessageDeliveryStatus("delivered" /* DELIVERED */);
|
|
14703
|
+
};
|
|
14635
14704
|
const handleMarkRead = (event) => {
|
|
14636
14705
|
if (event.user?.id !== client.user?.id)
|
|
14637
14706
|
setMessageDeliveryStatus("read" /* READ */);
|
|
14638
14707
|
};
|
|
14708
|
+
channel.on("message.delivered", handleMessageDelivered);
|
|
14639
14709
|
channel.on("message.read", handleMarkRead);
|
|
14640
14710
|
return () => {
|
|
14711
|
+
channel.off("message.delivered", handleMessageDelivered);
|
|
14641
14712
|
channel.off("message.read", handleMarkRead);
|
|
14642
14713
|
};
|
|
14643
|
-
}, [channel, client,
|
|
14714
|
+
}, [channel, client, isOwnMessage, lastMessage]);
|
|
14644
14715
|
return {
|
|
14645
14716
|
messageDeliveryStatus
|
|
14646
14717
|
};
|
|
@@ -14665,20 +14736,20 @@ var ChannelPreview = (props) => {
|
|
|
14665
14736
|
const { displayImage, displayTitle, groupChannelDisplayInfo } = useChannelPreviewInfo({
|
|
14666
14737
|
channel
|
|
14667
14738
|
});
|
|
14668
|
-
const [lastMessage, setLastMessage] = (0,
|
|
14739
|
+
const [lastMessage, setLastMessage] = (0, import_react36.useState)(
|
|
14669
14740
|
channel.state.messages[channel.state.messages.length - 1]
|
|
14670
14741
|
);
|
|
14671
|
-
const [latestMessagePreview, setLatestMessagePreview] = (0,
|
|
14742
|
+
const [latestMessagePreview, setLatestMessagePreview] = (0, import_react36.useState)(
|
|
14672
14743
|
() => getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
|
|
14673
14744
|
);
|
|
14674
|
-
const [unread, setUnread] = (0,
|
|
14745
|
+
const [unread, setUnread] = (0, import_react36.useState)(0);
|
|
14675
14746
|
const { messageDeliveryStatus } = useMessageDeliveryStatus({
|
|
14676
14747
|
channel,
|
|
14677
14748
|
lastMessage
|
|
14678
14749
|
});
|
|
14679
14750
|
const isActive = typeof active === "undefined" ? activeChannel?.cid === channel.cid : active;
|
|
14680
14751
|
const { muted } = useIsChannelMuted(channel);
|
|
14681
|
-
(0,
|
|
14752
|
+
(0, import_react36.useEffect)(() => {
|
|
14682
14753
|
const handleEvent = (event) => {
|
|
14683
14754
|
if (!event.cid) return setUnread(0);
|
|
14684
14755
|
if (channel.cid === event.cid) setUnread(0);
|
|
@@ -14686,7 +14757,7 @@ var ChannelPreview = (props) => {
|
|
|
14686
14757
|
client.on("notification.mark_read", handleEvent);
|
|
14687
14758
|
return () => client.off("notification.mark_read", handleEvent);
|
|
14688
14759
|
}, [channel, client]);
|
|
14689
|
-
(0,
|
|
14760
|
+
(0, import_react36.useEffect)(() => {
|
|
14690
14761
|
const handleEvent = (event) => {
|
|
14691
14762
|
if (channel.cid !== event.cid) return;
|
|
14692
14763
|
if (event.user?.id !== client.user?.id) return;
|
|
@@ -14697,7 +14768,7 @@ var ChannelPreview = (props) => {
|
|
|
14697
14768
|
channel.off("notification.mark_unread", handleEvent);
|
|
14698
14769
|
};
|
|
14699
14770
|
}, [channel, client]);
|
|
14700
|
-
const refreshUnreadCount = (0,
|
|
14771
|
+
const refreshUnreadCount = (0, import_react36.useMemo)(
|
|
14701
14772
|
() => (0, import_lodash2.default)(() => {
|
|
14702
14773
|
if (muted) {
|
|
14703
14774
|
setUnread(0);
|
|
@@ -14707,7 +14778,7 @@ var ChannelPreview = (props) => {
|
|
|
14707
14778
|
}, 400),
|
|
14708
14779
|
[channel, muted]
|
|
14709
14780
|
);
|
|
14710
|
-
(0,
|
|
14781
|
+
(0, import_react36.useEffect)(() => {
|
|
14711
14782
|
refreshUnreadCount();
|
|
14712
14783
|
setLatestMessagePreview(
|
|
14713
14784
|
getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
|
|
@@ -14748,7 +14819,7 @@ var ChannelPreview = (props) => {
|
|
|
14748
14819
|
isMessageAIGenerated
|
|
14749
14820
|
]);
|
|
14750
14821
|
if (!Preview) return null;
|
|
14751
|
-
return /* @__PURE__ */
|
|
14822
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
14752
14823
|
Preview,
|
|
14753
14824
|
{
|
|
14754
14825
|
...props,
|
|
@@ -14767,9 +14838,9 @@ var ChannelPreview = (props) => {
|
|
|
14767
14838
|
};
|
|
14768
14839
|
|
|
14769
14840
|
// src/components/Thread/LegacyThreadContext.ts
|
|
14770
|
-
var
|
|
14771
|
-
var LegacyThreadContext =
|
|
14772
|
-
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);
|
|
14773
14844
|
|
|
14774
14845
|
// src/components/MessageInput/hooks/useMessageComposer.ts
|
|
14775
14846
|
var queueCache = new import_stream_chat2.FixedSizeQueueCache(64);
|
|
@@ -14779,15 +14850,15 @@ var useMessageComposer = () => {
|
|
|
14779
14850
|
const { editing, message: editedMessage } = useMessageContext();
|
|
14780
14851
|
const { legacyThread: parentMessage } = useLegacyThreadContext();
|
|
14781
14852
|
const threadInstance = useThreadContext();
|
|
14782
|
-
const cachedEditedMessage = (0,
|
|
14853
|
+
const cachedEditedMessage = (0, import_react38.useMemo)(() => {
|
|
14783
14854
|
if (!editedMessage) return void 0;
|
|
14784
14855
|
return editedMessage;
|
|
14785
14856
|
}, [editedMessage?.id]);
|
|
14786
|
-
const cachedParentMessage = (0,
|
|
14857
|
+
const cachedParentMessage = (0, import_react38.useMemo)(() => {
|
|
14787
14858
|
if (!parentMessage) return void 0;
|
|
14788
14859
|
return parentMessage;
|
|
14789
14860
|
}, [parentMessage?.id]);
|
|
14790
|
-
const messageComposer = (0,
|
|
14861
|
+
const messageComposer = (0, import_react38.useMemo)(() => {
|
|
14791
14862
|
if (editing && cachedEditedMessage) {
|
|
14792
14863
|
const tag = import_stream_chat2.MessageComposer.constructTag(cachedEditedMessage);
|
|
14793
14864
|
const cachedComposer = queueCache.get(tag);
|
|
@@ -14830,7 +14901,7 @@ var useMessageComposer = () => {
|
|
|
14830
14901
|
) && !queueCache.peek(messageComposer.tag)) {
|
|
14831
14902
|
queueCache.add(messageComposer.tag, messageComposer);
|
|
14832
14903
|
}
|
|
14833
|
-
(0,
|
|
14904
|
+
(0, import_react38.useEffect)(() => {
|
|
14834
14905
|
const unsubscribe = messageComposer.registerSubscriptions();
|
|
14835
14906
|
return () => {
|
|
14836
14907
|
unsubscribe();
|
|
@@ -14840,17 +14911,17 @@ var useMessageComposer = () => {
|
|
|
14840
14911
|
};
|
|
14841
14912
|
|
|
14842
14913
|
// src/experimental/Search/hooks/useSearchQueriesInProgress.ts
|
|
14843
|
-
var
|
|
14914
|
+
var import_react39 = require("react");
|
|
14844
14915
|
var searchControllerStateSelector = (value) => ({
|
|
14845
14916
|
sources: value.sources
|
|
14846
14917
|
});
|
|
14847
14918
|
var useSearchQueriesInProgress = (searchController) => {
|
|
14848
|
-
const [queriesInProgress, setQueriesInProgress] = (0,
|
|
14919
|
+
const [queriesInProgress, setQueriesInProgress] = (0, import_react39.useState)([]);
|
|
14849
14920
|
const { sources } = useStateStore(
|
|
14850
14921
|
searchController.state,
|
|
14851
14922
|
searchControllerStateSelector
|
|
14852
14923
|
);
|
|
14853
|
-
(0,
|
|
14924
|
+
(0, import_react39.useEffect)(() => {
|
|
14854
14925
|
const subscriptions = sources.map(
|
|
14855
14926
|
(source) => source.state.subscribeWithSelector(
|
|
14856
14927
|
(value) => ({ isLoading: value.isLoading }),
|
|
@@ -14870,7 +14941,7 @@ var useSearchQueriesInProgress = (searchController) => {
|
|
|
14870
14941
|
};
|
|
14871
14942
|
|
|
14872
14943
|
// src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
|
|
14873
|
-
var
|
|
14944
|
+
var import_react40 = require("react");
|
|
14874
14945
|
var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
14875
14946
|
const { initialMessage: isInitialMessage, message } = useMessageContext();
|
|
14876
14947
|
const {
|
|
@@ -14884,7 +14955,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
|
14884
14955
|
canReply
|
|
14885
14956
|
} = useUserRole(message);
|
|
14886
14957
|
const isMessageThreadReply = typeof message.parent_id === "string";
|
|
14887
|
-
return (0,
|
|
14958
|
+
return (0, import_react40.useMemo)(() => {
|
|
14888
14959
|
if (disable2) return messageActionSet;
|
|
14889
14960
|
if (isInitialMessage || // not sure whether this thing even works anymore
|
|
14890
14961
|
!message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
|
|
@@ -14915,8 +14986,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
|
14915
14986
|
};
|
|
14916
14987
|
|
|
14917
14988
|
// src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
|
|
14918
|
-
var
|
|
14919
|
-
var useSplitMessageActionSet = (messageActionSet) => (0,
|
|
14989
|
+
var import_react41 = require("react");
|
|
14990
|
+
var useSplitMessageActionSet = (messageActionSet) => (0, import_react41.useMemo)(() => {
|
|
14920
14991
|
const quickActionSet = [];
|
|
14921
14992
|
const dropdownActionSet = [];
|
|
14922
14993
|
for (const action of messageActionSet) {
|
|
@@ -14927,7 +14998,7 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)
|
|
|
14927
14998
|
}, [messageActionSet]);
|
|
14928
14999
|
|
|
14929
15000
|
// src/experimental/MessageActions/defaults.tsx
|
|
14930
|
-
var
|
|
15001
|
+
var import_react42 = __toESM(require("react"));
|
|
14931
15002
|
var msgActionsBoxButtonClassName = "str-chat__message-actions-list-item-button";
|
|
14932
15003
|
var DefaultDropdownActionButton = ({
|
|
14933
15004
|
"aria-selected": ariaSelected = "false",
|
|
@@ -14935,7 +15006,7 @@ var DefaultDropdownActionButton = ({
|
|
|
14935
15006
|
className = msgActionsBoxButtonClassName,
|
|
14936
15007
|
role = "option",
|
|
14937
15008
|
...rest
|
|
14938
|
-
}) => /* @__PURE__ */
|
|
15009
|
+
}) => /* @__PURE__ */ import_react42.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
|
|
14939
15010
|
var DefaultMessageActionComponents = {
|
|
14940
15011
|
dropdown: {
|
|
14941
15012
|
Quote() {
|
|
@@ -14950,42 +15021,42 @@ var DefaultMessageActionComponents = {
|
|
|
14950
15021
|
textarea.focus();
|
|
14951
15022
|
}
|
|
14952
15023
|
};
|
|
14953
|
-
return /* @__PURE__ */
|
|
15024
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
|
|
14954
15025
|
},
|
|
14955
15026
|
Pin() {
|
|
14956
15027
|
const { handlePin, message } = useMessageContext();
|
|
14957
15028
|
const { t } = useTranslationContext();
|
|
14958
|
-
return /* @__PURE__ */
|
|
15029
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
|
|
14959
15030
|
},
|
|
14960
15031
|
MarkUnread() {
|
|
14961
15032
|
const { handleMarkUnread } = useMessageContext();
|
|
14962
15033
|
const { t } = useTranslationContext();
|
|
14963
|
-
return /* @__PURE__ */
|
|
15034
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
|
|
14964
15035
|
},
|
|
14965
15036
|
Flag() {
|
|
14966
15037
|
const { handleFlag } = useMessageContext();
|
|
14967
15038
|
const { t } = useTranslationContext();
|
|
14968
|
-
return /* @__PURE__ */
|
|
15039
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
|
|
14969
15040
|
},
|
|
14970
15041
|
Mute() {
|
|
14971
15042
|
const { handleMute, message } = useMessageContext();
|
|
14972
15043
|
const { mutes } = useChatContext();
|
|
14973
15044
|
const { t } = useTranslationContext();
|
|
14974
|
-
return /* @__PURE__ */
|
|
15045
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
|
|
14975
15046
|
},
|
|
14976
15047
|
Edit() {
|
|
14977
15048
|
const { handleEdit } = useMessageContext();
|
|
14978
15049
|
const { t } = useTranslationContext();
|
|
14979
|
-
return /* @__PURE__ */
|
|
15050
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
|
|
14980
15051
|
},
|
|
14981
15052
|
Delete() {
|
|
14982
15053
|
const { handleDelete: handleDelete2 } = useMessageContext();
|
|
14983
15054
|
const { t } = useTranslationContext();
|
|
14984
|
-
return /* @__PURE__ */
|
|
15055
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
|
|
14985
15056
|
},
|
|
14986
15057
|
RemindMe() {
|
|
14987
15058
|
const { isMyMessage } = useMessageContext();
|
|
14988
|
-
return /* @__PURE__ */
|
|
15059
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
14989
15060
|
RemindMeActionButton,
|
|
14990
15061
|
{
|
|
14991
15062
|
className: msgActionsBoxButtonClassName,
|
|
@@ -14998,7 +15069,7 @@ var DefaultMessageActionComponents = {
|
|
|
14998
15069
|
const { message } = useMessageContext();
|
|
14999
15070
|
const { t } = useTranslationContext();
|
|
15000
15071
|
const reminder = useMessageReminder(message.id);
|
|
15001
|
-
return /* @__PURE__ */
|
|
15072
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
15002
15073
|
DefaultDropdownActionButton,
|
|
15003
15074
|
{
|
|
15004
15075
|
onClick: () => reminder ? client.reminders.deleteReminder(reminder.id) : client.reminders.createReminder({ messageId: message.id })
|
|
@@ -15009,12 +15080,12 @@ var DefaultMessageActionComponents = {
|
|
|
15009
15080
|
},
|
|
15010
15081
|
quick: {
|
|
15011
15082
|
React() {
|
|
15012
|
-
return /* @__PURE__ */
|
|
15083
|
+
return /* @__PURE__ */ import_react42.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
|
|
15013
15084
|
},
|
|
15014
15085
|
Reply() {
|
|
15015
15086
|
const { handleOpenThread } = useMessageContext();
|
|
15016
15087
|
const { t } = useTranslationContext();
|
|
15017
|
-
return /* @__PURE__ */
|
|
15088
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
15018
15089
|
"button",
|
|
15019
15090
|
{
|
|
15020
15091
|
"aria-label": t("aria/Open Thread"),
|
|
@@ -15022,7 +15093,7 @@ var DefaultMessageActionComponents = {
|
|
|
15022
15093
|
"data-testid": "thread-action",
|
|
15023
15094
|
onClick: handleOpenThread
|
|
15024
15095
|
},
|
|
15025
|
-
/* @__PURE__ */
|
|
15096
|
+
/* @__PURE__ */ import_react42.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
|
|
15026
15097
|
);
|
|
15027
15098
|
}
|
|
15028
15099
|
}
|
|
@@ -15094,7 +15165,7 @@ var MessageActions = ({
|
|
|
15094
15165
|
const { theme } = useChatContext();
|
|
15095
15166
|
const { isMyMessage, message } = useMessageContext();
|
|
15096
15167
|
const { t } = useTranslationContext();
|
|
15097
|
-
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0,
|
|
15168
|
+
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react43.useState)(null);
|
|
15098
15169
|
const filteredMessageActionSet = useBaseMessageActionSetFilter(
|
|
15099
15170
|
messageActionSet,
|
|
15100
15171
|
disableBaseMessageActionSetFilter
|
|
@@ -15104,20 +15175,23 @@ var MessageActions = ({
|
|
|
15104
15175
|
);
|
|
15105
15176
|
const dropdownDialogId = `message-actions--${message.id}`;
|
|
15106
15177
|
const reactionSelectorDialogId = `reaction-selector--${message.id}`;
|
|
15107
|
-
const dialog =
|
|
15108
|
-
const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId);
|
|
15109
|
-
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
|
+
);
|
|
15110
15184
|
if (dropdownActionSet.length + quickActionSet.length === 0) {
|
|
15111
15185
|
return null;
|
|
15112
15186
|
}
|
|
15113
|
-
return /* @__PURE__ */
|
|
15187
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
15114
15188
|
"div",
|
|
15115
15189
|
{
|
|
15116
15190
|
className: (0, import_clsx9.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
|
|
15117
15191
|
"str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
|
|
15118
15192
|
})
|
|
15119
15193
|
},
|
|
15120
|
-
dropdownActionSet.length > 0 && /* @__PURE__ */
|
|
15194
|
+
dropdownActionSet.length > 0 && /* @__PURE__ */ import_react43.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react43.default.createElement(
|
|
15121
15195
|
"button",
|
|
15122
15196
|
{
|
|
15123
15197
|
"aria-expanded": dropdownDialogIsOpen,
|
|
@@ -15127,31 +15201,32 @@ var MessageActions = ({
|
|
|
15127
15201
|
"data-testid": "message-actions-toggle-button",
|
|
15128
15202
|
ref: setActionsBoxButtonElement
|
|
15129
15203
|
},
|
|
15130
|
-
/* @__PURE__ */
|
|
15131
|
-
), /* @__PURE__ */
|
|
15204
|
+
/* @__PURE__ */ import_react43.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
|
|
15205
|
+
), /* @__PURE__ */ import_react43.default.createElement(
|
|
15132
15206
|
DialogAnchor,
|
|
15133
15207
|
{
|
|
15208
|
+
dialogManagerId: dialogManager?.id,
|
|
15134
15209
|
id: dropdownDialogId,
|
|
15135
15210
|
placement: isMyMessage() ? "top-end" : "top-start",
|
|
15136
15211
|
referenceElement: actionsBoxButtonElement,
|
|
15137
15212
|
tabIndex: -1,
|
|
15138
15213
|
trapFocus: true
|
|
15139
15214
|
},
|
|
15140
|
-
/* @__PURE__ */
|
|
15215
|
+
/* @__PURE__ */ import_react43.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(DropdownActionComponent, { key: type })))
|
|
15141
15216
|
)),
|
|
15142
|
-
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */
|
|
15217
|
+
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(QuickActionComponent, { key: type }))
|
|
15143
15218
|
);
|
|
15144
15219
|
};
|
|
15145
15220
|
var DropdownBox = ({ children, open }) => {
|
|
15146
15221
|
const { t } = useTranslationContext();
|
|
15147
|
-
return /* @__PURE__ */
|
|
15222
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
15148
15223
|
"div",
|
|
15149
15224
|
{
|
|
15150
15225
|
className: (0, import_clsx9.default)("str-chat__message-actions-box", {
|
|
15151
15226
|
"str-chat__message-actions-box--open": open
|
|
15152
15227
|
})
|
|
15153
15228
|
},
|
|
15154
|
-
/* @__PURE__ */
|
|
15229
|
+
/* @__PURE__ */ import_react43.default.createElement(
|
|
15155
15230
|
"div",
|
|
15156
15231
|
{
|
|
15157
15232
|
"aria-label": t("aria/Message Options"),
|
|
@@ -15165,21 +15240,21 @@ var DropdownBox = ({ children, open }) => {
|
|
|
15165
15240
|
|
|
15166
15241
|
// src/experimental/Search/Search.tsx
|
|
15167
15242
|
var import_clsx12 = __toESM(require("clsx"));
|
|
15168
|
-
var
|
|
15243
|
+
var import_react56 = __toESM(require("react"));
|
|
15169
15244
|
|
|
15170
15245
|
// src/experimental/Search/SearchBar/SearchBar.tsx
|
|
15171
15246
|
var import_clsx10 = __toESM(require("clsx"));
|
|
15172
|
-
var
|
|
15247
|
+
var import_react45 = __toESM(require("react"));
|
|
15173
15248
|
|
|
15174
15249
|
// src/experimental/Search/SearchContext.tsx
|
|
15175
|
-
var
|
|
15176
|
-
var SearchContext = (0,
|
|
15250
|
+
var import_react44 = __toESM(require("react"));
|
|
15251
|
+
var SearchContext = (0, import_react44.createContext)(void 0);
|
|
15177
15252
|
var SearchContextProvider = ({
|
|
15178
15253
|
children,
|
|
15179
15254
|
value
|
|
15180
|
-
}) => /* @__PURE__ */
|
|
15255
|
+
}) => /* @__PURE__ */ import_react44.default.createElement(SearchContext.Provider, { value }, children);
|
|
15181
15256
|
var useSearchContext = () => {
|
|
15182
|
-
const contextValue = (0,
|
|
15257
|
+
const contextValue = (0, import_react44.useContext)(SearchContext);
|
|
15183
15258
|
return contextValue;
|
|
15184
15259
|
};
|
|
15185
15260
|
|
|
@@ -15192,12 +15267,12 @@ var SearchBar = () => {
|
|
|
15192
15267
|
const { t } = useTranslationContext();
|
|
15193
15268
|
const { disabled, exitSearchOnInputBlur, placeholder, searchController } = useSearchContext();
|
|
15194
15269
|
const queriesInProgress = useSearchQueriesInProgress(searchController);
|
|
15195
|
-
const [input, setInput] = (0,
|
|
15270
|
+
const [input, setInput] = (0, import_react45.useState)(null);
|
|
15196
15271
|
const { isActive, searchQuery } = useStateStore(
|
|
15197
15272
|
searchController.state,
|
|
15198
15273
|
searchControllerStateSelector2
|
|
15199
15274
|
);
|
|
15200
|
-
(0,
|
|
15275
|
+
(0, import_react45.useEffect)(() => {
|
|
15201
15276
|
if (!input) return;
|
|
15202
15277
|
const handleKeyDown = (event) => {
|
|
15203
15278
|
if (event.key === "Escape") {
|
|
@@ -15210,15 +15285,15 @@ var SearchBar = () => {
|
|
|
15210
15285
|
document.removeEventListener("keydown", handleKeyDown);
|
|
15211
15286
|
};
|
|
15212
15287
|
}, [searchController, input]);
|
|
15213
|
-
return /* @__PURE__ */
|
|
15288
|
+
return /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
15214
15289
|
"div",
|
|
15215
15290
|
{
|
|
15216
15291
|
className: (0, import_clsx10.default)("str-chat__search-input--wrapper", {
|
|
15217
15292
|
"str-chat__search-input--wrapper-active": isActive
|
|
15218
15293
|
})
|
|
15219
15294
|
},
|
|
15220
|
-
/* @__PURE__ */
|
|
15221
|
-
/* @__PURE__ */
|
|
15295
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--icon" }),
|
|
15296
|
+
/* @__PURE__ */ import_react45.default.createElement(
|
|
15222
15297
|
"input",
|
|
15223
15298
|
{
|
|
15224
15299
|
className: "str-chat__search-input",
|
|
@@ -15241,7 +15316,7 @@ var SearchBar = () => {
|
|
|
15241
15316
|
value: searchQuery
|
|
15242
15317
|
}
|
|
15243
15318
|
),
|
|
15244
|
-
searchQuery && /* @__PURE__ */
|
|
15319
|
+
searchQuery && /* @__PURE__ */ import_react45.default.createElement(
|
|
15245
15320
|
"button",
|
|
15246
15321
|
{
|
|
15247
15322
|
className: "str-chat__search-input--clear-button",
|
|
@@ -15252,9 +15327,9 @@ var SearchBar = () => {
|
|
|
15252
15327
|
input?.focus();
|
|
15253
15328
|
}
|
|
15254
15329
|
},
|
|
15255
|
-
/* @__PURE__ */
|
|
15330
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
|
|
15256
15331
|
)
|
|
15257
|
-
), isActive ? /* @__PURE__ */
|
|
15332
|
+
), isActive ? /* @__PURE__ */ import_react45.default.createElement(
|
|
15258
15333
|
"button",
|
|
15259
15334
|
{
|
|
15260
15335
|
className: (0, import_clsx10.default)(
|
|
@@ -15271,25 +15346,25 @@ var SearchBar = () => {
|
|
|
15271
15346
|
};
|
|
15272
15347
|
|
|
15273
15348
|
// src/experimental/Search/SearchResults/SearchResults.tsx
|
|
15274
|
-
var
|
|
15349
|
+
var import_react55 = __toESM(require("react"));
|
|
15275
15350
|
|
|
15276
15351
|
// src/experimental/Search/SearchResults/SearchSourceResults.tsx
|
|
15277
|
-
var
|
|
15352
|
+
var import_react52 = __toESM(require("react"));
|
|
15278
15353
|
|
|
15279
15354
|
// src/experimental/Search/SearchResults/SearchSourceResultList.tsx
|
|
15280
|
-
var
|
|
15355
|
+
var import_react50 = __toESM(require("react"));
|
|
15281
15356
|
|
|
15282
15357
|
// src/experimental/Search/SearchResults/SearchResultItem.tsx
|
|
15283
|
-
var
|
|
15358
|
+
var import_react46 = __toESM(require("react"));
|
|
15284
15359
|
var import_lodash3 = __toESM(require("lodash.uniqby"));
|
|
15285
15360
|
var ChannelSearchResultItem = ({ item }) => {
|
|
15286
15361
|
const { setActiveChannel } = useChatContext();
|
|
15287
15362
|
const { setChannels } = useChannelListContext();
|
|
15288
|
-
const onSelect = (0,
|
|
15363
|
+
const onSelect = (0, import_react46.useCallback)(() => {
|
|
15289
15364
|
setActiveChannel(item);
|
|
15290
15365
|
setChannels?.((channels) => (0, import_lodash3.default)([item, ...channels], "cid"));
|
|
15291
15366
|
}, [item, setActiveChannel, setChannels]);
|
|
15292
|
-
return /* @__PURE__ */
|
|
15367
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
15293
15368
|
ChannelPreview,
|
|
15294
15369
|
{
|
|
15295
15370
|
channel: item,
|
|
@@ -15308,13 +15383,13 @@ var MessageSearchResultItem = ({
|
|
|
15308
15383
|
setActiveChannel
|
|
15309
15384
|
} = useChatContext();
|
|
15310
15385
|
const { setChannels } = useChannelListContext();
|
|
15311
|
-
const channel = (0,
|
|
15386
|
+
const channel = (0, import_react46.useMemo)(() => {
|
|
15312
15387
|
const { channel: channelData } = item;
|
|
15313
15388
|
const type = channelData?.type ?? "unknown";
|
|
15314
15389
|
const id = channelData?.id ?? "unknown";
|
|
15315
15390
|
return client.channel(type, id);
|
|
15316
15391
|
}, [client, item]);
|
|
15317
|
-
const onSelect = (0,
|
|
15392
|
+
const onSelect = (0, import_react46.useCallback)(async () => {
|
|
15318
15393
|
if (!channel) return;
|
|
15319
15394
|
await channel.state.loadMessageIntoState(
|
|
15320
15395
|
item.id,
|
|
@@ -15325,9 +15400,9 @@ var MessageSearchResultItem = ({
|
|
|
15325
15400
|
setActiveChannel(channel);
|
|
15326
15401
|
setChannels?.((channels) => (0, import_lodash3.default)([channel, ...channels], "cid"));
|
|
15327
15402
|
}, [channel, item, searchController, setActiveChannel, setChannels]);
|
|
15328
|
-
const getLatestMessagePreview2 = (0,
|
|
15403
|
+
const getLatestMessagePreview2 = (0, import_react46.useCallback)(() => item.text, [item]);
|
|
15329
15404
|
if (!channel) return;
|
|
15330
|
-
return /* @__PURE__ */
|
|
15405
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
15331
15406
|
ChannelPreview,
|
|
15332
15407
|
{
|
|
15333
15408
|
active: channel.cid === activeChannel?.cid && item.id === searchController._internalState.getLatestValue().focusedMessage?.id,
|
|
@@ -15342,7 +15417,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
15342
15417
|
const { client, setActiveChannel } = useChatContext();
|
|
15343
15418
|
const { setChannels } = useChannelListContext();
|
|
15344
15419
|
const { directMessagingChannelType } = useSearchContext();
|
|
15345
|
-
const onClick = (0,
|
|
15420
|
+
const onClick = (0, import_react46.useCallback)(() => {
|
|
15346
15421
|
const newChannel = client.channel(directMessagingChannelType, {
|
|
15347
15422
|
members: [client.userID, item.id]
|
|
15348
15423
|
});
|
|
@@ -15350,7 +15425,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
15350
15425
|
setActiveChannel(newChannel);
|
|
15351
15426
|
setChannels?.((channels) => (0, import_lodash3.default)([newChannel, ...channels], "cid"));
|
|
15352
15427
|
}, [client, item, setActiveChannel, setChannels, directMessagingChannelType]);
|
|
15353
|
-
return /* @__PURE__ */
|
|
15428
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
15354
15429
|
"button",
|
|
15355
15430
|
{
|
|
15356
15431
|
"aria-label": `Select User Channel: ${item.name || ""}`,
|
|
@@ -15359,7 +15434,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
15359
15434
|
onClick,
|
|
15360
15435
|
role: "option"
|
|
15361
15436
|
},
|
|
15362
|
-
/* @__PURE__ */
|
|
15437
|
+
/* @__PURE__ */ import_react46.default.createElement(
|
|
15363
15438
|
Avatar,
|
|
15364
15439
|
{
|
|
15365
15440
|
className: "str-chat__avatar--channel-preview",
|
|
@@ -15368,7 +15443,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
15368
15443
|
user: item
|
|
15369
15444
|
}
|
|
15370
15445
|
),
|
|
15371
|
-
/* @__PURE__ */
|
|
15446
|
+
/* @__PURE__ */ import_react46.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
|
|
15372
15447
|
);
|
|
15373
15448
|
};
|
|
15374
15449
|
var DefaultSearchResultItems = {
|
|
@@ -15378,18 +15453,18 @@ var DefaultSearchResultItems = {
|
|
|
15378
15453
|
};
|
|
15379
15454
|
|
|
15380
15455
|
// src/experimental/Search/SearchResults/SearchSourceResultListFooter.tsx
|
|
15381
|
-
var
|
|
15456
|
+
var import_react49 = __toESM(require("react"));
|
|
15382
15457
|
|
|
15383
15458
|
// src/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.tsx
|
|
15384
|
-
var
|
|
15459
|
+
var import_react48 = __toESM(require("react"));
|
|
15385
15460
|
|
|
15386
15461
|
// src/experimental/Search/SearchSourceResultsContext.tsx
|
|
15387
|
-
var
|
|
15388
|
-
var SearchSourceResultsContext = (0,
|
|
15462
|
+
var import_react47 = __toESM(require("react"));
|
|
15463
|
+
var SearchSourceResultsContext = (0, import_react47.createContext)(void 0);
|
|
15389
15464
|
var SearchSourceResultsContextProvider = ({
|
|
15390
15465
|
children,
|
|
15391
15466
|
value
|
|
15392
|
-
}) => /* @__PURE__ */
|
|
15467
|
+
}) => /* @__PURE__ */ import_react47.default.createElement(
|
|
15393
15468
|
SearchSourceResultsContext.Provider,
|
|
15394
15469
|
{
|
|
15395
15470
|
value
|
|
@@ -15397,7 +15472,7 @@ var SearchSourceResultsContextProvider = ({
|
|
|
15397
15472
|
children
|
|
15398
15473
|
);
|
|
15399
15474
|
var useSearchSourceResultsContext = () => {
|
|
15400
|
-
const contextValue = (0,
|
|
15475
|
+
const contextValue = (0, import_react47.useContext)(SearchSourceResultsContext);
|
|
15401
15476
|
return contextValue;
|
|
15402
15477
|
};
|
|
15403
15478
|
|
|
@@ -15405,7 +15480,7 @@ var useSearchSourceResultsContext = () => {
|
|
|
15405
15480
|
var SearchSourceResultsLoadingIndicator = () => {
|
|
15406
15481
|
const { t } = useTranslationContext();
|
|
15407
15482
|
const { searchSource } = useSearchSourceResultsContext();
|
|
15408
|
-
return /* @__PURE__ */
|
|
15483
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
15409
15484
|
"div",
|
|
15410
15485
|
{
|
|
15411
15486
|
className: "str-chat__search-source-results__loading-indicator",
|
|
@@ -15430,13 +15505,13 @@ var SearchSourceResultListFooter = () => {
|
|
|
15430
15505
|
searchSource.state,
|
|
15431
15506
|
searchSourceStateSelector
|
|
15432
15507
|
);
|
|
15433
|
-
return /* @__PURE__ */
|
|
15508
|
+
return /* @__PURE__ */ import_react49.default.createElement(
|
|
15434
15509
|
"div",
|
|
15435
15510
|
{
|
|
15436
15511
|
className: "str-chat__search-source-result-list__footer",
|
|
15437
15512
|
"data-testid": "search-footer"
|
|
15438
15513
|
},
|
|
15439
|
-
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
|
|
15440
15515
|
);
|
|
15441
15516
|
};
|
|
15442
15517
|
|
|
@@ -15454,36 +15529,36 @@ var SearchSourceResultList = ({
|
|
|
15454
15529
|
const { items } = useStateStore(searchSource.state, searchSourceStateSelector2);
|
|
15455
15530
|
const SearchResultItem = SearchResultItems[searchSource.type];
|
|
15456
15531
|
if (!SearchResultItem) return null;
|
|
15457
|
-
return /* @__PURE__ */
|
|
15532
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
15458
15533
|
"div",
|
|
15459
15534
|
{
|
|
15460
15535
|
className: "str-chat__search-source-result-list",
|
|
15461
15536
|
"data-testid": "search-source-result-list"
|
|
15462
15537
|
},
|
|
15463
|
-
/* @__PURE__ */
|
|
15538
|
+
/* @__PURE__ */ import_react50.default.createElement(
|
|
15464
15539
|
InfiniteScrollPaginator,
|
|
15465
15540
|
{
|
|
15466
15541
|
loadNextDebounceMs: loadMoreDebounceMs,
|
|
15467
15542
|
loadNextOnScrollToBottom: searchSource.search,
|
|
15468
15543
|
threshold: loadMoreThresholdPx
|
|
15469
15544
|
},
|
|
15470
|
-
items?.map((item, i) => /* @__PURE__ */
|
|
15545
|
+
items?.map((item, i) => /* @__PURE__ */ import_react50.default.createElement(
|
|
15471
15546
|
SearchResultItem,
|
|
15472
15547
|
{
|
|
15473
15548
|
item,
|
|
15474
15549
|
key: `source-search-result-${searchSource.type}-${i}`
|
|
15475
15550
|
}
|
|
15476
15551
|
)),
|
|
15477
|
-
/* @__PURE__ */
|
|
15552
|
+
/* @__PURE__ */ import_react50.default.createElement(SearchSourceResultListFooter2, null)
|
|
15478
15553
|
)
|
|
15479
15554
|
);
|
|
15480
15555
|
};
|
|
15481
15556
|
|
|
15482
15557
|
// src/experimental/Search/SearchResults/SearchSourceResultsEmpty.tsx
|
|
15483
|
-
var
|
|
15558
|
+
var import_react51 = __toESM(require("react"));
|
|
15484
15559
|
var SearchSourceResultsEmpty = () => {
|
|
15485
15560
|
const { t } = useTranslationContext();
|
|
15486
|
-
return /* @__PURE__ */
|
|
15561
|
+
return /* @__PURE__ */ import_react51.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
|
|
15487
15562
|
};
|
|
15488
15563
|
|
|
15489
15564
|
// src/experimental/Search/SearchResults/SearchSourceResultsHeader.tsx
|
|
@@ -15505,20 +15580,20 @@ var SearchSourceResults = ({ searchSource }) => {
|
|
|
15505
15580
|
searchSourceStateSelector3
|
|
15506
15581
|
);
|
|
15507
15582
|
if (!items && !isLoading) return null;
|
|
15508
|
-
return /* @__PURE__ */
|
|
15583
|
+
return /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
15509
15584
|
"div",
|
|
15510
15585
|
{
|
|
15511
15586
|
className: "str-chat__search-source-results",
|
|
15512
15587
|
"data-testid": "search-source-results"
|
|
15513
15588
|
},
|
|
15514
|
-
/* @__PURE__ */
|
|
15515
|
-
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)
|
|
15516
15591
|
));
|
|
15517
15592
|
};
|
|
15518
15593
|
|
|
15519
15594
|
// src/experimental/Search/SearchResults/SearchResultsHeader.tsx
|
|
15520
15595
|
var import_clsx11 = __toESM(require("clsx"));
|
|
15521
|
-
var
|
|
15596
|
+
var import_react53 = __toESM(require("react"));
|
|
15522
15597
|
var searchSourceStateSelector4 = (nextValue) => ({
|
|
15523
15598
|
isActive: nextValue.isActive
|
|
15524
15599
|
});
|
|
@@ -15527,7 +15602,7 @@ var SearchSourceFilterButton = ({ source }) => {
|
|
|
15527
15602
|
const { searchController } = useSearchContext();
|
|
15528
15603
|
const { isActive } = useStateStore(source.state, searchSourceStateSelector4);
|
|
15529
15604
|
const label = `search-results-header-filter-source-button-label--${source.type}`;
|
|
15530
|
-
return /* @__PURE__ */
|
|
15605
|
+
return /* @__PURE__ */ import_react53.default.createElement(
|
|
15531
15606
|
"button",
|
|
15532
15607
|
{
|
|
15533
15608
|
"aria-label": t("aria/Search results header filter button"),
|
|
@@ -15550,13 +15625,13 @@ var SearchSourceFilterButton = ({ source }) => {
|
|
|
15550
15625
|
};
|
|
15551
15626
|
var SearchResultsHeader = () => {
|
|
15552
15627
|
const { searchController } = useSearchContext();
|
|
15553
|
-
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(
|
|
15554
15629
|
"div",
|
|
15555
15630
|
{
|
|
15556
15631
|
className: "str-chat__search-results-header__filter-source-buttons",
|
|
15557
15632
|
"data-testid": "filter-source-buttons"
|
|
15558
15633
|
},
|
|
15559
|
-
searchController.sources.map((source) => /* @__PURE__ */
|
|
15634
|
+
searchController.sources.map((source) => /* @__PURE__ */ import_react53.default.createElement(
|
|
15560
15635
|
SearchSourceFilterButton,
|
|
15561
15636
|
{
|
|
15562
15637
|
key: `search-source-filter-button-${source.type}`,
|
|
@@ -15567,10 +15642,10 @@ var SearchResultsHeader = () => {
|
|
|
15567
15642
|
};
|
|
15568
15643
|
|
|
15569
15644
|
// src/experimental/Search/SearchResults/SearchResultsPresearch.tsx
|
|
15570
|
-
var
|
|
15645
|
+
var import_react54 = __toESM(require("react"));
|
|
15571
15646
|
var SearchResultsPresearch = () => {
|
|
15572
15647
|
const { t } = useTranslationContext();
|
|
15573
|
-
return /* @__PURE__ */
|
|
15648
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
|
|
15574
15649
|
};
|
|
15575
15650
|
|
|
15576
15651
|
// src/experimental/Search/SearchResults/SearchResults.tsx
|
|
@@ -15591,7 +15666,7 @@ var SearchResults = () => {
|
|
|
15591
15666
|
searchController.state,
|
|
15592
15667
|
searchControllerStateSelector3
|
|
15593
15668
|
);
|
|
15594
|
-
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 })));
|
|
15595
15670
|
};
|
|
15596
15671
|
|
|
15597
15672
|
// src/experimental/Search/Search.tsx
|
|
@@ -15605,7 +15680,7 @@ var Search = ({
|
|
|
15605
15680
|
const { SearchBar: SearchBar2 = SearchBar, SearchResults: SearchResults2 = SearchResults } = useComponentContext();
|
|
15606
15681
|
const { searchController } = useChatContext();
|
|
15607
15682
|
const { isActive } = useStateStore(searchController.state, searchControllerStateSelector4);
|
|
15608
|
-
return /* @__PURE__ */
|
|
15683
|
+
return /* @__PURE__ */ import_react56.default.createElement(
|
|
15609
15684
|
SearchContextProvider,
|
|
15610
15685
|
{
|
|
15611
15686
|
value: {
|
|
@@ -15616,7 +15691,7 @@ var Search = ({
|
|
|
15616
15691
|
searchController
|
|
15617
15692
|
}
|
|
15618
15693
|
},
|
|
15619
|
-
/* @__PURE__ */
|
|
15694
|
+
/* @__PURE__ */ import_react56.default.createElement(
|
|
15620
15695
|
"div",
|
|
15621
15696
|
{
|
|
15622
15697
|
className: (0, import_clsx12.default)("str-chat__search", {
|
|
@@ -15624,8 +15699,8 @@ var Search = ({
|
|
|
15624
15699
|
}),
|
|
15625
15700
|
"data-testid": "search"
|
|
15626
15701
|
},
|
|
15627
|
-
/* @__PURE__ */
|
|
15628
|
-
/* @__PURE__ */
|
|
15702
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchBar2, null),
|
|
15703
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchResults2, null)
|
|
15629
15704
|
)
|
|
15630
15705
|
);
|
|
15631
15706
|
};
|