2025-01-03 18:40:52 +02:00
|
|
|
import { KeyboardActionNames } from "./keyboard_actions_interface.js";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A dictionary where the keys are the option keys (e.g. `theme`) and their corresponding values.
|
|
|
|
*/
|
|
|
|
export type OptionMap = Record<OptionNames, string>;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* For each keyboard action, there is a corresponding option which identifies the key combination defined by the user.
|
|
|
|
*/
|
|
|
|
type KeyboardShortcutsOptions<T extends KeyboardActionNames> = {
|
|
|
|
[key in T as `keyboardShortcuts${Capitalize<key>}`]: string
|
|
|
|
};
|
|
|
|
|
2025-01-03 20:08:58 +02:00
|
|
|
export type FontFamily = "theme" | "serif" | "sans-serif" | "monospace" | string;
|
|
|
|
|
2025-01-03 18:40:52 +02:00
|
|
|
export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActionNames> {
|
|
|
|
"openNoteContexts": string;
|
|
|
|
"lastDailyBackupDate": string;
|
|
|
|
"lastWeeklyBackupDate": string;
|
|
|
|
"lastMonthlyBackupDate": string;
|
|
|
|
"dbVersion": string;
|
|
|
|
"theme": string;
|
|
|
|
"syncServerHost": string;
|
|
|
|
"syncServerTimeout": string;
|
|
|
|
"syncProxy": string;
|
2025-01-03 20:08:58 +02:00
|
|
|
"mainFontFamily": FontFamily;
|
|
|
|
"treeFontFamily": FontFamily;
|
|
|
|
"detailFontFamily": FontFamily;
|
|
|
|
"monospaceFontFamily": FontFamily;
|
2025-01-03 18:40:52 +02:00
|
|
|
"spellCheckLanguageCode": string;
|
|
|
|
"codeNotesMimeTypes": string;
|
|
|
|
"headingStyle": string;
|
|
|
|
"highlightsList": string;
|
|
|
|
"customSearchEngineName": string;
|
|
|
|
"customSearchEngineUrl": string;
|
|
|
|
"locale": string;
|
|
|
|
"codeBlockTheme": string;
|
|
|
|
"textNoteEditorType": string;
|
|
|
|
"layoutOrientation": string;
|
|
|
|
"allowedHtmlTags": string;
|
|
|
|
"documentId": string;
|
|
|
|
"documentSecret": string;
|
|
|
|
"passwordVerificationHash": string;
|
|
|
|
"passwordVerificationSalt": string;
|
|
|
|
"passwordDerivedKeySalt": string;
|
|
|
|
"encryptedDataKey": string;
|
|
|
|
|
|
|
|
"lastSyncedPull": number;
|
|
|
|
"lastSyncedPush": number;
|
|
|
|
"revisionSnapshotTimeInterval": number;
|
|
|
|
"revisionSnapshotNumberLimit": number;
|
|
|
|
"protectedSessionTimeout": number;
|
|
|
|
"zoomFactor": number;
|
|
|
|
"mainFontSize": number;
|
|
|
|
"treeFontSize": number;
|
|
|
|
"detailFontSize": number;
|
|
|
|
"monospaceFontSize": number;
|
|
|
|
"imageMaxWidthHeight": number;
|
|
|
|
"imageJpegQuality": number;
|
|
|
|
"leftPaneWidth": number;
|
|
|
|
"rightPaneWidth": number;
|
|
|
|
"eraseEntitiesAfterTimeInSeconds": number;
|
|
|
|
"autoReadonlySizeText": number;
|
|
|
|
"autoReadonlySizeCode": number;
|
|
|
|
"maxContentWidth": number;
|
|
|
|
"minTocHeadings": number;
|
|
|
|
"eraseUnusedAttachmentsAfterSeconds": number;
|
|
|
|
"firstDayOfWeek": number;
|
|
|
|
|
|
|
|
"initialized": boolean;
|
|
|
|
"overrideThemeFonts": boolean;
|
|
|
|
"spellCheckEnabled": boolean;
|
|
|
|
"autoFixConsistencyIssues": boolean;
|
|
|
|
"vimKeymapEnabled": boolean;
|
|
|
|
"codeLineWrapEnabled": boolean;
|
|
|
|
"leftPaneVisible": boolean;
|
|
|
|
"rightPaneVisible": boolean;
|
|
|
|
"nativeTitleBarVisible": boolean;
|
|
|
|
"hideArchivedNotes_main": boolean;
|
|
|
|
"debugModeEnabled": boolean;
|
|
|
|
"autoCollapseNoteTree": boolean;
|
|
|
|
"dailyBackupEnabled": boolean;
|
|
|
|
"weeklyBackupEnabled": boolean;
|
|
|
|
"monthlyBackupEnabled": boolean;
|
|
|
|
"compressImages": boolean;
|
|
|
|
"downloadImagesAutomatically": boolean;
|
|
|
|
"checkForUpdates": boolean;
|
|
|
|
"disableTray": boolean;
|
|
|
|
"promotedAttributesOpenInRibbon": boolean;
|
|
|
|
"editedNotesOpenInRibbon": boolean;
|
|
|
|
"codeBlockWordWrap": boolean;
|
|
|
|
"textNoteEditorMultilineToolbar": boolean;
|
|
|
|
"backgroundEffects": boolean;
|
|
|
|
};
|
|
|
|
|
|
|
|
export type OptionNames = keyof OptionDefinitions;
|
|
|
|
|
|
|
|
export type FilterOptionsByType<U> = {
|
|
|
|
[K in keyof OptionDefinitions]: OptionDefinitions[K] extends U ? K : never;
|
|
|
|
}[keyof OptionDefinitions];
|