import { ArrowRight } from "lucide-react" import { memo, useCallback } from "react" import { useTranslation } from "react-i18next" import { ResourceType, TimelineResource } from "@/features/resources/types" import { cn } from "@/lib/utils" interface ApplyButtonProps { resource: TimelineResource size: number type: ResourceType onApply?: (resource: TimelineResource, type: ResourceType) => void } /** * Кнопка для применения медиафайла на таймлайн * * Функционал: * - Отображает кнопку применения медиафайла на таймлайн * - Кнопка применения с состояниями (применено/не применено) * - При наведении на примененный элемент меняется на кнопку удаления * * @param resource - Объект медиафайла * @param type - Тип ресурса (media, music, subtitles и т.д.) * @param size - Размер кнопки (по умолчанию 150) */ export const ApplyButton = memo(function ApplyButton({ resource, size = 150, type = "media", onApply, }: ApplyButtonProps) { const { t } = useTranslation() const handleClick = useCallback( (e: React.MouseEvent) => { e.stopPropagation() // Останавливаем всплытие события if (onApply) { onApply(resource, type) } else { console.log("ApplyButton clicked", resource.id, type) } }, [resource, type, onApply], ) return ( ) })