41
common/resources/client/player/handle-player-keybinds.ts
Executable file
41
common/resources/client/player/handle-player-keybinds.ts
Executable file
@@ -0,0 +1,41 @@
|
||||
import {PlayerState} from '@common/player/state/player-state';
|
||||
import {isCtrlOrShiftPressed} from '@common/utils/keybinds/is-ctrl-or-shift-pressed';
|
||||
|
||||
export function handlePlayerKeybinds(
|
||||
e: KeyboardEvent,
|
||||
state: () => PlayerState,
|
||||
) {
|
||||
if (
|
||||
['input', 'textarea'].includes(
|
||||
(e.target as HTMLElement)?.tagName.toLowerCase(),
|
||||
)
|
||||
)
|
||||
return;
|
||||
|
||||
if (e.key === ' ' || e.key === 'k') {
|
||||
e.preventDefault();
|
||||
if (state().isPlaying) {
|
||||
state().pause();
|
||||
} else {
|
||||
state().play();
|
||||
}
|
||||
}
|
||||
|
||||
if (e.key === 'ArrowLeft') {
|
||||
e.preventDefault();
|
||||
if (isCtrlOrShiftPressed(e)) {
|
||||
state().playPrevious();
|
||||
} else {
|
||||
state().seek(state().getCurrentTime() - 10);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.key === 'ArrowRight') {
|
||||
e.preventDefault();
|
||||
if (isCtrlOrShiftPressed(e)) {
|
||||
state().playNext();
|
||||
} else {
|
||||
state().seek(state().getCurrentTime() + 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user