traverseFileTree.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function loopFiles(item, callback) {
  7. var dirReader = item.createReader();
  8. var fileList = [];
  9. function sequence() {
  10. dirReader.readEntries(function (entries) {
  11. var entryList = Array.prototype.slice.apply(entries);
  12. fileList = fileList.concat(entryList);
  13. // Check if all the file has been viewed
  14. var isFinished = !entryList.length;
  15. if (isFinished) {
  16. callback(fileList);
  17. } else {
  18. sequence();
  19. }
  20. });
  21. }
  22. sequence();
  23. }
  24. var traverseFileTree = function traverseFileTree(files, callback, isAccepted) {
  25. // eslint-disable-next-line @typescript-eslint/naming-convention
  26. var _traverseFileTree = function _traverseFileTree(item, path) {
  27. // eslint-disable-next-line no-param-reassign
  28. item.path = path || '';
  29. if (item.isFile) {
  30. item.file(function (file) {
  31. if (isAccepted(file)) {
  32. // https://github.com/ant-design/ant-design/issues/16426
  33. if (item.fullPath && !file.webkitRelativePath) {
  34. Object.defineProperties(file, {
  35. webkitRelativePath: {
  36. writable: true
  37. }
  38. });
  39. // eslint-disable-next-line no-param-reassign
  40. file.webkitRelativePath = item.fullPath.replace(/^\//, '');
  41. Object.defineProperties(file, {
  42. webkitRelativePath: {
  43. writable: false
  44. }
  45. });
  46. }
  47. callback([file]);
  48. }
  49. });
  50. } else if (item.isDirectory) {
  51. loopFiles(item, function (entries) {
  52. entries.forEach(function (entryItem) {
  53. _traverseFileTree(entryItem, "".concat(path).concat(item.name, "/"));
  54. });
  55. });
  56. }
  57. };
  58. files.forEach(function (file) {
  59. _traverseFileTree(file.webkitGetAsEntry());
  60. });
  61. };
  62. var _default = traverseFileTree;
  63. exports.default = _default;