| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -24,6 +24,7 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					}: DraggableEventProps) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const ref = useRef<HTMLDivElement>(null); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const [isDragging, setIsDragging] = useState(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const [isTransitioning, setIsTransitioning] = useState(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const screenWidth = useRef(isClient ? window.innerWidth : 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const lastChangeTime = useRef(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -36,6 +37,7 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      onDragStart: () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        screenWidth.current = window.innerWidth; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        setIsDragging(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        setIsTransitioning(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        onDragStart(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        lastChangeTime.current = Date.now(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -56,7 +58,9 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      onDrop: () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        setIsDragging(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        setIsTransitioning(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        onDragEnd(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        setTimeout(() => setIsTransitioning(false), 300); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      getInitialData: () => ({ id: event.id, date }), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      dragHandle: element | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -68,14 +72,11 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  return ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <motion.div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ref={ref} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      layoutId={isDragging ? event.id : undefined} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      layoutId={event.id} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      onClick={() => !isDragging && onEventClick({ event, date })} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      className="bg-white p-4 rounded shadow-md mb-2 cursor-grab active:cursor-grabbing transition-all relative select-none" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      whileHover={{ scale: 1.01 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      transition={{  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        duration: 0.3, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        layout: { duration: 0.1 } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      transition={{ duration: 1.2 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      style={{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        opacity: isDragging ? 0.7 : 1, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        userSelect: 'none', | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -87,8 +88,8 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <div className="relative rounded overflow-hidden mb-2"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        {event.imageUrl && ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <motion.img  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            layoutId={isDragging ? `event-image-${event.id}` : undefined} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            transition={{ duration: 0.3 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            layoutId={`event-image-${event.id}`} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            transition={{ duration: 1.2 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            src={event.imageUrl}  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            alt={event.title} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            className="w-full h-16 md:h-12 object-cover pointer-events-none" | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -96,16 +97,16 @@ export default function DraggableEvent({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        )} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <motion.div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          layoutId={isDragging ? `event-time-${event.id}` : undefined} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          transition={{ duration: 0.3 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          layoutId={`event-time-${event.id}`} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          transition={{ duration: 1.2 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          className="absolute top-1 right-1 bg-gradient-to-br from-indigo-600 to-violet-600 text-white text-[12px] md:text-[10px] px-1 py-0.5 rounded" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          {event.time} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        </motion.div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <motion.h3  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        layoutId={isDragging ? `event-title-${event.id}` : undefined} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        transition={{ duration: 0.3 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        layoutId={`event-title-${event.id}`} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        transition={{ duration: 1.2 }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        className="text-sm text-black font-sans" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        {event.title} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |