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() {
|
|
@@ -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,54 +16526,62 @@ 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,
|
|
16474
|
-
(message) => client.user && message
|
|
16535
|
+
const [messageDeliveryStatus, setMessageDeliveryStatus] = (0, import_react35.useState)();
|
|
16536
|
+
const isOwnMessage = (0, import_react35.useCallback)(
|
|
16537
|
+
(message) => client.user && message && message.user?.id === client.user.id,
|
|
16475
16538
|
[client]
|
|
16476
16539
|
);
|
|
16477
|
-
(0,
|
|
16540
|
+
(0, import_react35.useEffect)(() => {
|
|
16541
|
+
if (!lastMessage) {
|
|
16542
|
+
setMessageDeliveryStatus(void 0);
|
|
16543
|
+
}
|
|
16478
16544
|
const lastMessageIsOwn = isOwnMessage(lastMessage);
|
|
16479
16545
|
if (!lastMessage?.created_at || !lastMessageIsOwn) return;
|
|
16480
|
-
const
|
|
16481
|
-
|
|
16482
|
-
|
|
16483
|
-
|
|
16484
|
-
|
|
16485
|
-
|
|
16486
|
-
});
|
|
16546
|
+
const msgRef = {
|
|
16547
|
+
msgId: lastMessage.id,
|
|
16548
|
+
timestampMs: lastMessage.created_at.getTime()
|
|
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
|
|
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);
|
|
16495
16560
|
}
|
|
16496
|
-
return setMessageDeliveryStatus("
|
|
16561
|
+
return setMessageDeliveryStatus("sent" /* SENT */);
|
|
16497
16562
|
};
|
|
16498
16563
|
channel.on("message.new", handleMessageNew);
|
|
16499
16564
|
return () => {
|
|
16500
16565
|
channel.off("message.new", handleMessageNew);
|
|
16501
16566
|
};
|
|
16502
|
-
}, [channel,
|
|
16503
|
-
(0,
|
|
16567
|
+
}, [channel, isOwnMessage]);
|
|
16568
|
+
(0, import_react35.useEffect)(() => {
|
|
16504
16569
|
if (!isOwnMessage(lastMessage)) return;
|
|
16570
|
+
const handleMessageDelivered = (event) => {
|
|
16571
|
+
if (event.user?.id !== client.user?.id && lastMessage && lastMessage.id === event.last_delivered_message_id)
|
|
16572
|
+
setMessageDeliveryStatus("delivered" /* DELIVERED */);
|
|
16573
|
+
};
|
|
16505
16574
|
const handleMarkRead = (event) => {
|
|
16506
16575
|
if (event.user?.id !== client.user?.id)
|
|
16507
16576
|
setMessageDeliveryStatus("read" /* READ */);
|
|
16508
16577
|
};
|
|
16578
|
+
channel.on("message.delivered", handleMessageDelivered);
|
|
16509
16579
|
channel.on("message.read", handleMarkRead);
|
|
16510
16580
|
return () => {
|
|
16581
|
+
channel.off("message.delivered", handleMessageDelivered);
|
|
16511
16582
|
channel.off("message.read", handleMarkRead);
|
|
16512
16583
|
};
|
|
16513
|
-
}, [channel, client,
|
|
16584
|
+
}, [channel, client, isOwnMessage, lastMessage]);
|
|
16514
16585
|
return {
|
|
16515
16586
|
messageDeliveryStatus
|
|
16516
16587
|
};
|
|
@@ -16535,20 +16606,20 @@ var ChannelPreview = (props) => {
|
|
|
16535
16606
|
const { displayImage, displayTitle, groupChannelDisplayInfo } = useChannelPreviewInfo({
|
|
16536
16607
|
channel
|
|
16537
16608
|
});
|
|
16538
|
-
const [lastMessage, setLastMessage] = (0,
|
|
16609
|
+
const [lastMessage, setLastMessage] = (0, import_react36.useState)(
|
|
16539
16610
|
channel.state.messages[channel.state.messages.length - 1]
|
|
16540
16611
|
);
|
|
16541
|
-
const [latestMessagePreview, setLatestMessagePreview] = (0,
|
|
16612
|
+
const [latestMessagePreview, setLatestMessagePreview] = (0, import_react36.useState)(
|
|
16542
16613
|
() => getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
|
|
16543
16614
|
);
|
|
16544
|
-
const [unread, setUnread] = (0,
|
|
16615
|
+
const [unread, setUnread] = (0, import_react36.useState)(0);
|
|
16545
16616
|
const { messageDeliveryStatus } = useMessageDeliveryStatus({
|
|
16546
16617
|
channel,
|
|
16547
16618
|
lastMessage
|
|
16548
16619
|
});
|
|
16549
16620
|
const isActive = typeof active === "undefined" ? activeChannel?.cid === channel.cid : active;
|
|
16550
16621
|
const { muted } = useIsChannelMuted(channel);
|
|
16551
|
-
(0,
|
|
16622
|
+
(0, import_react36.useEffect)(() => {
|
|
16552
16623
|
const handleEvent = (event) => {
|
|
16553
16624
|
if (!event.cid) return setUnread(0);
|
|
16554
16625
|
if (channel.cid === event.cid) setUnread(0);
|
|
@@ -16556,7 +16627,7 @@ var ChannelPreview = (props) => {
|
|
|
16556
16627
|
client.on("notification.mark_read", handleEvent);
|
|
16557
16628
|
return () => client.off("notification.mark_read", handleEvent);
|
|
16558
16629
|
}, [channel, client]);
|
|
16559
|
-
(0,
|
|
16630
|
+
(0, import_react36.useEffect)(() => {
|
|
16560
16631
|
const handleEvent = (event) => {
|
|
16561
16632
|
if (channel.cid !== event.cid) return;
|
|
16562
16633
|
if (event.user?.id !== client.user?.id) return;
|
|
@@ -16567,7 +16638,7 @@ var ChannelPreview = (props) => {
|
|
|
16567
16638
|
channel.off("notification.mark_unread", handleEvent);
|
|
16568
16639
|
};
|
|
16569
16640
|
}, [channel, client]);
|
|
16570
|
-
const refreshUnreadCount = (0,
|
|
16641
|
+
const refreshUnreadCount = (0, import_react36.useMemo)(
|
|
16571
16642
|
() => (0, import_lodash2.default)(() => {
|
|
16572
16643
|
if (muted) {
|
|
16573
16644
|
setUnread(0);
|
|
@@ -16577,7 +16648,7 @@ var ChannelPreview = (props) => {
|
|
|
16577
16648
|
}, 400),
|
|
16578
16649
|
[channel, muted]
|
|
16579
16650
|
);
|
|
16580
|
-
(0,
|
|
16651
|
+
(0, import_react36.useEffect)(() => {
|
|
16581
16652
|
refreshUnreadCount();
|
|
16582
16653
|
setLatestMessagePreview(
|
|
16583
16654
|
getLatestMessagePreview2(channel, t, userLanguage, isMessageAIGenerated)
|
|
@@ -16618,7 +16689,7 @@ var ChannelPreview = (props) => {
|
|
|
16618
16689
|
isMessageAIGenerated
|
|
16619
16690
|
]);
|
|
16620
16691
|
if (!Preview) return null;
|
|
16621
|
-
return /* @__PURE__ */
|
|
16692
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
16622
16693
|
Preview,
|
|
16623
16694
|
{
|
|
16624
16695
|
...props,
|
|
@@ -16637,9 +16708,9 @@ var ChannelPreview = (props) => {
|
|
|
16637
16708
|
};
|
|
16638
16709
|
|
|
16639
16710
|
// src/components/Thread/LegacyThreadContext.ts
|
|
16640
|
-
var
|
|
16641
|
-
var LegacyThreadContext =
|
|
16642
|
-
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);
|
|
16643
16714
|
|
|
16644
16715
|
// src/components/MessageInput/hooks/useMessageComposer.ts
|
|
16645
16716
|
var queueCache = new import_stream_chat2.FixedSizeQueueCache(64);
|
|
@@ -16649,15 +16720,15 @@ var useMessageComposer = () => {
|
|
|
16649
16720
|
const { editing, message: editedMessage } = useMessageContext();
|
|
16650
16721
|
const { legacyThread: parentMessage } = useLegacyThreadContext();
|
|
16651
16722
|
const threadInstance = useThreadContext();
|
|
16652
|
-
const cachedEditedMessage = (0,
|
|
16723
|
+
const cachedEditedMessage = (0, import_react38.useMemo)(() => {
|
|
16653
16724
|
if (!editedMessage) return void 0;
|
|
16654
16725
|
return editedMessage;
|
|
16655
16726
|
}, [editedMessage?.id]);
|
|
16656
|
-
const cachedParentMessage = (0,
|
|
16727
|
+
const cachedParentMessage = (0, import_react38.useMemo)(() => {
|
|
16657
16728
|
if (!parentMessage) return void 0;
|
|
16658
16729
|
return parentMessage;
|
|
16659
16730
|
}, [parentMessage?.id]);
|
|
16660
|
-
const messageComposer = (0,
|
|
16731
|
+
const messageComposer = (0, import_react38.useMemo)(() => {
|
|
16661
16732
|
if (editing && cachedEditedMessage) {
|
|
16662
16733
|
const tag = import_stream_chat2.MessageComposer.constructTag(cachedEditedMessage);
|
|
16663
16734
|
const cachedComposer = queueCache.get(tag);
|
|
@@ -16700,7 +16771,7 @@ var useMessageComposer = () => {
|
|
|
16700
16771
|
) && !queueCache.peek(messageComposer.tag)) {
|
|
16701
16772
|
queueCache.add(messageComposer.tag, messageComposer);
|
|
16702
16773
|
}
|
|
16703
|
-
(0,
|
|
16774
|
+
(0, import_react38.useEffect)(() => {
|
|
16704
16775
|
const unsubscribe = messageComposer.registerSubscriptions();
|
|
16705
16776
|
return () => {
|
|
16706
16777
|
unsubscribe();
|
|
@@ -16710,17 +16781,17 @@ var useMessageComposer = () => {
|
|
|
16710
16781
|
};
|
|
16711
16782
|
|
|
16712
16783
|
// src/experimental/Search/hooks/useSearchQueriesInProgress.ts
|
|
16713
|
-
var
|
|
16784
|
+
var import_react39 = require("react");
|
|
16714
16785
|
var searchControllerStateSelector = (value) => ({
|
|
16715
16786
|
sources: value.sources
|
|
16716
16787
|
});
|
|
16717
16788
|
var useSearchQueriesInProgress = (searchController) => {
|
|
16718
|
-
const [queriesInProgress, setQueriesInProgress] = (0,
|
|
16789
|
+
const [queriesInProgress, setQueriesInProgress] = (0, import_react39.useState)([]);
|
|
16719
16790
|
const { sources } = useStateStore(
|
|
16720
16791
|
searchController.state,
|
|
16721
16792
|
searchControllerStateSelector
|
|
16722
16793
|
);
|
|
16723
|
-
(0,
|
|
16794
|
+
(0, import_react39.useEffect)(() => {
|
|
16724
16795
|
const subscriptions = sources.map(
|
|
16725
16796
|
(source) => source.state.subscribeWithSelector(
|
|
16726
16797
|
(value) => ({ isLoading: value.isLoading }),
|
|
@@ -16740,7 +16811,7 @@ var useSearchQueriesInProgress = (searchController) => {
|
|
|
16740
16811
|
};
|
|
16741
16812
|
|
|
16742
16813
|
// src/experimental/MessageActions/hooks/useBaseMessageActionSetFilter.ts
|
|
16743
|
-
var
|
|
16814
|
+
var import_react40 = require("react");
|
|
16744
16815
|
var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
16745
16816
|
const { initialMessage: isInitialMessage, message } = useMessageContext();
|
|
16746
16817
|
const {
|
|
@@ -16754,7 +16825,7 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
|
16754
16825
|
canReply
|
|
16755
16826
|
} = useUserRole(message);
|
|
16756
16827
|
const isMessageThreadReply = typeof message.parent_id === "string";
|
|
16757
|
-
return (0,
|
|
16828
|
+
return (0, import_react40.useMemo)(() => {
|
|
16758
16829
|
if (disable2) return messageActionSet;
|
|
16759
16830
|
if (isInitialMessage || // not sure whether this thing even works anymore
|
|
16760
16831
|
!message.type || message.type === "error" || message.type === "system" || message.type === "ephemeral" || message.status === "failed" || message.status === "sending")
|
|
@@ -16785,8 +16856,8 @@ var useBaseMessageActionSetFilter = (messageActionSet, disable2 = false) => {
|
|
|
16785
16856
|
};
|
|
16786
16857
|
|
|
16787
16858
|
// src/experimental/MessageActions/hooks/useSplitMessageActionSet.ts
|
|
16788
|
-
var
|
|
16789
|
-
var useSplitMessageActionSet = (messageActionSet) => (0,
|
|
16859
|
+
var import_react41 = require("react");
|
|
16860
|
+
var useSplitMessageActionSet = (messageActionSet) => (0, import_react41.useMemo)(() => {
|
|
16790
16861
|
const quickActionSet = [];
|
|
16791
16862
|
const dropdownActionSet = [];
|
|
16792
16863
|
for (const action of messageActionSet) {
|
|
@@ -16797,7 +16868,7 @@ var useSplitMessageActionSet = (messageActionSet) => (0, import_react40.useMemo)
|
|
|
16797
16868
|
}, [messageActionSet]);
|
|
16798
16869
|
|
|
16799
16870
|
// src/experimental/MessageActions/defaults.tsx
|
|
16800
|
-
var
|
|
16871
|
+
var import_react42 = __toESM(require("react"));
|
|
16801
16872
|
var msgActionsBoxButtonClassName = "str-chat__message-actions-list-item-button";
|
|
16802
16873
|
var DefaultDropdownActionButton = ({
|
|
16803
16874
|
"aria-selected": ariaSelected = "false",
|
|
@@ -16805,7 +16876,7 @@ var DefaultDropdownActionButton = ({
|
|
|
16805
16876
|
className = msgActionsBoxButtonClassName,
|
|
16806
16877
|
role = "option",
|
|
16807
16878
|
...rest
|
|
16808
|
-
}) => /* @__PURE__ */
|
|
16879
|
+
}) => /* @__PURE__ */ import_react42.default.createElement("button", { "aria-selected": ariaSelected, className, role, ...rest }, children);
|
|
16809
16880
|
var DefaultMessageActionComponents = {
|
|
16810
16881
|
dropdown: {
|
|
16811
16882
|
Quote() {
|
|
@@ -16820,42 +16891,42 @@ var DefaultMessageActionComponents = {
|
|
|
16820
16891
|
textarea.focus();
|
|
16821
16892
|
}
|
|
16822
16893
|
};
|
|
16823
|
-
return /* @__PURE__ */
|
|
16894
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleQuote }, t("Quote"));
|
|
16824
16895
|
},
|
|
16825
16896
|
Pin() {
|
|
16826
16897
|
const { handlePin, message } = useMessageContext();
|
|
16827
16898
|
const { t } = useTranslationContext();
|
|
16828
|
-
return /* @__PURE__ */
|
|
16899
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handlePin }, !message.pinned ? t("Pin") : t("Unpin"));
|
|
16829
16900
|
},
|
|
16830
16901
|
MarkUnread() {
|
|
16831
16902
|
const { handleMarkUnread } = useMessageContext();
|
|
16832
16903
|
const { t } = useTranslationContext();
|
|
16833
|
-
return /* @__PURE__ */
|
|
16904
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMarkUnread }, t("Mark as unread"));
|
|
16834
16905
|
},
|
|
16835
16906
|
Flag() {
|
|
16836
16907
|
const { handleFlag } = useMessageContext();
|
|
16837
16908
|
const { t } = useTranslationContext();
|
|
16838
|
-
return /* @__PURE__ */
|
|
16909
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleFlag }, t("Flag"));
|
|
16839
16910
|
},
|
|
16840
16911
|
Mute() {
|
|
16841
16912
|
const { handleMute, message } = useMessageContext();
|
|
16842
16913
|
const { mutes } = useChatContext();
|
|
16843
16914
|
const { t } = useTranslationContext();
|
|
16844
|
-
return /* @__PURE__ */
|
|
16915
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleMute }, isUserMuted(message, mutes) ? t("Unmute") : t("Mute"));
|
|
16845
16916
|
},
|
|
16846
16917
|
Edit() {
|
|
16847
16918
|
const { handleEdit } = useMessageContext();
|
|
16848
16919
|
const { t } = useTranslationContext();
|
|
16849
|
-
return /* @__PURE__ */
|
|
16920
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleEdit }, t("Edit Message"));
|
|
16850
16921
|
},
|
|
16851
16922
|
Delete() {
|
|
16852
16923
|
const { handleDelete: handleDelete2 } = useMessageContext();
|
|
16853
16924
|
const { t } = useTranslationContext();
|
|
16854
|
-
return /* @__PURE__ */
|
|
16925
|
+
return /* @__PURE__ */ import_react42.default.createElement(DefaultDropdownActionButton, { onClick: handleDelete2 }, t("Delete"));
|
|
16855
16926
|
},
|
|
16856
16927
|
RemindMe() {
|
|
16857
16928
|
const { isMyMessage } = useMessageContext();
|
|
16858
|
-
return /* @__PURE__ */
|
|
16929
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
16859
16930
|
RemindMeActionButton,
|
|
16860
16931
|
{
|
|
16861
16932
|
className: msgActionsBoxButtonClassName,
|
|
@@ -16868,7 +16939,7 @@ var DefaultMessageActionComponents = {
|
|
|
16868
16939
|
const { message } = useMessageContext();
|
|
16869
16940
|
const { t } = useTranslationContext();
|
|
16870
16941
|
const reminder = useMessageReminder(message.id);
|
|
16871
|
-
return /* @__PURE__ */
|
|
16942
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
16872
16943
|
DefaultDropdownActionButton,
|
|
16873
16944
|
{
|
|
16874
16945
|
onClick: () => reminder ? client.reminders.deleteReminder(reminder.id) : client.reminders.createReminder({ messageId: message.id })
|
|
@@ -16879,12 +16950,12 @@ var DefaultMessageActionComponents = {
|
|
|
16879
16950
|
},
|
|
16880
16951
|
quick: {
|
|
16881
16952
|
React() {
|
|
16882
|
-
return /* @__PURE__ */
|
|
16953
|
+
return /* @__PURE__ */ import_react42.default.createElement(ReactionSelectorWithButton, { ReactionIcon });
|
|
16883
16954
|
},
|
|
16884
16955
|
Reply() {
|
|
16885
16956
|
const { handleOpenThread } = useMessageContext();
|
|
16886
16957
|
const { t } = useTranslationContext();
|
|
16887
|
-
return /* @__PURE__ */
|
|
16958
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
16888
16959
|
"button",
|
|
16889
16960
|
{
|
|
16890
16961
|
"aria-label": t("aria/Open Thread"),
|
|
@@ -16892,7 +16963,7 @@ var DefaultMessageActionComponents = {
|
|
|
16892
16963
|
"data-testid": "thread-action",
|
|
16893
16964
|
onClick: handleOpenThread
|
|
16894
16965
|
},
|
|
16895
|
-
/* @__PURE__ */
|
|
16966
|
+
/* @__PURE__ */ import_react42.default.createElement(ThreadIcon, { className: "str-chat__message-action-icon" })
|
|
16896
16967
|
);
|
|
16897
16968
|
}
|
|
16898
16969
|
}
|
|
@@ -16964,7 +17035,7 @@ var MessageActions = ({
|
|
|
16964
17035
|
const { theme } = useChatContext();
|
|
16965
17036
|
const { isMyMessage, message } = useMessageContext();
|
|
16966
17037
|
const { t } = useTranslationContext();
|
|
16967
|
-
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0,
|
|
17038
|
+
const [actionsBoxButtonElement, setActionsBoxButtonElement] = (0, import_react43.useState)(null);
|
|
16968
17039
|
const filteredMessageActionSet = useBaseMessageActionSetFilter(
|
|
16969
17040
|
messageActionSet,
|
|
16970
17041
|
disableBaseMessageActionSetFilter
|
|
@@ -16974,20 +17045,23 @@ var MessageActions = ({
|
|
|
16974
17045
|
);
|
|
16975
17046
|
const dropdownDialogId = `message-actions--${message.id}`;
|
|
16976
17047
|
const reactionSelectorDialogId = `reaction-selector--${message.id}`;
|
|
16977
|
-
const dialog =
|
|
16978
|
-
const dropdownDialogIsOpen = useDialogIsOpen(dropdownDialogId);
|
|
16979
|
-
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
|
+
);
|
|
16980
17054
|
if (dropdownActionSet.length + quickActionSet.length === 0) {
|
|
16981
17055
|
return null;
|
|
16982
17056
|
}
|
|
16983
|
-
return /* @__PURE__ */
|
|
17057
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
16984
17058
|
"div",
|
|
16985
17059
|
{
|
|
16986
17060
|
className: (0, import_clsx9.default)(`str-chat__message-${theme}__actions str-chat__message-options`, {
|
|
16987
17061
|
"str-chat__message-options--active": dropdownDialogIsOpen || reactionSelectorDialogIsOpen
|
|
16988
17062
|
})
|
|
16989
17063
|
},
|
|
16990
|
-
dropdownActionSet.length > 0 && /* @__PURE__ */
|
|
17064
|
+
dropdownActionSet.length > 0 && /* @__PURE__ */ import_react43.default.createElement(MessageActionsWrapper, { inline: false, toggleOpen: dialog?.toggle }, /* @__PURE__ */ import_react43.default.createElement(
|
|
16991
17065
|
"button",
|
|
16992
17066
|
{
|
|
16993
17067
|
"aria-expanded": dropdownDialogIsOpen,
|
|
@@ -16997,31 +17071,32 @@ var MessageActions = ({
|
|
|
16997
17071
|
"data-testid": "message-actions-toggle-button",
|
|
16998
17072
|
ref: setActionsBoxButtonElement
|
|
16999
17073
|
},
|
|
17000
|
-
/* @__PURE__ */
|
|
17001
|
-
), /* @__PURE__ */
|
|
17074
|
+
/* @__PURE__ */ import_react43.default.createElement(ActionsIcon, { className: "str-chat__message-action-icon" })
|
|
17075
|
+
), /* @__PURE__ */ import_react43.default.createElement(
|
|
17002
17076
|
DialogAnchor,
|
|
17003
17077
|
{
|
|
17078
|
+
dialogManagerId: dialogManager?.id,
|
|
17004
17079
|
id: dropdownDialogId,
|
|
17005
17080
|
placement: isMyMessage() ? "top-end" : "top-start",
|
|
17006
17081
|
referenceElement: actionsBoxButtonElement,
|
|
17007
17082
|
tabIndex: -1,
|
|
17008
17083
|
trapFocus: true
|
|
17009
17084
|
},
|
|
17010
|
-
/* @__PURE__ */
|
|
17085
|
+
/* @__PURE__ */ import_react43.default.createElement(DropdownBox, { open: dropdownDialogIsOpen }, dropdownActionSet.map(({ Component: DropdownActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(DropdownActionComponent, { key: type })))
|
|
17011
17086
|
)),
|
|
17012
|
-
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */
|
|
17087
|
+
quickActionSet.map(({ Component: QuickActionComponent, type }) => /* @__PURE__ */ import_react43.default.createElement(QuickActionComponent, { key: type }))
|
|
17013
17088
|
);
|
|
17014
17089
|
};
|
|
17015
17090
|
var DropdownBox = ({ children, open }) => {
|
|
17016
17091
|
const { t } = useTranslationContext();
|
|
17017
|
-
return /* @__PURE__ */
|
|
17092
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
17018
17093
|
"div",
|
|
17019
17094
|
{
|
|
17020
17095
|
className: (0, import_clsx9.default)("str-chat__message-actions-box", {
|
|
17021
17096
|
"str-chat__message-actions-box--open": open
|
|
17022
17097
|
})
|
|
17023
17098
|
},
|
|
17024
|
-
/* @__PURE__ */
|
|
17099
|
+
/* @__PURE__ */ import_react43.default.createElement(
|
|
17025
17100
|
"div",
|
|
17026
17101
|
{
|
|
17027
17102
|
"aria-label": t("aria/Message Options"),
|
|
@@ -17035,21 +17110,21 @@ var DropdownBox = ({ children, open }) => {
|
|
|
17035
17110
|
|
|
17036
17111
|
// src/experimental/Search/Search.tsx
|
|
17037
17112
|
var import_clsx12 = __toESM(require("clsx"));
|
|
17038
|
-
var
|
|
17113
|
+
var import_react56 = __toESM(require("react"));
|
|
17039
17114
|
|
|
17040
17115
|
// src/experimental/Search/SearchBar/SearchBar.tsx
|
|
17041
17116
|
var import_clsx10 = __toESM(require("clsx"));
|
|
17042
|
-
var
|
|
17117
|
+
var import_react45 = __toESM(require("react"));
|
|
17043
17118
|
|
|
17044
17119
|
// src/experimental/Search/SearchContext.tsx
|
|
17045
|
-
var
|
|
17046
|
-
var SearchContext = (0,
|
|
17120
|
+
var import_react44 = __toESM(require("react"));
|
|
17121
|
+
var SearchContext = (0, import_react44.createContext)(void 0);
|
|
17047
17122
|
var SearchContextProvider = ({
|
|
17048
17123
|
children,
|
|
17049
17124
|
value
|
|
17050
|
-
}) => /* @__PURE__ */
|
|
17125
|
+
}) => /* @__PURE__ */ import_react44.default.createElement(SearchContext.Provider, { value }, children);
|
|
17051
17126
|
var useSearchContext = () => {
|
|
17052
|
-
const contextValue = (0,
|
|
17127
|
+
const contextValue = (0, import_react44.useContext)(SearchContext);
|
|
17053
17128
|
return contextValue;
|
|
17054
17129
|
};
|
|
17055
17130
|
|
|
@@ -17062,12 +17137,12 @@ var SearchBar = () => {
|
|
|
17062
17137
|
const { t } = useTranslationContext();
|
|
17063
17138
|
const { disabled, exitSearchOnInputBlur, placeholder, searchController } = useSearchContext();
|
|
17064
17139
|
const queriesInProgress = useSearchQueriesInProgress(searchController);
|
|
17065
|
-
const [input, setInput] = (0,
|
|
17140
|
+
const [input, setInput] = (0, import_react45.useState)(null);
|
|
17066
17141
|
const { isActive, searchQuery } = useStateStore(
|
|
17067
17142
|
searchController.state,
|
|
17068
17143
|
searchControllerStateSelector2
|
|
17069
17144
|
);
|
|
17070
|
-
(0,
|
|
17145
|
+
(0, import_react45.useEffect)(() => {
|
|
17071
17146
|
if (!input) return;
|
|
17072
17147
|
const handleKeyDown = (event) => {
|
|
17073
17148
|
if (event.key === "Escape") {
|
|
@@ -17080,15 +17155,15 @@ var SearchBar = () => {
|
|
|
17080
17155
|
document.removeEventListener("keydown", handleKeyDown);
|
|
17081
17156
|
};
|
|
17082
17157
|
}, [searchController, input]);
|
|
17083
|
-
return /* @__PURE__ */
|
|
17158
|
+
return /* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-bar", "data-testid": "search-bar" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
17084
17159
|
"div",
|
|
17085
17160
|
{
|
|
17086
17161
|
className: (0, import_clsx10.default)("str-chat__search-input--wrapper", {
|
|
17087
17162
|
"str-chat__search-input--wrapper-active": isActive
|
|
17088
17163
|
})
|
|
17089
17164
|
},
|
|
17090
|
-
/* @__PURE__ */
|
|
17091
|
-
/* @__PURE__ */
|
|
17165
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--icon" }),
|
|
17166
|
+
/* @__PURE__ */ import_react45.default.createElement(
|
|
17092
17167
|
"input",
|
|
17093
17168
|
{
|
|
17094
17169
|
className: "str-chat__search-input",
|
|
@@ -17111,7 +17186,7 @@ var SearchBar = () => {
|
|
|
17111
17186
|
value: searchQuery
|
|
17112
17187
|
}
|
|
17113
17188
|
),
|
|
17114
|
-
searchQuery && /* @__PURE__ */
|
|
17189
|
+
searchQuery && /* @__PURE__ */ import_react45.default.createElement(
|
|
17115
17190
|
"button",
|
|
17116
17191
|
{
|
|
17117
17192
|
className: "str-chat__search-input--clear-button",
|
|
@@ -17122,9 +17197,9 @@ var SearchBar = () => {
|
|
|
17122
17197
|
input?.focus();
|
|
17123
17198
|
}
|
|
17124
17199
|
},
|
|
17125
|
-
/* @__PURE__ */
|
|
17200
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "str-chat__search-input--clear-button-icon" })
|
|
17126
17201
|
)
|
|
17127
|
-
), isActive ? /* @__PURE__ */
|
|
17202
|
+
), isActive ? /* @__PURE__ */ import_react45.default.createElement(
|
|
17128
17203
|
"button",
|
|
17129
17204
|
{
|
|
17130
17205
|
className: (0, import_clsx10.default)(
|
|
@@ -17141,25 +17216,25 @@ var SearchBar = () => {
|
|
|
17141
17216
|
};
|
|
17142
17217
|
|
|
17143
17218
|
// src/experimental/Search/SearchResults/SearchResults.tsx
|
|
17144
|
-
var
|
|
17219
|
+
var import_react55 = __toESM(require("react"));
|
|
17145
17220
|
|
|
17146
17221
|
// src/experimental/Search/SearchResults/SearchSourceResults.tsx
|
|
17147
|
-
var
|
|
17222
|
+
var import_react52 = __toESM(require("react"));
|
|
17148
17223
|
|
|
17149
17224
|
// src/experimental/Search/SearchResults/SearchSourceResultList.tsx
|
|
17150
|
-
var
|
|
17225
|
+
var import_react50 = __toESM(require("react"));
|
|
17151
17226
|
|
|
17152
17227
|
// src/experimental/Search/SearchResults/SearchResultItem.tsx
|
|
17153
|
-
var
|
|
17228
|
+
var import_react46 = __toESM(require("react"));
|
|
17154
17229
|
var import_lodash3 = __toESM(require("lodash.uniqby"));
|
|
17155
17230
|
var ChannelSearchResultItem = ({ item }) => {
|
|
17156
17231
|
const { setActiveChannel } = useChatContext();
|
|
17157
17232
|
const { setChannels } = useChannelListContext();
|
|
17158
|
-
const onSelect = (0,
|
|
17233
|
+
const onSelect = (0, import_react46.useCallback)(() => {
|
|
17159
17234
|
setActiveChannel(item);
|
|
17160
17235
|
setChannels?.((channels) => (0, import_lodash3.default)([item, ...channels], "cid"));
|
|
17161
17236
|
}, [item, setActiveChannel, setChannels]);
|
|
17162
|
-
return /* @__PURE__ */
|
|
17237
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
17163
17238
|
ChannelPreview,
|
|
17164
17239
|
{
|
|
17165
17240
|
channel: item,
|
|
@@ -17178,13 +17253,13 @@ var MessageSearchResultItem = ({
|
|
|
17178
17253
|
setActiveChannel
|
|
17179
17254
|
} = useChatContext();
|
|
17180
17255
|
const { setChannels } = useChannelListContext();
|
|
17181
|
-
const channel = (0,
|
|
17256
|
+
const channel = (0, import_react46.useMemo)(() => {
|
|
17182
17257
|
const { channel: channelData } = item;
|
|
17183
17258
|
const type = channelData?.type ?? "unknown";
|
|
17184
17259
|
const id = channelData?.id ?? "unknown";
|
|
17185
17260
|
return client.channel(type, id);
|
|
17186
17261
|
}, [client, item]);
|
|
17187
|
-
const onSelect = (0,
|
|
17262
|
+
const onSelect = (0, import_react46.useCallback)(async () => {
|
|
17188
17263
|
if (!channel) return;
|
|
17189
17264
|
await channel.state.loadMessageIntoState(
|
|
17190
17265
|
item.id,
|
|
@@ -17195,9 +17270,9 @@ var MessageSearchResultItem = ({
|
|
|
17195
17270
|
setActiveChannel(channel);
|
|
17196
17271
|
setChannels?.((channels) => (0, import_lodash3.default)([channel, ...channels], "cid"));
|
|
17197
17272
|
}, [channel, item, searchController, setActiveChannel, setChannels]);
|
|
17198
|
-
const getLatestMessagePreview2 = (0,
|
|
17273
|
+
const getLatestMessagePreview2 = (0, import_react46.useCallback)(() => item.text, [item]);
|
|
17199
17274
|
if (!channel) return;
|
|
17200
|
-
return /* @__PURE__ */
|
|
17275
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
17201
17276
|
ChannelPreview,
|
|
17202
17277
|
{
|
|
17203
17278
|
active: channel.cid === activeChannel?.cid && item.id === searchController._internalState.getLatestValue().focusedMessage?.id,
|
|
@@ -17212,7 +17287,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
17212
17287
|
const { client, setActiveChannel } = useChatContext();
|
|
17213
17288
|
const { setChannels } = useChannelListContext();
|
|
17214
17289
|
const { directMessagingChannelType } = useSearchContext();
|
|
17215
|
-
const onClick = (0,
|
|
17290
|
+
const onClick = (0, import_react46.useCallback)(() => {
|
|
17216
17291
|
const newChannel = client.channel(directMessagingChannelType, {
|
|
17217
17292
|
members: [client.userID, item.id]
|
|
17218
17293
|
});
|
|
@@ -17220,7 +17295,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
17220
17295
|
setActiveChannel(newChannel);
|
|
17221
17296
|
setChannels?.((channels) => (0, import_lodash3.default)([newChannel, ...channels], "cid"));
|
|
17222
17297
|
}, [client, item, setActiveChannel, setChannels, directMessagingChannelType]);
|
|
17223
|
-
return /* @__PURE__ */
|
|
17298
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
17224
17299
|
"button",
|
|
17225
17300
|
{
|
|
17226
17301
|
"aria-label": `Select User Channel: ${item.name || ""}`,
|
|
@@ -17229,7 +17304,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
17229
17304
|
onClick,
|
|
17230
17305
|
role: "option"
|
|
17231
17306
|
},
|
|
17232
|
-
/* @__PURE__ */
|
|
17307
|
+
/* @__PURE__ */ import_react46.default.createElement(
|
|
17233
17308
|
Avatar,
|
|
17234
17309
|
{
|
|
17235
17310
|
className: "str-chat__avatar--channel-preview",
|
|
@@ -17238,7 +17313,7 @@ var UserSearchResultItem = ({ item }) => {
|
|
|
17238
17313
|
user: item
|
|
17239
17314
|
}
|
|
17240
17315
|
),
|
|
17241
|
-
/* @__PURE__ */
|
|
17316
|
+
/* @__PURE__ */ import_react46.default.createElement("div", { className: "str-chat__search-result--display-name" }, item.name || item.id)
|
|
17242
17317
|
);
|
|
17243
17318
|
};
|
|
17244
17319
|
var DefaultSearchResultItems = {
|
|
@@ -17248,18 +17323,18 @@ var DefaultSearchResultItems = {
|
|
|
17248
17323
|
};
|
|
17249
17324
|
|
|
17250
17325
|
// src/experimental/Search/SearchResults/SearchSourceResultListFooter.tsx
|
|
17251
|
-
var
|
|
17326
|
+
var import_react49 = __toESM(require("react"));
|
|
17252
17327
|
|
|
17253
17328
|
// src/experimental/Search/SearchResults/SearchSourceResultsLoadingIndicator.tsx
|
|
17254
|
-
var
|
|
17329
|
+
var import_react48 = __toESM(require("react"));
|
|
17255
17330
|
|
|
17256
17331
|
// src/experimental/Search/SearchSourceResultsContext.tsx
|
|
17257
|
-
var
|
|
17258
|
-
var SearchSourceResultsContext = (0,
|
|
17332
|
+
var import_react47 = __toESM(require("react"));
|
|
17333
|
+
var SearchSourceResultsContext = (0, import_react47.createContext)(void 0);
|
|
17259
17334
|
var SearchSourceResultsContextProvider = ({
|
|
17260
17335
|
children,
|
|
17261
17336
|
value
|
|
17262
|
-
}) => /* @__PURE__ */
|
|
17337
|
+
}) => /* @__PURE__ */ import_react47.default.createElement(
|
|
17263
17338
|
SearchSourceResultsContext.Provider,
|
|
17264
17339
|
{
|
|
17265
17340
|
value
|
|
@@ -17267,7 +17342,7 @@ var SearchSourceResultsContextProvider = ({
|
|
|
17267
17342
|
children
|
|
17268
17343
|
);
|
|
17269
17344
|
var useSearchSourceResultsContext = () => {
|
|
17270
|
-
const contextValue = (0,
|
|
17345
|
+
const contextValue = (0, import_react47.useContext)(SearchSourceResultsContext);
|
|
17271
17346
|
return contextValue;
|
|
17272
17347
|
};
|
|
17273
17348
|
|
|
@@ -17275,7 +17350,7 @@ var useSearchSourceResultsContext = () => {
|
|
|
17275
17350
|
var SearchSourceResultsLoadingIndicator = () => {
|
|
17276
17351
|
const { t } = useTranslationContext();
|
|
17277
17352
|
const { searchSource } = useSearchSourceResultsContext();
|
|
17278
|
-
return /* @__PURE__ */
|
|
17353
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
17279
17354
|
"div",
|
|
17280
17355
|
{
|
|
17281
17356
|
className: "str-chat__search-source-results__loading-indicator",
|
|
@@ -17300,13 +17375,13 @@ var SearchSourceResultListFooter = () => {
|
|
|
17300
17375
|
searchSource.state,
|
|
17301
17376
|
searchSourceStateSelector
|
|
17302
17377
|
);
|
|
17303
|
-
return /* @__PURE__ */
|
|
17378
|
+
return /* @__PURE__ */ import_react49.default.createElement(
|
|
17304
17379
|
"div",
|
|
17305
17380
|
{
|
|
17306
17381
|
className: "str-chat__search-source-result-list__footer",
|
|
17307
17382
|
"data-testid": "search-footer"
|
|
17308
17383
|
},
|
|
17309
|
-
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
|
|
17310
17385
|
);
|
|
17311
17386
|
};
|
|
17312
17387
|
|
|
@@ -17324,36 +17399,36 @@ var SearchSourceResultList = ({
|
|
|
17324
17399
|
const { items } = useStateStore(searchSource.state, searchSourceStateSelector2);
|
|
17325
17400
|
const SearchResultItem = SearchResultItems[searchSource.type];
|
|
17326
17401
|
if (!SearchResultItem) return null;
|
|
17327
|
-
return /* @__PURE__ */
|
|
17402
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
17328
17403
|
"div",
|
|
17329
17404
|
{
|
|
17330
17405
|
className: "str-chat__search-source-result-list",
|
|
17331
17406
|
"data-testid": "search-source-result-list"
|
|
17332
17407
|
},
|
|
17333
|
-
/* @__PURE__ */
|
|
17408
|
+
/* @__PURE__ */ import_react50.default.createElement(
|
|
17334
17409
|
InfiniteScrollPaginator,
|
|
17335
17410
|
{
|
|
17336
17411
|
loadNextDebounceMs: loadMoreDebounceMs,
|
|
17337
17412
|
loadNextOnScrollToBottom: searchSource.search,
|
|
17338
17413
|
threshold: loadMoreThresholdPx
|
|
17339
17414
|
},
|
|
17340
|
-
items?.map((item, i) => /* @__PURE__ */
|
|
17415
|
+
items?.map((item, i) => /* @__PURE__ */ import_react50.default.createElement(
|
|
17341
17416
|
SearchResultItem,
|
|
17342
17417
|
{
|
|
17343
17418
|
item,
|
|
17344
17419
|
key: `source-search-result-${searchSource.type}-${i}`
|
|
17345
17420
|
}
|
|
17346
17421
|
)),
|
|
17347
|
-
/* @__PURE__ */
|
|
17422
|
+
/* @__PURE__ */ import_react50.default.createElement(SearchSourceResultListFooter2, null)
|
|
17348
17423
|
)
|
|
17349
17424
|
);
|
|
17350
17425
|
};
|
|
17351
17426
|
|
|
17352
17427
|
// src/experimental/Search/SearchResults/SearchSourceResultsEmpty.tsx
|
|
17353
|
-
var
|
|
17428
|
+
var import_react51 = __toESM(require("react"));
|
|
17354
17429
|
var SearchSourceResultsEmpty = () => {
|
|
17355
17430
|
const { t } = useTranslationContext();
|
|
17356
|
-
return /* @__PURE__ */
|
|
17431
|
+
return /* @__PURE__ */ import_react51.default.createElement("div", { className: "str-chat__search-source-results-empty" }, t("No results found"));
|
|
17357
17432
|
};
|
|
17358
17433
|
|
|
17359
17434
|
// src/experimental/Search/SearchResults/SearchSourceResultsHeader.tsx
|
|
@@ -17375,20 +17450,20 @@ var SearchSourceResults = ({ searchSource }) => {
|
|
|
17375
17450
|
searchSourceStateSelector3
|
|
17376
17451
|
);
|
|
17377
17452
|
if (!items && !isLoading) return null;
|
|
17378
|
-
return /* @__PURE__ */
|
|
17453
|
+
return /* @__PURE__ */ import_react52.default.createElement(SearchSourceResultsContextProvider, { value: { searchSource } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
17379
17454
|
"div",
|
|
17380
17455
|
{
|
|
17381
17456
|
className: "str-chat__search-source-results",
|
|
17382
17457
|
"data-testid": "search-source-results"
|
|
17383
17458
|
},
|
|
17384
|
-
/* @__PURE__ */
|
|
17385
|
-
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)
|
|
17386
17461
|
));
|
|
17387
17462
|
};
|
|
17388
17463
|
|
|
17389
17464
|
// src/experimental/Search/SearchResults/SearchResultsHeader.tsx
|
|
17390
17465
|
var import_clsx11 = __toESM(require("clsx"));
|
|
17391
|
-
var
|
|
17466
|
+
var import_react53 = __toESM(require("react"));
|
|
17392
17467
|
var searchSourceStateSelector4 = (nextValue) => ({
|
|
17393
17468
|
isActive: nextValue.isActive
|
|
17394
17469
|
});
|
|
@@ -17397,7 +17472,7 @@ var SearchSourceFilterButton = ({ source }) => {
|
|
|
17397
17472
|
const { searchController } = useSearchContext();
|
|
17398
17473
|
const { isActive } = useStateStore(source.state, searchSourceStateSelector4);
|
|
17399
17474
|
const label = `search-results-header-filter-source-button-label--${source.type}`;
|
|
17400
|
-
return /* @__PURE__ */
|
|
17475
|
+
return /* @__PURE__ */ import_react53.default.createElement(
|
|
17401
17476
|
"button",
|
|
17402
17477
|
{
|
|
17403
17478
|
"aria-label": t("aria/Search results header filter button"),
|
|
@@ -17420,13 +17495,13 @@ var SearchSourceFilterButton = ({ source }) => {
|
|
|
17420
17495
|
};
|
|
17421
17496
|
var SearchResultsHeader = () => {
|
|
17422
17497
|
const { searchController } = useSearchContext();
|
|
17423
|
-
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(
|
|
17424
17499
|
"div",
|
|
17425
17500
|
{
|
|
17426
17501
|
className: "str-chat__search-results-header__filter-source-buttons",
|
|
17427
17502
|
"data-testid": "filter-source-buttons"
|
|
17428
17503
|
},
|
|
17429
|
-
searchController.sources.map((source) => /* @__PURE__ */
|
|
17504
|
+
searchController.sources.map((source) => /* @__PURE__ */ import_react53.default.createElement(
|
|
17430
17505
|
SearchSourceFilterButton,
|
|
17431
17506
|
{
|
|
17432
17507
|
key: `search-source-filter-button-${source.type}`,
|
|
@@ -17437,10 +17512,10 @@ var SearchResultsHeader = () => {
|
|
|
17437
17512
|
};
|
|
17438
17513
|
|
|
17439
17514
|
// src/experimental/Search/SearchResults/SearchResultsPresearch.tsx
|
|
17440
|
-
var
|
|
17515
|
+
var import_react54 = __toESM(require("react"));
|
|
17441
17516
|
var SearchResultsPresearch = () => {
|
|
17442
17517
|
const { t } = useTranslationContext();
|
|
17443
|
-
return /* @__PURE__ */
|
|
17518
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", { className: "str-chat__search-results-presearch" }, t("Start typing to search"));
|
|
17444
17519
|
};
|
|
17445
17520
|
|
|
17446
17521
|
// src/experimental/Search/SearchResults/SearchResults.tsx
|
|
@@ -17461,7 +17536,7 @@ var SearchResults = () => {
|
|
|
17461
17536
|
searchController.state,
|
|
17462
17537
|
searchControllerStateSelector3
|
|
17463
17538
|
);
|
|
17464
|
-
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 })));
|
|
17465
17540
|
};
|
|
17466
17541
|
|
|
17467
17542
|
// src/experimental/Search/Search.tsx
|
|
@@ -17475,7 +17550,7 @@ var Search = ({
|
|
|
17475
17550
|
const { SearchBar: SearchBar2 = SearchBar, SearchResults: SearchResults2 = SearchResults } = useComponentContext();
|
|
17476
17551
|
const { searchController } = useChatContext();
|
|
17477
17552
|
const { isActive } = useStateStore(searchController.state, searchControllerStateSelector4);
|
|
17478
|
-
return /* @__PURE__ */
|
|
17553
|
+
return /* @__PURE__ */ import_react56.default.createElement(
|
|
17479
17554
|
SearchContextProvider,
|
|
17480
17555
|
{
|
|
17481
17556
|
value: {
|
|
@@ -17486,7 +17561,7 @@ var Search = ({
|
|
|
17486
17561
|
searchController
|
|
17487
17562
|
}
|
|
17488
17563
|
},
|
|
17489
|
-
/* @__PURE__ */
|
|
17564
|
+
/* @__PURE__ */ import_react56.default.createElement(
|
|
17490
17565
|
"div",
|
|
17491
17566
|
{
|
|
17492
17567
|
className: (0, import_clsx12.default)("str-chat__search", {
|
|
@@ -17494,8 +17569,8 @@ var Search = ({
|
|
|
17494
17569
|
}),
|
|
17495
17570
|
"data-testid": "search"
|
|
17496
17571
|
},
|
|
17497
|
-
/* @__PURE__ */
|
|
17498
|
-
/* @__PURE__ */
|
|
17572
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchBar2, null),
|
|
17573
|
+
/* @__PURE__ */ import_react56.default.createElement(SearchResults2, null)
|
|
17499
17574
|
)
|
|
17500
17575
|
);
|
|
17501
17576
|
};
|