@webiny/app-file-manager 5.35.2-beta.0 → 5.36.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/BatchFileUploader.d.ts +35 -0
  2. package/BatchFileUploader.js +180 -0
  3. package/BatchFileUploader.js.map +1 -0
  4. package/components/BottomInfoBar/BottomInfoBar.d.ts +4 -0
  5. package/components/BottomInfoBar/BottomInfoBar.js +25 -0
  6. package/components/BottomInfoBar/BottomInfoBar.js.map +1 -0
  7. package/components/BottomInfoBar/ListStatus.d.ts +6 -0
  8. package/components/BottomInfoBar/ListStatus.js +26 -0
  9. package/components/BottomInfoBar/ListStatus.js.map +1 -0
  10. package/components/BottomInfoBar/SupportedFileTypes.d.ts +6 -0
  11. package/components/BottomInfoBar/SupportedFileTypes.js +47 -0
  12. package/components/BottomInfoBar/SupportedFileTypes.js.map +1 -0
  13. package/components/BottomInfoBar/index.d.ts +1 -0
  14. package/components/BottomInfoBar/index.js +16 -0
  15. package/components/BottomInfoBar/index.js.map +1 -0
  16. package/components/BottomInfoBar/styled.d.ts +23 -0
  17. package/components/BottomInfoBar/styled.js +33 -0
  18. package/components/BottomInfoBar/styled.js.map +1 -0
  19. package/components/DropFilesHere/DropFilesHere.d.ts +9 -0
  20. package/components/DropFilesHere/DropFilesHere.js +31 -0
  21. package/components/DropFilesHere/DropFilesHere.js.map +1 -0
  22. package/components/DropFilesHere/index.d.ts +1 -0
  23. package/components/DropFilesHere/index.js +16 -0
  24. package/components/DropFilesHere/index.js.map +1 -0
  25. package/components/DropFilesHere/styled.d.ts +26 -0
  26. package/components/DropFilesHere/styled.js +35 -0
  27. package/components/DropFilesHere/styled.js.map +1 -0
  28. package/components/Empty/Empty.d.ts +8 -0
  29. package/components/Empty/Empty.js +31 -0
  30. package/components/Empty/Empty.js.map +1 -0
  31. package/components/Empty/index.d.ts +1 -0
  32. package/components/Empty/index.js +16 -0
  33. package/components/Empty/index.js.map +1 -0
  34. package/components/FileDetails/Aliases.js +8 -4
  35. package/components/FileDetails/Aliases.js.map +1 -1
  36. package/components/FileDetails/DeleteImageAction.d.ts +6 -2
  37. package/components/FileDetails/DeleteImageAction.js +19 -52
  38. package/components/FileDetails/DeleteImageAction.js.map +1 -1
  39. package/components/FileDetails/FileDetails.d.ts +24 -0
  40. package/components/FileDetails/FileDetails.js +267 -0
  41. package/components/FileDetails/FileDetails.js.map +1 -0
  42. package/components/FileDetails/Name.js +2 -2
  43. package/components/FileDetails/Name.js.map +1 -1
  44. package/components/FileDetails/Tags.d.ts +6 -2
  45. package/components/FileDetails/Tags.js +31 -16
  46. package/components/FileDetails/Tags.js.map +1 -1
  47. package/components/FileDetails/index.d.ts +1 -0
  48. package/components/FileDetails/index.js +16 -0
  49. package/components/FileDetails/index.js.map +1 -0
  50. package/components/Grid/File.d.ts +16 -0
  51. package/components/Grid/File.js +57 -0
  52. package/components/Grid/File.js.map +1 -0
  53. package/components/Grid/Grid.d.ts +17 -0
  54. package/components/Grid/Grid.js +99 -0
  55. package/components/Grid/Grid.js.map +1 -0
  56. package/components/Grid/index.d.ts +1 -0
  57. package/components/Grid/index.js +16 -0
  58. package/components/Grid/index.js.map +1 -0
  59. package/components/Grid/styled.d.ts +40 -0
  60. package/components/Grid/styled.js +58 -0
  61. package/components/Grid/styled.js.map +1 -0
  62. package/components/NoPermission/NoPermission.d.ts +2 -0
  63. package/components/NoPermission/NoPermission.js +24 -0
  64. package/components/NoPermission/NoPermission.js.map +1 -0
  65. package/components/NoPermission/index.d.ts +1 -0
  66. package/components/NoPermission/index.js +16 -0
  67. package/components/NoPermission/index.js.map +1 -0
  68. package/components/NoPermission/styled.d.ts +32 -0
  69. package/components/NoPermission/styled.js +40 -0
  70. package/components/NoPermission/styled.js.map +1 -0
  71. package/components/NoResults/NoResults.d.ts +2 -0
  72. package/components/NoResults/NoResults.js +17 -0
  73. package/components/NoResults/NoResults.js.map +1 -0
  74. package/components/NoResults/index.d.ts +1 -0
  75. package/components/NoResults/index.js +16 -0
  76. package/components/NoResults/index.js.map +1 -0
  77. package/components/NoResults/styled.d.ts +7 -0
  78. package/components/NoResults/styled.js +13 -0
  79. package/components/NoResults/styled.js.map +1 -0
  80. package/components/Table/FolderActionDelete.d.ts +6 -0
  81. package/components/Table/FolderActionDelete.js +25 -0
  82. package/components/Table/FolderActionDelete.js.map +1 -0
  83. package/components/Table/FolderActionEdit.d.ts +6 -0
  84. package/components/Table/FolderActionEdit.js +25 -0
  85. package/components/Table/FolderActionEdit.js.map +1 -0
  86. package/components/Table/Name.d.ts +12 -0
  87. package/components/Table/Name.js +39 -0
  88. package/components/Table/Name.js.map +1 -0
  89. package/components/Table/RecordActionCopy.d.ts +8 -0
  90. package/components/Table/RecordActionCopy.js +30 -0
  91. package/components/Table/RecordActionCopy.js.map +1 -0
  92. package/components/Table/RecordActionDelete.d.ts +8 -0
  93. package/components/Table/RecordActionDelete.js +36 -0
  94. package/components/Table/RecordActionDelete.js.map +1 -0
  95. package/components/Table/RecordActionEdit.d.ts +7 -0
  96. package/components/Table/RecordActionEdit.js +28 -0
  97. package/components/Table/RecordActionEdit.js.map +1 -0
  98. package/components/Table/RecordActionMove.d.ts +6 -0
  99. package/components/Table/RecordActionMove.js +25 -0
  100. package/components/Table/RecordActionMove.js.map +1 -0
  101. package/components/Table/Table.d.ts +31 -0
  102. package/components/Table/Table.js +256 -0
  103. package/components/Table/Table.js.map +1 -0
  104. package/components/Table/index.d.ts +1 -0
  105. package/components/Table/index.js +16 -0
  106. package/components/Table/index.js.map +1 -0
  107. package/components/Table/styled.d.ts +21 -0
  108. package/components/Table/styled.js +35 -0
  109. package/components/Table/styled.js.map +1 -0
  110. package/components/Title/Title.d.ts +5 -0
  111. package/components/Title/Title.js +20 -0
  112. package/components/Title/Title.js.map +1 -0
  113. package/components/Title/index.d.ts +1 -0
  114. package/components/Title/index.js +16 -0
  115. package/components/Title/index.js.map +1 -0
  116. package/components/Title/styled.d.ts +7 -0
  117. package/components/Title/styled.js +14 -0
  118. package/components/Title/styled.js.map +1 -0
  119. package/components/UploadStatus/UploadStatus.d.ts +6 -0
  120. package/components/UploadStatus/UploadStatus.js +36 -0
  121. package/components/UploadStatus/UploadStatus.js.map +1 -0
  122. package/components/UploadStatus/assets/check.svg +3 -0
  123. package/components/UploadStatus/assets/loading.svg +17 -0
  124. package/components/UploadStatus/index.d.ts +1 -0
  125. package/components/UploadStatus/index.js +16 -0
  126. package/components/UploadStatus/index.js.map +1 -0
  127. package/components/UploadStatus/styled.d.ts +41 -0
  128. package/components/UploadStatus/styled.js +57 -0
  129. package/components/UploadStatus/styled.js.map +1 -0
  130. package/constants.d.ts +3 -0
  131. package/constants.js +12 -0
  132. package/constants.js.map +1 -0
  133. package/hooks/useCopyFile.d.ts +11 -0
  134. package/hooks/useCopyFile.js +30 -0
  135. package/hooks/useCopyFile.js.map +1 -0
  136. package/hooks/useDeleteFile.d.ts +9 -0
  137. package/hooks/useDeleteFile.js +64 -0
  138. package/hooks/useDeleteFile.js.map +1 -0
  139. package/index.d.ts +1 -0
  140. package/index.js +9 -1
  141. package/index.js.map +1 -1
  142. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.d.ts +9 -3
  143. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js +82 -52
  144. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js.map +1 -1
  145. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.d.ts +2 -2
  146. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js +3 -3
  147. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js.map +1 -1
  148. package/modules/FileManagerApiProvider/graphql.d.ts +4 -0
  149. package/modules/FileManagerApiProvider/graphql.js +9 -7
  150. package/modules/FileManagerApiProvider/graphql.js.map +1 -1
  151. package/modules/FileManagerRenderer/AcoRenderer/FileManagerAcoView.d.ts +18 -0
  152. package/modules/FileManagerRenderer/AcoRenderer/FileManagerAcoView.js +622 -0
  153. package/modules/FileManagerRenderer/AcoRenderer/FileManagerAcoView.js.map +1 -0
  154. package/modules/FileManagerRenderer/AcoRenderer/LeftSidebar.d.ts +12 -0
  155. package/modules/FileManagerRenderer/AcoRenderer/LeftSidebar.js +75 -0
  156. package/modules/FileManagerRenderer/AcoRenderer/LeftSidebar.js.map +1 -0
  157. package/modules/FileManagerRenderer/AcoRenderer/index.d.ts +2 -0
  158. package/modules/FileManagerRenderer/AcoRenderer/index.js +70 -0
  159. package/modules/FileManagerRenderer/AcoRenderer/index.js.map +1 -0
  160. package/modules/FileManagerRenderer/AcoRenderer/outputFileSelectionError.d.ts +2 -0
  161. package/modules/FileManagerRenderer/AcoRenderer/outputFileSelectionError.js +40 -0
  162. package/modules/FileManagerRenderer/AcoRenderer/outputFileSelectionError.js.map +1 -0
  163. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js +7 -2
  164. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js.map +1 -1
  165. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.d.ts +2 -1
  166. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js +48 -36
  167. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js.map +1 -1
  168. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/assets/check.svg +3 -0
  169. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/assets/loading.svg +17 -0
  170. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.d.ts +4 -3
  171. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js +6 -25
  172. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js.map +1 -1
  173. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.d.ts +2 -2
  174. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js +80 -109
  175. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js.map +1 -1
  176. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/FileManagerAcoViewContext.d.ts +54 -0
  177. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/FileManagerAcoViewContext.js +430 -0
  178. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/FileManagerAcoViewContext.js.map +1 -0
  179. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/index.d.ts +2 -0
  180. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/index.js +27 -0
  181. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/index.js.map +1 -0
  182. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/stateReducer.d.ts +74 -0
  183. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/stateReducer.js +119 -0
  184. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/stateReducer.js.map +1 -0
  185. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/useFileManagerAcoView.d.ts +3 -0
  186. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/useFileManagerAcoView.js +15 -0
  187. package/modules/FileManagerRenderer/FileManagerAcoViewProvider/useFileManagerAcoView.js.map +1 -0
  188. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.d.ts +4 -3
  189. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js +23 -19
  190. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js.map +1 -1
  191. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.d.ts +0 -3
  192. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js +0 -5
  193. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js.map +1 -1
  194. package/modules/FileManagerRenderer/index.js +2 -2
  195. package/modules/FileManagerRenderer/index.js.map +1 -1
  196. package/modules/FileTypes/fileImage/EditAction.js +2 -2
  197. package/modules/FileTypes/fileImage/EditAction.js.map +1 -1
  198. package/package.json +18 -12
  199. package/tagsHelpers.d.ts +16 -0
  200. package/tagsHelpers.js +41 -0
  201. package/tagsHelpers.js.map +1 -0
  202. package/types.d.ts +1 -0
  203. package/types.js +8 -1
  204. package/types.js.map +1 -1
