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