mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
28 lines
751 B
TypeScript
28 lines
751 B
TypeScript
import { Config, Keybinding } from '../../types';
|
|
|
|
export function resolveKeybindings(config: Config, defaultKeybindings: Keybinding[]): Keybinding[] {
|
|
const userBindings = config.keybindings || [];
|
|
const bindingMap = new Map<string, (string | number)[] | null>();
|
|
|
|
for (const binding of defaultKeybindings) {
|
|
bindingMap.set(binding.key, binding.command);
|
|
}
|
|
|
|
for (const binding of userBindings) {
|
|
if (binding.command === null) {
|
|
bindingMap.delete(binding.key);
|
|
} else {
|
|
bindingMap.set(binding.key, binding.command);
|
|
}
|
|
}
|
|
|
|
const keybindings: Keybinding[] = [];
|
|
for (const [key, command] of bindingMap) {
|
|
if (command !== null) {
|
|
keybindings.push({ key, command });
|
|
}
|
|
}
|
|
|
|
return keybindings;
|
|
}
|