import * as React from 'react';
import { ConnectionQualityIndicator } from './ConnectionQualityIndicator';
import { ParticipantName } from './ParticipantName';
import { TrackMutedIndicator } from './TrackMutedIndicator';
import { TrackRefContext, useEnsureTrackRef } from '../../context';
import type { ParticipantTileProps } from './ParticipantTile';
import { AudioTrack } from './AudioTrack';
import { useParticipantTile } from '../../hooks';
import { isTrackReference } from '@livekit/components-core';
import { BarVisualizer } from './BarVisualizer';
/**
* The `ParticipantAudioTile` component is the base utility wrapper for displaying a visual representation of a participant.
* This component can be used as a child of the `TileLoop` or independently if a participant is passed as a property.
*
* @example
* ```tsx
*
* ```
* @public
*/
export const ParticipantAudioTile: (
props: ParticipantTileProps & React.RefAttributes,
) => React.ReactNode = /* @__PURE__ */ React.forwardRef(
function ParticipantAudioTile(
{
children,
disableSpeakingIndicator,
onParticipantClick,
trackRef,
...htmlProps
}: ParticipantTileProps,
ref,
) {
const trackReference = useEnsureTrackRef(trackRef);
const { elementProps } = useParticipantTile({
trackRef: trackReference,
htmlProps,
disableSpeakingIndicator,
onParticipantClick,
});
return (
{children ?? (
<>
{isTrackReference(trackReference) && (
)}
>
)}
);
},
);