| 
					
				 | 
			
			
				@@ -10,6 +10,7 @@ const props = defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	options: { type: Object, default: () => ({}) }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	tag: { type: String, default: "div" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	class: { type: String, default: "" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	group: { type: String, default: "" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	disabled: { type: [Boolean, Function], default: false } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,6 +22,16 @@ onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const emit = defineEmits(["update:list", "start", "end", "update"]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const itemOnMove = index => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Deletes the remove function for the dragging element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete window.draggingItem.itemOnMove; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Remove the item from the current list and return it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const list = props.list.slice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const listItem = list.splice(index, 1)[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	emit("update:list", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return listItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // When an element starts being dragged 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const onDragStart = (itemIndex: number, event: DragEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	const { draggable } = event.target; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -34,14 +45,11 @@ const onDragStart = (itemIndex: number, event: DragEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	event.dataTransfer.dropEffect = "move"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Sets the dragging element index, list name and adds a remove function for when this item is moved to a different list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	window.draggingItemIndex = itemIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	window.draggingItemListName = props.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	window.draggingItemOnMove = index => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		delete window.draggingItemOnMove; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		const list = props.list.slice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		const listItem = list.splice(index, 1)[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		emit("update:list", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return listItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	window.draggingItem = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		itemIndex, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		itemListName: props.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		itemGroup: props.options.group, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		itemOnMove 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Emits the start event to the parent component, indicating that dragging has started 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -60,8 +68,8 @@ const onDragOver = (itemIndex: number, event: DragEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (props.disabled === true || !draggable) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// The index and list name of the item that is being dragged, stored in window since it can come from another list as well 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	const fromIndex = window.draggingItemIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	const fromList = window.draggingItemListName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const fromIndex = window.draggingItem.itemIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const fromList = window.draggingItem.itemListName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// The new index and list name of the item that is being dragged 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	const toIndex = itemIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	const toList = props.name; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -69,24 +77,20 @@ const onDragOver = (itemIndex: number, event: DragEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// If the item hasn't changed position in the same list, don't continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (fromIndex === toIndex && fromList === toList) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// If the dragging item isn't from the same group, don't continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (window.draggingItem.itemGroup !== props.options.group) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Update the index and list name of the dragged item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	window.draggingItemIndex = toIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	window.draggingItemListName = props.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	window.draggingItem.itemIndex = toIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	window.draggingItem.itemListName = props.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// If the item comes from another list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (toList !== fromList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// Call the remove function from the dragging element, which removes the item from the previous list and returns it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		const item = window.draggingItemOnMove(fromIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const item = window.draggingItem.itemOnMove(fromIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// Define a new remove function for the dragging element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		window.draggingItemOnMove = index => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Deletes the remove function for the dragging element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			delete window.draggingItemOnMove; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Remove the item from the current list and return it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const list = props.list.slice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const listItem = list.splice(index, 1)[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			emit("update:list", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return listItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		window.draggingItem.itemOnMove = itemOnMove; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		window.draggingItem.itemGroup = props.options.group; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// Add the item to the list at the new index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		const list = props.list.slice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		list.splice(toIndex, 0, item); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,10 +124,10 @@ const convertAttributes = item => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function hasSlotContent(slot: Slot | undefined, slotProps = {}): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const hasSlotContent = (slot, slotProps = {}) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (!slot) return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return slot(slotProps).some((vnode: VNode) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return slot(slotProps).some(vnode => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vnode.type === Comment || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vnode.type.toString() === "Symbol(Comment)" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,11 +139,11 @@ function hasSlotContent(slot: Slot | undefined, slotProps = {}): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vnode.type !== Text || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			vnode.type.toString() === "Symbol(Text)" || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vnode.type.toString() !== "Symbol(Text)" || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			(typeof vnode.children === "string" && vnode.children.trim() !== "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 |