index.js 916 B

1234567891011121314151617
  1. const webkitGetAsEntryApi = require('./utils/webkitGetAsEntryApi')
  2. const fallbackApi = require('./utils/fallbackApi')
  3. // Returns a promise that resolves to the array of dropped files (if a folder is dropped, and browser supports folder parsing - promise resolves to the flat array of all files in all directories).
  4. // Each file has .relativePath prop appended to it (e.g. "/docs/Prague/ticket_from_prague_to_ufa.pdf") if browser supports it. Otherwise it's undefined.
  5. //
  6. // @param {DataTransfer} dataTransfer
  7. // @returns {Promise} - Array<File>
  8. module.exports = function getDroppedFiles (dataTransfer) {
  9. // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari
  10. if (dataTransfer.items[0] && 'webkitGetAsEntry' in dataTransfer.items[0]) {
  11. return webkitGetAsEntryApi(dataTransfer)
  12. // Otherwise just return all first-order files
  13. } else {
  14. return fallbackApi(dataTransfer)
  15. }
  16. }