import * as React from 'react'; import { LayoutContext, useMaybeTrackRefContext } from '../../context'; import { FocusToggleIcon, UnfocusToggleIcon } from '../../assets/icons'; import { useFocusToggle } from '../../hooks'; import type { TrackReferenceOrPlaceholder } from '@livekit/components-core'; /** @public */ export interface FocusToggleProps extends React.ButtonHTMLAttributes { trackRef?: TrackReferenceOrPlaceholder; } /** * The `FocusToggle` puts the `ParticipantTile` in focus or removes it from focus. * @remarks * This component needs to live inside `LayoutContext` to work properly. * * @example * ```tsx * * * * ``` * @public */ export const FocusToggle: ( props: FocusToggleProps & React.RefAttributes, ) => React.ReactNode = /* @__PURE__ */ React.forwardRef( function FocusToggle({ trackRef, ...props }: FocusToggleProps, ref) { const trackRefFromContext = useMaybeTrackRefContext(); const { mergedProps, inFocus } = useFocusToggle({ trackRef: trackRef ?? trackRefFromContext, props, }); return ( {(layoutContext) => layoutContext !== undefined && ( ) } ); }, );