package com.example.kmptpc_compose_sample.demos.foundation

import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.draganddrop.DragAndDropEvent
import androidx.compose.ui.draganddrop.DragAndDropTransferData
import androidx.compose.ui.uikit.fromString
import platform.Foundation.NSString
import platform.UIKit.UIDragItem

@OptIn(ExperimentalComposeUiApi::class)
actual fun createDragAndDropTransferData(item: String): DragAndDropTransferData? {
    // 使用 UIDragItem.fromString() 创建 iOS 拖放数据
    
    return DragAndDropTransferData(listOf(UIDragItem.fromString(item)))
}

@OptIn(ExperimentalComposeUiApi::class)
actual fun extractItemFromEvent(event: DragAndDropEvent): String? {
    // 尝试从事件中提取字符串数据
    // 首先尝试访问 localObject（同一应用内的拖放）
    for (dragItem in event.items) {
        val localObject = dragItem.localObject
        if (localObject != null && localObject is NSString) {
            return localObject as String
        }
    }
    // 如果 localObject 不可用，返回 null
    // 注意：跨应用拖放需要使用异步的 loadString() 方法
    // 但此函数需要同步返回，所以返回 null
    return null
}


