matrix-react-sdk
Version:
SDK for matrix.org using React
157 lines (156 loc) • 6.46 kB
TypeScript
/// <reference types="react" />
/** Actions for the chat message composer component */
export declare enum MessageComposerAction {
/** Send a message */
Send = "Send",
/** Go backwards through the send history and use the message in composer view */
SelectPrevSendHistory = "SelectPrevSendHistory",
/** Go forwards through the send history */
SelectNextSendHistory = "SelectNextSendHistory",
/** Start editing the user's last sent message */
EditPrevMessage = "EditPrevMessage",
/** Start editing the user's next sent message */
EditNextMessage = "EditNextMessage",
/** Cancel editing a message or cancel replying to a message */
CancelEditing = "CancelEditing",
/** Set bold format the current selection */
FormatBold = "FormatBold",
/** Set italics format the current selection */
FormatItalics = "FormatItalics",
/** Format the current selection as quote */
FormatQuote = "FormatQuote",
/** Undo the last editing */
EditUndo = "EditUndo",
/** Redo editing */
EditRedo = "EditRedo",
/** Insert new line */
NewLine = "NewLine",
/** Move the cursor to the start of the message */
MoveCursorToStart = "MoveCursorToStart",
/** Move the cursor to the end of the message */
MoveCursorToEnd = "MoveCursorToEnd"
}
/** Actions for text editing autocompletion */
export declare enum AutocompleteAction {
/**
* Select previous selection or, if the autocompletion window is not shown, open the window and select the first
* selection.
*/
CompleteOrPrevSelection = "ApplySelection",
/** Select next selection or, if the autocompletion window is not shown, open it and select the first selection */
CompleteOrNextSelection = "CompleteOrNextSelection",
/** Move to the previous autocomplete selection */
PrevSelection = "PrevSelection",
/** Move to the next autocomplete selection */
NextSelection = "NextSelection",
/** Close the autocompletion window */
Cancel = "Cancel"
}
/** Actions for the room list sidebar */
export declare enum RoomListAction {
/** Clear room list filter field */
ClearSearch = "ClearSearch",
/** Navigate up/down in the room list */
PrevRoom = "PrevRoom",
/** Navigate down in the room list */
NextRoom = "NextRoom",
/** Select room from the room list */
SelectRoom = "SelectRoom",
/** Collapse room list section */
CollapseSection = "CollapseSection",
/** Expand room list section, if already expanded, jump to first room in the selection */
ExpandSection = "ExpandSection"
}
/** Actions for the current room view */
export declare enum RoomAction {
/** Scroll up in the timeline */
ScrollUp = "ScrollUp",
/** Scroll down in the timeline */
RoomScrollDown = "RoomScrollDown",
/** Dismiss read marker and jump to bottom */
DismissReadMarker = "DismissReadMarker",
/** Jump to oldest unread message */
JumpToOldestUnread = "JumpToOldestUnread",
/** Upload a file */
UploadFile = "UploadFile",
/** Focus search message in a room (must be enabled) */
FocusSearch = "FocusSearch",
/** Jump to the first (downloaded) message in the room */
JumpToFirstMessage = "JumpToFirstMessage",
/** Jump to the latest message in the room */
JumpToLatestMessage = "JumpToLatestMessage"
}
/** Actions for navigating do various menus, dialogs or screens */
export declare enum NavigationAction {
/** Jump to room search (search for a room) */
FocusRoomSearch = "FocusRoomSearch",
/** Toggle the room side panel */
ToggleRoomSidePanel = "ToggleRoomSidePanel",
/** Toggle the user menu */
ToggleUserMenu = "ToggleUserMenu",
/** Toggle the short cut help dialog */
ToggleShortCutDialog = "ToggleShortCutDialog",
/** Got to the Element home screen */
GoToHome = "GoToHome",
/** Select prev room */
SelectPrevRoom = "SelectPrevRoom",
/** Select next room */
SelectNextRoom = "SelectNextRoom",
/** Select prev room with unread messages */
SelectPrevUnreadRoom = "SelectPrevUnreadRoom",
/** Select next room with unread messages */
SelectNextUnreadRoom = "SelectNextUnreadRoom"
}
/**
* Represent a key combination.
*
* The combo is evaluated strictly, i.e. the KeyboardEvent must match exactly what is specified in the KeyCombo.
*/
export declare type KeyCombo = {
key?: string;
/** On PC: ctrl is pressed; on Mac: meta is pressed */
ctrlOrCmd?: boolean;
altKey?: boolean;
ctrlKey?: boolean;
metaKey?: boolean;
shiftKey?: boolean;
};
export declare type KeyBinding<T extends string> = {
action: T;
keyCombo: KeyCombo;
};
/**
* Helper method to check if a KeyboardEvent matches a KeyCombo
*
* Note, this method is only exported for testing.
*/
export declare function isKeyComboMatch(ev: KeyboardEvent | React.KeyboardEvent, combo: KeyCombo, onMac: boolean): boolean;
export declare type KeyBindingGetter<T extends string> = () => KeyBinding<T>[];
export interface IKeyBindingsProvider {
getMessageComposerBindings: KeyBindingGetter<MessageComposerAction>;
getAutocompleteBindings: KeyBindingGetter<AutocompleteAction>;
getRoomListBindings: KeyBindingGetter<RoomListAction>;
getRoomBindings: KeyBindingGetter<RoomAction>;
getNavigationBindings: KeyBindingGetter<NavigationAction>;
}
export declare class KeyBindingsManager {
/**
* List of key bindings providers.
*
* Key bindings from the first provider(s) in the list will have precedence over key bindings from later providers.
*
* To overwrite the default key bindings add a new providers before the default provider, e.g. a provider for
* customized key bindings.
*/
bindingsProviders: IKeyBindingsProvider[];
/**
* Finds a matching KeyAction for a given KeyboardEvent
*/
private getAction;
getMessageComposerAction(ev: KeyboardEvent | React.KeyboardEvent): MessageComposerAction | undefined;
getAutocompleteAction(ev: KeyboardEvent | React.KeyboardEvent): AutocompleteAction | undefined;
getRoomListAction(ev: KeyboardEvent | React.KeyboardEvent): RoomListAction | undefined;
getRoomAction(ev: KeyboardEvent | React.KeyboardEvent): RoomAction | undefined;
getNavigationAction(ev: KeyboardEvent | React.KeyboardEvent): NavigationAction | undefined;
}
export declare function getKeyBindingsManager(): KeyBindingsManager;