diff --git a/apps/client/src/print.tsx b/apps/client/src/print.tsx
index 0ff7522f9..f8c8de8e4 100644
--- a/apps/client/src/print.tsx
+++ b/apps/client/src/print.tsx
@@ -2,7 +2,13 @@ import FNote from "./entities/fnote";
import { render } from "preact";
import { CustomNoteList } from "./widgets/collections/NoteList";
import "./print.css";
-import { useCallback, useRef } from "preact/hooks";
+import { useCallback, useEffect, useRef } from "preact/hooks";
+import content_renderer from "./services/content_renderer";
+
+interface RendererProps {
+ note: FNote;
+ onReady: () => void;
+}
async function main() {
const notePath = window.location.hash.substring(1);
@@ -17,38 +23,51 @@ async function main() {
}
function App({ note }: { note: FNote }) {
- return (
- <>
-
- >
- );
-}
-
-function ContentRenderer({ note }: { note: FNote }) {
const sentReadyEvent = useRef(false);
const onReady = useCallback(() => {
if (sentReadyEvent.current) return;
window.dispatchEvent(new Event("note-ready"));
sentReadyEvent.current = true;
}, []);
+ const props: RendererProps = { note, onReady };
- // Collections.
- if (note.type === "book") {
- return ;
- }
+ return (
+ <>
+ {note.type === "book"
+ ?
+ :
+ }
+ >
+ );
+}
+
+function SingleNoteRenderer({ note, onReady }: RendererProps) {
+ const containerRef = useRef(null);
+
+ useEffect(() => {
+ content_renderer.getRenderedContent(note, {
+ noChildrenList: true
+ }).then(({$renderedContent}) => {
+ containerRef.current?.replaceChildren(...$renderedContent);
+ });
+ }, [ note ]);
- // Other note types.
return <>
{note.title}
+
>;
}
+function CollectionRenderer({ note, onReady }: RendererProps) {
+ return ;
+}
+
main();