diff --git a/ts/editor/ImageHandle.svelte b/ts/editor/ImageHandle.svelte
index 1fdee5374..f766c9315 100644
--- a/ts/editor/ImageHandle.svelte
+++ b/ts/editor/ImageHandle.svelte
@@ -17,9 +17,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import { onDestroy } from "svelte";
+ export let activeImage: HTMLImageElement | null = null;
export let container: HTMLElement;
export let sheet: CSSStyleSheet;
- export let activeImage: HTMLImageElement | null = null;
export let isRtl: boolean = false;
$: naturalWidth = activeImage?.naturalWidth;
diff --git a/ts/editor/MathjaxHandle.svelte b/ts/editor/MathjaxHandle.svelte
index ed5c35df0..e799c64ae 100644
--- a/ts/editor/MathjaxHandle.svelte
+++ b/ts/editor/MathjaxHandle.svelte
@@ -3,5 +3,15 @@ Copyright: Ankitects Pty Ltd and contributors
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-->
+
+
+ {#if activeImage}
+
+ {/if}
+
diff --git a/ts/editor/editing-area.ts b/ts/editor/editing-area.ts
index e0e1e8143..01a167d14 100644
--- a/ts/editor/editing-area.ts
+++ b/ts/editor/editing-area.ts
@@ -7,6 +7,7 @@
*/
import ImageHandle from "./ImageHandle.svelte";
+import MathjaxHandle from "./MathjaxHandle.svelte";
import type { EditableContainer } from "editable/editable-container";
import type { Editable } from "editable/editable";
@@ -25,6 +26,7 @@ function onCutOrCopy(): void {
export class EditingArea extends HTMLDivElement {
imageHandle: Promise;
+ mathjaxHandle: MathjaxHandle;
editableContainer: EditableContainer;
editable: Editable;
codable: Codable;
@@ -42,6 +44,9 @@ export class EditingArea extends HTMLDivElement {
imageStyle.id = "imageHandleStyle";
this.editable = document.createElement("anki-editable") as Editable;
+ this.editableContainer.shadowRoot!.appendChild(imageStyle);
+ this.editableContainer.shadowRoot!.appendChild(this.editable);
+ this.appendChild(this.editableContainer);
const context = new Map();
context.set(
@@ -68,9 +73,14 @@ export class EditingArea extends HTMLDivElement {
)
);
- this.editableContainer.shadowRoot!.appendChild(imageStyle);
- this.editableContainer.shadowRoot!.appendChild(this.editable);
- this.appendChild(this.editableContainer);
+ this.mathjaxHandle = new MathjaxHandle({
+ target: this,
+ anchor: this.editableContainer,
+ props: {
+ container: this.editable,
+ },
+ context,
+ } as any);
this.codable = document.createElement("textarea", {
is: "anki-codable",
@@ -197,7 +207,7 @@ export class EditingArea extends HTMLDivElement {
}
onBlur(event: FocusEvent): void {
- this.resetImageHandle();
+ this.resetHandles();
onBlur(event);
}
@@ -206,33 +216,44 @@ export class EditingArea extends HTMLDivElement {
}
onKey(event: KeyboardEvent): void {
- this.resetImageHandle();
+ this.resetHandles();
onKey(event);
}
onPaste(event: ClipboardEvent): void {
- this.resetImageHandle();
+ this.resetHandles();
this.activeInput.onPaste(event);
}
- resetImageHandle(): void {
+ resetHandles(): void {
this.imageHandle.then((imageHandle) =>
(imageHandle as any).$set({
activeImage: null,
})
);
+
+ (this.mathjaxHandle as any).$set({
+ activeImage: null,
+ });
}
showHandles(event: MouseEvent): void {
- if (event.target instanceof HTMLImageElement && !event.target.dataset.anki) {
- this.imageHandle.then((imageHandle) =>
- (imageHandle as any).$set({
+ if (event.target instanceof HTMLImageElement) {
+ if (!event.target.dataset.anki) {
+ this.imageHandle.then((imageHandle) =>
+ (imageHandle as any).$set({
+ activeImage: event.target,
+ isRtl: this.isRightToLeft(),
+ })
+ );
+ } else if (event.target.dataset.anki === "mathjax") {
+ (this.mathjaxHandle as any).$set({
activeImage: event.target,
isRtl: this.isRightToLeft(),
- })
- );
+ });
+ }
} else {
- this.resetImageHandle();
+ this.resetHandles();
}
}
@@ -243,7 +264,7 @@ export class EditingArea extends HTMLDivElement {
this.fieldHTML = this.codable.teardown();
this.editable.hidden = false;
} else {
- this.resetImageHandle();
+ this.resetHandles();
this.editable.hidden = true;
this.codable.setup(this.editable.fieldHTML);
}