// frontend/src/components/TablaTitulares.tsx
import {
  Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Chip, IconButton, Typography, Link
} from '@mui/material';
import DeleteIcon from '@mui/icons-material/Delete';
import DragHandleIcon from '@mui/icons-material/DragHandle';
import EditIcon from '@mui/icons-material/Edit';
import { DndContext, closestCenter, PointerSensor, useSensor, useSensors, type DragEndEvent } from '@dnd-kit/core';
import { arrayMove, SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import type { Titular } from '../types';
interface SortableRowProps {
  titular: Titular;
  onDelete: (id: number) => void;
  onEdit: (titular: Titular) => void;
}
const SortableRow = ({ titular, onDelete, onEdit }: SortableRowProps) => {
  const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: titular.id });
  const style = {
    transform: CSS.Transform.toString(transform),
    transition,
  };
  const getChipColor = (tipo: Titular['tipo']): "success" | "warning" | "info" => {
    if (tipo === 'Edited') return 'warning';
    if (tipo === 'Manual') return 'info';
    return 'success';
  };
  
  const formatFuente = (fuente: string | null) => {
    if (!fuente) return 'N/A';
    try {
      const url = new URL(fuente);
      return url.hostname.replace('www.', '');
    } catch {
      return fuente;
    }
  }
  return (
    
      
        
      
      {titular.texto}
      
        
      
      
        {titular.urlFuente ? (
          
            {formatFuente(titular.fuente)}
          
        ) : (
          formatFuente(titular.fuente)
        )}
      
      
         { e.stopPropagation(); onEdit(titular); }}>
          
        
         { e.stopPropagation(); onDelete(titular.id); }} sx={{ color: '#ef4444' }}>
          
        
      
    
  );
};
interface TablaTitularesProps {
  titulares: Titular[];
  onReorder: (titulares: Titular[]) => void;
  onDelete: (id: number) => void;
  onEdit: (titular: Titular) => void;
}
const TablaTitulares = ({ titulares, onReorder, onDelete, onEdit }: TablaTitularesProps) => {
  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 8 } }));
  const handleDragEnd = (event: DragEndEvent) => {
    const { active, over } = event;
    if (over && active.id !== over.id) {
      const oldIndex = titulares.findIndex((item) => item.id === active.id);
      const newIndex = titulares.findIndex((item) => item.id === over.id);
      onReorder(arrayMove(titulares, oldIndex, newIndex));
    }
  };
  if (titulares.length === 0) {
    return (
      
        No hay titulares para mostrar.
      
    );
  }
  return (
    
      
        
           t.id)} strategy={verticalListSortingStrategy}>
            
              
                
                  
                  Texto del Titular
                  Tipo
                  Fuente
                  Acciones
                
              
              
                {titulares.map((titular) => (
                  
                ))}
              
            
          
        
      
    
  );
};
export default TablaTitulares;