diff --git a/.prettierignore b/.prettierignore
index efcaaca13..0815202a2 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -2,5 +2,6 @@ licenses.json
vendor
node_modules
bazel-*
+.bazel
ftl/usage
-.mypy_cache
\ No newline at end of file
+.mypy_cache
diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py
index 904a8b922..d3cfd0fc2 100644
--- a/qt/aqt/browser/browser.py
+++ b/qt/aqt/browser/browser.py
@@ -413,9 +413,6 @@ class Browser(QMainWindow):
def add_preview_button(editor: Editor) -> None:
editor._links["preview"] = lambda _editor: self.onTogglePreview()
- editor.web.eval(
- "noteEditorPromise.then(noteEditor => noteEditor.toolbar.notetypeButtons.appendButton({ component: editorToolbar.PreviewButton, id: 'preview' }));",
- )
gui_hooks.editor_did_init.append(add_preview_button)
self.editor = aqt.editor.Editor(
@@ -633,9 +630,7 @@ class Browser(QMainWindow):
def toggle_preview_button_state(self, active: bool) -> None:
if self.editor.web:
- self.editor.web.eval(
- f"editorToolbar.togglePreviewButtonState({json.dumps(active)});"
- )
+ self.editor.web.eval(f"togglePreviewButtonState({json.dumps(active)});")
def _cleanup_preview(self) -> None:
if self._previewer:
diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py
index 9860049c4..41e9e38c9 100644
--- a/qt/aqt/editor.py
+++ b/qt/aqt/editor.py
@@ -174,7 +174,7 @@ class Editor:
righttopbtns_defs = ", ".join([json.dumps(button) for button in righttopbtns])
righttopbtns_js = (
f"""
-uiPromise.then(noteEditor => noteEditor.toolbar.toolbar.appendGroup({{
+require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].toolbar.toolbar.append({{
component: editorToolbar.AddonButtons,
id: "addons",
props: {{ buttons: [ {righttopbtns_defs} ] }},
@@ -525,7 +525,9 @@ uiPromise.then(noteEditor => noteEditor.toolbar.toolbar.appendGroup({{
js += " setSticky(%s);" % json.dumps(sticky)
js = gui_hooks.editor_will_load_note(js, self.note, self)
- self.web.evalWithCallback(f"uiPromise.then(() => {{ {js} }})", oncallback)
+ self.web.evalWithCallback(
+ f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback
+ )
def _save_current_note(self) -> None:
"Call after note is updated with data from webview."
@@ -579,8 +581,12 @@ uiPromise.then(noteEditor => noteEditor.toolbar.toolbar.appendGroup({{
elif result == NoteFieldsCheckResult.FIELD_NOT_CLOZE:
cloze_hint = tr.adding_cloze_outside_cloze_field()
- self.web.eval(f"uiPromise.then(() => setBackgrounds({json.dumps(cols)}));")
- self.web.eval(f"uiPromise.then(() => setClozeHint({json.dumps(cloze_hint)}));")
+ self.web.eval(
+ 'require("anki/ui").loaded.then(() => {'
+ f"setBackgrounds({json.dumps(cols)});\n"
+ f"setClozeHint({json.dumps(cloze_hint)});\n"
+ "}); "
+ )
def showDupes(self) -> None:
aqt.dialogs.open(
@@ -1353,14 +1359,12 @@ gui_hooks.editor_will_munge_html.append(reverse_url_quoting)
def set_cloze_button(editor: Editor) -> None:
- if editor.note.note_type()["type"] == MODEL_CLOZE:
- editor.web.eval(
- 'uiPromise.then((noteEditor) => noteEditor.toolbar.templateButtons.showButton("cloze")); '
- )
- else:
- editor.web.eval(
- 'uiPromise.then((noteEditor) => noteEditor.toolbar.templateButtons.hideButton("cloze")); '
- )
+ action = "show" if editor.note.note_type()["type"] == MODEL_CLOZE else "hide"
+ editor.web.eval(
+ 'require("anki/ui").loaded.then(() =>'
+ f'require("anki/NoteEditor").instances[0].toolbar.templateButtons.{action}("cloze")'
+ "); "
+ )
gui_hooks.editor_did_load_note.append(set_cloze_button)
diff --git a/ts/change-notetype/NotetypeSelector.svelte b/ts/change-notetype/NotetypeSelector.svelte
index 7b2bc5301..0d769c639 100644
--- a/ts/change-notetype/NotetypeSelector.svelte
+++ b/ts/change-notetype/NotetypeSelector.svelte
@@ -6,9 +6,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import type { ChangeNotetypeState } from "./lib";
import StickyContainer from "../components/StickyContainer.svelte";
import ButtonToolbar from "../components/ButtonToolbar.svelte";
- import Item from "../components/Item.svelte";
import ButtonGroup from "../components/ButtonGroup.svelte";
- import ButtonGroupItem from "../components/ButtonGroupItem.svelte";
import LabelButton from "../components/LabelButton.svelte";
import Badge from "../components/Badge.svelte";
import { arrowRightIcon, arrowLeftIcon } from "./icons";
@@ -33,41 +31,26 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
--sticky-borders="0 0 1px"
>
- -
-
-
- {$info.oldNotetypeName}
-
-
-
- -
-
- {#if window.getComputedStyle(document.body).direction == "rtl"}
- {@html arrowLeftIcon}
- {:else}
- {@html arrowRightIcon}
- {/if}
-
-
- -
-
-
-
- {#each $notetypes as entry}
-
- {entry.name}
-
- {/each}
-
-
-
-
+
+ {$info.oldNotetypeName}
+
+
+ {#if window.getComputedStyle(document.body).direction == "rtl"}
+ {@html arrowLeftIcon}
+ {:else}
+ {@html arrowRightIcon}
+ {/if}
+
+
+
+ {#each $notetypes as entry}
+
+ {entry.name}
+
+ {/each}
+
+
- -
-
-
+
diff --git a/ts/change-notetype/SaveButton.svelte b/ts/change-notetype/SaveButton.svelte
index e5f79007b..d93c94ddf 100644
--- a/ts/change-notetype/SaveButton.svelte
+++ b/ts/change-notetype/SaveButton.svelte
@@ -8,7 +8,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import { getPlatformString } from "../lib/shortcuts";
import ButtonGroup from "../components/ButtonGroup.svelte";
- import ButtonGroupItem from "../components/ButtonGroupItem.svelte";
import LabelButton from "../components/LabelButton.svelte";
import Shortcut from "../components/Shortcut.svelte";
@@ -25,12 +24,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-
- {tr.actionsSave()}
-
-
+ {tr.actionsSave()}
+
diff --git a/ts/components/BUILD.bazel b/ts/components/BUILD.bazel
index a86e250e1..f75360f0a 100644
--- a/ts/components/BUILD.bazel
+++ b/ts/components/BUILD.bazel
@@ -42,6 +42,7 @@ svelte_check(
"//sass:breakpoints_lib",
"//sass/bootstrap",
"@npm//@types/bootstrap",
+ "//ts/lib:lib_pkg",
"//ts/sveltelib:sveltelib_pkg",
],
)
diff --git a/ts/components/ButtonDropdown.svelte b/ts/components/ButtonDropdown.svelte
index f5de681d7..a6657b47a 100644
--- a/ts/components/ButtonDropdown.svelte
+++ b/ts/components/ButtonDropdown.svelte
@@ -12,17 +12,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
let className = "";
export { className as class };
- export let api: Record | undefined = undefined;
-
setContext(dropdownKey, null);
-