// Copyright 2023 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { type ReactNode } from 'react'; import type { LocalizerType } from '../../types/I18N.std.js'; import { AxoMenuBuilder } from '../../axo/AxoMenuBuilder.dom.js'; export type ContextMenuTriggerType = { handleContextClick: ( event: React.MouseEvent | MouseEvent ) => void; }; type MessageContextMenuProps = Readonly<{ i18n: LocalizerType; renderer: AxoMenuBuilder.Renderer; onOpenChange?: (open: boolean) => void; disabled?: boolean; shouldShowAdditional: boolean; onDownload: (() => void) | undefined; onEdit: (() => void) | undefined; onReplyToMessage: (() => void) | undefined; onReact: (() => void) | undefined; onEndPoll: (() => void) | undefined; onRetryMessageSend: (() => void) | undefined; onRetryDeleteForEveryone: (() => void) | undefined; onCopy: (() => void) | undefined; onForward: (() => void) | undefined; onDeleteMessage: () => void; onMoreInfo: (() => void) | undefined; onSelect: (() => void) | undefined; children: ReactNode; }>; export function MessageContextMenu({ i18n, renderer, onOpenChange, disabled, shouldShowAdditional, onDownload, onEdit, onReplyToMessage, onReact, onEndPoll, onMoreInfo, onCopy, onSelect, onRetryMessageSend, onRetryDeleteForEveryone, onForward, onDeleteMessage, children, }: MessageContextMenuProps): JSX.Element { return ( {children} {shouldShowAdditional && ( <> {onDownload && ( {i18n('icu:MessageContextMenu__download')} )} {onReplyToMessage && ( {i18n('icu:MessageContextMenu__reply')} )} {onReact && ( {i18n('icu:MessageContextMenu__react')} )} )} {onEndPoll && ( {i18n('icu:Poll__end-poll')} )} {onForward && ( {i18n('icu:MessageContextMenu__forward')} )} {onEdit && ( {i18n('icu:edit')} )} {onSelect && ( {i18n('icu:MessageContextMenu__select')} )} {onCopy && ( {i18n('icu:copy')} )} {onMoreInfo && ( {i18n('icu:MessageContextMenu__info')} )} {i18n('icu:MessageContextMenu__deleteMessage')} {onRetryMessageSend && ( {i18n('icu:retrySend')} )} {onRetryDeleteForEveryone && ( {i18n('icu:retryDeleteForEveryone')} )} ); }