import type { ScreenShareCaptureOptions } from 'livekit-client'

/**
 * Опции захвата демонстрации экрана: `audio: true` — звук
 * вкладки/экрана там, где браузер его отдаёт (Chrome/Edge — вкладка почти
 * всегда, целый экран — только Windows); `selfBrowserSurface: 'exclude'`
 * — не предлагать в списке
 * источников собственную вкладку (зеркальный туннель самой конференции);
 * `surfaceSwitching: 'include'` — разрешить переключать источник прямо во
 * время демонстрации, не останавливая её; `systemAudio: 'include'` — не
 * запрещать захват системного звука при выборе «весь экран».
 *
 * Вынесено в модульную константу — `useTrackToggle` держит
 * `JSON.stringify(captureOptions)` в зависимостях внутреннего `useMemo`,
 * инлайновый литерал был бы безвреден, но константа явнее фиксирует
 * неизменность опций.
 *
 * Живёт в `lib/`, а не рядом с тулбаром, потому что кнопок демонстрации теперь
 * ДВЕ: в основном тулбаре (`RoomToolbar`) и в мини-окне (`RoomStage`,
 * `PipScreenShareToggle`). Опции у них обязаны совпадать: обе кнопки управляют
 * одной и той же публикацией, и разойдись они хотя бы в `audio`, демонстрация
 * получалась бы разной в зависимости от того, откуда её запустили.
 */
export const SCREEN_SHARE_CAPTURE_OPTIONS: ScreenShareCaptureOptions = {
  audio: true,
  selfBrowserSurface: 'exclude',
  surfaceSwitching: 'include',
  systemAudio: 'include',
}
