1234: const close = ()=> w.__modalHide(root); 1291: const mo = new MutationObserver(()=>{ 1775: const payload = mediaItems.map(m => ({ 1793: const j = await r.json().catch(()=>null); 2120: const $ = (id)=>root.querySelector("#"+id); 2230:{ const __btnRecord = document.getElementById("btnRecord"); if (__btnRecord && qaRecord) __btnRecord.onclick = ()=>qaRecord.click(); } 2231:{ const __btnStream = document.getElementById("btnStream"); if (__btnStream) __btnStream.onclick = ()=>{ openStreamModal(); }; } 2314: const j = await r.json().catch(()=>null); 2323: const j = await r.json().catch(()=>null); 2659: const cand = remotes.find(p => (p.videoTrackPublications && p.videoTrackPublications.size > 0)); 2739: const run = (async()=>{ 2860: const empty = slots.find(s => !s.connected); 3148: const item = mediaItems.find(m => m.id === src?.id); 3151: const slot = src?.uid ? slots.find(s => safeUid(s.uid) === safeUid(src.uid)) : null; 3173: const slot = slots.find(s => safeUid(s.uid) === safeUid(previewSource.uid)); 3198: const item = mediaItems.find(m => m.id === previewSource.id); 3347: const j = await r.json().catch(()=>null); 3350: const idx = mediaItems.findIndex(m => m.id === tempId); 3372: const idx = mediaItems.findIndex(m => m.id === tempId); 3395: const idx = mediaItems.findIndex(m => m.id === id); 3408: const j = await r.json().catch(()=>null); 3437: const ids = mediaItems.map(m => m.id); 3531: const openNow = (ev)=>{ 3591: const cur = previewSource?.type==="media" ? mediaItems.find(m=>m.id===previewSource.id) : null; 3715: const slot = slots.find(s => safeUid(s.uid) === safeUid(src.uid)); 3759: const existingPub = pubs.find(p => p?.trackName === "studio_return_audio") || null; 3791: const currentPub = Array.from(room.localParticipant?.videoTrackPublications?.values?.() || []).find(p => p?.trackName === "studio_return_video") || null; 4438: const clearT = ()=>{ if (t){ clearTimeout(t); t = null; } }; 4629: const fmt = ()=> out.value = rng.value + (suffix || ""); 4728: const vals = Object.values(map||{}).map(v => String(v?.state||"IDLE").toUpperCase()); 4736: const channels = Array.isArray(streamChannels) ? streamChannels.map(ch => ({ 4816: const t = setTimeout(()=>ac.abort(), Math.max(1000, Number(streamCfg.timeoutMs)||12000)); 4960: const txt = streamLog.map(e=>`[${e.t}] ${e.lvl} ${e.msg}`).join("\n"); 4975: const lines = streamLog.map(e=>`[${e.t}] ${e.lvl} ${e.msg}`); 5045: const mk = (tag, cls, html) => { 5154: const enabled = streamChannels.filter(c=>c.enabled); 5190: const ids = streamChannels.map(c=>({id:c.id})); 5275: const fmt = ()=> out.value = rng.value + (suffix || ""); 5401: const keys = Object.keys(v).filter(k=>/^src\d+$/.test(k)).sort((a,b)=>parseInt(a.slice(3),10)-parseInt(b.slice(3),10)); 5570: const done = ()=>{ 5800: const slot = slots.find(s => safeUid(s.uid) === safeUid(src.uid)); 5815: const item = mediaItems.find(m => m.id === src.id); 6004: const first = slots.find(s=>s.connected); 6011: const takeAuto = ()=> autoPool.find(s=>!!s) || null; 6013: const tokenToSource = (tok, winIdx)=>{ 6030: const mkWin = (x,y,w,h, srcTok)=>{ 6124: const applyCommon = (el, s, defaultPos)=>{ 6422: const item = mediaItems.find(m=>m.id===previewSource.id); 6427: const slot = previewSource.uid ? slots.find(s=>safeUid(s.uid)===safeUid(previewSource.uid)) : null;