import * as React from 'react'; import { useEnsureRoom } from '../../context'; import { useStartAudio } from '../../hooks'; import { Room } from 'livekit-client'; /** @public */ export interface AllowAudioPlaybackProps extends React.ButtonHTMLAttributes { room?: Room; label: string; } /** * The `StartAudio` component is only visible when the browser blocks audio playback. This is due to some browser implemented autoplay policies. * To start audio playback, the user must perform a user-initiated event such as clicking this button. * As soon as audio playback starts, the button hides itself again. * * @example * ```tsx * * * * ``` * * @see Autoplay policy on MDN web docs: {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Best_practices#autoplay_policy} * @public */ export const StartAudio: ( props: AllowAudioPlaybackProps & React.RefAttributes, ) => React.ReactNode = /* @__PURE__ */ React.forwardRef( function StartAudio({ label = 'Allow Audio', ...props }: AllowAudioPlaybackProps, ref) { const room = useEnsureRoom(props.room); const { mergedProps } = useStartAudio({ room, props }); return ( ); }, );