mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-03-13 06:30:01 +01:00
* 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
39 lines
954 B
TypeScript
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;
|
|
};
|