Change PDF rendering
This commit is contained in:
37
src-tauri/assets/viewer/message-bridge.js
Normal file
37
src-tauri/assets/viewer/message-bridge.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* MessageBridge — postMessage protocol between the PDF viewer iframe
|
||||
* and the parent Leptos application.
|
||||
*
|
||||
* Inbound (parent → iframe): "pdf.page.next" | "pdf.page.prev"
|
||||
* Outbound (iframe → parent): { type: "brittle:keydown", key, ctrlKey, ... }
|
||||
*/
|
||||
export class MessageBridge {
|
||||
/**
|
||||
* @param {Function} onPageNext - () => void
|
||||
* @param {Function} onPagePrev - () => void
|
||||
*/
|
||||
constructor(onPageNext, onPagePrev) {
|
||||
this._handler = ev => {
|
||||
if (ev.data === "pdf.page.next") onPageNext();
|
||||
if (ev.data === "pdf.page.prev") onPagePrev();
|
||||
};
|
||||
window.addEventListener("message", this._handler);
|
||||
}
|
||||
|
||||
/** Forward a keydown event to the parent window for global keybindings. */
|
||||
forwardKeydown(ev) {
|
||||
if (window.parent === window) return;
|
||||
window.parent.postMessage({
|
||||
type: "brittle:keydown",
|
||||
key: ev.key,
|
||||
ctrlKey: ev.ctrlKey,
|
||||
shiftKey: ev.shiftKey,
|
||||
altKey: ev.altKey,
|
||||
metaKey: ev.metaKey,
|
||||
}, "*");
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
window.removeEventListener("message", this._handler);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user