import type { Participant } from 'livekit-client'; import * as React from 'react'; import { ParticipantContext } from '../context'; import { cloneSingleChild } from '../utils'; /** @public */ export interface ParticipantLoopProps { /** The participants to loop over. Use `useParticipants()` hook to get participants. */ participants: Participant[]; /** The template component to be used in the loop. */ children: React.ReactNode; } /** * The `ParticipantLoop` component loops over an array of participants to create a context for every participant. * This component takes exactly one child component as a template. * By providing your own template as a child you have full control over the look and feel of your participant representations. * * @remarks * If you want to loop over individual tracks instead of participants, you can use the `TrackLoop` component. * * @example * ```tsx * const participants = useParticipants(); * * * * ``` * @public */ export function ParticipantLoop({ participants, ...props }: ParticipantLoopProps) { return ( <> {participants.map((participant) => ( {cloneSingleChild(props.children)} ))} ); }