// modal-new-recorder.jsx — New Recorder dialog (SRT / RTMP / SDI)
const { SDI_PORTS_zampp2, PROJECTS: ALL_PROJECTS } = window.ZAMPP_DATA;
function NewRecorderModal({ open, onClose }) {
const [name, setName] = React.useState("");
const [sourceType, setSourceType] = React.useState("SRT");
const [sdiPort, setSdiPort] = React.useState(1);
const [recTab, setRecTab] = React.useState("video");
const [proxyTab, setProxyTab] = React.useState("video");
const [proxyOn, setProxyOn] = React.useState(true);
if (!open) return null;
return (
e.stopPropagation()}>
New recorder
Configure source, codec, and destination
setName(e.target.value)} />
{[
{ id: "SRT", label: "SRT", desc: "Secure Reliable Transport — pull caller" },
{ id: "RTMP", label: "RTMP", desc: "Real-Time Messaging Protocol" },
{ id: "SDI", label: "SDI", desc: "Blackmagic DeckLink hardware" },
].map(t => (
))}
{sourceType === "SRT" && (
)}
{sourceType === "RTMP" && (
)}
{sourceType === "SDI" && (
<>
zampp2 · DeckLink Duo 2 · 4 ports
>
)}
Master recording
{["video", "audio", "container"].map(t => (
))}
{recTab === "video" && (
)}
{recTab === "audio" && (
)}
{recTab === "container" && (
)}
{proxyOn && (
Proxy
{["video", "audio", "container"].map(t => (
))}
{proxyTab === "video" && (
)}
{proxyTab === "audio" && (
)}
{proxyTab === "container" && (
)}
)}
);
}
function SDIPortMini({ ports, selected, onSelect }) {
return (
{ports.map(p => (
))}
);
}
window.NewRecorderModal = NewRecorderModal;