anki/ts/editor/toolbar.ts

50 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-04-20 15:43:59 +02:00
// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
2021-05-06 23:33:28 +02:00
/* eslint
@typescript-eslint/no-non-null-assertion: "off",
@typescript-eslint/no-explicit-any: "off",
2021-05-06 23:33:28 +02:00
*/
2021-07-05 18:15:03 +02:00
import { nightModeKey } from "components/context-keys";
import { fieldFocusedKey, inCodableKey } from "./context-keys";
2021-05-06 23:04:38 +02:00
import { writable } from "svelte/store";
2021-04-27 23:08:47 +02:00
import EditorToolbar from "./EditorToolbar.svelte";
import "./bootstrap.css";
2021-07-05 18:15:03 +02:00
export const fieldFocused = writable(false);
export const inCodable = writable(false);
2021-05-06 23:04:38 +02:00
2021-04-27 23:08:47 +02:00
export function initToolbar(i18n: Promise<void>): Promise<EditorToolbar> {
let toolbarResolve: (value: EditorToolbar) => void;
const toolbarPromise = new Promise<EditorToolbar>((resolve) => {
toolbarResolve = resolve;
});
document.addEventListener("DOMContentLoaded", () =>
i18n.then(() => {
const target = document.body;
const anchor = document.getElementById("fields")!;
2021-05-06 23:04:38 +02:00
const context = new Map();
2021-07-05 18:15:03 +02:00
context.set(fieldFocusedKey, fieldFocused);
2021-06-18 00:27:07 +02:00
context.set(inCodableKey, inCodable);
2021-05-06 23:04:38 +02:00
context.set(
nightModeKey,
document.documentElement.classList.contains("night-mode")
2021-04-27 23:08:47 +02:00
);
2021-05-06 23:04:38 +02:00
toolbarResolve(new EditorToolbar({ target, anchor, context } as any));
})
);
return toolbarPromise;
}
2021-04-27 23:08:47 +02:00
2021-04-28 22:32:12 +02:00
export {
updateActiveButtons,
clearActiveButtons,
2021-05-06 23:04:38 +02:00
editorToolbar,
2021-04-28 22:32:12 +02:00
} from "./EditorToolbar.svelte";