mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
33 lines
795 B
TypeScript
33 lines
795 B
TypeScript
'use client';
|
|
|
|
import type { AudioHTMLAttributes } from 'react';
|
|
import { forwardRef, useCallback } from 'react';
|
|
|
|
import { useMediaRegistration } from '../player/context';
|
|
import { useComposedRefs } from '../utils/use-composed-refs';
|
|
|
|
export interface AudioProps extends AudioHTMLAttributes<HTMLAudioElement> {}
|
|
|
|
export const Audio = forwardRef<HTMLAudioElement, AudioProps>(function Audio({ children, ...props }, ref) {
|
|
const setMedia = useMediaRegistration();
|
|
|
|
const mediaRef = useCallback(
|
|
(el: HTMLAudioElement | null) => {
|
|
setMedia?.(el);
|
|
},
|
|
[setMedia]
|
|
);
|
|
|
|
const composedRef = useComposedRefs(ref, mediaRef);
|
|
|
|
return (
|
|
<audio ref={composedRef} {...props}>
|
|
{children}
|
|
</audio>
|
|
);
|
|
});
|
|
|
|
export namespace Audio {
|
|
export type Props = AudioProps;
|
|
}
|