diff --git a/src/lib/components/NavBar.svelte b/src/lib/components/NavBar.svelte index b3bfd56..609f792 100644 --- a/src/lib/components/NavBar.svelte +++ b/src/lib/components/NavBar.svelte @@ -3,7 +3,7 @@ import { UserSettingsSolid, UploadSolid } from 'flowbite-svelte-icons'; import { afterNavigate } from '$app/navigation'; import { page } from '$app/stores'; - import Settings from './Settings.svelte'; + import Settings from './Settings/Settings.svelte'; import UploadModal from './UploadModal.svelte'; import { settings } from '$lib/settings'; diff --git a/src/lib/components/Settings.svelte b/src/lib/components/Settings.svelte deleted file mode 100644 index 2cf84d1..0000000 --- a/src/lib/components/Settings.svelte +++ /dev/null @@ -1,113 +0,0 @@ - - - -
-
- Settings -
- (hidden = true)} class="mb-4 dark:text-white" /> -
-
-
- - onSelectChange(e, 'fontSize')} - /> -
-
- - -
- -
-
diff --git a/src/lib/components/Settings/AnkiConnectSettings.svelte b/src/lib/components/Settings/AnkiConnectSettings.svelte new file mode 100644 index 0000000..fa04b22 --- /dev/null +++ b/src/lib/components/Settings/AnkiConnectSettings.svelte @@ -0,0 +1,65 @@ + + + + Anki Connect +
+
+ updateAnkiSetting('enabled', enabled)} + >AnkiConnect Integration Enabled +
+
+ + updateAnkiSetting('pictureField', pictureField)} + /> +
+
+ + updateAnkiSetting('sentenceField', sentenceField)} + /> +
+
+ updateAnkiSetting('cropImage', cropImage)}>Crop image +
+
+ updateAnkiSetting('overwriteImage', overwriteImage)} + >Overwrite image +
+
+ updateAnkiSetting('grabSentence', grabSentence)}>Grab sentence +
+
+
diff --git a/src/lib/components/Settings/ReaderSelects.svelte b/src/lib/components/Settings/ReaderSelects.svelte new file mode 100644 index 0000000..5d3f8cb --- /dev/null +++ b/src/lib/components/Settings/ReaderSelects.svelte @@ -0,0 +1,62 @@ + + +
+ + onSelectChange(e, 'fontSize')} + /> +
+
+ + +
diff --git a/src/lib/components/Settings/ReaderSettings.svelte b/src/lib/components/Settings/ReaderSettings.svelte new file mode 100644 index 0000000..4c8a365 --- /dev/null +++ b/src/lib/components/Settings/ReaderSettings.svelte @@ -0,0 +1,15 @@ + + + + Reader +
+ +
+ +
+
diff --git a/src/lib/components/Settings/ReaderToggles.svelte b/src/lib/components/Settings/ReaderToggles.svelte new file mode 100644 index 0000000..df2d22a --- /dev/null +++ b/src/lib/components/Settings/ReaderToggles.svelte @@ -0,0 +1,19 @@ + + +{#each toggles as { key, text, value }} + updateSetting(key, !value)}>{text} +{/each} diff --git a/src/lib/components/Settings/Settings.svelte b/src/lib/components/Settings/Settings.svelte new file mode 100644 index 0000000..985ae3f --- /dev/null +++ b/src/lib/components/Settings/Settings.svelte @@ -0,0 +1,52 @@ + + + +
+
+ Settings +
+ +
+
+ + + + +
+ + +
+
+
diff --git a/src/lib/settings/index.ts b/src/lib/settings/index.ts index 6d06725..d1d21bf 100644 --- a/src/lib/settings/index.ts +++ b/src/lib/settings/index.ts @@ -37,13 +37,26 @@ export type Settings = { backgroundColor: string; fontSize: FontSize; zoomDefault: ZoomModes; + ankiConnectSettings: AnkiConnectSettings; }; export type SettingsKey = keyof Settings; +export type AnkiConnectSettings = { + enabled: boolean; + pictureField: string; + sentenceField: string; + cropImage: boolean; + overwriteImage: boolean; + grabSentence: boolean; +} + +export type AnkiSettingsKey = keyof AnkiConnectSettings; + + const defaultSettings: Settings = { rightToLeft: true, - singlePageView: true, + singlePageView: false, hasCover: false, displayOCR: true, textEditable: false, @@ -52,7 +65,15 @@ const defaultSettings: Settings = { pageNum: true, backgroundColor: '#0d0d0f', fontSize: 'auto', - zoomDefault: 'zoomFitToScreen' + zoomDefault: 'zoomFitToScreen', + ankiConnectSettings: { + enabled: false, + cropImage: false, + grabSentence: false, + overwriteImage: true, + pictureField: 'Picture', + sentenceField: 'Sentence' + } }; const stored = browser ? window.localStorage.getItem('settings') : undefined; @@ -72,6 +93,18 @@ export function updateSetting(key: SettingsKey, value: any) { zoomDefault(); } +export function updateAnkiSetting(key: AnkiSettingsKey, value: any) { + settings.update((settings) => { + return { + ...settings, + ankiConnectSettings: { + ...settings.ankiConnectSettings, + [key]: value + } + }; + }); +} + export function resetSettings() { settings.set(defaultSettings); }