matrix-react-sdk
Version:
SDK for matrix.org using React
83 lines (82 loc) • 3.03 kB
TypeScript
import React from "react";
import { IEventRelation, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
import { RoomPermalinkCreator } from "../../../utils/permalinks/Permalinks";
import ResizeNotifier from "../../../utils/ResizeNotifier";
import { E2EStatus } from "../../../utils/ShieldUtils";
import RoomContext from "../../../contexts/RoomContext";
import { MatrixClientProps } from "../../../contexts/MatrixClientContext";
export declare const WYSIWYG_EDITOR_STATE_STORAGE_PREFIX = "mx_wysiwyg_state_";
interface IProps extends MatrixClientProps {
room: Room;
resizeNotifier: ResizeNotifier;
permalinkCreator?: RoomPermalinkCreator;
replyToEvent?: MatrixEvent;
relation?: IEventRelation;
e2eStatus?: E2EStatus;
compact?: boolean;
}
interface IState {
composerContent: string;
isComposerEmpty: boolean;
haveRecording: boolean;
recordingTimeLeftSeconds?: number;
me?: RoomMember;
isMenuOpen: boolean;
isStickerPickerOpen: boolean;
showStickersButton: boolean;
showPollsButton: boolean;
showVoiceBroadcastButton: boolean;
isWysiwygLabEnabled: boolean;
isRichTextEnabled: boolean;
initialComposerContent: string;
}
export declare class MessageComposer extends React.Component<IProps, IState> {
private dispatcherRef?;
private messageComposerInput;
private voiceRecordingButton;
private ref;
private instanceId;
private _voiceRecording;
static contextType: React.Context<import("../../structures/RoomView").IRoomState & {
threadId?: string;
}>;
context: React.ContextType<typeof RoomContext>;
static defaultProps: {
compact: boolean;
showVoiceBroadcastButton: boolean;
isRichTextEnabled: boolean;
};
constructor(props: IProps, context: React.ContextType<typeof RoomContext>);
private get editorStateKey();
private restoreWysiwygEditorState;
private saveWysiwygEditorState;
private shouldSaveWysiwygEditorState;
private clearStoredEditorState;
private get voiceRecording();
private set voiceRecording(value);
componentDidMount(): void;
private onResize;
private onAction;
private waitForOwnMember;
componentWillUnmount(): void;
private onTombstoneClick;
private renderPlaceholderText;
private addEmoji;
private sendMessage;
private onChange;
private onWysiwygChange;
private onRichTextToggle;
private onVoiceStoreUpdate;
private updateRecordingState;
private onRecordingStarted;
private onRecordingEndingSoon;
private setStickerPickerOpen;
private toggleStickerPickerOpen;
private toggleButtonMenu;
private get showStickersButton();
private getMenuPosition;
private onRecordStartEndClick;
render(): React.ReactNode;
}
declare const MessageComposerWithMatrixClient: (props: Omit<IProps, "mxClient"> & React.RefAttributes<React.Component<IProps, any, any>>) => React.ReactElement | null;
export default MessageComposerWithMatrixClient;