Skip to content

Commit 6db3899

Browse files
committed
refactor(Preview): expose iframe ref for parent component access
1 parent 66f1963 commit 6db3899

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/components/Preview/Preview.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { useState, useRef, useEffect } from "react";
2+
import type { MutableRefObject } from "react";
23

34
interface PreviewProps {
45
srcDoc: string;
56
onRefresh?: () => void;
67
onToggleVisibility?: () => void;
8+
iframeRef?: MutableRefObject<HTMLIFrameElement | null>;
79
}
810

911
type DeviceMode = "desktop" | "tablet" | "mobile";
@@ -14,7 +16,7 @@ const DEVICE_SIZES: Record<DeviceMode, { width: string; label: string }> = {
1416
mobile: { width: "375px", label: "Mobile" },
1517
};
1618

17-
function Preview({ srcDoc, onRefresh, onToggleVisibility }: PreviewProps) {
19+
function Preview({ srcDoc, onRefresh, onToggleVisibility, iframeRef }: PreviewProps) {
1820
const [deviceMode, setDeviceMode] = useState<DeviceMode>("desktop");
1921
const popoutWindowRef = useRef<Window | null>(null);
2022

@@ -157,6 +159,7 @@ function Preview({ srcDoc, onRefresh, onToggleVisibility }: PreviewProps) {
157159
{/* Iframe */}
158160
<div className={`bg-white ${deviceMode === "mobile" ? "h-[calc(100%-24px)]" : "h-full"}`}>
159161
<iframe
162+
ref={iframeRef}
160163
title="Preview"
161164
srcDoc={srcDoc}
162165
sandbox="allow-scripts"

0 commit comments

Comments
 (0)