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:
Damien Elmes 2023-07-03 16:55:38 +10:00
parent ec9cf4a821
commit a06e2335c4
7 changed files with 81 additions and 98 deletions

View file

@ -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(

View file

@ -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] = []

View file

@ -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
View 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);

View file

@ -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);

View file

@ -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);

View file

@ -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);