diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py index 260746514..11488dd03 100644 --- a/qt/aqt/browser/browser.py +++ b/qt/aqt/browser/browser.py @@ -601,6 +601,7 @@ class Browser(QMainWindow): def add_preview_button(editor: Editor) -> None: editor._links["preview"] = lambda _editor: self.onTogglePreview() + gui_hooks.editor_did_init.remove(add_preview_button) gui_hooks.editor_did_init.append(add_preview_button) self.editor = aqt.editor.Editor( @@ -609,7 +610,6 @@ class Browser(QMainWindow): self, editor_mode=aqt.editor.EditorMode.BROWSER, ) - gui_hooks.editor_did_init.remove(add_preview_button) @ensure_editor_saved def on_all_or_selected_rows_changed(self) -> None: diff --git a/ts/routes/editor/BrowserEditor.svelte b/ts/routes/editor/BrowserEditor.svelte deleted file mode 100644 index 84aef7f99..000000000 --- a/ts/routes/editor/BrowserEditor.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - diff --git a/ts/routes/editor/NoteCreator.svelte b/ts/routes/editor/NoteCreator.svelte deleted file mode 100644 index f4c205757..000000000 --- a/ts/routes/editor/NoteCreator.svelte +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - diff --git a/ts/routes/editor/NoteEditor.svelte b/ts/routes/editor/NoteEditor.svelte index 027ad2e35..68f91f49e 100644 --- a/ts/routes/editor/NoteEditor.svelte +++ b/ts/routes/editor/NoteEditor.svelte @@ -13,6 +13,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import FieldState from "./FieldState.svelte"; import LabelContainer from "./LabelContainer.svelte"; import LabelName from "./LabelName.svelte"; + import type { EditorMode } from "./types"; export interface NoteEditorAPI { fields: EditorFieldAPI[]; @@ -188,6 +189,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html fonts = fs; } + let stickies: boolean[] = []; + + function setSticky(stckies: boolean[]): void { + stickies = stckies; + } + export function focusField(index: number | null): void { tick().then(() => { if (typeof index === "number") { @@ -432,6 +439,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html } from "../image-occlusion/store"; import CollapseLabel from "./CollapseLabel.svelte"; import * as oldEditorAdapter from "./old-editor-adapter"; + import StickyBadge from "./StickyBadge.svelte"; + import ButtonGroupItem from "$lib/components/ButtonGroupItem.svelte"; + import PreviewButton from "./PreviewButton.svelte"; $: isIOImageLoaded = false; $: ioImageLoadedStore.set(isIOImageLoaded); @@ -667,6 +677,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html setIsImageOcclusion, setupMaskEditor, saveOcclusions, + setSticky, ...oldEditorAdapter, }); @@ -701,19 +712,32 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html setupLifecycleHooks(api); $: tagAmount = $tags.length; + + let noteEditor: HTMLDivElement; + + export let uiResolve: (api: NoteEditorAPI) => void; + export let mode: EditorMode; + + $: if (noteEditor) { + uiResolve(api as NoteEditorAPI); + console.log("svelte editor mode", mode); + } -
+
- + + {#if mode === "browse"} + + + + {/if} + {#if hint} @@ -795,13 +819,14 @@ the AddCards dialog) should be implemented in the user of this component. {#if cols[index] === "dupe"} {/if} - + {#if mode === "add"} + + {/if} {#if plainTextDefaults[index]} - - - diff --git a/ts/routes/editor/base.ts b/ts/routes/editor/base.ts index bfc4a9183..884b1c8a3 100644 --- a/ts/routes/editor/base.ts +++ b/ts/routes/editor/base.ts @@ -19,10 +19,7 @@ import LabelButton from "$lib/components/LabelButton.svelte"; import WithContext from "$lib/components/WithContext.svelte"; import WithState from "$lib/components/WithState.svelte"; -import BrowserEditor from "./BrowserEditor.svelte"; -import NoteCreator from "./NoteCreator.svelte"; -import * as editorContextKeys from "./NoteEditor.svelte"; -import ReviewerEditor from "./ReviewerEditor.svelte"; +import NoteEditor, * as editorContextKeys from "./NoteEditor.svelte"; declare global { interface Selection { @@ -56,33 +53,11 @@ export const components = { export { editorToolbar } from "./editor-toolbar"; -async function setupBrowserEditor(): Promise { - await setupI18n({ modules: editorModules }); - mount(BrowserEditor, { target: document.body, props: { uiResolve } }); -} - -async function setupNoteCreator(): Promise { - await setupI18n({ modules: editorModules }); - mount(NoteCreator, { target: document.body, props: { uiResolve } }); -} - -async function setupReviewerEditor(): Promise { - await setupI18n({ modules: editorModules }); - mount(ReviewerEditor, { target: document.body, props: { uiResolve } }); -} - export async function setupEditor(mode: EditorMode) { - switch (mode) { - case "add": - await setupNoteCreator(); - break; - case "browse": - await setupBrowserEditor(); - break; - case "review": - await setupReviewerEditor(); - break; - default: - alert("unexpected editor type"); + if (!["add", "browse", "review"].includes(mode)) { + alert("unexpected editor type"); + return; } + await setupI18n({ modules: editorModules }); + mount(NoteEditor, { target: document.body, props: { uiResolve, mode } }); }