File size: 1,039 Bytes
abcf568 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | export function extractImageFilesFromDataTransfer(dataTransfer: DataTransfer | null | undefined): File[] {
if (!dataTransfer) {
return []
}
const items = Array.from(dataTransfer.items ?? [])
const imageFilesFromItems = items
.filter((item) => item.kind === 'file' && item.type.startsWith('image/'))
.map((item) => item.getAsFile())
.filter((file): file is File => Boolean(file))
if (imageFilesFromItems.length > 0) {
return imageFilesFromItems
}
return Array.from(dataTransfer.files ?? []).filter((file) => file.type.startsWith('image/'))
}
export function countImageItems(dataTransfer: DataTransfer | null | undefined) {
if (!dataTransfer) {
return 0
}
const items = Array.from(dataTransfer.items ?? [])
const imageItemCount = items.filter((item) => (
item.kind === 'file' && item.type.startsWith('image/')
)).length
if (imageItemCount > 0) {
return imageItemCount
}
return Array.from(dataTransfer.files ?? []).filter((file) => file.type.startsWith('image/')).length
}
|