diff --git a/qt/aqt/data/web/js/reviewer.ts b/qt/aqt/data/web/js/reviewer.ts
index fe9935e87..d56d09fe7 100644
--- a/qt/aqt/data/web/js/reviewer.ts
+++ b/qt/aqt/data/web/js/reviewer.ts
@@ -61,14 +61,17 @@ async function _updateQA(
onShownHook = [onshown];
const qa = document.getElementById("qa")!;
- const renderError = (kind: string) => (error: Error): void => {
- const errorMessage = String(error).substring(0, 2000);
- const errorStack = String(error.stack).substring(0, 2000);
- qa.innerHTML = `Invalid ${kind} on card: ${errorMessage}\n${errorStack}`.replace(
- /\n/g,
- " "
- );
- };
+ const renderError =
+ (kind: string) =>
+ (error: Error): void => {
+ const errorMessage = String(error).substring(0, 2000);
+ const errorStack = String(error.stack).substring(0, 2000);
+ qa.innerHTML =
+ `Invalid ${kind} on card: ${errorMessage}\n${errorStack}`.replace(
+ /\n/g,
+ " "
+ );
+ };
// hide current card
qa.style.opacity = "0";
diff --git a/ts/components/ButtonDropdown.svelte b/ts/components/ButtonDropdown.svelte
index 530defa1a..622ac521d 100644
--- a/ts/components/ButtonDropdown.svelte
+++ b/ts/components/ButtonDropdown.svelte
@@ -18,6 +18,17 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
setContext(dropdownKey, null);
+
+
+
+
-
-
-
-
diff --git a/ts/components/ButtonGroup.svelte b/ts/components/ButtonGroup.svelte
index 5f8de7614..9ce4b3f25 100644
--- a/ts/components/ButtonGroup.svelte
+++ b/ts/components/ButtonGroup.svelte
@@ -24,12 +24,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
return { detach, position };
}
- const {
- registerComponent,
- items,
- dynamicItems,
- getDynamicInterface,
- } = makeInterface(makeRegistration);
+ const { registerComponent, items, dynamicItems, getDynamicInterface } =
+ makeInterface(makeRegistration);
$: for (const [index, item] of $items.entries()) {
if ($items.length === 1) {
@@ -49,9 +45,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
let buttonGroupRef: HTMLDivElement;
$: if (api && buttonGroupRef) {
- const { addComponent, updateRegistration } = getDynamicInterface(
- buttonGroupRef
- );
+ const { addComponent, updateRegistration } =
+ getDynamicInterface(buttonGroupRef);
const insertButton = (button: SvelteComponent, position: Identifier = 0) =>
addComponent(button, (added, parent) => insert(added, parent, position));
@@ -78,20 +73,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
}
-
-
+ role="group"
+>
{#each $dynamicItems as item}
@@ -99,3 +87,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
{/each}
+
+
diff --git a/ts/components/ButtonGroupItem.svelte b/ts/components/ButtonGroupItem.svelte
index 937ef66db..6d4ea0f97 100644
--- a/ts/components/ButtonGroupItem.svelte
+++ b/ts/components/ButtonGroupItem.svelte
@@ -44,9 +44,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
detach.subscribe((value: boolean) => (detached = value));
position.subscribe((value: ButtonPosition) => (position_ = value));
} else if (hasContext(buttonGroupKey)) {
- const registerComponent = getContext>(
- buttonGroupKey
- );
+ const registerComponent =
+ getContext>(buttonGroupKey);
const { detach, position } = registerComponent();
detach.subscribe((value: boolean) => (detached = value));
position.subscribe((value: ButtonPosition) => (position_ = value));
diff --git a/ts/components/ButtonToolbar.svelte b/ts/components/ButtonToolbar.svelte
index 66b2f1571..8b43a1480 100644
--- a/ts/components/ButtonToolbar.svelte
+++ b/ts/components/ButtonToolbar.svelte
@@ -24,9 +24,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
return { detach };
}
- const { registerComponent, dynamicItems, getDynamicInterface } = makeInterface(
- makeRegistration
- );
+ const { registerComponent, dynamicItems, getDynamicInterface } =
+ makeInterface(makeRegistration);
setContext(buttonToolbarKey, registerComponent);
@@ -34,9 +33,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
let buttonToolbarRef: HTMLDivElement;
$: if (buttonToolbarRef && api) {
- const { addComponent, updateRegistration } = getDynamicInterface(
- buttonToolbarRef
- );
+ const { addComponent, updateRegistration } =
+ getDynamicInterface(buttonToolbarRef);
const insertGroup = (group: SvelteComponent, position: Identifier = 0) =>
addComponent(group, (added, parent) => insert(added, parent, position));
@@ -68,7 +66,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
{id}
class={`btn-toolbar ${className}`}
class:flex-nowrap={nowrap}
- role="toolbar">
+ role="toolbar"
+>
{#each $dynamicItems as item}
diff --git a/ts/components/ButtonToolbarItem.svelte b/ts/components/ButtonToolbarItem.svelte
index 575f5a1ad..5d77dd16a 100644
--- a/ts/components/ButtonToolbarItem.svelte
+++ b/ts/components/ButtonToolbarItem.svelte
@@ -20,9 +20,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
const { detach } = registration;
detach.subscribe((value: boolean) => (detached = value));
} else if (hasContext(buttonToolbarKey)) {
- const registerComponent = getContext>(
- buttonToolbarKey
- );
+ const registerComponent =
+ getContext>(buttonToolbarKey);
const { detach } = registerComponent();
detach.subscribe((value: boolean) => (detached = value));
} else {
@@ -30,15 +29,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
}
-
-
+
+
diff --git a/ts/components/ColorPicker.svelte b/ts/components/ColorPicker.svelte
index b2e8288fd..d29c88fe0 100644
--- a/ts/components/ColorPicker.svelte
+++ b/ts/components/ColorPicker.svelte
@@ -25,6 +25,20 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
onMount(() => dispatch("mount", { button: buttonRef, input: inputRef }));
+
+
+
+
-
-
-
-
diff --git a/ts/components/DropdownItem.svelte b/ts/components/DropdownItem.svelte
index 84f3911d9..03b31518c 100644
--- a/ts/components/DropdownItem.svelte
+++ b/ts/components/DropdownItem.svelte
@@ -20,6 +20,19 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
onMount(() => dispatch("mount", { button: buttonRef }));
+
+
+
+
-
-
-
-
diff --git a/ts/components/DropdownMenu.svelte b/ts/components/DropdownMenu.svelte
index b3cc9e1b4..8db932f4f 100644
--- a/ts/components/DropdownMenu.svelte
+++ b/ts/components/DropdownMenu.svelte
@@ -11,13 +11,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
setContext(dropdownKey, null);
+
+
-
-
diff --git a/ts/components/IconButton.svelte b/ts/components/IconButton.svelte
index ff594339f..a63c89ecc 100644
--- a/ts/components/IconButton.svelte
+++ b/ts/components/IconButton.svelte
@@ -29,6 +29,24 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
onMount(() => dispatch("mount", { button: buttonRef }));
+
+
+
+
-
-
-
-
diff --git a/ts/components/LabelButton.svelte b/ts/components/LabelButton.svelte
index 71082fcb6..74c1c78ee 100644
--- a/ts/components/LabelButton.svelte
+++ b/ts/components/LabelButton.svelte
@@ -34,6 +34,24 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
onMount(() => dispatch("mount", { button: buttonRef }));
+
+
+
+
-
-
-
-
diff --git a/ts/components/SelectButton.svelte b/ts/components/SelectButton.svelte
index 4309e4985..35f33f058 100644
--- a/ts/components/SelectButton.svelte
+++ b/ts/components/SelectButton.svelte
@@ -25,17 +25,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
onMount(() => dispatch("mount", { button: buttonRef }));
-
-
+ on:change
+>
+
+
diff --git a/ts/components/StickyBar.svelte b/ts/components/StickyBar.svelte
index d5aa9f1e5..c6adc0b20 100644
--- a/ts/components/StickyBar.svelte
+++ b/ts/components/StickyBar.svelte
@@ -8,6 +8,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export { className as class };
+
+
+
+
-
-
-
-
diff --git a/ts/components/WithLabel.svelte b/ts/components/WithLabel.svelte
index 29544290a..ac1218942 100644
--- a/ts/components/WithLabel.svelte
+++ b/ts/components/WithLabel.svelte
@@ -12,16 +12,16 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export let button: ToolbarItem;
-
-
{label}
+
+
diff --git a/ts/components/WithState.svelte b/ts/components/WithState.svelte
index 3ff94d7a8..97d22ee4c 100644
--- a/ts/components/WithState.svelte
+++ b/ts/components/WithState.svelte
@@ -13,17 +13,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
const stateStore = writable(stateMap);
function updateAllStateWithCallback(callback: (key: string) => boolean): void {
- stateStore.update(
- (map: StateMap): StateMap => {
- const newMap = new Map() as StateMap;
+ stateStore.update((map: StateMap): StateMap => {
+ const newMap = new Map() as StateMap;
- for (const key of map.keys()) {
- newMap.set(key, callback(key));
- }
-
- return newMap;
+ for (const key of map.keys()) {
+ newMap.set(key, callback(key));
}
- );
+
+ return newMap;
+ });
}
export function updateAllState(event: Event): void {
@@ -37,12 +35,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
}
function updateStateByKey(key: string, event: Event): void {
- stateStore.update(
- (map: StateMap): StateMap => {
- map.set(key, updaterMap.get(key)!(event));
- return map;
- }
- );
+ stateStore.update((map: StateMap): StateMap => {
+ map.set(key, updaterMap.get(key)!(event));
+ return map;
+ });
}
diff --git a/ts/components/WithTheming.svelte b/ts/components/WithTheming.svelte
index 8b088b224..6cb3b5603 100644
--- a/ts/components/WithTheming.svelte
+++ b/ts/components/WithTheming.svelte
@@ -9,12 +9,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export let style: string;
+
+
+
+
-
-
-
-
diff --git a/ts/congrats/CongratsPage.svelte b/ts/congrats/CongratsPage.svelte
index 2aabc5d84..f2a5fc9d5 100644
--- a/ts/congrats/CongratsPage.svelte
+++ b/ts/congrats/CongratsPage.svelte
@@ -23,22 +23,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
});
-
-
{congrats}
@@ -74,3 +58,19 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
{/if}
+
+
diff --git a/ts/deckoptions/AdvancedOptions.svelte b/ts/deckoptions/AdvancedOptions.svelte
index 625b8efe2..d445cf014 100644
--- a/ts/deckoptions/AdvancedOptions.svelte
+++ b/ts/deckoptions/AdvancedOptions.svelte
@@ -21,7 +21,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
min={1}
max={365 * 100}
defaultValue={defaults.maximumReviewInterval}
- bind:value={$config.maximumReviewInterval} />
+ bind:value={$config.maximumReviewInterval}
+/>
($config.initialEase = evt.detail.value)} />
+ on:changed={(evt) => ($config.initialEase = evt.detail.value)}
+/>
($config.easyMultiplier = evt.detail.value)} />
+ on:changed={(evt) => ($config.easyMultiplier = evt.detail.value)}
+/>
($config.intervalMultiplier = evt.detail.value)} />
+ on:changed={(evt) => ($config.intervalMultiplier = evt.detail.value)}
+/>
($config.hardMultiplier = evt.detail.value)} />
+ on:changed={(evt) => ($config.hardMultiplier = evt.detail.value)}
+/>
($config.lapseMultiplier = evt.detail.value)} />
+ on:changed={(evt) => ($config.lapseMultiplier = evt.detail.value)}
+/>
diff --git a/ts/deckoptions/BuryOptions.svelte b/ts/deckoptions/BuryOptions.svelte
index 11cacca33..7786f3119 100644
--- a/ts/deckoptions/BuryOptions.svelte
+++ b/ts/deckoptions/BuryOptions.svelte
@@ -18,10 +18,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
label={tr.deckConfigBuryNewSiblings()}
tooltip={tr.deckConfigBuryTooltip()}
defaultValue={defaults.buryNew}
- bind:value={$config.buryNew} />
+ bind:value={$config.buryNew}
+/>
+ bind:value={$config.buryReviews}
+/>
diff --git a/ts/deckoptions/CheckBox.svelte b/ts/deckoptions/CheckBox.svelte
index ad5b4cdf1..20dec648c 100644
--- a/ts/deckoptions/CheckBox.svelte
+++ b/ts/deckoptions/CheckBox.svelte
@@ -12,12 +12,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export let id: string | undefined = undefined;
-
-
{label}
@@ -26,3 +20,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
{/if}
+
+
diff --git a/ts/deckoptions/ConfigEditor.svelte b/ts/deckoptions/ConfigEditor.svelte
index 9d24dbc57..8f3c143a2 100644
--- a/ts/deckoptions/ConfigEditor.svelte
+++ b/ts/deckoptions/ConfigEditor.svelte
@@ -16,6 +16,19 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export let state: DeckOptionsState;
+
+
+
+
+
+ {#if state.v3Scheduler}
+
+ {/if}
+
+
+
+
+
-
-
-
-
-
-
- {#if state.v3Scheduler}
-
- {/if}
-
-
-
-
diff --git a/ts/deckoptions/ConfigEntry.svelte b/ts/deckoptions/ConfigEntry.svelte
index fe4a251ba..c2d1abf88 100644
--- a/ts/deckoptions/ConfigEntry.svelte
+++ b/ts/deckoptions/ConfigEntry.svelte
@@ -21,6 +21,32 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
$: renderedTooltip = marked(tooltip);
+
+ {#if label}
+
+
+ {label}
+ {#if renderedTooltip}
+
+ {/if}
+
+
+ {/if}
+
+
+
+
+
+
+
+ {#each warnings as warning}
+ {#if warning}
+
{warning}
+ {/if}
+ {/each}
+
+
+
-
-
- {#if label}
-
-
- {label}
- {#if renderedTooltip}
-
- {/if}
-
-
- {/if}
-
-
-
-
-
-
-
- {#each warnings as warning}
- {#if warning}
-
{warning}
- {/if}
- {/each}
-
-
diff --git a/ts/deckoptions/ConfigSelector.svelte b/ts/deckoptions/ConfigSelector.svelte
index fdd7681a0..44cb5920f 100644
--- a/ts/deckoptions/ConfigSelector.svelte
+++ b/ts/deckoptions/ConfigSelector.svelte
@@ -64,13 +64,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
title="Add Config"
prompt="Name"
onOk={onAddConfig}
- bind:modalKey={addModalKey} />
+ bind:modalKey={addModalKey}
+/>
+ bind:modalKey={renameModalKey}
+/>
@@ -82,7 +84,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
{#each $configList as entry}
+ selected={entry.current}
+ >
{configLabel(entry)}
{/each}
diff --git a/ts/deckoptions/DailyLimits.svelte b/ts/deckoptions/DailyLimits.svelte
index bed449940..fa197f4d7 100644
--- a/ts/deckoptions/DailyLimits.svelte
+++ b/ts/deckoptions/DailyLimits.svelte
@@ -41,7 +41,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
min={0}
warnings={[newCardsGreaterThanParent]}
defaultValue={defaults.newPerDay}
- bind:value={$config.newPerDay} />
+ bind:value={$config.newPerDay}
+/>
+ bind:value={$config.reviewsPerDay}
+/>
diff --git a/ts/deckoptions/DisplayOrder.svelte b/ts/deckoptions/DisplayOrder.svelte
index 940721597..d06e9a5ff 100644
--- a/ts/deckoptions/DisplayOrder.svelte
+++ b/ts/deckoptions/DisplayOrder.svelte
@@ -37,32 +37,37 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
tooltip={tr.deckConfigNewGatherPriorityTooltip()}
choices={newGatherPriorityChoices}
defaultValue={defaults.newCardGatherPriority}
- bind:value={$config.newCardGatherPriority} />
+ bind:value={$config.newCardGatherPriority}
+/>
+ bind:value={$config.newCardSortOrder}
+/>
+ bind:value={$config.newMix}
+/>
+ bind:value={$config.interdayLearningMix}
+/>
+ bind:value={$config.reviewOrder}
+/>
diff --git a/ts/deckoptions/GeneralOptions.svelte b/ts/deckoptions/GeneralOptions.svelte
index b1a0c1638..e1b2729e7 100644
--- a/ts/deckoptions/GeneralOptions.svelte
+++ b/ts/deckoptions/GeneralOptions.svelte
@@ -21,24 +21,28 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
min={30}
max={600}
defaultValue={defaults.capAnswerTimeToSecs}
- bind:value={$config.capAnswerTimeToSecs} />
+ bind:value={$config.capAnswerTimeToSecs}
+/>
+ bind:value={$config.showTimer}
+/>
{tr.deckConfigAudioTitle()}
+ bind:value={$config.disableAutoplay}
+/>
+ bind:value={$config.skipQuestionWhenReplayingAnswer}
+/>
diff --git a/ts/deckoptions/HelpPopup.svelte b/ts/deckoptions/HelpPopup.svelte
index 15ccc9c15..ddb1265d8 100644
--- a/ts/deckoptions/HelpPopup.svelte
+++ b/ts/deckoptions/HelpPopup.svelte
@@ -20,13 +20,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
});
+
+ {@html infoCircle}
+
+
-
-
- {@html infoCircle}
-
diff --git a/ts/deckoptions/LapseOptions.svelte b/ts/deckoptions/LapseOptions.svelte
index cda0ced36..2fee6b80f 100644
--- a/ts/deckoptions/LapseOptions.svelte
+++ b/ts/deckoptions/LapseOptions.svelte
@@ -35,7 +35,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
tooltip={tr.deckConfigRelearningStepsTooltip()}
defaultValue={defaults.relearnSteps}
value={$config.relearnSteps}
- on:changed={(evt) => ($config.relearnSteps = evt.detail.value)} />
+ on:changed={(evt) => ($config.relearnSteps = evt.detail.value)}
+ />
+ bind:value={$config.minimumLapseInterval}
+ />
+ bind:value={$config.leechThreshold}
+ />
+ bind:value={$config.leechAction}
+ />
diff --git a/ts/deckoptions/NewOptions.svelte b/ts/deckoptions/NewOptions.svelte
index ea43288e5..a2e680bd7 100644
--- a/ts/deckoptions/NewOptions.svelte
+++ b/ts/deckoptions/NewOptions.svelte
@@ -42,25 +42,29 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
tooltip={tr.deckConfigLearningStepsTooltip()}
defaultValue={defaults.learnSteps}
value={$config.learnSteps}
- on:changed={(evt) => ($config.learnSteps = evt.detail.value)} />
+ on:changed={(evt) => ($config.learnSteps = evt.detail.value)}
+/>
+ bind:value={$config.graduatingIntervalGood}
+/>
+ bind:value={$config.graduatingIntervalEasy}
+/>
+ bind:value={$config.newCardInsertOrder}
+/>
diff --git a/ts/deckoptions/RevertButton.svelte b/ts/deckoptions/RevertButton.svelte
index 9f7afaa50..29176ff95 100644
--- a/ts/deckoptions/RevertButton.svelte
+++ b/ts/deckoptions/RevertButton.svelte
@@ -48,6 +48,17 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
}
+{#if modified}
+
+ {@html revertIcon}
+
+{/if}
+
-
-{#if modified}
-
- {@html revertIcon}
-
-{/if}
diff --git a/ts/deckoptions/SaveButton.svelte b/ts/deckoptions/SaveButton.svelte
index 5a5002f38..f1c29c327 100644
--- a/ts/deckoptions/SaveButton.svelte
+++ b/ts/deckoptions/SaveButton.svelte
@@ -56,8 +56,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html