diff --git a/README.md b/README.md
index c302482..bc86ced 100644
--- a/README.md
+++ b/README.md
@@ -96,6 +96,7 @@ Most browser support basic File selection with drag 'n' drop or file input:
* [File API](https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility)
* [Drag Event](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent#Browser_compatibility)
* [DataTransfer](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer#Browser_compatibility)
+* [DataTransferItem.getAsFileSystemHandle()](https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/getAsFileSystemHandle)
* [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Browser_compatibility)
For folder drop we use the [FileSystem API](https://developer.mozilla.org/en-US/docs/Web/API/FileSystem) which has very limited support:
diff --git a/src/file-selector.ts b/src/file-selector.ts
index 31b6b36..176c622 100644
--- a/src/file-selector.ts
+++ b/src/file-selector.ts
@@ -121,6 +121,13 @@ function flatten(items: any[]): T[] {
}
function fromDataTransferItem(item: DataTransferItem) {
+ if ('getAsFileSystemHandle' in DataTransferItem.prototype) {
+ return (item as any).getAsFileSystemHandle().then((fileSystemHandle: any) => {
+ const file = fileSystemHandle.getFile();
+ file.handle = fileSystemHandle;
+ return file;
+ });
+ }
const file = item.getAsFile();
if (!file) {
return Promise.reject(`${item} is not a File`);
@@ -185,4 +192,4 @@ async function fromFileEntry(entry: any) {
// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
interface FileArray extends Array {}
type FileValue = FileWithPath
- | FileArray[];
+ | FileArray[];
\ No newline at end of file