mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Merge the separate editor index files
They're almost the same, and the extra work competes for CPU cores with the other build steps.
This commit is contained in:
parent
ec9cf4a821
commit
a06e2335c4
7 changed files with 81 additions and 98 deletions
|
@ -355,23 +355,16 @@ fn build_and_check_editor(build: &mut Build) -> Result<()> {
|
||||||
glob!("ts/{editable,editor}/**")
|
glob!("ts/{editable,editor}/**")
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut build_editor_page = |name: &str, entrypoint: &str| -> Result<()> {
|
build.add_action(
|
||||||
let stem = format!("ts/editor/{name}");
|
"ts:editor",
|
||||||
build.add_action(
|
EsbuildScript {
|
||||||
"ts:editor",
|
script: "ts/bundle_svelte.mjs".into(),
|
||||||
EsbuildScript {
|
entrypoint: "ts/editor/index.ts".into(),
|
||||||
script: inputs!["ts/bundle_svelte.mjs"],
|
output_stem: "ts/editor/editor",
|
||||||
entrypoint: inputs![format!("ts/editor/{entrypoint}.ts")],
|
deps: editor_deps.clone(),
|
||||||
output_stem: &stem,
|
extra_exts: &["css"],
|
||||||
deps: editor_deps.clone(),
|
},
|
||||||
extra_exts: &["css"],
|
)?;
|
||||||
},
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
build_editor_page("browser_editor", "index_browser")?;
|
|
||||||
build_editor_page("reviewer_editor", "index_reviewer")?;
|
|
||||||
build_editor_page("note_creator", "index_creator")?;
|
|
||||||
|
|
||||||
let group = "ts/editor";
|
let group = "ts/editor";
|
||||||
build.add_action(
|
build.add_action(
|
||||||
|
|
|
@ -147,23 +147,24 @@ class Editor:
|
||||||
|
|
||||||
def setupWeb(self) -> None:
|
def setupWeb(self) -> None:
|
||||||
if self.editorMode == EditorMode.ADD_CARDS:
|
if self.editorMode == EditorMode.ADD_CARDS:
|
||||||
file = "note_creator"
|
mode = "add"
|
||||||
elif self.editorMode == EditorMode.BROWSER:
|
elif self.editorMode == EditorMode.BROWSER:
|
||||||
file = "browser_editor"
|
mode = "browse"
|
||||||
else:
|
else:
|
||||||
file = "reviewer_editor"
|
mode = "review"
|
||||||
|
|
||||||
# then load page
|
# then load page
|
||||||
self.web.stdHtml(
|
self.web.stdHtml(
|
||||||
"",
|
"",
|
||||||
css=[f"css/{file}.css"],
|
css=["css/editor.css"],
|
||||||
js=[
|
js=[
|
||||||
"js/mathjax.js",
|
"js/mathjax.js",
|
||||||
f"js/{file}.js",
|
"js/editor.js",
|
||||||
],
|
],
|
||||||
context=self,
|
context=self,
|
||||||
default_css=False,
|
default_css=False,
|
||||||
)
|
)
|
||||||
|
self.web.eval(f"setupEditor('{mode}')")
|
||||||
self.web.show()
|
self.web.show()
|
||||||
|
|
||||||
lefttopbtns: list[str] = []
|
lefttopbtns: list[str] = []
|
||||||
|
|
|
@ -4,11 +4,25 @@
|
||||||
/**
|
/**
|
||||||
* Code that is shared among all entry points in /ts/editor
|
* Code that is shared among all entry points in /ts/editor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import "./legacy.scss";
|
import "./legacy.scss";
|
||||||
import "./editor-base.scss";
|
import "./editor-base.scss";
|
||||||
import "@tslib/runtime-require";
|
import "@tslib/runtime-require";
|
||||||
import "../sveltelib/export-runtime";
|
import "../sveltelib/export-runtime";
|
||||||
|
|
||||||
|
import { setupI18n } from "@tslib/i18n";
|
||||||
|
import { uiResolve } from "@tslib/ui";
|
||||||
|
|
||||||
|
import * as contextKeys from "../components/context-keys";
|
||||||
|
import IconButton from "../components/IconButton.svelte";
|
||||||
|
import LabelButton from "../components/LabelButton.svelte";
|
||||||
|
import WithContext from "../components/WithContext.svelte";
|
||||||
|
import WithState from "../components/WithState.svelte";
|
||||||
|
import BrowserEditor from "./BrowserEditor.svelte";
|
||||||
|
import NoteCreator from "./NoteCreator.svelte";
|
||||||
|
import * as editorContextKeys from "./NoteEditor.svelte";
|
||||||
|
import ReviewerEditor from "./ReviewerEditor.svelte";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Selection {
|
interface Selection {
|
||||||
addRange(r: Range): void;
|
addRange(r: Range): void;
|
||||||
|
@ -26,13 +40,6 @@ export const editorModules = [
|
||||||
ModuleName.BROWSING,
|
ModuleName.BROWSING,
|
||||||
];
|
];
|
||||||
|
|
||||||
import * as contextKeys from "../components/context-keys";
|
|
||||||
import IconButton from "../components/IconButton.svelte";
|
|
||||||
import LabelButton from "../components/LabelButton.svelte";
|
|
||||||
import WithContext from "../components/WithContext.svelte";
|
|
||||||
import WithState from "../components/WithState.svelte";
|
|
||||||
import * as editorContextKeys from "./NoteEditor.svelte";
|
|
||||||
|
|
||||||
export const components = {
|
export const components = {
|
||||||
IconButton,
|
IconButton,
|
||||||
LabelButton,
|
LabelButton,
|
||||||
|
@ -42,3 +49,46 @@ export const components = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export { editorToolbar } from "./editor-toolbar";
|
export { editorToolbar } from "./editor-toolbar";
|
||||||
|
|
||||||
|
async function setupBrowserEditor(): Promise<void> {
|
||||||
|
await setupI18n({ modules: editorModules });
|
||||||
|
|
||||||
|
new BrowserEditor({
|
||||||
|
target: document.body,
|
||||||
|
props: { uiResolve },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setupNoteCreator(): Promise<void> {
|
||||||
|
await setupI18n({ modules: editorModules });
|
||||||
|
|
||||||
|
new NoteCreator({
|
||||||
|
target: document.body,
|
||||||
|
props: { uiResolve },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setupReviewerEditor(): Promise<void> {
|
||||||
|
await setupI18n({ modules: editorModules });
|
||||||
|
|
||||||
|
new ReviewerEditor({
|
||||||
|
target: document.body,
|
||||||
|
props: { uiResolve },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setupEditor(mode: "add" | "browse" | "review") {
|
||||||
|
switch (mode) {
|
||||||
|
case "add":
|
||||||
|
setupNoteCreator();
|
||||||
|
break;
|
||||||
|
case "browse":
|
||||||
|
setupBrowserEditor();
|
||||||
|
break;
|
||||||
|
case "review":
|
||||||
|
setupReviewerEditor();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
alert("unexpected editor type");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
8
ts/editor/index.ts
Normal file
8
ts/editor/index.ts
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
// Copyright: Ankitects Pty Ltd and contributors
|
||||||
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
|
import { globalExport } from "@tslib/globals";
|
||||||
|
|
||||||
|
import * as base from "./base";
|
||||||
|
|
||||||
|
globalExport(base);
|
|
@ -1,23 +0,0 @@
|
||||||
// Copyright: Ankitects Pty Ltd and contributors
|
|
||||||
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
||||||
import { globalExport } from "@tslib/globals";
|
|
||||||
import { setupI18n } from "@tslib/i18n";
|
|
||||||
import { uiResolve } from "@tslib/ui";
|
|
||||||
|
|
||||||
import { editorModules } from "./base";
|
|
||||||
import BrowserEditor from "./BrowserEditor.svelte";
|
|
||||||
|
|
||||||
async function setupBrowserEditor(): Promise<void> {
|
|
||||||
await setupI18n({ modules: editorModules });
|
|
||||||
|
|
||||||
new BrowserEditor({
|
|
||||||
target: document.body,
|
|
||||||
props: { uiResolve },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setupBrowserEditor();
|
|
||||||
|
|
||||||
import * as base from "./base";
|
|
||||||
|
|
||||||
globalExport(base);
|
|
|
@ -1,23 +0,0 @@
|
||||||
// Copyright: Ankitects Pty Ltd and contributors
|
|
||||||
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
||||||
import { globalExport } from "@tslib/globals";
|
|
||||||
import { setupI18n } from "@tslib/i18n";
|
|
||||||
import { uiResolve } from "@tslib/ui";
|
|
||||||
|
|
||||||
import { editorModules } from "./base";
|
|
||||||
import NoteCreator from "./NoteCreator.svelte";
|
|
||||||
|
|
||||||
async function setupNoteCreator(): Promise<void> {
|
|
||||||
await setupI18n({ modules: editorModules });
|
|
||||||
|
|
||||||
new NoteCreator({
|
|
||||||
target: document.body,
|
|
||||||
props: { uiResolve },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setupNoteCreator();
|
|
||||||
|
|
||||||
import * as base from "./base";
|
|
||||||
|
|
||||||
globalExport(base);
|
|
|
@ -1,23 +0,0 @@
|
||||||
// Copyright: Ankitects Pty Ltd and contributors
|
|
||||||
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
||||||
import { globalExport } from "@tslib/globals";
|
|
||||||
import { setupI18n } from "@tslib/i18n";
|
|
||||||
import { uiResolve } from "@tslib/ui";
|
|
||||||
|
|
||||||
import { editorModules } from "./base";
|
|
||||||
import ReviewerEditor from "./ReviewerEditor.svelte";
|
|
||||||
|
|
||||||
async function setupReviewerEditor(): Promise<void> {
|
|
||||||
await setupI18n({ modules: editorModules });
|
|
||||||
|
|
||||||
new ReviewerEditor({
|
|
||||||
target: document.body,
|
|
||||||
props: { uiResolve },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setupReviewerEditor();
|
|
||||||
|
|
||||||
import * as base from "./base";
|
|
||||||
|
|
||||||
globalExport(base);
|
|
Loading…
Reference in a new issue