/** * Панель инструментов Split Edit */ import { AlignCenter, ArrowLeftRight, Eye, EyeOff, Grid, Layers, Magnet, MousePointer, Move, Scissors, Target, } from "lucide-react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Separator } from "@/components/ui/separator" import { Toggle } from "@/components/ui/toggle" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { cn } from "@/lib/utils" import { useSplitEdit } from "../hooks/use-split-edit" interface SplitEditToolbarProps { className?: string compact?: boolean } export function SplitEditToolbar({ className, compact = false }: SplitEditToolbarProps) { const { config, toolSettings, visualSettings, activeSplitEdits, isEnabled, toggleSplitEdit, setTool, updateToolSettings, clearAllSplitEdits, } = useSplitEdit() const tools = [ { id: "razor" as const, name: "Razor Tool", icon: Scissors, description: "Split clips at specific positions", shortcut: "R", }, { id: "select" as const, name: "Selection Tool", icon: MousePointer, description: "Select and modify split edits", shortcut: "V", }, { id: "slip" as const, name: "Slip Tool", icon: Move, description: "Slip clip content without changing duration", shortcut: "S", }, { id: "slide" as const, name: "Slide Tool", icon: ArrowLeftRight, description: "Slide clip position while maintaining sync", shortcut: "X", }, ] const handleToolSelect = (toolId: typeof config.tool) => { setTool(toolId) } const handleToggleSetting = (setting: keyof typeof toolSettings) => { updateToolSettings({ [setting]: !toolSettings[setting], }) } if (compact) { return (
{isEnabled && ( <> {tools.map((tool) => ( ))} )} {activeSplitEdits.length > 0 && ( <> {activeSplitEdits.length} )}
) } return (
{/* Основное переключение */}
Split Edit {activeSplitEdits.length > 0 && {activeSplitEdits.length} active}
{isEnabled && ( <> {/* Инструменты */}
{tools.map((tool) => (
{tool.name}
{tool.description}
{tool.shortcut}
))}
{/* Настройки инструмента */}
Magnetic Snap
Distance: {toolSettings.snapDistance}px
Auto Align Show Guides Sync Tracks
{/* Визуальные настройки */}
{visualSettings.showPreview ? "Hide Preview" : "Show Preview"} Clear All Split Edits
{/* Режим редактирования */}
Mode: {toolSettings.mode}
)}
) } export default SplitEditToolbar