mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 10:53:59 +00:00
refactor(ui): extract application shortcuts and parameter controls
This commit is contained in:
1 parent
5fa8db1686
commit
7a5f615d55
14 files changed
+469
-92
No files matched your search
@@ -0,0 +1,34 @@
|
||||
const STYLE_KEYS = Object.freeze({
|
||||
'1': 'normal', '2': 'retro', '3': 'surveillance',
|
||||
'4': 'thermal', '5': 'anime', '6': 'noir', '7': 'snow',
|
||||
});
|
||||
|
||||
/**
|
||||
* Bind the application's existing bubbling keyboard shortcuts.
|
||||
* Capture-phase surfaces keep first refusal. The caller owns each action and
|
||||
* persistence; form controls keep native typing except for Escape.
|
||||
* @param {object} options
|
||||
* @param {Document} options.documentRef Keyboard event target.
|
||||
* @param {HTMLElement} options.searchInput Additional editing target.
|
||||
* @param {object} options.actions Existing application operations.
|
||||
* @returns {{destroy: Function}} Synchronous, idempotent listener cleanup.
|
||||
*/
|
||||
export function bindApplicationShortcuts({ documentRef, searchInput, actions }) {
|
||||
const onKeyDown = (event) => {
|
||||
const isFormControl = event.target?.matches?.('select, input, textarea')
|
||||
|| event.target === searchInput;
|
||||
if (isFormControl && event.key !== 'Escape') return;
|
||||
|
||||
if (STYLE_KEYS[event.key]) actions.setStyle(STYLE_KEYS[event.key]);
|
||||
if (event.key === 'Escape') actions.dismissSearch();
|
||||
const key = event.key.toLowerCase();
|
||||
if (key === 'h') actions.toggleHud();
|
||||
if (key === 'o') actions.toggleOrbit();
|
||||
if (key === 'v') actions.toggleCleanView();
|
||||
if (key === 'f') actions.toggleLayers();
|
||||
if (key === 'd') actions.cycleDetection();
|
||||
if (key === 'c') actions.toggleCctv();
|
||||
};
|
||||
documentRef.addEventListener('keydown', onKeyDown);
|
||||
return { destroy() { documentRef.removeEventListener('keydown', onKeyDown); } };
|
||||
}
|
||||
Reference in new issue
Block a user