refac
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
'strict-origin-when-cross-origin';
|
||||
export let allowFullscreen = true;
|
||||
|
||||
export let payload = null; // payload to send into the iframe on request
|
||||
|
||||
let iframe: HTMLIFrameElement | null = null;
|
||||
let iframeSrc: string | null = null;
|
||||
let iframeDoc: string | null = null;
|
||||
@@ -142,13 +144,29 @@ window.Chart = parent.Chart; // Chart previously assigned on parent
|
||||
}
|
||||
}
|
||||
|
||||
// Handle height messages from the iframe (we also verify the sender)
|
||||
function onMessage(e: MessageEvent) {
|
||||
if (!iframe || e.source !== iframe.contentWindow) return;
|
||||
const data = e.data as { type?: string; height?: number };
|
||||
|
||||
const data = e.data || {};
|
||||
if (data?.type === 'iframe:height' && typeof data.height === 'number') {
|
||||
iframe.style.height = Math.max(0, data.height) + 'px';
|
||||
}
|
||||
|
||||
// Pong message for testing connectivity
|
||||
if (data?.type === 'pong') {
|
||||
console.log('Received pong from iframe:', data);
|
||||
|
||||
// Optional: reply back
|
||||
iframe.contentWindow?.postMessage({ type: 'pong:ack' }, '*');
|
||||
}
|
||||
|
||||
// Send payload data if requested
|
||||
if (data?.type === 'payload') {
|
||||
iframe.contentWindow?.postMessage(
|
||||
{ type: 'payload', requestId: data?.requestId ?? null, payload: payload },
|
||||
'*'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// When the iframe loads, try same-origin resize (cross-origin will noop)
|
||||
|
||||
Reference in New Issue
Block a user