@@ -14,5 +14,5 @@ export interface FileManagerViewProps {
14
14
  scope?: string;
15
15
  own?: boolean;
16
16
  }
17
- declare const FileManagerView: React.FC<FileManagerViewProps>;
18
- export default FileManagerView;
17
+ declare const _default: React.FunctionComponent<FileManagerViewProps>;
18
+ export default _default;
@@ -7,13 +7,14 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
10
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
12
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
14
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
15
  var _react = _interopRequireWildcard(require("react"));
16
16
  var _reactButterfiles = _interopRequireDefault(require("react-butterfiles"));
17
+ var _mobxReactLite = require("mobx-react-lite");
17
18
  var _emotion = require("emotion");
18
19
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
19
20
  var _styled = _interopRequireDefault(require("@emotion/styled"));
@@ -35,6 +36,9 @@ var _LeftSidebar = _interopRequireDefault(require("./LeftSidebar"));
35
36
  var _BottomInfoBar = _interopRequireDefault(require("./BottomInfoBar"));
36
37
  var _ = require("../../..");
37
38
  var _EmptyView = require("./EmptyView");
39
+ var _UploadStatus = _interopRequireDefault(require("./BottomInfoBar/UploadStatus"));
40
+ var _SupportedFileTypes = _interopRequireDefault(require("./BottomInfoBar/SupportedFileTypes"));
41
+ var _BatchFileUploader = require("../../../BatchFileUploader");
38
42
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
39
43
  var t = _i18n.i18n.ns("app-admin/file-manager/file-manager-view");
