@webiny/app-file-manager 5.34.8 → 5.35.0-beta.1

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 (133) hide show
  1. package/FileManagerFileTypePlugin.d.ts +20 -0
  2. package/FileManagerFileTypePlugin.js +48 -0
  3. package/FileManagerFileTypePlugin.js.map +1 -0
  4. package/app.d.ts +2 -0
  5. package/app.js +16 -0
  6. package/app.js.map +1 -0
  7. package/components/FileDetails/Aliases.d.ts +3 -0
  8. package/components/FileDetails/Aliases.js +228 -0
  9. package/components/FileDetails/Aliases.js.map +1 -0
  10. package/components/FileDetails/DeleteImageAction.d.ts +2 -0
  11. package/components/FileDetails/DeleteImageAction.js +82 -0
  12. package/components/FileDetails/DeleteImageAction.js.map +1 -0
  13. package/components/FileDetails/FileProvider.d.ts +13 -0
  14. package/components/FileDetails/FileProvider.js +29 -0
  15. package/components/FileDetails/FileProvider.js.map +1 -0
  16. package/components/FileDetails/Name.d.ts +3 -0
  17. package/components/FileDetails/Name.js +81 -0
  18. package/components/FileDetails/Name.js.map +1 -0
  19. package/components/FileDetails/Tags.d.ts +3 -0
  20. package/components/FileDetails/Tags.js +176 -0
  21. package/components/FileDetails/Tags.js.map +1 -0
  22. package/components/FileDetails.d.ts +20 -0
  23. package/components/FileDetails.js +243 -0
  24. package/components/FileDetails.js.map +1 -0
  25. package/getFileTypePlugin.d.ts +4 -0
  26. package/getFileTypePlugin.js +51 -0
  27. package/getFileTypePlugin.js.map +1 -0
  28. package/index.d.ts +4 -2
  29. package/index.js +37 -31
  30. package/index.js.map +1 -1
  31. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.d.ts +37 -0
  32. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js +293 -0
  33. package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js.map +1 -0
  34. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.d.ts +2 -0
  35. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js +15 -0
  36. package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js.map +1 -0
  37. package/modules/FileManagerApiProvider/FileManagerApiContext/index.d.ts +2 -0
  38. package/modules/FileManagerApiProvider/FileManagerApiContext/index.js +19 -0
  39. package/modules/FileManagerApiProvider/FileManagerApiContext/index.js.map +1 -0
  40. package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.d.ts +3 -0
  41. package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.js +16 -0
  42. package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.js.map +1 -0
  43. package/modules/FileManagerApiProvider/graphql.d.ts +103 -0
  44. package/modules/FileManagerApiProvider/graphql.js +24 -0
  45. package/modules/FileManagerApiProvider/graphql.js.map +1 -0
  46. package/modules/FileManagerApiProvider/index.d.ts +2 -0
  47. package/modules/FileManagerApiProvider/index.js +22 -0
  48. package/modules/FileManagerApiProvider/index.js.map +1 -0
  49. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.d.ts +6 -0
  50. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js +41 -0
  51. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js.map +1 -0
  52. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.d.ts +6 -0
  53. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js +51 -0
  54. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js.map +1 -0
  55. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.d.ts +5 -0
  56. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js +48 -0
  57. package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js.map +1 -0
  58. package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.d.ts +11 -0
  59. package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.js +68 -0
  60. package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.js.map +1 -0
  61. package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.d.ts +7 -0
  62. package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.js +32 -0
  63. package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.js.map +1 -0
  64. package/modules/FileManagerRenderer/DefaultRenderer/File.d.ts +16 -0
  65. package/modules/FileManagerRenderer/DefaultRenderer/File.js +131 -0
  66. package/modules/FileManagerRenderer/DefaultRenderer/File.js.map +1 -0
  67. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.d.ts +18 -0
  68. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js +443 -0
  69. package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js.map +1 -0
  70. package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.d.ts +6 -0
  71. package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.js +96 -0
  72. package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.js.map +1 -0
  73. package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.d.ts +3 -0
  74. package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.js +74 -0
  75. package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.js.map +1 -0
  76. package/modules/FileManagerRenderer/DefaultRenderer/NoResults.d.ts +3 -0
  77. package/modules/FileManagerRenderer/DefaultRenderer/NoResults.js +22 -0
  78. package/modules/FileManagerRenderer/DefaultRenderer/NoResults.js.map +1 -0
  79. package/modules/FileManagerRenderer/DefaultRenderer/index.d.ts +2 -0
  80. package/modules/FileManagerRenderer/DefaultRenderer/index.js +70 -0
  81. package/modules/FileManagerRenderer/DefaultRenderer/index.js.map +1 -0
  82. package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.d.ts +2 -0
  83. package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.js +40 -0
  84. package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.js.map +1 -0
  85. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.d.ts +47 -0
  86. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js +448 -0
  87. package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js.map +1 -0
  88. package/modules/FileManagerRenderer/FileManagerViewProvider/index.d.ts +2 -0
  89. package/modules/FileManagerRenderer/FileManagerViewProvider/index.js +27 -0
  90. package/modules/FileManagerRenderer/FileManagerViewProvider/index.js.map +1 -0
  91. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.d.ts +63 -0
  92. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js +100 -0
  93. package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js.map +1 -0
  94. package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.d.ts +3 -0
  95. package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.js +15 -0
  96. package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.js.map +1 -0
  97. package/modules/FileManagerRenderer/index.d.ts +2 -0
  98. package/modules/FileManagerRenderer/index.js +13 -0
  99. package/modules/FileManagerRenderer/index.js.map +1 -0
  100. package/modules/FileTypes/fileDefault.d.ts +2 -0
  101. package/modules/FileTypes/fileDefault.js +28 -0
  102. package/modules/FileTypes/fileDefault.js.map +1 -0
  103. package/modules/FileTypes/fileImage/EditAction.d.ts +7 -0
  104. package/modules/FileTypes/fileImage/EditAction.js +123 -0
  105. package/modules/FileTypes/fileImage/EditAction.js.map +1 -0
  106. package/modules/FileTypes/fileImage/index.d.ts +2 -0
  107. package/modules/FileTypes/fileImage/index.js +37 -0
  108. package/modules/FileTypes/fileImage/index.js.map +1 -0
  109. package/modules/FileTypes/icons/edit.svg +17 -0
  110. package/modules/FileTypes/icons/round-description-24px.svg +1 -0
  111. package/modules/FileTypes/index.d.ts +1 -0
  112. package/modules/FileTypes/index.js +32 -0
  113. package/modules/FileTypes/index.js.map +1 -0
  114. package/modules/Settings/assets/icons/folder-open.svg +1 -0
  115. package/modules/Settings/graphql.d.ts +5 -0
  116. package/modules/Settings/graphql.js +17 -0
  117. package/modules/Settings/graphql.js.map +1 -0
  118. package/modules/Settings/index.d.ts +2 -0
  119. package/modules/Settings/index.js +35 -0
  120. package/modules/Settings/index.js.map +1 -0
  121. package/modules/Settings/plugins/installation.d.ts +3 -0
  122. package/modules/Settings/plugins/installation.js +103 -0
  123. package/modules/Settings/plugins/installation.js.map +1 -0
  124. package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.d.ts +14 -0
  125. package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js +217 -0
  126. package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js.map +1 -0
  127. package/modules/Settings/plugins/permissionRenderer/index.d.ts +3 -0
  128. package/modules/Settings/plugins/permissionRenderer/index.js +28 -0
  129. package/modules/Settings/plugins/permissionRenderer/index.js.map +1 -0
  130. package/modules/Settings/views/FileManagerSettings.d.ts +2 -0
  131. package/modules/Settings/views/FileManagerSettings.js +132 -0
  132. package/modules/Settings/views/FileManagerSettings.js.map +1 -0
  133. package/package.json +28 -16
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+ var _react = _interopRequireWildcard(require("react"));
16
+ var _reactButterfiles = _interopRequireDefault(require("react-butterfiles"));
17
+ var _emotion = require("emotion");
18
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
19
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
20
+ var _reactHotkeyz = require("react-hotkeyz");
21
+ var _search = require("@material-design-icons/svg/outlined/search.svg");
22
+ var _cloud_upload = require("@material-design-icons/svg/filled/cloud_upload.svg");
23
+ var _Button = require("@webiny/ui/Button");
24
+ var _Icon = require("@webiny/ui/Icon");
25
+ var _Scrollbar = require("@webiny/ui/Scrollbar");
26
+ var _Progress = require("@webiny/ui/Progress");
27
+ var _i18n = require("@webiny/app/i18n");
28
+ var _appAdmin = require("@webiny/app-admin");
29
+ var _File = _interopRequireDefault(require("./File"));
30
+ var _getFileTypePlugin = _interopRequireDefault(require("../../../getFileTypePlugin"));
31
+ var _outputFileSelectionError = require("./outputFileSelectionError");
32
+ var _DropFilesHere = _interopRequireDefault(require("./DropFilesHere"));
33
+ var _FileDetails = require("../../../components/FileDetails");
34
+ var _LeftSidebar = _interopRequireDefault(require("./LeftSidebar"));
35
+ var _BottomInfoBar = _interopRequireDefault(require("./BottomInfoBar"));
36
+ var _ = require("../../..");
37
+ var _EmptyView = require("./EmptyView");
38
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
39
+ var t = _i18n.i18n.ns("app-admin/file-manager/file-manager-view");
40
+ var InputSearch = /*#__PURE__*/(0, _styled.default)("div", {
41
+ target: "eo7d5v20",
42
+ label: "InputSearch"
43
+ })({
44
+ backgroundColor: "var(--mdc-theme-on-background)",
45
+ position: "relative",
46
+ height: 32,
47
+ padding: 3,
48
+ width: "100%",
49
+ borderRadius: 2,
50
+ "> input": {
51
+ border: "none",
52
+ fontSize: 14,
53
+ width: "calc(100% - 10px)",
54
+ height: "100%",
55
+ marginLeft: 50,
56
+ backgroundColor: "transparent",
57
+ outline: "none",
58
+ color: "var(--mdc-theme-text-primary-on-background)"
59
+ }
60
+ });
61
+ var searchIcon = /*#__PURE__*/(0, _emotion.css)({
62
+ "&.mdc-button__icon": {
63
+ color: "var(--mdc-theme-text-secondary-on-background)",
64
+ position: "absolute",
65
+ width: 24,
66
+ height: 24,
67
+ left: 15,
68
+ top: 7
69
+ }
70
+ }, "label:searchIcon;");
71
+ var FileListWrapper = /*#__PURE__*/(0, _styled.default)("div", {
72
+ target: "eo7d5v21",
73
+ label: "FileListWrapper"
74
+ })({
75
+ float: "right",
76
+ display: "inline-block",
77
+ width: "calc(100vw - 270px)",
78
+ height: "100%"
79
+ });
80
+ var FileList = /*#__PURE__*/(0, _styled.default)("div", {
81
+ target: "eo7d5v22",
82
+ label: "FileList"
83
+ })({
84
+ width: "100%",
85
+ display: "grid",
86
+ /* define the number of grid columns */
87
+ gridTemplateColumns: "repeat( auto-fill, minmax(220px, 1fr) )",
88
+ marginBottom: 95
89
+ });
90
+ var renderFile = function renderFile(props) {
91
+ var file = props.file;
92
+ var plugin = (0, _getFileTypePlugin.default)(file);
93
+ if (!plugin) {
94
+ return null;
95
+ }
96
+ return /*#__PURE__*/_react.default.createElement(_File.default, Object.assign({}, props, {
97
+ key: file.id
98
+ }), plugin.render({
99
+ /**
100
+ * TODO @ts-refactor
101
+ */
102
+ // @ts-ignore
103
+ file: file
104
+ }));
105
+ };
106
+ var FileManagerView = function FileManagerView(props) {
107
+ var onClose = props.onClose,
108
+ onChange = props.onChange,
109
+ accept = props.accept,
110
+ _props$multiple = props.multiple,
111
+ multiple = _props$multiple === void 0 ? false : _props$multiple,
112
+ onUploadCompletion = props.onUploadCompletion;
113
+ var _useFileManagerView = (0, _.useFileManagerView)(),
114
+ files = _useFileManagerView.files,
115
+ loadingFiles = _useFileManagerView.loadingFiles,
116
+ loadMore = _useFileManagerView.loadMore,
117
+ selected = _useFileManagerView.selected,
118
+ toggleSelected = _useFileManagerView.toggleSelected,
119
+ dragging = _useFileManagerView.dragging,
120
+ setDragging = _useFileManagerView.setDragging,
121
+ uploading = _useFileManagerView.uploading,
122
+ setUploading = _useFileManagerView.setUploading,
123
+ _showFileDetails = _useFileManagerView.showFileDetails,
124
+ hideFileDetails = _useFileManagerView.hideFileDetails,
125
+ showingFileDetails = _useFileManagerView.showingFileDetails,
126
+ queryParams = _useFileManagerView.queryParams,
127
+ setQueryParams = _useFileManagerView.setQueryParams,
128
+ hasPreviouslyUploadedFiles = _useFileManagerView.hasPreviouslyUploadedFiles,
129
+ setHasPreviouslyUploadedFiles = _useFileManagerView.setHasPreviouslyUploadedFiles,
130
+ uploadFile = _useFileManagerView.uploadFile,
131
+ settings = _useFileManagerView.settings;
132
+ var fileManager = (0, _.useFileManagerApi)();
133
+ var _useSnackbar = (0, _appAdmin.useSnackbar)(),
134
+ showSnackbar = _useSnackbar.showSnackbar;
135
+ var searchOnChange = (0, _react.useCallback)(
136
+ // @ts-ignore
137
+ (0, _debounce.default)(function (search) {
138
+ return setQueryParams({
139
+ search: search
140
+ });
141
+ }, 500), []);
142
+ var _toggleTag = (0, _react.useCallback)( /*#__PURE__*/function () {
143
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(_ref) {
144
+ var tag, queryParams, finalTags;
145
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
146
+ while (1) switch (_context.prev = _context.next) {
147
+ case 0:
148
+ tag = _ref.tag, queryParams = _ref.queryParams;
149
+ finalTags = Array.isArray(queryParams.tags) ? (0, _toConsumableArray2.default)(queryParams.tags) : [];
150
+ if (finalTags.includes(tag)) {
151
+ finalTags.splice(finalTags.indexOf(tag), 1);
152
+ } else {
153
+ finalTags.push(tag);
154
+ }
155
+ setQueryParams((0, _objectSpread2.default)((0, _objectSpread2.default)({}, queryParams), {}, {
156
+ tags: finalTags
157
+ }));
158
+ case 4:
159
+ case "end":
160
+ return _context.stop();
161
+ }
162
+ }, _callee);
163
+ }));
164
+ return function (_x) {
165
+ return _ref2.apply(this, arguments);
166
+ };
167
+ }(), []);
168
+ var getFileUploadErrorMessage = (0, _react.useCallback)(function (e) {
169
+ if (typeof e === "string") {
170
+ var match = e.match(/Message>(.*?)<\/Message/);
171
+ if (match) {
172
+ var _match = (0, _slicedToArray2.default)(match, 2),
173
+ message = _match[1];
174
+ return message;
175
+ }
176
+ return e;
177
+ }
178
+ return e.message;
179
+ }, []);
180
+ (0, _reactHotkeyz.useHotkeys)({
181
+ zIndex: 50,
182
+ keys: {
183
+ esc: onClose
184
+ }
185
+ });
186
+ var searchInput = (0, _react.useRef)(null);
187
+ var refreshOnScroll = (0, _react.useCallback)((0, _debounce.default)(function (_ref3) {
188
+ var scrollFrame = _ref3.scrollFrame,
189
+ loadMore = _ref3.loadMore;
190
+ if (scrollFrame.top > 0.9) {
191
+ loadMore();
192
+ }
193
+ }, 500), [loadMore]);
194
+ 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) {
199
+ 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:
274
+ case "end":
275
+ return _context3.stop();
276
+ }
277
+ }, _callee3);
278
+ }));
279
+ return function uploadFiles(_x2) {
280
+ return _ref4.apply(this, arguments);
281
+ };
282
+ }();
283
+ var renderUploadFileAction = (0, _react.useCallback)(function (_ref7) {
284
+ var browseFiles = _ref7.browseFiles;
285
+ if (!fileManager.canCreate) {
286
+ return null;
287
+ }
288
+ return /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
289
+ onClick: browseFiles,
290
+ disabled: uploading
291
+ }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
292
+ icon: /*#__PURE__*/_react.default.createElement(_cloud_upload.ReactComponent, null)
293
+ }), t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Upload..."]))));
294
+ }, [uploading, fileManager.canCreate]);
295
+ return /*#__PURE__*/_react.default.createElement(_reactButterfiles.default, {
296
+ multiple: true,
297
+ maxSize: settings ? settings.uploadMaxFileSize + "b" : "1TB",
298
+ multipleMaxSize: "1TB",
299
+ accept: accept,
300
+ onSuccess: function onSuccess(files) {
301
+ var filesToUpload = files.map(function (file) {
302
+ return file.src.file;
303
+ }).filter(Boolean);
304
+ uploadFiles(filesToUpload);
305
+ },
306
+ onError: function onError(errors) {
307
+ console.log("onError", errors);
308
+ var message = (0, _outputFileSelectionError.outputFileSelectionError)(errors);
309
+ showSnackbar(message);
310
+ }
311
+ }, function (_ref8) {
312
+ var getDropZoneProps = _ref8.getDropZoneProps,
313
+ browseFiles = _ref8.browseFiles;
314
+ return /*#__PURE__*/_react.default.createElement(_appAdmin.OverlayLayout, Object.assign({}, getDropZoneProps({
315
+ onDragEnter: function onDragEnter() {
316
+ return hasPreviouslyUploadedFiles && setDragging(true);
317
+ },
318
+ onExited: onClose
319
+ }), {
320
+ barLeft: /*#__PURE__*/_react.default.createElement(InputSearch, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
321
+ className: searchIcon,
322
+ icon: /*#__PURE__*/_react.default.createElement(_search.ReactComponent, null)
323
+ }), /*#__PURE__*/_react.default.createElement("input", {
324
+ ref: searchInput,
325
+ onChange: function onChange(e) {
326
+ return searchOnChange(e.target.value);
327
+ },
328
+ placeholder: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Search by filename or tags"]))),
329
+ disabled: !fileManager.canRead,
330
+ "data-testid": "file-manager.search-input"
331
+ })),
332
+ barRight: selected.length > 0 ? /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
333
+ disabled: uploading,
334
+ 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) {
338
+ case 0:
339
+ if (!(typeof onChange === "function")) {
340
+ _context4.next = 4;
341
+ break;
342
+ }
343
+ _context4.next = 3;
344
+ return onChange(multiple ? selected : selected[0]);
345
+ case 3:
346
+ onClose && onClose();
347
+ case 4:
348
+ case "end":
349
+ return _context4.stop();
350
+ }
351
+ }, _callee4);
352
+ }))();
353
+ }
354
+ }, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Select"]))), " ", multiple && "(".concat(selected.length, ")")) : renderUploadFileAction({
355
+ browseFiles: browseFiles
356
+ })
357
+ }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, dragging && hasPreviouslyUploadedFiles && /*#__PURE__*/_react.default.createElement(_DropFilesHere.default, {
358
+ onDragLeave: function onDragLeave() {
359
+ return setDragging(false);
360
+ },
361
+ onDrop: function onDrop() {
362
+ return setDragging(false);
363
+ }
364
+ }), showingFileDetails ? /*#__PURE__*/_react.default.createElement(_FileDetails.FileDetails, {
365
+ file: files.find(function (item) {
366
+ return item.id === showingFileDetails;
367
+ }),
368
+ onClose: hideFileDetails
369
+ }) : null, /*#__PURE__*/_react.default.createElement(_LeftSidebar.default, {
370
+ toggleTag: function toggleTag(tag) {
371
+ return _toggleTag({
372
+ tag: tag,
373
+ queryParams: queryParams
374
+ });
375
+ }
376
+ }), /*#__PURE__*/_react.default.createElement(FileListWrapper, {
377
+ "data-testid": "fm-list-wrapper"
378
+ }, loadingFiles && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
379
+ label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Loading Files..."]))),
380
+ style: {
381
+ opacity: 1
382
+ }
383
+ }), /*#__PURE__*/_react.default.createElement(_Scrollbar.Scrollbar, {
384
+ onScrollFrame: function onScrollFrame(scrollFrame) {
385
+ return refreshOnScroll({
386
+ scrollFrame: scrollFrame,
387
+ loadMore: loadMore
388
+ });
389
+ }
390
+ }, /*#__PURE__*/_react.default.createElement(FileList, null, files.length ? files.map(function (file) {
391
+ return renderFile({
392
+ file: file,
393
+ showFileDetails: function showFileDetails() {
394
+ return _showFileDetails(file.id);
395
+ },
396
+ selected: selected.some(function (current) {
397
+ return current.src === file.src;
398
+ }),
399
+ 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) {
403
+ case 0:
404
+ if (!(typeof onChange === "function")) {
405
+ _context5.next = 7;
406
+ break;
407
+ }
408
+ if (!multiple) {
409
+ _context5.next = 4;
410
+ break;
411
+ }
412
+ toggleSelected(file);
413
+ return _context5.abrupt("return");
414
+ case 4:
415
+ _context5.next = 6;
416
+ return onChange(file);
417
+ case 6:
418
+ onClose && onClose();
419
+ case 7:
420
+ case "end":
421
+ return _context5.stop();
422
+ }
423
+ }, _callee5);
424
+ }));
425
+ function onSelect() {
426
+ return _onSelect.apply(this, arguments);
427
+ }
428
+ return onSelect;
429
+ }()
430
+ });
431
+ }) : /*#__PURE__*/_react.default.createElement(_EmptyView.EmptyView, {
432
+ browseFiles: browseFiles
433
+ }))), /*#__PURE__*/_react.default.createElement(_BottomInfoBar.default, {
434
+ accept: accept,
435
+ uploading: uploading
436
+ }))));
437
+ });
438
+ };
439
+ FileManagerView.defaultProps = {
440
+ multiple: false
441
+ };
442
+ var _default = FileManagerView;
443
+ exports.default = _default;
@@ -0,0 +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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"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ interface LeftSidebarProps {
3
+ toggleTag: (item: string) => void;
4
+ }
5
+ declare const LeftSidebar: ({ toggleTag }: LeftSidebarProps) => JSX.Element;
6
+ export default LeftSidebar;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
10
+ var _emotion = require("emotion");
11
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
12
+ var _Icon = require("@webiny/ui/Icon");
13
+ var _label = require("@material-design-icons/svg/outlined/label.svg");
14
+ var _ = require("../../..");
15
+ var style = {
16
+ leftDrawer: /*#__PURE__*/(0, _emotion.css)({
17
+ float: "left",
18
+ display: "inline-block",
19
+ width: 250,
20
+ height: "100%",
21
+ backgroundColor: "var(--mdc-theme-surface)",
22
+ padding: 10
23
+ }, "label:leftDrawer;"),
24
+ noTagged: /*#__PURE__*/(0, _emotion.css)({
25
+ paddingTop: 100,
26
+ textAlign: "center",
27
+ color: "var(--mdc-theme-on-surface)"
28
+ }, "label:noTagged;")
29
+ };
30
+ var TagList = /*#__PURE__*/(0, _styled.default)("div", {
31
+ target: "e1oiqid0",
32
+ label: "TagList"
33
+ })({
34
+ display: "flex",
35
+ flexDirection: "column"
36
+ });
37
+ var Tag = /*#__PURE__*/(0, _styled.default)("div", {
38
+ target: "e1oiqid1",
39
+ label: "Tag"
40
+ })({
41
+ display: "flex",
42
+ flexDirection: "row",
43
+ height: 40,
44
+ alignItems: "center",
45
+ cursor: "pointer",
46
+ paddingLeft: 15,
47
+ color: "var(--mdc-theme-on-surface)",
48
+ svg: {
49
+ color: "var(--mdc-theme-on-surface)",
50
+ marginRight: 10
51
+ },
52
+ "&:hover": {
53
+ backgroundColor: "var(--mdc-theme-background)"
54
+ },
55
+ "&.active": {
56
+ svg: {
57
+ color: "var(--mdc-theme-secondary)"
58
+ }
59
+ }
60
+ });
61
+ var LeftSidebar = function LeftSidebar(_ref) {
62
+ var toggleTag = _ref.toggleTag;
63
+ var _useFileManagerView = (0, _.useFileManagerView)(),
64
+ queryParams = _useFileManagerView.queryParams,
65
+ tags = _useFileManagerView.tags;
66
+ var activeTags = Array.isArray(queryParams.tags) ? queryParams.tags : [];
67
+ if (tags.length === 0) {
68
+ return /*#__PURE__*/_react.default.createElement("div", {
69
+ className: style.leftDrawer,
70
+ "data-testid": "fm.left-drawer.empty-tag"
71
+ }, /*#__PURE__*/_react.default.createElement("div", {
72
+ className: style.noTagged
73
+ }, "Once you tag a file, the tag will be displayed here."));
74
+ }
75
+
76
+ // Sort "tags" list in "ASC" order.
77
+ var sortedTags = (0, _sortBy.default)(tags);
78
+ return /*#__PURE__*/_react.default.createElement("div", {
79
+ className: style.leftDrawer
80
+ }, /*#__PURE__*/_react.default.createElement(TagList, {
81
+ "data-testid": "fm.left-drawer.tag-list"
82
+ }, sortedTags.map(function (tag, index) {
83
+ var className = activeTags.includes(tag) ? "active" : "";
84
+ return /*#__PURE__*/_react.default.createElement(Tag, {
85
+ className: className,
86
+ key: tag + index,
87
+ onClick: function onClick() {
88
+ return toggleTag(tag);
89
+ }
90
+ }, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
91
+ icon: /*#__PURE__*/_react.default.createElement(_label.ReactComponent, null)
92
+ }), " ", tag);
93
+ })));
94
+ };
95
+ var _default = LeftSidebar;
96
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["style","leftDrawer","css","float","display","width","height","backgroundColor","padding","noTagged","paddingTop","textAlign","color","TagList","styled","flexDirection","Tag","alignItems","cursor","paddingLeft","svg","marginRight","LeftSidebar","toggleTag","useFileManagerView","queryParams","tags","activeTags","Array","isArray","length","sortedTags","sortBy","map","tag","index","className","includes"],"sources":["LeftSidebar.tsx"],"sourcesContent":["import React from \"react\";\nimport sortBy from \"lodash/sortBy\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ReactComponent as TagIcon } from \"@material-design-icons/svg/outlined/label.svg\";\nimport { useFileManagerView } from \"~/index\";\n\nconst style = {\n leftDrawer: css({\n float: \"left\",\n display: \"inline-block\",\n width: 250,\n height: \"100%\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n padding: 10\n }),\n noTagged: css({\n paddingTop: 100,\n textAlign: \"center\",\n color: \"var(--mdc-theme-on-surface)\"\n })\n};\n\nconst TagList = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\"\n});\n\nconst Tag = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n height: 40,\n alignItems: \"center\",\n cursor: \"pointer\",\n paddingLeft: 15,\n color: \"var(--mdc-theme-on-surface)\",\n svg: {\n color: \"var(--mdc-theme-on-surface)\",\n marginRight: 10\n },\n \"&:hover\": {\n backgroundColor: \"var(--mdc-theme-background)\"\n },\n \"&.active\": {\n svg: {\n color: \"var(--mdc-theme-secondary)\"\n }\n }\n});\n\ninterface LeftSidebarProps {\n toggleTag: (item: string) => void;\n}\nconst LeftSidebar = ({ toggleTag }: LeftSidebarProps) => {\n const { queryParams, tags } = useFileManagerView();\n const activeTags = Array.isArray(queryParams.tags) ? queryParams.tags : [];\n\n if (tags.length === 0) {\n return (\n <div className={style.leftDrawer} data-testid={\"fm.left-drawer.empty-tag\"}>\n <div className={style.noTagged}>\n Once you tag a file, the tag will be displayed here.\n </div>\n </div>\n );\n }\n\n // Sort \"tags\" list in \"ASC\" order.\n const sortedTags = sortBy(tags);\n\n return (\n <div className={style.leftDrawer}>\n <TagList data-testid={\"fm.left-drawer.tag-list\"}>\n {sortedTags.map((tag, index) => {\n const className = activeTags.includes(tag) ? \"active\" : \"\";\n return (\n <Tag className={className} key={tag + index} onClick={() => toggleTag(tag)}>\n <Icon icon={<TagIcon />} /> {tag}\n </Tag>\n );\n })}\n </TagList>\n </div>\n );\n};\n\nexport default LeftSidebar;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,KAAK,GAAG;EACVC,UAAU,eAAE,IAAAC,YAAG,EAAC;IACZC,KAAK,EAAE,MAAM;IACbC,OAAO,EAAE,cAAc;IACvBC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,MAAM;IACdC,eAAe,EAAE,0BAA0B;IAC3CC,OAAO,EAAE;EACb,CAAC,sBAAC;EACFC,QAAQ,eAAE,IAAAP,YAAG,EAAC;IACVQ,UAAU,EAAE,GAAG;IACfC,SAAS,EAAE,QAAQ;IACnBC,KAAK,EAAE;EACX,CAAC;AACL,CAAC;AAED,IAAMC,OAAO,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EAC1BV,OAAO,EAAE,MAAM;EACfW,aAAa,EAAE;AACnB,CAAC,CAAC;AAEF,IAAMC,GAAG,oBAAGF,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EACtBV,OAAO,EAAE,MAAM;EACfW,aAAa,EAAE,KAAK;EACpBT,MAAM,EAAE,EAAE;EACVW,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,EAAE;EACfP,KAAK,EAAE,6BAA6B;EACpCQ,GAAG,EAAE;IACDR,KAAK,EAAE,6BAA6B;IACpCS,WAAW,EAAE;EACjB,CAAC;EACD,SAAS,EAAE;IACPd,eAAe,EAAE;EACrB,CAAC;EACD,UAAU,EAAE;IACRa,GAAG,EAAE;MACDR,KAAK,EAAE;IACX;EACJ;AACJ,CAAC,CAAC;AAKF,IAAMU,WAAW,GAAG,SAAdA,WAAW,OAAwC;EAAA,IAAlCC,SAAS,QAATA,SAAS;EAC5B,0BAA8B,IAAAC,oBAAkB,GAAE;IAA1CC,WAAW,uBAAXA,WAAW;IAAEC,IAAI,uBAAJA,IAAI;EACzB,IAAMC,UAAU,GAAGC,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACC,IAAI,CAAC,GAAGD,WAAW,CAACC,IAAI,GAAG,EAAE;EAE1E,IAAIA,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;IACnB,oBACI;MAAK,SAAS,EAAE9B,KAAK,CAACC,UAAW;MAAC,eAAa;IAA2B,gBACtE;MAAK,SAAS,EAAED,KAAK,CAACS;IAAS,GAAC,sDAEhC,CAAM,CACJ;EAEd;;EAEA;EACA,IAAMsB,UAAU,GAAG,IAAAC,eAAM,EAACN,IAAI,CAAC;EAE/B,oBACI;IAAK,SAAS,EAAE1B,KAAK,CAACC;EAAW,gBAC7B,6BAAC,OAAO;IAAC,eAAa;EAA0B,GAC3C8B,UAAU,CAACE,GAAG,CAAC,UAACC,GAAG,EAAEC,KAAK,EAAK;IAC5B,IAAMC,SAAS,GAAGT,UAAU,CAACU,QAAQ,CAACH,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE;IAC1D,oBACI,6BAAC,GAAG;MAAC,SAAS,EAAEE,SAAU;MAAC,GAAG,EAAEF,GAAG,GAAGC,KAAM;MAAC,OAAO,EAAE;QAAA,OAAMZ,SAAS,CAACW,GAAG,CAAC;MAAA;IAAC,gBACvE,6BAAC,UAAI;MAAC,IAAI,eAAE,6BAAC,qBAAO;IAAI,EAAG,KAAC,EAACA,GAAG,CAC9B;EAEd,CAAC,CAAC,CACI,CACR;AAEd,CAAC;AAAC,eAEaZ,WAAW;AAAA"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const NoPermissionView: React.FC;
3
+ export default NoPermissionView;