More QOL changes

This commit is contained in:
ZXY101
2024-02-11 08:45:21 +02:00
parent 04dd68b242
commit 491c4efab2
5 changed files with 49 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { afterNavigate } from '$app/navigation'; import { afterNavigate, beforeNavigate } from '$app/navigation';
import { cropperStore, getCroppedImg, updateLastCard, type Pixels } from '$lib/anki-connect'; import { cropperStore, getCroppedImg, updateLastCard, type Pixels } from '$lib/anki-connect';
import { settings } from '$lib/settings'; import { settings } from '$lib/settings';
import { Button, Modal, Spinner } from 'flowbite-svelte'; import { Button, Modal, Spinner } from 'flowbite-svelte';
@@ -14,6 +14,13 @@
close(); close();
}); });
beforeNavigate((nav) => {
if (open) {
nav.cancel();
close();
}
});
onMount(() => { onMount(() => {
cropperStore.subscribe((value) => { cropperStore.subscribe((value) => {
if (value) { if (value) {
@@ -28,7 +35,7 @@
} }
async function onCrop() { async function onCrop() {
if ($cropperStore?.image && $cropperStore?.sentence && pixels) { if ($cropperStore?.image && pixels) {
loading = true; loading = true;
const imageData = await getCroppedImg($cropperStore.image, pixels); const imageData = await getCroppedImg($cropperStore.image, pixels);
updateLastCard(imageData, $cropperStore.sentence); updateLastCard(imageData, $cropperStore.sentence);

View File

@@ -195,8 +195,8 @@
const { clientX, clientY } = event; const { clientX, clientY } = event;
const { scale } = $panzoomStore.getTransform(); const { scale } = $panzoomStore.getTransform();
if (scale < 0.6) { if (scale < 1) {
$panzoomStore.zoomTo(clientX, clientY, 1.4); $panzoomStore.zoomTo(clientX, clientY, 1.5);
} else { } else {
zoomFitToScreen(); zoomFitToScreen();
} }

View File

@@ -45,6 +45,8 @@
$: border = $settings.textBoxBorders ? '1px solid red' : 'none'; $: border = $settings.textBoxBorders ? '1px solid red' : 'none';
$: contenteditable = $settings.textEditable; $: contenteditable = $settings.textEditable;
$: triggerMethod = $settings.ankiConnectSettings.triggerMethod || 'both';
async function onUpdateCard(lines: string[]) { async function onUpdateCard(lines: string[]) {
if ($settings.ankiConnectSettings.enabled) { if ($settings.ankiConnectSettings.enabled) {
const sentence = lines.join(' '); const sentence = lines.join(' ');
@@ -60,7 +62,14 @@
} }
function onContextMenu(event: Event, lines: string[]) { function onContextMenu(event: Event, lines: string[]) {
if ($settings.ankiConnectSettings.enabled) { if (triggerMethod === 'both' || triggerMethod === 'rightClick') {
event.preventDefault();
onUpdateCard(lines);
}
}
function onDoubleTap(event: Event, lines: string[]) {
if (triggerMethod === 'both' || triggerMethod === 'doubleTap') {
event.preventDefault(); event.preventDefault();
onUpdateCard(lines); onUpdateCard(lines);
} }
@@ -81,7 +90,7 @@
style:writing-mode={writingMode} style:writing-mode={writingMode}
role="none" role="none"
on:contextmenu={(e) => onContextMenu(e, lines)} on:contextmenu={(e) => onContextMenu(e, lines)}
on:dblclick={() => onUpdateCard(lines)} on:dblclick={(e) => onDoubleTap(e, lines)}
{contenteditable} {contenteditable}
> >
{#each lines as line} {#each lines as line}

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { page } from '$app/stores'; import { page } from '$app/stores';
import { settings, updateAnkiSetting } from '$lib/settings'; import { settings, updateAnkiSetting } from '$lib/settings';
import { AccordionItem, Label, Toggle, Input, Helper } from 'flowbite-svelte'; import { AccordionItem, Label, Toggle, Input, Helper, Select } from 'flowbite-svelte';
$: disabled = !$settings.ankiConnectSettings.enabled; $: disabled = !$settings.ankiConnectSettings.enabled;
@@ -12,18 +12,27 @@
let pictureField = $settings.ankiConnectSettings.pictureField; let pictureField = $settings.ankiConnectSettings.pictureField;
let sentenceField = $settings.ankiConnectSettings.sentenceField; let sentenceField = $settings.ankiConnectSettings.sentenceField;
let triggerMethod = $settings.ankiConnectSettings.triggerMethod;
const triggerOptions = [
{ value: 'rightClick', name: 'Right click (long press on mobile)' },
{ value: 'doubleTap', name: 'Double tap' },
{ value: 'both', name: 'Both' }
];
</script> </script>
<AccordionItem> <AccordionItem>
<span slot="header">Anki Connect</span> <span slot="header">Anki Connect</span>
<div class="flex flex-col gap-5"> <div class="flex flex-col gap-5">
<Helper <Helper
>For anki connect integration to work, you must add the reader (<code class="text-primary-500">{$page.url.origin}</code>) to your anki connect <b >For anki connect integration to work, you must add the reader (<code class="text-primary-500"
class="text-primary-500">webCorsOriginList</b >{$page.url.origin}</code
> list</Helper >) to your anki connect <b class="text-primary-500">webCorsOriginList</b> list</Helper
> >
<Helper> <Helper>
To trigger the anki connect integration, double click or right click (long press on mobile) any text box. To trigger the anki connect integration, double click or right click (long press on mobile)
any text box.
</Helper> </Helper>
<div> <div>
<Toggle bind:checked={enabled} on:change={() => updateAnkiSetting('enabled', enabled)} <Toggle bind:checked={enabled} on:change={() => updateAnkiSetting('enabled', enabled)}
@@ -70,5 +79,15 @@
on:change={() => updateAnkiSetting('grabSentence', grabSentence)}>Grab sentence</Toggle on:change={() => updateAnkiSetting('grabSentence', grabSentence)}>Grab sentence</Toggle
> >
</div> </div>
<div>
<Label>
Trigger method:
<Select
on:change={() => updateAnkiSetting('triggerMethod', triggerMethod)}
items={triggerOptions}
bind:value={triggerMethod}
/>
</Label>
</div>
</div> </div>
</AccordionItem> </AccordionItem>

View File

@@ -31,6 +31,7 @@ export type AnkiConnectSettings = {
cropImage: boolean; cropImage: boolean;
overwriteImage: boolean; overwriteImage: boolean;
grabSentence: boolean; grabSentence: boolean;
triggerMethod: 'rightClick' | 'doubleTap' | 'both'
} }
export type VolumeDefaults = { export type VolumeDefaults = {
@@ -90,7 +91,8 @@ const defaultSettings: Settings = {
grabSentence: false, grabSentence: false,
overwriteImage: true, overwriteImage: true,
pictureField: 'Picture', pictureField: 'Picture',
sentenceField: 'Sentence' sentenceField: 'Sentence',
triggerMethod: 'both'
} }
}; };