40
44
  var InputSearch = /*#__PURE__*/(0, _styled.default)("div", {
@@ -118,8 +122,6 @@ var FileManagerView = function FileManagerView(props) {
118
122
  toggleSelected = _useFileManagerView.toggleSelected,
119
123
  dragging = _useFileManagerView.dragging,
120
124
  setDragging = _useFileManagerView.setDragging,
121
- uploading = _useFileManagerView.uploading,
122
- setUploading = _useFileManagerView.setUploading,
123
125
  _showFileDetails = _useFileManagerView.showFileDetails,
124
126
  hideFileDetails = _useFileManagerView.hideFileDetails,
125
127
  showingFileDetails = _useFileManagerView.showingFileDetails,
@@ -129,6 +131,11 @@ var FileManagerView = function FileManagerView(props) {
129
131
  setHasPreviouslyUploadedFiles = _useFileManagerView.setHasPreviouslyUploadedFiles,
130
132
  uploadFile = _useFileManagerView.uploadFile,
131
133
  settings = _useFileManagerView.settings;
134
+ var _useState = (0, _react.useState)(function () {
135
+ return new _BatchFileUploader.BatchFileUploader(uploadFile);
136
+ }),
137
+ _useState2 = (0, _slicedToArray2.default)(_useState, 1),
138
+ uploader = _useState2[0];
132
139
  var fileManager = (0, _.useFileManagerApi)();
133
140
  var _useSnackbar = (0, _appAdmin.useSnackbar)(),
134
141
  showSnackbar = _useSnackbar.showSnackbar;
@@ -192,89 +199,49 @@ var FileManagerView = function FileManagerView(props) {
192
199
  }
193
200
  }, 500), [loadMore]);
194
201
  var uploadFiles = /*#__PURE__*/function () {
195
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3(files) {
196
- var list, errors, uploadedFiles;
197
- return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
198
- while (1) switch (_context3.prev = _context3.next) {
202
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(files) {
203
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
204
+ while (1) switch (_context2.prev = _context2.next) {
199
205
  case 0:
200
- setUploading(true);
201
- list = Array.isArray(files) ? files : [files];
202
- errors = [];
203
- uploadedFiles = [];
204
- _context3.next = 6;
205
- return Promise.all(list.map( /*#__PURE__*/function () {
206
- var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(file) {
207
- var newFile;
208
- return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
209
- while (1) switch (_context2.prev = _context2.next) {
210
- case 0:
211
- _context2.prev = 0;
212
- _context2.next = 3;
213
- return uploadFile(file);
214
- case 3:
215
- newFile = _context2.sent;
216
- if (newFile) {
217
- uploadedFiles.push(newFile);
218
- }
219
- _context2.next = 10;
220
- break;
221
- case 7:
222
- _context2.prev = 7;
223
- _context2.t0 = _context2["catch"](0);
224
- errors.push({
225
- file: file,
226
- e: _context2.t0
227
- });
228
- case 10:
229
- case "end":
230
- return _context2.stop();
231
- }
232
- }, _callee2, null, [[0, 7]]);
233
- }));
234
- return function (_x3) {
235
- return _ref5.apply(this, arguments);
236
- };
237
- }()));
238
- case 6:
239
- if (!hasPreviouslyUploadedFiles) {
240
- setHasPreviouslyUploadedFiles(true);
241
- }
242
- setUploading(false);
243
- if (!(errors.length > 0)) {
244
- _context3.next = 10;
245
- break;
246
- }
247
- return _context3.abrupt("return", setTimeout(function () {
248
- showSnackbar( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["One or more files were not uploaded successfully:"]))), /*#__PURE__*/_react.default.createElement("ol", null, errors.map(function (_ref6) {
249
- var file = _ref6.file,
250
- e = _ref6.e;
251
- return /*#__PURE__*/_react.default.createElement("li", {
252
- key: file.name
253
- }, /*#__PURE__*/_react.default.createElement("strong", null, file.name), ": ", getFileUploadErrorMessage(e));
254
- }))));
255
- // TODO @ts-refactor
256
- }, 750));
257
- case 10:
258
- // We wait 750ms, just for everything to settle down a bit.
259
- setTimeout(function () {
260
- return showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["File upload complete."]))));
261
- }, 750);
262
- if (!(typeof onUploadCompletion === "function")) {
263
- _context3.next = 13;
264
- break;
265
- }
266
- return _context3.abrupt("return", setTimeout(function () {
267
- onUploadCompletion(uploadedFiles);
268
- onClose && onClose();
269
- // TODO @ts-refactor
270
- }, 750));
271
- case 13:
272
- return _context3.abrupt("return", null);
273
- case 14:
206
+ uploader.addFiles(files);
207
+ uploader.onUploadFinished(function (_ref5) {
208
+ var uploaded = _ref5.uploaded,
209
+ errors = _ref5.errors;
210
+ uploader.reset();
211
+ if (!hasPreviouslyUploadedFiles) {
212
+ setHasPreviouslyUploadedFiles(true);
213
+ }
214
+ if (errors.length > 0) {
215
+ // We wait 750ms, just for everything to settle down a bit.
216
+ setTimeout(function () {
217
+ showSnackbar( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["One or more files were not uploaded successfully:"]))), /*#__PURE__*/_react.default.createElement("ol", null, errors.map(function (_ref6) {
218
+ var file = _ref6.file,
219
+ e = _ref6.e;
220
+ return /*#__PURE__*/_react.default.createElement("li", {
221
+ key: file.name
222
+ }, /*#__PURE__*/_react.default.createElement("strong", null, file.name), ": ", getFileUploadErrorMessage(e));
223
+ }))));
224
+ }, 750);
225
+ return;
226
+ }
227
+
228
+ // We wait 750ms, just for everything to settle down a bit.
229
+ setTimeout(function () {
230
+ return showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["File upload complete."]))));
231
+ }, 750);
232
+ if (typeof onUploadCompletion === "function") {
233
+ // We wait 750ms, just for everything to settle down a bit.
234
+ setTimeout(function () {
235
+ onUploadCompletion(uploaded);
236
+ onClose && onClose();
237
+ }, 750);
238
+ }
239
+ });
240
+ case 2:
274
241
  case "end":
