mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
'use client';
|
|
|
|
import { SimpleHlsAudioOnlyMedia } from '@videojs/core/dom/media/simple-hls-audio-only';
|
|
import type { SimpleHlsAudioOnlyMediaProps } from '@videojs/spf/hls';
|
|
import { simpleHlsAudioOnlyMediaDefaultProps } from '@videojs/spf/hls';
|
|
import type { AudioHTMLAttributes, ReactNode } from 'react';
|
|
import { forwardRef } from 'react';
|
|
import { useAttachMedia } from '../../utils/use-attach-media';
|
|
import { useComposedRefs } from '../../utils/use-composed-refs';
|
|
import { useMediaInstance } from '../../utils/use-media-instance';
|
|
import { useSyncProps } from '../../utils/use-sync-props';
|
|
|
|
export interface SimpleHlsAudioOnlyProps
|
|
extends Omit<AudioHTMLAttributes<HTMLAudioElement>, keyof SimpleHlsAudioOnlyMediaProps>,
|
|
Partial<SimpleHlsAudioOnlyMediaProps> {
|
|
children?: ReactNode;
|
|
}
|
|
|
|
export const SimpleHlsAudioOnly = forwardRef<HTMLAudioElement, SimpleHlsAudioOnlyProps>(function SimpleHlsAudioOnly(
|
|
{ children, ...props },
|
|
ref
|
|
) {
|
|
const media = useMediaInstance(SimpleHlsAudioOnlyMedia);
|
|
const attachRef = useAttachMedia(media);
|
|
const composedRef = useComposedRefs(attachRef, ref);
|
|
const htmlProps = useSyncProps(media, props, simpleHlsAudioOnlyMediaDefaultProps);
|
|
|
|
return (
|
|
<audio ref={composedRef} {...htmlProps}>
|
|
{children}
|
|
</audio>
|
|
);
|
|
});
|
|
|
|
export namespace SimpleHlsAudioOnly {
|
|
export type Props = SimpleHlsAudioOnlyProps;
|
|
}
|