matrix-react-sdk
Version:
SDK for matrix.org using React
71 lines (70 loc) • 3.57 kB
TypeScript
import React from "react";
import { IContent, MatrixEvent, IEventRelation, Room } from "matrix-js-sdk/src/matrix";
import { RoomMessageEventContent } from "matrix-js-sdk/src/types";
import EditorModel from "../../../editor/model";
import { MatrixClientProps } from "../../../contexts/MatrixClientContext";
import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks";
import RoomContext from "../../../contexts/RoomContext";
export declare const EDITOR_STATE_STORAGE_PREFIX = "mx_cider_state_";
/**
* Build the mentions information based on the editor model (and any related events):
*
* 1. Search the model parts for room or user pills and fill in the mentions object.
* 2. If this is a reply to another event, include any user mentions from that
* (but do not include a room mention).
*
* @param sender - The Matrix ID of the user sending the event.
* @param content - The event content.
* @param model - The editor model to search for mentions, null if there is no editor.
* @param replyToEvent - The event being replied to or undefined if it is not a reply.
* @param editedContent - The content of the parent event being edited.
*/
export declare function attachMentions(sender: string, content: IContent, model: EditorModel | null, replyToEvent: MatrixEvent | undefined, editedContent?: IContent | null): void;
export declare function attachRelation(content: IContent, relation?: IEventRelation): void;
export declare function createMessageContent(sender: string, model: EditorModel, replyToEvent: MatrixEvent | undefined, relation: IEventRelation | undefined, permalinkCreator?: RoomPermalinkCreator, includeReplyLegacyFallback?: boolean): RoomMessageEventContent;
export declare function isQuickReaction(model: EditorModel): boolean;
interface ISendMessageComposerProps extends MatrixClientProps {
room: Room;
placeholder?: string;
permalinkCreator?: RoomPermalinkCreator;
relation?: IEventRelation;
replyToEvent?: MatrixEvent;
disabled?: boolean;
onChange?(model: EditorModel): void;
includeReplyLegacyFallback?: boolean;
toggleStickerPickerOpen: () => void;
}
export declare class SendMessageComposer extends React.Component<ISendMessageComposerProps> {
static contextType: React.Context<import("../../structures/RoomView").IRoomState & {
threadId?: string;
}>;
context: React.ContextType<typeof RoomContext>;
private readonly prepareToEncrypt?;
private readonly editorRef;
private model;
private currentlyComposedEditorState;
private dispatcherRef;
private sendHistoryManager;
static defaultProps: {
includeReplyLegacyFallback: boolean;
};
constructor(props: ISendMessageComposerProps, context: React.ContextType<typeof RoomContext>);
componentDidUpdate(prevProps: ISendMessageComposerProps): void;
private onKeyDown;
private selectSendHistory;
private sendQuickReaction;
sendMessage(): Promise<void>;
componentWillUnmount(): void;
private get editorStateKey();
private clearStoredEditorState;
private restoreStoredEditorState;
private shouldSaveStoredEditorState;
private saveStoredEditorState;
private onAction;
private onPaste;
private onChange;
private focusComposer;
render(): React.ReactNode;
}
declare const SendMessageComposerWithMatrixClient: (props: Omit<ISendMessageComposerProps, "mxClient"> & React.RefAttributes<React.Component<ISendMessageComposerProps, any, any>>) => React.ReactElement | null;
export default SendMessageComposerWithMatrixClient;