275
- return _context3.stop();
242
+ return _context2.stop();
276
243
  }
277
- }, _callee3);
244
+ }, _callee2);
278
245
  }));
279
246
  return function uploadFiles(_x2) {
280
247
  return _ref4.apply(this, arguments);
@@ -286,12 +253,13 @@ var FileManagerView = function FileManagerView(props) {
286
253
  return null;
287
254
  }
288
255
  return /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
289
- onClick: browseFiles,
290
- disabled: uploading
256
+ onClick: browseFiles
291
257
  }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
292
258
  icon: /*#__PURE__*/_react.default.createElement(_cloud_upload.ReactComponent, null)
293
259
  }), t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Upload..."]))));
294
- }, [uploading, fileManager.canCreate]);
260
+ }, [fileManager.canCreate]);
261
+ var filesBeingUploaded = uploader.getJobs().length;
262
+ var progress = uploader.progress;
295
263
  return /*#__PURE__*/_react.default.createElement(_reactButterfiles.default, {
296
264
  multiple: true,
297
265
  maxSize: settings ? settings.uploadMaxFileSize + "b" : "1TB",
@@ -330,25 +298,24 @@ var FileManagerView = function FileManagerView(props) {
330
298
  "data-testid": "file-manager.search-input"
331
299
  })),
