/ packages / ui / src / hooks / useHotkey.ts
useHotkey.ts
 1  import { useSignalEffect } from '@preact/signals-react';
 2  import { IHotkey, IHotkeyService, IHotkeyServiceSymbol } from 'ipmc-interfaces';
 3  import { useService } from '../context/AppContext';
 4  
 5  export function useHotkey(hotkey: IHotkey, action: () => void) {
 6  	const hotkeyService = useService<IHotkeyService>(IHotkeyServiceSymbol);
 7  
 8  	useSignalEffect(() => {
 9  		const sym = hotkeyService.registerHotkey(hotkey, action);
10  
11  		return () => {
12  			hotkeyService.removeHotkey(sym);
13  		};
14  	});
15  }