import React, { useCallback } from 'react'; import { IconPlay } from '@douyinfe/semi-icons'; import { cssClasses } from '@douyinfe/semi-foundation/sidebar/constants'; import { formatTime } from '../../videoPlayer/utils'; const prefixCls = cssClasses.ANNOTATION_ITEM; export interface AnnotationItem { type?: 'video' | 'text'; title?: string; url?: string; detail?: string; logo?: string; siteName?: string; order?: number; onClick?: (event: React.MouseEvent, item: AnnotationItem) => void; img?: string; duration?: number } export function VideoItem(props: AnnotationItem) { const { title, url, logo, img, duration, order, onClick, siteName } = props; const onItemClick = useCallback((e: React.MouseEvent) => { if (url && typeof window !== 'undefined') { window.open(url, '_blank'); } const { onClick, ...rest } = props; onClick?.(e, rest); }, [url, props]); return ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
{img && {title}} {typeof duration === 'number' && ( {formatTime(duration)} )}
{title}
{title} {siteName} {typeof order === 'number' && {order}}
); } export default function Item(props: AnnotationItem) { const { title, url, detail, logo, order, siteName } = props; const onItemClick = useCallback((e: React.MouseEvent) => { if (url && typeof window !== 'undefined') { window.open(url, '_blank'); } const { onClick, ...rest } = props; onClick?.(e, rest); }, [url, props]); return ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
{title}
{detail}
{logo && {title}} {siteName && {siteName}} {typeof order === 'number' && {order}}
); }