332
300
  barRight: selected.length > 0 ? /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
333
- disabled: uploading,
334
301
  onClick: function onClick() {
335
- (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
336
- return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
337
- while (1) switch (_context4.prev = _context4.next) {
302
+ (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3() {
303
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
304
+ while (1) switch (_context3.prev = _context3.next) {
338
305
  case 0:
339
306
  if (!(typeof onChange === "function")) {
340
- _context4.next = 4;
307
+ _context3.next = 4;
341
308
  break;
342
309
  }
343
- _context4.next = 3;
310
+ _context3.next = 3;
344
311
  return onChange(multiple ? selected : selected[0]);
345
312
  case 3:
346
313
  onClose && onClose();
347
314
  case 4:
348
315
  case "end":
349
- return _context4.stop();
316
+ return _context3.stop();
350
317
  }
351
- }, _callee4);
318
+ }, _callee3);
352
319
  }))();
353
320
  }
354
321
  }, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Select"]))), " ", multiple && "(".concat(selected.length, ")")) : renderUploadFileAction({
@@ -365,7 +332,9 @@ var FileManagerView = function FileManagerView(props) {
365
332
  file: files.find(function (item) {
366
333
  return item.id === showingFileDetails;
367
334
  }),
368
- onClose: hideFileDetails
335
+ onClose: hideFileDetails,
336
+ open: Boolean(showingFileDetails),
337
+ loading: false // We don't need to show the loader here
369
338
  }) : null, /*#__PURE__*/_react.default.createElement(_LeftSidebar.default, {
370
339
  toggleTag: function toggleTag(tag) {
371
340
  return _toggleTag({
@@ -397,30 +366,30 @@ var FileManagerView = function FileManagerView(props) {
397
366
  return current.src === file.src;
398
367
  }),
399
368
  onSelect: function () {
400
- var _onSelect = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
401
- return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
402
- while (1) switch (_context5.prev = _context5.next) {
369
+ var _onSelect = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
370
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
371
+ while (1) switch (_context4.prev = _context4.next) {
403
372
  case 0:
404
373
  if (!(typeof onChange === "function")) {
405
- _context5.next = 7;
374
+ _context4.next = 7;
406
375
  break;
407
376
  }
408
377
  if (!multiple) {
409
- _context5.next = 4;
378
+ _context4.next = 4;
410
379
  break;
411
380
  }
412
381
  toggleSelected(file);
413
- return _context5.abrupt("return");
382
+ return _context4.abrupt("return");
414
383
  case 4:
415
- _context5.next = 6;
384
+ _context4.next = 6;
416
385
  return onChange(file);
417
386
  case 6:
418
387
  onClose && onClose();
419
388
  case 7:
420
389
  case "end":
421
- return _context5.stop();
390
+ return _context4.stop();
422
391
  }
423
- }, _callee5);
392
+ }, _callee4);
424
393
  }));
425
394
  function onSelect() {
426
395
  return _onSelect.apply(this, arguments);
@@ -430,14 +399,16 @@ var FileManagerView = function FileManagerView(props) {
430
399
  });
