mirror of
https://github.com/ankitects/anki.git
synced 2025-11-06 12:47:11 -05:00
Added: type for iframe request
This commit is contained in:
parent
91a968596c
commit
2ff75434f7
3 changed files with 18 additions and 2 deletions
|
|
@ -3,13 +3,14 @@
|
|||
import "../base.scss";
|
||||
import "../../reviewer/reviewer.scss";
|
||||
import { enableNightMode } from "../reviewer/reviewer";
|
||||
import type { InnerReviewerRequest } from "./reviewerRequest";
|
||||
|
||||
const urlParams = new URLSearchParams(location.search);
|
||||
|
||||
const style = document.createElement("style");
|
||||
document.head.appendChild(style);
|
||||
|
||||
addEventListener("message", (e) => {
|
||||
addEventListener("message", (e: MessageEvent<InnerReviewerRequest>) => {
|
||||
switch (e.data.type) {
|
||||
case "html": {
|
||||
document.body.innerHTML = e.data.value;
|
||||
|
|
|
|||
10
ts/routes/reviewer-inner/reviewerRequest.ts
Normal file
10
ts/routes/reviewer-inner/reviewerRequest.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// Copyright: Ankitects Pty Ltd and contributors
|
||||
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||
interface HtmlMessage {
|
||||
type: "html";
|
||||
value: string;
|
||||
css?: string;
|
||||
bodyclass?: string;
|
||||
}
|
||||
|
||||
export type InnerReviewerRequest = HtmlMessage;
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
import { CardAnswer, type NextCardDataResponse_NextCardData } from "@generated/anki/scheduler_pb";
|
||||
import { nextCardData } from "@generated/backend";
|
||||
import { derived, get, writable } from "svelte/store";
|
||||
import type { InnerReviewerRequest } from "../reviewer-inner/reviewerRequest";
|
||||
|
||||
export function isNightMode() {
|
||||
// https://stackoverflow.com/a/57795518
|
||||
|
|
@ -76,8 +77,12 @@ export class ReviewerState {
|
|||
document.addEventListener("keydown", this.onKeyDown.bind(this));
|
||||
}
|
||||
|
||||
sendInnerRequest(message: InnerReviewerRequest) {
|
||||
this.iframe?.contentWindow?.postMessage(message, "*");
|
||||
}
|
||||
|
||||
updateHtml(htmlString: string, css?: string, bodyclass?: string) {
|
||||
this.iframe?.contentWindow?.postMessage({ type: "html", value: htmlString, css, bodyclass }, "*");
|
||||
this.sendInnerRequest({ type: "html", value: htmlString, css, bodyclass });
|
||||
}
|
||||
|
||||
async showQuestion(answer: CardAnswer | null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue