Files
SubMiner/src/core/utils/shortcut-config.ts

87 lines
3.1 KiB
TypeScript

import { Config } from "../../types";
export interface ConfiguredShortcuts {
toggleVisibleOverlayGlobal: string | null | undefined;
toggleInvisibleOverlayGlobal: string | null | undefined;
copySubtitle: string | null | undefined;
copySubtitleMultiple: string | null | undefined;
updateLastCardFromClipboard: string | null | undefined;
triggerFieldGrouping: string | null | undefined;
triggerSubsync: string | null | undefined;
mineSentence: string | null | undefined;
mineSentenceMultiple: string | null | undefined;
multiCopyTimeoutMs: number;
toggleSecondarySub: string | null | undefined;
markAudioCard: string | null | undefined;
openRuntimeOptions: string | null | undefined;
openJimaku: string | null | undefined;
}
export function resolveConfiguredShortcuts(
config: Config,
defaultConfig: Config,
): ConfiguredShortcuts {
const normalizeShortcut = (
value: string | null | undefined,
): string | null | undefined => {
if (typeof value !== "string") return value;
return value
.replace(/\bKey([A-Z])\b/g, "$1")
.replace(/\bDigit([0-9])\b/g, "$1");
};
return {
toggleVisibleOverlayGlobal: normalizeShortcut(
config.shortcuts?.toggleVisibleOverlayGlobal ??
defaultConfig.shortcuts?.toggleVisibleOverlayGlobal,
),
toggleInvisibleOverlayGlobal: normalizeShortcut(
config.shortcuts?.toggleInvisibleOverlayGlobal ??
defaultConfig.shortcuts?.toggleInvisibleOverlayGlobal,
),
copySubtitle: normalizeShortcut(
config.shortcuts?.copySubtitle ?? defaultConfig.shortcuts?.copySubtitle,
),
copySubtitleMultiple: normalizeShortcut(
config.shortcuts?.copySubtitleMultiple ??
defaultConfig.shortcuts?.copySubtitleMultiple,
),
updateLastCardFromClipboard: normalizeShortcut(
config.shortcuts?.updateLastCardFromClipboard ??
defaultConfig.shortcuts?.updateLastCardFromClipboard,
),
triggerFieldGrouping: normalizeShortcut(
config.shortcuts?.triggerFieldGrouping ??
defaultConfig.shortcuts?.triggerFieldGrouping,
),
triggerSubsync: normalizeShortcut(
config.shortcuts?.triggerSubsync ?? defaultConfig.shortcuts?.triggerSubsync,
),
mineSentence: normalizeShortcut(
config.shortcuts?.mineSentence ?? defaultConfig.shortcuts?.mineSentence,
),
mineSentenceMultiple: normalizeShortcut(
config.shortcuts?.mineSentenceMultiple ??
defaultConfig.shortcuts?.mineSentenceMultiple,
),
multiCopyTimeoutMs:
config.shortcuts?.multiCopyTimeoutMs ??
defaultConfig.shortcuts?.multiCopyTimeoutMs ??
5000,
toggleSecondarySub: normalizeShortcut(
config.shortcuts?.toggleSecondarySub ??
defaultConfig.shortcuts?.toggleSecondarySub,
),
markAudioCard: normalizeShortcut(
config.shortcuts?.markAudioCard ?? defaultConfig.shortcuts?.markAudioCard,
),
openRuntimeOptions: normalizeShortcut(
config.shortcuts?.openRuntimeOptions ??
defaultConfig.shortcuts?.openRuntimeOptions,
),
openJimaku: normalizeShortcut(
config.shortcuts?.openJimaku ?? defaultConfig.shortcuts?.openJimaku,
),
};
}