Remove html writable

This commit is contained in:
Luc Mcgrady 2025-09-28 00:43:02 +01:00
parent f68f5284a5
commit ccdc391097
No known key found for this signature in database
GPG key ID: 4F3D7A0B17CC3D9C
5 changed files with 29 additions and 49 deletions

View file

@ -1270,7 +1270,7 @@ class SvelteReviewer(Reviewer):
else: else:
maxTime = 0 maxTime = 0
self._remaining() self._remaining()
self.bottom.web.eval("showQuestion(\"\",%d);" % (maxTime)) self.bottom.web.eval('showQuestion("",%d);' % (maxTime))
def _linkHandler(self, url: str) -> None: def _linkHandler(self, url: str) -> None:
if url == "bottomReady": if url == "bottomReady":

View file

@ -1,10 +1,10 @@
<script> <script>
import ReviewerBottomOuter from "./reviewer-bottom/ReviewerBottomOuter.svelte"; import ReviewerBottomOuter from "./reviewer-bottom/ReviewerBottomOuter.svelte";
import ReviewerOuter from "./reviewerOuter.svelte"; import Reviewer from "./reviewer.svelte";
</script> </script>
<div> <div>
<ReviewerOuter></ReviewerOuter> <Reviewer></Reviewer>
<ReviewerBottomOuter></ReviewerBottomOuter> <ReviewerBottomOuter></ReviewerBottomOuter>
</div> </div>

View file

@ -1,27 +1,9 @@
<script lang="ts"> <script lang="ts">
import { bridgeCommand } from "@tslib/bridgecommand"; import { setupReviewer } from "./reviewer";
import type { Writable } from "svelte/store";
import { isNightMode } from "../../html-filter/helpers";
export let html: Writable<string>;
export let cardClass: Writable<string>;
let iframe: HTMLIFrameElement; let iframe: HTMLIFrameElement;
html.subscribe(($html) => { $: ({ cardClass } = setupReviewer(iframe));
if (iframe?.contentDocument) {
iframe.contentDocument.body.innerHTML = $html;
iframe.contentDocument.head.innerHTML = document.head.innerHTML;
iframe.contentDocument.body.className = isNightMode()
? "nightMode card"
: "card";
iframe.contentDocument.querySelector("html")!.className = isNightMode()
? "night-mode"
: "";
//@ts-ignore
iframe.contentDocument.pycmd = bridgeCommand;
}
});
</script> </script>
<div id="qa" class={$cardClass}> <div id="qa" class={$cardClass}>

View file

@ -1,18 +1,37 @@
import { writable } from "svelte/store"; import { writable } from "svelte/store";
import { isNightMode } from "../../html-filter/helpers";
import { preloadAnswerImages } from "../../reviewer/images"; import { preloadAnswerImages } from "../../reviewer/images";
export function setupReviewer() { export function setupReviewer(iframe: HTMLIFrameElement) {
const html = writable("");
const cardClass = writable(""); const cardClass = writable("");
function updateHtml(htmlString) {
if (iframe?.contentDocument) {
const nightMode = isNightMode();
iframe.contentDocument.body.innerHTML = htmlString;
iframe.contentDocument.head.innerHTML = document.head.innerHTML;
iframe.contentDocument.body.className = nightMode
? "nightMode card"
: "card";
const root = iframe.contentDocument.querySelector("html")!;
root.className = nightMode
? "night-mode"
: "";
root.setAttribute("data-bs-theme", nightMode ? "dark" : "light");
// @ts-ignore
iframe.contentDocument.pycmd = bridgeCommand;
}
}
function showQuestion(q, a, cc) { function showQuestion(q, a, cc) {
html.set(q); updateHtml(q);
// html.set(q);
cardClass.set(cc); cardClass.set(cc);
preloadAnswerImages(a); preloadAnswerImages(a);
} }
globalThis._showAnswer = html.set; globalThis._showAnswer = updateHtml;
globalThis._showQuestion = showQuestion; globalThis._showQuestion = showQuestion;
return { html, cardClass }; return { cardClass };
} }

View file

@ -1,21 +0,0 @@
<!--
Copyright: Ankitects Pty Ltd and contributors
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-->
<script lang="ts">
import { onMount } from "svelte";
import { setupReviewer } from "./reviewer";
import Reviewer from "./reviewer.svelte";
import "../../reviewer/reviewer.scss";
let reviewerInfo: null | ReturnType<typeof setupReviewer> = null;
onMount(() => {
reviewerInfo = setupReviewer();
});
</script>
{#if reviewerInfo}
<Reviewer {...reviewerInfo}></Reviewer>
{/if}