diff --git a/src/components/video-editor/SettingsPanel.tsx b/src/components/video-editor/SettingsPanel.tsx index 36fa255..d37190a 100644 --- a/src/components/video-editor/SettingsPanel.tsx +++ b/src/components/video-editor/SettingsPanel.tsx @@ -898,6 +898,7 @@ export function SettingsPanel({ {WEBCAM_LAYOUT_PRESETS.filter((preset) => { if (preset.value === "picture-in-picture") return true; + if (preset.value === "no-webcam") return true; if (preset.value === "vertical-stack") return isPortraitCanvas; return !isPortraitCanvas; }).map((preset) => ( @@ -906,7 +907,9 @@ export function SettingsPanel({ ? t("layout.pictureInPicture") : preset.value === "vertical-stack" ? t("layout.verticalStack") - : t("layout.dualFrame")} + : preset.value === "no-webcam" + ? t("layout.noWebcam") + : t("layout.dualFrame")} ))} diff --git a/src/components/video-editor/projectPersistence.ts b/src/components/video-editor/projectPersistence.ts index 8d13428..aec570f 100644 --- a/src/components/video-editor/projectPersistence.ts +++ b/src/components/video-editor/projectPersistence.ts @@ -100,6 +100,7 @@ function computeNormalizedWebcamLayoutPreset( ): WebcamLayoutPreset { switch (webcamLayoutPreset) { case "picture-in-picture": + case "no-webcam": return webcamLayoutPreset; case "vertical-stack": return isPortraitAspectRatio(normalizedAspectRatio) diff --git a/src/i18n/locales/en/settings.json b/src/i18n/locales/en/settings.json index 104c1b1..6620b75 100644 --- a/src/i18n/locales/en/settings.json +++ b/src/i18n/locales/en/settings.json @@ -36,6 +36,7 @@ "pictureInPicture": "Picture in Picture", "verticalStack": "Vertical Stack", "dualFrame": "Dual Frame", + "noWebcam": "No Webcam", "webcamShape": "Camera Shape", "webcamSize": "Webcam Size" }, diff --git a/src/lib/compositeLayout.ts b/src/lib/compositeLayout.ts index e6db733..93161c0 100644 --- a/src/lib/compositeLayout.ts +++ b/src/lib/compositeLayout.ts @@ -15,7 +15,11 @@ export interface Size { height: number; } -export type WebcamLayoutPreset = "picture-in-picture" | "vertical-stack" | "dual-frame"; +export type WebcamLayoutPreset = + | "picture-in-picture" + | "vertical-stack" + | "dual-frame" + | "no-webcam"; /** Webcam size as a percentage of the canvas reference dimension (10–50). */ export type WebcamSizePreset = number; @@ -126,6 +130,21 @@ const WEBCAM_LAYOUT_PRESET_MAP: Record