cinny/src/app/utils/keyboard.ts
Ajay Bura 5058136737
support matrix.to links (#1849)
* support room via server params and eventId

* change copy link to matrix.to links

* display matrix.to links in messages as pill and stop generating url previews for them

* improve editor mention to include viaServers and eventId

* fix mention custom attributes

* always try to open room in current space

* jump to latest remove target eventId from url

* add create direct search options to open/create dm with url
2024-07-30 22:18:59 +10:00

39 lines
954 B
TypeScript

import { isKeyHotkey } from 'is-hotkey';
import { KeyboardEventHandler } from 'react';
export interface KeyboardEventLike {
key: string;
which: number;
altKey: boolean;
ctrlKey: boolean;
metaKey: boolean;
shiftKey: boolean;
preventDefault(): void;
}
export const onTabPress = (evt: KeyboardEventLike, callback: () => void) => {
if (isKeyHotkey('tab', evt)) {
evt.preventDefault();
callback();
}
};
export const preventScrollWithArrowKey: KeyboardEventHandler = (evt) => {
if (isKeyHotkey(['arrowup', 'arrowright', 'arrowdown', 'arrowleft'], evt)) {
evt.preventDefault();
}
};
export const onEnterOrSpace =
<T>(callback: (evt: T) => void) =>
(evt: KeyboardEventLike) => {
if (isKeyHotkey('enter', evt) || isKeyHotkey('space', evt)) {
evt.preventDefault();
callback(evt as T);
}
};
export const stopPropagation = (evt: KeyboardEvent): boolean => {
evt.stopPropagation();
return true;
};