431
400
  }) : /*#__PURE__*/_react.default.createElement(_EmptyView.EmptyView, {
432
401
  browseFiles: browseFiles
433
- }))), /*#__PURE__*/_react.default.createElement(_BottomInfoBar.default, {
434
- accept: accept,
435
- uploading: uploading
436
- }))));
402
+ }))), /*#__PURE__*/_react.default.createElement(_BottomInfoBar.default, null, /*#__PURE__*/_react.default.createElement(_SupportedFileTypes.default, {
403
+ accept: accept
404
+ }), filesBeingUploaded > 0 && /*#__PURE__*/_react.default.createElement(_UploadStatus.default, {
405
+ numberOfFiles: filesBeingUploaded,
406
+ progress: progress
407
+ })))));
437
408
  });
438
409
  };
439
410
  FileManagerView.defaultProps = {
440
411
  multiple: false
441
412
  };
442
- var _default = FileManagerView;
413
+ var _default = (0, _mobxReactLite.observer)(FileManagerView);
443
414
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","InputSearch","styled","backgroundColor","position","height","padding","width","borderRadius","border","fontSize","marginLeft","outline","color","searchIcon","css","left","top","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","getFileTypePlugin","id","render","FileManagerView","onClose","onChange","accept","multiple","onUploadCompletion","useFileManagerView","files","loadingFiles","loadMore","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","hideFileDetails","showingFileDetails","queryParams","setQueryParams","hasPreviouslyUploadedFiles","setHasPreviouslyUploadedFiles","uploadFile","settings","fileManager","useFileManagerApi","useSnackbar","showSnackbar","searchOnChange","useCallback","debounce","search","toggleTag","tag","finalTags","Array","isArray","tags","includes","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","useHotkeys","zIndex","keys","esc","searchInput","useRef","refreshOnScroll","scrollFrame","uploadFiles","list","errors","uploadedFiles","Promise","all","map","newFile","length","setTimeout","name","renderUploadFileAction","browseFiles","canCreate","uploadMaxFileSize","filesToUpload","src","filter","Boolean","console","log","outputFileSelectionError","getDropZoneProps","onDragEnter","onExited","target","value","canRead","find","item","opacity","some","current","onSelect","defaultProps"],"sources":["FileManagerView.tsx"],"sourcesContent":["import React, { useRef, useCallback } from \"react\";\nimport Files from \"react-butterfiles\";\nimport { css } from \"emotion\";\nimport debounce from \"lodash/debounce\";\nimport styled from \"@emotion/styled\";\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { ReactComponent as SearchIcon } from \"@material-design-icons/svg/outlined/search.svg\";\nimport { ReactComponent as UploadIcon } from \"@material-design-icons/svg/filled/cloud_upload.svg\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { OverlayLayout, useSnackbar } from \"@webiny/app-admin\";\nimport FileThumbnail, { FileProps } from \"./File\";\nimport getFileTypePlugin from \"~/getFileTypePlugin\";\nimport { outputFileSelectionError } from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport { FileDetails } from \"~/components/FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { useFileManagerApi, useFileManagerView } from \"~/index\";\nimport { EmptyView } from \"./EmptyView\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange?: Function;\n onClose?: Function;\n files?: FilesRules;\n multiple?: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onUploadCompletion?: Function;\n tags?: string[];\n scope?: string;\n own?: boolean;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <FileThumbnail {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </FileThumbnail>\n );\n};\n\ninterface RefreshOnScrollParams {\n loadMore: () => void;\n scrollFrame: {\n top: number;\n };\n}\n\ninterface FileError {\n file: File;\n e: Error;\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const { onClose, onChange, accept, multiple = false, onUploadCompletion } = props;\n\n const {\n files,\n loadingFiles,\n loadMore,\n selected,\n toggleSelected,\n dragging,\n setDragging,\n uploading,\n setUploading,\n showFileDetails,\n hideFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles,\n uploadFile,\n settings\n } = useFileManagerView();\n\n const fileManager = useFileManagerApi();\n const { showSnackbar } = useSnackbar();\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, loadMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [loadMore]\n );\n\n const uploadFiles = async (files: File | File[]): Promise<number | null> => {\n setUploading(true);\n const list: File[] = Array.isArray(files) ? files : [files];\n\n const errors: FileError[] = [];\n const uploadedFiles: FileItem[] = [];\n await Promise.all(\n list.map(async file => {\n try {\n const newFile = await uploadFile(file);\n\n if (newFile) {\n uploadedFiles.push(newFile);\n }\n } catch (e) {\n errors.push({ file, e });\n }\n })\n );\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n setUploading(false);\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose && onClose();\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n return null;\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!fileManager.canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles} disabled={uploading}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [uploading, fileManager.canCreate]\n );\n\n return (\n <Files\n multiple\n maxSize={settings ? settings.uploadMaxFileSize + \"b\" : \"1TB\"}\n multipleMaxSize={\"1TB\"}\n accept={accept}\n onSuccess={files => {\n const filesToUpload = files.map(file => file.src.file).filter(Boolean) as File[];\n uploadFiles(filesToUpload);\n }}\n onError={errors => {\n console.log(\"onError\", errors);\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fileManager.canRead}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n disabled={uploading}\n onClick={() => {\n (async () => {\n if (typeof onChange === \"function\") {\n await onChange(multiple ? selected : selected[0]);\n\n onClose && onClose();\n }\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n {showingFileDetails ? (\n <FileDetails\n file={files.find(item => item.id === showingFileDetails)!}\n onClose={hideFileDetails}\n />\n ) : null}\n\n <LeftSidebar toggleTag={tag => toggleTag({ tag, queryParams })} />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loadingFiles && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({ scrollFrame, loadMore })\n }\n >\n <FileList>\n {files.length ? (\n files.map(file =>\n renderFile({\n file,\n showFileDetails: () => showFileDetails(file.id),\n selected: selected.some(\n current => current.src === file.src\n ),\n onSelect: async () => {\n if (typeof onChange === \"function\") {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose && onClose();\n }\n }\n })\n )\n ) : (\n <EmptyView browseFiles={browseFiles} />\n )}\n </FileList>\n </Scrollbar>\n <BottomInfoBar accept={accept} uploading={uploading} />\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false\n};\n\nexport default FileManagerView;\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","InputSearch","styled","backgroundColor","position","height","padding","width","borderRadius","border","fontSize","marginLeft","outline","color","searchIcon","css","left","top","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","getFileTypePlugin","id","render","FileManagerView","onClose","onChange","accept","multiple","onUploadCompletion","useFileManagerView","files","loadingFiles","loadMore","selected","toggleSelected","dragging","setDragging","showFileDetails","hideFileDetails","showingFileDetails","queryParams","setQueryParams","hasPreviouslyUploadedFiles","setHasPreviouslyUploadedFiles","uploadFile","settings","useState","BatchFileUploader","uploader","fileManager","useFileManagerApi","useSnackbar","showSnackbar","searchOnChange","useCallback","debounce","search","toggleTag","tag","finalTags","Array","isArray","tags","includes","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","useHotkeys","zIndex","keys","esc","searchInput","useRef","refreshOnScroll","scrollFrame","uploadFiles","addFiles","onUploadFinished","uploaded","errors","reset","length","setTimeout","map","name","renderUploadFileAction","browseFiles","canCreate","filesBeingUploaded","getJobs","progress","uploadMaxFileSize","filesToUpload","src","filter","Boolean","console","log","outputFileSelectionError","getDropZoneProps","onDragEnter","onExited","target","value","canRead","find","item","opacity","some","current","onSelect","defaultProps","observer"],"sources":["FileManagerView.tsx"],"sourcesContent":["import React, { useRef, useCallback, useState } from \"react\";\nimport Files from \"react-butterfiles\";\nimport { observer } from \"mobx-react-lite\";\nimport { css } from \"emotion\";\nimport debounce from \"lodash/debounce\";\nimport styled from \"@emotion/styled\";\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { ReactComponent as SearchIcon } from \"@material-design-icons/svg/outlined/search.svg\";\nimport { ReactComponent as UploadIcon } from \"@material-design-icons/svg/filled/cloud_upload.svg\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { OverlayLayout, useSnackbar } from \"@webiny/app-admin\";\nimport FileThumbnail, { FileProps } from \"./File\";\nimport getFileTypePlugin from \"~/getFileTypePlugin\";\nimport { outputFileSelectionError } from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport { FileDetails } from \"~/components/FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { useFileManagerApi, useFileManagerView } from \"~/index\";\nimport { EmptyView } from \"./EmptyView\";\nimport UploadStatus from \"~/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus\";\nimport SupportedFileTypes from \"~/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes\";\nimport { BatchFileUploader } from \"~/BatchFileUploader\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange?: Function;\n onClose?: Function;\n files?: FilesRules;\n multiple?: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onUploadCompletion?: Function;\n tags?: string[];\n scope?: string;\n own?: boolean;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\n\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <FileThumbnail {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </FileThumbnail>\n );\n};\n\ninterface RefreshOnScrollParams {\n loadMore: () => void;\n scrollFrame: {\n top: number;\n };\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const { onClose, onChange, accept, multiple = false, onUploadCompletion } = props;\n\n const {\n files,\n loadingFiles,\n loadMore,\n selected,\n toggleSelected,\n dragging,\n setDragging,\n showFileDetails,\n hideFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles,\n uploadFile,\n settings\n } = useFileManagerView();\n\n const [uploader] = useState<BatchFileUploader>(() => new BatchFileUploader(uploadFile));\n const fileManager = useFileManagerApi();\n const { showSnackbar } = useSnackbar();\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, loadMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [loadMore]\n );\n\n const uploadFiles = async (files: File[]) => {\n uploader.addFiles(files);\n\n uploader.onUploadFinished(({ uploaded, errors }) => {\n uploader.reset();\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n }, 750);\n\n return;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => {\n onUploadCompletion(uploaded);\n onClose && onClose();\n }, 750);\n }\n });\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!fileManager.canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [fileManager.canCreate]\n );\n\n const filesBeingUploaded = uploader.getJobs().length;\n const progress = uploader.progress;\n\n return (\n <Files\n multiple\n maxSize={settings ? settings.uploadMaxFileSize + \"b\" : \"1TB\"}\n multipleMaxSize={\"1TB\"}\n accept={accept}\n onSuccess={files => {\n const filesToUpload = files.map(file => file.src.file).filter(Boolean) as File[];\n uploadFiles(filesToUpload);\n }}\n onError={errors => {\n console.log(\"onError\", errors);\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fileManager.canRead}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n onClick={() => {\n (async () => {\n if (typeof onChange === \"function\") {\n await onChange(multiple ? selected : selected[0]);\n\n onClose && onClose();\n }\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n {showingFileDetails ? (\n <FileDetails\n file={files.find(item => item.id === showingFileDetails)!}\n onClose={hideFileDetails}\n open={Boolean(showingFileDetails)}\n loading={false} // We don't need to show the loader here\n />\n ) : null}\n\n <LeftSidebar toggleTag={tag => toggleTag({ tag, queryParams })} />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loadingFiles && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({ scrollFrame, loadMore })\n }\n >\n <FileList>\n {files.length ? (\n files.map(file =>\n renderFile({\n file,\n showFileDetails: () => showFileDetails(file.id),\n selected: selected.some(\n current => current.src === file.src\n ),\n onSelect: async () => {\n if (typeof onChange === \"function\") {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose && onClose();\n }\n }\n })\n )\n ) : (\n <EmptyView browseFiles={browseFiles} />\n )}\n </FileList>\n </Scrollbar>\n <BottomInfoBar>\n <SupportedFileTypes accept={accept} />\n {filesBeingUploaded > 0 && (\n <UploadStatus\n numberOfFiles={filesBeingUploaded}\n progress={progress}\n />\n )}\n </BottomInfoBar>\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false\n};\n\nexport default observer(FileManagerView);\n"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /// <reference types="web" />
2
+ import React from "react";
3
+ import { FileItem } from "@webiny/app-admin/types";
4
+ import { Settings } from "../../../types";
5
+ import { Action, State, StateListWhere } from "./stateReducer";
6
+ import { ListDbSort } from "@webiny/app-aco/types";
7
+ import { UploadOptions } from "@webiny/app/types";
8
+ export declare const getWhere: (scope: string | undefined) => {
9
+ tag_not_startsWith: string;
10
+ tag_startsWith?: undefined;
11
+ } | {
12
+ tag_startsWith: string;
13
+ tag_not_startsWith?: undefined;
14
+ };
15
+ export interface FileManagerAcoViewContextData<TFileItem extends FileItem = FileItem> {
16
+ state: State;
17
+ dispatch: React.Dispatch<Action>;
18
+ getFile: (id: string) => Promise<TFileItem | undefined>;
19
+ createFile: (data: TFileItem) => Promise<TFileItem | undefined>;
20
+ updateFile: (id: string, data: Partial<TFileItem>) => Promise<void>;
21
+ deleteFile: (id: string) => Promise<void>;
22
+ uploadFile: (file: File, options?: UploadFileOptions) => Promise<TFileItem | undefined>;
23
+ settings: Settings | undefined;
24
+ selected: TFileItem[];
25
+ setSelected: (files: TFileItem[]) => void;
26
+ toggleSelected: (file: TFileItem) => void;
27
+ hasPreviouslyUploadedFiles: boolean | null;
28
+ setHasPreviouslyUploadedFiles: (flag: boolean) => void;
29
+ listWhere: StateListWhere;
30
+ setListWhere: (state: StateListWhere) => void;
31
+ listSort: ListDbSort | undefined;
32
+ setListSort: (state: ListDbSort) => void;
33
+ dragging: boolean;
34
+ setDragging: (state: boolean) => void;
35
+ showFileDetails: (id: string) => void;
36
+ showingFileDetails: string | null;
37
+ loadingFileDetails: boolean;
38
+ hideFileDetails: () => void;
39
+ folderId?: string;
40
+ setFolderId: (folderId: string | undefined) => void;
41
+ listTable: boolean;
42
+ setListTable: (mode: boolean) => void;
43
+ }
44
+ export declare const FileManagerAcoViewContext: React.Context<FileManagerAcoViewContextData<FileItem> | undefined>;
45
+ export interface FileManagerViewProviderProps {
46
+ accept: string[];
47
+ tags: string[];
48
+ scope?: string;
49
+ own?: boolean;
50
+ children: React.ReactNode;
51
+ }
52
+ declare type UploadFileOptions = Pick<UploadOptions, "onProgress">;
53
+ export declare const FileManagerAcoViewProvider: ({ children, ...props }: FileManagerViewProviderProps) => JSX.Element;
54
+ export {};